Nav drawer folder selection styling
This commit is contained in:
@@ -63,7 +63,6 @@ public class EmailListActivity extends ActionBarActivity implements
|
||||
private DrawerLayout mDrawerLayout;
|
||||
private RelativeLayout mDrawerOuter;
|
||||
private FolderListAdapter mFolderAdapter;
|
||||
private String mCurFolder;
|
||||
private ImageView mNetworkStatusIcon;
|
||||
private TextView mNetworkStatusText;
|
||||
private ActionBarDrawerToggle mDrawerToggle;
|
||||
@@ -161,10 +160,8 @@ public class EmailListActivity extends ActionBarActivity implements
|
||||
EmailListFragment f = EmailListFragment.newInstance("inbox");
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.list_fragment, f).commit();
|
||||
//mFolderList.setItemChecked(0, true);
|
||||
mCurFolder = "";
|
||||
} else {
|
||||
mCurFolder = savedInstanceState.getString(ACTIVE_FOLDER);
|
||||
mFolderAdapter.setSelected(savedInstanceState.getInt(ACTIVE_FOLDER));
|
||||
}
|
||||
|
||||
// Set up fixed actions
|
||||
@@ -222,7 +219,7 @@ public class EmailListActivity extends ActionBarActivity implements
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putString(ACTIVE_FOLDER, mCurFolder);
|
||||
outState.putInt(ACTIVE_FOLDER, mFolderAdapter.getSelected());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -361,17 +358,14 @@ public class EmailListActivity extends ActionBarActivity implements
|
||||
|
||||
// FolderListAdapter.OnFolderSelectedListener
|
||||
|
||||
public void onDrawerFolderSelected(EmailFolder folder) {
|
||||
if (!folder.getName().equals(mCurFolder)) {
|
||||
public void onDrawerFolderSelected(EmailFolder folder, boolean alreadySelected) {
|
||||
if (!alreadySelected) {
|
||||
// Create the new fragment
|
||||
EmailListFragment f = EmailListFragment.newInstance(folder.getName());
|
||||
|
||||
// Insert the fragment
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.list_fragment, f).commit();
|
||||
|
||||
// Save the current position
|
||||
mCurFolder = folder.getName();
|
||||
}
|
||||
// Close the drawer
|
||||
mDrawerLayout.closeDrawer(mDrawerOuter);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package i2p.bote.android;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Build;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -18,6 +20,7 @@ import i2p.bote.folder.FolderListener;
|
||||
public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.ViewHolder> {
|
||||
private Context mCtx;
|
||||
private List<EmailFolder> mFolders;
|
||||
private int mSelectedFolder;
|
||||
private OnFolderSelectedListener mListener;
|
||||
|
||||
// Provide a reference to the views for each data item
|
||||
@@ -35,11 +38,20 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
|
||||
}
|
||||
|
||||
public static interface OnFolderSelectedListener {
|
||||
public void onDrawerFolderSelected(EmailFolder folder);
|
||||
/**
|
||||
* Called when a folder has been selected from the navigation drawer.
|
||||
*
|
||||
* @param folder
|
||||
* The EmailFolder that has just been selected.
|
||||
* @param alreadySelected
|
||||
* Is the selected folder already selected?
|
||||
*/
|
||||
public void onDrawerFolderSelected(EmailFolder folder, boolean alreadySelected);
|
||||
}
|
||||
|
||||
public FolderListAdapter(Context ctx, OnFolderSelectedListener listener) {
|
||||
mCtx = ctx;
|
||||
mSelectedFolder = -1;
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
@@ -55,9 +67,26 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
|
||||
for (EmailFolder folder : folders) {
|
||||
folder.addFolderListener(folderListener);
|
||||
}
|
||||
|
||||
if (mSelectedFolder < 0)
|
||||
mSelectedFolder = 0;
|
||||
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setSelected(int position) {
|
||||
if (position != mSelectedFolder) {
|
||||
int oldSelected = mSelectedFolder;
|
||||
mSelectedFolder = position;
|
||||
notifyItemChanged(oldSelected);
|
||||
notifyItemChanged(mSelectedFolder);
|
||||
}
|
||||
}
|
||||
|
||||
public int getSelected() {
|
||||
return mSelectedFolder;
|
||||
}
|
||||
|
||||
// Create new views (invoked by the layout manager)
|
||||
@Override
|
||||
public FolderListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
|
||||
@@ -69,7 +98,7 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
|
||||
|
||||
// Replace the contents of a view (invoked by the layout manager)
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
public void onBindViewHolder(ViewHolder holder, final int position) {
|
||||
final EmailFolder folder = mFolders.get(position);
|
||||
|
||||
holder.mIcon.setImageDrawable(BoteHelper.getFolderIcon(mCtx, folder));
|
||||
@@ -80,12 +109,24 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
|
||||
holder.mName.setText(BoteHelper.getFolderDisplayName(mCtx, folder));
|
||||
}
|
||||
|
||||
holder.itemView.setSelected(position == mSelectedFolder);
|
||||
|
||||
holder.mName.setTextAppearance(mCtx, position == mSelectedFolder ?
|
||||
R.style.TextAppearance_AppCompat_NavDrawer_Selected :
|
||||
R.style.TextAppearance_AppCompat_NavDrawer);
|
||||
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mListener.onDrawerFolderSelected(folder);
|
||||
setSelected(position);
|
||||
mListener.onDrawerFolderSelected(folder, position == mSelectedFolder);
|
||||
}
|
||||
});
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||
holder.mIcon.setImageTintList(position == mSelectedFolder ?
|
||||
new ColorStateList(new int[][]{{}},
|
||||
new int[]{mCtx.getResources().getColor(R.color.accent_dark)}) : null);
|
||||
}
|
||||
|
||||
// Return the size of the dataset (invoked by the layout manager)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/translucent_blue" android:state_activated="true" />
|
||||
<item android:drawable="@color/translucent_blue" android:state_checked="true" />
|
||||
<item android:drawable="@color/translucent_blue" android:state_pressed="true" />
|
||||
<item android:drawable="@color/translucent_blue" android:state_selected="true" />
|
||||
<item android:drawable="@color/listitem_selected" android:state_activated="true" />
|
||||
<item android:drawable="@color/listitem_selected" android:state_checked="true" />
|
||||
<item android:drawable="@color/listitem_selected" android:state_pressed="true" />
|
||||
<item android:drawable="@color/listitem_selected" android:state_selected="true" />
|
||||
<item android:drawable="@android:color/transparent" />
|
||||
</selector>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/translucent_blue" android:state_activated="true" />
|
||||
<item android:drawable="@color/translucent_blue" android:state_checked="true" />
|
||||
<item android:drawable="@color/listitem_selected" android:state_activated="true" />
|
||||
<item android:drawable="@color/listitem_selected" android:state_checked="true" />
|
||||
<item android:drawable="@android:color/transparent" />
|
||||
</selector>
|
||||
@@ -6,10 +6,8 @@
|
||||
<color name="accent">#ffab40</color><!-- Orange A200 -->
|
||||
<color name="accent_dark">#ff9100</color><!-- Orange A400 -->
|
||||
|
||||
<!-- A translucent holo blue -->
|
||||
<color name="translucent_blue">#9033B5E5</color>
|
||||
<color name="listitem_selected">#e0e0e0</color>
|
||||
<color name="uva_color">#c31756</color>
|
||||
<color name="default_color">#111</color>
|
||||
<color name="error_color">#f00</color>
|
||||
|
||||
<color name="green">#4caf50</color>
|
||||
|
||||
@@ -29,6 +29,12 @@
|
||||
<item name="android:textSize">@dimen/text_size_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.AppCompat.NavDrawer" parent="TextAppearance.AppCompat.Primary"/>
|
||||
|
||||
<style name="TextAppearance.AppCompat.NavDrawer.Selected" parent="TextAppearance.AppCompat.NavDrawer">
|
||||
<item name="android:textColor">@color/accent_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.AppCompat.Subject" parent="TextAppearance.AppCompat.Primary">
|
||||
<item name="android:textSize">@dimen/text_size_subject</item>
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user