package moontime.droid;
import moontime.droid.entity.WidgetTheme;
import moontime.droid.service.MoontimeService;
import moontime.droid.store.WidgetPreferences;
import roboguice.activity.RoboActivity;
import roboguice.inject.InjectView;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import com.google.inject.Inject;
public class WidgetConfigurationActivity extends RoboActivity {
@Inject
private MoontimeService _moontimeService;
private int _widgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@InjectView(R.id.datePattern)
private EditText _datePatternText;
@InjectView(R.id.themeSpinner)
private Spinner _themeSpinner;
public int getWidgetId() {
return _widgetId;
}
public EditText getDatePatternText() {
return _datePatternText;
}
public Spinner getThemeSpinner() {
return _themeSpinner;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.configuration_layout);
// Set the result to CANCELED. This will cause the widget host to cancel
// out of the widget placement if they press the back button.
setResult(RESULT_CANCELED);
// Find the widget id from the intent.
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
_widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
// If they gave us an intent without the widget id, just bail.
if (_widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
finish();
}
ArrayAdapter<WidgetTheme> adapter = new ArrayAdapter<WidgetTheme>(this, android.R.layout.simple_spinner_item,
WidgetTheme.values());
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
_themeSpinner.setAdapter(adapter);
}
public void submit(View view) {
Context context = this;
WidgetPreferences widgetPreferences = WidgetPreferences.initFromView(this);
widgetPreferences.storeToPreferences(context);
// Push widget update to surface with newly set prefix
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
WidgetProvider.updateView(_moontimeService, context, appWidgetManager, _widgetId);
// Make sure we pass back the original appWidgetId
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, _widgetId);
setResult(RESULT_OK, resultValue);
finish();
Log.i("config", "finished configuration of widget '" + _widgetId + "'");
}
}