diff options
Diffstat (limited to 'src/org/fox/ttrss/offline/OfflineActivity.java')
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineActivity.java | 197 |
1 files changed, 122 insertions, 75 deletions
diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java index 8849d67e..dfda5d5c 100644 --- a/src/org/fox/ttrss/offline/OfflineActivity.java +++ b/src/org/fox/ttrss/offline/OfflineActivity.java @@ -3,23 +3,14 @@ package org.fox.ttrss.offline; import org.fox.ttrss.DummyFragment; import org.fox.ttrss.MainActivity; import org.fox.ttrss.OnlineServices; -import org.fox.ttrss.PreferencesActivity; -import org.fox.ttrss.R; import org.fox.ttrss.OnlineServices.RelativeArticle; -import org.fox.ttrss.R.anim; -import org.fox.ttrss.R.id; -import org.fox.ttrss.R.layout; -import org.fox.ttrss.R.menu; -import org.fox.ttrss.R.string; -import org.fox.ttrss.R.style; +import org.fox.ttrss.PreferencesActivity; import org.fox.ttrss.util.DatabaseHelper; +import org.fox.ttrss.R; import android.animation.LayoutTransition; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; -import android.app.Fragment; -import android.app.FragmentTransaction; import android.app.NotificationManager; import android.content.Context; import android.content.DialogInterface; @@ -33,6 +24,9 @@ import android.database.sqlite.SQLiteStatement; import android.os.Bundle; import android.preference.PreferenceManager; import android.provider.BaseColumns; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.ActionMode; import android.view.KeyEvent; @@ -48,7 +42,7 @@ import android.widget.SearchView; import android.widget.TextView; import android.widget.Toast; -public class OfflineActivity extends Activity implements +public class OfflineActivity extends FragmentActivity implements OfflineServices { private final String TAG = this.getClass().getSimpleName(); @@ -58,6 +52,7 @@ public class OfflineActivity extends Activity implements private boolean m_smallScreenMode; private boolean m_unreadOnly = true; private boolean m_unreadArticlesOnly = true; + private boolean m_compatMode = false; private boolean m_enableCats = false; private int m_activeFeedId = 0; @@ -110,6 +105,8 @@ public class OfflineActivity extends Activity implements m_prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); + m_compatMode = android.os.Build.VERSION.SDK_INT <= 10; + if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) { setTheme(R.style.DarkTheme); } else { @@ -133,21 +130,24 @@ public class OfflineActivity extends Activity implements m_enableCats = m_prefs.getBoolean("enable_cats", false); - m_smallScreenMode = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) != + m_smallScreenMode = m_compatMode || (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) != Configuration.SCREENLAYOUT_SIZE_XLARGE; setContentView(R.layout.main); Log.d(TAG, "m_smallScreenMode=" + m_smallScreenMode); + Log.d(TAG, "m_compatMode=" + m_compatMode); - if (android.os.Build.VERSION.SDK_INT < 14 /* || android.os.Build.VERSION.SDK_INT == 15 */) { - if (!m_smallScreenMode) { - LayoutTransition transitioner = new LayoutTransition(); - ((ViewGroup) findViewById(R.id.main)).setLayoutTransition(transitioner); + if (!m_compatMode) { + if (android.os.Build.VERSION.SDK_INT < 14 /* || android.os.Build.VERSION.SDK_INT == 15 */) { + if (!m_smallScreenMode) { + LayoutTransition transitioner = new LayoutTransition(); + ((ViewGroup) findViewById(R.id.main)).setLayoutTransition(transitioner); + } } + + m_headlinesActionModeCallback = new HeadlinesActionModeCallback(); } - - m_headlinesActionModeCallback = new HeadlinesActionModeCallback(); initMainMenu(); @@ -196,7 +196,7 @@ public class OfflineActivity extends Activity implements } if (m_activeFeedId == 0) { - FragmentTransaction ft = getFragmentManager() + FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); OfflineFeedsFragment frag = new OfflineFeedsFragment(); ft.replace(R.id.feeds_fragment, frag); @@ -343,14 +343,14 @@ public class OfflineActivity extends Activity implements // } m_activeFeedId = 0; - OfflineFeedsFragment ff = (OfflineFeedsFragment) getFragmentManager() + OfflineFeedsFragment ff = (OfflineFeedsFragment) getSupportFragmentManager() .findFragmentById(R.id.feeds_fragment); if (ff != null) { ff.setSelectedFeedId(0); } - FragmentTransaction ft = getFragmentManager().beginTransaction(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.headlines_fragment, new OfflineHeadlinesFragment()); ft.commit(); @@ -367,14 +367,14 @@ public class OfflineActivity extends Activity implements findViewById(R.id.headlines_fragment).setVisibility(View.INVISIBLE); m_activeFeedId = 0; - OfflineFeedsFragment ff = (OfflineFeedsFragment) getFragmentManager() + OfflineFeedsFragment ff = (OfflineFeedsFragment) getSupportFragmentManager() .findFragmentById(R.id.feeds_fragment); if (ff != null) { ff.setSelectedFeedId(0); } - FragmentTransaction ft = getFragmentManager().beginTransaction(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.headlines_fragment, new OfflineHeadlinesFragment()); ft.commit(); @@ -472,7 +472,7 @@ public class OfflineActivity extends Activity implements } private void refreshHeadlines() { - OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getFragmentManager() + OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); if (ohf != null) { @@ -482,13 +482,51 @@ public class OfflineActivity extends Activity implements @Override public boolean onOptionsItemSelected(MenuItem item) { - final OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getFragmentManager() + final OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); switch (item.getItemId()) { case android.R.id.home: goBack(false); return true; + case R.id.search: + if (ohf != null && m_compatMode) { + Dialog dialog = new Dialog(this); + + final EditText edit = new EditText(this); + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.search) + .setPositiveButton(getString(R.string.search), + new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + + String query = edit.getText().toString().trim(); + + ohf.setSearchQuery(query); + + } + }) + .setNegativeButton(getString(R.string.cancel), + new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + + // + + } + }).setView(edit); + + dialog = builder.create(); + dialog.show(); + } + + return true; case R.id.preferences: Intent intent = new Intent(this, PreferencesActivity.class); startActivityForResult(intent, 0); @@ -657,7 +695,7 @@ public class OfflineActivity extends Activity implements } private void refreshFeeds() { - OfflineFeedsFragment frag = (OfflineFeedsFragment) getFragmentManager() + OfflineFeedsFragment frag = (OfflineFeedsFragment) getSupportFragmentManager() .findFragmentById(R.id.feeds_fragment); if (frag != null) { @@ -685,7 +723,7 @@ public class OfflineActivity extends Activity implements m_selectedArticleId = 0; - FragmentTransaction ft = getFragmentManager().beginTransaction(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.article_fragment, new DummyFragment()); ft.commit(); @@ -714,8 +752,12 @@ public class OfflineActivity extends Activity implements m_menu.setGroupVisible(R.id.menu_group_article, false); if (numSelected != 0) { - if (m_headlinesActionMode == null) - m_headlinesActionMode = startActionMode(m_headlinesActionModeCallback); + if (m_compatMode) { + m_menu.setGroupVisible(R.id.menu_group_headlines_selection, true); + } else { + if (m_headlinesActionMode == null) + m_headlinesActionMode = startActionMode(m_headlinesActionModeCallback); + } } else if (m_selectedArticleId != 0) { m_menu.setGroupVisible(R.id.menu_group_article, true); } else if (m_activeFeedId != 0) { @@ -723,38 +765,40 @@ public class OfflineActivity extends Activity implements MenuItem search = m_menu.findItem(R.id.search); - SearchView searchView = (SearchView) search.getActionView(); - searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { - private String query = ""; - - @Override - public boolean onQueryTextSubmit(String query) { - OfflineHeadlinesFragment frag = (OfflineHeadlinesFragment) getFragmentManager() - .findFragmentById(R.id.headlines_fragment); - - if (frag != null) { - frag.setSearchQuery(query); - this.query = query; - } + if (!m_compatMode) { + SearchView searchView = (SearchView) search.getActionView(); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + private String query = ""; - return false; - } - - @Override - public boolean onQueryTextChange(String newText) { - if (newText.equals("") && !newText.equals(this.query)) { - OfflineHeadlinesFragment frag = (OfflineHeadlinesFragment) getFragmentManager() + @Override + public boolean onQueryTextSubmit(String query) { + OfflineHeadlinesFragment frag = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); if (frag != null) { - frag.setSearchQuery(newText); - this.query = newText; + frag.setSearchQuery(query); + this.query = query; } + + return false; } - return false; - } - }); + @Override + public boolean onQueryTextChange(String newText) { + if (newText.equals("") && !newText.equals(this.query)) { + OfflineHeadlinesFragment frag = (OfflineHeadlinesFragment) getSupportFragmentManager() + .findFragmentById(R.id.headlines_fragment); + + if (frag != null) { + frag.setSearchQuery(newText); + this.query = newText; + } + } + + return false; + } + }); + } } else { m_menu.setGroupVisible(R.id.menu_group_feeds, true); @@ -764,20 +808,23 @@ public class OfflineActivity extends Activity implements m_headlinesActionMode.finish(); } - if (m_activeFeedId != 0) { - Cursor feed = getFeedById(m_activeFeedId); + if (!m_compatMode) { - if (feed != null) { - getActionBar().setTitle(feed.getString(feed.getColumnIndex("title"))); + if (m_activeFeedId != 0) { + Cursor feed = getFeedById(m_activeFeedId); + + if (feed != null) { + getActionBar().setTitle(feed.getString(feed.getColumnIndex("title"))); + } + } else { + getActionBar().setTitle(R.string.app_name); + } + + if (!m_smallScreenMode) { + getActionBar().setDisplayHomeAsUpEnabled(m_selectedArticleId != 0); + } else { + getActionBar().setDisplayHomeAsUpEnabled(m_selectedArticleId != 0 || m_activeFeedId != 0); } - } else { - getActionBar().setTitle(R.string.app_name); - } - - if (!m_smallScreenMode) { - getActionBar().setDisplayHomeAsUpEnabled(m_selectedArticleId != 0); - } else { - getActionBar().setDisplayHomeAsUpEnabled(m_selectedArticleId != 0 || m_activeFeedId != 0); } } } @@ -807,9 +854,9 @@ public class OfflineActivity extends Activity implements AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); - OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getFragmentManager() + OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); - OfflineFeedsFragment ff = (OfflineFeedsFragment) getFragmentManager() + OfflineFeedsFragment ff = (OfflineFeedsFragment) getSupportFragmentManager() .findFragmentById(R.id.feeds_fragment); switch (item.getItemId()) { @@ -972,7 +1019,7 @@ public class OfflineActivity extends Activity implements case KeyEvent.KEYCODE_VOLUME_DOWN: if (action == KeyEvent.ACTION_DOWN) { - OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getFragmentManager() + OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); int nextId = getRelativeArticleId(m_selectedArticleId, @@ -1001,7 +1048,7 @@ public class OfflineActivity extends Activity implements case KeyEvent.KEYCODE_VOLUME_UP: if (action == KeyEvent.ACTION_UP) { - OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getFragmentManager() + OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); int prevId = getRelativeArticleId(m_selectedArticleId, @@ -1104,13 +1151,13 @@ public class OfflineActivity extends Activity implements if (m_menu != null) { MenuItem search = m_menu.findItem(R.id.search); - if (search != null) { + if (search != null && !m_compatMode) { SearchView sv = (SearchView) search.getActionView(); sv.setQuery("", false); } } - FragmentTransaction ft = getFragmentManager().beginTransaction(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); OfflineHeadlinesFragment frag = new OfflineHeadlinesFragment(); ft.replace(R.id.headlines_fragment, frag); ft.commit(); @@ -1123,7 +1170,7 @@ public class OfflineActivity extends Activity implements initMainMenu(); - OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getFragmentManager() + OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); if (hf != null) { @@ -1146,7 +1193,7 @@ public class OfflineActivity extends Activity implements frag = new OfflineArticleFragment(articleId); } - FragmentTransaction ft = getFragmentManager().beginTransaction(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.article_fragment, frag); ft.commit(); |