aboutsummaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss/src/main/java/org')
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java51
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java57
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"))));