diff --git a/src/org/wordpress/android/ui/MenuDrawerItem.java b/src/org/wordpress/android/ui/MenuDrawerItem.java new file mode 100644 index 000000000000..c8cf296a7f22 --- /dev/null +++ b/src/org/wordpress/android/ui/MenuDrawerItem.java @@ -0,0 +1,100 @@ +/** + * Represents a single item in the WPActionBarActivity's menu drawer. A MenuDrawerItem determines + * the label and icon to use in the menu, its presence in the menu, its selection state, and the + * action that happens when the item is selected. + */ +package org.wordpress.android.ui; + +import android.view.View; + +abstract class MenuDrawerItem { + /** + * Signifies that the item has no unique ID so should not be tracked in the last selected + * item preference. + */ + public static int NO_ITEM_ID = -1; + /** + * Called when the menu item is selected. + */ + abstract public void onSelectItem(); + /** + * Determines if the menu item should be displayed in the menu. Default is always true. + */ + public Boolean isVisible(){ + return true; + }; + /** + * Determines if the item is selected. Default is always false. + */ + public Boolean isSelected(){ + return false; + } + /** + * Method to allow the menu item to provide additional configuration to the view, default + * implementation does nothing. + */ + public void onConfigureView(View view){}; + + // Resource id for the title string + protected int mTitle; + // Resource id for the icon drawable + protected int mIconRes; + // ID for the item for remembering which item was selected + private int mItemId; + /** + * Creates a MenuDrawerItem with the specific id, string resource id and drawable resource id + */ + MenuDrawerItem(int itemId, int stringRes, int iconRes) { + mTitle = stringRes; + mIconRes = iconRes; + mItemId = itemId; + } + /** + * Creates a MenuDrawerItem with NO_ITEM_ID for it's id for items that shouldn't be remembered + * between application launches. + */ + MenuDrawerItem(int stringRes, int iconRes){ + this(NO_ITEM_ID, stringRes, iconRes); + } + /** + * Determines if the item has an id for remembering the last selected item + */ + public boolean hasItemId(){ + return getItemId() != NO_ITEM_ID; + } + /** + * Get's the item's unique ID + */ + public int getItemId(){ + return mItemId; + } + /** + * Returns the item's string representation (used by ArrayAdapter.getView) + */ + public String toString(){ + return ""; + } + /** + * The resource id to use for the menu item's title + */ + public int getTitleRes(){ + return mTitle; + } + /** + * The resource id to use for the menu item's icon + */ + public int getIconRes(){ + return mIconRes; + } + + public void selectItem(){ + onSelectItem(); + } + /** + * Allows the menu item to do additional manipulation to the view + */ + public void configureView(View v){ + onConfigureView(v); + } + +} diff --git a/src/org/wordpress/android/ui/WPActionBarActivity.java b/src/org/wordpress/android/ui/WPActionBarActivity.java index 4edb67c016f5..1011d79dc7f6 100644 --- a/src/org/wordpress/android/ui/WPActionBarActivity.java +++ b/src/org/wordpress/android/ui/WPActionBarActivity.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Iterator; import android.content.Context; import android.content.Intent; @@ -44,6 +45,7 @@ import org.wordpress.android.R; import org.wordpress.android.WordPress; import org.wordpress.android.models.Blog; +import org.wordpress.android.ui.MenuDrawerItem; import org.wordpress.android.ui.accounts.NewAccountActivity; import org.wordpress.android.ui.comments.CommentsActivity; import org.wordpress.android.ui.posts.EditPostActivity; @@ -84,6 +86,8 @@ public abstract class WPActionBarActivity extends SherlockFragmentActivity { protected static final int DASHBOARD_ACTIVITY = 8; protected static final int SETTINGS_ACTIVITY = 9; + protected static final String LAST_ACTIVITY_PREFERENCE = "wp_pref_last_activity"; + protected MenuDrawer mMenuDrawer; private static int[] blogIDs; protected boolean isAnimatingRefreshButton; @@ -95,15 +99,16 @@ public abstract class WPActionBarActivity extends SherlockFragmentActivity { private int mActivePosition; private MenuAdapter mAdapter; + private List mMenuItems = new ArrayList(); private ListView mListView; private IcsSpinner mBlogSpinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4) - mIsXLargeDevice = true; + mIsXLargeDevice = true; + } @Override @@ -203,13 +208,36 @@ private void initMenuDrawer() { mListView.setDivider(null); mListView.setDividerHeight(0); mListView.setCacheColorHint(android.R.color.transparent); - + mAdapter = new MenuAdapter(this); String[] blogNames = getBlogNames(); if (blogNames.length > 1) { addBlogSpinner(blogNames); } - - mListView.setOnItemClickListener(mItemClickListener); + + mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ + public void onItemClick(AdapterView parent, View view, int position, long id) { + // account for header views + int menuPosition = position - mListView.getHeaderViewsCount(); + // bail if the adjusted position is out of bounds for the adapter + if (menuPosition < 0 || menuPosition >= mAdapter.getCount()) + return; + MenuDrawerItem item = mAdapter.getItem(menuPosition); + // if the item has an id, remember it for launch + if (item.hasItemId()){ + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(WPActionBarActivity.this); + SharedPreferences.Editor editor = settings.edit(); + editor.putInt(LAST_ACTIVITY_PREFERENCE, item.getItemId()); + editor.commit(); + } + // only perform selection if the item isn't already selected + if (!item.isSelected()) + item.selectItem(); + // save the last activity preference + // close the menu drawer + mMenuDrawer.closeMenu(); + // if we have an intent, start the new activity + } + }); mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { @@ -223,7 +251,21 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun }); mMenuDrawer.setMenuView(mListView); - + mListView.setAdapter(mAdapter); + + // configure all the available menu items + // mMenuItems.add(new NotificationsMenuItem()); + mMenuItems.add(new ReaderMenuItem()); + mMenuItems.add(new PostsMenuItem()); + mMenuItems.add(new PagesMenuItem()); + mMenuItems.add(new CommentsMenuItem()); + mMenuItems.add(new StatsMenuItem()); + mMenuItems.add(new QuickPhotoMenuItem()); + mMenuItems.add(new QuickVideoMenuItem()); + mMenuItems.add(new ViewSiteMenuItem()); + mMenuItems.add(new AdminMenuItem()); + mMenuItems.add(new SettingsMenuItem()); + updateMenuDrawer(); } @@ -271,281 +313,56 @@ public void run() { * blog. */ protected void updateMenuDrawer() { - - mIsDotComBlog = WordPress.currentBlog != null && WordPress.currentBlog.isDotcomFlag(); - - List items = new ArrayList(); - Resources resources = getResources(); - if (mIsDotComBlog) - items.add(new MenuDrawerItem(resources.getString(R.string.reader), - R.drawable.dashboard_icon_subs)); - items.add(new MenuDrawerItem(resources.getString(R.string.posts), - R.drawable.dashboard_icon_posts)); - items.add(new MenuDrawerItem(resources.getString(R.string.pages), - R.drawable.dashboard_icon_pages)); - items.add(new MenuDrawerItem(resources.getString(R.string.tab_comments), - R.drawable.dashboard_icon_comments)); - items.add(new MenuDrawerItem(resources.getString(R.string.tab_stats), - R.drawable.dashboard_icon_stats)); - items.add(new MenuDrawerItem(resources.getString(R.string.quick_photo), - R.drawable.dashboard_icon_photo)); - items.add(new MenuDrawerItem(resources.getString(R.string.quick_video), - R.drawable.dashboard_icon_video)); - items.add(new MenuDrawerItem(resources.getString(R.string.view_site), - R.drawable.dashboard_icon_view)); - items.add(new MenuDrawerItem(resources.getString(R.string.wp_admin), - R.drawable.dashboard_icon_wp)); - items.add(new MenuDrawerItem(resources.getString(R.string.settings), - R.drawable.dashboard_icon_settings)); - - if ((WPActionBarActivity.this instanceof ReaderActivity)) - mActivePosition = 0; - - if ((WPActionBarActivity.this instanceof PostsActivity)) - mActivePosition = 1; - - if ((WPActionBarActivity.this instanceof PagesActivity)) - mActivePosition = 2; - else if ((WPActionBarActivity.this instanceof CommentsActivity)) - mActivePosition = 3; - else if ((WPActionBarActivity.this instanceof StatsActivity)) - mActivePosition = 4; - else if ((WPActionBarActivity.this instanceof ViewSiteActivity)) - mActivePosition = 7; - else if ((WPActionBarActivity.this instanceof DashboardActivity)) - mActivePosition = 8; - - mAdapter = new MenuAdapter(items); - mListView.setAdapter(mAdapter); - } - - private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - // Adjust position if only one blog is in the app - if (mListView.getHeaderViewsCount() > 0 && position > 0) - position--; - - if (!mIsDotComBlog) - position++; - - if (position == mActivePosition) { - // Same row selected - mMenuDrawer.closeMenu(); - return; - } - - int activityTag = (Integer) view.getTag(); - - mActivePosition = position; - mAdapter.notifyDataSetChanged(); - Intent intent = null; - - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(WPActionBarActivity.this); - SharedPreferences.Editor editor = settings.edit(); - - switch (activityTag) { - case READER_ACTIVITY: - if (!(WPActionBarActivity.this instanceof ReaderActivity)) - mShouldFinish = true; - int readerBlogID = WordPress.wpDB.getWPCOMBlogID(); - if - (WordPress.currentBlog.isDotcomFlag()) { - intent = new Intent(WPActionBarActivity.this, ReaderActivity.class); - intent.putExtra("id", readerBlogID); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", READER_ACTIVITY); - } - break; - case POSTS_ACTIVITY: - if (!(WPActionBarActivity.this instanceof PostsActivity) - || (WPActionBarActivity.this instanceof PagesActivity)) - mShouldFinish = true; - intent = new - Intent(WPActionBarActivity.this, PostsActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", POSTS_ACTIVITY); - break; - case PAGES_ACTIVITY: - if (!(WPActionBarActivity.this instanceof PagesActivity)) - mShouldFinish = true; - intent = new Intent(WPActionBarActivity.this, PagesActivity.class); - intent.putExtra("id", WordPress.currentBlog.getId()); - intent.putExtra("isNew", - true); - intent.putExtra("viewPages", true); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", PAGES_ACTIVITY); - break; - case COMMENTS_ACTIVITY: - if (!(WPActionBarActivity.this instanceof CommentsActivity)) - mShouldFinish = true; - intent = new Intent(WPActionBarActivity.this, CommentsActivity.class); - intent.putExtra("id", WordPress.currentBlog.getId()); - intent.putExtra("isNew", - true); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", COMMENTS_ACTIVITY); - break; - case STATS_ACTIVITY: - if (!(WPActionBarActivity.this instanceof StatsActivity)) - mShouldFinish = true; - intent = new Intent(WPActionBarActivity.this, StatsActivity.class); - intent.putExtra("id", WordPress.currentBlog.getId()); - intent.putExtra("isNew", - true); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", STATS_ACTIVITY); - break; - case QUICK_PHOTO_ACTIVITY: - mShouldFinish = false; - PackageManager pm = WPActionBarActivity.this.getPackageManager(); - intent = new Intent(WPActionBarActivity.this, EditPostActivity.class); - if - (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { - intent.putExtra("quick-media", Constants.QUICK_POST_PHOTO_CAMERA); - } else { - intent.putExtra("quick-media", Constants.QUICK_POST_PHOTO_LIBRARY); - } - intent.putExtra("isNew", true); - break; - case QUICK_VIDEO_ACTIVITY: - mShouldFinish = false; - PackageManager vpm = WPActionBarActivity.this.getPackageManager(); - intent = new Intent(WPActionBarActivity.this, EditPostActivity.class); - if (vpm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { - intent.putExtra("quick-media", Constants.QUICK_POST_VIDEO_CAMERA); - } else { - intent.putExtra("quick-media", Constants.QUICK_POST_VIDEO_LIBRARY); - } - intent.putExtra("isNew", true); - break; - case VIEW_SITE_ACTIVITY: - if (!(WPActionBarActivity.this instanceof ViewSiteActivity)) - mShouldFinish = true; - intent = new Intent(WPActionBarActivity.this, ViewSiteActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", VIEW_SITE_ACTIVITY); - break; - case DASHBOARD_ACTIVITY: - if (!(WPActionBarActivity.this instanceof DashboardActivity)) - mShouldFinish = true; - intent = new Intent(WPActionBarActivity.this, DashboardActivity.class); - intent.putExtra("loadAdmin", true); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - editor.putInt("wp_pref_last_activity", DASHBOARD_ACTIVITY); - break; - case SETTINGS_ACTIVITY: - // Settings shouldn't be launched with a delay, or close the drawer - mShouldFinish = false; - Intent settingsIntent = new Intent(WPActionBarActivity.this, PreferencesActivity.class); - startActivityForResult(settingsIntent, SETTINGS_REQUEST); - return; + mAdapter.clear(); + // iterate over the available menu items and only show the ones that should be visible + Iterator availableItems = mMenuItems.iterator(); + while(availableItems.hasNext()){ + MenuDrawerItem item = availableItems.next(); + if (item.isVisible()) { + mAdapter.add(item); } - - editor.commit(); - if (intent != null) { - mMenuDrawer.closeMenu(); - startActivityWithDelay(intent); - } - } - }; - - private class MenuAdapter extends BaseAdapter { - - private List mItems; - - MenuAdapter(List items) { - mItems = items; } + mAdapter.notifyDataSetChanged(); - @Override - public int getCount() { - return mItems.size(); - } - - @Override - public Object getItem(int position) { - return mItems.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public int getItemViewType(int position) { - return getItem(position) instanceof MenuItem ? 0 : 1; - } + } + + public static class MenuAdapter extends ArrayAdapter { - @Override - public int getViewTypeCount() { - return 2; + MenuAdapter(Context context) { + super(context, R.layout.menu_drawer_row, R.id.menu_row_title, new ArrayList()); } @Override public View getView(int position, View convertView, ViewGroup parent) { - View v = convertView; - Object item = getItem(position); + View view = super.getView(position, convertView, parent); + MenuDrawerItem item = getItem(position); - if (v == null) { - v = getLayoutInflater().inflate(R.layout.menu_drawer_row, parent, false); - } - - TextView titleTextView = (TextView) v.findViewById(R.id.menu_row_title); - titleTextView.setText(((MenuDrawerItem) item).mTitle); + TextView titleTextView = (TextView) view.findViewById(R.id.menu_row_title); + titleTextView.setText(item.getTitleRes()); - ImageView iconImageView = (ImageView) v.findViewById(R.id.menu_row_icon); - iconImageView.setImageResource(((MenuDrawerItem) item).mIconRes); - - v.setTag((mIsDotComBlog) ? position : position + 1); + ImageView iconImageView = (ImageView) view.findViewById(R.id.menu_row_icon); + iconImageView.setImageResource(item.getIconRes()); + // Hide the badge always + view.findViewById(R.id.menu_row_badge).setVisibility(View.GONE); - int positionCheck = mActivePosition; - if (!mIsDotComBlog) - positionCheck--; - if ((position) == positionCheck) { + if (item.isSelected()) { // http://stackoverflow.com/questions/5890379/setbackgroundresource-discards-my-xml-layout-attributes - int bottom = v.getPaddingBottom(); - int top = v.getPaddingTop(); - int right = v.getPaddingRight(); - int left = v.getPaddingLeft(); - v.setBackgroundResource(R.drawable.menu_drawer_selected); - v.setPadding(left, top, right, bottom); - } else { - v.setBackgroundResource(R.drawable.md_list_selector); - } - - - TextView bagdeTextView = (TextView) v.findViewById(R.id.menu_row_badge); - int commentRow = (mIsDotComBlog) ? 3 : 2; - if (position == commentRow && WordPress.currentBlog != null) { - int commentCount = WordPress.currentBlog.getUnmoderatedCommentCount(); - if (commentCount > 0) { - bagdeTextView.setVisibility(View.VISIBLE); - } else - { - bagdeTextView.setVisibility(View.GONE); - } - bagdeTextView.setText(String.valueOf(commentCount)); + int bottom = view.getPaddingBottom(); + int top = view.getPaddingTop(); + int right = view.getPaddingRight(); + int left = view.getPaddingLeft(); + view.setBackgroundResource(R.drawable.menu_drawer_selected); + view.setPadding(left, top, right, bottom); } else { - bagdeTextView.setVisibility(View.GONE); + view.setBackgroundResource(R.drawable.md_list_selector); } + // allow the menudrawer item to configure the view + item.configureView(view); - return v; + return view; } } - private static class MenuDrawerItem { - - String mTitle; - int mIconRes; - - MenuDrawerItem(String title, int iconRes) { - mTitle = title; - mIconRes = iconRes; - } - } /** * Called when the activity has detected the user's press of the back key. @@ -721,7 +538,7 @@ public void stopAnimatingRefreshButton(MenuItem refreshItem) { refreshItem.setActionView(null); } } - + @Override public void onConfigurationChanged(Configuration newConfig) { @@ -736,4 +553,213 @@ public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } + + private class ReaderMenuItem extends MenuDrawerItem { + + ReaderMenuItem(){ + super(READER_ACTIVITY, R.string.reader, R.drawable.dashboard_icon_subs); + } + + @Override + public Boolean isVisible(){ + return WordPress.currentBlog != null && WordPress.currentBlog.isDotcomFlag(); + } + + @Override + public Boolean isSelected(){ + return WPActionBarActivity.this instanceof ReaderActivity; + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof ReaderActivity)) + mShouldFinish = true; + int readerBlogID = WordPress.wpDB.getWPCOMBlogID(); + Intent intent = new Intent(WPActionBarActivity.this, ReaderActivity.class); + intent.putExtra("id", readerBlogID); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + + } + + private class PostsMenuItem extends MenuDrawerItem { + PostsMenuItem(){ + super(POSTS_ACTIVITY, R.string.posts, R.drawable.dashboard_icon_posts); + } + @Override + public Boolean isSelected(){ + WPActionBarActivity activity = WPActionBarActivity.this; + return (activity instanceof PostsActivity) && !(activity instanceof PagesActivity); + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof PostsActivity) + || (WPActionBarActivity.this instanceof PagesActivity)) + mShouldFinish = true; + Intent intent = new Intent(WPActionBarActivity.this, PostsActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + } + + private class PagesMenuItem extends MenuDrawerItem { + PagesMenuItem(){ + super(PAGES_ACTIVITY, R.string.pages, R.drawable.dashboard_icon_pages); + } + @Override + public Boolean isSelected(){ + return WPActionBarActivity.this instanceof PagesActivity; + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof PagesActivity)) + mShouldFinish = true; + Intent intent = new Intent(WPActionBarActivity.this, PagesActivity.class); + intent.putExtra("id", WordPress.currentBlog.getId()); + intent.putExtra("isNew", true); + intent.putExtra("viewPages", true); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + } + + private class CommentsMenuItem extends MenuDrawerItem { + CommentsMenuItem(){ + super(COMMENTS_ACTIVITY, R.string.tab_comments, R.drawable.dashboard_icon_comments); + } + @Override + public Boolean isSelected(){ + return WPActionBarActivity.this instanceof CommentsActivity; + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof CommentsActivity)) + mShouldFinish = true; + Intent intent = new Intent(WPActionBarActivity.this, CommentsActivity.class); + intent.putExtra("id", WordPress.currentBlog.getId()); + intent.putExtra("isNew", + true); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + @Override + public void configureView(View view){ + TextView bagdeTextView = (TextView) view.findViewById(R.id.menu_row_badge); + int commentCount = WordPress.currentBlog.getUnmoderatedCommentCount(); + if (commentCount > 0) { + bagdeTextView.setVisibility(View.VISIBLE); + } else + { + bagdeTextView.setVisibility(View.GONE); + } + bagdeTextView.setText(String.valueOf(commentCount)); + } + } + + private class StatsMenuItem extends MenuDrawerItem { + StatsMenuItem(){ + super(STATS_ACTIVITY, R.string.tab_stats, R.drawable.dashboard_icon_stats); + } + @Override + public Boolean isSelected(){ + return WPActionBarActivity.this instanceof StatsActivity; + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof StatsActivity)) + mShouldFinish = true; + Intent intent = new Intent(WPActionBarActivity.this, StatsActivity.class); + intent.putExtra("id", WordPress.currentBlog.getId()); + intent.putExtra("isNew", + true); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + } + + private class QuickPhotoMenuItem extends MenuDrawerItem { + QuickPhotoMenuItem(){ + super(R.string.quick_photo, R.drawable.dashboard_icon_photo); + } + @Override + public void onSelectItem(){ + mShouldFinish = false; + PackageManager pm = WPActionBarActivity.this.getPackageManager(); + Intent intent = new Intent(WPActionBarActivity.this, EditPostActivity.class); + if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { + intent.putExtra("quick-media", Constants.QUICK_POST_PHOTO_CAMERA); + } else { + intent.putExtra("quick-media", Constants.QUICK_POST_PHOTO_LIBRARY); + } + intent.putExtra("isNew", true); + startActivityWithDelay(intent); + } + } + + private class QuickVideoMenuItem extends MenuDrawerItem { + QuickVideoMenuItem(){ + super(R.string.quick_video, R.drawable.dashboard_icon_video); + } + @Override + public void onSelectItem(){ + mShouldFinish = false; + PackageManager pm = WPActionBarActivity.this.getPackageManager(); + Intent intent = new Intent(WPActionBarActivity.this, EditPostActivity.class); + if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { + intent.putExtra("quick-media", Constants.QUICK_POST_VIDEO_CAMERA); + } else { + intent.putExtra("quick-media", Constants.QUICK_POST_VIDEO_LIBRARY); + } + intent.putExtra("isNew", true); + startActivityWithDelay(intent); + } + } + + private class ViewSiteMenuItem extends MenuDrawerItem { + ViewSiteMenuItem(){ + super(VIEW_SITE_ACTIVITY, R.string.view_site, R.drawable.dashboard_icon_view); + } + @Override + public Boolean isSelected(){ + return WPActionBarActivity.this instanceof ViewSiteActivity; + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof ViewSiteActivity)) + mShouldFinish = true; + Intent intent = new Intent(WPActionBarActivity.this, ViewSiteActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + } + + private class AdminMenuItem extends MenuDrawerItem { + AdminMenuItem(){ + super(DASHBOARD_ACTIVITY, R.string.wp_admin, R.drawable.dashboard_icon_wp); + } + @Override + public Boolean isSelected(){ + return WPActionBarActivity.this instanceof DashboardActivity; + } + @Override + public void onSelectItem(){ + if (!(WPActionBarActivity.this instanceof DashboardActivity)) + mShouldFinish = true; + Intent intent = new Intent(WPActionBarActivity.this, DashboardActivity.class); + intent.putExtra("loadAdmin", true); + intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivityWithDelay(intent); + } + } + private class SettingsMenuItem extends MenuDrawerItem { + SettingsMenuItem(){ + super(SETTINGS_ACTIVITY, R.string.settings, R.drawable.dashboard_icon_settings); + } + @Override + public void onSelectItem(){ + mShouldFinish = false; + Intent settingsIntent = new Intent(WPActionBarActivity.this, PreferencesActivity.class); + startActivityForResult(settingsIntent, SETTINGS_REQUEST); + } + } }