use header for plugins pref
This commit is contained in:
parent
3f9af18ba5
commit
eb8784ddd3
@ -73,7 +73,12 @@
|
||||
</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:label="@string/app_name"
|
||||
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"/>
|
||||
|
@ -8,7 +8,7 @@
|
||||
-keep class com.cradle.iitc_mobile.IITC_SearchableActivity { <init>(...); }
|
||||
|
||||
# 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
|
||||
-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:defaultValue="local"/>
|
||||
<PreferenceScreen
|
||||
android:fragment="com.cradle.iitc_mobile.fragments.PluginsFragment"
|
||||
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
|
||||
android:key="pref_force_https"
|
||||
android:title="@string/pref_force_https"
|
||||
|
@ -485,7 +485,7 @@ public class IITC_Mobile extends Activity {
|
||||
return true;
|
||||
// start settings activity
|
||||
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()
|
||||
.getIITCVersion());
|
||||
startActivity(intent);
|
||||
|
@ -1,84 +1,53 @@
|
||||
package com.cradle.iitc_mobile;
|
||||
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.app.ActionBar;
|
||||
import android.content.res.AssetManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.Preference.OnPreferenceChangeListener;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
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
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mIitcVersion = getArguments().getString("iitc_version");
|
||||
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
|
||||
// plugins
|
||||
public void onBuildHeaders(List<Header> 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 <storage-path>/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<IITC_PluginPreference>());
|
||||
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<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.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");
|
@ -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