diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml
index dd0fd9f1..4f2584ac 100644
--- a/mobile/AndroidManifest.xml
+++ b/mobile/AndroidManifest.xml
@@ -73,7 +73,12 @@
+
diff --git a/mobile/proguard-project.txt b/mobile/proguard-project.txt
index 34f9866f..ff7f7030 100644
--- a/mobile/proguard-project.txt
+++ b/mobile/proguard-project.txt
@@ -8,7 +8,7 @@
-keep class com.cradle.iitc_mobile.IITC_SearchableActivity { (...); }
# view AndroidManifest.xml #generated:50
--keep class com.cradle.iitc_mobile.IITC_Settings { (...); }
+-keep class com.cradle.iitc_mobile.IITC_PreferenceActivity { (...); }
# view res/layout/activity_main.xml #generated:6
-keep class com.cradle.iitc_mobile.IITC_WebView { (...); }
diff --git a/mobile/res/xml/pluginspreference.xml b/mobile/res/xml/pluginspreference.xml
new file mode 100644
index 00000000..67cac7dd
--- /dev/null
+++ b/mobile/res/xml/pluginspreference.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/mobile/res/xml/preferences.xml b/mobile/res/xml/preferences.xml
index 0398bddd..62674c9b 100644
--- a/mobile/res/xml/preferences.xml
+++ b/mobile/res/xml/preferences.xml
@@ -43,8 +43,13 @@
android:title="@string/pref_select_iitc"
android:defaultValue="local"/>
+ android:title="@string/pref_plugins" >
+
+
mHeaders;
+ private TreeMap> mPlugins =
+ new TreeMap>();
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mIitcVersion = getArguments().getString("iitc_version");
-
- addPreferencesFromResource(R.xml.preferences);
-
- // plugins
+ public void onBuildHeaders(List target) {
+ ActionBar bar = getActionBar();
+ bar.setTitle("IITC Plugins");
+ bar.setDisplayHomeAsUpEnabled(true);
+ mHeaders = target;
setUpPluginPreferenceScreen();
+ }
- // set build version
- ListPreference pref_build_version = (ListPreference) findPreference("pref_build_version");
- PackageManager pm = getActivity().getPackageManager();
- String version = "unknown";
- try {
- PackageInfo info = pm.getPackageInfo(
- getActivity().getPackageName(), 0);
- version = info.versionName;
- } catch (NameNotFoundException e) {
- e.printStackTrace();
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ // exit settings when home button (iitc icon) is pressed
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
}
- pref_build_version.setSummary(version);
-
- // set iitc version
- ListPreference pref_iitc_version = (ListPreference) findPreference("pref_iitc_version");
- pref_iitc_version.setSummary(mIitcVersion);
-
- // set iitc source
- EditTextPreference pref_iitc_source = (EditTextPreference) findPreference("pref_iitc_source");
- pref_iitc_source
- .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference,
- Object newValue) {
- preference.setSummary(getString(R.string.pref_select_iitc_sum) +
- " " + newValue);
- // TODO: update mIitcVersion when iitc source has
- // changed
- return true;
- }
- });
- // first init of summary
- String pref_iitc_source_sum = getString(R.string.pref_select_iitc_sum)
- + " " + pref_iitc_source.getText();
- pref_iitc_source.setSummary(pref_iitc_source_sum);
}
void setUpPluginPreferenceScreen() {
- PreferenceScreen root = (PreferenceScreen) findPreference("pref_plugins");
- // alphabetical order
- root.setOrderingAsAdded(false);
- root.setPersistent(true);
// get all plugins from asset manager
- AssetManager am = this.getActivity().getAssets();
+ AssetManager am = getAssets();
String[] asset_array = null;
try {
asset_array = am.list("plugins");
@@ -101,7 +70,7 @@ public class IITC_SettingsFragment extends PreferenceFragment {
if (s != null)
src = s.hasNext() ? s.next() : "";
// now we have all stuff together and can build the pref screen
- addPluginPreference(root, src, anAsset_array, false);
+ addPluginPreference(src, anAsset_array, false);
}
// load additional plugins from /IITC_Mobile/plugins/
@@ -123,12 +92,15 @@ public class IITC_SettingsFragment extends PreferenceFragment {
src = s.hasNext() ? s.next() : "";
// now we have all stuff together and can build the pref screen
- addPluginPreference(root, src, file.toString(), true);
+ addPluginPreference(src, file.toString(), true);
}
}
+
+ // now finally add the headers
+ addHeaders();
}
- void addPluginPreference(PreferenceScreen root, String src, String plugin_key,
+ void addPluginPreference(String src, String plugin_key,
boolean additional) {
// now parse plugin name, description and category
@@ -160,28 +132,41 @@ public class IITC_SettingsFragment extends PreferenceFragment {
if (additional)
plugin_cat = "[User] " + plugin_cat;
// now we have all stuff together and can build the pref screen
- PreferenceScreen pref_screen;
- if (root.findPreference(plugin_cat) == null) {
+ if (mPlugins.containsKey(plugin_cat) == false) {
+ mPlugins.put(plugin_cat, new ArrayList());
Log.d("iitcm", "create " + plugin_cat + " and add " + plugin_name);
- pref_screen = getPreferenceManager().createPreferenceScreen(root.getContext());
- pref_screen.setTitle(plugin_cat);
- pref_screen.setKey(plugin_cat);
- // alphabetical order
- pref_screen.setOrderingAsAdded(false);
- pref_screen.setPersistent(true);
- root.addPreference(pref_screen);
- } else {
- Log.d("iitcm", "add " + plugin_name + " to " + plugin_cat);
- pref_screen = (PreferenceScreen) findPreference(plugin_cat);
}
// now build a new checkable preference for the plugin
- IITC_PluginPreference plugin_pref = new IITC_PluginPreference(pref_screen.getContext());
+ IITC_PluginPreference plugin_pref = new IITC_PluginPreference(this);
plugin_pref.setKey(plugin_key);
plugin_pref.setTitle(plugin_name);
plugin_pref.setSummary(plugin_desc);
plugin_pref.setDefaultValue(false);
plugin_pref.setPersistent(true);
- pref_screen.addPreference(plugin_pref);
+ ArrayList list = mPlugins.get(plugin_cat);
+ list.add(plugin_pref);
+ }
+
+ void addHeaders() {
+ for (Map.Entry> entry : mPlugins.entrySet()) {
+ Bundle bundle = new Bundle();
+ String plugin_cat = entry.getKey();
+ bundle.putString("title", plugin_cat);
+ ArrayList pluginIds = new ArrayList();
+ for (IITC_PluginPreference pref : entry.getValue()) {
+ pluginIds.add(pref.getKey());
+ ArrayList plugin_vals = new ArrayList();
+ plugin_vals.add(pref.getTitle().toString());
+ plugin_vals.add(pref.getSummary().toString());
+ bundle.putStringArrayList(pref.getKey(), plugin_vals);
+ }
+ bundle.putStringArrayList("ids", pluginIds);
+ Header newHeader = new Header();
+ newHeader.title = plugin_cat;
+ newHeader.fragmentArguments = bundle;
+ newHeader.fragment = "com.cradle.iitc_mobile.fragments.PluginsFragment";
+ mHeaders.add(newHeader);
+ }
}
}
diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java b/mobile/src/com/cradle/iitc_mobile/IITC_PreferenceActivity.java
similarity index 86%
rename from mobile/src/com/cradle/iitc_mobile/IITC_Settings.java
rename to mobile/src/com/cradle/iitc_mobile/IITC_PreferenceActivity.java
index 4ac7efe6..ad222eff 100644
--- a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java
+++ b/mobile/src/com/cradle/iitc_mobile/IITC_PreferenceActivity.java
@@ -4,13 +4,15 @@ import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
-public class IITC_Settings extends Activity {
+import com.cradle.iitc_mobile.fragments.MainSettings;
+
+public class IITC_PreferenceActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- IITC_SettingsFragment settings = new IITC_SettingsFragment();
+ MainSettings settings = new MainSettings();
// set action bar title
getActionBar().setTitle("IITC Mobile Settings");
diff --git a/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java b/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java
new file mode 100644
index 00000000..f26c18cc
--- /dev/null
+++ b/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java
@@ -0,0 +1,63 @@
+package com.cradle.iitc_mobile.fragments;
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.preference.EditTextPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.PreferenceFragment;
+
+import com.cradle.iitc_mobile.R;
+
+public class MainSettings extends PreferenceFragment {
+
+ private String mIitcVersion;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mIitcVersion = getArguments().getString("iitc_version");
+
+ addPreferencesFromResource(R.xml.preferences);
+
+ // set build version
+ ListPreference pref_build_version = (ListPreference) findPreference("pref_build_version");
+ PackageManager pm = getActivity().getPackageManager();
+ String version = "unknown";
+ try {
+ PackageInfo info = pm.getPackageInfo(
+ getActivity().getPackageName(), 0);
+ version = info.versionName;
+ } catch (NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ pref_build_version.setSummary(version);
+
+ // set iitc version
+ ListPreference pref_iitc_version = (ListPreference) findPreference("pref_iitc_version");
+ pref_iitc_version.setSummary(mIitcVersion);
+
+ // set iitc source
+ EditTextPreference pref_iitc_source = (EditTextPreference) findPreference("pref_iitc_source");
+ pref_iitc_source
+ .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference,
+ Object newValue) {
+ preference.setSummary(getString(R.string.pref_select_iitc_sum) +
+ " " + newValue);
+ // TODO: update mIitcVersion when iitc source has
+ // changed
+ return true;
+ }
+ });
+ // first init of summary
+ String pref_iitc_source_sum = getString(R.string.pref_select_iitc_sum)
+ + " " + pref_iitc_source.getText();
+ pref_iitc_source.setSummary(pref_iitc_source_sum);
+ }
+}
diff --git a/mobile/src/com/cradle/iitc_mobile/fragments/PluginsFragment.java b/mobile/src/com/cradle/iitc_mobile/fragments/PluginsFragment.java
new file mode 100644
index 00000000..c52007ed
--- /dev/null
+++ b/mobile/src/com/cradle/iitc_mobile/fragments/PluginsFragment.java
@@ -0,0 +1,44 @@
+package com.cradle.iitc_mobile.fragments;
+
+import android.app.ActionBar;
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+
+import com.cradle.iitc_mobile.IITC_PluginPreference;
+import com.cradle.iitc_mobile.R;
+
+import java.util.ArrayList;
+
+public class PluginsFragment extends PreferenceFragment {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ addPreferencesFromResource(R.xml.pluginspreference);
+
+ // alphabetical order
+ getPreferenceScreen().setOrderingAsAdded(false);
+
+ // add plugin checkboxes
+ ArrayList ids = getArguments().getStringArrayList("ids");
+ for (String id : ids) {
+ String title = getArguments().getStringArrayList(id).get(0);
+ String desc = getArguments().getStringArrayList(id).get(1);
+ IITC_PluginPreference plugin_pref = new IITC_PluginPreference(getActivity());
+ plugin_pref.setKey(id);
+ plugin_pref.setTitle(title);
+ plugin_pref.setSummary(desc);
+ plugin_pref.setDefaultValue(false);
+ plugin_pref.setPersistent(true);
+ getPreferenceScreen().addPreference(plugin_pref);
+ }
+
+ ActionBar bar = getActivity().getActionBar();
+ String actionBarTitle = getArguments().getString("title");
+ bar.setTitle("IITC Plugins: " + actionBarTitle);
+ bar.setDisplayHomeAsUpEnabled(true);
+ getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+}