package com.mistareader.NavigationDrawer; import java.util.ArrayList; import android.app.Activity; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.view.MenuItem; import android.widget.ListView; import com.mistareader.API; import com.mistareader.Forum; import com.mistareader.R; import com.mistareader.ThemesManager; public class NavDrawer_Main { final String MENU_1C = "1C"; final String MENU_IT = "IT"; final String MENU_LIFE = "LIFE"; public final static String MENU_SETTINGS = "SETTINGS"; public final static String MENU_ACCOUNT = "ACCOUNT"; public final static String MENU_THEMES = "THEMES"; public final static String MENU_SUBSCRIPTIONS = "SUBSCRIPTIONS"; public final static String MENU_ABOUT = "ABOUT"; public final static String MENU_LOGOFF = "LOGOFF"; public DrawerLayout mDrawerLayout; public ListView mDrawerList; public NavDrawer_Adapter mListAdapter; public ActionBarDrawerToggle mDrawerToggle; public int mSelectedPosition; private String sAllSections; public ArrayList<NavDrawer_MenuItem> mMenu; public ArrayList<NavDrawer_MenuItem> mSubMenu; public String mCurrentAccout; public boolean mIsLoggedIn; public NavDrawer_Main(Activity mainActivity, String accountName, int selectedMenuPosition, boolean isLoggedIn) { mCurrentAccout = accountName; mIsLoggedIn = isLoggedIn; mSelectedPosition = selectedMenuPosition; sAllSections = mainActivity.getString(R.string.sAllSections); buildMenu(mainActivity); mDrawerLayout = (DrawerLayout) mainActivity.findViewById(R.id.drawer_layout); mDrawerList = (ListView) mainActivity.findViewById(R.id.left_drawer); mListAdapter = new NavDrawer_Adapter(mainActivity, R.layout.navdrawer_item, mMenu); mDrawerList.setAdapter(mListAdapter); mDrawerList.setItemChecked(mSelectedPosition, true); mDrawerToggle = new ActionBarDrawerToggle(mainActivity, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { @Override public boolean onOptionsItemSelected(MenuItem item) { mDrawerList.setItemChecked(mSelectedPosition, true); return super.onOptionsItemSelected(item); } }; // mDrawerList.setChoiceMode(ExpandableListView.CHOICE_MODE_SINGLE); mDrawerLayout.setDrawerListener(mDrawerToggle); // mDrawerLayout.setScrimColor(Color.alpha(20)); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.END); mainActivity.getActionBar().setDisplayHomeAsUpEnabled(true); mainActivity.getActionBar().setHomeButtonEnabled(true); } public void buildSubmenu(Activity mainActivity, String forum, int mResNames, int mResIDs) { String[] mSectionsMenuNames = mainActivity.getResources().getStringArray(mResNames); String[] mSectionsMenuIDs = mainActivity.getResources().getStringArray(mResIDs); for (int currSectNum = 0; currSectNum < mSectionsMenuNames.length; currSectNum++) { if (currSectNum < 3) mMenu.add(NavDrawer_MenuItem.create(mainActivity, mSectionsMenuIDs[currSectNum], mSectionsMenuNames[currSectNum])); else mSubMenu.add(NavDrawer_MenuItem.createSubmenu(mainActivity, mSectionsMenuIDs[currSectNum], mSectionsMenuNames[currSectNum], forum)); } mMenu.add(NavDrawer_MenuItem.createExpandable(mainActivity, "more", mainActivity.getString(R.string.sNavDrawerMore), forum)); } public void buildMenu(Activity mainActivity) { if (mMenu == null) { mMenu = new ArrayList<NavDrawer_MenuItem>(); mSubMenu = new ArrayList<NavDrawer_MenuItem>(); } else { mMenu.clear(); mSubMenu.clear(); } Forum forum = Forum.getInstance(); int newSubs = forum.mainDB.getNewSubscriptionsCount(); mMenu.add(NavDrawer_MenuItem.createSectionItem(mainActivity.getString(R.string.sNavDrawerSect1))); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, "", mainActivity.getString(R.string.sNavDrawerAll), ThemesManager.iconForum)); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, MENU_1C, MENU_1C, ThemesManager.iconForum)); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, MENU_IT, MENU_IT, ThemesManager.iconForum)); // buildSubmenu(mainActivity, "1c", R.array.sectionsName_IT, R.array.sections_IT); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, MENU_LIFE, MENU_LIFE, ThemesManager.iconForum)); if (mIsLoggedIn) mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, API.TOPICS_WITH_ME, mainActivity.getString(R.string.sMyTopics2), ThemesManager.iconForum)); // if (mIsLoggedIn) // mMenu.add(NavMenuItem.createMenuItem(mainActivity, API.MYTOPICS, mainActivity.getString(R.string.sMyTopics), ThemesManager.iconForum)); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, MENU_SUBSCRIPTIONS, mainActivity.getString(R.string.sSubscriptions), ThemesManager.iconForum, newSubs)); // buildSubmenu(mainActivity, "life", R.array.sectionsName_LIFE, R.array.sections_LIFE); mMenu.add(NavDrawer_MenuItem.createSectionItem(mainActivity.getString(R.string.sNavDrawerSect2))); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, MENU_SETTINGS, mainActivity.getString(R.string.sSettings), ThemesManager.iconSettings)); // if (mIsLoggedIn) // mMenu.add(NavMenuItem.createMenuItem(mainActivity, MENU_ACCOUNT, mCurrentAccout, ThemesManager.iconAccount)); // else // mMenu.add(NavMenuItem.createMenuItem(mainActivity, MENU_ACCOUNT, mainActivity.getString(R.string.sAccount), ThemesManager.iconAccount)); // // mMenu.add(NavMenuItem.createMenuItem(mainActivity, MENU_THEMES, mainActivity.getString(R.string.sTheme), ThemesManager.iconThemes)); mMenu.add(NavDrawer_MenuItem.createMenuItem(mainActivity, MENU_ABOUT, mainActivity.getString(R.string.sAbout), ThemesManager.iconAbout)); } public void setPosition(int i) { mDrawerList.setSelection(i); // mDrawerList.smoothScrollToPosition(i); } public void setItemChecked(int i) { mDrawerList.setItemChecked(i, true); } public void expandMenu(int inPos, String inForum) { int k = 0; for (int i = 0; i < mSubMenu.size(); i++) { NavDrawer_MenuItem sm = mSubMenu.get(i); if (sm.forum.equals(inForum)) { mMenu.add(inPos + k, sm); k++; } } } public void collapseMenu(int inPos, String inForum) { int menuSize = mMenu.size(); for (int i = 0; i < menuSize; i++) { if (mMenu.get(i).isSubmenu) { if (mMenu.get(i).forum.equals(inForum)) { mMenu.remove(i); i--; menuSize--; } } } } public String getSelectedItemID() { if (mSelectedPosition <= 1) return ""; return mMenu.get(mSelectedPosition).id; } public String getSelectedMenuTitle() { if (mSelectedPosition <= 1) return sAllSections; return mMenu.get(mSelectedPosition).label; } public NavDrawer_MenuItem getMenuItem(int pos) { return mMenu.get(pos); } }