aboutsummaryrefslogtreecommitdiff
path: root/src/edu/umich/PowerTutor/widget/DataSourceConfigure.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/edu/umich/PowerTutor/widget/DataSourceConfigure.java')
-rw-r--r--src/edu/umich/PowerTutor/widget/DataSourceConfigure.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/edu/umich/PowerTutor/widget/DataSourceConfigure.java b/src/edu/umich/PowerTutor/widget/DataSourceConfigure.java
new file mode 100644
index 0000000..e056d4c
--- /dev/null
+++ b/src/edu/umich/PowerTutor/widget/DataSourceConfigure.java
@@ -0,0 +1,134 @@
+/*
+Copyright (C) 2011 The University of Michigan
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Please send inquiries to powertutor@umich.edu
+*/
+
+package edu.umich.PowerTutor.widget;
+
+import edu.umich.PowerTutor.R;
+
+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.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+import android.widget.ListView;
+
+import java.util.ArrayList;
+
+public class DataSourceConfigure extends Activity {
+ private DataSource dataSource;
+ private int level;
+
+ private String[] shortOptions;
+ private String[] longOptions;
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setResult(RESULT_CANCELED);
+
+ Intent intent = getIntent();
+ Bundle extras = intent.getExtras();
+ if(extras != null) {
+ dataSource = (DataSource)extras.getSerializable("data_source");
+ level = extras.getInt("level");
+ }
+ if(dataSource == null) {
+ dataSource = new DataSource();
+ level = 0;
+ }
+ setTitle(dataSource.getTitle(level));
+ shortOptions = dataSource.getShortOptions(level);
+ longOptions = dataSource.getLongOptions(level);
+
+ final ListView listView = new ListView(this);
+ ArrayAdapter adapter = new ArrayAdapter(this, 0) {
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View itemView = getLayoutInflater()
+ .inflate(R.layout.widget_item_layout, listView, false);
+ TextView title = (TextView)itemView.findViewById(R.id.title);
+ TextView summary = (TextView)itemView.findViewById(R.id.summary);
+ Item item = (Item)getItem(position);
+ item.setupView(title, summary);
+ return itemView;
+ }
+ };
+
+ int pos = 0;
+ final Item[] items = new Item[shortOptions.length];
+ for(int i = 0; i < shortOptions.length; i++) {
+ if(dataSource.hasOption(level, i)) {
+ items[pos] = new Item(i);
+ adapter.add(items[pos++]);
+ }
+ }
+ listView.setAdapter(adapter);
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ public void onItemClick(AdapterView parent, View view,
+ int position, long id) {
+ items[position].onClick();
+ }
+ });
+ setContentView(listView);
+ }
+
+ @Override
+ protected void onActivityResult(int reqCode, int resCode, Intent data) {
+ if(resCode == RESULT_OK) {
+ Intent resultValue = new Intent();
+ resultValue.putExtras(data);
+ setResult(RESULT_OK, resultValue);
+ finish();
+ }
+ }
+
+ private class Item {
+ private int id;
+
+ public Item(int id) {
+ this.id = id;
+ }
+
+ public void setupView(TextView title, TextView summary) {
+ title.setText(shortOptions[id]);
+ summary.setText(longOptions[id]);
+ }
+
+ public void onClick() {
+ if(dataSource.setParam(level, id)) {
+ Intent resultValue = new Intent();
+ resultValue.putExtra("data_source", dataSource);
+ setResult(RESULT_OK, resultValue);
+ finish();
+ } else {
+ Intent startIntent = new Intent(DataSourceConfigure.this,
+ DataSourceConfigure.class);
+ startIntent.putExtra("data_source", dataSource);
+ startIntent.putExtra("level", level + 1);
+ startActivityForResult(startIntent, 0);
+ }
+ }
+ }
+}