Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eda0964c authored by Jason Asher's avatar Jason Asher
Browse files

Fixes issue 2203 and initializes RenderFX widget

Change-Id: I61a64df94e53f348f6cbb971d3e3b759fb9e08d4
parent 2240f88d
Loading
Loading
Loading
Loading
+87 −45
Original line number Diff line number Diff line
package com.cyanogenmod.cmparts.activities;

import com.cyanogenmod.cmparts.R;
import com.cyanogenmod.cmparts.provider.RenderFXWidgetProvider;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -14,6 +17,7 @@ import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.Preference.OnPreferenceClickListener;
import android.widget.RemoteViews;

public class WidgetOptionsActivity extends PreferenceActivity implements OnPreferenceChangeListener {

@@ -31,7 +35,8 @@ public class WidgetOptionsActivity extends PreferenceActivity implements OnPrefe
        Bundle extras = intent.getExtras();

        if (extras != null) {
			mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
            mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
                    AppWidgetManager.INVALID_APPWIDGET_ID);
        }

        mRenderFxPref = (ListPreference) findPreference("widget_render_effect");
@@ -60,8 +65,45 @@ public class WidgetOptionsActivity extends PreferenceActivity implements OnPrefe
        @Override
        public boolean onPreferenceClick(Preference preference) {
            Editor editor = mPreferences.edit();
			editor.putInt("widget_render_effect_" + mAppWidgetId, Integer.parseInt(mPreferences.getString("widget_render_effect", "1")));
            editor.putInt("widget_render_effect_" + mAppWidgetId,
                    Integer.parseInt(mPreferences.getString("widget_render_effect", "1")));
            editor.commit();

            Context context = getApplicationContext();
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
            Intent launchIntent = new Intent();
            launchIntent.setClass(context, RenderFXWidgetProvider.class);
            launchIntent.addCategory(Intent.CATEGORY_ALTERNATIVE);
            launchIntent.setData(Uri.parse("custom:" + mAppWidgetId + "/0"));
            PendingIntent pi = PendingIntent.getBroadcast(context, 0, launchIntent, 0);
            views.setOnClickPendingIntent(R.id.btn, pi);
            int renderFx = mPreferences.getInt("widget_render_effect_" + mAppWidgetId, 1);
            switch (renderFx) {
            case 1:
                views.setTextViewText(R.id.ind, context.getResources().getString(R.string.night));
                break;
            case 2:
                views.setTextViewText(R.id.ind, context.getResources().getString(R.string.terminal));
                break;
            case 3:
                views.setTextViewText(R.id.ind, context.getResources().getString(R.string.blue));
                break;
            case 4:
                views.setTextViewText(R.id.ind, context.getResources().getString(R.string.amber));
                break;
            case 5:
                views.setTextViewText(R.id.ind, context.getResources().getString(R.string.salmon));
                break;
            case 6:
                views.setTextViewText(R.id.ind, context.getResources().getString(R.string.fuscia));
                break;
            default:
                views.setTextViewText(R.id.ind,
                        context.getResources().getString(R.string.renderfx_temp));
            }
            final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
            appWidgetManager.updateAppWidget(mAppWidgetId, views);

            Intent resultValue = new Intent();
            resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
            setResult(RESULT_OK, resultValue);
+132 −135
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@ public class RenderFXWidgetProvider extends AppWidgetProvider {
    private static RenderFXWidgetProvider sInstance;
    public SharedPreferences mPrefs;

	static final ComponentName THIS_APPWIDGET = new ComponentName("com.cyanogenmod.cmparts", "com.cyanogenmod.cmparts.provider.RenderFXWidgetProvider");
    static final ComponentName THIS_APPWIDGET = new ComponentName("com.cyanogenmod.cmparts",
            "com.cyanogenmod.cmparts.provider.RenderFXWidgetProvider");

    static synchronized RenderFXWidgetProvider getInstance() {
        if (sInstance == null) {
@@ -34,18 +35,12 @@ public class RenderFXWidgetProvider extends AppWidgetProvider {
    }

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
		final int N = appWidgetIds.length;		
		
		for (int i = 0; i < N; i++) {
			int appWidgetId = appWidgetIds[i];
			RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
			views.setOnClickPendingIntent(R.id.btn, getLaunchPendingIntent(context, appWidgetId, 0));
        for (int appWidgetId : appWidgetIds)
            updateState(context, appWidgetId);
			appWidgetManager.updateAppWidget(appWidgetId, views);
		}
    }

	private static PendingIntent getLaunchPendingIntent(Context context, int appWidgetId, int buttonId) {
    private static PendingIntent getLaunchPendingIntent(Context context, int appWidgetId,
            int buttonId) {
        Intent launchIntent = new Intent();
        launchIntent.setClass(context, RenderFXWidgetProvider.class);
        launchIntent.addCategory(Intent.CATEGORY_ALTERNATIVE);
@@ -75,7 +70,8 @@ public class RenderFXWidgetProvider extends AppWidgetProvider {
                }

                pendingIntent = new Intent(context, RenderFXService.class);
				pendingIntent.putExtra("widget_render_effect", mPrefs.getInt("widget_render_effect_" + widgetId, 1));
                pendingIntent.putExtra("widget_render_effect",
                        mPrefs.getInt("widget_render_effect_" + widgetId, 1));

                if (this.RenderFXServiceRunning(context)) {
                    context.stopService(pendingIntent);
@@ -96,17 +92,13 @@ public class RenderFXWidgetProvider extends AppWidgetProvider {

    private boolean RenderFXServiceRunning(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);
		
        List<ActivityManager.RunningServiceInfo> svcList = am.getRunningServices(100);

        if (!(svcList.size() > 0))
            return false;

		for (int i = 0; i < svcList.size(); i++) {
			RunningServiceInfo serviceInfo = svcList.get(i);
			ComponentName serviceName = serviceInfo.service;
			
			if (serviceName.getClassName().endsWith(".RenderFXService"))
        for (RunningServiceInfo serviceInfo : svcList) {
            if (serviceInfo.service.getClassName().endsWith(".RenderFXService"))
                return true;
        }
        return false;
@@ -115,14 +107,16 @@ public class RenderFXWidgetProvider extends AppWidgetProvider {
    public void updateAllStates(Context context) {
        final AppWidgetManager am = AppWidgetManager.getInstance(context);

		for (int id : am.getAppWidgetIds(THIS_APPWIDGET))
			this.updateState(context, id);
        for (int appWidgetId : am.getAppWidgetIds(THIS_APPWIDGET))
            this.updateState(context, appWidgetId);
    }

    public void updateState(Context context, int appWidgetId) {
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

        views.setOnClickPendingIntent(R.id.btn, getLaunchPendingIntent(context, appWidgetId, 0));

        if (this.RenderFXServiceRunning(context)) {
            views.setImageViewResource(R.id.img_torch, R.drawable.render_on);
        } else {
@@ -150,6 +144,9 @@ public class RenderFXWidgetProvider extends AppWidgetProvider {
        case 6:
            views.setTextViewText(R.id.ind, context.getResources().getString(R.string.fuscia));
            break;
        default:
            views.setTextViewText(R.id.ind, context.getResources()
                    .getString(R.string.renderfx_temp));
        }

        final AppWidgetManager gm = AppWidgetManager.getInstance(context);