From b015aac9e5df506d86a7e05727b924ca1315c6ea Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 27 Feb 2014 08:44:12 +0000 Subject: [PATCH] FolderAdapter -> FolderListAdapter, highlight selected folder --- res/drawable/activated_background.xml | 8 ++++ res/layout/listitem_folder.xml | 3 +- res/values/colors.xml | 5 +++ ...derAdapter.java => FolderListAdapter.java} | 4 +- src/i2p/bote/MailListActivity.java | 38 +++++++++++-------- 5 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 res/drawable/activated_background.xml create mode 100644 res/values/colors.xml rename src/i2p/bote/{FolderAdapter.java => FolderListAdapter.java} (93%) diff --git a/res/drawable/activated_background.xml b/res/drawable/activated_background.xml new file mode 100644 index 0000000..cfbb9b1 --- /dev/null +++ b/res/drawable/activated_background.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/res/layout/listitem_folder.xml b/res/layout/listitem_folder.xml index 9454983..804b949 100644 --- a/res/layout/listitem_folder.xml +++ b/res/layout/listitem_folder.xml @@ -1,7 +1,8 @@ + android:layout_height="match_parent" + android:background="@drawable/activated_background" > + + #c31756 + #111 + diff --git a/src/i2p/bote/FolderAdapter.java b/src/i2p/bote/FolderListAdapter.java similarity index 93% rename from src/i2p/bote/FolderAdapter.java rename to src/i2p/bote/FolderListAdapter.java index 14af16d..d5424bb 100644 --- a/src/i2p/bote/FolderAdapter.java +++ b/src/i2p/bote/FolderListAdapter.java @@ -12,10 +12,10 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; -public class FolderAdapter extends ArrayAdapter { +public class FolderListAdapter extends ArrayAdapter { private final LayoutInflater mInflater; - public FolderAdapter(Context context) { + public FolderListAdapter(Context context) { super(context, android.R.layout.simple_list_item_2); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } diff --git a/src/i2p/bote/MailListActivity.java b/src/i2p/bote/MailListActivity.java index 61b3114..ec769f7 100644 --- a/src/i2p/bote/MailListActivity.java +++ b/src/i2p/bote/MailListActivity.java @@ -24,12 +24,10 @@ public class MailListActivity extends ActionBarActivity { * Navigation drawer variables */ private DrawerLayout mDrawerLayout; - private FolderAdapter mFolderAdapter; + private FolderListAdapter mFolderAdapter; private ListView mFolderList; private ActionBarDrawerToggle mDrawerToggle; - private String mActiveFolder; - private static final String SHARED_PREFS = "i2p.bote"; private static final String PREF_NAV_DRAWER_OPENED = "navDrawerOpened"; private static final String ACTIVE_FOLDER = "activeFolder"; @@ -47,16 +45,15 @@ public class MailListActivity extends ActionBarActivity { mTitle = mDrawerTitle = getTitle(); mSharedPrefs = getSharedPreferences(SHARED_PREFS, 0); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); - mFolderAdapter = new FolderAdapter(this); + mFolderAdapter = new FolderListAdapter(this); mFolderList = (ListView) findViewById(R.id.drawer); // Set the list of folders - // XXX: Does this need a loader? + // TODO: This is slow, needs a loader mFolderAdapter.setData(I2PBote.getInstance().getEmailFolders()); // Set a custom shadow that overlays the main content when the drawer opens mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); - mFolderList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); // Set the adapter for the list view mFolderList.setAdapter(mFolderAdapter); // Set the list's click listener @@ -102,12 +99,13 @@ public class MailListActivity extends ActionBarActivity { mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { - mActiveFolder = "inbox"; - FolderFragment f = FolderFragment.newInstance(mActiveFolder); + FolderFragment f = FolderFragment.newInstance("inbox"); getSupportFragmentManager().beginTransaction() .add(R.id.list_fragment, f).commit(); + mFolderList.setItemChecked(0, true); } else { - mActiveFolder = savedInstanceState.getString(ACTIVE_FOLDER); + mFolderList.setItemChecked( + savedInstanceState.getInt(ACTIVE_FOLDER), true); } // Open nav drawer if the user has never opened it themselves @@ -117,18 +115,28 @@ public class MailListActivity extends ActionBarActivity { private class DrawerItemClickListener implements ListView.OnItemClickListener { public void onItemClick(AdapterView parent, View view, int pos, long id) { - EmailFolder folder = mFolderAdapter.getItem(pos); - FolderFragment f = FolderFragment.newInstance(folder.getName()); - getSupportFragmentManager().beginTransaction() - .replace(R.id.list_fragment, f).commit(); - mDrawerLayout.closeDrawer(mFolderList); + selectItem(pos); } } + private void selectItem(int position) { + // Create the new fragment + EmailFolder folder = mFolderAdapter.getItem(position); + FolderFragment f = FolderFragment.newInstance(folder.getName()); + + // Insert the fragment + getSupportFragmentManager().beginTransaction() + .replace(R.id.list_fragment, f).commit(); + + // Highlight the selected item and close the drawer + mFolderList.setItemChecked(position, true); + mDrawerLayout.closeDrawer(mFolderList); + } + @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putString(ACTIVE_FOLDER, mActiveFolder); + outState.putInt(ACTIVE_FOLDER, mFolderList.getSelectedItemPosition()); } @Override