diff options
Diffstat (limited to 'templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl')
-rw-r--r-- | templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl b/templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl new file mode 100644 index 0000000..3c2be67 --- /dev/null +++ b/templates/other/AppWidget/root/src/app_package/AppWidgetConfigureActivity.java.ftl @@ -0,0 +1,102 @@ +package ${packageName}; + +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.view.View; +import android.widget.EditText; + +/** + * The configuration screen for the {@link ${className} ${className}} AppWidget. + */ +public class ${className}ConfigureActivity extends Activity { + + int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; + EditText mAppWidgetText; + private static final String PREFS_NAME = "${packageName}.${className}"; + private static final String PREF_PREFIX_KEY = "appwidget_"; + + public ${className}ConfigureActivity() { + super(); + } + + @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.${class_name}_configure); + mAppWidgetText = (EditText)findViewById(R.id.appwidget_text); + findViewById(R.id.add_button).setOnClickListener(mOnClickListener); + + // Find the widget id from the intent. + Intent intent = getIntent(); + Bundle extras = intent.getExtras(); + if (extras != null) { + mAppWidgetId = extras.getInt( + AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); + } + + // If this activity was started with an intent without an app widget ID, finish with an error. + if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { + finish(); + return; + } + + mAppWidgetText.setText(loadTitlePref(${className}ConfigureActivity.this, mAppWidgetId)); + } + + View.OnClickListener mOnClickListener = new View.OnClickListener() { + public void onClick(View v) { + final Context context = ${className}ConfigureActivity.this; + + // When the button is clicked, store the string locally + String widgetText = mAppWidgetText.getText().toString(); + saveTitlePref(context,mAppWidgetId,widgetText); + + // It is the responsibility of the configuration activity to update the app widget + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ${className}.updateAppWidget(context, appWidgetManager, mAppWidgetId); + + // Make sure we pass back the original appWidgetId + Intent resultValue = new Intent(); + resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); + setResult(RESULT_OK, resultValue); + finish(); + } + }; + + // Write the prefix to the SharedPreferences object for this widget + static void saveTitlePref(Context context, int appWidgetId, String text) { + SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, 0).edit(); + prefs.putString(PREF_PREFIX_KEY + appWidgetId, text); + prefs.commit(); + } + + // Read the prefix from the SharedPreferences object for this widget. + // If there is no preference saved, get the default from a resource + static String loadTitlePref(Context context, int appWidgetId) { + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0); + String titleValue = prefs.getString(PREF_PREFIX_KEY + appWidgetId, null); + if (titleValue != null) { + return titleValue; + } else { + return context.getString(R.string.appwidget_text); + } + } + + static void deleteTitlePref(Context context, int appWidgetId) { + SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, 0).edit(); + prefs.remove(PREF_PREFIX_KEY + appWidgetId); + prefs.commit(); + } +} + + + |