/**
*
*/
package com.newsrob.appwidget;
import android.app.Activity;
import android.database.Cursor;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import com.newsrob.R;
abstract class UnreadWidgetPrefWizard extends AbstractWizard {
private RadioGroup scopeRadioGroup;
private EditText widgetLabelEditText;
private Spinner labelSpinner;
private Spinner feedSpinner;
private RadioGroup startingActivityRadioGroup;
enum Scope {
LABEL, FEED, READING_LIST
};
enum StartingActivity {
DASHBOARD, FEEDS, ARTICLES
}
UnreadWidgetPrefWizard(Activity owningActivity) {
super(owningActivity);
scopeRadioGroup = (RadioGroup) owningActivity.findViewById(R.id.scope);
widgetLabelEditText = (EditText) owningActivity.findViewById(R.id.widget_label);
startingActivityRadioGroup = (RadioGroup) owningActivity.findViewById(R.id.starting_activity);
// feed
feedSpinner = (Spinner) owningActivity.findViewById(R.id.feed_spinner);
Cursor c = getEntryManager().getAllFeedsCursor();
owningActivity.startManagingCursor(c);
SimpleCursorAdapter sca = new SimpleCursorAdapter(owningActivity, R.layout.text_view, c,
new String[] { "TITLE" }, new int[] { R.id.text_view });
feedSpinner.setAdapter(sca);
// label
labelSpinner = (Spinner) owningActivity.findViewById(R.id.label_spinner);
c = getEntryManager().getAllLabelsCursor();
owningActivity.startManagingCursor(c);
sca = new SimpleCursorAdapter(owningActivity, R.layout.text_view, c, new String[] { "NAME" },
new int[] { R.id.text_view });
labelSpinner.setAdapter(sca);
// pick scope
addWizardPage(new AbstractWizardPage() {
@Override
void updateState() {
setEnabled(true);
}
@Override
void onEnter() {
}
});
// pick label
addWizardPage(new AbstractWizardPage() {
@Override
void updateState() {
setEnabled(R.id.scope_label == scopeRadioGroup.getCheckedRadioButtonId());
}
});
// pick feed
addWizardPage(new AbstractWizardPage() {
@Override
void updateState() {
setEnabled(R.id.scope_feed == scopeRadioGroup.getCheckedRadioButtonId());
}
});
// select start activity
addWizardPage(new AbstractWizardPage() {
@Override
void updateState() {
setEnabled(R.id.scope_reading_list == scopeRadioGroup.getCheckedRadioButtonId());
}
});
// enter name
addWizardPage(new AbstractWizardPage() {
@Override
void updateState() {
setEnabled(true);
}
@Override
void onEnter() {
if (widgetLabelEditText.getText().length() == 0) {
switch (scopeRadioGroup.getCheckedRadioButtonId()) {
case R.id.scope_label:
widgetLabelEditText.setText(getSelectedLabelName());
break;
case R.id.scope_feed:
widgetLabelEditText.setText(getSelectedFeedName());
break;
case R.id.scope_reading_list:
widgetLabelEditText.setText("All Articles");
break;
}
}
}
});
}
UnreadWidgetPrefWizard.StartingActivity getStartingActivity() {
if (startingActivityRadioGroup.getCheckedRadioButtonId() == R.id.starting_activity_dashboard)
return StartingActivity.DASHBOARD;
if (startingActivityRadioGroup.getCheckedRadioButtonId() == R.id.starting_activity_feed_list)
return StartingActivity.FEEDS;
return StartingActivity.ARTICLES;
}
String getWidgetLabel() {
return widgetLabelEditText.getText().toString();
}
String getSelectedLabelName() {
Object o = labelSpinner.getSelectedItem();
if (o == null)
return "";
Cursor c = (Cursor) o;
return c.getString(1);
}
String getSelectedFeedName() {
Object o = feedSpinner.getSelectedItem();
if (o == null)
return "";
Cursor c = (Cursor) o;
return c.getString(1);
}
Long getSelectedFeedId() {
Object o = feedSpinner.getSelectedItem();
Cursor c = (Cursor) o;
return c.getLong(0);
}
UnreadWidgetPrefWizard.Scope getScope() {
if (scopeRadioGroup.getCheckedRadioButtonId() == R.id.scope_label)
return Scope.LABEL;
if (scopeRadioGroup.getCheckedRadioButtonId() == R.id.scope_feed)
return Scope.FEED;
if (scopeRadioGroup.getCheckedRadioButtonId() == R.id.scope_reading_list)
return Scope.READING_LIST;
throw new RuntimeException("No valid scope was not selected.");
}
}