use header for plugins pref
This commit is contained in:
parent
3f9af18ba5
commit
eb8784ddd3
@ -73,7 +73,12 @@
|
|||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="com.cradle.iitc_mobile.IITC_Settings"
|
android:name=".IITC_PreferenceActivity"
|
||||||
|
android:theme="@style/AppBaseTheme"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"/>
|
||||||
|
<activity
|
||||||
|
android:name="com.cradle.iitc_mobile.IITC_PluginPreferenceActivity"
|
||||||
android:theme="@style/AppBaseTheme"
|
android:theme="@style/AppBaseTheme"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"/>
|
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"/>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
-keep class com.cradle.iitc_mobile.IITC_SearchableActivity { <init>(...); }
|
-keep class com.cradle.iitc_mobile.IITC_SearchableActivity { <init>(...); }
|
||||||
|
|
||||||
# view AndroidManifest.xml #generated:50
|
# view AndroidManifest.xml #generated:50
|
||||||
-keep class com.cradle.iitc_mobile.IITC_Settings { <init>(...); }
|
-keep class com.cradle.iitc_mobile.IITC_PreferenceActivity { <init>(...); }
|
||||||
|
|
||||||
# view res/layout/activity_main.xml #generated:6
|
# view res/layout/activity_main.xml #generated:6
|
||||||
-keep class com.cradle.iitc_mobile.IITC_WebView { <init>(...); }
|
-keep class com.cradle.iitc_mobile.IITC_WebView { <init>(...); }
|
||||||
|
5
mobile/res/xml/pluginspreference.xml
Normal file
5
mobile/res/xml/pluginspreference.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android/plugins">
|
||||||
|
<!-- empty...we will build the prefs in PluginsFragment -->
|
||||||
|
</PreferenceScreen>
|
@ -43,8 +43,13 @@
|
|||||||
android:title="@string/pref_select_iitc"
|
android:title="@string/pref_select_iitc"
|
||||||
android:defaultValue="local"/>
|
android:defaultValue="local"/>
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
|
android:fragment="com.cradle.iitc_mobile.fragments.PluginsFragment"
|
||||||
android:key="pref_plugins"
|
android:key="pref_plugins"
|
||||||
android:title="@string/pref_plugins" />
|
android:title="@string/pref_plugins" >
|
||||||
|
<intent
|
||||||
|
android:targetPackage="com.cradle.iitc_mobile"
|
||||||
|
android:targetClass="com.cradle.iitc_mobile.IITC_PluginPreferenceActivity"/>
|
||||||
|
</PreferenceScreen>
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="pref_force_https"
|
android:key="pref_force_https"
|
||||||
android:title="@string/pref_force_https"
|
android:title="@string/pref_force_https"
|
||||||
|
@ -485,7 +485,7 @@ public class IITC_Mobile extends Activity {
|
|||||||
return true;
|
return true;
|
||||||
// start settings activity
|
// start settings activity
|
||||||
case R.id.action_settings:
|
case R.id.action_settings:
|
||||||
Intent intent = new Intent(this, IITC_Settings.class);
|
Intent intent = new Intent(this, IITC_PreferenceActivity.class);
|
||||||
intent.putExtra("iitc_version", mIitcWebView.getWebViewClient()
|
intent.putExtra("iitc_version", mIitcWebView.getWebViewClient()
|
||||||
.getIITCVersion());
|
.getIITCVersion());
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
@ -1,84 +1,53 @@
|
|||||||
package com.cradle.iitc_mobile;
|
package com.cradle.iitc_mobile;
|
||||||
|
|
||||||
import android.content.pm.PackageInfo;
|
import android.app.ActionBar;
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.PreferenceActivity;
|
||||||
import android.preference.ListPreference;
|
|
||||||
import android.preference.Preference;
|
|
||||||
import android.preference.Preference.OnPreferenceChangeListener;
|
|
||||||
import android.preference.PreferenceFragment;
|
|
||||||
import android.preference.PreferenceScreen;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
public class IITC_SettingsFragment extends PreferenceFragment {
|
public class IITC_PluginPreferenceActivity extends PreferenceActivity {
|
||||||
|
|
||||||
private String mIitcVersion;
|
private List<Header> mHeaders;
|
||||||
|
private TreeMap<String, ArrayList<IITC_PluginPreference>> mPlugins =
|
||||||
|
new TreeMap<String, ArrayList<IITC_PluginPreference>>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onBuildHeaders(List<Header> target) {
|
||||||
super.onCreate(savedInstanceState);
|
ActionBar bar = getActionBar();
|
||||||
|
bar.setTitle("IITC Plugins");
|
||||||
mIitcVersion = getArguments().getString("iitc_version");
|
bar.setDisplayHomeAsUpEnabled(true);
|
||||||
|
mHeaders = target;
|
||||||
addPreferencesFromResource(R.xml.preferences);
|
|
||||||
|
|
||||||
// plugins
|
|
||||||
setUpPluginPreferenceScreen();
|
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();
|
|
||||||
}
|
}
|
||||||
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
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference,
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
Object newValue) {
|
switch (item.getItemId()) {
|
||||||
preference.setSummary(getString(R.string.pref_select_iitc_sum) +
|
// exit settings when home button (iitc icon) is pressed
|
||||||
" " + newValue);
|
case android.R.id.home:
|
||||||
// TODO: update mIitcVersion when iitc source has
|
onBackPressed();
|
||||||
// changed
|
|
||||||
return true;
|
return true;
|
||||||
|
default:
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
// 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() {
|
void setUpPluginPreferenceScreen() {
|
||||||
PreferenceScreen root = (PreferenceScreen) findPreference("pref_plugins");
|
|
||||||
// alphabetical order
|
|
||||||
root.setOrderingAsAdded(false);
|
|
||||||
root.setPersistent(true);
|
|
||||||
|
|
||||||
// get all plugins from asset manager
|
// get all plugins from asset manager
|
||||||
AssetManager am = this.getActivity().getAssets();
|
AssetManager am = getAssets();
|
||||||
String[] asset_array = null;
|
String[] asset_array = null;
|
||||||
try {
|
try {
|
||||||
asset_array = am.list("plugins");
|
asset_array = am.list("plugins");
|
||||||
@ -101,7 +70,7 @@ public class IITC_SettingsFragment extends PreferenceFragment {
|
|||||||
if (s != null)
|
if (s != null)
|
||||||
src = s.hasNext() ? s.next() : "";
|
src = s.hasNext() ? s.next() : "";
|
||||||
// now we have all stuff together and can build the pref screen
|
// 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 <storage-path>/IITC_Mobile/plugins/
|
// load additional plugins from <storage-path>/IITC_Mobile/plugins/
|
||||||
@ -123,12 +92,15 @@ public class IITC_SettingsFragment extends PreferenceFragment {
|
|||||||
src = s.hasNext() ? s.next() : "";
|
src = s.hasNext() ? s.next() : "";
|
||||||
|
|
||||||
// now we have all stuff together and can build the pref screen
|
// now we have all stuff together and can build the pref screen
|
||||||
addPluginPreference(root, src, file.toString(), true);
|
addPluginPreference(src, file.toString(), true);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void addPluginPreference(PreferenceScreen root, String src, String plugin_key,
|
// now finally add the headers
|
||||||
|
addHeaders();
|
||||||
|
}
|
||||||
|
|
||||||
|
void addPluginPreference(String src, String plugin_key,
|
||||||
boolean additional) {
|
boolean additional) {
|
||||||
|
|
||||||
// now parse plugin name, description and category
|
// now parse plugin name, description and category
|
||||||
@ -160,28 +132,41 @@ public class IITC_SettingsFragment extends PreferenceFragment {
|
|||||||
if (additional)
|
if (additional)
|
||||||
plugin_cat = "[User] " + plugin_cat;
|
plugin_cat = "[User] " + plugin_cat;
|
||||||
// now we have all stuff together and can build the pref screen
|
// now we have all stuff together and can build the pref screen
|
||||||
PreferenceScreen pref_screen;
|
if (mPlugins.containsKey(plugin_cat) == false) {
|
||||||
if (root.findPreference(plugin_cat) == null) {
|
mPlugins.put(plugin_cat, new ArrayList<IITC_PluginPreference>());
|
||||||
Log.d("iitcm", "create " + plugin_cat + " and add " + plugin_name);
|
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
|
// 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.setKey(plugin_key);
|
||||||
plugin_pref.setTitle(plugin_name);
|
plugin_pref.setTitle(plugin_name);
|
||||||
plugin_pref.setSummary(plugin_desc);
|
plugin_pref.setSummary(plugin_desc);
|
||||||
plugin_pref.setDefaultValue(false);
|
plugin_pref.setDefaultValue(false);
|
||||||
plugin_pref.setPersistent(true);
|
plugin_pref.setPersistent(true);
|
||||||
pref_screen.addPreference(plugin_pref);
|
ArrayList<IITC_PluginPreference> list = mPlugins.get(plugin_cat);
|
||||||
|
list.add(plugin_pref);
|
||||||
|
}
|
||||||
|
|
||||||
|
void addHeaders() {
|
||||||
|
for (Map.Entry<String, ArrayList<IITC_PluginPreference>> entry : mPlugins.entrySet()) {
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
String plugin_cat = entry.getKey();
|
||||||
|
bundle.putString("title", plugin_cat);
|
||||||
|
ArrayList<String> pluginIds = new ArrayList<String>();
|
||||||
|
for (IITC_PluginPreference pref : entry.getValue()) {
|
||||||
|
pluginIds.add(pref.getKey());
|
||||||
|
ArrayList<String> plugin_vals = new ArrayList<String>();
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,13 +4,15 @@ import android.app.Activity;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
public class IITC_Settings extends Activity {
|
import com.cradle.iitc_mobile.fragments.MainSettings;
|
||||||
|
|
||||||
|
public class IITC_PreferenceActivity extends Activity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
IITC_SettingsFragment settings = new IITC_SettingsFragment();
|
MainSettings settings = new MainSettings();
|
||||||
|
|
||||||
// set action bar title
|
// set action bar title
|
||||||
getActionBar().setTitle("IITC Mobile Settings");
|
getActionBar().setTitle("IITC Mobile Settings");
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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<String> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user