summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-09-10 12:16:59 +0400
committerAndrew Dolgov <[email protected]>2011-09-10 12:16:59 +0400
commit0e58bef54c6637591d8ad4be23ee9e1ceb5b1e44 (patch)
treec24ca6b0cc0bc651e2e3a62cd6d04b5e9d051a5a
parent09fed5025fddc49bba6559082e56e3860bb1928e (diff)
fix some rotating issues
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java10
-rw-r--r--src/org/fox/ttrss/HeadlinesFragment.java11
-rw-r--r--src/org/fox/ttrss/MainActivity.java35
3 files changed, 43 insertions, 13 deletions
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index 850a0f9c..0943d601 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -1,5 +1,7 @@
package org.fox.ttrss;
+import java.sql.SQLData;
+
import android.app.Activity;
import android.app.Fragment;
import android.content.SharedPreferences;
@@ -20,6 +22,7 @@ public class ArticleFragment extends Fragment {
protected SharedPreferences m_prefs;
protected int m_articleId;
+ protected SQLiteDatabase m_db;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -31,11 +34,11 @@ public class ArticleFragment extends Fragment {
View view = inflater.inflate(R.layout.article_fragment, container, false);
DatabaseHelper dh = new DatabaseHelper(getActivity());
- SQLiteDatabase db = dh.getReadableDatabase();
+ m_db = dh.getReadableDatabase();
Log.d(TAG, "Opening article #" + m_articleId);
- Cursor c = db.query("articles", null, BaseColumns._ID + "=?",
+ Cursor c = m_db.query("articles", null, BaseColumns._ID + "=?",
new String[] { String.valueOf(m_articleId) }, null, null, null);
c.moveToFirst();
@@ -59,7 +62,6 @@ public class ArticleFragment extends Fragment {
}
c.close();
- db.close();
return view;
}
@@ -71,6 +73,8 @@ public class ArticleFragment extends Fragment {
@Override
public void onDestroy() {
super.onDestroy();
+
+ m_db.close();
}
@Override
diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java
index 9182eb6c..ef595114 100644
--- a/src/org/fox/ttrss/HeadlinesFragment.java
+++ b/src/org/fox/ttrss/HeadlinesFragment.java
@@ -29,6 +29,10 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ if (savedInstanceState != null) {
+ m_feedId = savedInstanceState.getInt("feedId");
+ }
+
View view = inflater.inflate(R.layout.headlines_fragment, container, false);
DatabaseHelper helper = new DatabaseHelper(getActivity());
@@ -114,4 +118,11 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
}
+ @Override
+ public void onSaveInstanceState (Bundle out) {
+ super.onSaveInstanceState(out);
+
+ out.putInt("feedId", m_feedId);
+ }
+
}
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java
index 69f9e249..761d4dd0 100644
--- a/src/org/fox/ttrss/MainActivity.java
+++ b/src/org/fox/ttrss/MainActivity.java
@@ -42,6 +42,7 @@ public class MainActivity extends Activity {
private SharedPreferences m_prefs;
private String m_themeName = "";
private boolean m_feedsOpened = false;
+ private boolean m_splashDisabled = false;
protected String m_sessionId;
protected int m_offset = 0;
protected int m_limit = 30;
@@ -107,13 +108,14 @@ public class MainActivity extends Activity {
m_limit = savedInstanceState.getInt("limit");
m_updateMode = savedInstanceState.getInt("updateMode");
m_maxId = savedInstanceState.getInt("maxId");
+ m_splashDisabled = savedInstanceState.getBoolean("splashDisabled");
}
// allow database to upgrade before we do anything else
DatabaseHelper dh = new DatabaseHelper(getApplicationContext());
SQLiteDatabase db = dh.getWritableDatabase();
- if (m_updateMode == UPDATE_INITIAL) {
+ if (m_updateMode == UPDATE_INITIAL && !m_splashDisabled) {
db.execSQL("DELETE FROM feeds;");
db.execSQL("DELETE FROM articles;");
}
@@ -127,10 +129,6 @@ public class MainActivity extends Activity {
LayoutTransition transitioner = new LayoutTransition();
wrapper.setLayoutTransition(transitioner);
- m_feedsTask = new FeedsTask();
- m_feedsTimer = new Timer("UpdateFeeds");
- m_feedsTimer.schedule(m_feedsTask, 1000L, 60*1000L);
-
if (!m_feedsOpened) {
Log.d(TAG, "Opening feeds fragment...");
@@ -142,6 +140,20 @@ public class MainActivity extends Activity {
ft.commit();
m_feedsOpened = true;
+
+ }
+
+ if (m_splashDisabled) {
+ ViewFlipper vf = (ViewFlipper) findViewById(R.id.main_flipper);
+
+ if (vf != null && vf.getDisplayedChild() == 0)
+ vf.showNext();
+
+ scheduleNextUpdate();
+ } else {
+ m_feedsTask = new FeedsTask();
+ m_feedsTimer = new Timer("UpdateFeeds");
+ m_feedsTimer.schedule(m_feedsTask, 1000L, 60*1000L);
}
//scheduleNextUpdate();
@@ -157,6 +169,7 @@ public class MainActivity extends Activity {
out.putInt("limit", m_limit);
out.putInt("updateMode", m_updateMode);
out.putInt("maxId", m_maxId);
+ out.putBoolean("splashDisabled", m_splashDisabled);
}
@Override
@@ -174,13 +187,13 @@ public class MainActivity extends Activity {
public void onDestroy() {
super.onDestroy();
- m_feedsTask.cancel();
- m_articlesTask.cancel();
+ if (m_feedsTask != null) m_feedsTask.cancel();
+ if (m_articlesTask != null) m_articlesTask.cancel();
- m_feedsTimer.cancel();
+ if (m_feedsTimer != null) m_feedsTimer.cancel();
m_feedsTimer = null;
- m_articlesTimer.cancel();
+ if (m_articlesTimer != null) m_articlesTimer.cancel();
m_articlesTimer = null;
}
@@ -269,7 +282,7 @@ public class MainActivity extends Activity {
List<Article> articles = api.m_gson.fromJson(feeds_object, listType);
DatabaseHelper dh = new DatabaseHelper(getApplicationContext());
- SQLiteDatabase db = dh.getWritableDatabase();
+ SQLiteDatabase db = dh.getWritableDatabase(); // TODO rework to m_writableDb etc to prevent crashes on rotate/recreate
/* db.execSQL("DELETE FROM articles"); */
@@ -369,6 +382,8 @@ public class MainActivity extends Activity {
}
}
+ m_splashDisabled = true;
+
runOnUiThread(new Runnable() {
@Override
public void run() {