← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~bennett-6/openlp/android2 into lp:openlp

 

Bennett Piater has proposed merging lp:~bennett-6/openlp/android2 into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~bennett-6/openlp/android2/+merge/337261

Hardware volume keys to change slides
-- 
Your team OpenLP Core is requested to review the proposed merge of lp:~bennett-6/openlp/android2 into lp:openlp.
=== added file '.bzrignore'
--- .bzrignore	1970-01-01 00:00:00 +0000
+++ .bzrignore	2018-02-07 11:41:24 +0000
@@ -0,0 +1,12 @@
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/app/build
+/.idea
+/.bzr
+.apk
+/.git
+.gitignore

=== renamed file '.bzrignore' => '.bzrignore.moved'
=== added file '.gitignore'
--- .gitignore	1970-01-01 00:00:00 +0000
+++ .gitignore	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/app/build
+/.idea
+/.bzr
+.bzrignore
+.apk

=== added file 'OpenLP2.iml'
--- OpenLP2.iml	1970-01-01 00:00:00 +0000
+++ OpenLP2.iml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="OpenLP2" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="java-gradle" name="Java-Gradle">
+      <configuration>
+        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
+        <option name="BUILDABLE" value="false" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.gradle" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file

=== added directory 'app'
=== added file 'app/.gitignore'
--- app/.gitignore	1970-01-01 00:00:00 +0000
+++ app/.gitignore	2018-02-07 11:41:24 +0000
@@ -0,0 +1,1 @@
+/build

=== added file 'app/app.iml'
--- app/app.iml	1970-01-01 00:00:00 +0000
+++ app/app.iml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android-gradle" name="Android-Gradle">
+      <configuration>
+        <option name="GRADLE_PROJECT_PATH" value=":app" />
+      </configuration>
+    </facet>
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug" />
+        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+        <afterSyncTasks>
+          <task>generateDebugSources</task>
+        </afterSyncTasks>
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+    <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
+    <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes-jar" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
+      <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="com.android.support:support-fragment-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:support-annotations:25.0.0@jar" level="project" />
+    <orderEntry type="library" name="com.android.support:support-core-ui-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:support-core-utils-25.0.0" level="project" />
+    <orderEntry type="library" name="__local_aars__:/home/bennett/Github/openlp-android2/app/libs/classes.jar:unspecified@jar" level="project" />
+    <orderEntry type="library" name="com.android.support:appcompat-v7-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:transition-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:support-media-compat-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:support-compat-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:design-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:animated-vector-drawable-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:recyclerview-v7-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:support-vector-drawable-25.0.0" level="project" />
+    <orderEntry type="library" name="com.android.support:support-v4-25.0.0" level="project" />
+  </component>
+</module>
\ No newline at end of file

=== added file 'app/build.gradle'
--- app/build.gradle	1970-01-01 00:00:00 +0000
+++ app/build.gradle	2018-02-07 11:41:24 +0000
@@ -0,0 +1,42 @@
+apply plugin: 'com.android.application'
+project.archivesBaseName = 'OpenLP'
+android {
+    compileSdkVersion 25
+    buildToolsVersion '26.0.2'
+
+    defaultConfig {
+        applicationId "org.openlp.android2"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 6
+        versionName "2.0"
+        vectorDrawables.useSupportLibrary = true
+    }
+    android {
+        lintOptions {
+            ignore 'MissingTranslation'
+        }
+    }
+    buildTypes {
+        debug {
+            debuggable true
+        }
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+    testOptions {
+        unitTests.returnDefaultValues = true
+    }
+
+    dependencies {
+        compile fileTree(include: ['*.jar'], dir: 'libs')
+        compile 'com.android.support:appcompat-v7:25.0.0'
+        compile 'com.android.support:support-v4:25.0.0'
+        compile 'com.android.support:design:25.0.0'
+    }
+}
+dependencies {
+    compile files('libs/classes.jar')
+}
\ No newline at end of file

=== added directory 'app/libs'
=== added file 'app/libs/classes.jar'
Binary files app/libs/classes.jar	1970-01-01 00:00:00 +0000 and app/libs/classes.jar	2018-02-07 11:41:24 +0000 differ
=== added file 'app/proguard-rules.pro'
--- app/proguard-rules.pro	1970-01-01 00:00:00 +0000
+++ app/proguard-rules.pro	2018-02-07 11:41:24 +0000
@@ -0,0 +1,17 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /home/tim/android-sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}

=== added directory 'app/src'
=== added directory 'app/src/androidTest'
=== added directory 'app/src/androidTest/java'
=== added directory 'app/src/main'
=== added file 'app/src/main/AndroidManifest.xml'
--- app/src/main/AndroidManifest.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/AndroidManifest.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android";
+    package="org.openlp.android2" >
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".OpenLP"
+            android:label="@string/app_name"
+            android:configChanges="orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".activities.SettingsActivity"
+            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>

=== added directory 'app/src/main/java'
=== added directory 'app/src/main/java/org'
=== added directory 'app/src/main/java/org/openlp'
=== added directory 'app/src/main/java/org/openlp/android2'
=== added file 'app/src/main/java/org/openlp/android2/OpenLP.java'
--- app/src/main/java/org/openlp/android2/OpenLP.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/OpenLP.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,323 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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;
+
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.preference.PreferenceManager;
+import android.support.v7.app.ActionBarActivity;
+import android.app.ActionBar;
+import android.app.FragmentManager;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.support.v4.widget.DrawerLayout;
+import android.view.WindowManager;
+
+import org.openlp.android2.activities.SettingsActivity;
+import org.openlp.android2.common.NavigationOptions;
+import org.openlp.android2.common.OpenLPURLBuilder;
+import org.openlp.android2.common.StateHolder;
+import org.openlp.android2.dialogs.AlertDisplayDialog;
+import org.openlp.android2.dialogs.BlankDisplayDialog;
+import org.openlp.android2.fragments.AboutFragment;
+import org.openlp.android2.fragments.HomeFragment;
+import org.openlp.android2.fragments.LiveListFragment;
+import org.openlp.android2.fragments.LiveWebFragment;
+import org.openlp.android2.fragments.NavigationDrawerFragment;
+import org.openlp.android2.fragments.SearchFragment;
+import org.openlp.android2.fragments.ServiceListFragment;
+import org.openlp.android2.fragments.StageWebFragment;
+
+
+public class OpenLP extends ActionBarActivity
+        implements NavigationDrawerFragment.NavigationDrawerCallbacks {
+
+    /**
+     * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
+     */
+    private NavigationDrawerFragment mNavigationDrawerFragment;
+
+    /**
+     * Used to store the last screen title. For use in {@link #restoreActionBar()}.
+     */
+    private final String LOG_TAG = OpenLP.class.getName();
+    private CharSequence mTitle;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        OpenLPURLBuilder.getInstance().setContext(this);
+        StateHolder.getInstance().setContext(this);
+
+        doPreferenceCheck();
+
+        mNavigationDrawerFragment = (NavigationDrawerFragment)
+                getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
+        mTitle = getTitle();
+
+        // Set up the drawer.
+        mNavigationDrawerFragment.setUp(
+                R.id.navigation_drawer,
+                (DrawerLayout) findViewById(R.id.drawer_layout));
+
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+    }
+
+    /**
+     * Check the preferences have been set at startup and if not redirect them to be set.
+     *
+     */
+    protected 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);
+        }
+    }
+
+    /**
+     * Handle configuration change.
+     *
+     * @param newConfig The new Config.
+     */
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+    }
+
+    /**
+     * Handle the selection of the Navigation Menu
+     *
+     * @param position Which item has been selected.
+     */
+    @Override
+    public void onNavigationDrawerItemSelected(int position) {
+        // update the main content by replacing fragments
+        FragmentManager fragmentManager = getFragmentManager();
+        switch (position) {
+            case NavigationOptions.Home:
+                singleTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, HomeFragment.newInstance())
+                        .commit();
+                mTitle = getString(R.string.home);
+                toggerContainer(R.id.next_button, View.GONE);
+                toggerContainer(R.id.prev_button, View.GONE);
+                break;
+            case NavigationOptions.ServiceList:
+                singleTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, ServiceListFragment.newInstance(), "servicelist")
+                        .commit();
+                mTitle = getString(R.string.service_list);
+                toggerContainer(R.id.next_button, View.VISIBLE);
+                toggerContainer(R.id.prev_button, View.VISIBLE);
+                break;
+            case NavigationOptions.LiveList:
+                duelTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container_left, ServiceListFragment.newInstance(), "servicelist")
+                        .commit();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container_right, LiveListFragment.newInstance(), "livelist")
+                        .commit();
+                mTitle = getString(R.string.live_list);
+                toggerContainer(R.id.next_button, View.VISIBLE);
+                toggerContainer(R.id.prev_button, View.VISIBLE);
+                break;
+            case NavigationOptions.StageView:
+                singleTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, StageWebFragment.newInstance())
+                        .commit();
+                mTitle = getString(R.string.stage_view);
+                toggerContainer(R.id.next_button, View.GONE);
+                toggerContainer(R.id.prev_button, View.GONE);
+                break;
+            case NavigationOptions.LiveView:
+                singleTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, LiveWebFragment.newInstance())
+                        .commit();
+                mTitle = getString(R.string.live_view);
+                toggerContainer(R.id.next_button, View.GONE);
+                toggerContainer(R.id.prev_button, View.GONE);
+                break;
+            case NavigationOptions.Search:
+                singleTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, SearchFragment.newInstance())
+                        .commit();
+                mTitle = getString(R.string.action_search);
+                toggerContainer(R.id.next_button, View.GONE);
+                toggerContainer(R.id.prev_button, View.GONE);
+                break;
+            default:
+                singleTab();
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, HomeFragment.newInstance())
+                        .commit();
+                mTitle = getString(R.string.home);
+                toggerContainer(R.id.next_button, View.GONE);
+                toggerContainer(R.id.prev_button, View.GONE);
+                break;
+        }
+    }
+
+    /**
+     * Handle volume keys to go forward/backward
+     */
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        switch (keyCode) {
+            case KeyEvent.KEYCODE_VOLUME_UP:
+                Log.d(LOG_TAG, "volume up");
+                previous(findViewById(android.R.id.content));
+                return true;
+            case KeyEvent.KEYCODE_VOLUME_DOWN:
+                Log.d(LOG_TAG, "volume down");
+                next(findViewById(android.R.id.content));
+                return true;
+
+            default:
+                return super.onKeyDown(keyCode, event);
+        }
+    }
+
+    /**
+     * Set Display to allow for Duel Columns
+     */
+    protected void duelTab(){
+        toggerContainer(R.id.container, View.GONE);
+        toggerContainer(R.id.container_right, View.VISIBLE);
+        toggerContainer(R.id.container_left, View.VISIBLE);
+    }
+
+    /**
+     * Set Display to allow for Single Columns
+     */
+    protected void singleTab(){
+        toggerContainer(R.id.container_right, View.GONE);
+        toggerContainer(R.id.container_left, View.GONE);
+        toggerContainer(R.id.container, View.VISIBLE);
+    }
+
+    /**
+     *
+     * @param container The container id to be accesses
+     * @param direction What visibility to use on the container
+     */
+    protected void toggerContainer(int container, int direction){
+        View cTainer = this.findViewById(container);
+        if (cTainer != null) {
+            cTainer.setVisibility(direction);
+        }
+    }
+
+    public void restoreActionBar() {
+        try {
+            ActionBar actionBar = getActionBar();
+            //actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+            actionBar.setDisplayShowTitleEnabled(true);
+            actionBar.setTitle(mTitle);
+        } catch (Exception e) {
+            //noop
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (!mNavigationDrawerFragment.isDrawerOpen()) {
+            // Only show items in the action bar relevant to this screen
+            // if the drawer is not showing. Otherwise, let the drawer
+            // decide what to show in the action bar.
+            getMenuInflater().inflate(R.menu.open_l, menu);
+            restoreActionBar();
+            return true;
+        }
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Handle action bar item clicks here. The action bar will
+        // automatically handle clicks on the Home/Up button, so long
+        // as you specify a parent activity in AndroidManifest.xml.
+        Intent intent;
+        switch (item.getItemId()) {
+            case R.id.action_preferences:
+                intent = new Intent(this, SettingsActivity.class);
+                startActivity(intent);
+                return true;
+            case R.id.action_refresh:
+                if (this.mTitle.equals(getString(R.string.service_list))) {
+                    refreshServiceFragment(R.id.container);
+                } else if (this.mTitle.equals(getString(R.string.live_list)) ) {
+                    refreshServiceFragment(R.id.container_left);
+                    refreshLiveFragment(R.id.container_right);
+                }
+                return true;
+            case R.id.action_blank:
+                new BlankDisplayDialog().show(getFragmentManager(), "BlankDialog");
+                return true;
+            case R.id.action_alert:
+                new AlertDisplayDialog().show(getFragmentManager(), "AlertDialog");
+                return true;
+            case R.id.action_about:
+                getFragmentManager().beginTransaction().replace(R.id.container,
+                        new AboutFragment()).commit();
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
+    public void refreshLiveFragment(int container){
+        LiveListFragment fragment = (LiveListFragment)
+                getFragmentManager().findFragmentById(container);
+        if (fragment != null) {
+            fragment.refreshDisplay();
+        }
+    }
+    public void refreshServiceFragment(int container){
+        ServiceListFragment fragment = (ServiceListFragment)
+                getFragmentManager().findFragmentById(container);
+        if (fragment != null) {
+            fragment.refreshDisplay();
+        }
+    }
+
+    public void next(View view) {
+        ServiceListFragment serviceListFragment = (ServiceListFragment) getFragmentManager().findFragmentByTag("servicelist");
+        serviceListFragment.next();
+    }
+
+    public void previous(View view) {
+        ServiceListFragment serviceListFragment = (ServiceListFragment) getFragmentManager().findFragmentByTag("servicelist");
+        serviceListFragment.previous();
+    }
+}

=== added directory 'app/src/main/java/org/openlp/android2/activities'
=== added file 'app/src/main/java/org/openlp/android2/activities/SettingsActivity.java'
--- app/src/main/java/org/openlp/android2/activities/SettingsActivity.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/activities/SettingsActivity.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,219 @@
+package org.openlp.android2.activities;
+
+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 onPostCreate(Bundle savedInstanceState) {
+        super.onPostCreate(savedInstanceState);
+
+        setupSimplePreferencesScreen();
+    }
+
+    /**
+     * 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);
+
+        // 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"));
+
+    }
+
+    /**
+     * {@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"));
+        }
+    }
+}

=== added directory 'app/src/main/java/org/openlp/android2/api'
=== added file 'app/src/main/java/org/openlp/android2/api/Api.java'
--- app/src/main/java/org/openlp/android2/api/Api.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/api/Api.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,125 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.api;
+
+/**
+ * <h1>Routes:</h1>
+ * <p/>
+ * <p/>
+ * <pre>
+ * ``/``
+ * Go to the web interface.
+ *
+ * ``/files/{filename}``
+ *
+ * ``/api/poll``
+ * {"results": {"type": "controller"}}
+ * Or, if there were no results, False::
+ * {"results": False}
+ *
+ * ``/api/display/{hide|show}``
+ * Blank or unblank the screen.
+ *
+ * ``/api/alert``
+ * {"request": {"text": "<your alert text>"}}
+ * ``/api/controller/{live|preview}/{action}``
+ * ``next``
+ * Load the next slide.
+ *
+ * ``previous``
+ * Load the previous slide.
+ *
+ * ``set``
+ * Set a specific slide. Requires an id return in a JSON-encoded dict like
+ * this::
+ *
+ * {"request": {"id": 1}}
+ *
+ * ``first``
+ * Load the first slide.
+ *
+ * ``last``
+ * Load the last slide.
+ *
+ * ``text``
+ * Fetches the text of the current song. The output is a JSON-encoded
+ * dict which looks like this::
+ *
+ * {"result": {"slides": ["...", "..."]}}
+ *
+ * ``/api/service/{action}``
+ * Perform ``{action}`` on the service manager (e.g. go live). Data is
+ * passed as a json-encoded ``data`` parameter. Valid actions are:
+ *
+ * ``next``
+ * Load the next item in the service.
+ *
+ * ``previous``
+ *
+ * ``set``
+ * Set a specific item in the service. Requires an id returned in a
+ * JSON-encoded dict like this::
+ *
+ * {"request": {"id": 1}}
+ *
+ * ``list``
+ * Request a list of items in the service. Returns a list of items in the
+ * current service in a JSON-encoded dict like this::
+ *
+ * {"results": {"items": [{...}, {...}]}}
+ * """
+ * </pre>
+ */
+
+public interface Api {
+
+    public final String LIVE_BASE = "/api/controller/live/";
+    public final String LIVE_NEXT = "/api/controller/live/next";
+    public final String LIVE_PREVIOUS = "/api/controller/live/previous";
+    public final String LIVE_TEXT = "/api/controller/live/text";
+    public final String LIVE_SET = "/api/controller/live/set?data=";
+    public final String STAGE_VIEW = "/stage";
+    public final String LIVE_VIEW = "/main";
+
+    public final String SERVICE_LIST = "/api/service/list";
+    public final String SERVICE_SET = "/api/service/set?data=";
+
+    public final String DISPLAY_SHOW = "/api/display/show";
+    public final String DISPLAY_BLANK = "/api/display/blank";
+    public final String DISPLAY_THEME = "/api/display/theme";
+    public final String DISPLAY_DESKTOP = "/api/display/desktop";
+    public final String POLL_STATUS = "/api/poll";
+
+    public final String ALERT = "/api/alert?data=";
+
+    public final String SEARCHABLE_PLUGINS = "/api/plugin/search";
+    /**
+     * This is a special string that uses the String.format() method. See
+     * {@link String#format(String, Object...)}
+     */
+    public final String SEARCH_PLUGIN_FORMATTED = "/api/%s/search?data=";
+    /**
+     * Match intent extra key with regex since multiple plugins can be inserted
+     */
+    public final String SEARCH_PLUGIN_ADD = "/api/%s/add?data=";
+    /**
+     * Match intent extra key with regex since multiple plugins can be inserted
+     */
+    public final String SEARCH_PLUGIN_LIVE = "/api/%s/live?data=";
+}

=== added directory 'app/src/main/java/org/openlp/android2/common'
=== added file 'app/src/main/java/org/openlp/android2/common/JsonHelpers.java'
--- app/src/main/java/org/openlp/android2/common/JsonHelpers.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/JsonHelpers.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,58 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.common;
+
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONStringer;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+public class JsonHelpers {
+
+    private static String LOG_TAG = JsonHelpers.class.getName();
+
+    public static String createRequestJSON(String key, String value) throws JSONHandlerException {
+        try {
+            String responseJSON;
+            JSONObject jo = new JSONObject();
+            jo.put(key, value);
+            responseJSON = new JSONStringer().object().key("request").value(jo)
+                    .endObject().toString();
+            responseJSON = URLEncoder.encode(responseJSON, "UTF-8");
+            Log.d(LOG_TAG, String.format("createRequestJSON: %s : %s : %s", key, value, responseJSON));
+            return responseJSON;
+        } catch (JSONException e) {
+            throw new JSONHandlerException(e);
+        } catch (UnsupportedEncodingException e) {
+            throw new JSONHandlerException(e);
+        }
+    }
+
+    public static class JSONHandlerException extends Exception {
+        private static final long serialVersionUID = -6772307308404816615L;
+
+        public JSONHandlerException(Throwable throwable) {
+            super(throwable);
+        }
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/common/NavigationOptions.java'
--- app/src/main/java/org/openlp/android2/common/NavigationOptions.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/NavigationOptions.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,28 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.common;
+
+public class NavigationOptions{
+    public final static int Home = 0;
+    public final static int ServiceList = 1;
+    public final static int LiveList = 2;
+    public final static int StageView = 3;
+    public final static int LiveView = 4;
+    public final static int Search = 5;
+}

=== added file 'app/src/main/java/org/openlp/android2/common/OpenLPDialog.java'
--- app/src/main/java/org/openlp/android2/common/OpenLPDialog.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/OpenLPDialog.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,124 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.common;
+
+import android.app.DialogFragment;
+import android.content.Context;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.volley.AuthFailureError;
+import com.android.volley.ClientError;
+import com.android.volley.DefaultRetryPolicy;
+import com.android.volley.NetworkError;
+import com.android.volley.NoConnectionError;
+import com.android.volley.ParseError;
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.ServerError;
+import com.android.volley.TimeoutError;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+abstract public class OpenLPDialog extends DialogFragment {
+
+    private final String LOG_TAG = OpenLPDialog.class.getName();
+
+    protected Context context;
+    private String urlcalled;
+
+    protected void populateDisplay(String responseString) {
+    }
+
+    protected void processUpdate(String responseString) {
+    }
+
+    protected void errorDisplay(String responseString) {
+    }
+
+    protected void triggerTextRequest(final String urlbase) {
+        String url = RequestQueueService.getInstance(this.context).getUrl(urlbase);
+        urlcalled = urlbase;
+
+        StringRequest request = new StringRequest(
+                Request.Method.GET,
+                url,
+                listener,
+                errorListener) {
+
+            @Override
+            public Map<String, String> getHeaders() throws AuthFailureError {
+                return createBasicAuthHeader("user", "passwd");
+            }
+        };
+        //Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
+        // Volley does retry for you if you have specified the policy.
+        request.setRetryPolicy(new DefaultRetryPolicy(
+                RequestQueueService.getInstance(this.context).getConnectionTimeout(),
+                DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
+        request.setTag("OpenLP");
+        RequestQueueService.getInstance(this.context).addToRequestQueue(request);
+    }
+
+    Map<String, String> createBasicAuthHeader(String username, String password) {
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Authorization", RequestQueueService.getInstance(context).getBasicAuth());
+
+        return headers;
+    }
+
+    Response.Listener<String> listener = new Response.Listener<String>() {
+        @Override
+        public void onResponse(String response) {
+            if (urlcalled.equals(Api.POLL_STATUS)) {
+                populateDisplay(response);
+            } else {
+                processUpdate(response);
+            }
+        }
+    };
+
+    Response.ErrorListener errorListener = new Response.ErrorListener() {
+        @Override
+        public void onErrorResponse(VolleyError error) {
+            Log.d(LOG_TAG, String.format("Call response error = %s", error.toString()));
+            if (error instanceof NetworkError) {
+            } else if (error instanceof ClientError) {
+            } else if (error instanceof ServerError) {
+            } else if (error instanceof AuthFailureError) {
+                Toast.makeText(context, R.string.httpreturn_unauthorised,
+                        Toast.LENGTH_LONG).show();
+            } else if (error instanceof ParseError) {
+            } else if (error instanceof NoConnectionError) {
+            } else if (error instanceof TimeoutError) {
+            }
+            Toast.makeText(context, R.string.unable,
+                    Toast.LENGTH_LONG).show();
+            errorDisplay(error.toString());
+
+        }
+    };
+}

=== added file 'app/src/main/java/org/openlp/android2/common/OpenLPFragment.java'
--- app/src/main/java/org/openlp/android2/common/OpenLPFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/OpenLPFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,138 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.common;
+
+
+import android.app.ListFragment;
+import android.content.Context;
+import android.util.Log;
+import android.view.View;
+
+import android.widget.ListView;
+import android.widget.Toast;
+
+import com.android.volley.AuthFailureError;
+import com.android.volley.ClientError;
+import com.android.volley.DefaultRetryPolicy;
+import com.android.volley.NetworkError;
+import com.android.volley.NoConnectionError;
+import com.android.volley.ParseError;
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.ServerError;
+import com.android.volley.TimeoutError;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+
+import java.util.HashMap;
+import java.util.Map;
+
+abstract public class OpenLPFragment extends ListFragment{
+
+    private String LOG_TAG = OpenLPFragment.class.getName();
+    public Context context;
+    protected String urlcalled;
+    protected String updateUrl;
+
+    abstract public void itemClicked(int position);
+
+    @Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        super.onListItemClick(l, v, position, id);
+        itemClicked(position);
+    }
+
+    protected void refreshDisplay(){}
+    protected void populateDisplay(String responseString, boolean inError) {}
+    protected void processUpdate(String responseString, boolean inError) {}
+
+    protected void triggerTextRequest(final String urlbase) {
+        String url = RequestQueueService.getInstance(this.context).getUrl(urlbase);
+        updateUrl = urlbase;
+
+        StringRequest request = new StringRequest(
+                Request.Method.GET,
+                url,
+                listener,
+                errorListener) {
+
+            @Override
+            public Map<String, String> getHeaders() throws AuthFailureError {
+                return createBasicAuthHeader("user", "passwd");
+            }
+        };
+        //Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
+        // Volley does retry for you if you have specified the policy.
+        request.setRetryPolicy(new DefaultRetryPolicy(
+                RequestQueueService.getInstance(this.context).getConnectionTimeout(),
+                DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
+        request.setTag("OpenLP");
+        RequestQueueService.getInstance(this.context).addToRequestQueue(request);
+    }
+
+    Map<String, String> createBasicAuthHeader(String username, String password) {
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Authorization", RequestQueueService.getInstance(context).getBasicAuth());
+
+        return headers;
+    }
+
+    Response.Listener<String> listener = new Response.Listener<String>() {
+        @Override
+        public void onResponse(String response) {
+            if (urlcalled.equals(updateUrl)) {
+                populateDisplay(response, true);
+            } else {
+                processUpdate(response, true);
+            }
+        }
+    };
+
+    Response.ErrorListener errorListener = new Response.ErrorListener() {
+        @Override
+        public void onErrorResponse(VolleyError error) {
+            Log.d(LOG_TAG, String.format("Call response error = %s", error.toString()));
+            if (error instanceof NetworkError) {
+            } else if (error instanceof ClientError) {
+            } else if (error instanceof ServerError) {
+            } else if (error instanceof AuthFailureError) {
+                Toast.makeText(context, R.string.httpreturn_unauthorised,
+                        Toast.LENGTH_LONG).show();
+            } else if (error instanceof ParseError) {
+            } else if (error instanceof NoConnectionError) {
+            } else if (error instanceof TimeoutError) {
+            }
+            Toast.makeText(context, R.string.unable,
+                    Toast.LENGTH_LONG).show();
+
+        }
+    };
+
+    public void next() {
+        Log.d(LOG_TAG, "Going to next slide");
+        triggerTextRequest(Api.LIVE_NEXT);
+    }
+
+    public void previous() {
+        Log.d(LOG_TAG, "Going to previous slide");
+        triggerTextRequest(Api.LIVE_PREVIOUS);
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java'
--- app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/OpenLPURLBuilder.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,86 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.common;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.Base64;
+import android.util.Log;
+
+import org.openlp.android2.R;
+
+public class OpenLPURLBuilder {
+    private final String LOG_TAG = OpenLPURLBuilder.class.getName();
+    private Context context;
+
+    private static OpenLPURLBuilder ourInstance = new OpenLPURLBuilder();
+
+    public static OpenLPURLBuilder getInstance() {
+        return ourInstance;
+    }
+
+    private OpenLPURLBuilder() {
+    }
+
+    public void setContext(Context context) {
+        this.context = context;
+    }
+
+    public int getConnectionTimeout() {
+
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+        int connectionTimeout = context.getResources().getInteger(
+                R.integer.connectionTimeoutDefaultValue);
+
+        if (sharedPrefs.getBoolean(context.getString(R.string.key_enable_custom_timeout), false)) {
+            Log.d(LOG_TAG, "Overriding Connection and Socket timeouts");
+
+            connectionTimeout = Integer.parseInt(sharedPrefs.getString(context.getString(R.string.key_connection_timeout),
+                    String.valueOf(context.getResources().getInteger(R.integer.connectionTimeoutDefaultValue))
+            ));
+        }
+        return connectionTimeout;
+    }
+
+    public String getBasicAuth(){
+
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+        String userid = sharedPrefs.getString(context.getString(R.string.key_userid), "openlp");
+        String password = sharedPrefs.getString(context.getString(R.string.key_password), "password");
+
+        Log.d(LOG_TAG, "Credentials set to " + userid + " : " + password);
+
+        String credentials = userid + ":" + password;
+        return "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);
+    }
+
+    public String getBaseUrl(){
+
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+        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";, host, port);
+
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/common/RequestQueueService.java'
--- app/src/main/java/org/openlp/android2/common/RequestQueueService.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/RequestQueueService.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,99 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.common;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.util.Base64;
+import android.util.LruCache;
+
+import com.android.volley.AuthFailureError;
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.toolbox.HurlStack;
+import com.android.volley.toolbox.ImageLoader;
+import com.android.volley.toolbox.Volley;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class RequestQueueService {
+
+    private static RequestQueueService mInstance;
+    private RequestQueue mRequestQueue;
+    private ImageLoader mImageLoader;
+    private static Context mCtx;
+
+    private RequestQueueService(Context context) {
+        mCtx = context;
+        mRequestQueue = getRequestQueue();
+
+        mImageLoader = new ImageLoader(mRequestQueue,
+            new ImageLoader.ImageCache() {
+                private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(20);
+
+                @Override
+                public Bitmap getBitmap(String url) {
+                    return cache.get(url);
+                }
+
+                @Override
+                public void putBitmap(String url, Bitmap bitmap) {
+                    cache.put(url, bitmap);
+                }
+            });
+    }
+
+    public static synchronized RequestQueueService getInstance(Context context) {
+        if (mInstance == null) {
+            mInstance = new RequestQueueService(context);
+        }
+        return mInstance;
+    }
+
+    public RequestQueue getRequestQueue() {
+        if (mRequestQueue == null) {
+            // getApplicationContext() is key, it keeps you from leaking the
+            // Activity or BroadcastReceiver if someone passes one in.
+            mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
+        }
+        return mRequestQueue;
+    }
+
+    public String getUrl(String url){
+        return String.format("%s%s", OpenLPURLBuilder.getInstance().getBaseUrl(), url );
+    }
+
+    public String getBasicAuth(){
+        return OpenLPURLBuilder.getInstance().getBasicAuth();
+    }
+
+    public int getConnectionTimeout(){
+        return OpenLPURLBuilder.getInstance().getConnectionTimeout();
+    }
+
+    public <T> void addToRequestQueue(Request<T> req) {
+        getRequestQueue().add(req);
+    }
+
+    public ImageLoader getImageLoader() {
+        return mImageLoader;
+    }
+}
+

=== added file 'app/src/main/java/org/openlp/android2/common/StateHolder.java'
--- app/src/main/java/org/openlp/android2/common/StateHolder.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/common/StateHolder.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,22 @@
+package org.openlp.android2.common;
+
+import android.content.Context;
+
+/**
+ * Created by tim on 14/08/16.
+ */
+public class StateHolder {
+    private static StateHolder ourInstance = new StateHolder();
+    private static Context context;
+
+    public static StateHolder getInstance() {
+        return ourInstance;
+    }
+
+    private StateHolder() {
+    }
+
+    public void setContext(Context context) {
+        this.context = context;
+    }
+}

=== added directory 'app/src/main/java/org/openlp/android2/dialogs'
=== added file 'app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java'
--- app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/dialogs/AlertDisplayDialog.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,105 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.dialogs;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+import org.openlp.android2.common.JsonHelpers;
+import org.openlp.android2.common.OpenLPDialog;
+
+public class AlertDisplayDialog extends OpenLPDialog {
+    private final String LOG_TAG = AlertDisplayDialog.class.getName();
+    public AlertDialog dialog;
+
+    /**
+     * The system calls this only when creating the layout in a dialog.
+     */
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+
+        context = getActivity();
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        // Get the layout inflater
+        LayoutInflater inflater = getActivity().getLayoutInflater();
+
+        // Inflate and set the layout for the dialog
+        // Pass null as the parent view because its going in the dialog layout
+        View view = inflater.inflate(R.layout.alert_display_dialog, null);
+        builder.setView(view);
+
+        builder.setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int id) {
+                AlertDisplayDialog.this.getDialog().cancel();
+            }
+        });
+        builder.setNegativeButton(R.string.process, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog1, int id) {
+                EditText text = (EditText) dialog.findViewById(R.id.alertText);
+                requestAlert(text.getText().toString());
+            }
+        });
+        dialog = builder.create();
+        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
+            @Override
+            public void onShow(DialogInterface dialogI) {
+                Button btnNegative = dialog.getButton(Dialog.BUTTON_NEGATIVE);
+                btnNegative.setTextSize(20);
+                Button btnPositive = dialog.getButton(Dialog.BUTTON_POSITIVE);
+                btnPositive.setTextSize(20);
+            }
+        });
+        return dialog;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        Log.d(LOG_TAG, "Resuming...");
+    }
+
+    public void processUpdate(String response) {
+        Toast.makeText(context, "Alert Requested", Toast.LENGTH_SHORT).show();
+    }
+
+    public void requestAlert(String text) {
+        try {
+            String request = JsonHelpers.createRequestJSON("text", text);
+            triggerTextRequest(String.format("%s%s", Api.ALERT, request));
+            Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), text(%s)", Api.ALERT, text));
+        } catch (JsonHelpers.JSONHandlerException e) {
+            e.printStackTrace();
+            Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show();
+        }
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java'
--- app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/dialogs/BlankDisplayDialog.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,159 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.dialogs;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.RadioButton;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+
+import org.openlp.android2.common.OpenLPDialog;
+
+public class BlankDisplayDialog extends OpenLPDialog {
+    private final String LOG_TAG = BlankDisplayDialog.class.getName();
+
+    public AlertDialog dialog;
+    RadioButton desktop;
+    RadioButton screen;
+    RadioButton theme;
+    RadioButton reset;
+
+    /**
+     * The system calls this only when creating the layout in a dialog.
+     */
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+
+        context = getActivity();
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        // Get the layout inflater
+        LayoutInflater inflater = getActivity().getLayoutInflater();
+
+        // Inflate and set the layout for the dialog
+        // Pass null as the parent view because its going in the dialog layout
+        View view = inflater.inflate(R.layout.blank_display_dialog, null);
+        builder.setView(view);
+
+        reset = (RadioButton) view.findViewById(R.id.buttonReset);
+        reset.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                triggerTextRequest(Api.DISPLAY_SHOW);
+            }
+        });
+        screen = (RadioButton) view.findViewById(R.id.buttonScreen);
+        screen.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                triggerTextRequest(Api.DISPLAY_BLANK);
+            }
+        });
+        theme = (RadioButton) view.findViewById(R.id.buttonTheme);
+        theme.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                triggerTextRequest(Api.DISPLAY_THEME);
+            }
+        });
+        desktop = (RadioButton) view.findViewById(R.id.buttonDesktop);
+        desktop.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                triggerTextRequest(Api.DISPLAY_DESKTOP);
+            }
+        });
+        builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int id) {
+                BlankDisplayDialog.this.getDialog().cancel();
+            }
+        });
+        dialog = builder.create();
+        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
+            @Override
+            public void onShow(DialogInterface dialogI) {
+                Button btnNegative = dialog.getButton(Dialog.BUTTON_NEGATIVE);
+                btnNegative.setTextSize(20);
+            }
+        });
+        return dialog;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        Log.d(LOG_TAG, "Resuming...");
+        triggerTextRequest(Api.POLL_STATUS);
+        Log.d(LOG_TAG, "Resumed...");
+    }
+
+    public void processUpdate(String response) {
+        triggerTextRequest(Api.POLL_STATUS);
+    }
+
+    public void populateDisplay(String json) {
+        Log.d(LOG_TAG, "populateDisplay : " + json );
+        reset_display();
+        try {
+            JSONObject item = new JSONObject(json).getJSONObject("results");
+            if (item.getString("theme").equals("true")){
+                theme.setChecked(true);
+            } else {
+                if (item.getString("blank").equals("true")){
+                    screen.setChecked(true);
+                } else{
+                    if (item.getString("display").equals("true")){
+                        desktop.setChecked(true);
+                    } else{
+                        reset.setChecked(true);
+                    }
+                }
+            }
+        } catch (JSONException e) {
+            Log.e(LOG_TAG, "Exception with Json = " + json);
+            e.printStackTrace();
+        }
+    }
+
+    public void errorDisplay(String responseString) {
+        Log.d(LOG_TAG, String.format("URL Error text %s", responseString));
+        reset_display();
+    }
+
+    private void reset_display(){
+        screen.setChecked(false);
+        theme.setChecked(false);
+        desktop.setChecked(false);
+        reset.setChecked(false);
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java'
--- app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/dialogs/SearchSelectionDialog.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,135 @@
+/******************************************************************************
+ * 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.dialogs;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.RadioButton;
+import android.widget.Toast;
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+import org.openlp.android2.common.JsonHelpers;
+import org.openlp.android2.common.OpenLPDialog;
+
+public class SearchSelectionDialog extends OpenLPDialog {
+    private final String LOG_TAG = SearchSelectionDialog.class.getName();
+    public AlertDialog dialog;
+    private String key;
+    private String plugin;
+    private String text;
+    private RadioButton sendLive;
+    private RadioButton addToService;
+
+    /**
+     * The system calls this only when creating the layout in a dialog.
+     */
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+
+        key = getArguments().getString("key");
+        plugin = getArguments().getString("plugin");
+        text = getArguments().getString("text");
+
+        Log.d(LOG_TAG, String.format("onCreateDialog %s : %s : %s", key, plugin, text));
+
+        context = getActivity();
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        // Get the layout inflater
+        LayoutInflater inflater = getActivity().getLayoutInflater();
+
+        // Inflate and set the layout for the dialog
+        // Pass null as the parent view because its going in the dialog layout
+        View view = inflater.inflate(R.layout.search_action_dialog, null);
+        builder.setView(view);
+
+        sendLive = (RadioButton) view.findViewById(R.id.buttonLive);
+        sendLive.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                createLive();
+                SearchSelectionDialog.this.getDialog().cancel();
+            }
+        });
+
+        addToService = (RadioButton) view.findViewById(R.id.buttonService);
+        addToService.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                createService();
+                SearchSelectionDialog.this.getDialog().cancel();
+            }
+        });
+
+        builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int id) {
+                SearchSelectionDialog.this.getDialog().cancel();
+            }
+        });
+        dialog = builder.create();
+        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
+            @Override
+            public void onShow(DialogInterface dialogI) {
+                Button btnNegative = dialog.getButton(Dialog.BUTTON_NEGATIVE);
+                btnNegative.setTextSize(20);
+            }
+        });
+        return dialog;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        Log.d(LOG_TAG, "Resuming...");
+    }
+
+    public void createLive() {
+        try {
+            String request = JsonHelpers.createRequestJSON("id", text);
+            String url = String.format(Api.SEARCH_PLUGIN_LIVE, plugin.toLowerCase());
+            triggerTextRequest(String.format("%s%s", url, request));
+            Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), text(%s)", Api.SEARCH_PLUGIN_LIVE, request));
+        } catch (JsonHelpers.JSONHandlerException e) {
+            e.printStackTrace();
+            Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public void createService() {
+        try {
+            String request = JsonHelpers.createRequestJSON("id", text);
+            String url = String.format(Api.SEARCH_PLUGIN_ADD, plugin.toLowerCase());
+            triggerTextRequest(String.format("%s%s", url, request));
+            Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), text(%s)", Api.SEARCH_PLUGIN_ADD, text));
+        } catch (JsonHelpers.JSONHandlerException e) {
+            e.printStackTrace();
+            Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show();
+        }
+    }
+}

=== added directory 'app/src/main/java/org/openlp/android2/fragments'
=== added file 'app/src/main/java/org/openlp/android2/fragments/AboutFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/AboutFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/AboutFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,70 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import org.openlp.android2.R;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class AboutFragment extends Fragment {
+
+    public AboutFragment() {
+        // Empty constructor required for fragment subclasses
+    }
+
+    public static AboutFragment newInstance() {
+        return new AboutFragment();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_about, container, false);
+
+        String date = new SimpleDateFormat("yyyy").format(new Date());
+
+        StringBuilder html = new StringBuilder();
+        html.append(getString(R.string.about_display_1));
+        html.append("\n");
+        html.append(getString(R.string.about_display_2));
+        html.append(" http://www.openlp.org";);
+        html.append("\n\n\n");
+        html.append(getString(R.string.about_display_4));
+        html.append(" © 2004-").append(date).append(" Raoul Snyman\n");
+        html.append(getString(R.string.about_display_5));
+        html.append(" © 2004-").append(date);
+        html.append("\nTim Bentley, Tomas Groth, Johan Mynhardt");
+        html.append("\n\n\n");
+        html.append(getString(R.string.about_display_6));
+        html.append("\n");
+        html.append(getString(R.string.about_display_7));
+        html.append("\n");
+        html.append(getString(R.string.about_display_8));
+
+        ((TextView) view.findViewById(R.id.about_text)).setText(html);
+
+        return view;
+    }
+}
\ No newline at end of file

=== added file 'app/src/main/java/org/openlp/android2/fragments/HomeFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/HomeFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/HomeFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,58 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import org.openlp.android2.R;
+
+
+public class HomeFragment extends Fragment {
+    private View displayView;
+
+    public HomeFragment() {
+        // Empty constructor required for fragment subclasses
+    }
+
+    public static HomeFragment newInstance() {
+         return new HomeFragment();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
+        displayView = inflater.inflate(R.layout.fragment_home, container, false);
+        displayIcon();
+        return displayView;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        displayIcon();
+    }
+
+    private void displayIcon(){
+        int imageId = getResources().getIdentifier("openlp_splash_screen","drawable", getActivity().getPackageName());
+        ((ImageView) displayView.findViewById(R.id.home_image)).setImageResource(imageId);
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/LiveListFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,189 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.text.Html;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+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;
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+import org.openlp.android2.common.JsonHelpers;
+import org.openlp.android2.common.OpenLPFragment;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class LiveListFragment extends OpenLPFragment {
+
+    private int selected = 0;
+
+    private String LOG_TAG = LiveListFragment.class.getName();
+
+    public static LiveListFragment newInstance() {
+        return new LiveListFragment();
+    }
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public LiveListFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        context = getActivity();
+        urlcalled = Api.LIVE_TEXT;
+        return super.onCreateView(inflater, container, savedInstanceState);
+    }
+
+    @Override
+    public void populateDisplay(String json, boolean notInError) {
+        Log.i(LOG_TAG, "populate_display - entry");
+        List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
+        selected = 0;
+
+        if (notInError) {
+
+            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);
+                }
+            } catch (JSONException e) {
+                Log.e(LOG_TAG,json);
+                e.printStackTrace();
+            }
+        }
+
+        // Keys used in Hashmap
+        String[] from = {"line", "tag", "liveListNormal", "liveListSelected"};
+
+        // Ids of views in live_list_fragment
+        int[] to = {R.id.line, R.id.tag, R.id.liveListNormal, R.id.liveListSelected};
+
+        SharedPreferences prefs = context.getSharedPreferences(
+                context.getString(R.string.key_shared_preferences),
+                Context.MODE_PRIVATE);
+
+        final int size = Integer.parseInt(prefs.getString(
+                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) {
+            public View getView(int position, View convertView, ViewGroup parent) {
+                View view = super.getView(position, convertView, parent);
+                // TextView line = (TextView) view.findViewById(R.id.line);
+                TextView text1 = (TextView) view.findViewById(R.id.tag);
+                if (text1 != null) {
+                    text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
+                }
+                TextView text2 = (TextView) view.findViewById(R.id.liveListNormal);
+                if (text2 != null) {
+                    text2.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
+                    if (selected == position) {
+                        text2.setTypeface(null, Typeface.BOLD_ITALIC);
+                        // line.setBackgroundColor(0xffffff);
+                    } else {
+                        text2.setTypeface(null, Typeface.NORMAL);
+                        // line.setBackgroundColor(0xffffff);
+                    }
+                }
+                return view;
+
+            }
+        };
+        setListAdapter(adapter);
+
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+        Boolean autoscroll =
+                sharedPrefs.getBoolean(context.getString(R.string.key_auto_scroll), false);
+
+        if (autoscroll){
+            getListView().setSelection(selected - 1);
+        }
+        Log.i(LOG_TAG, "populate_display - exit");
+    }
+
+    @Override
+    public void refreshDisplay() {
+        Log.d(LOG_TAG, "Resuming...");
+        triggerTextRequest(Api.LIVE_TEXT);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        Log.d(LOG_TAG, "Resuming...");
+        triggerTextRequest(Api.LIVE_TEXT);
+        Log.d(LOG_TAG, "Resumed...");
+    }
+
+    public void processUpdate(String response, boolean inError) {
+        triggerTextRequest(Api.LIVE_TEXT);
+
+    }
+
+    public void itemClicked(int position) {
+        try {
+            String request = JsonHelpers.createRequestJSON("id", Integer.toString(position));
+            triggerTextRequest(String.format("%s%s", Api.LIVE_SET, request));
+            Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), position(%s)",
+                    Api.LIVE_SET, position));
+        } catch (JsonHelpers.JSONHandlerException e) {
+            e.printStackTrace();
+            Toast.makeText(getActivity().getBaseContext(), "Request Failed", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+}

=== added file 'app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/LiveWebFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,33 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import org.openlp.android2.api.Api;
+
+public class LiveWebFragment extends WebFragment {
+    public LiveWebFragment() {
+        super();
+        curURL = Api.LIVE_VIEW;
+    }
+
+    public static LiveWebFragment newInstance() {
+        return new LiveWebFragment();
+    }
+}
+

=== added file 'app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/NavigationDrawerFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,344 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Build;
+import android.support.v7.app.ActionBarActivity;
+import android.app.Activity;
+import android.support.v7.app.ActionBar;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.ActionBarDrawerToggle;
+import android.support.v4.view.GravityCompat;
+import android.support.v4.widget.DrawerLayout;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.SimpleAdapter;
+
+import org.openlp.android2.R;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Fragment used for managing interactions for and presentation of a navigation drawer.
+ * See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction";>
+ * design guidelines</a> for a complete explanation of the behaviors implemented here.
+ */
+public class NavigationDrawerFragment extends Fragment {
+
+    /**
+     * Remember the position of the selected item.
+     */
+    private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
+
+    /**
+     * Per the design guidelines, you should show the drawer on launch until the user manually
+     * expands it. This shared preference tracks this.
+     */
+    private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
+
+    /**
+     * A pointer to the current callbacks instance (the Activity).
+     */
+    private NavigationDrawerCallbacks mCallbacks;
+
+    /**
+     * Helper component that ties the action bar to the navigation drawer.
+     */
+    private ActionBarDrawerToggle mDrawerToggle;
+
+    private DrawerLayout mDrawerLayout;
+    private ListView mDrawerListView;
+    private View mFragmentContainerView;
+
+    private int mCurrentSelectedPosition = 0;
+    private boolean mFromSavedInstanceState;
+    private boolean mUserLearnedDrawer;
+
+    public NavigationDrawerFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Read in the flag indicating whether or not the user has demonstrated awareness of the
+        // drawer. See PREF_USER_LEARNED_DRAWER for details.
+        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
+        mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);
+
+        if (savedInstanceState != null) {
+            mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
+            mFromSavedInstanceState = true;
+        }
+
+        // Select either the default item (0) or the last selected item.
+        selectItem(mCurrentSelectedPosition);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        // Indicate that this fragment would like to influence the set of actions in the action bar.
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        mDrawerListView = (ListView) inflater.inflate(
+                R.layout.fragment_navigation_drawer, container, false);
+        mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                selectItem(position);
+            }
+        });
+
+        List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
+        HashMap<String, String> hm = new HashMap<String, String>();
+        hm.put("title", getString(R.string.home));
+        hm.put("icon", Integer.toString(R.drawable.ic_home_black));
+        aList.add(hm);
+
+        HashMap<String, String> hm1 = new HashMap<String, String>();
+        hm1.put("title", getString(R.string.service_list));
+        hm1.put("icon", Integer.toString(R.drawable.ic_view_list_black));
+        aList.add(hm1);
+
+        HashMap<String, String> hm2 = new HashMap<String, String>();
+        hm2.put("title", getString(R.string.live_list));
+        hm2.put("icon", Integer.toString(R.drawable.ic_list_black));
+        aList.add(hm2);
+
+        HashMap<String, String> hm3 = new HashMap<String, String>();
+        hm3.put("title", getString(R.string.stage_view));
+        hm3.put("icon", Integer.toString(R.drawable.ic_live_tv_black));
+        aList.add(hm3);
+
+        HashMap<String, String> hm4 = new HashMap<String, String>();
+        hm4.put("title", getString(R.string.live_view));
+        hm4.put("icon", Integer.toString(R.drawable.ic_ondemand_video_black));
+        aList.add(hm4);
+
+        HashMap<String, String> hm5 = new HashMap<String, String>();
+        hm5.put("title", getString(R.string.action_search));
+        hm5.put("icon", Integer.toString(R.drawable.ic_search_black));
+        aList.add(hm5);
+
+        // Keys used in Hashmap
+        String[] from = {"icon", "title"};
+
+        // Ids of views in service_list_fragment
+        int[] to = {R.id.drawer_icon, R.id.drawer_text};
+
+        ListAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList,
+                R.layout.fragment_navigation_drawer_list, from, to);
+
+        mDrawerListView.setAdapter(adapter);
+        mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
+        return mDrawerListView;
+    }
+
+    public boolean isDrawerOpen() {
+        return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
+    }
+
+    /**
+     * Users of this fragment must call this method to set up the navigation drawer interactions.
+     *
+     * @param fragmentId   The android:id of this fragment in its activity's layout.
+     * @param drawerLayout The DrawerLayout containing this fragment's UI.
+     */
+    public void setUp(int fragmentId, DrawerLayout drawerLayout) {
+        mFragmentContainerView = getActivity().findViewById(fragmentId);
+        mDrawerLayout = drawerLayout;
+
+        // set a custom shadow that overlays the main content when the drawer opens
+        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
+        // set up the drawer's list view with items and click listener
+
+        ActionBar actionBar = getActionBar();
+        actionBar.setDisplayHomeAsUpEnabled(true);
+        actionBar.setHomeButtonEnabled(true);
+        // OpenLP Blue
+        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#4d7bd8")));
+        getActionBar().setDisplayHomeAsUpEnabled(true); // also required
+        if (Build.VERSION.SDK_INT >= 18) {
+            getActionBar().setHomeAsUpIndicator(
+                    getResources().getDrawable(R.drawable.ic_menu_white));
+        }
+
+        // ActionBarDrawerToggle ties together the the proper interactions
+        // between the navigation drawer and the action bar app icon.
+        mDrawerToggle = new ActionBarDrawerToggle(
+                getActivity(),                    /* host Activity */
+                mDrawerLayout,                    /* DrawerLayout object */
+                R.drawable.ic_menu_white,             /* nav drawer image to replace 'Up' caret */
+                R.string.navigation_drawer_open,  /* "open drawer" description for accessibility */
+                R.string.navigation_drawer_close  /* "close drawer" description for accessibility */
+        ) {
+            @Override
+            public void onDrawerClosed(View drawerView) {
+                super.onDrawerClosed(drawerView);
+                if (!isAdded()) {
+                    return;
+                }
+
+                getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
+            }
+
+            @Override
+            public void onDrawerOpened(View drawerView) {
+                super.onDrawerOpened(drawerView);
+                if (!isAdded()) {
+                    return;
+                }
+
+                if (!mUserLearnedDrawer) {
+                    // The user manually opened the drawer; store this flag to prevent auto-showing
+                    // the navigation drawer automatically in the future.
+                    mUserLearnedDrawer = true;
+                    SharedPreferences sp = PreferenceManager
+                            .getDefaultSharedPreferences(getActivity());
+                    sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
+                }
+
+                getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
+            }
+        };
+
+        // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer,
+        // per the navigation drawer design guidelines.
+        if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
+            mDrawerLayout.openDrawer(mFragmentContainerView);
+        }
+
+        // Defer code dependent on restoration of previous instance state.
+        mDrawerLayout.post(new Runnable() {
+            @Override
+            public void run() {
+                mDrawerToggle.syncState();
+            }
+        });
+
+        mDrawerLayout.setDrawerListener(mDrawerToggle);
+    }
+
+    private void selectItem(int position) {
+        mCurrentSelectedPosition = position;
+        if (mDrawerListView != null) {
+            mDrawerListView.setItemChecked(position, true);
+        }
+        if (mDrawerLayout != null) {
+            mDrawerLayout.closeDrawer(mFragmentContainerView);
+        }
+        if (mCallbacks != null) {
+            mCallbacks.onNavigationDrawerItemSelected(position);
+        }
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mCallbacks = (NavigationDrawerCallbacks) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        mCallbacks = null;
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        // Forward the new configuration the drawer toggle component.
+        mDrawerToggle.onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // If the drawer is open, show the global app actions in the action bar. See also
+        // showGlobalContextActionBar, which controls the top-left area of the action bar.
+        if (mDrawerLayout != null && isDrawerOpen()) {
+            inflater.inflate(R.menu.global, menu);
+            showGlobalContextActionBar();
+        }
+        super.onCreateOptionsMenu(menu, inflater);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (mDrawerToggle.onOptionsItemSelected(item)) {
+            return true;
+        }
+
+        return super.onOptionsItemSelected(item);
+    }
+
+    /**
+     * Per the navigation drawer design guidelines, updates the action bar to show the global app
+     * 'context', rather than just what's in the current screen.
+     */
+    private void showGlobalContextActionBar() {
+        ActionBar actionBar = getActionBar();
+        actionBar.setDisplayShowTitleEnabled(true);
+        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+        actionBar.setTitle(R.string.app_name);
+    }
+
+    private ActionBar getActionBar() {
+        return ((ActionBarActivity) getActivity()).getSupportActionBar();
+    }
+
+    /**
+     * Callbacks interface that all activities using this fragment must implement.
+     */
+    public static interface NavigationDrawerCallbacks {
+        /**
+         * Called when an item in the navigation drawer is selected.
+         */
+        void onNavigationDrawerItemSelected(int position);
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/fragments/SearchFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/SearchFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/SearchFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,357 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ListView;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.volley.AuthFailureError;
+import com.android.volley.ClientError;
+import com.android.volley.DefaultRetryPolicy;
+import com.android.volley.NetworkError;
+import com.android.volley.NoConnectionError;
+import com.android.volley.ParseError;
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.ServerError;
+import com.android.volley.TimeoutError;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.openlp.android2.R;
+import org.openlp.android2.api.Api;
+import org.openlp.android2.common.JsonHelpers;
+
+import org.openlp.android2.common.RequestQueueService;
+import org.openlp.android2.dialogs.SearchSelectionDialog;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+
+ */
+public class SearchFragment extends Fragment {
+
+    private final String LOG_TAG = SearchFragment.class.getName();
+    private Spinner spinner;
+    public Context context;
+    protected String calledURL;
+    protected String updateUrl;
+    protected String searchedPlugin;
+    protected Map<String, String> pluginMap = new HashMap<String, String>();
+
+    public SearchFragment() {
+        Log.d(LOG_TAG, "Constructor");
+    }
+
+    public static SearchFragment newInstance() {
+        SearchFragment fragment = new SearchFragment();
+        return fragment;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        context = getActivity();
+        updateUrl = Api.SEARCHABLE_PLUGINS;
+        View view = inflater.inflate(R.layout.fragment_search, container, false);
+        spinner = (Spinner) view.findViewById(R.id.search_spinner);
+        triggerTextRequest(Api.SEARCHABLE_PLUGINS);
+
+        // Add search listener to text field
+        final EditText editText = (EditText) view.findViewById(R.id.search_text);
+        editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView tv, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
+                    // Now close the keyboard as finished with
+                    View view = getActivity().getCurrentFocus();
+                    if (view != null) {
+                        InputMethodManager imm =
+                                (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+                        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
+                    }
+                    searchedPlugin = pluginMap.get(spinner.getSelectedItem().toString());
+                    requestSearch(tv.getText().toString());
+                    return true;
+                }
+                return false;
+            }
+        });
+        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            /**
+             * Called when a new item is selected (in the Spinner)
+             */
+            public void onItemSelected(AdapterView<?> parent, View view,
+                                       int pos, long id) {
+                editText.setText("");
+            }
+            public void onNothingSelected(AdapterView<?> parent) {
+                // Do nothing, just another required interface callback
+            }
+
+        });
+        return view;
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+    private void populatePluginList(String response, Boolean notInError) {
+        Log.i(LOG_TAG, "populatePluginList - entry");
+        List<String> categories = new ArrayList<String>();
+        pluginMap.clear();
+
+        if (notInError) {
+            try {
+                JSONArray items = new JSONObject(response).getJSONObject("results").getJSONArray("items");
+                for (int i = 0; i < items.length(); ++i) {
+                    JSONArray item = items.getJSONArray(i);
+                    categories.add(item.get(1).toString());
+                    pluginMap.put(item.get(1).toString(), item.get(0).toString());
+                }
+            } catch (JSONException e) {
+                Log.e(LOG_TAG, response);
+                e.printStackTrace();
+            }
+            ArrayAdapter<String> LTRadapter = new ArrayAdapter<String>(getActivity(),
+                    R.layout.spinner_list_item, categories);
+            LTRadapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
+            spinner.setAdapter(LTRadapter);
+            Log.i(LOG_TAG, "populatePluginList - exit");
+        }
+    }
+
+    protected void triggerTextRequest(String urlbase) {
+        Log.d(LOG_TAG, "Trigger Request for url " + urlbase);
+        String url = RequestQueueService.getInstance(this.context).getUrl(urlbase);
+        calledURL = urlbase;
+
+        StringRequest request = new StringRequest(
+                Request.Method.GET,
+                url,
+                listener,
+                errorListener) {
+
+            @Override
+            public Map<String, String> getHeaders() throws AuthFailureError {
+                return createBasicAuthHeader("user", "passwd");
+            }
+        };
+        //Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
+        // Volley does retry for you if you have specified the policy.
+        request.setRetryPolicy(new DefaultRetryPolicy(
+                RequestQueueService.getInstance(this.context).getConnectionTimeout(),
+                DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
+        request.setTag("OpenLP");
+        RequestQueueService.getInstance(this.context).addToRequestQueue(request);
+    }
+
+    Map<String, String> createBasicAuthHeader(String username, String password) {
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Authorization", RequestQueueService.getInstance(context).getBasicAuth());
+
+        return headers;
+    }
+
+    Response.Listener<String> listener = new Response.Listener<String>() {
+        @Override
+        public void onResponse(String response) {
+            if (calledURL.equals(updateUrl)) {
+                populatePluginList(response, true);
+            } else {
+                populateListDisplay(response, true);
+            }
+        }
+    };
+
+    Response.ErrorListener errorListener = new Response.ErrorListener() {
+        @Override
+        public void onErrorResponse(VolleyError error) {
+            Log.d(LOG_TAG, String.format("Call response error = %s", error.toString()));
+            if (error instanceof NetworkError) {
+            } else if (error instanceof ClientError) {
+            } else if (error instanceof ServerError) {
+            } else if (error instanceof AuthFailureError) {
+                Toast.makeText(context, R.string.httpreturn_unauthorised,
+                        Toast.LENGTH_LONG).show();
+            } else if (error instanceof ParseError) {
+            } else if (error instanceof NoConnectionError) {
+            } else if (error instanceof TimeoutError) {
+            }
+            Toast.makeText(context, R.string.unable,
+                    Toast.LENGTH_LONG).show();
+
+        }
+    };
+
+    public void requestSearch(String text) {
+        updateUrl = Api.SEARCH_PLUGIN_FORMATTED;
+        try {
+            String request = JsonHelpers.createRequestJSON("text", text);
+            String url = String.format(Api.SEARCH_PLUGIN_FORMATTED, searchedPlugin);
+            triggerTextRequest(String.format("%s%s", url, request));
+            Log.d(LOG_TAG, String.format("Search request. apiBase(%s), text(%s)", searchedPlugin, text));
+        } catch (JsonHelpers.JSONHandlerException e) {
+            e.printStackTrace();
+            Toast.makeText(context, "Search Request Failed", Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public void populateListDisplay(String json, boolean notInError) {
+        Log.i(LOG_TAG, "populateListDisplay - entry");
+        ListView list = (ListView) getActivity().findViewById(R.id.searchListView);
+        final ArrayList<JSONArray> listitems = new ArrayList<JSONArray>();
+        if (notInError) {
+            try {
+                JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("items");
+                Log.d(LOG_TAG,items.toString());
+                for (int i = 0; i < items.length(); ++i) {
+                    JSONArray item = items.getJSONArray(i);
+                    listitems.add(item);
+                }
+            } catch (JSONException e) {
+                Log.e(LOG_TAG, json);
+                e.printStackTrace();
+            }
+        }
+
+        final StableArrayAdapter adapter = new StableArrayAdapter(context,
+                android.R.layout.simple_list_item_1,
+                listitems);
+
+
+        list.setAdapter(adapter);
+        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+
+            @Override
+            public void onItemClick(AdapterView<?> parent, final View view,
+                                    int position, long id) {
+                final JSONArray item = (JSONArray) parent.getItemAtPosition(position);
+                //Toast.makeText(context, "Item Pressed " + String.valueOf(position) + item,
+                //        Toast.LENGTH_SHORT).show();
+                String it = "";
+                try {
+                    Log.i(LOG_TAG, "list.setOnItemClickListener" + item);
+                    it = item.get(0).toString();
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                Bundle args = new Bundle();
+                args.putString("plugin", searchedPlugin);
+                args.putString("text", it);
+                args.putString("key", Long.toString(id));
+                DialogFragment SSDFragment = new SearchSelectionDialog();
+                SSDFragment.setArguments(args);
+                SSDFragment.show(getFragmentManager(), "TAG");
+
+            }
+        });
+        Log.i(LOG_TAG, "populateListDisplay - exit");
+    }
+
+    public class StableArrayAdapter extends ArrayAdapter<JSONArray> {
+
+        HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
+
+        public StableArrayAdapter(Context context,
+                                  int textViewResourceId,
+                                  List<JSONArray> objects) {
+            super(context, textViewResourceId, objects);
+
+            for (int i = 0; i < objects.size(); ++i) {
+                JSONArray item = objects.get(i);
+                try {
+                    mIdMap.put(item.get(1).toString(), i);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            // Get the data item for this position
+            //User user = getItem(position);
+            String item = null;
+            try {
+                item = getItem(position).get(1).toString();
+            } catch (JSONException e) {
+                e.printStackTrace();
+            }
+            // Check if an existing view is being reused, otherwise inflate the view
+            if (convertView == null) {
+                convertView = LayoutInflater.from(getContext()).inflate(R.layout.search_result_row,
+                        parent, false);
+            }
+            // Lookup view for data population
+            TextView tvItem = (TextView) convertView.findViewById(R.id.searchListRow);
+            // Populate the data into the template view using the data object
+            tvItem.setText(item);
+            // Return the completed view to render on screen
+            return convertView;
+        }
+
+        @Override
+        public long getItemId(int position) {
+            String item = null;
+            try {
+                item = getItem(position).get(1).toString();
+            } catch (JSONException e) {
+                e.printStackTrace();
+            }
+            return mIdMap.get(item);
+        }
+
+        @Override
+        public boolean hasStableIds() {
+            return true;
+        }
+
+    }
+
+}

=== added file 'app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/ServiceListFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,201 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.*;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.openlp.android2.OpenLP;
+import org.openlp.android2.R;
+
+import org.openlp.android2.api.Api;
+import org.openlp.android2.common.JsonHelpers;
+import org.openlp.android2.common.OpenLPFragment;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+
+public class ServiceListFragment extends OpenLPFragment {
+
+    private final String LOG_TAG = ServiceListFragment.class.getName();
+    private int selected = 0;
+
+    public ServiceListFragment() {
+    }
+
+    public static ServiceListFragment newInstance() {
+        ServiceListFragment fragment = new ServiceListFragment();
+        return fragment;
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        context = getActivity();
+        urlcalled = Api.SERVICE_LIST;
+        return super.onCreateView(inflater, container, savedInstanceState);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+    @Override
+    public void refreshDisplay() {
+        Log.d(LOG_TAG, "Resuming...");
+        triggerTextRequest(Api.SERVICE_LIST);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        Log.d(LOG_TAG, "Resuming...");
+        triggerTextRequest(Api.SERVICE_LIST);
+        Log.d(LOG_TAG, "Resumed...");
+    }
+
+    public void processUpdate(String response, boolean inError) {
+        triggerTextRequest(Api.SERVICE_LIST);
+        ((OpenLP) getActivity()).refreshLiveFragment(R.id.container_right);
+    }
+
+    @Override
+    public void populateDisplay(String json, boolean notInError) {
+        Log.i(LOG_TAG, "populate_display - entry");
+        List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
+
+        if (notInError) {
+            try {
+                JSONArray items = new JSONObject(json).getJSONObject("results").getJSONArray("items");
+
+                for (int i = 0; i < items.length(); ++i) {
+                    JSONObject item = items.getJSONObject(i);
+
+                    HashMap<String, String> hm = new HashMap<String, String>();
+                    if (item.getString("plugin").equals("songs")) {
+                        hm.put("icon", Integer.toString(R.drawable.ic_my_library_music));
+                    } else if (item.getString("plugin").equals("bibles")) {
+                        hm.put("icon", Integer.toString(R.drawable.ic_my_library_books));
+                    } else if (item.getString("plugin").equals("media")) {
+                        hm.put("icon", Integer.toString(R.drawable.ic_local_movies));
+                    } else if (item.getString("plugin").equals("presentations")) {
+                        hm.put("icon", Integer.toString(R.drawable.ic_video_collection));
+                    } else if (item.getString("plugin").equals("images")) {
+                        hm.put("icon", Integer.toString(R.drawable.ic_image));
+                    } else {
+                        hm.put("icon", Integer.toString(R.drawable.ic_edit));
+                    }
+                    if (item.getString("selected").equals("true")) {
+                        selected = i;
+                    }
+                    hm.put("title", item.getString("title"));
+                    aList.add(hm);
+                }
+            } catch (JSONException e) {
+                e.printStackTrace();
+            }
+        }
+
+        // Keys used in Hashmap
+        String[] from = {"line","icon", "title"};
+
+        // Ids of views in service_list_fragment
+        int[] to = {R.id.servicelistLine, R.id.icon, R.id.serviceListText};
+
+        SharedPreferences prefs = context.getSharedPreferences(
+                context.getString(R.string.key_shared_preferences),
+                Context.MODE_PRIVATE);
+
+        final int size = Integer.parseInt(prefs.getString(
+                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_service_list, from, to) {
+
+            public View getView(int position, View convertView, ViewGroup parent) {
+
+                View view = super.getView(position, convertView, parent);
+
+                TextView line = (TextView) view.findViewById(R.id.servicelistLine);
+                TextView text1 = (TextView) view.findViewById(R.id.serviceListText);
+                text1.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
+                if (selected == position) {
+                    text1.setTextColor(Color.parseColor("#000000"));
+                    text1.setTypeface(null, Typeface.BOLD_ITALIC);
+                    line.setBackgroundColor(0xffffff);
+                } else{
+                    text1.setTypeface(null, Typeface.NORMAL);
+                    line.setBackgroundColor(0xffffff);
+                }
+                return view;
+            }
+        };
+
+        setListAdapter(adapter);
+
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+        Boolean autoscroll =
+                sharedPrefs.getBoolean(context.getString(R.string.key_auto_scroll), false);
+
+        if (autoscroll){
+            getListView().setSelection(selected - 1);
+        }
+        Log.i(LOG_TAG, "populate_display - exit");
+    }
+
+    public void itemClicked(int position) {
+        try {
+            String request = JsonHelpers.createRequestJSON("id", Integer.toString(position));
+            triggerTextRequest(String.format("%s%s", Api.SERVICE_SET, request));
+            Log.d(LOG_TAG, String.format("Setting list data. apiBase(%s), position(%s)",
+                    Api.SERVICE_SET, position));
+        } catch (JsonHelpers.JSONHandlerException e) {
+            e.printStackTrace();
+            Toast.makeText(context, "Request Failed", Toast.LENGTH_SHORT).show();
+        }
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/StageWebFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,34 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import org.openlp.android2.api.Api;
+
+public class StageWebFragment extends WebFragment {
+
+    public StageWebFragment(){
+        super();
+        curURL = Api.STAGE_VIEW;
+    }
+
+
+    public static StageWebFragment newInstance() {
+        return new StageWebFragment();
+    }
+}

=== added file 'app/src/main/java/org/openlp/android2/fragments/WebFragment.java'
--- app/src/main/java/org/openlp/android2/fragments/WebFragment.java	1970-01-01 00:00:00 +0000
+++ app/src/main/java/org/openlp/android2/fragments/WebFragment.java	2018-02-07 11:41:24 +0000
@@ -0,0 +1,78 @@
+/******************************************************************************
+ * OpenLP - Open Source Lyrics Projection                                      *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2011-2016 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.fragments;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import org.openlp.android2.R;
+import org.openlp.android2.common.OpenLPURLBuilder;
+
+public class WebFragment extends Fragment {
+
+    protected String curURL;
+    private WebView webview;
+
+    public WebFragment(){
+        super();
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
+
+        View view = inflater.inflate(R.layout.fragment_web, container, false);
+
+        if (curURL != null) {
+            webview = (WebView) view.findViewById(R.id.webPage);
+            webview.getSettings().setJavaScriptEnabled(true);
+            webview.getSettings().setBuiltInZoomControls(true);
+            webview.getSettings().setLoadWithOverviewMode(true);
+            webview.getSettings().setUseWideViewPort(true);
+            webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
+            webview.setScrollbarFadingEnabled(true);
+            webview.setWebViewClient(new webClient());
+            webview.loadUrl(String.format("%s%s", OpenLPURLBuilder.getInstance().getBaseUrl(), curURL));
+        }
+        return view;
+    }
+
+    @Override
+    public void onDestroyView() {
+        if (webview != null) {
+            webview.destroy();
+        }
+        super.onDestroyView();
+    }
+
+    public class webClient extends WebViewClient {
+        @Override
+        public boolean shouldOverrideUrlLoading(WebView view, String url) {
+            return false;
+        }
+    }
+}

=== added directory 'app/src/main/res'
=== added directory 'app/src/main/res/drawable'
=== added directory 'app/src/main/res/drawable-hdpi'
=== added file 'app/src/main/res/drawable-hdpi/drawer_shadow.9.png'
Binary files app/src/main/res/drawable-hdpi/drawer_shadow.9.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/drawer_shadow.9.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_add_alert_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_add_alert_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_add_alert_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_apps_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_apps_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_apps_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_arrow_back_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_arrow_back_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_arrow_back_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_arrow_forward_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_arrow_forward_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_arrow_forward_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_drawer.png'
Binary files app/src/main/res/drawable-hdpi/ic_drawer.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_drawer.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_edit.png'
Binary files app/src/main/res/drawable-hdpi/ic_edit.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_edit.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_home_black.png'
Binary files app/src/main/res/drawable-hdpi/ic_home_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_home_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_image.png'
Binary files app/src/main/res/drawable-hdpi/ic_image.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_image.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_launcher.png'
Binary files app/src/main/res/drawable-hdpi/ic_launcher.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_launcher.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_list_black.png'
Binary files app/src/main/res/drawable-hdpi/ic_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_live_tv_black.png'
Binary files app/src/main/res/drawable-hdpi/ic_live_tv_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_live_tv_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_local_movies.png'
Binary files app/src/main/res/drawable-hdpi/ic_local_movies.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_local_movies.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_menu_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_menu_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_menu_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_my_library_books.png'
Binary files app/src/main/res/drawable-hdpi/ic_my_library_books.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_my_library_books.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_my_library_music.png'
Binary files app/src/main/res/drawable-hdpi/ic_my_library_music.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_my_library_music.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_ondemand_video_black.png'
Binary files app/src/main/res/drawable-hdpi/ic_ondemand_video_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_ondemand_video_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_refresh_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_refresh_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_refresh_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_search_black.png'
Binary files app/src/main/res/drawable-hdpi/ic_search_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_search_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_search_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_search_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_search_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_settings_display_white.png'
Binary files app/src/main/res/drawable-hdpi/ic_settings_display_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_settings_display_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_video_collection.png'
Binary files app/src/main/res/drawable-hdpi/ic_video_collection.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_video_collection.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/ic_view_list_black.png'
Binary files app/src/main/res/drawable-hdpi/ic_view_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/ic_view_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-hdpi/openlp_splash_screen.png'
Binary files app/src/main/res/drawable-hdpi/openlp_splash_screen.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-hdpi/openlp_splash_screen.png	2018-02-07 11:41:24 +0000 differ
=== added directory 'app/src/main/res/drawable-mdpi'
=== added file 'app/src/main/res/drawable-mdpi/drawer_shadow.9.png'
Binary files app/src/main/res/drawable-mdpi/drawer_shadow.9.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/drawer_shadow.9.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_add_alert_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_add_alert_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_add_alert_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_apps_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_apps_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_apps_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_arrow_back_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_arrow_back_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_arrow_back_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_arrow_forward_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_arrow_forward_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_arrow_forward_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_drawer.png'
Binary files app/src/main/res/drawable-mdpi/ic_drawer.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_drawer.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_edit.png'
Binary files app/src/main/res/drawable-mdpi/ic_edit.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_edit.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_home_black.png'
Binary files app/src/main/res/drawable-mdpi/ic_home_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_home_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_image.png'
Binary files app/src/main/res/drawable-mdpi/ic_image.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_image.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_launcher.png'
Binary files app/src/main/res/drawable-mdpi/ic_launcher.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_launcher.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_list_black.png'
Binary files app/src/main/res/drawable-mdpi/ic_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_live_tv_black.png'
Binary files app/src/main/res/drawable-mdpi/ic_live_tv_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_live_tv_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_local_movies.png'
Binary files app/src/main/res/drawable-mdpi/ic_local_movies.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_local_movies.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_menu_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_menu_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_menu_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_my_library_books.png'
Binary files app/src/main/res/drawable-mdpi/ic_my_library_books.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_my_library_books.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_my_library_music.png'
Binary files app/src/main/res/drawable-mdpi/ic_my_library_music.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_my_library_music.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_ondemand_video_black.png'
Binary files app/src/main/res/drawable-mdpi/ic_ondemand_video_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_ondemand_video_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_refresh_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_refresh_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_refresh_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_search_black.png'
Binary files app/src/main/res/drawable-mdpi/ic_search_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_search_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_search_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_search_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_search_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_settings_display_white.png'
Binary files app/src/main/res/drawable-mdpi/ic_settings_display_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_settings_display_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_video_collection.png'
Binary files app/src/main/res/drawable-mdpi/ic_video_collection.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_video_collection.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-mdpi/ic_view_list_black.png'
Binary files app/src/main/res/drawable-mdpi/ic_view_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-mdpi/ic_view_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added directory 'app/src/main/res/drawable-xhdpi'
=== added file 'app/src/main/res/drawable-xhdpi/drawer_shadow.9.png'
Binary files app/src/main/res/drawable-xhdpi/drawer_shadow.9.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/drawer_shadow.9.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_add_alert_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_add_alert_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_add_alert_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_apps_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_apps_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_apps_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_arrow_back_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_arrow_back_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_arrow_back_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_arrow_forward_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_arrow_forward_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_arrow_forward_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_drawer.png'
Binary files app/src/main/res/drawable-xhdpi/ic_drawer.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_drawer.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_edit.png'
Binary files app/src/main/res/drawable-xhdpi/ic_edit.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_edit.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_home_black.png'
Binary files app/src/main/res/drawable-xhdpi/ic_home_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_home_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_image.png'
Binary files app/src/main/res/drawable-xhdpi/ic_image.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_image.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_launcher.png'
Binary files app/src/main/res/drawable-xhdpi/ic_launcher.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_launcher.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_list_black.png'
Binary files app/src/main/res/drawable-xhdpi/ic_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_live_tv_black.png'
Binary files app/src/main/res/drawable-xhdpi/ic_live_tv_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_live_tv_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_local_movies.png'
Binary files app/src/main/res/drawable-xhdpi/ic_local_movies.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_local_movies.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_menu_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_menu_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_menu_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_my_library_books.png'
Binary files app/src/main/res/drawable-xhdpi/ic_my_library_books.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_my_library_books.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_my_library_music.png'
Binary files app/src/main/res/drawable-xhdpi/ic_my_library_music.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_my_library_music.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_ondemand_video_black.png'
Binary files app/src/main/res/drawable-xhdpi/ic_ondemand_video_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_ondemand_video_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_refresh_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_refresh_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_refresh_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_search_black.png'
Binary files app/src/main/res/drawable-xhdpi/ic_search_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_search_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_search_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_search_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_search_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_settings_display_white.png'
Binary files app/src/main/res/drawable-xhdpi/ic_settings_display_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_settings_display_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_video_collection.png'
Binary files app/src/main/res/drawable-xhdpi/ic_video_collection.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_video_collection.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xhdpi/ic_view_list_black.png'
Binary files app/src/main/res/drawable-xhdpi/ic_view_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xhdpi/ic_view_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added directory 'app/src/main/res/drawable-xxhdpi'
=== added file 'app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png'
Binary files app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_add_alert_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_add_alert_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_add_alert_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_apps_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_apps_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_apps_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_arrow_forward_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_arrow_forward_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_arrow_forward_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_drawer.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_drawer.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_drawer.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_edit.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_edit.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_edit.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_home_black.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_home_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_home_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_image.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_image.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_image.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_launcher.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_launcher.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_launcher.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_list_black.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_live_tv_black.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_live_tv_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_live_tv_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_local_movies.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_local_movies.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_local_movies.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_local_play.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_local_play.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_local_play.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_menu_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_menu_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_menu_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_my_library_books.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_my_library_books.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_my_library_books.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_my_library_music.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_my_library_music.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_my_library_music.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_ondemand_video_black.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_ondemand_video_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_ondemand_video_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_refresh_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_refresh_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_refresh_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_search_black.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_search_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_search_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_search_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_search_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_search_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_settings_display_white.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_settings_display_white.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_settings_display_white.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_video_collection.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_video_collection.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_video_collection.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable-xxhdpi/ic_view_list_black.png'
Binary files app/src/main/res/drawable-xxhdpi/ic_view_list_black.png	1970-01-01 00:00:00 +0000 and app/src/main/res/drawable-xxhdpi/ic_view_list_black.png	2018-02-07 11:41:24 +0000 differ
=== added file 'app/src/main/res/drawable/custom_border.xml'
--- app/src/main/res/drawable/custom_border.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/drawable/custom_border.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android";
+    android:shape="rectangle">
+
+    <padding android:left="10dp"
+        android:right="10dp"
+        android:top="10dp"
+        android:bottom="10dp"/>
+    <solid android:color="#FFF"/>
+    <stroke android:width="2px" android:color="#ffffff"/>
+</shape>
\ No newline at end of file

=== added file 'app/src/main/res/drawable/search_list.xml'
--- app/src/main/res/drawable/search_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/drawable/search_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android";
+    android:shape="rectangle">
+
+    <padding android:left="10dp"
+        android:right="10dp"
+        android:top="10dp"
+        android:bottom="10dp"/>
+    <solid android:color="#FFF"/>
+    <stroke android:width="20px" android:color="#ffffff"/>
+</shape>
\ No newline at end of file

=== added directory 'app/src/main/res/layout'
=== added directory 'app/src/main/res/layout-land'
=== added directory 'app/src/main/res/layout-xlarge'
=== added file 'app/src/main/res/layout-xlarge/fragment_livelist_list.xml'
--- app/src/main/res/layout-xlarge/fragment_livelist_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout-xlarge/fragment_livelist_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android";
+        android:id="@+id/fragment_live_list_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal"
+        android:smoothScrollbar="true"
+        android:clickable="false"
+        android:longClickable="false"
+        android:background="@drawable/custom_border">
+    <TextView
+        android:id="@+id/line"
+        android:layout_width="4dp"
+        android:layout_height="fill_parent"
+        android:paddingTop="1dp"
+        android:paddingRight="1dp"
+        android:paddingLeft="1dp"
+        android:paddingBottom="1dp"
+        android:background="#4d7bd8"/>
+    <TextView
+            android:id="@+id/tag"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:textSize="14sp"
+            android:paddingTop="10dp"
+            android:paddingRight="5dp"
+            android:paddingLeft="5dp"
+            android:paddingBottom="10dp"
+            android:layout_weight="1"/>
+    <TextView
+            android:id="@+id/liveListNormal"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:textColor="#ff2a2a2a"
+            android:textSize="14sp"
+            android:paddingTop="10dp"
+            android:paddingBottom="10dp"
+            android:textStyle="normal"
+            android:layout_weight="1"/>
+    <TextView
+            android:id="@+id/liveListSelected"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:textColor="#000000"
+            android:textSize="14sp"
+            android:paddingTop="10dp"
+            android:paddingBottom="10dp"
+            android:textStyle="bold|italic"
+            android:layout_weight="1"/>
+</LinearLayout>

=== added file 'app/src/main/res/layout/activity_main.xml'
--- app/src/main/res/layout/activity_main.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/activity_main.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,79 @@
+<!-- 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"
+    tools:context=".OpenLP">
+
+    <!-- As the main content view, the view below consumes the entire
+         space available using match_parent in both dimensions. -->
+    <android.support.design.widget.CoordinatorLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+        <FrameLayout
+            android:id="@+id/container"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+            <FrameLayout
+                android:id="@+id/container_left"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="start"
+                android:layout_marginRight="5dp"
+                android:layout_weight="1" />
+
+            <FrameLayout
+                android:id="@+id/container_right"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="end"
+                android:layout_marginLeft="5dp"
+                android:layout_weight="1" />
+
+        </LinearLayout>
+
+        <android.support.design.widget.FloatingActionButton
+            android:id="@+id/next_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|end"
+            android:layout_margin="16dp"
+            android:onClick="next"
+            android:src="@drawable/ic_arrow_forward_white"
+            android:text="@string/next"
+            android:visibility="gone" />
+
+        <android.support.design.widget.FloatingActionButton
+            android:id="@+id/prev_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|start"
+            android:layout_margin="16dp"
+            android:onClick="previous"
+            android:src="@drawable/ic_arrow_back_white"
+            android:text="@string/previous"
+            android:visibility="gone" />
+
+    </android.support.design.widget.CoordinatorLayout>
+    <!-- android:layout_gravity="start" tells DrawerLayout to treat
+         this as a sliding drawer on the left side for left-to-right
+         languages and on the right side for right-to-left languages.
+         If you're not building against API 17 or higher, use
+         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:name="org.openlp.android2.fragments.NavigationDrawerFragment"
+        android:layout_width="@dimen/navigation_drawer_width"
+        android:layout_height="fill_parent"
+        android:layout_gravity="start"
+        tools:layout="@layout/fragment_navigation_drawer" />
+
+</android.support.v4.widget.DrawerLayout>

=== added file 'app/src/main/res/layout/activity_open_lp.xml'
--- app/src/main/res/layout/activity_open_lp.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/activity_open_lp.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,31 @@
+<!-- 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"
+    tools:context=".OpenLP">
+
+    <!-- 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"
+        android:layout_height="match_parent" />
+
+    <!-- android:layout_gravity="start" tells DrawerLayout to treat
+         this as a sliding drawer on the left side for left-to-right
+         languages and on the right side for right-to-left languages.
+         If you're not building against API 17 or higher, use
+         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"
+        tools:layout="@layout/fragment_navigation_drawer" />
+
+</android.support.v4.widget.DrawerLayout>

=== added file 'app/src/main/res/layout/alert_display_dialog.xml'
--- app/src/main/res/layout/alert_display_dialog.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/alert_display_dialog.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+
+              android:orientation="vertical"
+              android:layout_width="fill_parent"
+              android:layout_height="fill_parent"
+              android:weightSum="1">
+
+    <TextView
+            android:layout_width="294dp"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/enter_alert_text"
+            android:id="@+id/textView"
+            android:inputType="textLongMessage"
+            android:textStyle="bold|italic"
+            android:textSize="40px"
+            android:height="45px"/>
+
+    <EditText
+            android:id="@+id/alertText"
+            android:layout_width="290dp"
+            android:layout_height="wrap_content"/>
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/blank_display_dialog.xml'
--- app/src/main/res/layout/blank_display_dialog.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/blank_display_dialog.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+
+              android:orientation="vertical"
+              android:layout_width="fill_parent"
+              android:layout_height="fill_parent"
+              android:weightSum="1">
+    <TextView
+            android:layout_width="314dp"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/display_blank_summary"
+            android:id="@+id/textView"
+            android:textStyle="bold|italic"
+            android:textSize="40px"
+            android:height="70px"
+        android:layout_marginTop="10dp"
+        android:layout_marginBottom="10dp" />
+    <RadioButton
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/display_reset"
+            android:id="@+id/buttonReset"
+            android:textSize="20sp"
+            android:height="40dp"
+            android:clickable="true"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="20dp" />
+    <RadioButton
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/display_screen"
+            android:id="@+id/buttonScreen"
+            android:textSize="20sp"
+            android:height="40dp"
+            android:clickable="true"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="20dp" />
+    <RadioButton
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/display_theme"
+            android:id="@+id/buttonTheme"
+            android:textSize="20sp"
+            android:height="40dp"
+            android:clickable="true"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="20dp" />
+    <RadioButton
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/display_desktop"
+            android:id="@+id/buttonDesktop"
+            android:textSize="20sp"
+            android:height="40dp"
+            android:clickable="true"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="20dp" />
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/fragment_about.xml'
--- app/src/main/res/layout/fragment_about.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_about.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,9 @@
+<TextView xmlns:android="http://schemas.android.com/apk/res/android";
+           android:id="@+id/about_text"
+           android:layout_width="fill_parent"
+           android:layout_height="fill_parent"
+           android:background="#000000"
+           android:gravity="center"
+           android:linksClickable="true"
+           android:padding="32dp"
+    android:textColor="#ffffffff" />
\ No newline at end of file

=== added file 'app/src/main/res/layout/fragment_empty.xml'
--- app/src/main/res/layout/fragment_empty.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_empty.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,6 @@
+<TextView xmlns:android="http://schemas.android.com/apk/res/android";
+    android:id="@android:id/empty"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:text="No Results"
+     />
\ No newline at end of file

=== added file 'app/src/main/res/layout/fragment_home.xml'
--- app/src/main/res/layout/fragment_home.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_home.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,22 @@
+<!--
+  Copyright 2013 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<ImageView xmlns:android="http://schemas.android.com/apk/res/android";
+           android:id="@+id/home_image"
+           android:layout_width="match_parent"
+           android:layout_height="match_parent"
+           android:gravity="center"
+           android:padding="32dp"/>
\ No newline at end of file

=== added file 'app/src/main/res/layout/fragment_item_list.xml'
--- app/src/main/res/layout/fragment_item_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_item_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:tools="http://schemas.android.com/tools"; android:layout_width="match_parent"
+    android:layout_height="match_parent" tools:context="org.openlp.android2.emptyFragment">
+
+    <ListView android:id="@android:id/list" android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <TextView android:id="@android:id/empty" android:layout_width="match_parent"
+        android:layout_height="match_parent" android:gravity="center" />
+
+</FrameLayout>

=== added file 'app/src/main/res/layout/fragment_livelist_list.xml'
--- app/src/main/res/layout/fragment_livelist_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_livelist_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android";
+        android:id="@+id/fragment_live_list_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal"
+        android:smoothScrollbar="true"
+        android:clickable="false"
+        android:longClickable="false"
+        android:background="@drawable/custom_border">
+    <TextView
+        android:id="@+id/liveListLine"
+        android:layout_width="75sp"
+        android:layout_height="wrap_content"
+        android:textSize="14sp"
+        android:paddingTop="10dp"
+        android:paddingRight="5dp"
+        android:paddingLeft="5dp"
+        android:paddingBottom="10dp"
+        android:layout_weight="1"/>
+    <TextView
+            android:id="@+id/liveListTag"
+            android:layout_width="75sp"
+            android:layout_height="wrap_content"
+            android:textSize="14sp"
+            android:paddingTop="10dp"
+            android:paddingRight="5dp"
+            android:paddingLeft="5dp"
+            android:paddingBottom="10dp"
+            android:layout_weight="1"/>
+    <TextView
+            android:id="@+id/liveListNormal"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:textColor="#ff2a2a2a"
+            android:textSize="14sp"
+            android:paddingTop="10dp"
+            android:paddingBottom="10dp"
+            android:textStyle="normal"
+            android:layout_weight="1"/>
+</LinearLayout>

=== added file 'app/src/main/res/layout/fragment_main.xml'
--- app/src/main/res/layout/fragment_main.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_main.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,13 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:tools="http://schemas.android.com/tools"; android:layout_width="match_parent"
+    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    tools:context=".MainActivity$PlaceholderFragment">
+
+    <TextView android:id="@+id/section_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
+</RelativeLayout>

=== added file 'app/src/main/res/layout/fragment_navigation_drawer.xml'
--- app/src/main/res/layout/fragment_navigation_drawer.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_navigation_drawer.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,5 @@
+<ListView xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:tools="http://schemas.android.com/tools"; android:layout_width="match_parent"
+    android:layout_height="match_parent" android:choiceMode="singleChoice"
+    android:divider="@android:color/transparent" android:dividerHeight="0dp"
+    android:background="#cccc" tools:context=".NavigationDrawerFragment" />

=== added file 'app/src/main/res/layout/fragment_navigation_drawer_list.xml'
--- app/src/main/res/layout/fragment_navigation_drawer_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_navigation_drawer_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+          http://www.apache.org/licenses/LICENSE-2.0
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout
+        xmlns:android="http://schemas.android.com/apk/res/android";
+        android:id="@+id/fragment_navigation_drawer_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal"
+        android:smoothScrollbar="true"
+        android:clickable="false"
+        android:longClickable="false">
+
+    <ImageView
+            android:id="@+id/drawer_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingTop="10dp"
+            android:paddingRight="5dp"
+            android:paddingLeft="5dp"
+            android:paddingStart="5dp"
+            android:paddingEnd="5dp"
+            android:paddingBottom="10dp"/>
+
+    <TextView
+            android:id="@+id/drawer_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:textColor="#000000"
+            android:minHeight="?android:attr/listPreferredItemHeightSmall"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:paddingTop="20dp"
+            android:paddingRight="5dp"
+            android:paddingLeft="55dp"
+            android:paddingStart="55dp"
+            android:paddingEnd="5dp"
+            android:paddingBottom="10dp"/>
+
+
+</RelativeLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/fragment_search.xml'
--- app/src/main/res/layout/fragment_search.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_search.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingLeft="15dp"
+    android:paddingTop="15dp"
+    android:paddingRight="15dp"
+    >
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <GridLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:text="@string/select_plugin"
+                android:id="@+id/search_title"
+                android:textSize="20sp"
+                android:paddingLeft="30dp"
+                android:paddingRight="30dp"
+                android:layout_row="0"
+                android:layout_column="0"/>
+
+            <Spinner
+                android:textSize="20sp"
+                android:paddingLeft="30dp"
+                android:paddingStart="30dp"
+                android:id="@+id/search_spinner"
+                android:layout_row="0"
+                android:layout_column="1"/>
+
+            <TextView
+                android:text="@string/search_text"
+                android:textSize="20sp"
+                android:id="@+id/search_value_desc"
+                android:paddingLeft="30dp"
+                android:paddingRight="30dp"
+                android:layout_row="1"
+                android:layout_column="0"/>
+
+            <EditText
+                android:imeOptions="actionSearch"
+                android:id="@+id/search_text"
+                style="@android:style/Animation.InputMethod"
+                android:inputType="text"
+                android:textSize="22sp"
+                android:layout_row="1"
+                android:layout_column="1"
+                android:layout_width="fill_parent" />
+
+        </GridLayout>
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:weightSum="1">
+
+            <ListView
+                android:layout_width="match_parent"
+                android:layout_height="fill_parent"
+                android:id="@+id/searchListView"
+                android:paddingLeft="30dp"
+                android:paddingRight="30dp"
+                android:textSize="15sp"
+                android:height="70dp"
+                android:layout_weight="0.8"
+                android:background="@drawable/search_list"/>
+
+        </LinearLayout>
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/fragment_service_list.xml'
--- app/src/main/res/layout/fragment_service_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_service_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android";
+        android:id="@+id/fragmentservicelist"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal"
+        android:smoothScrollbar="true"
+        android:clickable="false"
+        android:longClickable="false"
+        android:background="@drawable/custom_border">
+
+    <TextView
+        android:id="@+id/servicelistLine"
+        android:layout_width="4dp"
+        android:layout_height="36dp"
+        android:paddingTop="10dp"
+        android:paddingRight="5dp"
+        android:paddingEnd="5dp"
+        android:paddingLeft="5dp"
+        android:paddingBottom="10dp"
+        android:background="#4d7bd8"/>
+
+    <ImageView
+            android:id="@+id/icon"
+            android:layout_width="wrap_content"
+            android:layout_height="36dp"
+            android:paddingTop="10dp"
+            android:paddingRight="5dp"
+            android:paddingEnd="5dp"
+            android:paddingLeft="5dp"
+            android:paddingBottom="10dp"
+            />
+    <TextView
+            android:id="@+id/serviceListText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textStyle="normal"
+            android:textColor="#000000"
+            android:textSize="14sp"
+            android:paddingTop="10dp"
+            android:paddingRight="5dp"
+            android:paddingLeft="5dp"
+            android:paddingEnd="5dp"
+            android:paddingBottom="10dp"
+            />
+</LinearLayout>

=== added file 'app/src/main/res/layout/fragment_servicelist_list.xml'
--- app/src/main/res/layout/fragment_servicelist_list.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_servicelist_list.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:tools="http://schemas.android.com/tools";
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="org.openlp.android2.fragments.ServiceListFragment">
+
+    <ListView
+        android:id="@android:id/list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <TextView
+        android:id="@android:id/empty"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center" />
+
+</FrameLayout>

=== added file 'app/src/main/res/layout/fragment_web.xml'
--- app/src/main/res/layout/fragment_web.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/fragment_web.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+              android:layout_width="fill_parent"
+              android:layout_height="fill_parent"
+              android:baselineAligned="false">
+    <WebView
+            android:id="@+id/webPage"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/search_action_dialog.xml'
--- app/src/main/res/layout/search_action_dialog.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/search_action_dialog.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:weightSum="1">
+    <TextView
+        android:layout_width="315dp"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/searchResults"
+        android:id="@+id/textView"
+        android:textStyle="bold|italic"
+        android:textSize="40px"
+        android:height="70px"
+        android:layout_marginTop="10dp"
+        android:layout_marginBottom="10dp"/>
+    <RadioButton
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/searchSendLive"
+        android:id="@+id/buttonLive"
+        android:textSize="20sp"
+        android:height="30dp"
+        android:clickable="true"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="20dp"/>
+    <RadioButton
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/searchAddToService"
+        android:id="@+id/buttonService"
+        android:textSize="20sp"
+        android:height="40dp"
+        android:clickable="true"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="20dp"/>
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/search_result.xml'
--- app/src/main/res/layout/search_result.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/search_result.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <TextView
+        android:id="@+id/serachitem"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Name" />
+
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/search_result_row.xml'
--- app/src/main/res/layout/search_result_row.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/search_result_row.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+
+    <TextView android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textStyle="bold"
+        android:textColor="#000000"
+        android:textSize="25sp"
+        android:paddingTop="10dp"
+        android:paddingRight="5dp"
+        android:paddingLeft="5dp"
+        android:paddingEnd="5dp"
+        android:paddingBottom="10dp"
+        android:id="@+id/searchListRow"/>
+</LinearLayout>
\ No newline at end of file

=== added file 'app/src/main/res/layout/spinner_dropdown_item.xml'
--- app/src/main/res/layout/spinner_dropdown_item.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/spinner_dropdown_item.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android";
+    android:id="@android:id/text1"
+    style="?android:attr/spinnerDropDownItemStyle"
+    android:singleLine="true"
+    android:layout_width="match_parent"
+    android:layout_height="?android:attr/listPreferredItemHeight"
+    android:ellipsize="marquee"
+    android:textColor="#000"
+    android:textStyle="bold|italic"
+    android:textAppearance="?android:attr/textAppearanceLarge"/>
\ No newline at end of file

=== added file 'app/src/main/res/layout/spinner_list_item.xml'
--- app/src/main/res/layout/spinner_list_item.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/layout/spinner_list_item.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android";
+    android:id="@android:id/text1"
+    style="?android:attr/spinnerItemStyle"
+    android:singleLine="true"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:textColor="#000"
+    android:textAppearance="?android:attr/textAppearanceLarge"
+    android:ellipsize="marquee"
+    android:textStyle="bold|italic" />
\ No newline at end of file

=== added directory 'app/src/main/res/menu'
=== added file 'app/src/main/res/menu/global.xml'
--- app/src/main/res/menu/global.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/menu/global.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,5 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:app="http://schemas.android.com/apk/res-auto";>
+    <item android:id="@+id/action_settings" android:title="@string/action_settings"
+        android:orderInCategory="100" app:showAsAction="never" />
+</menu>

=== added file 'app/src/main/res/menu/menu_.xml'
--- app/src/main/res/menu/menu_.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/menu/menu_.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,6 @@
+<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";>
+    <item android:id="@+id/action_settings" android:title="@string/action_settings"
+        android:orderInCategory="100" app:showAsAction="never" />
+</menu>

=== added file 'app/src/main/res/menu/open_l.xml'
--- app/src/main/res/menu/open_l.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/menu/open_l.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,27 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:app="http://schemas.android.com/apk/res-auto";>
+    <item android:id="@+id/action_blank"
+          android:checkable="true"
+          android:visible="true"
+          android:icon="@drawable/ic_settings_display_white"
+          android:title="@string/action_blank"
+          app:showAsAction="ifRoom" />
+    <item android:id="@+id/action_alert"
+          android:checkable="true"
+          android:visible="true"
+          android:icon="@drawable/ic_add_alert_white"
+          android:title="@string/action_alert"
+          app:showAsAction="ifRoom" />
+    <item android:id="@+id/action_refresh"
+          android:icon="@drawable/ic_refresh_white"
+          android:title="@string/action_refresh"
+          app:showAsAction="ifRoom" />
+    <item android:id="@+id/action_preferences"
+          android:icon="@android:drawable/ic_menu_preferences"
+          android:title="@string/action_preferences"
+          app:showAsAction="never|withText" />
+    <item android:id="@+id/action_about"
+          android:icon="@drawable/ic_apps_white"
+          android:title="@string/action_about"
+          app:showAsAction="never|withText" />
+</menu>

=== added directory 'app/src/main/res/values'
=== added directory 'app/src/main/res/values-af'
=== added file 'app/src/main/res/values-af/strings.xml'
--- app/src/main/res/values-af/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-af/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP is \'n gratis kerk skyfievertoning sagteware</string>
+  <string name="about_display_2">Besoek die OpenLP webwerf vir meer inligting</string>
+  <string name="about_display_4">Kopiereg</string>
+  <string name="about_display_5">Gedeeltelike kopiereg</string>
+  <string name="about_display_6">Lisensie</string>
+  <string name="about_display_7">Hierdie program is gratis; jy kan dit herversprei of verander volgens die GNU Algemene Publieke Lisensie se voorwaardes, wat gepubliseer is deur die Free Software Foundation; weergawe 2 van die lisensie.</string>
+  <string name="about_display_8">Hierdie program word versprei met die hoop dat dit nuttig sal wees, maar SONDER ENIGE WAARBORG; selfs sonder \'n geimpliseerde waarborg dat dit TOEPASLIK IS VIR \'N SPESIFIEKE DOEL</string>
+  <string name="action_settings">Instellings</string>
+  <string name="action_about">Aangaande</string>
+  <string name="action_alert">Waarskuwing</string>
+  <string name="action_back">Terug</string>
+  <string name="action_preferences">Voorkeure</string>
+  <string name="action_refresh">Verfris</string>
+  <string name="action_search">Soek</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Kanselleer</string>
+  <string name="connection_configuration">Konfigureer Netwerk</string>
+  <string name="connection_password">Wagwoord</string>
+  <string name="connection_profile">Bediener Inligting</string>
+  <string name="connection_timeout">Konneksie Tyd-uitloop</string>
+  <string name="connection_timeout_summary">Kies \'n waarde (millisekondes)</string>
+  <string name="connection_userid">Gebruikernaame</string>
+  <string name="custom_timeout">Stel pasgemaakte tyd afsnypunt</string>
+  <string name="display_blank_summary">Kies die verlangde skerm</string>
+  <string name="display_desktop">Vertoon Werkvlak agtergrond</string>
+  <string name="display_list_autoscroll">Laat die gekose item toe om na die middel van die lys te beweeg</string>
+  <string name="display_reset">Vertoon lewendige skerm</string>
+  <string name="display_settings">Vertoon Verstelling</string>
+  <string name="display_screen">Vertoon slegs Swart skerm</string>
+  <string name="display_theme">Vertoon slegs Tema</string>
+  <string name="enable_custom_timeouts">Bekragtig Aangepasde Tyd-uitlope</string>
+  <string name="enter_alert_text">Voer Afkondiging teks in</string>
+  <string name="enable_autoscroll">Laat skerms toe op outomatiese te sentreer</string>
+  <string name="home">Tuis</string>
+  <string name="httpreturn_unauthorised">Ongemagtigde Toegang, voer asb \'n geldige gebruikernaam en wagwoord in.</string>
+  <string name="live_list">Lewendige Vertoonlys</string>
+  <string name="live_view">Lewendige Kykskerm</string>
+  <string name="navigation_drawer_open">Maak navigeer vouer oop</string>
+  <string name="navigation_drawer_close">Sluit navigeer vouer</string>
+  <string name="next">Volgende</string>
+  <string name="none">Geen</string>
+  <string name="port">Poort</string>
+  <string name="previous">Vorige</string>
+  <string name="process">Voer uit</string>
+  <string name="service_list">Orde van diens</string>
+  <string name="stage_view">Verhoog skerm</string>
+  <string name="text_size">Kies die grootte van die vertoning-teks</string>
+  <string name="text_size_summary">Verander die Diens teks grootte</string>
+  <string name="title_activity_settings">Instellings</string>
+  <string name="url_hint">Gasheer naam of IP</string>
+  <string name="unable">Kan nie die versoek uitvoer nie - gaan jou netwerk verstellings na</string>
+</resources>

=== added directory 'app/src/main/res/values-bg'
=== added file 'app/src/main/res/values-bg/strings.xml'
--- app/src/main/res/values-bg/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-bg/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_4">Копирайт</string>
+  <string name="about_display_5">Копирайт за отделни части</string>
+  <string name="about_display_6">Лиценз</string>
+  <string name="action_settings">Настройки</string>
+  <string name="action_about">Относно</string>
+  <string name="action_alert">Сигнал</string>
+  <string name="action_preferences">Предпочитания</string>
+  <string name="action_refresh">Обнови</string>
+  <string name="action_search">Търсене</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Откажи</string>
+  <string name="connection_timeout">Времето за изчакване на свързването</string>
+  <string name="connection_timeout_summary">Избери стойност (в милисекунди)</string>
+  <string name="enable_custom_timeouts">Активирай клиентски срокове</string>
+  <string name="home">Начало</string>
+  <string name="next">След.</string>
+  <string name="none">Нищо</string>
+  <string name="port">Порт</string>
+  <string name="previous">назад</string>
+  <string name="text_size_summary">Промени размера на текста за Службата</string>
+  <string name="title_activity_settings">Настройки</string>
+  <string name="url_hint">Hostname или IP</string>
+</resources>

=== added directory 'app/src/main/res/values-cs'
=== added file 'app/src/main/res/values-cs/strings.xml'
--- app/src/main/res/values-cs/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-cs/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP je volně dostupná křesťanská prezentační aplikace</string>
+  <string name="about_display_2">Pro více informací navštivte OpenLP stránky</string>
+  <string name="about_display_4">Autorská práva</string>
+  <string name="about_display_5">Částečná autorská práva</string>
+  <string name="about_display_6">Licence</string>
+  <string name="about_display_7">Tento program je svobodný software; můžete jej šířit a modifikovat  podle ustanovení GNU General Public License, vydávané Free Software Foundation; a to podle verze 2 této licence</string>
+  <string name="about_display_8">Tento program je šířen v naději, že bude užitečný, avšak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO URČITÝ ÚČEL</string>
+  <string name="action_settings">Nastavení</string>
+  <string name="action_about">O aplikaci</string>
+  <string name="action_alert">Upozornění</string>
+  <string name="action_back">Zpět</string>
+  <string name="action_blank">Změnit zobrazení</string>
+  <string name="action_preferences">Nastavení</string>
+  <string name="action_refresh">Obnovit</string>
+  <string name="action_search">Hledat</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Zrušit</string>
+  <string name="connection_configuration">Nastavení sítě</string>
+  <string name="connection_password">Heslo</string>
+  <string name="connection_profile">Podrobnosti serveru</string>
+  <string name="connection_timeout">Časový limit spojení</string>
+  <string name="connection_timeout_summary">Vybrat hodnotu (milisekundy)</string>
+  <string name="connection_userid">Uživatelské jméno</string>
+  <string name="custom_timeout">Nastavit uživatelský časový limit</string>
+  <string name="display_blank_summary">Vybrat požadované zobrazení</string>
+  <string name="display_desktop">Zobrazit pozadí plochy</string>
+  <string name="display_list_autoscroll">Povolit vybrané položce rolovat na střed seznamu</string>
+  <string name="display_reset">Zobrazit naživo</string>
+  <string name="display_settings">Nastavení zobrazení</string>
+  <string name="display_screen">Zobrazit jen černou</string>
+  <string name="display_theme">Zobrazit jen motiv</string>
+  <string name="enable_custom_timeouts">Zapnout uživatelský časový limit</string>
+  <string name="enter_alert_text">Vložit text upozornění</string>
+  <string name="enable_autoscroll">Povolit automatické centrování obrazovky</string>
+  <string name="home">Domů</string>
+  <string name="httpreturn_unauthorised">Neoprávněný přístup, zadejte prosím správné uživatelské jméno a heslo</string>
+  <string name="live_list">Seznam naživo</string>
+  <string name="live_view">Zobrazení naživo</string>
+  <string name="navigation_drawer_open">Otevřít navigační panel</string>
+  <string name="navigation_drawer_close">Zavřít navigační panel</string>
+  <string name="next">Další</string>
+  <string name="none">Žádný</string>
+  <string name="port">Port</string>
+  <string name="previous">Předchozí</string>
+  <string name="process">Zpracovat</string>
+  <string name="service_list">Seznam služby</string>
+  <string name="stage_view">Zobrazení na pódiu</string>
+  <string name="text_size">Vybrat velikost zobrazeného textu</string>
+  <string name="text_size_summary">Změnit velikost textu služby</string>
+  <string name="title_activity_settings">Nastavení</string>
+  <string name="url_hint">Jméno počítače nebo IP</string>
+  <string name="unable">Není možné vykonat požadavek - prověřte nastavení sítě</string>
+</resources>

=== added directory 'app/src/main/res/values-da'
=== added file 'app/src/main/res/values-da/strings.xml'
--- app/src/main/res/values-da/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-da/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP er et frit og gratis præsentationsprogram til kirker.</string>
+  <string name="about_display_2">Besøg OpenLP\'s hjemmside for at lære mere</string>
+  <string name="about_display_4">Ophavsret</string>
+  <string name="about_display_5">Delvis ophavsret</string>
+  <string name="about_display_6">Licens</string>
+  <string name="about_display_7">Dette program er fri software; du kan redistribuere det og/eller ændre det under vilkårene angivet i GNU General Public License, som er udgivet af Free Software Foundation; udgave 2 af licensen.</string>
+  <string name="about_display_8">Dette program er udgivet i håbet om at det må være brugbart, men UDEN NOGEN GARANTI; endda uden den underforståede garanti om SALGBARHED eller BRUGBARHED TIL ET BESTEMT FORMÅL.</string>
+  <string name="action_settings">Indstillinger</string>
+  <string name="action_about">Om</string>
+  <string name="action_alert">Meddelelse</string>
+  <string name="action_back">Tilbage</string>
+  <string name="action_blank">Skift skærm</string>
+  <string name="action_preferences">Indstillinger</string>
+  <string name="action_refresh">Opdatér</string>
+  <string name="action_search">Søg</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Annullér</string>
+  <string name="connection_configuration">Konfigurér netværk</string>
+  <string name="connection_password">Adgangskode</string>
+  <string name="connection_profile">Serverdetaljer</string>
+  <string name="connection_timeout">Timeout for forbindelse</string>
+  <string name="connection_timeout_summary">Vælg en værdi (millisekunder)</string>
+  <string name="connection_userid">Brugernavn</string>
+  <string name="custom_timeout">Sæt brugerdefineret timeout</string>
+  <string name="display_blank_summary">Vælg den ønskede skærm</string>
+  <string name="display_desktop">Vis skrivebordsbaggrund</string>
+  <string name="display_list_autoscroll">Tillad centrering af det valgte element</string>
+  <string name="display_reset">Vis fremvisningsskærm</string>
+  <string name="display_settings">Visningsindstillinger</string>
+  <string name="display_screen">Vis kun sort</string>
+  <string name="display_theme">Vis kun temabaggrund</string>
+  <string name="enable_custom_timeouts">Aktiver brugerdefinerede timeouts</string>
+  <string name="enter_alert_text">Indtast meddelelsestekst</string>
+  <string name="enable_autoscroll">Tiilad autocentrering</string>
+  <string name="home">Hjem</string>
+  <string name="httpreturn_unauthorised">Adgang ikke godkendt. Indtast gyldigt brugernavn og adgangskode</string>
+  <string name="live_list">Fremvisningsliste</string>
+  <string name="live_view">Præsentationsvisning</string>
+  <string name="navigation_drawer_open">Åbn navigationsskuffe</string>
+  <string name="navigation_drawer_close">Luk navigationsskuffe</string>
+  <string name="next">Næste</string>
+  <string name="none">Ingen</string>
+  <string name="port">Port</string>
+  <string name="previous">Forrige</string>
+  <string name="process">Proces</string>
+  <string name="service_list">Programoversigt</string>
+  <string name="stage_view">Scenevisning</string>
+  <string name="text_size">Vælg tekststørrelse til visning</string>
+  <string name="text_size_summary">Ændr programmets tekststørrelse</string>
+  <string name="title_activity_settings">Indstillinger</string>
+  <string name="url_hint">Værtsnavn eller IP</string>
+  <string name="unable">Kunne ikke udføre forespørsel - tjek netværksindstillingerne</string>
+</resources>

=== added directory 'app/src/main/res/values-de'
=== added file 'app/src/main/res/values-de/strings.xml'
--- app/src/main/res/values-de/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-de/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP ist eine freie Präsentationssoftware für Kirchen und Gemeinden.</string>
+  <string name="about_display_2">Weitere Informationen sind auf der OpenLP Webseite zu finden.</string>
+  <string name="about_display_4">Urheberrecht</string>
+  <string name="about_display_5">Anteiliges Urheberrecht</string>
+  <string name="about_display_6">Lizenz</string>
+  <string name="about_display_7">Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License Version 2, herausgegeben von der Free Software Foundation, weitergeben und/oder modifizieren.</string>
+  <string name="about_display_8">Dieses Programms wird in der Hoffnung zur Verfügung gestellt, dass es Ihnen von Nutzen sein wird, aber OHNE JEDE GEWÄHRLEISTUNG; auch ohne einer implizite Gewährleistung von MARKTREIFE oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK</string>
+  <string name="action_settings">Einstellungen</string>
+  <string name="action_about">Über</string>
+  <string name="action_alert">Hinweis</string>
+  <string name="action_back">Zurück</string>
+  <string name="action_blank">Anzeige umschalten</string>
+  <string name="action_preferences">Einstellungen</string>
+  <string name="action_refresh">Aktualisieren</string>
+  <string name="action_search">Suche</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Abbruch</string>
+  <string name="connection_configuration">Netzwerk einrichten</string>
+  <string name="connection_password">Passwort</string>
+  <string name="connection_profile">Server-Einstellungen</string>
+  <string name="connection_timeout">Verbindungzeit überschritten</string>
+  <string name="connection_timeout_summary">Wähle einen Wert (in Millisekunden)</string>
+  <string name="connection_userid">Benutzername</string>
+  <string name="custom_timeout">Setze benutzerdefiniertes Zeitlimit</string>
+  <string name="display_blank_summary">Wähle die erforderlichen Ansicht</string>
+  <string name="display_desktop">Bildschirmhintergrund anzeigen</string>
+  <string name="display_list_autoscroll">Ausgewähltes Item mittig in Liste</string>
+  <string name="display_reset">Live-Ansicht anzeigen</string>
+  <string name="display_settings">Anzeigeeinstellung</string>
+  <string name="display_screen">Abdunkeln</string>
+  <string name="display_theme">Nur Design anzeigen</string>
+  <string name="enable_custom_timeouts">Aktiviere eigene Time-outs</string>
+  <string name="enter_alert_text">Hinweis eingeben</string>
+  <string name="enable_autoscroll">Anzeigen automatisch zentrieren</string>
+  <string name="home">Start</string>
+  <string name="httpreturn_unauthorised">Zugriff nicht erlaubt, bitte einen gültigen Benutzernamen und das korrekte Passwort eingeben</string>
+  <string name="live_list">Live Liste</string>
+  <string name="live_view">Echtzeit-Anzeige</string>
+  <string name="navigation_drawer_open">Navigationsleiste anzeigen</string>
+  <string name="navigation_drawer_close">Navigationsleiste verbergen</string>
+  <string name="next">Vorwärts</string>
+  <string name="none">Nichts</string>
+  <string name="port">Port</string>
+  <string name="previous">Zurück</string>
+  <string name="process">Verarbeite</string>
+  <string name="service_list">Ablaufliste</string>
+  <string name="stage_view">Bühnenansicht</string>
+  <string name="text_size">Textgröße in der Ansicht auswählen</string>
+  <string name="text_size_summary">Textgröße des Ablaufs ändern</string>
+  <string name="title_activity_settings">Einstellungen</string>
+  <string name="url_hint">Hostname oder IP</string>
+  <string name="unable">Anfrage konnte nicht verarbeitet werden - bitte die Netzwerkeinstellungen überprüfen</string>
+</resources>

=== added directory 'app/src/main/res/values-el'
=== added file 'app/src/main/res/values-el/strings.xml'
--- app/src/main/res/values-el/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-el/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_4">Πνευματικά δικαιώματα</string>
+  <string name="about_display_5">Τμηματικά πνευματικά δικαιώματα</string>
+  <string name="about_display_6">Άδεια</string>
+  <string name="action_settings">Ρυθμίσεις</string>
+  <string name="action_about">Σχετικά</string>
+  <string name="action_alert">Ειδοποίηση</string>
+  <string name="action_back">Πίσω</string>
+  <string name="action_preferences">Προτιμήσεις</string>
+  <string name="action_refresh">Ανανέωση</string>
+  <string name="action_search">Αναζήτηση</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Ακύρωση</string>
+  <string name="connection_timeout">Λήξη Σύνδεσης</string>
+  <string name="connection_timeout_summary">Επιλέξτε μια τιμή (milliseconds)</string>
+  <string name="display_blank_summary">Επιλέξτε τον απαιτούμενο τύπο κενής σελίδας </string>
+  <string name="enable_custom_timeouts">Ενεργοποίηση </string>
+  <string name="home">Αρχική Σελίδα</string>
+  <string name="none">Κανένα</string>
+  <string name="port">Θύρα</string>
+  <string name="text_size_summary">Αλλάξτε το μέγεθος κειμένου της Λειτουργίας</string>
+  <string name="title_activity_settings">Ρυθμίσεις</string>
+  <string name="url_hint">Hostname ή διεύθυνση IP</string>
+</resources>

=== added directory 'app/src/main/res/values-en-rGB'
=== added file 'app/src/main/res/values-en-rGB/strings.xml'
--- app/src/main/res/values-en-rGB/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-en-rGB/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP is free church presentation software</string>
+  <string name="about_display_2">To find out more visit the OpenLP website</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Portions copyright</string>
+  <string name="about_display_6">License</string>
+  <string name="about_display_7">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</string>
+  <string name="about_display_8">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</string>
+  <string name="action_settings">Settings</string>
+  <string name="action_about">About</string>
+  <string name="action_alert">Alert</string>
+  <string name="action_back">Back</string>
+  <string name="action_blank">Toggle Display</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_configuration">Configure Network</string>
+  <string name="connection_password">Password</string>
+  <string name="connection_profile">Server Details</string>
+  <string name="connection_timeout">Connection Timeout</string>
+  <string name="connection_timeout_summary">Select a value (milliseconds)</string>
+  <string name="connection_userid">Username</string>
+  <string name="custom_timeout">Set Custom Timeout</string>
+  <string name="display_blank_summary">Select the required display</string>
+  <string name="display_desktop">Display Desktop background</string>
+  <string name="display_list_autoscroll">Allow the selected item to scroll to the centre of the list</string>
+  <string name="display_reset">Show Live display</string>
+  <string name="display_settings">Display Setting</string>
+  <string name="display_screen">Display Black only</string>
+  <string name="display_theme">Display Theme only</string>
+  <string name="enable_custom_timeouts">Enable Custom Timeouts</string>
+  <string name="enter_alert_text">Enter Alert Text</string>
+  <string name="enable_autoscroll">Allow displays to auto center</string>
+  <string name="home">Home</string>
+  <string name="httpreturn_unauthorised">Unauthorised Access, please enter valid username and password</string>
+  <string name="live_list">Live List</string>
+  <string name="live_view">Live View</string>
+  <string name="navigation_drawer_open">Open navigation drawer</string>
+  <string name="navigation_drawer_close">Close navigation drawer</string>
+  <string name="next">Next</string>
+  <string name="none">None</string>
+  <string name="port">Port</string>
+  <string name="previous">Previous</string>
+  <string name="process">Process</string>
+  <string name="service_list">Service List</string>
+  <string name="stage_view">Stage View</string>
+  <string name="text_size">Select display text size</string>
+  <string name="text_size_summary">Change the Service text size</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>

=== added directory 'app/src/main/res/values-en-rZA'
=== added file 'app/src/main/res/values-en-rZA/strings.xml'
--- app/src/main/res/values-en-rZA/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-en-rZA/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP is free church presentation software</string>
+  <string name="about_display_2">To find out more visit the OpenLP website</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Portions copyright</string>
+  <string name="about_display_6">License</string>
+  <string name="about_display_7">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</string>
+  <string name="about_display_8">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</string>
+  <string name="action_settings">Settings</string>
+  <string name="action_about">About</string>
+  <string name="action_alert">Alert</string>
+  <string name="action_back">Back</string>
+  <string name="action_blank">Toggle Display</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_configuration">Configure Network</string>
+  <string name="connection_password">Password</string>
+  <string name="connection_profile">Server Details</string>
+  <string name="connection_timeout">Connection Timeout</string>
+  <string name="connection_timeout_summary">Select a value (milliseconds)</string>
+  <string name="connection_userid">Username</string>
+  <string name="custom_timeout">Set Custom Timeout</string>
+  <string name="display_blank_summary">Select the required display</string>
+  <string name="display_desktop">Display Desktop background</string>
+  <string name="display_list_autoscroll">Allow the selected item to scroll to the centre of the list</string>
+  <string name="display_reset">Show Live display</string>
+  <string name="display_settings">Display Setting</string>
+  <string name="display_screen">Display Black only</string>
+  <string name="display_theme">Display Theme only</string>
+  <string name="enable_custom_timeouts">Enable Custom Timeouts</string>
+  <string name="enter_alert_text">Enter Alert Text</string>
+  <string name="enable_autoscroll">Allow displays to auto centre</string>
+  <string name="home">Home</string>
+  <string name="httpreturn_unauthorised">Unauthorised Access, please enter valid username and password</string>
+  <string name="live_list">Live List</string>
+  <string name="live_view">Live View</string>
+  <string name="navigation_drawer_open">Open navigation drawer</string>
+  <string name="navigation_drawer_close">Close navigation drawer</string>
+  <string name="next">Next</string>
+  <string name="none">None</string>
+  <string name="port">Port</string>
+  <string name="previous">Previous</string>
+  <string name="process">Process</string>
+  <string name="service_list">Service List</string>
+  <string name="stage_view">Stage View</string>
+  <string name="text_size">Select display text size</string>
+  <string name="text_size_summary">Change the Service text size</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>

=== added directory 'app/src/main/res/values-es'
=== added file 'app/src/main/res/values-es/strings.xml'
--- app/src/main/res/values-es/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-es/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP es un software de proyección gratuito para iglesias.</string>
+  <string name="about_display_2">Para más información sobre OpenLP visite el sitio web.</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Partes copyright</string>
+  <string name="about_display_6">Licencia</string>
+  <string name="about_display_7">Este es un programa gratuito; usted puede distribuirlo y/o modificarlo bajo los términos de GNU General Public License según la publicación de Free Software Foundation; versión 2 de la Licencia.</string>
+  <string name="about_display_8">Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR.</string>
+  <string name="action_settings">Preferencias</string>
+  <string name="action_about">Acerca de</string>
+  <string name="action_alert">Alerta</string>
+  <string name="action_back">Atrás</string>
+  <string name="action_blank">Alternar Pantalla</string>
+  <string name="action_preferences">Preferencias</string>
+  <string name="action_refresh">Actualizar</string>
+  <string name="action_search">Buscar</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Cancelar</string>
+  <string name="connection_configuration">Configurar Red</string>
+  <string name="connection_password">Clave</string>
+  <string name="connection_profile">Detalles de Servidor</string>
+  <string name="connection_timeout">Tiempo de espera de conexión</string>
+  <string name="connection_timeout_summary">Seleccione un valor (en milisegundos)</string>
+  <string name="connection_userid">Usuario</string>
+  <string name="custom_timeout">Tiempo de espera personalizado</string>
+  <string name="display_blank_summary">Seleccionar la pantalla requerida</string>
+  <string name="display_desktop">Mostrar Fondo del Escritorio</string>
+  <string name="display_list_autoscroll">Permitir que el elemento actual se desplace hacia el centro de la lista</string>
+  <string name="display_reset">Mostrar pantalla En Vivo</string>
+  <string name="display_settings">Preferencias de pantalla</string>
+  <string name="display_screen">Mostrar Negro solamente</string>
+  <string name="display_theme">Mostrar Tema solamente</string>
+  <string name="enable_custom_timeouts">Permitir tiempos de espera personalizados</string>
+  <string name="enter_alert_text">Ingrese Texto de Alerta</string>
+  <string name="enable_autoscroll">Permitir auto centrado de pantalla</string>
+  <string name="home">Inicio</string>
+  <string name="httpreturn_unauthorised">Acceso No Autorizado, ingrese usuario y clave válidos</string>
+  <string name="live_list">Lista En Vivo</string>
+  <string name="live_view">Vista En Vivo</string>
+  <string name="navigation_drawer_open">Abrir cajón de navegación</string>
+  <string name="navigation_drawer_close">Cerrar cajón de navegación</string>
+  <string name="next">Siguiente</string>
+  <string name="none">Ninguno</string>
+  <string name="port">Puerto</string>
+  <string name="previous">Anterior</string>
+  <string name="process">Procesar</string>
+  <string name="service_list">Lista de Servicio</string>
+  <string name="stage_view">Vista de Escenario</string>
+  <string name="text_size">Seleccione tamaño del texto</string>
+  <string name="text_size_summary">Cambia el tamaño de texto del Servicio</string>
+  <string name="title_activity_settings">Preferencias</string>
+  <string name="url_hint">Nombre de host o IP</string>
+  <string name="unable">No se pudo procesar la solicitud - revise la configuración de red</string>
+</resources>

=== added directory 'app/src/main/res/values-et'
=== added file 'app/src/main/res/values-et/strings.xml'
--- app/src/main/res/values-et/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-et/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP on vaba kiriku esitlustarkvara</string>
+  <string name="about_display_2">Rohkem saab teada OpenLP veebilehelt</string>
+  <string name="about_display_4">Autoriõigused</string>
+  <string name="about_display_5">Osalised autoriõigused</string>
+  <string name="about_display_6">Litsents</string>
+  <string name="action_settings">Sätted</string>
+  <string name="action_about">Rakendusest</string>
+  <string name="action_alert">Teade</string>
+  <string name="action_back">Tagasi</string>
+  <string name="action_blank">Kuva vahetus</string>
+  <string name="action_preferences">Eelistused</string>
+  <string name="action_refresh">Värskenda</string>
+  <string name="action_search">Otsi</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Loobu</string>
+  <string name="connection_configuration">Seadista võrk</string>
+  <string name="connection_password">Parool</string>
+  <string name="connection_profile">Serveri andmed</string>
+  <string name="connection_timeout">Ühenduse aegumine</string>
+  <string name="connection_timeout_summary">Vali kestus (millisekundid)</string>
+  <string name="connection_userid">Kasutajanimi</string>
+  <string name="custom_timeout">Päringu aegumine</string>
+  <string name="display_blank_summary">Vali nõutud kuva</string>
+  <string name="display_desktop">Töölaua tausta näitamine</string>
+  <string name="display_reset">Laivi kuva</string>
+  <string name="display_settings">Kuvasätted</string>
+  <string name="display_screen">Kuva musta</string>
+  <string name="display_theme">Kuva ainult teemat</string>
+  <string name="enable_custom_timeouts">Kohandatud aegumisegade kasutamine</string>
+  <string name="enter_alert_text">Hoiatuse tekst</string>
+  <string name="enable_autoscroll">Kuvad võivad automaatselt paigutuda keskele</string>
+  <string name="home">Kodu</string>
+  <string name="httpreturn_unauthorised">Lubamatu ligipääs, palun sisesta õiged kasutajanimi ja parool.</string>
+  <string name="live_list">Ekraanil</string>
+  <string name="live_view">Ekraan</string>
+  <string name="navigation_drawer_open">Ava navisahtel</string>
+  <string name="navigation_drawer_close">Sulge navisahtel</string>
+  <string name="next">Järgmine</string>
+  <string name="none">Puudub</string>
+  <string name="port">Port</string>
+  <string name="previous">Eelmine</string>
+  <string name="process">Töötlemine</string>
+  <string name="service_list">Teenistuste loend</string>
+  <string name="stage_view">Lavavaade</string>
+  <string name="text_size">Teksti suurus</string>
+  <string name="text_size_summary">Vaikimisi teenistuse teksti suuruse muutmine</string>
+  <string name="title_activity_settings">Sätted</string>
+  <string name="url_hint">Hostinimi või IP</string>
+  <string name="unable">Päringu töötlemine on võimatu - kontrolli võrgusätteid</string>
+</resources>

=== added directory 'app/src/main/res/values-fi'
=== added file 'app/src/main/res/values-fi/strings.xml'
--- app/src/main/res/values-fi/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-fi/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP on vapaalevitteinen seurakuntien esitysohjelmisto.</string>
+  <string name="about_display_2">Lisätietoja löytyy OpenLP verkkosivulta</string>
+  <string name="about_display_4">Tekijäinoikeudet</string>
+  <string name="about_display_5">Osien tekijäinoikeudet</string>
+  <string name="about_display_6">Lisenssi</string>
+  <string name="about_display_7">Tämä ohjelma on vapaa, voit jakaa ja / tai muuttaa sitä ehtojen mukaisesti GNU General Public Licensen julkaissut Free Software Foundation, version 2 lisenssillä.</string>
+  <string name="about_display_8">Tätä ohjelmaa levitetään siinä toivossa, että se olisi hyödyllinen, mutta ilman mitään takuuta; ilman edes hiljaista takuuta kaupallisesti hyväksyttävästä laadusta tai soveltuvuudesta tiettyyn tarkoitukseen.</string>
+  <string name="action_settings">Asetukset</string>
+  <string name="action_about">Tietoja</string>
+  <string name="action_alert">Huomioviesti</string>
+  <string name="action_back">Takaisin</string>
+  <string name="action_blank">Näytä tai piilota näyttö</string>
+  <string name="action_preferences">Asetukset</string>
+  <string name="action_refresh">Päivitä</string>
+  <string name="action_search">Etsi</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Peruuta</string>
+  <string name="connection_configuration">Verkon asetukset</string>
+  <string name="connection_password">Salasana</string>
+  <string name="connection_profile">Palvelimen asetukset</string>
+  <string name="connection_timeout">Yhteyden aikakatkaisu</string>
+  <string name="connection_timeout_summary">Valitse arvo (millisekuntia)</string>
+  <string name="connection_userid">Käyttäjätunnus</string>
+  <string name="custom_timeout">Säädä mukautettu aikakatkaisu</string>
+  <string name="display_blank_summary">Valitse vaadittu näyttölaite</string>
+  <string name="display_desktop">Näytä työpöydän tausta</string>
+  <string name="display_list_autoscroll">Salli valittavan nimikkeen vierittäminen luettelon keskimmäiseksi</string>
+  <string name="display_reset">Näytä Esitys näyttö</string>
+  <string name="display_settings">Näytön asetukset</string>
+  <string name="display_screen">Näytä vain pimennys</string>
+  <string name="display_theme">Näytä vain teema</string>
+  <string name="enable_custom_timeouts">Salli mukautetut viiveet</string>
+  <string name="enter_alert_text">Kirjoita huomioviesti tähän</string>
+  <string name="enable_autoscroll">Salli näyttöjen automaattinen keskitys</string>
+  <string name="home">Koti</string>
+  <string name="httpreturn_unauthorised">Ei pääsyä, ole hyvä ja anna kelvollinen käyttäjätunnus ja salasana</string>
+  <string name="live_list">Lista</string>
+  <string name="live_view">Esitysnäkymä</string>
+  <string name="navigation_drawer_open">Avaa navigointi</string>
+  <string name="navigation_drawer_close">Sulje navigointi</string>
+  <string name="next">Seuraava</string>
+  <string name="none">Ei mitään</string>
+  <string name="port">Portti</string>
+  <string name="previous">Edellinen</string>
+  <string name="process">Prosessoi</string>
+  <string name="service_list">Palveluluettelo</string>
+  <string name="stage_view">Lavanäyttö</string>
+  <string name="text_size">Valitse näyttötekstin koko</string>
+  <string name="text_size_summary">Vaihda palvelun tekstikokoa</string>
+  <string name="title_activity_settings">Asetukset</string>
+  <string name="url_hint">Koneen nimi tai IP</string>
+  <string name="unable">Pyyntöä ei voi käsitellä - tarkista verkkoasetukset</string>
+</resources>

=== added directory 'app/src/main/res/values-fr'
=== added file 'app/src/main/res/values-fr/strings.xml'
--- app/src/main/res/values-fr/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-fr/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP est un logiciel de projection libre</string>
+  <string name="about_display_2">Pour en savoir plus visitez le site web d\'OpenLP</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Copyright partiel</string>
+  <string name="about_display_6">Licence</string>
+  <string name="about_display_7">Ce programme est un logiciel libre; vous pouvez le redistribuer et/ou le modifier au titre des clauses de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation; version 2 de la Licence.</string>
+  <string name="about_display_8">Ce programme est distribué dans l\'espoir qu\'il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIABILITÉ ou DE CONFORMITÉ À UNE UTILISATION PARTICULIÈRE.</string>
+  <string name="action_settings">Paramètres</string>
+  <string name="action_about">A propos de</string>
+  <string name="action_alert">Alerte</string>
+  <string name="action_back">Arrière</string>
+  <string name="action_blank">Afficher/Masquer</string>
+  <string name="action_preferences">Préférences</string>
+  <string name="action_refresh">Rafraîchir</string>
+  <string name="action_search">Recherche</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Annuler</string>
+  <string name="connection_configuration">Configuration du réseau</string>
+  <string name="connection_password">Mot de passe</string>
+  <string name="connection_profile">Détails du serveur</string>
+  <string name="connection_timeout">Délai de connexion</string>
+  <string name="connection_timeout_summary">Sélectionnez une valeur (millisecondes)</string>
+  <string name="connection_userid">Nom d\'utilisateur</string>
+  <string name="custom_timeout">Définir un délai personnalisé</string>
+  <string name="display_blank_summary">Sélectionner l\'affichage souhaité</string>
+  <string name="display_desktop">Afficher le fond du bureau</string>
+  <string name="display_list_autoscroll">Permettre à l\'élément sélectionné de défiler au centre de la liste</string>
+  <string name="display_reset">Afficher le direct</string>
+  <string name="display_settings">Paramètres d\'affichage</string>
+  <string name="display_screen">Afficher un écran noir</string>
+  <string name="display_theme">Afficher uniquement le thème</string>
+  <string name="enable_custom_timeouts">Activer le délai personnalisé</string>
+  <string name="enter_alert_text">Entrer le message d\'alerte</string>
+  <string name="enable_autoscroll">Permettre les affichages au centre</string>
+  <string name="home">Accueil</string>
+  <string name="httpreturn_unauthorised">Accès refusé, veuillez entrer un nom d\'utilisateur et un mot de passe valide</string>
+  <string name="live_list">Liste du direct</string>
+  <string name="live_view">Vue du direct</string>
+  <string name="navigation_drawer_open">Ouvrir le tiroir de navigation</string>
+  <string name="navigation_drawer_close">Fermer le tiroir de navigation</string>
+  <string name="next">Suivant</string>
+  <string name="none">Rien</string>
+  <string name="port">Port</string>
+  <string name="previous">Précédent</string>
+  <string name="process">Processus</string>
+  <string name="service_list">Liste du service</string>
+  <string name="stage_view">Prompteur</string>
+  <string name="text_size">Sélectionner la taille du texte</string>
+  <string name="text_size_summary">Modifier la taille du texte du service</string>
+  <string name="title_activity_settings">Paramètres</string>
+  <string name="url_hint">Nom d\'hôte ou IP</string>
+  <string name="unable">Impossible d\'effectuer la demande - vérifiez les paramètres réseau</string>
+</resources>

=== added directory 'app/src/main/res/values-hu'
=== added file 'app/src/main/res/values-hu/strings.xml'
--- app/src/main/res/values-hu/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-hu/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">Az OpenLP egy templomi/gyülekezeti vetítő szoftver.</string>
+  <string name="about_display_2">További információk az OpenLP-ről a weboldalon</string>
+  <string name="about_display_4">Szerzői jog</string>
+  <string name="about_display_5">Részleges szerzői jog</string>
+  <string name="about_display_6">Licenc</string>
+  <string name="about_display_7">Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki</string>
+  <string name="about_display_8">Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve</string>
+  <string name="action_settings">Beállítások</string>
+  <string name="action_about">Névjegy</string>
+  <string name="action_alert">Riasztás</string>
+  <string name="action_back">Vissza</string>
+  <string name="action_blank">Megjelenítés átváltása</string>
+  <string name="action_preferences">Beállítások</string>
+  <string name="action_refresh">Frissítés</string>
+  <string name="action_search">Keresés</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Mégsem</string>
+  <string name="connection_configuration">Hálózat beállítása</string>
+  <string name="connection_password">Jelszó</string>
+  <string name="connection_profile">Szerver részletek</string>
+  <string name="connection_timeout">Kapcsolódási időtúllépés</string>
+  <string name="connection_timeout_summary">Érték választása (milliszekundum)</string>
+  <string name="connection_userid">Felhasználói név</string>
+  <string name="custom_timeout">Egyéni időtúllépés beállítása</string>
+  <string name="display_blank_summary">Kívánt megjelenés kiválasztása</string>
+  <string name="display_desktop">Asztal hátterének megjelenítése</string>
+  <string name="display_list_autoscroll">Görgetés a lista közepére a kijelölt elemhez</string>
+  <string name="display_reset">Élő adás megjelenítése</string>
+  <string name="display_settings">Megjelenítési beállítás</string>
+  <string name="display_screen">Elsötétített képernyő megjelenítése</string>
+  <string name="display_theme">Téma megjelenítése</string>
+  <string name="enable_custom_timeouts">Egyéni időtúllépés engedélyezése</string>
+  <string name="enter_alert_text">Riasztási üzenet megadása</string>
+  <string name="enable_autoscroll">Megjelenés automatikus középre igazítása</string>
+  <string name="home">Kezdőlap</string>
+  <string name="httpreturn_unauthorised">Engedély nélküli hozzáférés, érvényes a felhasználói név és a jelszó?</string>
+  <string name="live_list">Élő lista</string>
+  <string name="live_view">Élő nézet</string>
+  <string name="navigation_drawer_open">Menü megnyitása</string>
+  <string name="navigation_drawer_close">Menü bezárása</string>
+  <string name="next">Következő</string>
+  <string name="none">Nincs</string>
+  <string name="port">Portszám</string>
+  <string name="previous">Előző</string>
+  <string name="process">Folyamatban</string>
+  <string name="service_list">Sorrend</string>
+  <string name="stage_view">Színpadi nézet</string>
+  <string name="text_size">Betűméret választása</string>
+  <string name="text_size_summary">Sorrend betűméretének módosítása</string>
+  <string name="title_activity_settings">Beállítások</string>
+  <string name="url_hint">Gépnév vagy IP-cím</string>
+  <string name="unable">A kérés feldolgozhatatlan ‒ a hálózati beállítások ellenőrzése javasolt</string>
+</resources>

=== added directory 'app/src/main/res/values-id'
=== added file 'app/src/main/res/values-id/strings.xml'
--- app/src/main/res/values-id/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-id/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP adalah perangkat lunak presentasi gratis untuk gereja</string>
+  <string name="about_display_2">Untuk mengetahui lebih lanjut, kunjungi situs OpenLP</string>
+  <string name="about_display_4">Hak Cipta</string>
+  <string name="about_display_5">Bagian hak cipta</string>
+  <string name="about_display_6">Lisensi</string>
+  <string name="about_display_7">Program ini adalah perangkat lunak gratis; Anda dapat menyebarluaskannya dan / atau memodifikasinya di bawah ketentuan GNU General Public License sebagaimana diterbitkan oleh Free Software Foundation; versi 2 dari Lisensi tersebut.</string>
+  <string name="about_display_8">Program ini disebarluaskan dengan harapan bahwa akan berguna, tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan yang termasuk pada PERDAGANGAN atau KECOCOKAN UNTUK SUATU TUJUAN TERTENTU.</string>
+  <string name="action_settings">Setelan</string>
+  <string name="action_about">Tentang</string>
+  <string name="action_alert">Peringatan</string>
+  <string name="action_back">Kembali</string>
+  <string name="action_blank">Ganti Tampilan</string>
+  <string name="action_preferences">Pilihan</string>
+  <string name="action_refresh">Segarkan-ulang</string>
+  <string name="action_search">Penelusuran</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Batal</string>
+  <string name="connection_configuration">Mengkonfigurasi Jaringan</string>
+  <string name="connection_password">Kata sandi</string>
+  <string name="connection_profile">Rincian Server</string>
+  <string name="connection_timeout">Batas-Waktu Sambungan</string>
+  <string name="connection_timeout_summary">Pilih sebuah nilai (milidetik)</string>
+  <string name="connection_userid">Nama Pengguna</string>
+  <string name="custom_timeout">Setel Batas-waktu Kustom</string>
+  <string name="display_blank_summary">Pilih tampilan yang dibutuhkan</string>
+  <string name="display_desktop">Tampilkan latar Desktop</string>
+  <string name="display_list_autoscroll">Izinkan butir terpilih untuk digulir ke tengah daftar</string>
+  <string name="display_reset">Tampilkan tampilan Tayang</string>
+  <string name="display_settings">Setelan Tampilan</string>
+  <string name="display_screen">Tampilkan Layar Hitam saja</string>
+  <string name="display_theme">Tampilkan Tema saja</string>
+  <string name="enable_custom_timeouts">Aktifkan Batas-Waktu Kustom</string>
+  <string name="enter_alert_text">Masukkan Teks Peringatan</string>
+  <string name="enable_autoscroll">Izinkan semua tampilan diposisikan ke tengah secara otomatis</string>
+  <string name="home">Beranda</string>
+  <string name="httpreturn_unauthorised">Akses Tidak sah, silakan masukkan nama pengguna dan kata sandi yang valid</string>
+  <string name="live_list">Daftar Tayang</string>
+  <string name="live_view">Tinjauan Tayang</string>
+  <string name="navigation_drawer_open">Buka penarik navigasi</string>
+  <string name="navigation_drawer_close">Tutup penarik navigasi</string>
+  <string name="next">Selanjutnya</string>
+  <string name="none">Tidak sama sekali</string>
+  <string name="port">Port</string>
+  <string name="previous">Sebelumnya</string>
+  <string name="process">Proses</string>
+  <string name="service_list">Daftar Layanan</string>
+  <string name="stage_view">Tinjuan Bertahap</string>
+  <string name="text_size">Pilih tampilan ukuran teks</string>
+  <string name="text_size_summary">Ubah ukuran teks Layanan</string>
+  <string name="title_activity_settings">Setelan</string>
+  <string name="url_hint">Nama Host atau IP</string>
+  <string name="unable">Tidak dapat memproses permintaan - periksa setelan jaringan</string>
+</resources>

=== added directory 'app/src/main/res/values-it'
=== added file 'app/src/main/res/values-it/strings.xml'
--- app/src/main/res/values-it/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-it/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP è un software libero di presentazione per le Chiese</string>
+  <string name="about_display_2">Per saperne di più visita il sito Web OpenLP</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Porzioni di copyright</string>
+  <string name="about_display_6">Licenza</string>
+  <string name="about_display_7">Questo è un software libero; può essere redistribuito e/o modificato nei termini della GNU General Public License come pubblicato dalla Free Software Foundation; vesione 2 della licenza</string>
+  <string name="about_display_8">Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA, senza neppure l\'implicita garanzia della COMMERCIABILITA\' o IDONEITA\' PER UN PARTICOLARE SCOPO</string>
+  <string name="action_settings">Impostazioni</string>
+  <string name="action_about">Informazioni</string>
+  <string name="action_alert">Avviso</string>
+  <string name="action_back">Indietro</string>
+  <string name="action_blank">Attiva/disattiva visualizzazione</string>
+  <string name="action_preferences">Preferenze</string>
+  <string name="action_refresh">Aggiorna</string>
+  <string name="action_search">Ricerca</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Annulla</string>
+  <string name="connection_configuration">Configura Rete</string>
+  <string name="connection_password">Password</string>
+  <string name="connection_profile">Dettagli Server</string>
+  <string name="connection_timeout">Timeout Connessione</string>
+  <string name="connection_timeout_summary">Seleziona un valore (millisecondi)</string>
+  <string name="connection_userid">Nome Utente</string>
+  <string name="custom_timeout">Imposta Timeout personalizzato</string>
+  <string name="display_blank_summary">Selezionare il monitor desiderato</string>
+  <string name="display_desktop">Visualizza sfondo Desktop</string>
+  <string name="display_list_autoscroll">Consentire l\'elemento selezionato di scorrere al centro dell\'elenco</string>
+  <string name="display_reset">Visualizzazione Live Show</string>
+  <string name="display_settings">Impostazione Visualizzazione</string>
+  <string name="display_screen">Solo Schermo Nero</string>
+  <string name="display_theme">Visualizza solo il Tema</string>
+  <string name="enable_custom_timeouts">Abilitare i timeout personalizzati</string>
+  <string name="enter_alert_text">Inserisci il testo Avviso</string>
+  <string name="enable_autoscroll">Consenti la visualizzazione al centro automaticamente</string>
+  <string name="home">Inizio</string>
+  <string name="httpreturn_unauthorised">Accesso non consentito, prego inserire un nome utente e password valida</string>
+  <string name="live_list">Elenco LIVE</string>
+  <string name="live_view">Visualizza LIVE</string>
+  <string name="navigation_drawer_open">Apri sezione navigazione</string>
+  <string name="navigation_drawer_close">Chiudi sezione navigazione</string>
+  <string name="next">Successivo</string>
+  <string name="none">Nessuno</string>
+  <string name="port">Porta</string>
+  <string name="previous">Precedente</string>
+  <string name="process">Elabora</string>
+  <string name="service_list">Elenco Servizio</string>
+  <string name="stage_view">Visualizza Palco</string>
+  <string name="text_size">Selezionare la dimensione testo di visualizzazione</string>
+  <string name="text_size_summary">Modificare le dimensioni del testo di servizio</string>
+  <string name="title_activity_settings">Impostazioni</string>
+  <string name="url_hint">Hostname o IP</string>
+  <string name="unable">Impossibile elaborare la richiesta - controllare le impostazioni di rete</string>
+</resources>

=== added directory 'app/src/main/res/values-ja'
=== added file 'app/src/main/res/values-ja/strings.xml'
--- app/src/main/res/values-ja/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-ja/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLPは無償の教会プレゼンテーション用ソフトです。</string>
+  <string name="about_display_2">詳しくはOpenLPウェブサイトをご覧ください。</string>
+  <string name="about_display_4">著作権</string>
+  <string name="about_display_5">追加の著作権</string>
+  <string name="about_display_6">ライセンス</string>
+  <string name="about_display_7">このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書バージョン2の定める条件の下で再頒布または改変することができます。</string>
+  <string name="about_display_8">このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。</string>
+  <string name="action_settings">設定</string>
+  <string name="action_about">情報</string>
+  <string name="action_alert">警告</string>
+  <string name="action_back">戻る</string>
+  <string name="action_preferences">設定</string>
+  <string name="action_refresh">再読込</string>
+  <string name="action_search">検索</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">キャンセル</string>
+  <string name="connection_configuration">ネットワーク設定</string>
+  <string name="connection_password">パスワード</string>
+  <string name="connection_profile">サーバの詳細</string>
+  <string name="connection_timeout">接続タイムアウト</string>
+  <string name="connection_timeout_summary">値を選択 (ミリ秒)</string>
+  <string name="connection_userid">ユーザ名</string>
+  <string name="custom_timeout">任意のタイムアウト時間を設定する</string>
+  <string name="enable_custom_timeouts">任意のタイムアウトを有効にする</string>
+  <string name="enter_alert_text">警告文を入力</string>
+  <string name="home">ホーム</string>
+  <string name="httpreturn_unauthorised">認証が必要です。ユーザ名とパスワードを入力してください。</string>
+  <string name="live_list">ライブ一覧</string>
+  <string name="next">次</string>
+  <string name="none">無し</string>
+  <string name="port">ポート</string>
+  <string name="previous">前</string>
+  <string name="text_size">文字の大きさを選択</string>
+  <string name="text_size_summary">礼拝テキストの大きさを変更します</string>
+  <string name="title_activity_settings">設定</string>
+  <string name="url_hint">ホスト名またはIPアドレス</string>
+</resources>

=== added directory 'app/src/main/res/values-ko'
=== added file 'app/src/main/res/values-ko/strings.xml'
--- app/src/main/res/values-ko/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-ko/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_6">라이선스</string>
+  <string name="action_settings">설정</string>
+  <string name="action_about">정보</string>
+  <string name="action_alert">알림</string>
+  <string name="action_back">뒤로</string>
+  <string name="action_refresh">새로 고침</string>
+  <string name="action_search">검색</string>
+  <string name="cancel">취소</string>
+  <string name="home">처음</string>
+  <string name="next">다음</string>
+  <string name="port">포트</string>
+  <string name="title_activity_settings">설정</string>
+</resources>

=== added directory 'app/src/main/res/values-large'
=== added file 'app/src/main/res/values-large/refs.xml'
--- app/src/main/res/values-large/refs.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-large/refs.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+    Layout alias to replace the single-pane version of the layout with a
+    two-pane version on Large screens.
+
+    For more on layout aliases, see:
+    http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
+    -->
+
+</resources>
\ No newline at end of file

=== added directory 'app/src/main/res/values-lt'
=== added file 'app/src/main/res/values-lt/strings.xml'
--- app/src/main/res/values-lt/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-lt/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP yra, bažnyčioms skirta, nemokama pristatymų programinė įranga</string>
+  <string name="about_display_2">Norėdami sužinoti daugiau, aplankykite OpenLP svetainę</string>
+  <string name="about_display_4">Autorių Teisės</string>
+  <string name="about_display_5">Autorių Teisių dalys</string>
+  <string name="about_display_6">Licencija</string>
+  <string name="about_display_7">Ši programa yra nemokama programinė įranga; jūs galite ją platinti ir/arba modifikuoti remdamiesi Free Software Foundation paskelbtomis GNU Bendrosios Viešosios Licencijos sąlygomis; licencijos 2 versija.</string>
+  <string name="about_display_8">Ši programa platinama, tikintis, kad ji bus naudinga, tačiau BE JOKIŲ GARANTIJŲ; netgi be numanomos PARDAVIMO ar TINKAMUMO TAM TIKRAM TIKSLUI GARANTIJOS</string>
+  <string name="action_settings">Nustatymus</string>
+  <string name="action_about">Apie</string>
+  <string name="action_alert">Įspėjimas</string>
+  <string name="action_back">Grįžti</string>
+  <string name="action_blank">Perjungti Ekraną</string>
+  <string name="action_preferences">Nuostatos</string>
+  <string name="action_refresh">Įkelti iš naujo</string>
+  <string name="action_search">Paieška</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Atšaukti</string>
+  <string name="connection_configuration">Konfigūruoti Tinklą</string>
+  <string name="connection_password">Slaptažodis</string>
+  <string name="connection_profile">Išsamiau apie Serverį</string>
+  <string name="connection_timeout">Sujungimo Laiko Limitas</string>
+  <string name="connection_timeout_summary">Pasirinkite reikšmę (milisekundėmis)</string>
+  <string name="connection_userid">Vartotojo vardas</string>
+  <string name="custom_timeout">Nustatyti Pasirinktiną Laukimo Laiką</string>
+  <string name="display_blank_summary">Pasirinkite reikiamą ekraną</string>
+  <string name="display_desktop">Rodyti Darbalaukio foną</string>
+  <string name="display_list_autoscroll">Leisti slinkti pasirinktą elementą į sąrašo centrą</string>
+  <string name="display_reset">Rodyti Gyvai ekraną</string>
+  <string name="display_settings">Ekrano Nustatymas</string>
+  <string name="display_screen">Rodyti tik Juodą</string>
+  <string name="display_theme">Rodyti tik Temą</string>
+  <string name="enable_custom_timeouts">Įjungti Pasirinktinius Laiko Limitus</string>
+  <string name="enter_alert_text">Įveskite Įspėjimo Tekstą</string>
+  <string name="enable_autoscroll">Leisti automatiškai centruoti ekranus</string>
+  <string name="home">Pradžia</string>
+  <string name="httpreturn_unauthorised">Neleistina Prieiga, prašome įvesti teisingą vartotojo vardą bei slaptažodį</string>
+  <string name="live_list">Sąrašas Gyvai</string>
+  <string name="live_view">Gyvas Rodinys</string>
+  <string name="navigation_drawer_open">Atidaryti naršymo stalčių</string>
+  <string name="navigation_drawer_close">Uždaryti naršymo stalčių</string>
+  <string name="next">Kitas</string>
+  <string name="none">Joks</string>
+  <string name="port">Prievadas</string>
+  <string name="previous">Ankstesnis</string>
+  <string name="process">Vykdyti</string>
+  <string name="service_list">Pamaldų Programos Sąrašas</string>
+  <string name="stage_view">Scenos Rodinys</string>
+  <string name="text_size">Pasirinkite rodomo teksto dydį</string>
+  <string name="text_size_summary">Keisti Pamaldų programos teksto dydį</string>
+  <string name="title_activity_settings">Nustatymus</string>
+  <string name="url_hint">Kompiuterio vardas arba IP</string>
+  <string name="unable">Negalima apdoroti užklausos - patikrinkite tinklo nustatymus</string>
+</resources>

=== added directory 'app/src/main/res/values-lv'
=== added file 'app/src/main/res/values-lv/strings.xml'
--- app/src/main/res/values-lv/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-lv/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP ir bezmaksas prezentāciju programma baznīcām</string>
+  <string name="about_display_2">Lai uzzinātu vairāk, apmeklējiet mājaslapu</string>
+  <string name="about_display_4">Autortiesības</string>
+  <string name="about_display_5">Daļu autortiesības</string>
+  <string name="about_display_6">Licence</string>
+  <string name="about_display_7">Šī ir bezmaksas programma. Jūs varat to izplatīt vai mainīt pēc GNU publiskās licences noteikumiem, kas publicēti Free Software Foundation, 2. versijas licencē.</string>
+  <string name="about_display_8">Šī programma ir izplatīta ar cerību, ka tā būs noderīga, bet be jebkādām garantijām par tās noderīgumu mērķim vai ienesīgumu.</string>
+  <string name="action_settings">Iestatījumi</string>
+  <string name="action_about">Par</string>
+  <string name="action_alert">Ziņojums</string>
+  <string name="action_back">Atgriezties</string>
+  <string name="action_blank">Pārslēgt displeju</string>
+  <string name="action_preferences">Iestatījumi</string>
+  <string name="action_refresh">Atsvaidzināt</string>
+  <string name="action_search">Meklēt</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Atcelt</string>
+  <string name="connection_configuration">Tīkla konfigurācija</string>
+  <string name="connection_password">Parole</string>
+  <string name="connection_profile">Servera iestatījumi</string>
+  <string name="connection_timeout">Savienojuma noildze</string>
+  <string name="connection_timeout_summary">Izvēlieties vērtību (milisekundes)</string>
+  <string name="connection_userid">Lietotājvārds</string>
+  <string name="custom_timeout">Izvēlieties vēlamo noildzi</string>
+  <string name="display_blank_summary">Izvēlieties nepieciešamo displeju</string>
+  <string name="display_desktop">Parādīt fona attēlu</string>
+  <string name="display_list_autoscroll">Atļaut šim elementa pārvietoties uz saraksta centru</string>
+  <string name="display_reset">Parādīt displeju</string>
+  <string name="display_settings">Ekrāna iestatījumi</string>
+  <string name="display_screen">Attēlot melnu ekrānu</string>
+  <string name="display_theme">Attēlot tēmas attēlu</string>
+  <string name="enable_custom_timeouts">Iespējot pielāgotās noildzes</string>
+  <string name="enter_alert_text">Ievadiet ziņojuma tekstu</string>
+  <string name="enable_autoscroll">Atļaut ekrānam iecentrēties automatiski.</string>
+  <string name="home">Sākums</string>
+  <string name="httpreturn_unauthorised">Pieeja liegta! Lūdzu ievadiet pareizu lietotājvārdu un paroli.</string>
+  <string name="live_list">Saraksts demonstrēšanai</string>
+  <string name="live_view">Attēls ekrānā</string>
+  <string name="navigation_drawer_open">Atvērt navigācijas slaidni</string>
+  <string name="navigation_drawer_close">Aizvērt navigācijas slaidni</string>
+  <string name="next">Nākamais</string>
+  <string name="none">Nekas</string>
+  <string name="port">Ports</string>
+  <string name="previous">Iepriekšējais</string>
+  <string name="process">Process</string>
+  <string name="service_list">Saraksts</string>
+  <string name="stage_view">Skatuves ekrāns</string>
+  <string name="text_size">Izvēlieties teksta lielumu</string>
+  <string name="text_size_summary">Izvēlieties dievkalpojuma teksta lielumu</string>
+  <string name="title_activity_settings">Iestatījumi</string>
+  <string name="url_hint">Vārds vai IP adrese</string>
+  <string name="unable">Nav iespējams apstrādāt pieprasījumu - pārbaudiet tīkla iestatījumus.</string>
+</resources>

=== added directory 'app/src/main/res/values-mk'
=== added file 'app/src/main/res/values-mk/strings.xml'
--- app/src/main/res/values-mk/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-mk/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_6">Лиценца</string>
+  <string name="action_alert">Предупредување</string>
+</resources>

=== added directory 'app/src/main/res/values-ml'
=== added file 'app/src/main/res/values-ml/strings.xml'
--- app/src/main/res/values-ml/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-ml/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="action_alert">ജാഗ്രത</string>
+</resources>

=== added directory 'app/src/main/res/values-nb'
=== added file 'app/src/main/res/values-nb/strings.xml'
--- app/src/main/res/values-nb/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-nb/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP er en gratis presentasjonsprogramvare for menigheter</string>
+  <string name="about_display_2">For videre opplysninger besøk OpenLP sin hjemmeside</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Andel av opphavsrett</string>
+  <string name="about_display_6">Lisens</string>
+  <string name="about_display_7">Dette programmet er gratis programvare; du kan redistribuere det og/eller endre det under betingelsene i GNU General Public License versjon 2, publisert av Free Software Foundation</string>
+  <string name="about_display_8">Dette programmet er distribuert i det håp at det vil være nyttig, men UTEN NOEN FORM FOR GARANTI; heller ingen underforståtte garanti om SALGBARHET eller ANVENDELIGHET FOR ET SPESIELT FORMÅL.</string>
+  <string name="action_settings">Innstillinger</string>
+  <string name="action_about">Om</string>
+  <string name="action_alert">Melding</string>
+  <string name="action_back">Tilbake</string>
+  <string name="action_blank">Skifte skjermvisning</string>
+  <string name="action_preferences">Innstillinger</string>
+  <string name="action_refresh">Oppdater</string>
+  <string name="action_search">Søk</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Avbryt</string>
+  <string name="connection_configuration">Konfigurer nettverk</string>
+  <string name="connection_password">Passord</string>
+  <string name="connection_profile">Serverditaljer</string>
+  <string name="connection_timeout">Tidsavbrudd for tilkobling</string>
+  <string name="connection_timeout_summary">Velg en verdi (millisekund)</string>
+  <string name="connection_userid">Brukernavn</string>
+  <string name="custom_timeout">Angi egendefinert tidsavbrudd</string>
+  <string name="display_blank_summary">Velg ønsket visning</string>
+  <string name="display_desktop">Vis skrivebordsbakgrunn</string>
+  <string name="display_list_autoscroll">Tillat valgt punkt å rulle til midt på listen</string>
+  <string name="display_reset">Vis aktivt bilde</string>
+  <string name="display_settings">Skjerminnstilling</string>
+  <string name="display_screen">Vis sort skjerm</string>
+  <string name="display_theme">Vis tema</string>
+  <string name="enable_custom_timeouts">Aktiver egendefinerte tidsavbrudd</string>
+  <string name="enter_alert_text">Skriv meldingstekst</string>
+  <string name="enable_autoscroll">Tillat automatisk sentrering av skjermene</string>
+  <string name="home">Hjem</string>
+  <string name="httpreturn_unauthorised">Ikke godkjent tilgang, vennligst skriv gyldig brukernavn og passord</string>
+  <string name="live_list">Framvisningsliste</string>
+  <string name="live_view">Skjermvisning</string>
+  <string name="navigation_drawer_open">Åpne navigasjonsmenyen</string>
+  <string name="navigation_drawer_close">Lukke navigasjonsmenyen</string>
+  <string name="next">Neste</string>
+  <string name="none">Ingen</string>
+  <string name="port">Port</string>
+  <string name="previous">Forrige</string>
+  <string name="process">Behandle</string>
+  <string name="service_list">Møteprogramliste</string>
+  <string name="stage_view">Scenevisning</string>
+  <string name="text_size">Velg tekststørrelse i  skjerm</string>
+  <string name="text_size_summary">Endre tekststørrelsen i møteprogrammet</string>
+  <string name="title_activity_settings">Innstillinger</string>
+  <string name="url_hint">Vertsnavn eller IP</string>
+  <string name="unable">Kan ikke behandle forespørselen - sjekk nettverksinnstillingene</string>
+</resources>

=== added directory 'app/src/main/res/values-nl'
=== added file 'app/src/main/res/values-nl/strings.xml'
--- app/src/main/res/values-nl/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-nl/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP is gratis presentatiesoftware voor kerken</string>
+  <string name="about_display_2">Lees meer over OpenLP op de website</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Onderdelen copyright</string>
+  <string name="about_display_6">Licentie</string>
+  <string name="about_display_7">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</string>
+  <string name="about_display_8">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</string>
+  <string name="action_settings">Instellingen</string>
+  <string name="action_about">Over</string>
+  <string name="action_alert">Waarschuwing</string>
+  <string name="action_back">Terug</string>
+  <string name="action_blank">Scherm leegmaken</string>
+  <string name="action_preferences">Voorkeuren</string>
+  <string name="action_refresh">Vernieuwen</string>
+  <string name="action_search">Zoek</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Annuleer</string>
+  <string name="connection_configuration">Netwerk instellen</string>
+  <string name="connection_password">Wachtwoord</string>
+  <string name="connection_profile">Serverdetails</string>
+  <string name="connection_timeout">Verbindingstimeout</string>
+  <string name="connection_timeout_summary">Selecteer een waarde (milliseconden)</string>
+  <string name="connection_userid">Gebruikersnaam</string>
+  <string name="custom_timeout">Aangepaste timeout instellen</string>
+  <string name="display_blank_summary">Selecteer het verplichte scherm</string>
+  <string name="display_desktop">Toon Desktop achtergrond</string>
+  <string name="display_list_autoscroll">Toegang geven aan geselecteerde items om naar het midden van de lijst te scrollen</string>
+  <string name="display_reset">Toon live scherm</string>
+  <string name="display_settings">Beeldscherminstellingen</string>
+  <string name="display_screen">Toon alleen zwart</string>
+  <string name="display_theme">Toon alleen thema</string>
+  <string name="enable_custom_timeouts"> Aangepaste timeouts toestaan</string>
+  <string name="enter_alert_text">Voer waarschuwingstekst in</string>
+  <string name="enable_autoscroll">Schermen toegang geven tot auto center</string>
+  <string name="home">Startpagina</string>
+  <string name="httpreturn_unauthorised">Geen toegang, voer juiste gebruikersnaam en wachtwoord in</string>
+  <string name="live_list">Live lijst</string>
+  <string name="live_view">Live kijken</string>
+  <string name="navigation_drawer_open">Open navigatiemenu</string>
+  <string name="navigation_drawer_close">Sluit navigatiemenu</string>
+  <string name="next">Volgende</string>
+  <string name="none">Niet</string>
+  <string name="port">Poort</string>
+  <string name="previous">Vorige</string>
+  <string name="process">Verwerken</string>
+  <string name="service_list">Liturgie lijst</string>
+  <string name="stage_view">Podiumweergave</string>
+  <string name="text_size">Selecteer schermtekstgrootte</string>
+  <string name="text_size_summary">Verander lettergrootte liturgie</string>
+  <string name="title_activity_settings">Instellingen</string>
+  <string name="url_hint">Hostname of IP adres</string>
+  <string name="unable">Kon aanvraag niet behandelen - controleer netwerkinstellingen</string>
+</resources>

=== added directory 'app/src/main/res/values-nn'
=== added file 'app/src/main/res/values-nn/strings.xml'
--- app/src/main/res/values-nn/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-nn/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="action_settings">Innstillingar.</string>
+  <string name="action_alert">Varsling</string>
+  <string name="app_name">OpenLP</string>
+  <string name="connection_timeout">Tidsavbrot for tilkopling</string>
+  <string name="connection_timeout_summary">Oppgje ein verdi i millisekund</string>
+  <string name="next">Neste</string>
+  <string name="port">Port</string>
+  <string name="previous">Førre</string>
+  <string name="title_activity_settings">Innstillingar.</string>
+</resources>

=== added directory 'app/src/main/res/values-pap'
=== added file 'app/src/main/res/values-pap/strings.xml'
--- app/src/main/res/values-pap/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-pap/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_4">Derecho di outor</string>
+  <string name="about_display_6">Lisensia</string>
+  <string name="action_settings">Konfigurashon</string>
+  <string name="action_about">Informashon</string>
+  <string name="action_alert">Aviso</string>
+  <string name="action_preferences">Preferensia</string>
+  <string name="action_search">Buska</string>
+  <string name="app_name">OpenLP</string>
+  <string name="enable_custom_timeouts">Permití Timeout adaptá</string>
+  <string name="next">Sigiente</string>
+  <string name="none">Niun</string>
+  <string name="port">Port</string>
+  <string name="previous">Bai bèk</string>
+  <string name="title_activity_settings">Konfigurashon</string>
+  <string name="url_hint">Hostname òf IP</string>
+</resources>

=== added directory 'app/src/main/res/values-pl'
=== added file 'app/src/main/res/values-pl/strings.xml'
--- app/src/main/res/values-pl/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-pl/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP jest wolnym programem do obsługi kościelnego projektora</string>
+  <string name="about_display_2">Dowiedz się więcej na stronie OpenLP</string>
+  <string name="about_display_4">Prawa autorskie</string>
+  <string name="about_display_5">Cząstkowe prawa autorskie</string>
+  <string name="about_display_6">Licencja</string>
+  <string name="about_display_7">Ten program jest wolnym oprogramowaniem; możesz go rozprzestrzeniać lub modyfikować zgodnie z zasadami Powszechnej Licencji Publicznej GNU, wydanej przez Fundację Wolnego Oprogramowania; zgodnie z 2 wersją tej Licencji</string>
+  <string name="about_display_8">Ten program jest rozpowszechniany w nadziei, że będzie pożyteczny, ale BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ</string>
+  <string name="action_settings">Ustawienia</string>
+  <string name="action_about">O programie</string>
+  <string name="action_alert">Komunikat</string>
+  <string name="action_back">Wróć</string>
+  <string name="action_blank">Przełącz Ekran</string>
+  <string name="action_preferences">Preferencje</string>
+  <string name="action_refresh">Odśwież</string>
+  <string name="action_search">Szukaj</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Anuluj</string>
+  <string name="connection_configuration">Konfiguruj sieć</string>
+  <string name="connection_password">Hasło</string>
+  <string name="connection_profile">Szczegóły serwera</string>
+  <string name="connection_timeout">Limit czasowy połączenia</string>
+  <string name="connection_timeout_summary">Wybierz wartość (milisekundy)</string>
+  <string name="connection_userid">Nazwa użytkownika</string>
+  <string name="custom_timeout">Ustaw inny limit czasowy</string>
+  <string name="display_blank_summary">Wybierz wyświetlacz</string>
+  <string name="display_desktop">Wyświetl tło ekranu</string>
+  <string name="display_list_autoscroll">Pozwól wybranemu elementowi przewinąć do środka listy</string>
+  <string name="display_reset">Pokaż Ekran</string>
+  <string name="display_settings">Ustawienia wyświetlania</string>
+  <string name="display_screen">Wyświetl czarny ekran</string>
+  <string name="display_theme">Wyświetl tylko motyw</string>
+  <string name="enable_custom_timeouts">Niestandardowy limit czasu</string>
+  <string name="enter_alert_text">Wpisz tekst komunikatu</string>
+  <string name="enable_autoscroll">Pozwól na autowyśrodkowanie </string>
+  <string name="home">Home</string>
+  <string name="httpreturn_unauthorised">Nieuprawniony dostęp, proszę wprowadź nazwę użytkownika oraz hasło.</string>
+  <string name="live_list">Plan nabożeństwa</string>
+  <string name="live_view">Ekran</string>
+  <string name="navigation_drawer_open">Otwórz zakładkę nawigacji</string>
+  <string name="navigation_drawer_close">Zamknij zakładkę nawigacji</string>
+  <string name="next">Następny</string>
+  <string name="none">Nic</string>
+  <string name="port">Port</string>
+  <string name="previous">Poprzedni</string>
+  <string name="process">Wyświetl</string>
+  <string name="service_list">Plan Nabożeństwa</string>
+  <string name="stage_view">Scena</string>
+  <string name="text_size">Wybierz rozmiar wyświetlanego tekstu </string>
+  <string name="text_size_summary">Zmień rozmiar czcionki w Planie Nabożeństwa</string>
+  <string name="title_activity_settings">Ustawienia</string>
+  <string name="url_hint">Nazwa hosta lub IP</string>
+  <string name="unable">Nie można wykonać żądania - sprawdź ustawienia sieciowe</string>
+</resources>

=== added directory 'app/src/main/res/values-pt-rBR'
=== added file 'app/src/main/res/values-pt-rBR/strings.xml'
--- app/src/main/res/values-pt-rBR/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-pt-rBR/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">O OpenLP é um software livre para exibições em igrejas</string>
+  <string name="about_display_2">Para saber mais visite o site do OpenLP</string>
+  <string name="about_display_4">Direitos Autorais</string>
+  <string name="about_display_5">Partes copyright</string>
+  <string name="about_display_6">Licença</string>
+  <string name="about_display_7">Este programa é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre; na versão 2 da Licença.</string>
+  <string name="about_display_8">Este programa é distribuido na esperança que será útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO PARA UM DETERMINADO FIM. Veja abaixo para maiores detalhes.</string>
+  <string name="action_settings">Configurações</string>
+  <string name="action_about">Sobre</string>
+  <string name="action_alert">Alertar</string>
+  <string name="action_back">Voltar</string>
+  <string name="action_blank">Alternar Monitor</string>
+  <string name="action_preferences">Preferências</string>
+  <string name="action_refresh">Atualizar</string>
+  <string name="action_search">Busca</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Cancelar</string>
+  <string name="connection_configuration">Configurar Rede</string>
+  <string name="connection_password">Senha</string>
+  <string name="connection_profile">Detalhes do Servidor</string>
+  <string name="connection_timeout">Tempo limite de conexão</string>
+  <string name="connection_timeout_summary">Selecione um valor (em milissegundos)</string>
+  <string name="connection_userid">Usuário</string>
+  <string name="custom_timeout">Ativar Timeout Personalizado</string>
+  <string name="display_blank_summary">Selecione o monitor requerido</string>
+  <string name="display_desktop">Exibir Plano de Fundo da Área de Trabalho</string>
+  <string name="display_list_autoscroll">Permitir ao item selecionado se deslocar ao centro da lista</string>
+  <string name="display_reset">Mostrar Visualização Ao Vivo</string>
+  <string name="display_settings">Configurações de Exibição</string>
+  <string name="display_screen">Exibir Tela Preta</string>
+  <string name="display_theme">Exibir Tema</string>
+  <string name="enable_custom_timeouts">Habilitar Timeouts personalizados</string>
+  <string name="enter_alert_text">Digitar Texto de Alerta</string>
+  <string name="enable_autoscroll">Auto-centralizar slides na tela</string>
+  <string name="home">Home</string>
+  <string name="httpreturn_unauthorised">Acesso não autorizado, por favor, digite usuário e senha válidos</string>
+  <string name="live_list">Lista Ao Vivo</string>
+  <string name="live_view">Ao vivo</string>
+  <string name="navigation_drawer_open">Abrir painel de navegação</string>
+  <string name="navigation_drawer_close">Fechar painel de navegação</string>
+  <string name="next">Próximo</string>
+  <string name="none">Nenhum</string>
+  <string name="port">Porta</string>
+  <string name="previous">Anterior</string>
+  <string name="process">Processo</string>
+  <string name="service_list">Lista de Serviço</string>
+  <string name="stage_view">Visualização de Palco</string>
+  <string name="text_size">Selecionar tamanho do monitor de exibição</string>
+  <string name="text_size_summary">Alterar o tamanho do texto de culto</string>
+  <string name="title_activity_settings">Configurações</string>
+  <string name="url_hint">Hostname ou IP</string>
+  <string name="unable">Não é possível processar o pedido - verifique as configurações de rede</string>
+</resources>

=== added directory 'app/src/main/res/values-ro'
=== added file 'app/src/main/res/values-ro/strings.xml'
--- app/src/main/res/values-ro/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-ro/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP este un program gratuit de prezentare pentru biserică</string>
+  <string name="about_display_2">Pentru a afla mai multe vizitați pagina web OpenLP</string>
+  <string name="about_display_4">Drepturi de autor</string>
+  <string name="about_display_5">Drepturi de autor pentru bucăți</string>
+  <string name="about_display_6">Licența</string>
+  <string name="about_display_7">Acest program este gratuit; puteți să îl redistribuiți și/sau să îl modificați în termenii GNU General Public License cum au fost publicați de Free Software Foundation; versiunea 2 a Liceței</string>
+  <string name="about_display_8">Acest program este distribuit în speranța că va fi folositor, dar FĂRĂ NICI O GARANȚIE; nici măcar a garanției implicite de COMERCIALIZARE sau POTRIVIRE PENTRU UN ANUMIT SCOP</string>
+  <string name="action_settings">Setări</string>
+  <string name="action_about">Despre</string>
+  <string name="action_alert">Anunț</string>
+  <string name="action_back">Înapoi</string>
+  <string name="action_blank">Schimbă Ecranul</string>
+  <string name="action_preferences">Preferințe</string>
+  <string name="action_refresh">Reîncărcare</string>
+  <string name="action_search">Căutare</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Anulare</string>
+  <string name="connection_configuration">Configurează Rețeaua</string>
+  <string name="connection_password">Parola</string>
+  <string name="connection_profile">Detalii Server</string>
+  <string name="connection_timeout">Conexiunea a expirat</string>
+  <string name="connection_timeout_summary">Selectați o valoare (milisecunde)</string>
+  <string name="connection_userid">Nume utilizator</string>
+  <string name="custom_timeout">Stabiliți timp personalizat de expirare</string>
+  <string name="display_blank_summary">Selectați ecranul necesar</string>
+  <string name="display_desktop">Afișați fundalul spațiului de lucru</string>
+  <string name="display_list_autoscroll">Permite elementului selectat să se deplaseze în mijlocul listei</string>
+  <string name="display_reset">Afișați ecranul \"În direct\"</string>
+  <string name="display_settings">Setare de Afișare</string>
+  <string name="display_screen">Afișați numai negru</string>
+  <string name="display_theme">Afișați numai tema</string>
+  <string name="enable_custom_timeouts">Activează timp de expirare personalizat</string>
+  <string name="enter_alert_text">Introduceți textul Anunțului</string>
+  <string name="enable_autoscroll">Permite ecranelor să se auto-centreze</string>
+  <string name="home">Acasă</string>
+  <string name="httpreturn_unauthorised">Acces neautorizat, vă rog introduceți numele de utilizator și parola corecte.</string>
+  <string name="live_list">Lista În direct</string>
+  <string name="live_view">Vizualizare În direct</string>
+  <string name="navigation_drawer_open">Deschide bara de navigare</string>
+  <string name="navigation_drawer_close">Închide bara de navigare</string>
+  <string name="next">Următor</string>
+  <string name="none">nimic</string>
+  <string name="port">Port</string>
+  <string name="previous">Anterior</string>
+  <string name="process">Proces</string>
+  <string name="service_list">Lista de Serviciu</string>
+  <string name="stage_view">Vizualizare pentru Scenă</string>
+  <string name="text_size">Selectați mărimea textului afișat</string>
+  <string name="text_size_summary">Schimbați mărimea textului Serviciului</string>
+  <string name="title_activity_settings">Setări</string>
+  <string name="url_hint">Hostname sau IP</string>
+  <string name="unable">Nu se poate procesa cererea - verificați setările de rețea</string>
+</resources>

=== added directory 'app/src/main/res/values-ru'
=== added file 'app/src/main/res/values-ru/strings.xml'
--- app/src/main/res/values-ru/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-ru/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP является бесплатным церковным программным обеспечением для презентаций</string>
+  <string name="about_display_2">Чтобы узнать больше, посетите веб-сайт OpenLP</string>
+  <string name="about_display_4">Авторские права</string>
+  <string name="about_display_5">Portions copyright</string>
+  <string name="about_display_6">Лицензия</string>
+  <string name="about_display_7">Эта программа является свободным программным обеспечением; Вы можете распространять и / или изменять его в соответствии с условиями GNU General Public License, опубликованной Фондом свободного программного обеспечения, версия 2 Лицензии</string>
+  <string name="about_display_8">Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ</string>
+  <string name="action_settings">Параметры</string>
+  <string name="action_about">О програме</string>
+  <string name="action_alert">Оповещение</string>
+  <string name="action_back">Черный</string>
+  <string name="action_blank">Переключите экран</string>
+  <string name="action_preferences">Настройки</string>
+  <string name="action_refresh">Обновить</string>
+  <string name="action_search">Поиск</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Отмена</string>
+  <string name="connection_configuration">Настроить сеть</string>
+  <string name="connection_password">Пароль</string>
+  <string name="connection_profile">Параметры сервера</string>
+  <string name="connection_timeout">Время ожидания соединения</string>
+  <string name="connection_timeout_summary">Выберите значение (в миллисекундах)</string>
+  <string name="custom_timeout">Установить пользовательский тайм-аут</string>
+  <string name="enable_custom_timeouts">Включить пользовательские тайм-ауты</string>
+  <string name="enter_alert_text">Введите текст оповещения</string>
+  <string name="home">Домой</string>
+  <string name="live_view">Вид прямого эфира</string>
+  <string name="next">Следующий</string>
+  <string name="none">Ничего</string>
+  <string name="port">Порт</string>
+  <string name="previous">Предыдущий</string>
+  <string name="process">Выполнение</string>
+  <string name="service_list">Список служения</string>
+  <string name="stage_view">Вид сцены</string>
+  <string name="text_size">Выберите размер текста</string>
+  <string name="text_size_summary">Изменить размер текста Служения</string>
+  <string name="title_activity_settings">Параметры</string>
+  <string name="url_hint">Имя хоста или IP</string>
+  <string name="unable">Невозможно выполнить запрос - проверьте настройки сети</string>
+</resources>

=== added directory 'app/src/main/res/values-sk'
=== added file 'app/src/main/res/values-sk/strings.xml'
--- app/src/main/res/values-sk/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-sk/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP je voľne dostupná kresťanská prezentačná aplikácia.</string>
+  <string name="about_display_2">Pre viac informácií navštívte OpenLP web</string>
+  <string name="about_display_4">Autorské práva</string>
+  <string name="about_display_5">Čiastočné autorské práva</string>
+  <string name="about_display_6">Licencia</string>
+  <string name="about_display_7">Tento program je slobodný software; môžete ho šířiť a modifikovať podľa ustanovení GNU General Public License, vydávanej Free Software Foundation; a to podľa verze 2 tejto licencie</string>
+  <string name="about_display_8">Tento program je šírený v nádeji, že bude užitočný, avšak BEZ AKÉJKOĽVEK ZÁRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE URČITÝ ÚČEL</string>
+  <string name="action_settings">Nastavenia</string>
+  <string name="action_about">O aplikácii</string>
+  <string name="action_alert">Upozornenie</string>
+  <string name="action_back">Naspäť</string>
+  <string name="action_blank">Zmeniť zobrazenie</string>
+  <string name="action_preferences">Nastavenia</string>
+  <string name="action_refresh">Obnoviť</string>
+  <string name="action_search">Hľadať</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Zrušiť</string>
+  <string name="connection_configuration">Nastavenie sieťe</string>
+  <string name="connection_password">Heslo</string>
+  <string name="connection_profile">Podrobnosti servera</string>
+  <string name="connection_timeout">Časový limit spojenia</string>
+  <string name="connection_timeout_summary">Vybrať hodnotu (milisekundy)</string>
+  <string name="connection_userid">Používateľské meno</string>
+  <string name="custom_timeout">Nastaviť užívateľský časový limiť</string>
+  <string name="display_blank_summary">Vybrať požadované zobrazenie</string>
+  <string name="display_desktop">Zobraziť pozadie plochy</string>
+  <string name="display_list_autoscroll">Povoliť vybratej položke rolovať na stred zoznamu</string>
+  <string name="display_reset">Zobraziť naživo</string>
+  <string name="display_settings">Nastavenie zobrazenia</string>
+  <string name="display_screen">Zobraziť len čiernu</string>
+  <string name="display_theme">Zobraziť len motív</string>
+  <string name="enable_custom_timeouts">Zapnúť užívateľský časový limit</string>
+  <string name="enter_alert_text">Zadať text upozornenia</string>
+  <string name="enable_autoscroll">Povoliť automatické centrovanie obrazovky</string>
+  <string name="home">Domov</string>
+  <string name="httpreturn_unauthorised">Nepovolený prístup, prosím zadajte správne používateľské meno a heslo</string>
+  <string name="live_list">Zoznam naživo</string>
+  <string name="live_view">Zobrazenie naživo</string>
+  <string name="navigation_drawer_open">Otvoriť navigačný panel</string>
+  <string name="navigation_drawer_close">Zatvoriť navigačný panel</string>
+  <string name="next">Nasledujúci</string>
+  <string name="none">Žiadny</string>
+  <string name="port">Port</string>
+  <string name="previous">Predchádzajúci</string>
+  <string name="process">Spracovať</string>
+  <string name="service_list">Správca Služby</string>
+  <string name="stage_view">Pódiové zobrazenie</string>
+  <string name="text_size">Vybrať veľkosť zobrazeného textu</string>
+  <string name="text_size_summary">Zmeniť veľkosť textu služby</string>
+  <string name="title_activity_settings">Nastavenia</string>
+  <string name="url_hint">Názov počítača alebo IP</string>
+  <string name="unable">Nie je možné vykonať požiadavku - skontrolujte nastavenie siete</string>
+</resources>

=== added directory 'app/src/main/res/values-sl'
=== added file 'app/src/main/res/values-sl/strings.xml'
--- app/src/main/res/values-sl/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-sl/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_6">Licenca</string>
+  <string name="action_settings">Nastavitve</string>
+  <string name="action_alert">Opozorilo</string>
+  <string name="action_refresh">Osveži</string>
+  <string name="action_search">Išči</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Prekliči</string>
+  <string name="port">Port</string>
+  <string name="title_activity_settings">Nastavitve</string>
+  <string name="url_hint">Hostname ali IP</string>
+</resources>

=== added directory 'app/src/main/res/values-sq'
=== added file 'app/src/main/res/values-sq/strings.xml'
--- app/src/main/res/values-sq/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-sq/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources/>

=== added directory 'app/src/main/res/values-sv'
=== added file 'app/src/main/res/values-sv/strings.xml'
--- app/src/main/res/values-sv/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-sv/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP är fri mjukvara för kyrkpresentation</string>
+  <string name="about_display_2">För mer information, besök OpenLP:s webbplats</string>
+  <string name="about_display_4">Copyright</string>
+  <string name="about_display_5">Del-copyright</string>
+  <string name="about_display_6">Licens</string>
+  <string name="about_display_7">Det här programmet är fri mjukvara; du får sprida den vidare och/eller ändra i den under villkoren i GNU General Public License så som publicerade av Free Software Foundation; version 2 av licensen.</string>
+  <string name="about_display_8">Det här programmet ges ut i hopp om att det kan vara användbart, men UTAN NÅGON GARANTI; inte ens någon underförstådd garanti vid köp eller lämplighet för ett särskilt ändamål.</string>
+  <string name="action_settings">Inställningar</string>
+  <string name="action_about">Om</string>
+  <string name="action_alert">Meddelande</string>
+  <string name="action_back">Tillbaka</string>
+  <string name="action_blank">Växla visning</string>
+  <string name="action_preferences">Alternativ</string>
+  <string name="action_refresh">Uppdatera</string>
+  <string name="action_search">Sök</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Avbryt</string>
+  <string name="connection_configuration">Konfigurera nätverk</string>
+  <string name="connection_password">Lösenord</string>
+  <string name="connection_profile">Serverinställningar</string>
+  <string name="connection_timeout">Anslutningstimeout</string>
+  <string name="connection_timeout_summary">Välj ett värde (millisekunder)</string>
+  <string name="connection_userid">Användarnamn</string>
+  <string name="custom_timeout">Ställ in egen timeout</string>
+  <string name="display_blank_summary">Välj bildläge</string>
+  <string name="display_desktop">Visa skrivbordsbakgrund</string>
+  <string name="display_list_autoscroll">Tillåt den valda posten att automatiskt scrolla till mitten på listan</string>
+  <string name="display_reset">Visa live-bild</string>
+  <string name="display_settings">Bildinställningar</string>
+  <string name="display_screen">Visa endast svart skärm</string>
+  <string name="display_theme">Visa endast tema</string>
+  <string name="enable_custom_timeouts">Aktivera egna timeouter</string>
+  <string name="enter_alert_text">Ange meddelandetext</string>
+  <string name="enable_autoscroll">Tillåt skärmar att centrera automatiskt</string>
+  <string name="home">Hem</string>
+  <string name="httpreturn_unauthorised">Anslutning nekad, kontrollera användarnamn och lösenord</string>
+  <string name="live_list">Live-lista</string>
+  <string name="live_view">Live-bild</string>
+  <string name="navigation_drawer_open">Öppna navigeringsmeny</string>
+  <string name="navigation_drawer_close">Stäng navigeringsmeny</string>
+  <string name="next">Nästa</string>
+  <string name="none">Inga</string>
+  <string name="port">Port</string>
+  <string name="previous">Föregående</string>
+  <string name="process">Visa</string>
+  <string name="service_list">Körschema</string>
+  <string name="stage_view">Scenbild</string>
+  <string name="text_size">Välj bildens textstorlek</string>
+  <string name="text_size_summary">Ändra körschemats textstorlek</string>
+  <string name="title_activity_settings">Inställningar</string>
+  <string name="url_hint">Värdnamn eller IP-adress</string>
+  <string name="unable">Kunde inte hantera förfrågan - kontrollera nätverksinställningarna</string>
+</resources>

=== added directory 'app/src/main/res/values-sw600dp'
=== added file 'app/src/main/res/values-sw600dp/refs.xml'
--- app/src/main/res/values-sw600dp/refs.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-sw600dp/refs.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,10 @@
+<resources>
+
+    <!--
+    Layout alias to replace the single-pane version of the layout with a
+    two-pane version on Large screens.
+
+    For more on layout aliases, see:
+    http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
+    -->
+</resources>
\ No newline at end of file

=== added directory 'app/src/main/res/values-tlh'
=== added file 'app/src/main/res/values-tlh/strings.xml'
--- app/src/main/res/values-tlh/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-tlh/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources/>

=== added directory 'app/src/main/res/values-tr'
=== added file 'app/src/main/res/values-tr/strings.xml'
--- app/src/main/res/values-tr/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-tr/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="action_alert">Uyarı</string>
+  <string name="app_name">OpenLP</string>
+</resources>

=== added directory 'app/src/main/res/values-uk'
=== added file 'app/src/main/res/values-uk/strings.xml'
--- app/src/main/res/values-uk/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-uk/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP це безкоштовна програма для презентацій в церкві</string>
+  <string name="about_display_2">Щоб дізнатися більше, відвідайте веб-сайт OpenLP</string>
+  <string name="about_display_4">Авторське право:</string>
+  <string name="about_display_5">Часткове авторське право</string>
+  <string name="about_display_6">Ліцензія</string>
+  <string name="about_display_7">Ця програма є вільним програмним забезпеченням; ви можете розповсюджувати та/або змінювати його відповідно до умов GNU General Public License, виданої Фондом вільного програмного забезпечення, версія 2 Ліцензії</string>
+  <string name="about_display_8">Ця програма поширюється в надії, що вона буде корисною, але БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ; навіть без гарантій КОМЕРЦІЙНОЇ ЦІННОСТІ чи ПРИДАТНОСТІ ДЛЯ КОНКРЕТНИХ ЦІЛЕЙ</string>
+  <string name="action_settings">Налаштування</string>
+  <string name="action_about">Про</string>
+  <string name="action_alert">Сповіщення</string>
+  <string name="action_back">Назад</string>
+  <string name="action_blank">Переключити Дисплей</string>
+  <string name="action_preferences">Уподобання</string>
+  <string name="action_refresh">Оновити</string>
+  <string name="action_search">Пошук</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">Скасувати</string>
+  <string name="connection_configuration">Налаштування Мережі</string>
+  <string name="connection_password">Пароль</string>
+  <string name="connection_profile">Деталі Сервера</string>
+  <string name="connection_timeout">Час очікування з\'єднання</string>
+  <string name="connection_timeout_summary">Виберіть значення (в мілісекундах)</string>
+  <string name="connection_userid">Ім\'я користувача:</string>
+  <string name="custom_timeout">Втановити інший Час Очікування</string>
+  <string name="display_blank_summary">Виберіть потрібний дисплей</string>
+  <string name="display_desktop">Обрати фон для робочого столу дисплея</string>
+  <string name="display_list_autoscroll">Дозволити вибраний елемент, щоб перейти до центру списку</string>
+  <string name="display_reset">Показати основний дисплей</string>
+  <string name="display_settings">Налаштування Дисплею</string>
+  <string name="display_screen">Тільки Чорний дисплей</string>
+  <string name="display_theme">Тільки Тема дисплею</string>
+  <string name="enable_custom_timeouts">Обрати інший Час Очікування</string>
+  <string name="enter_alert_text">Введіть Текст Сповіщення</string>
+  <string name="enable_autoscroll">Дозволити дисплей в центрі</string>
+  <string name="home">Дім</string>
+  <string name="httpreturn_unauthorised">Несанкціонований доступ будь ласка, введіть правильне ім\'я користувача та пароль</string>
+  <string name="live_list">Список Перегляду</string>
+  <string name="live_view">Режим Живого Перегляду</string>
+  <string name="navigation_drawer_open">Відкрити вікно навігації</string>
+  <string name="navigation_drawer_close">Закрити вікно навігації</string>
+  <string name="next">Наступний</string>
+  <string name="none">Ні</string>
+  <string name="port">Порт</string>
+  <string name="previous">Попередній</string>
+  <string name="process">Процес</string>
+  <string name="service_list">Список Служб</string>
+  <string name="stage_view">Поставити Прегляд</string>
+  <string name="text_size">Виберіть розмір тексту для дисплею</string>
+  <string name="text_size_summary">Змінити розмір шрифту для служби</string>
+  <string name="title_activity_settings">Налаштування</string>
+  <string name="url_hint">Ім\'я хосту або IP</string>
+  <string name="unable">Не вдається обробити запит - перевірте налаштування мережі</string>
+</resources>

=== added directory 'app/src/main/res/values-vi'
=== added file 'app/src/main/res/values-vi/strings.xml'
--- app/src/main/res/values-vi/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-vi/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources/>

=== added directory 'app/src/main/res/values-w820dp'
=== added file 'app/src/main/res/values-w820dp/dimens.xml'
--- app/src/main/res/values-w820dp/dimens.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-w820dp/dimens.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,6 @@
+<resources>
+    <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>

=== added directory 'app/src/main/res/values-zh-rTW'
=== added file 'app/src/main/res/values-zh-rTW/strings.xml'
--- app/src/main/res/values-zh-rTW/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values-zh-rTW/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <string name="about_display_1">OpenLP是免費的教會簡報軟體</string>
+  <string name="about_display_2">要了解詳情,請參閱 OpenLP 網站</string>
+  <string name="about_display_4">版權</string>
+  <string name="about_display_5">程序版權</string>
+  <string name="about_display_6">許可協議</string>
+  <string name="about_display_7">這個程序是自由軟體,你可以遵照自由軟體基金會出版的 GNU通用公共許可證條款第2版來修改和重新發佈這個軟體</string>
+  <string name="about_display_8">這個程式是在期望它是可行的情況下發布, 但是沒有任何擔保,甚至沒有暗示的適用性或針對於特定用途的保障。</string>
+  <string name="action_settings">設定</string>
+  <string name="action_about">關於</string>
+  <string name="action_alert">警告</string>
+  <string name="action_back">退後</string>
+  <string name="action_blank">切換顯示</string>
+  <string name="action_preferences">偏好設定</string>
+  <string name="action_refresh">重新整理</string>
+  <string name="action_search">搜尋</string>
+  <string name="app_name">OpenLP</string>
+  <string name="cancel">取消</string>
+  <string name="connection_configuration">設定網路</string>
+  <string name="connection_password">密碼</string>
+  <string name="connection_profile">聚會細節</string>
+  <string name="connection_timeout">連接逾時</string>
+  <string name="connection_timeout_summary">選擇數值(毫秒)</string>
+  <string name="connection_userid">帳號</string>
+  <string name="custom_timeout">自訂逾時</string>
+  <string name="display_blank_summary">選擇需要的顯示畫面</string>
+  <string name="display_desktop">顯示桌面背景</string>
+  <string name="display_list_autoscroll">允許所選擇的項目捲動到清單的中間</string>
+  <string name="display_reset">顯示現場Live</string>
+  <string name="display_settings">顯示設定</string>
+  <string name="display_screen">僅顯示黑幕</string>
+  <string name="display_theme">僅顯示主題</string>
+  <string name="enable_custom_timeouts">開啟自訂逾時</string>
+  <string name="enter_alert_text">輸入警報文字</string>
+  <string name="enable_autoscroll">允許自動置中顯示</string>
+  <string name="home">首頁</string>
+  <string name="httpreturn_unauthorised">未經授權的連結,請輸入有效的帳號和密碼</string>
+  <string name="live_list">現場Live清單</string>
+  <string name="live_view">Live 顯示</string>
+  <string name="navigation_drawer_open">打開隱藏式側選單</string>
+  <string name="navigation_drawer_close">關閉隱藏式側選單</string>
+  <string name="next">下一個</string>
+  <string name="none">無</string>
+  <string name="port">連接埠</string>
+  <string name="previous">前一個</string>
+  <string name="process">程序</string>
+  <string name="service_list">聚會清單</string>
+  <string name="stage_view">舞台查看</string>
+  <string name="text_size">選擇顯示字體尺存</string>
+  <string name="text_size_summary">更改聚會文字大小</string>
+  <string name="title_activity_settings">設定</string>
+  <string name="url_hint">主機名或IP</string>
+  <string name="unable">無法處理請求 - 請檢查網路設定</string>
+</resources>

=== added file 'app/src/main/res/values/backgroundTimeouts.xml'
--- app/src/main/res/values/backgroundTimeouts.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/backgroundTimeouts.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,22 @@
+<resources>
+	<string-array name="backgroundTimeEntries">
+		<item>@string/none</item>
+		<item>1</item>
+		<item>2</item>
+		<item>5</item>
+		<item>10</item>
+		<item>15</item>
+		<item>20</item>
+		<item>30</item>
+	</string-array>
+	<string-array name="backgroundTimeValues">
+		<item>0</item>
+		<item>1000</item>
+		<item>2000</item>
+		<item>5000</item>
+		<item>10000</item>
+		<item>15000</item>
+		<item>20000</item>
+		<item>30000</item>
+	</string-array>
+</resources>

=== added file 'app/src/main/res/values/defaultValues.xml'
--- app/src/main/res/values/defaultValues.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/defaultValues.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,12 @@
+<resources>
+    <!-- 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>
+    <integer name="textSizeDefaultValue">14</integer>
+
+</resources>

=== added file 'app/src/main/res/values/dimens.xml'
--- app/src/main/res/values/dimens.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/dimens.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,9 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+    <!-- Per the design guidelines, navigation drawers should be between 240dp and 320dp:
+         https://developer.android.com/design/patterns/navigation-drawer.html -->
+    <dimen name="navigation_drawer_width">240dp</dimen>
+</resources>

=== added file 'app/src/main/res/values/httpClientTimeoutValues.xml'
--- app/src/main/res/values/httpClientTimeoutValues.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/httpClientTimeoutValues.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,16 @@
+<resources>
+    <string-array name="socketValueEntries">
+		<item>3000</item>
+		<item>4000</item>
+		<item>5000</item>
+		<item>8000</item>
+		<item>10000</item>
+	</string-array>
+    <string-array name="socketValues">
+        <item>3000</item>
+        <item>4000</item>
+        <item>5000</item>
+        <item>8000</item>
+        <item>10000</item>
+    </string-array>
+</resources>
\ No newline at end of file

=== added file 'app/src/main/res/values/keyStrings.xml'
--- app/src/main/res/values/keyStrings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/keyStrings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,11 @@
+<resources>
+    <string name="key_auto_scroll">key_auto_scroll</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>
+</resources>

=== added file 'app/src/main/res/values/refs.xml'
--- app/src/main/res/values/refs.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/refs.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <!--
+    Layout alias to replace the single-pane version of the layout with a
+    two-pane version on Large screens.
+
+    For more on layout aliases, see:
+    http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
+    -->
+    <item name="fragment_servicelist" type="layout">@layout/fragment_servicelist_list</item>
+    <item name="fragment_livelist" type="layout">@layout/fragment_livelist_list</item>
+
+    <!--
+    Layout alias to replace the single-pane version of the layout with a
+    two-pane version on Large screens.
+
+    For more on layout aliases, see:
+    http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
+    -->
+    <item name="fragment_item" type="layout">@layout/fragment_item_list</item>
+
+</resources>
\ No newline at end of file

=== added file 'app/src/main/res/values/strings.xml'
--- app/src/main/res/values/strings.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/strings.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="about_display_1">OpenLP is free church presentation software</string>
+    <string name="about_display_2">To find out more visit the OpenLP website</string>
+    <string name="about_display_4">Copyright</string>
+    <string name="about_display_5">Portions copyright</string>
+    <string name="about_display_6">License</string>
+    <string name="about_display_7">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</string>
+    <string name="about_display_8">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</string>
+    <string name="action_settings">Settings</string>
+    <string name="action_about">About</string>
+    <string name="action_alert">Alert</string>
+    <string name="action_back">Back</string>
+    <string name="action_blank">Toggle Display</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_configuration">Configure Network</string>
+    <string name="connection_password">Password</string>
+    <string name="connection_profile">Server Details</string>
+    <string name="connection_timeout">Connection Timeout</string>
+    <string name="connection_timeout_summary">Select a value (milliseconds)</string>
+    <string name="connection_userid">Username</string>
+    <string name="custom_timeout">Set Custom Timeout</string>
+    <string name="display_blank_summary">Select the required display</string>
+    <string name="display_desktop">Display Desktop background</string>
+    <string name="display_list_autoscroll">Allow the selected item to scroll to the centre of the list</string>
+    <string name="display_reset">Live display</string>
+    <string name="display_settings">Display Setting</string>
+    <string name="display_screen">Display Black only</string>
+    <string name="display_theme">Display Theme only</string>
+    <string name="enable_custom_timeouts">Enable Custom Timeouts</string>
+    <string name="enter_alert_text">Enter Alert Text</string>
+    <string name="enable_autoscroll">Allow displays to auto center</string>
+    <string name="home">Home</string>
+    <string name="httpreturn_unauthorised">Unauthorised Access, please enter valid username and password</string>
+    <string name="live_list">Live List</string>
+    <string name="live_view">Live View</string>
+    <string name="navigation_drawer_open">Open navigation drawer</string>
+    <string name="navigation_drawer_close">Close navigation drawer</string>
+    <string name="next">Next</string>
+    <string name="none">None</string>
+    <string name="port">Port</string>
+    <string name="previous">Previous</string>
+    <string name="process">Process</string>
+    <string name="search_text">Search Text</string>
+    <string name="select_plugin">Select Plugin</string>
+    <string name="service_list">Service List</string>
+    <string name="searchResults">Search Results</string>
+    <string name="searchSendLive">Send Live</string>
+    <string name="searchAddToService">Add to Service</string>
+    <string name="showingResults">Showing Results for \'%s\'</string>
+    <string name="stage_view">Stage View</string>
+    <string name="text_size">Select display text size</string>
+    <string name="text_size_summary">Change the Service text size</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>

=== added file 'app/src/main/res/values/styles.xml'
--- app/src/main/res/values/styles.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/styles.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,8 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+    </style>
+
+</resources>

=== added file 'app/src/main/res/values/textSize.xml'
--- app/src/main/res/values/textSize.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/values/textSize.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,22 @@
+<resources>
+    <string-array name="textSizeValueEntries">
+		<item>6</item>
+		<item>8</item>
+		<item>10</item>
+		<item>12</item>
+		<item>14</item>
+		<item>16</item>
+		<item>18</item>
+		<item>20</item>		
+	</string-array>
+    <string-array name="textSizeValues">
+		<item>6</item>
+		<item>8</item>
+		<item>10</item>
+		<item>12</item>
+		<item>14</item>
+		<item>16</item>
+		<item>18</item>
+		<item>20</item>		
+	</string-array>	
+</resources>
\ No newline at end of file

=== added directory 'app/src/main/res/xml'
=== added file 'app/src/main/res/xml/pref_general.xml'
--- app/src/main/res/xml/pref_general.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/xml/pref_general.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,17 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android";>
+
+    <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" />
+
+    <CheckBoxPreference
+        android:key="key_auto_scroll"
+        android:defaultValue="true"
+        android:summary="@string/display_list_autoscroll"
+        android:title="@string/enable_autoscroll"/>
+
+</PreferenceScreen>

=== added file 'app/src/main/res/xml/pref_headers.xml'
--- app/src/main/res/xml/pref_headers.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/xml/pref_headers.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,14 @@
+<preference-headers xmlns:android="http://schemas.android.com/apk/res/android";>
+
+    <!-- These settings headers are only used on tablets. -->
+
+    <header
+        android:fragment="org.openlp.android2.activities.SettingsActivity$GeneralPreferenceFragment"
+        android:title="@string/display_settings" />
+
+    <header
+        android:fragment="org.openlp.android2.activities.SettingsActivity$NotificationPreferenceFragment"
+        android:title="@string/connection_configuration" />
+
+
+</preference-headers>

=== added file 'app/src/main/res/xml/pref_notification.xml'
--- app/src/main/res/xml/pref_notification.xml	1970-01-01 00:00:00 +0000
+++ app/src/main/res/xml/pref_notification.xml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,53 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android";>
+
+    <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>
+
+    <PreferenceCategory
+        android:title="@string/connection_profile">
+
+        <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" />
+
+        <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>

=== added file 'build.gradle'
--- build.gradle	1970-01-01 00:00:00 +0000
+++ build.gradle	2018-02-07 11:41:24 +0000
@@ -0,0 +1,19 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    repositories {
+        jcenter()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.0.0'
+
+        // NOTE: Do not place your application dependencies here; they belong
+        // in the individual module build.gradle files
+    }
+}
+
+allprojects {
+    repositories {
+        jcenter()
+    }
+}

=== added file 'fixssl.iml'
--- fixssl.iml	1970-01-01 00:00:00 +0000
+++ fixssl.iml	2018-02-07 11:41:24 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="fixssl" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="java-gradle" name="Java-Gradle">
+      <configuration>
+        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
+        <option name="BUILDABLE" value="false" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.gradle" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file

=== added directory 'gradle'
=== added file 'gradle.properties'
--- gradle.properties	1970-01-01 00:00:00 +0000
+++ gradle.properties	2018-02-07 11:41:24 +0000
@@ -0,0 +1,18 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
\ No newline at end of file

=== added directory 'gradle/wrapper'
=== added file 'gradle/wrapper/gradle-wrapper.jar'
Binary files gradle/wrapper/gradle-wrapper.jar	1970-01-01 00:00:00 +0000 and gradle/wrapper/gradle-wrapper.jar	2018-02-07 11:41:24 +0000 differ
=== added file 'gradle/wrapper/gradle-wrapper.properties'
--- gradle/wrapper/gradle-wrapper.properties	1970-01-01 00:00:00 +0000
+++ gradle/wrapper/gradle-wrapper.properties	2018-02-07 11:41:24 +0000
@@ -0,0 +1,6 @@
+#Tue Feb 06 15:21:06 CET 2018
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

=== added file 'gradlew'
--- gradlew	1970-01-01 00:00:00 +0000
+++ gradlew	2018-02-07 11:41:24 +0000
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

=== added file 'gradlew.bat'
--- gradlew.bat	1970-01-01 00:00:00 +0000
+++ gradlew.bat	2018-02-07 11:41:24 +0000
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega

=== added file 'settings.gradle'
--- settings.gradle	1970-01-01 00:00:00 +0000
+++ settings.gradle	2018-02-07 11:41:24 +0000
@@ -0,0 +1,1 @@
+include ':app'