Android Open Source - TorrentFreak-Reader Stack Widget Provider






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/*from www  .ja  v a  2s . 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.widgets;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.Toast;
import com.torrentfreak.reader.free.R;
import com.torrentfreak.reader.free.ArticleActivity;

public class StackWidgetProvider extends AppWidgetProvider {
    /**
     * The extra key used to pass the articles URL to the activity.
     */
    public static final String ACTION_VIEW =
        "com.torrentfreak.reader.free.widgets.StackWidgetProvider.VIEW_ACTION";

    /**
     * The extra key used to inform the activity whether or not it has a parent.
     */
    public static final String EXTRA_URL =
        "com.torrentfreak.reader.free.widgets.StackWidgetProvider.URL";

    @Override
    public void onReceive(final Context context, final Intent intent) {
        // determine whether the received intent is the view action
        if (intent.getAction().equals(ACTION_VIEW)) {
            // retrieve the article URL
            final String url = intent.getStringExtra(EXTRA_URL);

            if (url != null) {
                // create an intent to view the selected article, passing the articles URL
                final Intent viewIntent = new Intent();
                viewIntent.setClass(context, ArticleActivity.class);
                viewIntent.putExtra(ArticleActivity.EXTRA_URL, url);
                viewIntent.putExtra(ArticleActivity.EXTRA_SINGLE_ACTIVITY, true);
                viewIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                // start the view article activity
                context.startActivity(viewIntent);
            }
        }

        super.onReceive(context, intent);
    }

    @Override
    public void onUpdate(final Context context, final AppWidgetManager appWidgetManager,
        final int[] appWidgetIds) {
        for (int i = 0; i < appWidgetIds.length; i++) {
            // create the intent to create the widget service passing the widget ID
            final Intent intent = new Intent(context, StackWidgetService.class);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
            intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));

            // create the remove view for the widget service
            final RemoteViews remoteView = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout);
            remoteView.setRemoteAdapter(appWidgetIds[i], R.id.stack_view, intent);
            remoteView.setEmptyView(R.id.stack_view, R.id.empty_view);

            // create the view intent for fill-in intents to derive from
            final Intent viewIntent = new Intent(context, StackWidgetProvider.class);
            viewIntent.setAction(StackWidgetProvider.ACTION_VIEW);
            viewIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
            final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, viewIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT);
            remoteView.setPendingIntentTemplate(R.id.stack_view, pendingIntent);

            appWidgetManager.updateAppWidget(appWidgetIds[i], remoteView);
        }

        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

    public static String getSharedPreferencesNameForWidget(final int widgetId) {
        return "widget_preferences_" + widgetId;
    }
}




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