package tv.piratemedia.lightcontroler; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.RadioGroup; import android.widget.RemoteViews; import java.text.SimpleDateFormat; import java.util.Calendar; /** * Created by eliotstocker on 26/10/14. */ public class controlWidgetConfig extends ActionBarActivity { private Toolbar mActionBarToolbar; private int mAppWidgetId; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.control_widget_config); if(Build.VERSION.SDK_INT >= 21) { getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark)); } Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { mAppWidgetId = extras.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); setSupportActionBar(mActionBarToolbar); mActionBarToolbar.setNavigationIcon(R.drawable.ic_clear_material); mActionBarToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } }); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); RadioGroup rg = (RadioGroup)findViewById(R.id.group); Button done = (Button)findViewById(R.id.done); CheckBox sg = (CheckBox)findViewById(R.id.superglobal); Log.d("widgetID", "id: " + mAppWidgetId); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.rgbw) { prefs.edit().putInt("widget_" + mAppWidgetId + "_type", 0).commit(); } else if (checkedId == R.id.white) { Log.d("appWidget", "set as white"); prefs.edit().putInt("widget_" + mAppWidgetId + "_type", 1).commit(); } } }); sg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { prefs.edit().putBoolean("widget_" + mAppWidgetId + "_super", true).commit(); } else { prefs.edit().putBoolean("widget_" + mAppWidgetId + "_super", false).commit(); } } }); done.setOnClickListener(new View.OnClickListener() { private static final int LIGHT_ON = 0; private static final int LIGHT_OFF = 1; @Override public void onClick(View v) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getBaseContext()); RemoteViews views = new RemoteViews(getBaseContext().getPackageName(), R.layout.control_widget_init); if(prefs.getInt("widget_" + mAppWidgetId + "_type", 0) == 0) { views.setTextViewText(R.id.headzone1, prefs.getString("pref_zone1", getBaseContext().getString(R.string.Zone1))); views.setTextViewText(R.id.headzone2, prefs.getString("pref_zone2", getBaseContext().getString(R.string.Zone2))); views.setTextViewText(R.id.headzone3, prefs.getString("pref_zone3", getBaseContext().getString(R.string.Zone3))); views.setTextViewText(R.id.headzone4, prefs.getString("pref_zone4", getBaseContext().getString(R.string.Zone4))); if(prefs.getBoolean("widget_" + mAppWidgetId + "_super", false)) { views.setOnClickPendingIntent(R.id.ig, createSuperPendingIntent(getBaseContext(), true)); } else { views.setOnClickPendingIntent(R.id.ig, createPendingIntent(0, getBaseContext(), true)); } views.setOnClickPendingIntent(R.id.i1,createPendingIntent(1,getBaseContext(),true)); views.setOnClickPendingIntent(R.id.i2,createPendingIntent(2,getBaseContext(),true)); views.setOnClickPendingIntent(R.id.i3,createPendingIntent(3,getBaseContext(),true)); views.setOnClickPendingIntent(R.id.i4,createPendingIntent(4,getBaseContext(),true)); if(prefs.getBoolean("widget_" + mAppWidgetId + "_super", false)) { views.setOnClickPendingIntent(R.id.og, createSuperPendingIntent(getBaseContext(), false)); } else { views.setOnClickPendingIntent(R.id.og, createPendingIntent(0, getBaseContext(), false)); } views.setOnClickPendingIntent(R.id.o1,createPendingIntent(1,getBaseContext(),false)); views.setOnClickPendingIntent(R.id.o2,createPendingIntent(2,getBaseContext(),false)); views.setOnClickPendingIntent(R.id.o3,createPendingIntent(3,getBaseContext(),false)); views.setOnClickPendingIntent(R.id.o4,createPendingIntent(4,getBaseContext(),false)); } else { views.setTextViewText(R.id.headzone1, prefs.getString("pref_zone5", getBaseContext().getString(R.string.Zone1))); views.setTextViewText(R.id.headzone2, prefs.getString("pref_zone6", getBaseContext().getString(R.string.Zone2))); views.setTextViewText(R.id.headzone3, prefs.getString("pref_zone7", getBaseContext().getString(R.string.Zone3))); views.setTextViewText(R.id.headzone4, prefs.getString("pref_zone8", getBaseContext().getString(R.string.Zone4))); if(prefs.getBoolean("widget_" + mAppWidgetId + "_super", false)) { views.setOnClickPendingIntent(R.id.ig, createSuperPendingIntent(getBaseContext(), true)); } else { views.setOnClickPendingIntent(R.id.ig, createPendingIntent(9, getBaseContext(), true)); } views.setOnClickPendingIntent(R.id.i1,createPendingIntent(5,getBaseContext(),true)); views.setOnClickPendingIntent(R.id.i2,createPendingIntent(6,getBaseContext(),true)); views.setOnClickPendingIntent(R.id.i3,createPendingIntent(7,getBaseContext(),true)); views.setOnClickPendingIntent(R.id.i4,createPendingIntent(8,getBaseContext(),true)); if(prefs.getBoolean("widget_" + mAppWidgetId + "_super", false)) { views.setOnClickPendingIntent(R.id.og, createSuperPendingIntent(getBaseContext(), false)); } else { views.setOnClickPendingIntent(R.id.og, createPendingIntent(9, getBaseContext(), false)); } views.setOnClickPendingIntent(R.id.o1,createPendingIntent(5,getBaseContext(),false)); views.setOnClickPendingIntent(R.id.o2,createPendingIntent(6,getBaseContext(),false)); views.setOnClickPendingIntent(R.id.o3,createPendingIntent(7,getBaseContext(),false)); views.setOnClickPendingIntent(R.id.o4,createPendingIntent(8,getBaseContext(),false)); } Intent intent = new Intent(getBaseContext(), controlPreferences.class); PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, intent, 0); views.setOnClickPendingIntent(R.id.settings, pendingIntent); intent = new Intent(getBaseContext(), controller.class); pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, intent, 0); views.setOnClickPendingIntent(R.id.app, pendingIntent); views.setViewVisibility(R.id.datetime, View.GONE); Calendar c = Calendar.getInstance(); int min = c.get(Calendar.MINUTE); String minString = "00"; if(min < 10) { minString = "0"+min; } else { minString = Integer.toString(min); } int hour = c.get(Calendar.HOUR_OF_DAY); String hourString = "00"; if(hour < 10) { hourString = "0"+hour; } else { hourString = Integer.toString(hour); } views.setTextViewText(R.id.timeHour, hourString); views.setTextViewText(R.id.timeMinute, minString); views.setTextViewText(R.id.dateDay, Integer.toString(c.get(Calendar.DAY_OF_MONTH))); SimpleDateFormat month_date = new SimpleDateFormat("MMMM"); String month_name = month_date.format(c.getTime()); views.setTextViewText(R.id.dateMonth, month_name); appWidgetManager.updateAppWidget(mAppWidgetId, views); Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); finish(); } public PendingIntent createPendingIntent(int i, Context cont, boolean on) { Intent launchIntent = new Intent(); launchIntent.setClass(cont, switchWidget.class); launchIntent.addCategory(Intent.CATEGORY_ALTERNATIVE); if(on) { launchIntent.setData(Uri.parse(i + ":" + LIGHT_ON)); } else { launchIntent.setData(Uri.parse(i + ":" + LIGHT_OFF)); } launchIntent.putExtra("light_zone",i); PendingIntent pi = PendingIntent.getBroadcast(cont, 0 /* no requestCode */, launchIntent, 0 /* no flags */); return pi; } public PendingIntent createSuperPendingIntent(Context cont, boolean on) { Intent launchIntent = new Intent(); launchIntent.setClass(cont, controlWidgetProvider.class); launchIntent.addCategory(Intent.CATEGORY_ALTERNATIVE); if(on) { launchIntent.setData(Uri.parse("super:" + LIGHT_ON)); } else { launchIntent.setData(Uri.parse("super:" + LIGHT_OFF)); } PendingIntent pi = PendingIntent.getBroadcast(cont, 0 /* no requestCode */, launchIntent, 0 /* no flags */); return pi; } }); } }