1
0
mirror of https://gitlab.com/openlp/android.git synced 2024-12-22 11:52:49 +00:00

add About / Home / Stage Web and Live Web

This commit is contained in:
Tim Bentley 2014-11-19 20:35:43 +00:00
parent a8689e84ed
commit f2d2656cc6
12 changed files with 383 additions and 70 deletions

View File

@ -35,11 +35,10 @@ import android.view.ViewGroup;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
import org.openlp.android2.activities.ConnectionActivity; import org.openlp.android2.activities.ConnectionActivity;
import org.openlp.android2.activities.SettingsActivity; import org.openlp.android2.activities.SettingsActivity;
import org.openlp.android2.common.NavigationOptions;
import org.openlp.android2.dialogs.AlertDisplayDialog; import org.openlp.android2.dialogs.AlertDisplayDialog;
import org.openlp.android2.dialogs.BlankDisplayDialog; import org.openlp.android2.dialogs.BlankDisplayDialog;
import org.openlp.android2.fragments.LiveListFragment; import org.openlp.android2.fragments.*;
import org.openlp.android2.fragments.NavigationDrawerFragment;
import org.openlp.android2.fragments.ServiceListFragment;
public class OpenLP extends Activity public class OpenLP extends Activity
@ -75,27 +74,33 @@ public class OpenLP extends Activity
// update the main content by replacing fragments // update the main content by replacing fragments
FragmentManager fragmentManager = getFragmentManager(); FragmentManager fragmentManager = getFragmentManager();
switch (position) { switch (position) {
case 0: case NavigationOptions.Home:
fragmentManager.beginTransaction()
.replace(R.id.container, HomeFragment.newInstance())
.commit();
mTitle = getString(R.string.service_list);
break;
case NavigationOptions.ServiceList:
fragmentManager.beginTransaction() fragmentManager.beginTransaction()
.replace(R.id.container, ServiceListFragment.newInstance()) .replace(R.id.container, ServiceListFragment.newInstance())
.commit(); .commit();
mTitle = getString(R.string.service_list); mTitle = getString(R.string.service_list);
break; break;
case 1: case NavigationOptions.LiveList:
fragmentManager.beginTransaction() fragmentManager.beginTransaction()
.replace(R.id.container, LiveListFragment.newInstance()) .replace(R.id.container, LiveListFragment.newInstance())
.commit(); .commit();
mTitle = getString(R.string.live_list); mTitle = getString(R.string.live_list);
break; break;
case 2: case NavigationOptions.StageView:
fragmentManager.beginTransaction() fragmentManager.beginTransaction()
.replace(R.id.container, PlaceholderFragment.newInstance(position + 1)) .replace(R.id.container, StageWebFragment.newInstance())
.commit(); .commit();
mTitle = getString(R.string.stage_view); mTitle = getString(R.string.stage_view);
break; break;
case 3: case NavigationOptions.LiveView:
fragmentManager.beginTransaction() fragmentManager.beginTransaction()
.replace(R.id.container, PlaceholderFragment.newInstance(position + 1)) .replace(R.id.container, LiveWebFragment.newInstance())
.commit(); .commit();
mTitle = getString(R.string.live_view); mTitle = getString(R.string.live_view);
break; break;
@ -104,6 +109,9 @@ public class OpenLP extends Activity
public void onSectionAttached(int number) { public void onSectionAttached(int number) {
switch (number) { switch (number) {
case 0:
mTitle = getString(R.string.service_list);
break;
case 1: case 1:
mTitle = getString(R.string.service_list); mTitle = getString(R.string.service_list);
break; break;
@ -145,26 +153,30 @@ public class OpenLP extends Activity
// Handle action bar item clicks here. The action bar will // Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long // automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml. // as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); Intent intent;
if (id == R.id.action_preferences) { switch (item.getItemId()) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent); case R.id.action_preferences:
return true; intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
case R.id.action_connections:
intent = new Intent(this, ConnectionActivity.class);
startActivity(intent);
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, AboutFragment.newInstance())
.commit();
default:
return super.onOptionsItemSelected(item);
} }
if (id == R.id.action_connections) {
Intent intent = new Intent(this, ConnectionActivity.class);
startActivity(intent);
return true;
}
if (id == R.id.action_blank) {
new BlankDisplayDialog().show(getFragmentManager(), "BlankDialog");
return true;
}
if (id == R.id.action_alert) {
new AlertDisplayDialog().show(getFragmentManager(), "AlertDialog");
return true;
}
return super.onOptionsItemSelected(item);
} }
/** /**

View File

@ -70,24 +70,10 @@ public class OpenLPHttpClient {
public String getAbsoluteUrl(AsyncHttpClient client) { public String getAbsoluteUrl(AsyncHttpClient client) {
if (useSSL){ String urlBase = getBaseUrl();
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
MySSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(MySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
client.setSSLSocketFactory(sf);
}
catch (Exception e) {;
}
}
Map<String, ?> preferences = context.getSharedPreferences(context.getString(R.string.keySharedPreferences), Context.MODE_PRIVATE).getAll();
useSSL = getPreference(preferences, context.getString(R.string.key_ssl_use), false);
String host = getPreference(preferences, context.getString(R.string.keyHost),
context.getString(R.string.hostDefaultValue));
String port = getPreference(preferences, context.getString(R.string.keyPort), "4316");
Map<String, ?> preferences = context.getSharedPreferences(context.getString(R.string.keySharedPreferences),
Context.MODE_PRIVATE).getAll();
String userid = getPreference(preferences, context.getString(R.string.key_userid), "openlp"); String userid = getPreference(preferences, context.getString(R.string.key_userid), "openlp");
@ -98,8 +84,6 @@ public class OpenLPHttpClient {
Credentials creds = new UsernamePasswordCredentials(userid, password); Credentials creds = new UsernamePasswordCredentials(userid, password);
String urlBase = String.format("http%s://%s:%s", useSSL ? "s" : "", host, port);
int connectionTimeout = context.getResources().getInteger( int connectionTimeout = context.getResources().getInteger(
R.integer.connectionTimeoutDefaultValue); R.integer.connectionTimeoutDefaultValue);
@ -127,31 +111,16 @@ public class OpenLPHttpClient {
return urlBase; return urlBase;
} }
public String getBaseUrl(){
Map<String, ?> preferences = context.getSharedPreferences(context.getString(R.string.keySharedPreferences), Context.MODE_PRIVATE).getAll();
/* public OpenLPHttpReturn handleExecute() throws IOException { useSSL = getPreference(preferences, context.getString(R.string.key_ssl_use), false);
//HttpResponse response = this.execute(); String host = getPreference(preferences, context.getString(R.string.keyHost),
context.getString(R.string.hostDefaultValue));
String port = getPreference(preferences, context.getString(R.string.keyPort), "4316");
Log.d(LOG_TAG, "Http response code " + String.valueOf(response.getStatusLine().getStatusCode())); return String.format("http%s://%s:%s", useSSL ? "s" : "", host, port);
if (response.getStatusLine().getStatusCode() == 200) {
BufferedReader bufferedReader;
HttpEntity entity = response.getEntity();
if (entity != null) {
bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuilder stringBuilder = new StringBuilder();
String line = bufferedReader.readLine();
while (line != null) {
stringBuilder.append(line);
line = bufferedReader.readLine();
}
bufferedReader.close();
return new OpenLPHttpReturn(0, stringBuilder.toString(), this.context);
}
}
return new OpenLPHttpReturn(response.getStatusLine().getStatusCode(), null, this.context);
}*/
}
} }

View File

@ -0,0 +1,72 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2014 Raoul Snyman *
* Portions copyright (c) 2011-2014 Tim Bentley, Johan Mynhardt *
* --------------------------------------------------------------------------- *
* 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() {
AboutFragment fragment = new AboutFragment();
return fragment;
}
@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, 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;
}
}

View File

@ -0,0 +1,60 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2014 Raoul Snyman *
* Portions copyright (c) 2011-2014 Tim Bentley, Johan Mynhardt *
* --------------------------------------------------------------------------- *
* 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() {
HomeFragment fragment = new HomeFragment();
return fragment;
}
@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);
}
}

View File

@ -0,0 +1,35 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2014 Raoul Snyman *
* Portions copyright (c) 2011-2014 Tim Bentley, Johan Mynhardt *
* --------------------------------------------------------------------------- *
* 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() {
LiveWebFragment fragment = new LiveWebFragment();
return fragment;
}
}

View File

@ -102,6 +102,7 @@ public class NavigationDrawerFragment extends Fragment {
R.layout.fragment_navigation_drawer_list, R.layout.fragment_navigation_drawer_list,
android.R.id.text1, android.R.id.text1,
new String[]{ new String[]{
getString(R.string.home),
getString(R.string.service_list), getString(R.string.service_list),
getString(R.string.live_list), getString(R.string.live_list),
getString(R.string.stage_view), getString(R.string.stage_view),

View File

@ -0,0 +1,36 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2014 Raoul Snyman *
* Portions copyright (c) 2011-2014 Tim Bentley, Johan Mynhardt *
* --------------------------------------------------------------------------- *
* 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() {
StageWebFragment fragment = new StageWebFragment();
return fragment;
}
}

View File

@ -0,0 +1,86 @@
/******************************************************************************
* OpenLP - Open Source Lyrics Projection *
* --------------------------------------------------------------------------- *
* Copyright (c) 2011-2014 Raoul Snyman *
* Portions copyright (c) 2011-2014 Tim Bentley, Johan Mynhardt *
* --------------------------------------------------------------------------- *
* 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.net.http.SslError;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.openlp.android2.R;
import org.openlp.android2.common.OpenLPHttpClient;
public class WebFragment extends Fragment {
protected String curURL;
private OpenLPHttpClient httpClient;
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) {
httpClient = new OpenLPHttpClient(getActivity());
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", httpClient.getBaseUrl(), curURL));
}
return view;
}
@Override
public void onDestroyView() {
if (webview != null) {
webview.destroy();
}
super.onDestroyView();
}
private class webClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
}
}
}

View File

@ -0,0 +1,8 @@
<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" />

View File

@ -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"/>

View File

@ -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>

View File

@ -46,6 +46,7 @@
<string name="display_theme">Blank display to Theme</string> <string name="display_theme">Blank display to Theme</string>
<string name="enable_custom_timeouts">Enable Custom Timeouts</string> <string name="enable_custom_timeouts">Enable Custom Timeouts</string>
<string name="enter_alert_text">Enter Alert Text</string> <string name="enter_alert_text">Enter Alert Text</string>
<string name="home">Home</string>
<string name="httpreturn_unauthorised">Unauthorised Access, please enter valid userid and password</string> <string name="httpreturn_unauthorised">Unauthorised Access, please enter valid userid and password</string>
<string name="live_list">Live List</string> <string name="live_list">Live List</string>
<string name="live_view">LiveView</string> <string name="live_view">LiveView</string>