public List<NavDrawerItem> initItems() { // todo: make list items dynamic List<NavDrawerItem> navItems = new ArrayList<>(); navItems.add(new NavDrawerItem(true)); navItems.add( new NavDrawerItem( getString(R.string.title_movies), R.drawable.ic_nav_movies, new YTSProvider())); navItems.add( new NavDrawerItem( getString(R.string.title_shows), R.drawable.ic_nav_tv, new EZTVProvider())); navItems.add( new NavDrawerItem( getString(R.string.title_anime), R.drawable.ic_nav_anime, new HaruProvider())); if (PrefUtils.get(getActivity(), Prefs.SHOW_VPN, true) && VPNHTChecker.isDownloadAvailable(getActivity())) { navItems.add( mVPNItem = new NavDrawerItem( getString(R.string.vpn), R.drawable.ic_nav_vpn, mOnVPNClickListener, VPNManager.getLatestInstance().isConnected())); } navItems.add( new NavDrawerItem( getString(R.string.preferences), R.drawable.ic_nav_settings, mOnSettingsClickListener)); if (mAdapter != null) mAdapter.setItems(navItems); VPNManager.State state = VPNManager.getCurrentState(); NavigationDrawerFragment.NavDrawerItem vpnItem = getVPNItem(); if (vpnItem != null) { if (state.equals(VPNManager.State.DISCONNECTED)) { vpnItem.setSwitchValue(false); vpnItem.showProgress(false); } else if (state.equals(VPNManager.State.CONNECTING)) { vpnItem.showProgress(true); } else if (state.equals(VPNManager.State.CONNECTED)) { vpnItem.setSwitchValue(true); vpnItem.showProgress(false); } } return navItems; }
@Override public void onClick(View v, NavigationAdapter.ItemRowHolder vh, int position) { if (vh.getSwitch() != null) { VPNManager manager = VPNManager.getLatestInstance(); if (manager.isVPNInstalled()) { if (!manager.isConnected()) { manager.connect(); vh.getSwitch().setChecked(true); } else { manager.disconnect(); vh.getSwitch().setChecked(false); } } else { VPNInfoDialogFragment.show(getChildFragmentManager()); } } }