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

Commit ccbbbdd3 authored by Steve Kondik's avatar Steve Kondik Committed by Gerrit Code Review
Browse files

Merge "Fixes issue 2203 and initializes RenderFX widget"

parents d02daa81 eda0964c
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);