From 0e58bef54c6637591d8ad4be23ee9e1ceb5b1e44 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 10 Sep 2011 12:16:59 +0400 Subject: fix some rotating issues --- src/org/fox/ttrss/ArticleFragment.java | 10 ++++++--- src/org/fox/ttrss/HeadlinesFragment.java | 11 ++++++++++ src/org/fox/ttrss/MainActivity.java | 35 +++++++++++++++++++++++--------- 3 files changed, 43 insertions(+), 13 deletions(-) (limited to 'src') 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
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() { -- cgit v1.2.3-54-g00ecf