package com.zulip.android.widget; import android.app.Activity; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.view.View; import android.widget.Toast; import com.zulip.android.R; import com.zulip.android.ZulipApp; import static com.zulip.android.widget.WidgetPreferenceFragment.FROM_PREFERENCE; import static com.zulip.android.widget.WidgetPreferenceFragment.INTERVAL_PREFERENCE; import static com.zulip.android.widget.WidgetPreferenceFragment.TITLE_PREFRENCE; /** * The configuration screen for the {@link ZulipWidget ZulipWidget} AppWidget. */ public class ZulipWidgetConfigureActivity extends Activity { private static final String PREFS_NAME = "com.zulip.android.widget.ZulipWidget"; int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; public ZulipWidgetConfigureActivity() { super(); } static void savePref(Context context, int appWidgetId, String preferenceKey, String text) { SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME + appWidgetId, 0).edit(); prefs.putString(preferenceKey + appWidgetId, text); prefs.apply(); } static String loadPref(Context context, int appWidgetId, String preferenceKey) { SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME + appWidgetId, 0); return prefs.getString(preferenceKey + appWidgetId, null); } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); // Set the result to CANCELED. This will cause the widget host to cancel // out of the widget placement if the user presses the back button. setResult(RESULT_CANCELED); setContentView(R.layout.zulip_widget_configure); if (ZulipApp.get().getApiKey() == null || ZulipApp.get().getApiKey().isEmpty()) { Toast.makeText(this, R.string.no_login_error_widget, Toast.LENGTH_SHORT).show(); finish(); return; } final WidgetPreferenceFragment widgetPreferenceFragment = new WidgetPreferenceFragment(); getFragmentManager().beginTransaction().replace(R.id.widget_settings_fragment, widgetPreferenceFragment).commit(); findViewById(R.id.widget_add).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final Context context = ZulipWidgetConfigureActivity.this; savePref(context, mAppWidgetId, TITLE_PREFRENCE, ((EditTextPreference) widgetPreferenceFragment.findPreference(TITLE_PREFRENCE)).getText()); savePref(context, mAppWidgetId, FROM_PREFERENCE, ((ListPreference) widgetPreferenceFragment.findPreference(FROM_PREFERENCE)).getValue()); savePref(context, mAppWidgetId, INTERVAL_PREFERENCE, ((ListPreference) widgetPreferenceFragment.findPreference(INTERVAL_PREFERENCE)).getValue()); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ZulipWidget.updateAppWidget(context, appWidgetManager, mAppWidgetId); Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); finish(); } }); findViewById(R.id.widget_cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { finish(); return; } } }