diff options
author | Andrew Dolgov <[email protected]> | 2011-09-09 11:03:14 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-09-09 11:03:14 +0400 |
commit | 38028b1e7e47b239a4942c851a04c9903fc684c3 (patch) | |
tree | ffd842a595415b0e670a2e83eff600769919d80a /src/org | |
parent | 7dfef7375d0f7c52d3f55f7cb69166945335f58e (diff) |
update feedlist on unread count change, implement feeds_unread view
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/fox/ttrss/DatabaseHelper.java | 8 | ||||
-rw-r--r-- | src/org/fox/ttrss/FeedsFragment.java | 4 | ||||
-rw-r--r-- | src/org/fox/ttrss/MainActivity.java | 13 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/org/fox/ttrss/DatabaseHelper.java b/src/org/fox/ttrss/DatabaseHelper.java index 35d564a0..e9d350b9 100644 --- a/src/org/fox/ttrss/DatabaseHelper.java +++ b/src/org/fox/ttrss/DatabaseHelper.java @@ -10,7 +10,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { private final String TAG = this.getClass().getSimpleName();
public static final String DATABASE_NAME = "LocalStorage";
- public static final int DATABASE_VERSION = 4;
+ public static final int DATABASE_VERSION = 6;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
@@ -20,6 +20,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS feeds;");
db.execSQL("DROP TABLE IF EXISTS articles;");
+ db.execSQL("DROP VIEW IF EXISTS feeds_unread;");
db.execSQL("CREATE TABLE IF NOT EXISTS feeds (" +
BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
@@ -45,6 +46,11 @@ public class DatabaseHelper extends SQLiteOpenHelper { "tags TEXT, " +
"content TEXT" +
");");
+
+ db.execSQL("CREATE VIEW feeds_unread AS SELECT feeds._id AS _id, " +
+ "feeds.title AS title, " +
+ "SUM(articles.unread) AS unread FROM feeds " +
+ "LEFT JOIN articles ON (articles.feed_id = feeds._id) GROUP BY feeds._id, feeds.title;");
}
@Override
diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java index e7fdb820..7c192b48 100644 --- a/src/org/fox/ttrss/FeedsFragment.java +++ b/src/org/fox/ttrss/FeedsFragment.java @@ -68,7 +68,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener { View view = inflater.inflate(R.layout.feeds_fragment, container, false);
DatabaseHelper helper = new DatabaseHelper(getActivity());
- m_cursor = helper.getReadableDatabase().query("feeds", null, null, null, null, null, "unread DESC");
+ m_cursor = helper.getReadableDatabase().query("feeds_unread", null, null, null, null, null, "unread DESC");
m_adapter = new FeedsListAdapter(getActivity(), R.layout.feeds_row, m_cursor,
new String[] { "title", "unread" }, new int[] { R.id.title, R.id.unread_counter }, 0);
@@ -197,7 +197,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener { out.putLong("lastUpdate", m_lastUpdate);
}
- private class FeedsListAdapter extends SimpleCursorAdapter {
+ class FeedsListAdapter extends SimpleCursorAdapter {
private Context context;
private int layout;
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index e67562df..c79f16f4 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -100,7 +100,7 @@ public class MainActivity extends Activity { FeedsFragment frag = new FeedsFragment(); ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); - ft.replace(R.id.feeds_container, frag); + ft.replace(R.id.feeds_container, frag, "FEEDLIST"); ft.commit(); m_feedsOpened = true; @@ -210,8 +210,8 @@ public class MainActivity extends Activity { stmtInsert.bindString(7, article.title); stmtInsert.bindString(8, article.link); stmtInsert.bindLong(9, article.feed_id); - stmtInsert.bindString(9, ""); // comma-separated tags - stmtInsert.bindString(10, article.content); + stmtInsert.bindString(10, ""); // comma-separated tags + stmtInsert.bindString(11, article.content); stmtInsert.execute(); } @@ -221,6 +221,13 @@ public class MainActivity extends Activity { db.close(); + FeedsFragment ff = (FeedsFragment) getFragmentManager().findFragmentByTag("FEEDLIST"); + + if (ff != null) { + ff.m_cursor.requery(); + ff.m_adapter.notifyDataSetChanged(); + } + Log.d(TAG, articlesFound + " articles processed"); if (articlesFound == m_limit && m_offset <= 300) { |