Clean up and settings fix

This commit is contained in:
Tim Bentley 2015-01-23 17:53:00 +00:00
parent 13bb8ca00e
commit 47164004b1
27 changed files with 368 additions and 797 deletions

View File

@ -1,5 +1,7 @@
apply plugin: 'com.android.application'
project.archivesBaseName = 'OpenLP'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

View File

@ -20,10 +20,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".fragments.SettingsActivity"
android:label="@string/title_activity_settings" >
</activity>
<activity
android:name=".activities.SettingsActivity"
android:label="@string/title_activity_settings"
@ -32,14 +28,7 @@
android:name="android.support.PARENT_ACTIVITY"
android:value="org.openlp.android2.OpenLP" />
</activity>
<activity
android:name=".activities.ConnectionActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".OpenLP" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.openlp.android2.OpenLP" />
</activity>
</application>
</manifest>

View File

@ -20,12 +20,15 @@ package org.openlp.android2;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBarActivity;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@ -57,6 +60,7 @@ public class OpenLP extends ActionBarActivity
/**
* Used to store the last screen title. For use in {@link #restoreActionBar()}.
*/
private final String LOG_TAG = OpenLP.class.getName();
private CharSequence mTitle;
private boolean backArrowActive = false;
private Menu dropdownMenu;
@ -66,6 +70,8 @@ public class OpenLP extends ActionBarActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
doPreferenceCheck();
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
@ -76,6 +82,19 @@ public class OpenLP extends ActionBarActivity
(DrawerLayout) findViewById(R.id.drawer_layout));
}
private void doPreferenceCheck() {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(this);
if (sharedPrefs.getString(getString(R.string.key_host), "NONE").equals("NONE")
|| sharedPrefs.getString(getString(R.string.key_host), null).equals(null)) {
Log.d(LOG_TAG,
"URL preference not set. Starting preference activity...");
Intent preferenceIntent = new Intent(this, SettingsActivity.class);
startActivity(preferenceIntent);
}
}
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
@ -123,7 +142,7 @@ public class OpenLP extends ActionBarActivity
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
} catch (Exception e) {
e.printStackTrace();
//noop
}
}
@ -226,8 +245,7 @@ public class OpenLP extends ActionBarActivity
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override

View File

@ -1,427 +0,0 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2015 OpenLP Android Developers *
* --------------------------------------------------------------------------- *
* 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; version 2 of the License. *
* *
* 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, write to the Free Software Foundation, Inc., 59 *
* Temple Place, Suite 330, Boston, MA 02111-1307 USA *
*******************************************************************************/
package org.openlp.android2.activities;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.*;
import android.text.InputType;
import android.util.Log;
import android.widget.Toast;
import org.openlp.android2.R;
public class ConnectionActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new ConnectionFragment())
.commit();
}
public static class ConnectionFragment extends PreferenceFragment {
private final String KEY_PREFERENCE_DISPLAY = "preferenceDisplay";
private final String KEY_SERVER_ID = "keyServerId";
private final String PREFERENCE_DISPLAY_SERVER = "displayServer";
private final String LOG_TAG = ConnectionFragment.class.getName();
private PreferenceScreen preferenceScreen = null;
private boolean resume = true;
private static String getHostConfigTitleKey(int id) {
return HostConfig.KEY_PREFIX + id + ".title";
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.empty_preferences);
getPreferenceManager()
.setSharedPreferencesName(getString(R.string.keySharedPreferences));
preferenceScreen = getPreferenceScreen() == null
? getPreferenceManager().createPreferenceScreen(getActivity())
: getPreferenceScreen();
preferenceScreen.removeAll();
String preferenceDisplay = getActivity().getIntent().getStringExtra(KEY_PREFERENCE_DISPLAY);
if (preferenceDisplay != null
&& preferenceDisplay.equalsIgnoreCase(PREFERENCE_DISPLAY_SERVER)) {
constructServerView(getActivity().getIntent().getIntExtra(KEY_SERVER_ID, 1));
} else {
resume = false;
constructOverviewScreen();
}
}
private void constructOverviewScreen() {
getPreferenceScreen().removeAll();
Log.i(LOG_TAG, "constructOverviewScreen");
Preference configPref = new Preference(getActivity());
configPref.setTitle(getString(R.string.connection_available_configurations));
configPref.setSummary(getString(R.string.connection_add_by_menu));
configPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
int nextId = getNextPrefId(
getHostConfigMap(
getPreferenceManager()
.getSharedPreferences().getAll()
)
);
Preference newPreference = simpleClickablePreferenceFromHostConfig(
new HostConfig(
getString(R.string.connection_profile_server),
nextId));
newPreference.setTitle(getString(R.string.connection_profile_new_server));
newPreference.setSummary(getString(R.string.connection_profile_not_saved));
preferenceScreen.addPreference(newPreference);
return true;
}
});
preferenceScreen.addPreference(configPref);
List<HostConfig> hostConfigs = getHostConfigs();
if (!hostConfigs.isEmpty()) {
for (final HostConfig config : getHostConfigs()) {
preferenceScreen.addPreference(
simpleClickablePreferenceFromHostConfig(config));
}
}
}
private void constructServerView(int hostId) {
HostConfig hostConfig = hostConfigFromPreferencesForHostId(
hostId,
getHostConfigMap(
getPreferenceManager()
.getSharedPreferences()
.getAll()
)
);
addPreferenceCategory(preferenceScreen, hostConfig);
}
private Preference simpleClickablePreferenceFromHostConfig(final HostConfig config) {
final Preference serverConfig = new Preference(getActivity());
serverConfig.setTitle(config.title.getSummary());
Boolean useSsl = getPreferenceManager()
.getSharedPreferences()
.getBoolean(config.useSsl.getKey(), false);
serverConfig.setSummary(String.format(
"%s:%s %s",
config.hostAddress.getText(),
config.hostPort.getText(),
useSsl ? "(SSL)" : "")
);
serverConfig.setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent serverConfigIntent = new Intent(
getActivity(),
ConnectionActivity.class
);
serverConfigIntent.putExtra(KEY_PREFERENCE_DISPLAY,
PREFERENCE_DISPLAY_SERVER);
serverConfigIntent.putExtra(KEY_SERVER_ID, config.id);
startActivity(serverConfigIntent);
return true;
}
});
return serverConfig;
}
private List<HostConfig> getHostConfigs() {
return hostConfigsFromPreferences(
getHostConfigMap(
getPreferenceManager()
.getSharedPreferences()
.getAll()
)
);
}
private Map<String, ?> getHostConfigMap(Map<String, ?> preferences) {
Map<String, Object> configMap = new TreeMap<String, Object>();
List<String> sortedKeys = new ArrayList<String>(preferences.keySet());
Collections.sort(sortedKeys);
for (String key : sortedKeys) {
if (key.startsWith(HostConfig.KEY_PREFIX)) {
configMap.put(key, preferences.get(key));
}
}
return configMap;
}
private List<HostConfig> hostConfigsFromPreferences(Map<String, ?> preferences) {
List<Integer> hostIds = getHostIds(preferences);
List<HostConfig> hostConfigs = new ArrayList<HostConfig>();
for (Integer id : hostIds) {
hostConfigs.add(hostConfigFromPreferencesForHostId(id, preferences));
}
return hostConfigs;
}
private HostConfig hostConfigFromPreferencesForHostId(int hostId, Map<String, ?> preferences) {
Object titleValue = preferences.get(getHostConfigTitleKey(hostId));
String hostTitle = titleValue == null ? getString(R.string.connection_profile_server) : titleValue.toString();
HostConfig hostConfig = new HostConfig(
hostTitle, hostId
);
Object hostValueObject = preferences.get(hostConfig.hostAddress.getKey());
String hostValue = hostValueObject == null
? getString(R.string.hostDefaultValue) : hostValueObject.toString();
hostConfig.hostAddress.setText(hostValue);
hostConfig.hostAddress.setSummary(hostValue);
Object portValueObject = preferences.get(hostConfig.hostPort.getKey());
String portValue = portValueObject == null
? getString(R.string.portDefaultValue) : portValueObject.toString();
hostConfig.hostPort.setText(portValue);
hostConfig.hostPort.setSummary(portValue);
Object useridValueObject = preferences.get(hostConfig.userid.getKey());
String useridValue = useridValueObject == null
? getString(R.string.useridDefaultValue) : useridValueObject.toString();
hostConfig.userid.setText(useridValue);
hostConfig.userid.setSummary(useridValue);
Object passwordValueObject = preferences.get(hostConfig.password.getKey());
String passwordValue = passwordValueObject == null
? getString(R.string.passwordDefaultValue) : passwordValueObject.toString();
hostConfig.password.setText(passwordValue);
hostConfig.password.setSummary(passwordValue);
return hostConfig;
}
private int getNextPrefId(Map<String, ?> preferences) {
int max = 0;
for (String key : preferences.keySet()) {
int prefValue = Integer.valueOf(key.split("\\.")[2]);
max = prefValue > max ? prefValue : max;
}
return max + 1;
}
private List<Integer> getHostIds(Map<String, ?> preferences) {
Set<Integer> hashSet = new HashSet<Integer>();
for (String key : preferences.keySet()) {
hashSet.add(Integer.valueOf(key.split("\\.")[2]));
}
List<Integer> hostIds = new ArrayList<Integer>(hashSet);
Collections.sort(hostIds);
Log.i(LOG_TAG, "Got HostIds: " + hostIds);
return hostIds;
}
private boolean addPreferenceCategory(PreferenceScreen preferenceScreen, HostConfig hostConfig) {
PreferenceCategory preferenceCategory = new PreferenceCategory(getActivity());
preferenceCategory.setTitle(hostConfig.title.getSummary());
preferenceCategory.setKey("key.preference.category");
preferenceScreen.addPreference(preferenceCategory);
preferenceCategory.addPreference(hostConfig.title);
preferenceCategory.addPreference(hostConfig.hostAddress);
preferenceCategory.addPreference(hostConfig.hostPort);
preferenceCategory.addPreference(hostConfig.useSsl);
preferenceCategory.addPreference(hostConfig.userid);
preferenceCategory.addPreference(hostConfig.password);
preferenceCategory.addPreference(hostConfig.remove);
preferenceCategory.addPreference(hostConfig.activate);
return true;
}
@Override
public void onResume() {
super.onResume();
if (resume) {
Log.i(LOG_TAG, "Resuming...");
} else {
constructOverviewScreen();
Log.i(LOG_TAG, "Not resuming...");
}
}
private class HostConfig {
static final String KEY_PREFIX = "host.config.";
final int id;
final EditTextPreference title;
final EditTextPreference hostAddress;
final EditTextPreference hostPort;
final CheckBoxPreference useSsl;
final EditTextPreference userid;
final EditTextPreference password;
final Preference remove;
final Preference activate;
Preference.OnPreferenceChangeListener onPreferenceChangeListener =
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
preference.setSummary("" + o);
if (preference.getKey().endsWith(".title")) {
preferenceScreen
.findPreference("key.preference.category")
.setTitle("" + o);
}
return true;
}
};
HostConfig(String sTitle, int id) {
this.id = id;
title = new EditTextPreference(getActivity());
title.setSummary(getString(R.string.url));
title.getEditText().setHint(getString(R.string.url));
title.setTitle(getString(R.string.connection_profile_title));
title.setKey(KEY_PREFIX + id + ".title");
title.setDefaultValue(getString(R.string.url));
title.setSummary(sTitle);
title.setDialogTitle(getString(R.string.connection_profile_title));
title.setOnPreferenceChangeListener(onPreferenceChangeListener);
hostAddress = new EditTextPreference(getActivity());
hostAddress.setTitle(getString(R.string.url_hint));
hostAddress.setKey(KEY_PREFIX + id + ".address");
hostAddress.getEditText().setHint(R.string.url_hint);
hostAddress.setSummary(getString(R.string.url_hint));
hostAddress.setDialogTitle(getString(R.string.url_hint));
hostAddress.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI);
hostAddress.setOnPreferenceChangeListener(onPreferenceChangeListener);
hostPort = new EditTextPreference(getActivity());
hostPort.setTitle(getString(R.string.port));
hostPort.setKey(KEY_PREFIX + id + ".port");
hostPort.setSummary(getString(R.string.port));
hostPort.setDialogTitle(getString(R.string.port));
hostPort.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
hostPort.setDefaultValue(getString(R.string.portDefaultValue));
hostPort.setOnPreferenceChangeListener(onPreferenceChangeListener);
useSsl = new CheckBoxPreference(getActivity());
useSsl.setTitle(getString(R.string.connection_profile_ssl_use));
useSsl.setSummary(getString(R.string.connection_profile_ssl_summary));
useSsl.setKey(KEY_PREFIX + id + ".usessl");
userid = new EditTextPreference(getActivity());
userid.setSummary(getString(R.string.connection_userid));
userid.getEditText().setHint(getString(R.string.connection_userid));
userid.setTitle(getString(R.string.connection_userid));
userid.setKey(KEY_PREFIX + id + ".userid");
userid.setDefaultValue(getString(R.string.useridDefaultValue));
userid.setSummary(getString(R.string.useridDefaultValue));
userid.setDialogTitle(getString(R.string.connection_userid));
userid.setOnPreferenceChangeListener(onPreferenceChangeListener);
password = new EditTextPreference(getActivity());
password.setSummary(getString(R.string.connection_password));
password.getEditText().setHint(getString(R.string.connection_password));
password.setTitle(getString(R.string.connection_password));
password.setKey(KEY_PREFIX + id + ".password");
password.setDefaultValue(getString(R.string.passwordDefaultValue));
password.setSummary(getString(R.string.passwordDefaultValue));
password.setDialogTitle(getString(R.string.connection_password));
password.setOnPreferenceChangeListener(onPreferenceChangeListener);
remove = new Preference(getActivity());
remove.setTitle(getString(R.string.connection_profile_remove));
remove.setSummary(getString(R.string.connection_profile_remove_summary));
remove.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
SharedPreferences.Editor editor = prefs.edit();
editor.remove(hostAddress.getKey());
editor.remove(hostPort.getKey());
editor.remove(title.getKey());
editor.remove(useSsl.getKey());
editor.remove(userid.getKey());
editor.remove(password.getKey());
editor.commit();
getActivity().onBackPressed();
return false;
}
});
activate = new Preference(getActivity());
activate.setTitle(getString(R.string.connection_profile_activate));
activate.setSummary(getString(R.string.connection_profile_summary_activate));
activate.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
SharedPreferences preferences = getPreferenceManager().getSharedPreferences();
SharedPreferences.Editor editor = preferences.edit();
String host = preferences.getString(hostAddress.getKey(),
getString(R.string.hostDefaultValue));
editor.putString(getString(R.string.keyHost), host);
String port = preferences.getString(hostPort.getKey(),
getString(R.string.portDefaultValue));
editor.putString(getString(R.string.keyPort), port);
Boolean bUseSsl = preferences.getBoolean(useSsl.getKey(), false);
editor.putBoolean(getString(R.string.key_ssl_use), bUseSsl);
String suserid = preferences.getString(userid.getKey(), getString(R.string.useridDefaultValue));
editor.putString(getString(R.string.key_userid), suserid);
String spassword = preferences.getString(password.getKey(),
getString(R.string.passwordDefaultValue));
editor.putString(getString(R.string.key_password), spassword);
editor.putString(
getString(R.string.key_profile_selected_title),
preferences.getString(
title.getKey(),
getString(R.string.url)));
editor.commit();
Toast.makeText(getActivity(),
String.format(
"%s: %s\n[%s:%s] %s",
getString(R.string.connection_profile_active_toast),
HostConfig.this.title.getText(),
host,
port,
useSsl.isChecked() ? "(SSL)" : ""
),
Toast.LENGTH_LONG).show();
return false;
}
});
}
@Override
public String toString() {
return "HostConfig{" +
"id=" + id +
", title='" + title + '\'' +
", hostAddress=" + hostAddress.getKey() +
", hostPort=" + hostPort.getKey() +
'}';
}
}
}
}

View File

@ -1,88 +1,220 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2015 OpenLP Android Developers *
* --------------------------------------------------------------------------- *
* 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; version 2 of the License. *
* *
* 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, write to the Free Software Foundation, Inc., 59 *
* Temple Place, Suite 330, Boston, MA 02111-1307 USA *
*******************************************************************************/
package org.openlp.android2.activities;
import android.content.Intent;
import android.content.SharedPreferences;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import org.openlp.android2.R;
import java.util.List;
/**
* A {@link PreferenceActivity} that presents a set of application settings. On
* handset devices, settings are presented as a single list. On tablets,
* settings are split by category, with category headers shown to the left of
* the list of settings.
* <p/>
* See <a href="http://developer.android.com/design/patterns/settings.html">
* Android Design: Settings</a> for design guidelines and the <a
* href="http://developer.android.com/guide/topics/ui/settings.html">Settings
* API Guide</a> for more information on developing a Settings UI.
*/
public class SettingsActivity extends PreferenceActivity {
/**
* Determines whether to always show the simplified settings UI, where
* settings are presented in a single list. When false, settings are shown
* as a master/detail two-pane view on tablets. When true, a single pane is
* shown on tablets.
*/
private static final boolean ALWAYS_SIMPLE_PREFS = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
//todo fix this code to work with fragments but not now!
//getFragmentManager().beginTransaction()
// .replace(android.R.id.content, new SettingsFragment())
// .commit();
setupSimplePreferencesScreen();
}
getPreferenceManager()
.setSharedPreferencesName(getString(R.string.keySharedPreferences));
/**
* Shows the simplified settings UI if the device configuration if the
* device configuration dictates that a simplified, single-pane UI should be
* shown.
*/
private void setupSimplePreferencesScreen() {
if (!isSimplePreferences(this)) {
return;
}
// In the simplified UI, fragments are not used at all and we instead
// use the older PreferenceActivity APIs.
// Add 'general' preferences.
addPreferencesFromResource(R.xml.pref_general);
final SharedPreferences sharedPreferences = getPreferenceManager()
.getSharedPreferences();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(sharedPreferences.getString(
getString(R.string.keyHost),
getString(R.string.not_set)));
stringBuilder.append(":");
Boolean useSsl = sharedPreferences.getBoolean(
getString(R.string.key_ssl_use), false);
stringBuilder.append(
String.format("%s %s",
sharedPreferences.getString(
getString(R.string.keyPort),
getString(R.string.not_set)), useSsl ? "(SSL)" : ""));
final Preference hostPreference = findPreference(getString(R.string.keyHost));
hostPreference.setTitle(
getPreferenceManager().getSharedPreferences()
.getString(
getString(R.string.key_profile_selected_title),
getString(R.string.url)
)
);
hostPreference.setSummary(stringBuilder.toString());
Preference preference = findPreference(getString(R.string.keyHost));
preference.setIntent(new Intent(this, ConnectionActivity.class));
// Add 'notifications' preferences, and a corresponding header.
PreferenceCategory fakeHeader = new PreferenceCategory(this);
fakeHeader.setTitle(R.string.connection_configuration);
getPreferenceScreen().addPreference(fakeHeader);
addPreferencesFromResource(R.xml.pref_notification);
// Bind the summaries of EditText/List/Dialog/Ringtone preferences to
// their values. When their values change, their summaries are updated
// to reflect the new value, per the Android Design guidelines.
bindPreferenceSummaryToValue(findPreference("key_text_size"));
bindPreferenceSummaryToValue(findPreference("key_connection_timeout"));
bindPreferenceSummaryToValue(findPreference("key_host"));
bindPreferenceSummaryToValue(findPreference("key_port"));
bindPreferenceSummaryToValue(findPreference("key_userid"));
bindPreferenceSummaryToValue(findPreference("key_password"));
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName(getString(R.string.keySharedPreferences));
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.pref_general);
/**
* {@inheritDoc}
*/
@Override
public boolean onIsMultiPane() {
return isXLargeTablet(this) && !isSimplePreferences(this);
}
/**
* Helper method to determine if the device has an extra-large screen. For
* example, 10" tablets are extra-large.
*/
private static boolean isXLargeTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
}
/**
* Determines whether the simplified settings UI should be shown. This is
* true if this is forced via {@link #ALWAYS_SIMPLE_PREFS}, or the device
* doesn't have newer APIs like {@link PreferenceFragment}, or the device
* doesn't have an extra-large screen. In these cases, a single-pane
* "simplified" settings UI should be shown.
*/
private static boolean isSimplePreferences(Context context) {
return ALWAYS_SIMPLE_PREFS
|| Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB
|| !isXLargeTablet(context);
}
/**
* {@inheritDoc}
*/
@Override
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void onBuildHeaders(List<Header> target) {
if (!isSimplePreferences(this)) {
loadHeadersFromResource(R.xml.pref_headers, target);
}
}
@Override
protected boolean isValidFragment (String fragmentName) {
return true;
}
/**
* A preference value change listener that updates the preference's summary
* to reflect its new value.
*/
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();
if (preference instanceof ListPreference) {
// For list preferences, look up the correct display value in
// the preference's 'entries' list.
ListPreference listPreference = (ListPreference) preference;
int index = listPreference.findIndexOfValue(stringValue);
// Set the summary to reflect the new value.
preference.setSummary(
index >= 0
? listPreference.getEntries()[index]
: null);
} else {
// For all other preferences, set the summary to the value's
// simple string representation.
preference.setSummary(stringValue);
}
return true;
}
};
/**
* Binds a preference's summary to its value. More specifically, when the
* preference's value is changed, its summary (line of text below the
* preference title) is updated to reflect the value. The summary is also
* immediately updated upon calling this method. The exact display format is
* dependent on the type of preference.
*
* @see #sBindPreferenceSummaryToValueListener
*/
private static void bindPreferenceSummaryToValue(Preference preference) {
// Set the listener to watch for value changes.
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
// Trigger the listener immediately with the preference's
// current value.
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getString(preference.getKey(), ""));
}
/**
* This fragment shows general preferences only. It is used when the
* activity is showing a two-pane settings UI.
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
// Bind the summaries of EditText/List/Dialog/Ringtone preferences
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
bindPreferenceSummaryToValue(findPreference("key_text_size"));
}
}
/**
* This fragment shows notification preferences only. It is used when the
* activity is showing a two-pane settings UI.
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class NotificationPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_notification);
// Bind the summaries of EditText/List/Dialog/Ringtone preferences
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
bindPreferenceSummaryToValue(findPreference("key_connection_timeout"));
bindPreferenceSummaryToValue(findPreference("key_host"));
bindPreferenceSummaryToValue(findPreference("key_port"));
bindPreferenceSummaryToValue(findPreference("key_userid"));
bindPreferenceSummaryToValue(findPreference("key_password"));
}
}
}

View File

@ -20,12 +20,11 @@ package org.openlp.android2.common;
import java.security.KeyStore;
import java.util.*;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
import com.loopj.android.http.AsyncHttpClient;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.openlp.android2.R;
/**
@ -42,56 +41,29 @@ public class OpenLPHttpClient {
this.context = context;
}
private String getPreference(Map preferences, String key, String defaultValue) {
if (preferences.containsKey(key)) {
return preferences.get(key).toString();
} else {
return defaultValue;
}
}
private Integer getPreference(Map preferences, String key, Integer defaultValue) {
if (preferences.containsKey(key)) {
return Integer.valueOf(preferences.get(key).toString());
} else {
return defaultValue;
}
}
private Boolean getPreference(Map preferences, String key, Boolean defaultValue) {
if (preferences.containsKey(key)) {
return Boolean.valueOf(preferences.get(key).toString());
} else {
return defaultValue;
}
}
public String getAbsoluteUrl(AsyncHttpClient client) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
String urlBase = getBaseUrl();
Map<String, ?> preferences = context.getSharedPreferences(context.getString(R.string.keySharedPreferences),
Context.MODE_PRIVATE).getAll();
Log.d(LOG_TAG, "Base Url set to " + urlBase);
String userid = getPreference(preferences, context.getString(R.string.key_userid), "openlp");
String userid = sharedPrefs.getString(context.getString(R.string.key_userid), "openlp");
String password = getPreference(preferences, context.getString(R.string.key_password), "password");
String password = sharedPrefs.getString(context.getString(R.string.key_password), "password");
Log.d(LOG_TAG, "Credentials set to " + userid + " : " + password);
client.setBasicAuth(userid,password);
Credentials creds = new UsernamePasswordCredentials(userid, password);
int connectionTimeout = context.getResources().getInteger(
R.integer.connectionTimeoutDefaultValue);
if (getPreference(preferences, context.getString(R.string.keyEnableCustomTimeout), false)) {
if (sharedPrefs.getBoolean(context.getString(R.string.key_enable_custom_timeout), false)) {
Log.d(LOG_TAG, "Overriding Connection and Socket timeouts");
connectionTimeout = getPreference(preferences,
context.getString(R.string.keyConnectionTimeout),
context.getResources().getInteger(
R.integer.connectionTimeoutDefaultValue)
connectionTimeout = sharedPrefs.getInt(context.getString(R.string.key_connection_timeout),
context.getResources().getInteger(R.integer.connectionTimeoutDefaultValue)
);
}
client.setTimeout(connectionTimeout);
@ -104,18 +76,19 @@ public class OpenLPHttpClient {
client.setSSLSocketFactory(sf);
}
catch (Exception e){
//
}
}
return urlBase;
}
public String getBaseUrl(){
Map<String, ?> preferences = context.getSharedPreferences(context.getString(R.string.keySharedPreferences), Context.MODE_PRIVATE).getAll();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
useSSL = getPreference(preferences, context.getString(R.string.key_ssl_use), false);
String host = getPreference(preferences, context.getString(R.string.keyHost),
context.getString(R.string.hostDefaultValue));
String port = getPreference(preferences, context.getString(R.string.keyPort), "4316");
useSSL =sharedPrefs.getBoolean(context.getString(R.string.key_ssl_use), false);
String host = sharedPrefs.getString(context.getString(R.string.key_host),
context.getString(R.string.host_default_value));
String port = sharedPrefs.getString(context.getString(R.string.key_port), "4316");
return String.format("http%s://%s:%s", useSSL ? "s" : "", host, port);

View File

@ -36,8 +36,7 @@ public class AboutFragment extends Fragment {
}
public static AboutFragment newInstance() {
AboutFragment fragment = new AboutFragment();
return fragment;
return new AboutFragment();
}
@Override

View File

@ -35,8 +35,7 @@ public class HomeFragment extends Fragment {
}
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
return fragment;
return new HomeFragment();
}
@Override

View File

@ -33,6 +33,7 @@ import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@ -54,8 +55,7 @@ public class LiveListFragment extends OpenLPFragment {
private String LOG_TAG = LiveListFragment.class.getName();
public static LiveListFragment newInstance() {
LiveListFragment fragment = new LiveListFragment();
return fragment;
return new LiveListFragment();
}
/**
@ -84,22 +84,22 @@ public class LiveListFragment extends OpenLPFragment {
List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
selected = 0;
try {
JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("slides");
for (int i = 0; i < items.length(); ++i) {
JSONObject item = items.getJSONObject(i);
try {
JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("slides");
for (int i = 0; i < items.length(); ++i) {
JSONObject item = items.getJSONObject(i);
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("tag", item.getString("tag"));
if (item.getString("selected").equals("true")) {
selected = i;
}
hm.put("liveListNormal", Html.fromHtml(item.getString("html")).toString());
aList.add(hm);
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("tag", item.getString("tag"));
if (item.getString("selected").equals("true")) {
selected = i;
}
} catch (JSONException e) {
e.printStackTrace();
hm.put("liveListNormal", Html.fromHtml(item.getString("html")).toString());
aList.add(hm);
}
} catch (JSONException e) {
e.printStackTrace();
}
// Keys used in Hashmap
String[] from = {"tag", "liveListNormal", "liveListSelected"};
@ -108,30 +108,30 @@ public class LiveListFragment extends OpenLPFragment {
int[] to = {R.id.tag, R.id.liveListNormal, R.id.liveListSelected};
SharedPreferences prefs = context.getSharedPreferences(
context.getString(R.string.keySharedPreferences),
context.getString(R.string.key_shared_preferences),
Context.MODE_PRIVATE);
final int size = Integer.parseInt(prefs.getString(
context.getString(R.string.keyTextSize),
context.getString(R.string.key_text_size),
String.valueOf(context.getResources().getInteger(
R.integer.textSizeDefaultValue))));
// Instantiating an adapter to store each items
ListAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList,
R.layout.fragment_livelist, from, to){
R.layout.fragment_livelist, from, to) {
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text1 = (TextView) view.findViewById(R.id.tag);
text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
TextView text2 = (TextView) view.findViewById(R.id.liveListNormal);
text2.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
if (selected == position){
if (selected == position) {
text2.setTextColor(Color.parseColor("#000000"));
text2.setTypeface(null, Typeface.BOLD_ITALIC);
}
return view;
};
}
};
setListAdapter(adapter);
getListView().setSelection(selected - 1);
@ -140,7 +140,7 @@ public class LiveListFragment extends OpenLPFragment {
@Override
public void refreshDisplay(){
public void refreshDisplay() {
Log.d(LOG_TAG, "Resuming...");
triggerTextRequest(Api.LIVE_TEXT);
}

View File

@ -27,8 +27,7 @@ public class LiveWebFragment extends WebFragment {
}
public static LiveWebFragment newInstance() {
LiveWebFragment fragment = new LiveWebFragment();
return fragment;
return new LiveWebFragment();
}
}

View File

@ -18,6 +18,7 @@
*******************************************************************************/
package org.openlp.android2.fragments;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.support.v7.app.ActionBar;
@ -184,6 +185,7 @@ public class NavigationDrawerFragment extends Fragment {
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setBackgroundDrawable(new ColorDrawable(0xFF000000));
// ActionBarDrawerToggle ties together the the proper interactions
// between the navigation drawer and the action bar app icon.
@ -300,11 +302,6 @@ public class NavigationDrawerFragment extends Fragment {
return true;
}
if (item.getItemId() == R.id.action_example) {
Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}

View File

@ -161,11 +161,11 @@ public class ServiceListFragment extends OpenLPFragment {
int[] to = {R.id.icon, R.id.serviceListText};
SharedPreferences prefs = context.getSharedPreferences(
context.getString(R.string.keySharedPreferences),
context.getString(R.string.key_shared_preferences),
Context.MODE_PRIVATE);
final int size = Integer.parseInt(prefs.getString(
context.getString(R.string.keyTextSize),
context.getString(R.string.key_text_size),
String.valueOf(context.getResources().getInteger(
R.integer.textSizeDefaultValue))));

View File

@ -29,7 +29,6 @@ public class StageWebFragment extends WebFragment {
public static StageWebFragment newInstance() {
StageWebFragment fragment = new StageWebFragment();
return fragment;
return new StageWebFragment();
}
}

View File

@ -1,12 +1,16 @@
<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
android:layout_width="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout android:id="@+id/container" android:layout_width="match_parent"
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- android:layout_gravity="start" tells DrawerLayout to treat
@ -16,9 +20,12 @@
android:layout_gravity="left" instead. -->
<!-- The drawer is given a fixed width in dp and extends the full height of
the container. -->
<fragment android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
android:layout_gravity="start" android:name="org.openlp.android2.fragments.NavigationDrawerFragment"
<fragment
android:id="@+id/navigation_drawer"
android:name="org.openlp.android2.fragments.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>

View File

@ -13,10 +13,11 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/enter_alert_text"
android:id="@+id/textView"
android:autoText="true"
android:inputType="textLongMessage"
android:textStyle="bold|italic"
android:textSize="40px"
android:height="45dp"/>
android:height="45px"/>
<EditText
android:id="@+id/alertText"
android:layout_width="290dp"

View File

@ -13,10 +13,9 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/display_blank_summary"
android:id="@+id/textView"
android:autoText="true"
android:textStyle="bold|italic"
android:textSize="40px"
android:height="45dp"/>
android:height="45px"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -1,8 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/action_example" android:title="@string/action_settings"
app:showAsAction="withText|ifRoom" />
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>

View File

@ -5,23 +5,23 @@
android:visible="false"
android:icon="@drawable/ic_arrow_back"
android:title="@string/action_back"
app:showAsAction="always" />
app:showAsAction="ifRoom" />
<item android:id="@+id/action_blank"
android:checkable="true"
android:visible="true"
android:icon="@drawable/ic_settings_display"
android:title="@string/action_blank"
app:showAsAction="always" />
app:showAsAction="ifRoom" />
<item android:id="@+id/action_alert"
android:checkable="true"
android:visible="true"
android:icon="@drawable/ic_alarm_add"
android:title="@string/action_alert"
app:showAsAction="always" />
app:showAsAction="ifRoom" />
<item android:id="@+id/action_refresh"
android:icon="@drawable/ic_refresh"
android:title="@string/action_refresh"
app:showAsAction="never|withText" />
app:showAsAction="ifRoom" />
<item android:id="@+id/action_search"
android:icon="@drawable/ic_search"
android:title="@string/action_search"

View File

@ -1,10 +1,9 @@
<resources>
<!-- STRING -->
<string name="hostDefaultValue">192.168.1.1</string>
<string name="portDefaultValue">4316</string>
<string name="ssl.port.default">4317</string>
<string name="useridDefaultValue">userid</string>
<string name="passwordDefaultValue">password</string>
<string name="host_default_value">192.168.0.1</string>
<string name="port_default_value">4316</string>
<string name="userid_default_value">userid</string>
<string name="password_default_value">password</string>
<!-- INTEGER -->
<integer name="connectionTimeoutDefaultValue">3000</integer>

View File

@ -1,15 +1,12 @@
<resources>
<string name="keyEnableCustomTimeout">enableCustomTimeout</string>
<string name="keyBackgroundService">backgroundService</string>
<string name="keyConnectionTimeout">connectionTimeout</string>
<string name="keyDisplayBlankType">blankType</string>
<string name="keyTextSize">textSize</string>
<string name="keySocketTimeout">socketTimeout</string>
<string name="keyHost">keyHost</string>
<string name="keyPort">keyPort</string>
<string name="key.userid">key.userid</string>
<string name="key.password">key.password</string>
<string name="keySharedPreferences">keySharedPreferences</string>
<string name="key.ssl.use">ssl.use</string>
<string name="key.profile.selected.title">key.profile.selected.title</string>
<string name="key_enable_custom_timeout">key_enable_custom_timeout</string>
<string name="key_connection_timeout">key_connection_timeout</string>
<string name="key_text_size">key_text_size</string>
<string name="key_host">key_host</string>
<string name="key_port">key_port</string>
<string name="key_userid">key_userid</string>
<string name="key_password">key_password</string>
<string name="key_shared_preferences">key_shared_preferences</string>
<string name="key_ssl_use">key_ssl_use</string>
</resources>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="about_text">Version</string>
<string name="about_display_1">OpenLP is free church presentation software</string>
<string name="about_display_2">Find out more about visit the OpenLP website_</string>
<string name="about_display_4">Copyright</string>
@ -14,33 +13,20 @@
<string name="action_alert">Alert</string>
<string name="action_back">Back</string>
<string name="action_blank">Toggle Display</string>
<string name="action_connections">Connections</string>
<string name="action_preferences">Preferences</string>
<string name="action_refresh">Refresh</string>
<string name="action_search">Search</string>
<string name="app_name">OpenLP</string>
<string name="cancel">Cancel</string>
<string name="connection_add_by_menu">Tap to add a new profile</string>
<string name="connection_available_configurations">List of available profiles</string>
<string name="connection_configuration">Configure Network</string>
<string name="connection_password">Password</string>
<string name="connection_profile_activate">Save and Activate</string>
<string name="connection_profile_active_toast">Active Profile</string>
<string name="connection_profile_active">Active Profile - Tap to manage</string>
<string name="connection_profile_not_saved">Tap to edit properties</string>
<string name="connection_profile_new_server">New Server</string>
<string name="connection_profile_remove">Remove</string>
<string name="connection_profile_remove_summary">Remove this configuration</string>
<string name="connection_profile_server">Server</string>
<string name="connection_profile">Server Details</string>
<string name="connection_profile_ssl_use">Use HTTPS</string>
<string name="connection_profile_ssl_summary">Specify whether HTTPS should be used</string>
<string name="connection_profile_summary_activate">Tap to set active</string>
<string name="connection_profile_title">Profile Title</string>
<string name="connection_timeout">Connection Timeout</string>
<string name="connection_timedout">Connection timed out</string>
<string name="connection_timeout_summary">Select a value (milliseconds)</string>
<string name="connection_userid">Userid</string>
<string name="custom_timeout">Set Custom Timeout</string>
<string name="custom_timeouts_summary">Check to modify timeout settings</string>
<string name="display_blank_summary">Select the required blank type</string>
<string name="display_desktop">Blank display to Desktop</string>
<string name="display_reset">Reset Display</string>
@ -55,15 +41,14 @@
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>
<string name="none">None</string>
<string name="not_set">Not set</string>
<string name="port">Port</string>
<string name="process">Process</string>
<string name="service_list">Service List</string>
<string name="stage_view">Stage View</string>
<string name="text_size_type">Set Display Text Size</string>
<string name="text_size_type">Display Text Size</string>
<string name="text_size">Select display text size</string>
<string name="text_size_summary">Change the Service text size</string>
<string name="url">Server</string>
<string name="title_activity_settings">Settings</string>
<string name="url_hint">Hostname or IP</string>
<string name="unable">Unable to process request - check network settings</string>
</resources>

View File

@ -1,61 +0,0 @@
<resources>
<string name="title_activity_settings">Settings</string>
<!-- Strings related to Settings -->
<!-- Example General settings -->
<string name="pref_header_general">General</string>
<string name="pref_title_social_recommendations">Enable social recommendations</string>
<string name="pref_description_social_recommendations">Recommendations for people to contact
based on your message history
</string>
<string name="pref_title_display_name">Display name</string>
<string name="pref_default_display_name">John Smith</string>
<string name="pref_title_add_friends_to_messages">Add friends to messages</string>
<string-array name="pref_example_list_titles">
<item>Always</item>
<item>When possible</item>
<item>Never</item>
</string-array>
<string-array name="pref_example_list_values">
<item>1</item>
<item>0</item>
<item>-1</item>
</string-array>
<!-- Example settings for Data & Sync -->
<string name="pref_header_data_sync">Data &amp; sync</string>
<string name="pref_title_sync_frequency">Sync frequency</string>
<string-array name="pref_sync_frequency_titles">
<item>15 minutes</item>
<item>30 minutes</item>
<item>1 hour</item>
<item>3 hours</item>
<item>6 hours</item>
<item>Never</item>
</string-array>
<string-array name="pref_sync_frequency_values">
<item>15</item>
<item>30</item>
<item>60</item>
<item>180</item>
<item>360</item>
<item>-1</item>
</string-array>
<string name="pref_title_system_sync_settings">System sync settings</string>
<!-- Example settings for Notifications -->
<string name="pref_header_notifications">Notifications</string>
<string name="pref_title_new_message_notifications">New message notifications</string>
<string name="pref_title_ringtone">Ringtone</string>
<string name="pref_ringtone_silent">Silent</string>
<string name="pref_title_vibrate">Vibrate</string>
</resources>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
>
</PreferenceScreen>

View File

@ -1,21 +0,0 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- NOTE: Hide buttons to simplify the UI. Users can touch outside the dialog to
dismiss it. -->
<!-- NOTE: ListPreference's summary should be set to its value by the activity code. -->
<ListPreference
android:key="sync_frequency"
android:title="@string/pref_title_sync_frequency"
android:entries="@array/pref_sync_frequency_titles"
android:entryValues="@array/pref_sync_frequency_values"
android:defaultValue="180"
android:negativeButtonText="@null"
android:positiveButtonText="@null" />
<!-- This preference simply launches an intent when selected. Use this UI sparingly, per
design guidelines. -->
<Preference android:title="@string/pref_title_system_sync_settings">
<intent android:action="android.settings.SYNC_SETTINGS" />
</Preference>
</PreferenceScreen>

View File

@ -1,41 +1,11 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/connection_profile_active"
android:key="category.server">
<Preference
android:title="@string/url"
android:key="@string/keyHost"
android:hint="@string/url_hint"
android:inputType="textUri"
android:editable="false"
android:name="@string/url"/>
</PreferenceCategory>
<PreferenceCategory
android:key="pref_key_test_size_setting"
android:title="@string/text_size_type">
<ListPreference
android:defaultValue="@integer/textSizeDefaultValue"
android:entries="@array/textSizeValueEntries"
android:entryValues="@array/textSizeValues"
android:key="@string/keyTextSize"
android:summary="@string/text_size_summary"
android:title="@string/text_size" />
</PreferenceCategory>
<PreferenceCategory
android:key="pref_key_custom_timeout_setting"
android:title="@string/custom_timeout">
<CheckBoxPreference
android:key="@string/keyEnableCustomTimeout"
android:summary="@string/custom_timeouts_summary"
android:title="@string/enable_custom_timeouts" />
<ListPreference
android:defaultValue="@integer/connectionTimeoutDefaultValue"
android:dependency="@string/keyEnableCustomTimeout"
android:entries="@array/socketValueEntries"
android:entryValues="@array/socketValues"
android:key="@string/keyConnectionTimeout"
android:summary="@string/connection_timeout_summary"
android:title="@string/connection_timeout" />
</PreferenceCategory>
<ListPreference
android:key="key_text_size"
android:defaultValue="@integer/textSizeDefaultValue"
android:entries="@array/textSizeValueEntries"
android:entryValues="@array/textSizeValues"
android:summary="@string/text_size_summary"
android:title="@string/text_size" />
</PreferenceScreen>

View File

@ -3,15 +3,12 @@
<!-- These settings headers are only used on tablets. -->
<header
android:fragment="org.openlp.android2.fragments.SettingsActivity$GeneralPreferenceFragment"
android:title="@string/pref_header_general" />
android:fragment="org.openlp.android2.activities.SettingsActivity$GeneralPreferenceFragment"
android:title="@string/text_size_type" />
<header
android:fragment="org.openlp.android2.fragments.SettingsActivity$NotificationPreferenceFragment"
android:title="@string/pref_header_notifications" />
android:fragment="org.openlp.android2.activities.SettingsActivity$NotificationPreferenceFragment"
android:title="@string/connection_configuration" />
<header
android:fragment="org.openlp.android2.fragments.SettingsActivity$DataSyncPreferenceFragment"
android:title="@string/pref_header_data_sync" />
</preference-headers>

View File

@ -1,27 +1,59 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- A 'parent' preference, which enables/disables child preferences (below)
when checked/unchecked. -->
<CheckBoxPreference
android:key="notifications_new_message"
android:title="@string/pref_title_new_message_notifications"
android:defaultValue="true" />
<PreferenceCategory
android:key="pref_key_custom_timeout_setting"
android:title="@string/custom_timeout">
<CheckBoxPreference
android:key="@string/key_enable_custom_timeout"
android:title="@string/enable_custom_timeouts" />
<ListPreference
android:key="@string/key_connection_timeout"
android:defaultValue="@integer/connectionTimeoutDefaultValue"
android:dependency="@string/key_enable_custom_timeout"
android:entries="@array/socketValueEntries"
android:entryValues="@array/socketValues"
android:summary="@string/connection_timeout_summary"
android:title="@string/connection_timeout" />
</PreferenceCategory>
<!-- Allows the user to choose a ringtone in the 'notification' category. -->
<!-- NOTE: This preference will be enabled only when the checkbox above is checked. -->
<!-- NOTE: RingtonePreference's summary should be set to its value by the activity code. -->
<RingtonePreference
android:dependency="notifications_new_message"
android:key="notifications_new_message_ringtone"
android:title="@string/pref_title_ringtone"
android:ringtoneType="notification"
android:defaultValue="content://settings/system/notification_sound" />
<PreferenceCategory
android:title="@string/connection_profile">
<!-- NOTE: This preference will be enabled only when the checkbox above is checked. -->
<CheckBoxPreference
android:dependency="notifications_new_message"
android:key="notifications_new_message_vibrate"
android:title="@string/pref_title_vibrate"
android:defaultValue="true" />
<EditTextPreference
android:key="@string/key_host"
android:title="@string/url_hint"
android:summary="@string/url_hint"
android:defaultValue="@string/host_default_value"
android:inputType="textUri" />
<EditTextPreference
android:key="@string/key_port"
android:title="@string/port"
android:summary="@string/port"
android:defaultValue="@string/port_default_value"
android:inputType="number" />
<CheckBoxPreference
android:key="@string/key_ssl_use"
android:title="@string/connection_profile_ssl_use"
android:summary="@string/connection_profile_ssl_summary"
android:defaultValue="false" />
<EditTextPreference
android:key="@string/key_userid"
android:title="@string/connection_userid"
android:summary="@string/userid_default_value"
android:defaultValue="@string/userid_default_value"
android:inputType="textNoSuggestions" />
<EditTextPreference
android:key="@string/key_password"
android:title="@string/connection_password"
android:summary="@string/password_default_value"
android:defaultValue="@string/password_default_value"
android:inputType="textVisiblePassword" />
</PreferenceCategory>
</PreferenceScreen>