diff options
Diffstat (limited to 'src/org/fox/ttrss/FeedsActivity.java')
| -rw-r--r-- | src/org/fox/ttrss/FeedsActivity.java | 509 |
1 files changed, 0 insertions, 509 deletions
diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java deleted file mode 100644 index 90e2c118..00000000 --- a/src/org/fox/ttrss/FeedsActivity.java +++ /dev/null @@ -1,509 +0,0 @@ -package org.fox.ttrss; - - -import java.util.Date; -import java.util.HashMap; - -import org.fox.ttrss.types.Article; -import org.fox.ttrss.types.ArticleList; -import org.fox.ttrss.types.Feed; -import org.fox.ttrss.types.FeedCategory; -import org.fox.ttrss.util.AppRater; - -import android.animation.ObjectAnimator; -import android.annotation.SuppressLint; -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.os.Handler; -import android.preference.PreferenceManager; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.util.Log; -import android.util.TypedValue; -import android.view.MenuItem; -import android.view.Window; -import android.view.WindowManager; -import android.widget.LinearLayout; - -import com.google.gson.JsonElement; -import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; -import com.readystatesoftware.systembartint.SystemBarTintManager; - -public class FeedsActivity extends OnlineActivity implements HeadlinesEventListener { - private final String TAG = this.getClass().getSimpleName(); - - private static final int HEADLINES_REQUEST = 1; - - protected SharedPreferences m_prefs; - protected long m_lastRefresh = 0; - - private boolean m_actionbarUpEnabled = false; - private int m_actionbarRevertDepth = 0; - private SlidingMenu m_slidingMenu; - private boolean m_feedIsSelected = false; - private boolean m_feedWasSelected = false; - - @SuppressLint("NewApi") - @Override - public void onCreate(Bundle savedInstanceState) { - m_prefs = PreferenceManager - .getDefaultSharedPreferences(getApplicationContext()); - - setAppTheme(m_prefs); - - super.onCreate(savedInstanceState); - - setContentView(R.layout.headlines); - - setStatusBarTint(); - - setSmallScreen(findViewById(R.id.sw600dp_anchor) == null && - findViewById(R.id.sw600dp_port_anchor) == null); - - GlobalState.getInstance().load(savedInstanceState); - - if (isSmallScreen() || findViewById(R.id.sw600dp_port_anchor) != null) { - m_slidingMenu = new SlidingMenu(this); - -/* if (findViewById(R.id.sw600dp_port_anchor) != null) { - m_slidingMenu.setBehindWidth(getScreenWidthInPixel() * 2/3); - } */ - - m_slidingMenu.setMode(SlidingMenu.LEFT); - m_slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); - m_slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); - m_slidingMenu.setMenu(R.layout.feeds); - m_slidingMenu.setSlidingEnabled(true); - - m_slidingMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() { - - @Override - public void onClosed() { - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - m_actionbarUpEnabled = true; - m_feedIsSelected = true; - - initMenu(); - } - }); - - m_slidingMenu.setOnOpenedListener(new SlidingMenu.OnOpenedListener() { - - @Override - public void onOpened() { - if (m_actionbarRevertDepth == 0) { - m_actionbarUpEnabled = false; - getSupportActionBar().setDisplayHomeAsUpEnabled(false); - refresh(false); - } - - m_feedIsSelected = false; - initMenu(); - } - }); - } - - if (savedInstanceState == null) { - if (m_slidingMenu != null) - m_slidingMenu.showMenu(); - - final Intent i = getIntent(); - boolean shortcutMode = i.getBooleanExtra("shortcut_mode", false); - - Log.d(TAG, "is_shortcut_mode: " + shortcutMode); - - if (shortcutMode) { - LoginRequest lr = new LoginRequest(this, false, new OnLoginFinishedListener() { - - @Override - public void OnLoginSuccess() { - int feedId = i.getIntExtra("feed_id", 0); - boolean isCat = i.getBooleanExtra("feed_is_cat", false); - String feedTitle = i.getStringExtra("feed_title"); - - Feed tmpFeed = new Feed(feedId, feedTitle, isCat); - - onFeedSelected(tmpFeed); - } - - @Override - public void OnLoginFailed() { - login(); - } - }); - - HashMap<String, String> map = new HashMap<String, String>() { - { - put("op", "login"); - put("user", m_prefs.getString("login", "").trim()); - put("password", m_prefs.getString("password", "").trim()); - } - }; - - lr.execute(map); - } - - //m_pullToRefreshAttacher.setRefreshing(true); - - FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - - if (m_prefs.getBoolean("enable_cats", false)) { - ft.replace(R.id.feeds_fragment, new FeedCategoriesFragment(), FRAG_CATS); - } else { - ft.replace(R.id.feeds_fragment, new FeedsFragment(), FRAG_FEEDS); - } - - ft.commit(); - - AppRater.appLaunched(this); - checkTrial(true); - - } else { // savedInstanceState != null - m_actionbarUpEnabled = savedInstanceState.getBoolean("actionbarUpEnabled"); - m_actionbarRevertDepth = savedInstanceState.getInt("actionbarRevertDepth"); - m_feedIsSelected = savedInstanceState.getBoolean("feedIsSelected"); - m_feedWasSelected = savedInstanceState.getBoolean("feedWasSelected"); - - if (findViewById(R.id.sw600dp_port_anchor) != null && m_feedWasSelected && m_slidingMenu != null) { - m_slidingMenu.setBehindWidth(getScreenWidthInPixel() * 2/3); - } - - if (m_slidingMenu != null && m_feedIsSelected == false) { - m_slidingMenu.showMenu(); - } else if (m_slidingMenu != null) { - m_actionbarUpEnabled = true; - } else { - m_actionbarUpEnabled = m_actionbarRevertDepth > 0; - } - - if (m_actionbarUpEnabled) { - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - } - - if (!isSmallScreen()) { - // temporary hack because FeedsActivity doesn't track whether active feed is open - LinearLayout container = (LinearLayout) findViewById(R.id.fragment_container); - - if (container != null) - container.setWeightSum(3f); - } - - } - - /* if (!isCompatMode() && !isSmallScreen()) { - ((ViewGroup)findViewById(R.id.headlines_fragment)).setLayoutTransition(new LayoutTransition()); - ((ViewGroup)findViewById(R.id.feeds_fragment)).setLayoutTransition(new LayoutTransition()); - } */ - - } - - @Override - protected void initMenu() { - super.initMenu(); - - if (m_menu != null && getSessionId() != null) { - Fragment ff = getSupportFragmentManager().findFragmentByTag(FRAG_FEEDS); - Fragment cf = getSupportFragmentManager().findFragmentByTag(FRAG_CATS); - HeadlinesFragment hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); - - if (m_slidingMenu != null) { - m_menu.setGroupVisible(R.id.menu_group_feeds, m_slidingMenu.isMenuShowing()); - m_menu.setGroupVisible(R.id.menu_group_headlines, hf != null && hf.isAdded() && !m_slidingMenu.isMenuShowing()); - } else { - m_menu.setGroupVisible(R.id.menu_group_feeds, (ff != null && ff.isAdded()) || (cf != null && cf.isAdded())); - m_menu.setGroupVisible(R.id.menu_group_headlines, hf != null && hf.isAdded()); - - m_menu.findItem(R.id.update_headlines).setVisible(false); - } - - m_menu.findItem(R.id.headlines_toggle_sidebar).setVisible(false); - - MenuItem item = m_menu.findItem(R.id.show_feeds); - - if (getUnreadOnly()) { - item.setTitle(R.string.menu_all_feeds); - } else { - item.setTitle(R.string.menu_unread_feeds); - } - } - } - - public void onFeedSelected(Feed feed) { - GlobalState.getInstance().m_loadedArticles.clear(); - //m_pullToRefreshAttacher.setRefreshing(true); - - FragmentTransaction ft = getSupportFragmentManager() - .beginTransaction(); - - ft.replace(R.id.headlines_fragment, new LoadingFragment(), null); - ft.commit(); - - if (!isCompatMode() && !isSmallScreen()) { - LinearLayout container = (LinearLayout) findViewById(R.id.fragment_container); - if (container != null) { - float wSum = container.getWeightSum(); - if (wSum <= 2.0f) { - ObjectAnimator anim = ObjectAnimator.ofFloat(container, "weightSum", wSum, 3.0f); - anim.setDuration(200); - anim.start(); - } - } - } - - final Feed fFeed = feed; - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - FragmentTransaction ft = getSupportFragmentManager() - .beginTransaction(); - - HeadlinesFragment hf = new HeadlinesFragment(); - hf.initialize(fFeed); - ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES); - - ft.commit(); - - m_feedIsSelected = true; - m_feedWasSelected = true; - - if (m_slidingMenu != null) { - if (findViewById(R.id.sw600dp_port_anchor) != null) { - m_slidingMenu.setBehindWidth(getScreenWidthInPixel() * 2/3); - } - - m_slidingMenu.showContent(); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - m_actionbarUpEnabled = true; - - } - } - }, 10); - - - Date date = new Date(); - - if (date.getTime() - m_lastRefresh > 10000) { - m_lastRefresh = date.getTime(); - refresh(false); - } - } - - public void onCatSelected(FeedCategory cat, boolean openAsFeed) { - FeedCategoriesFragment fc = (FeedCategoriesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_CATS); - - //m_pullToRefreshAttacher.setRefreshing(true); - - if (!openAsFeed) { - - if (fc != null) { - fc.setSelectedCategory(null); - } - - FragmentTransaction ft = getSupportFragmentManager() - .beginTransaction(); - - FeedsFragment ff = new FeedsFragment(); - ff.initialize(cat); - ft.replace(R.id.feeds_fragment, ff, FRAG_FEEDS); - - ft.addToBackStack(null); - ft.commit(); - - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - m_actionbarUpEnabled = true; - m_actionbarRevertDepth = m_actionbarRevertDepth + 1; - - } else { - - if (fc != null) { - fc.setSelectedCategory(cat); - } - - Feed feed = new Feed(cat.id, cat.title, true); - onFeedSelected(feed); - } - } - - public void onCatSelected(FeedCategory cat) { - onCatSelected(cat, m_prefs.getBoolean("browse_cats_like_feeds", false)); - } - - @Override - public void onBackPressed() { - if (m_actionbarRevertDepth > 0) { - - if (m_feedIsSelected && m_slidingMenu != null && !m_slidingMenu.isMenuShowing()) { - m_slidingMenu.showMenu(); - } else { - m_actionbarRevertDepth = m_actionbarRevertDepth - 1; - m_actionbarUpEnabled = m_actionbarRevertDepth > 0; - getSupportActionBar().setDisplayHomeAsUpEnabled(m_actionbarUpEnabled); - - onBackPressed(); - } - } else if (m_slidingMenu != null && !m_slidingMenu.isMenuShowing()) { - m_slidingMenu.showMenu(); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - if (m_actionbarUpEnabled) - onBackPressed(); - return true; - case R.id.show_feeds: - setUnreadOnly(!getUnreadOnly()); - initMenu(); - refresh(); - return true; - case R.id.update_feeds: - //m_pullToRefreshAttacher.setRefreshing(true); - refresh(); - return true; - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } - - @Override - protected void loginSuccess(boolean refresh) { - setLoadingStatus(R.string.blank, false); - //findViewById(R.id.loading_container).setVisibility(View.GONE); - initMenu(); - - if (refresh) refresh(); - } - - @Override - public void onSaveInstanceState(Bundle out) { - super.onSaveInstanceState(out); - - out.putBoolean("actionbarUpEnabled", m_actionbarUpEnabled); - out.putInt("actionbarRevertDepth", m_actionbarRevertDepth); - out.putBoolean("feedIsSelected", m_feedIsSelected); - out.putBoolean("feedWasSelected", m_feedWasSelected); - - //if (m_slidingMenu != null ) - // out.putBoolean("slidingMenuVisible", m_slidingMenu.isMenuShowing()); - - GlobalState.getInstance().save(out); - } - - @Override - public void onResume() { - super.onResume(); - initMenu(); - } - - @Override - public void onArticleListSelectionChange(ArticleList m_selectedArticles) { - initMenu(); - } - - public void openFeedArticles(Feed feed) { - GlobalState.getInstance().m_loadedArticles.clear(); - - Intent intent = new Intent(FeedsActivity.this, HeadlinesActivity.class); - intent.putExtra("feed", feed); - intent.putExtra("article", (Article)null); - intent.putExtra("searchQuery", (String)null); - - startActivityForResult(intent, HEADLINES_REQUEST); - overridePendingTransition(R.anim.right_slide_in, 0); - } - - public void onArticleSelected(Article article, boolean open) { - if (article.unread) { - article.unread = false; - saveArticleUnread(article); - } - - if (open) { - HeadlinesFragment hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); - - Intent intent = new Intent(FeedsActivity.this, HeadlinesActivity.class); - intent.putExtra("feed", hf.getFeed()); - intent.putExtra("article", article); - intent.putExtra("searchQuery", hf.getSearchQuery()); - - startActivityForResult(intent, HEADLINES_REQUEST); - overridePendingTransition(R.anim.right_slide_in, 0); - - } else { - initMenu(); - } - } - - @Override - public void onArticleSelected(Article article) { - onArticleSelected(article, true); - } - - public void catchupFeed(final Feed feed) { - super.catchupFeed(feed); - refresh(); - } - - @Override - public void onHeadlinesLoaded(boolean appended) { - // TODO Auto-generated method stub - - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == HEADLINES_REQUEST) { - GlobalState.getInstance().m_activeArticle = null; - } - } - - public void createFeedShortcut(Feed feed) { - final Intent shortcutIntent = new Intent(this, FeedsActivity.class); - shortcutIntent.putExtra("feed_id", feed.id); - shortcutIntent.putExtra("feed_is_cat", feed.is_cat); - shortcutIntent.putExtra("feed_title", feed.title); - shortcutIntent.putExtra("shortcut_mode", true); - - Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); - - intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, feed.title); - intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); - intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon)); - intent.putExtra("duplicate", false); - - sendBroadcast(intent); - - toast(R.string.shortcut_has_been_placed_on_the_home_screen); - } - - public void createCategoryShortcut(FeedCategory cat) { - createFeedShortcut(new Feed(cat.id, cat.title, true)); - } - - public void unsubscribeFeed(final Feed feed) { - ApiRequest req = new ApiRequest(getApplicationContext()) { - protected void onPostExecute(JsonElement result) { - refresh(); - } - }; - - @SuppressWarnings("serial") - HashMap<String, String> map = new HashMap<String, String>() { - { - put("sid", getSessionId()); - put("op", "unsubscribeFeed"); - put("feed_id", String.valueOf(feed.id)); - } - }; - - req.execute(map); - - } -} |