summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-09-09 11:03:14 +0400
committerAndrew Dolgov <[email protected]>2011-09-09 11:03:14 +0400
commit38028b1e7e47b239a4942c851a04c9903fc684c3 (patch)
treeffd842a595415b0e670a2e83eff600769919d80a
parent7dfef7375d0f7c52d3f55f7cb69166945335f58e (diff)
update feedlist on unread count change, implement feeds_unread view
-rw-r--r--src/org/fox/ttrss/DatabaseHelper.java8
-rw-r--r--src/org/fox/ttrss/FeedsFragment.java4
-rw-r--r--src/org/fox/ttrss/MainActivity.java13
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) {