Android Open Source - TorrentFreak-Reader Settings Activity






From Project

Back to project page TorrentFreak-Reader.

License

The source code is released under:

GNU General Public License

If you think the Android project TorrentFreak-Reader listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 Jack Wakefield/*  w w  w. jav a  2 s .  c  o m*/
 *
 * This file is part of TorrentFreak Reader.
 *
 * TorrentFreak Reader is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * TorrentFreak Reader is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with TorrentFreak Reader.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.torrentfreak.reader.free;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.MenuItem;
import com.github.rtyley.android.sherlock.roboguice.activity.RoboSherlockPreferenceActivity;
import com.google.inject.Inject;
import com.torrentfreak.reader.free.articles.ArticleStorage;
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.Style;

public class SettingsActivity extends RoboSherlockPreferenceActivity {
    /**
     * The activity result used to inform the parent activity the articles have been invalidated.
     */
    public static final int RESULT_ARTICLES_INVALIDATED = 1;

    /**
     * The settings key used when determining whether the user wishes to be prompted when exiting
     * the application.
     */
    public static final String SETTING_CONFIRM_EXIT = "confirm_exit";

    /**
     * The settings key used when determining whether the user wishes for articles to be marked
     * as read once they've been viewed.
     */
    public static final String SETTING_MARK_AS_READ = "mark_as_read";

    /**
     * The settings key used to clear the article history.
     */
    public static final String SETTING_CLEAR_ARTICLE_HISTORY = "clear_article_history";

    /**
     * The settings key used to clear the saved articles from the article storage database.
     */
    public static final String SETTING_CLEAR_SAVED_ARTICLES = "clear_saved_articles";

    /**
     * The settings key used to clear the WebKit asset cache.
     */
    public static final String SETTING_CLEAR_WEB_CACHE = "clear_web_cache";

    /**
     * The article storage database.
     */
    @Inject
    private ArticleStorage articleStorage;

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // manually set the window background to the background pattern as no layout is set
        getWindow().setBackgroundDrawableResource(R.drawable.background_pattern);

        // setup the action bar, enabling the home button and setting the spaced logo
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setIcon(R.drawable.spaced_logo);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setTitle(R.string.settings_activity_title);

        // add the preference resource to display the application settings
        addPreferencesFromResource(R.xml.preferences);

        // retrieve the individual button preferences and set the related click listeners
        final Preference clearArticleHistory = findPreference(SETTING_CLEAR_ARTICLE_HISTORY);
        clearArticleHistory.setOnPreferenceClickListener(onClearArticleHistoryClicked);

        final Preference clearArticlesCache = findPreference(SETTING_CLEAR_SAVED_ARTICLES);
        clearArticlesCache.setOnPreferenceClickListener(onClearArticlesCacheClicked);

        final Preference clearWebCache = findPreference(SETTING_CLEAR_WEB_CACHE);
        clearWebCache.setOnPreferenceClickListener(onClearWebCacheClicked);
    }

    @Override
    protected void onDestroy() {
        // clear the crouton notifications from the activity
        Crouton.clearCroutonsForActivity(this);

        super.onDestroy();
    }

    @Override
    public boolean onOptionsItemSelected(final MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // cloes the activity when the home button is pressed
                finish();
                return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private final OnPreferenceClickListener onClearArticleHistoryClicked
        = new OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(final Preference preference) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this)
                .setTitle(R.string.clear_article_history_title)
                .setMessage(R.string.clear_article_history_message)
                .setNegativeButton(R.string.clear_article_history_negative, null)
                .setPositiveButton(R.string.clear_article_history_positive,
                    new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, final int which) {
                        // reset the read status on every stored article effectively clearing the
                        // article history
                        articleStorage.setAllArticlesAsUnread();

                        final Style style = new Style.Builder().setDuration(2000)
                            .setBackgroundColorValue(getResources().getColor(R.color.crouton_info))
                            .setHeight(LayoutParams.WRAP_CONTENT).build();

                        // display a notification informing the user the article history has been
                        // cleared
                        Crouton.makeText(SettingsActivity.this, R.string.article_history_cleared,
                            style).show();

                        // set the activity result information the parent activity the articles are
                        // invalidated and must be refreshed if being displayed
                        setResult(RESULT_ARTICLES_INVALIDATED);
                    }
                }
            );

            final AlertDialog dialog = builder.create();
            dialog.show();

            return true;
        }
    };

    private final OnPreferenceClickListener onClearArticlesCacheClicked
        = new OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(final Preference preference) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this)
                .setTitle(R.string.clear_article_database_title)
                .setMessage(R.string.clear_article_database_message)
                .setNegativeButton(R.string.clear_article_database_negative, null)
                .setPositiveButton(R.string.clear_article_database_positive,
                    new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, final int which) {
                        // remove all articles from the article storage database
                        articleStorage.removeAllArticles();

                        final Style style = new Style.Builder().setDuration(2000)
                            .setBackgroundColorValue(getResources().getColor(R.color.crouton_info))
                            .setHeight(LayoutParams.WRAP_CONTENT).build();

                        // display a notification informing the user the article database has been
                        // cleared
                        Crouton.makeText(SettingsActivity.this, R.string.article_database_cleared,
                            style).show();

                        // set the activity result information the parent activity the articles are
                        // invalidated and must be refreshed if being displayed
                        setResult(RESULT_ARTICLES_INVALIDATED);
                    }
                }
            );

            final AlertDialog dialog = builder.create();
            dialog.show();

            return true;
        }
    };

    private final OnPreferenceClickListener onClearWebCacheClicked =
        new OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(final Preference preference) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this)
                .setTitle(R.string.clear_web_cache_title)
                .setMessage(R.string.clear_web_cache_message)
                .setNegativeButton(R.string.clear_web_cache_negative, null)
                .setPositiveButton(R.string.clear_web_cache_positive,
                    new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, final int which) {
                        final WebView webView = new WebView(SettingsActivity.this);
                        webView.clearCache(true);

                        final Style style = new Style.Builder().setDuration(2000)
                            .setBackgroundColorValue(getResources().getColor(R.color.crouton_info))
                            .setHeight(LayoutParams.WRAP_CONTENT).build();

                        // display a notification informing the user the WebKit asset  cache has
                        // been cleared
                        Crouton.makeText(SettingsActivity.this, R.string.web_cache_cleared, style)
                            .show();
                    }
                }
            );

            final AlertDialog dialog = builder.create();
            dialog.show();

            return true;
        }
    };
}




Java Source Code List

com.slidingmenu.lib.CanvasTransformerBuilder.java
com.slidingmenu.lib.CustomViewAbove.java
com.slidingmenu.lib.CustomViewBehind.java
com.slidingmenu.lib.MenuInterface.java
com.slidingmenu.lib.SlidingMenu.java
com.slidingmenu.lib.app.SlidingActivityBase.java
com.slidingmenu.lib.app.SlidingActivityHelper.java
com.slidingmenu.lib.app.SlidingActivity.java
com.slidingmenu.lib.app.SlidingFragmentActivity.java
com.slidingmenu.lib.app.SlidingListActivity.java
com.slidingmenu.lib.app.SlidingPreferenceActivity.java
com.torrentfreak.reader.free.AboutActivity.java
com.torrentfreak.reader.free.ArticleActivity.java
com.torrentfreak.reader.free.LicensesActivity.java
com.torrentfreak.reader.free.MainActivity.java
com.torrentfreak.reader.free.SettingsActivity.java
com.torrentfreak.reader.free.adapters.ArticleFragmentAdapter.java
com.torrentfreak.reader.free.adapters.ArticleListAdapter.java
com.torrentfreak.reader.free.adapters.LicenseFragmentAdapter.java
com.torrentfreak.reader.free.adapters.SlidingMenuAdapter.java
com.torrentfreak.reader.free.adapters.items.LicenseItem.java
com.torrentfreak.reader.free.adapters.items.SlidingMenuItem.java
com.torrentfreak.reader.free.adapters.views.ArticleItemView.java
com.torrentfreak.reader.free.adapters.views.SlidingMenuItemView.java
com.torrentfreak.reader.free.articles.ArticleItem.java
com.torrentfreak.reader.free.articles.ArticleStorage.java
com.torrentfreak.reader.free.articles.providers.ArticleContentProvider.java
com.torrentfreak.reader.free.articles.providers.ArticleListProvider.java
com.torrentfreak.reader.free.articles.providers.CategoryListProvider.java
com.torrentfreak.reader.free.articles.providers.LatestNewsListProvider.java
com.torrentfreak.reader.free.articles.providers.exceptions.ArticleScrapeException.java
com.torrentfreak.reader.free.articles.tasks.ArticleContentHttpTask.java
com.torrentfreak.reader.free.categories.CategoryItem.java
com.torrentfreak.reader.free.categories.CategoryManager.java
com.torrentfreak.reader.free.categories.CategoryType.java
com.torrentfreak.reader.free.fragments.ArticleCommentsFragment.java
com.torrentfreak.reader.free.fragments.ArticleContentFragment.java
com.torrentfreak.reader.free.fragments.ArticleListFragment.java
com.torrentfreak.reader.free.fragments.LicenseFragment.java
com.torrentfreak.reader.free.fragments.SlidingMenuFragment.java
com.torrentfreak.reader.free.helpers.FontHelper.java
com.torrentfreak.reader.free.helpers.WeakReferenceHelper.java
com.torrentfreak.reader.free.widgets.StackWidgetActivity.java
com.torrentfreak.reader.free.widgets.StackWidgetProvider.java
com.torrentfreak.reader.free.widgets.StackWidgetService.java
com.torrentfreak.reader.free.widgets.items.StackWidgetItem.java