diff options
Diffstat (limited to 'src/org/fox/ttrss/offline')
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineArticleFragment.java | 6 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineDownloadService.java | 29 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java | 50 |
3 files changed, 65 insertions, 20 deletions
diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java index cdbbdc55..621367d2 100644 --- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java +++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java @@ -284,7 +284,11 @@ public class OfflineArticleFragment extends Fragment implements GestureDetector. TextView author = (TextView)view.findViewById(R.id.author); if (author != null) { - author.setVisibility(View.GONE); + int authorIndex = m_cursor.getColumnIndex("author"); + if (authorIndex >= 0) + author.setText(m_cursor.getString(authorIndex)); + else + author.setVisibility(View.GONE); } } diff --git a/src/org/fox/ttrss/offline/OfflineDownloadService.java b/src/org/fox/ttrss/offline/OfflineDownloadService.java index 2fe87570..410c339a 100644 --- a/src/org/fox/ttrss/offline/OfflineDownloadService.java +++ b/src/org/fox/ttrss/offline/OfflineDownloadService.java @@ -367,8 +367,8 @@ public class OfflineDownloadService extends Service { m_articles = new Gson().fromJson(content, listType); SQLiteStatement stmtInsert = getWritableDb().compileStatement("INSERT INTO articles " + - "("+BaseColumns._ID+", unread, marked, published, updated, is_updated, title, link, feed_id, tags, content) " + - "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"); + "("+BaseColumns._ID+", unread, marked, published, score, updated, is_updated, title, link, feed_id, tags, content, author) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"); for (Article article : m_articles) { @@ -380,17 +380,20 @@ public class OfflineDownloadService extends Service { tagsString = tagsString.replaceAll(", $", ""); - stmtInsert.bindLong(1, article.id); - stmtInsert.bindLong(2, article.unread ? 1 : 0); - stmtInsert.bindLong(3, article.marked ? 1 : 0); - stmtInsert.bindLong(4, article.published ? 1 : 0); - stmtInsert.bindLong(5, article.updated); - stmtInsert.bindLong(6, article.is_updated ? 1 : 0); - stmtInsert.bindString(7, article.title); - stmtInsert.bindString(8, article.link); - stmtInsert.bindLong(9, article.feed_id); - stmtInsert.bindString(10, tagsString); // comma-separated tags - stmtInsert.bindString(11, article.content); + int index = 1; + stmtInsert.bindLong(index++, article.id); + stmtInsert.bindLong(index++, article.unread ? 1 : 0); + stmtInsert.bindLong(index++, article.marked ? 1 : 0); + stmtInsert.bindLong(index++, article.published ? 1 : 0); + stmtInsert.bindLong(index++, article.score); + stmtInsert.bindLong(index++, article.updated); + stmtInsert.bindLong(index++, article.is_updated ? 1 : 0); + stmtInsert.bindString(index++, article.title); + stmtInsert.bindString(index++, article.link); + stmtInsert.bindLong(index++, article.feed_id); + stmtInsert.bindString(index++, tagsString); // comma-separated tags + stmtInsert.bindString(index++, article.content); + stmtInsert.bindString(index++, article.author); if (m_downloadImages) { Document doc = Jsoup.parse(article.content); diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index be724eb1..cdb0adf3 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -12,8 +12,10 @@ import org.jsoup.Jsoup; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; +import android.content.res.Resources.Theme; import android.database.Cursor; import android.database.sqlite.SQLiteStatement; +import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -24,6 +26,7 @@ import android.support.v4.widget.SimpleCursorAdapter; import android.text.Html; import android.text.Html.ImageGetter; import android.util.Log; +import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; @@ -371,12 +374,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis } */ private class ArticleListAdapter extends SimpleCursorAdapter { - public ArticleListAdapter(Context context, int layout, Cursor c, - String[] from, int[] to, int flags) { - super(context, layout, c, from, to, flags); - // TODO Auto-generated constructor stub - } - public static final int VIEW_NORMAL = 0; public static final int VIEW_UNREAD = 1; public static final int VIEW_SELECTED = 2; @@ -385,7 +382,19 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public static final int VIEW_COUNT = VIEW_LOADMORE+1; + private final Integer[] origTitleColors = new Integer[VIEW_COUNT]; + private final int titleHighScoreUnreadColor; + public ArticleListAdapter(Context context, int layout, Cursor c, + String[] from, int[] to, int flags) { + super(context, layout, c, from, to, flags); + + Theme theme = context.getTheme(); + TypedValue tv = new TypedValue(); + theme.resolveAttribute(R.attr.headlineTitleHighScoreUnreadTextColor, tv, true); + titleHighScoreUnreadColor = tv.data; + } + public int getViewTypeCount() { return VIEW_COUNT; } @@ -444,6 +453,10 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis if (tt != null) { tt.setText(Html.fromHtml(article.getString(article.getColumnIndex("title")))); + + int scoreIndex = article.getColumnIndex("score"); + if (scoreIndex >= 0) + adjustTitleTextView(article.getInt(scoreIndex), tt, position); } TextView ft = (TextView)v.findViewById(R.id.feed_title); @@ -518,6 +531,14 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis te.setText(excerpt); } + TextView ta = (TextView)v.findViewById(R.id.author); + + if (ta != null) { + int authorIndex = article.getColumnIndex("author"); + if (authorIndex >= 0) + ta.setText(article.getString(authorIndex)); + } + /* ImageView separator = (ImageView)v.findViewById(R.id.headlines_separator); if (separator != null && m_offlineServices.isSmallScreen()) { @@ -573,6 +594,23 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis return v; } + + private void adjustTitleTextView(int score, TextView tv, int position) { + int viewType = getItemViewType(position); + if (origTitleColors[viewType] == null) + // store original color + origTitleColors[viewType] = Integer.valueOf(tv.getCurrentTextColor()); + + if (score < -500) { + tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } else if (score > 500) { + tv.setTextColor(titleHighScoreUnreadColor); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } else { + tv.setTextColor(origTitleColors[viewType].intValue()); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } + } } public void notifyUpdated() { |