diff options
| author | Andrew Dolgov <noreply@fakecake.org> | 2014-11-16 13:13:39 +0400 |
|---|---|---|
| committer | Andrew Dolgov <noreply@fakecake.org> | 2014-11-16 13:13:39 +0400 |
| commit | e5ab4e59686632a28debc6039f1c6927fffe9643 (patch) | |
| tree | 28b76c2de2c47b048126058397b40cb140f4b3b7 /org.fox.ttrss/src/main/java/org | |
| parent | 51d4bef187139700252ae9c7ff6ef1a5cd48c399 (diff) | |
add gmail-like round drawable for compact mode in place of checkbox
Diffstat (limited to 'org.fox.ttrss/src/main/java/org')
| -rw-r--r-- | org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java | 51 | ||||
| -rw-r--r-- | org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java | 57 |
2 files changed, 104 insertions, 4 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index b17dd02e..36e5b6c6 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -41,6 +41,8 @@ import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; import com.google.gson.JsonElement; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; @@ -603,6 +605,8 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, public ProgressBar flavorImageLoadingBar; public View flavorImageArrow; public View headlineFooter; + public ImageView textImage; + public ImageView textChecked; } private class ArticleListAdapter extends ArrayAdapter<Article> { @@ -619,6 +623,9 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, private final Integer[] origTitleColors = new Integer[VIEW_COUNT]; private final int titleHighScoreUnreadColor; + private ColorGenerator m_colorGenerator = ColorGenerator.DEFAULT; + private TextDrawable.IBuilder m_drawableBuilder = TextDrawable.builder().round(); + public ArticleListAdapter(Context context, int textViewResourceId, ArrayList<Article> items) { super(context, textViewResourceId, items); this.items = items; @@ -650,13 +657,27 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } } + private void updateTextCheckedState(HeadlineViewHolder holder, Article item) { + String tmp = item.title.length() > 0 ? item.title.substring(0, 1) : "?"; + + if (m_selectedArticles.contains(item)) { + holder.textImage.setImageDrawable(m_drawableBuilder.build(" ", 0xff616161)); + + holder.textChecked.setVisibility(View.VISIBLE); + } else { + holder.textImage.setImageDrawable(m_drawableBuilder.build(tmp, m_colorGenerator.getColor(item.title))); + + holder.textChecked.setVisibility(View.GONE); + } + } + @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; final Article article = items.get(position); - HeadlineViewHolder holder; + final HeadlineViewHolder holder; int headlineFontSize = Integer.parseInt(m_prefs.getString("headlines_font_size_sp", "13")); int headlineSmallFontSize = Math.max(10, Math.min(18, headlineFontSize - 2)); @@ -698,6 +719,8 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, holder.flavorImageLoadingBar = (ProgressBar) v.findViewById(R.id.flavorImageLoadingBar); holder.flavorImageArrow = v.findViewById(R.id.flavorImageArrow); holder.headlineFooter = v.findViewById(R.id.headline_footer); + holder.textImage = (ImageView) v.findViewById(R.id.text_image); + holder.textChecked = (ImageView) v.findViewById(R.id.text_checked); v.setTag(holder); @@ -716,7 +739,31 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } }); } - + + if (holder.textImage != null) { + updateTextCheckedState(holder, article); + + holder.textImage.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + Log.d(TAG, "textImage : onclicked"); + + if (!m_selectedArticles.contains(article)) { + m_selectedArticles.add(article); + } else { + m_selectedArticles.remove(article); + } + + updateTextCheckedState(holder, article); + + m_listener.onArticleListSelectionChange(m_selectedArticles); + + Log.d(TAG, "num selected: " + m_selectedArticles.size()); + } + }); + + } + if (holder.titleView != null) { holder.titleView.setText(Html.fromHtml(article.title)); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 0b8ec6c1..3af3c237 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -36,6 +36,9 @@ import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; + import org.fox.ttrss.GlobalState; import org.fox.ttrss.R; import org.fox.ttrss.util.TypefaceCache; @@ -448,6 +451,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public ProgressBar flavorImageLoadingBar; public View flavorImageArrow; public View headlineFooter; + public ImageView textImage; + public ImageView textChecked; } private class ArticleListAdapter extends SimpleCursorAdapter { @@ -461,6 +466,9 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis private final Integer[] origTitleColors = new Integer[VIEW_COUNT]; private final int titleHighScoreUnreadColor; + + private ColorGenerator m_colorGenerator = ColorGenerator.DEFAULT; + private TextDrawable.IBuilder m_drawableBuilder = TextDrawable.builder().round(); public ArticleListAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { @@ -493,14 +501,32 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis } } + private void updateTextCheckedState(HeadlineViewHolder holder, Cursor item) { + String title = item.getString(item.getColumnIndex("title")); + + String tmp = title.length() > 0 ? title.substring(0, 1) : "?"; + + boolean isChecked = item.getInt(item.getColumnIndex("selected")) == 1; + + if (isChecked) { + holder.textImage.setImageDrawable(m_drawableBuilder.build(" ", 0xff616161)); + + holder.textChecked.setVisibility(View.VISIBLE); + } else { + holder.textImage.setImageDrawable(m_drawableBuilder.build(tmp, m_colorGenerator.getColor(title))); + + holder.textChecked.setVisibility(View.GONE); + } + } + @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; - Cursor article = (Cursor)getItem(position); + final Cursor article = (Cursor)getItem(position); - HeadlineViewHolder holder; + final HeadlineViewHolder holder; final int articleId = article.getInt(0); @@ -544,6 +570,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis holder.flavorImageLoadingBar = (ProgressBar) v.findViewById(R.id.flavorImageLoadingBar); holder.flavorImageArrow = v.findViewById(R.id.flavorImageArrow); holder.headlineFooter = v.findViewById(R.id.headline_footer); + holder.textImage = (ImageView) v.findViewById(R.id.text_image); + holder.textChecked = (ImageView) v.findViewById(R.id.text_checked); v.setTag(holder); @@ -563,6 +591,31 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }); } + if (holder.textImage != null) { + updateTextCheckedState(holder, article); + + holder.textImage.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + Log.d(TAG, "textImage : onclicked"); + + SQLiteStatement stmtUpdate = m_activity.getWritableDb().compileStatement("UPDATE articles SET selected = NOT selected " + + "WHERE " + BaseColumns._ID + " = ?"); + + stmtUpdate.bindLong(1, articleId); + stmtUpdate.execute(); + stmtUpdate.close(); + + updateTextCheckedState(holder, article); + + refresh(); + + m_activity.invalidateOptionsMenu(); + } + }); + + } + if (holder.titleView != null) { holder.titleView.setText(Html.fromHtml(article.getString(article.getColumnIndex("title")))); |