Kaydet (Commit) e7473c69 authored tarafından Christian Lohmaier's avatar Christian Lohmaier

editing/experimental mode as user-preference (Android Viewer)

also exposes the other preferences (default document filter, default
sorting) in a default settings dialog

Change-Id: I7a4080f70f5727bfb2fabe8d8f57cb5b8337481f
Reviewed-on: https://gerrit.libreoffice.org/15638Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>
üst dbf1e124
...@@ -90,6 +90,11 @@ ...@@ -90,6 +90,11 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".SettingsActivity"
android:label="@string/app_name_settings">
</activity>
<!-- Document Browser Activity --> <!-- Document Browser Activity -->
<activity android:name=".ui.LibreOfficeUIActivity" <activity android:name=".ui.LibreOfficeUIActivity"
android:label="@string/app_name" android:label="@string/app_name"
......
...@@ -3,46 +3,52 @@ ...@@ -3,46 +3,52 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
tools:context="org.libreoffice.MainActivity"> tools:context="org.libreoffice.MainActivity">
<group android:id="@+id/group_edit_actions"
<item android:id="@+id/action_bold" android:visible="false">
android:title="@string/action_bold" <item android:id="@+id/action_bold"
android:icon="@drawable/action_bold" android:title="@string/action_bold"
android:orderInCategory="100" android:icon="@drawable/action_bold"
app:showAsAction="always"/> android:orderInCategory="100"
app:showAsAction="always"/>
<item android:id="@+id/action_italic"
android:title="@string/action_italic" <item android:id="@+id/action_italic"
android:icon="@drawable/action_italic" android:title="@string/action_italic"
android:orderInCategory="100" android:icon="@drawable/action_italic"
app:showAsAction="always"/> android:orderInCategory="100"
app:showAsAction="always"/>
<item android:id="@+id/action_underline"
android:title="@string/action_underline" <item android:id="@+id/action_underline"
android:icon="@drawable/action_underline" android:title="@string/action_underline"
android:orderInCategory="100" android:icon="@drawable/action_underline"
app:showAsAction="always"/> android:orderInCategory="100"
app:showAsAction="always"/>
<item android:id="@+id/action_strikeout"
android:title="@string/action_strikeout" <item android:id="@+id/action_strikeout"
android:icon="@drawable/action_strikeout" android:title="@string/action_strikeout"
android:orderInCategory="100" android:icon="@drawable/action_strikeout"
app:showAsAction="always"/> android:orderInCategory="100"
app:showAsAction="always"/>
<item android:id="@+id/action_keyboard"
android:title="@string/action_keyboard" <item android:id="@+id/action_keyboard"
android:icon="@drawable/ic_format_keyboard_grey600_24dp" android:title="@string/action_keyboard"
android:orderInCategory="100" android:icon="@drawable/ic_format_keyboard_grey600_24dp"
app:showAsAction="always"/> android:orderInCategory="100"
app:showAsAction="always"/>
<item android:id="@+id/action_save"
android:title="@string/action_save" <item android:id="@+id/action_save"
android:orderInCategory="100" /> android:title="@string/action_save"
android:orderInCategory="100" />
</group>
<item android:id="@+id/action_parts" <item android:id="@+id/action_parts"
android:title="@string/action_parts" android:title="@string/action_parts"
android:orderInCategory="100" /> android:orderInCategory="100" />
<item android:id="@+id/action_about" <item android:id="@+id/action_about"
android:title="@string/action_about" android:title="@string/action_about"
android:orderInCategory="100" /> android:orderInCategory="100" />
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100" />
</menu> </menu>
...@@ -13,4 +13,7 @@ ...@@ -13,4 +13,7 @@
<item android:id="@+id/action_about" <item android:id="@+id/action_about"
android:title="@string/action_about" android:title="@string/action_about"
android:orderInCategory="100"/> android:orderInCategory="100"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"/>
</menu> </menu>
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<resources> <resources>
<string name="app_name">LibreOffice Viewer</string> <string name="app_name">LibreOffice Viewer</string>
<string name="app_name_settings">LibreOffice Viewer Settings</string>
<string name="app_about_name"><b>LibreOffice Viewer \'Beta\'</b></string> <string name="app_about_name"><b>LibreOffice Viewer \'Beta\'</b></string>
<string name="app_version">Version: $VERSION\nBuild ID: $BUILDID</string> <string name="app_version">Version: $VERSION\nBuild ID: $BUILDID</string>
...@@ -31,9 +32,14 @@ ...@@ -31,9 +32,14 @@
<!-- Pref keys as resources ; Not currently used --> <!-- Pref keys as resources ; Not currently used -->
<string name="EXPLORER_VIEW_TYPE_KEY">EXPLORER_VIEW_TYPE</string> <string name="EXPLORER_VIEW_TYPE_KEY">EXPLORER_VIEW_TYPE</string>
<string name="CURRENT_DIRECTORY_KEY">CURRENT_DIRECTORY</string> <string name="CURRENT_DIRECTORY_KEY">CURRENT_DIRECTORY</string>
<string name="pref_category_explorer">Explorer View Defaults</string>
<string name="pref_category_general">General</string>
<string name="pref_experimental_editing">Experimental Mode</string>
<string name="pref_experimental_editing_summary">Enable the experimental editing mode. Use at your own risk.</string>
<string name="action_about">About</string> <string name="action_about">About</string>
<string name="action_parts">Parts</string> <string name="action_parts">Parts</string>
<string name="action_settings">Settings</string>
<string name="open">Open</string> <string name="open">Open</string>
<string name="share">Share</string> <string name="share">Share</string>
<string name="share_via">Share via</string> <string name="share_via">Share via</string>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference <PreferenceCategory
android:title="Default File Filter" android:title="@string/pref_category_explorer"
android:summary="Set which files to show by default" android:key="PREF_CATEGORY_EXPLORER">
android:entries="@array/FilterTypeNames" <ListPreference
android:entryValues="@array/FilterTypeStringValues" android:title="Default File Filter"
android:key="FILTER_MODE"/> android:summary="Set which files to show by default"
<ListPreference android:entries="@array/FilterTypeNames"
android:summary="Select how to order files; A-Z, by size, etc." android:entryValues="@array/FilterTypeStringValues"
android:key="SORT_MODE" android:key="FILTER_MODE"/>
android:title="File Order" android:entries="@array/SortModeNames" android:entryValues="@array/SortModeStringValues"/> <ListPreference
<ListPreference android:summary="Select how to order files; A-Z, by size, etc."
android:entries="@array/ViewModeNames" android:key="SORT_MODE"
android:entryValues="@array/ViewModeStringValues" android:title="File Order" android:entries="@array/SortModeNames" android:entryValues="@array/SortModeStringValues"/>
android:title="Default File Explorer View" <ListPreference
android:key="EXPLORER_VIEW_TYPE" android:entries="@array/ViewModeNames"
android:summary="View files as a grid or in a list. #not functional, yet."/> android:entryValues="@array/ViewModeStringValues"
android:title="Default File Explorer View"
android:key="EXPLORER_VIEW_TYPE"
</PreferenceScreen> android:summary="View files as a grid or in a list. #not functional, yet."/>
\ No newline at end of file </PreferenceCategory>
<PreferenceCategory
android:title="@string/pref_category_general"
android:key="PREF_CATEGORY_GENERAL">
<CheckBoxPreference
android:title="@string/pref_experimental_editing"
android:key="ENABLE_EXPERIMENTAL"
android:summary="@string/pref_experimental_editing_summary"
android:defaultValue="false" />
</PreferenceCategory>
</PreferenceScreen>
...@@ -74,7 +74,7 @@ public class LOKitShell { ...@@ -74,7 +74,7 @@ public class LOKitShell {
} }
public static boolean isEditingEnabled() { public static boolean isEditingEnabled() {
return true; return LibreOfficeMainActivity.isExperimentalMode();
} }
public static LayerView getLayerView() { public static LayerView getLayerView() {
......
...@@ -4,8 +4,10 @@ import android.app.AlertDialog; ...@@ -4,8 +4,10 @@ import android.app.AlertDialog;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
...@@ -39,12 +41,15 @@ public class LibreOfficeMainActivity extends ActionBarActivity { ...@@ -39,12 +41,15 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
private static final String LOGTAG = "LibreOfficeMainActivity"; private static final String LOGTAG = "LibreOfficeMainActivity";
private static final String DEFAULT_DOC_PATH = "/assets/example.odt"; private static final String DEFAULT_DOC_PATH = "/assets/example.odt";
private static final String ENABLE_EXPERIMENTAL_PREFS_KEY = "ENABLE_EXPERIMENTAL";
public static LibreOfficeMainActivity mAppContext; public static LibreOfficeMainActivity mAppContext;
private static GeckoLayerClient mLayerClient; private static GeckoLayerClient mLayerClient;
private static LOKitThread sLOKitThread; private static LOKitThread sLOKitThread;
private static boolean mEnableEditing;
public Handler mMainHandler; public Handler mMainHandler;
private DrawerLayout mDrawerLayout; private DrawerLayout mDrawerLayout;
...@@ -65,6 +70,10 @@ public class LibreOfficeMainActivity extends ActionBarActivity { ...@@ -65,6 +70,10 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
return mLayerClient; return mLayerClient;
} }
public static boolean isExperimentalMode() {
return mEnableEditing;
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present. // Inflate the menu; this adds items to the action bar if it is present.
...@@ -107,6 +116,9 @@ public class LibreOfficeMainActivity extends ActionBarActivity { ...@@ -107,6 +116,9 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
case R.id.action_parts: case R.id.action_parts:
mDrawerLayout.openDrawer(mDrawerList); mDrawerLayout.openDrawer(mDrawerList);
return true; return true;
case R.id.action_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
...@@ -118,6 +130,7 @@ public class LibreOfficeMainActivity extends ActionBarActivity { ...@@ -118,6 +130,7 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
// Do the same in case the drawer is locked. // Do the same in case the drawer is locked.
boolean isDrawerLocked = mDrawerLayout.getDrawerLockMode(mDrawerList) != DrawerLayout.LOCK_MODE_UNLOCKED; boolean isDrawerLocked = mDrawerLayout.getDrawerLockMode(mDrawerList) != DrawerLayout.LOCK_MODE_UNLOCKED;
menu.findItem(R.id.action_parts).setVisible(!isDrawerOpen && !isDrawerLocked); menu.findItem(R.id.action_parts).setVisible(!isDrawerOpen && !isDrawerLocked);
menu.setGroupVisible(R.id.group_edit_actions, mEnableEditing);
return super.onPrepareOptionsMenu(menu); return super.onPrepareOptionsMenu(menu);
} }
...@@ -127,6 +140,9 @@ public class LibreOfficeMainActivity extends ActionBarActivity { ...@@ -127,6 +140,9 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
mAppContext = this; mAppContext = this;
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mEnableEditing = PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
.getBoolean(ENABLE_EXPERIMENTAL_PREFS_KEY, false);
mMainHandler = new Handler(); mMainHandler = new Handler();
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
...@@ -226,6 +242,12 @@ public class LibreOfficeMainActivity extends ActionBarActivity { ...@@ -226,6 +242,12 @@ public class LibreOfficeMainActivity extends ActionBarActivity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
Log.i(LOGTAG, "onResume.."); Log.i(LOGTAG, "onResume..");
// check for config change
boolean bEnableExperimental = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean(ENABLE_EXPERIMENTAL_PREFS_KEY, false);
if (bEnableExperimental != mEnableEditing) {
mEnableEditing = bEnableExperimental;
invalidateOptionsMenu();
}
} }
@Override @Override
......
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.libreoffice;
import android.app.Activity;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import org.libreoffice.R;
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.libreoffice_preferences);
}
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -102,6 +102,9 @@ public class ToolbarController { ...@@ -102,6 +102,9 @@ public class ToolbarController {
* Change the toolbar to edit mode. * Change the toolbar to edit mode.
*/ */
void switchToEditMode() { void switchToEditMode() {
if (!LOKitShell.isEditingEnabled())
return;
// Ensure the change is done on UI thread // Ensure the change is done on UI thread
LOKitShell.getMainHandler().post(new Runnable() { LOKitShell.getMainHandler().post(new Runnable() {
@Override @Override
...@@ -118,6 +121,9 @@ public class ToolbarController { ...@@ -118,6 +121,9 @@ public class ToolbarController {
* Change the toolbar to view mode. * Change the toolbar to view mode.
*/ */
void switchToViewMode() { void switchToViewMode() {
if (!LOKitShell.isEditingEnabled())
return;
// Ensure the change is done on UI thread // Ensure the change is done on UI thread
LOKitShell.getMainHandler().post(new Runnable() { LOKitShell.getMainHandler().post(new Runnable() {
@Override @Override
......
...@@ -51,6 +51,7 @@ import android.widget.Toast; ...@@ -51,6 +51,7 @@ import android.widget.Toast;
import org.libreoffice.LOAbout; import org.libreoffice.LOAbout;
import org.libreoffice.LibreOfficeMainActivity; import org.libreoffice.LibreOfficeMainActivity;
import org.libreoffice.R; import org.libreoffice.R;
import org.libreoffice.SettingsActivity;
import org.libreoffice.storage.DocumentProviderFactory; import org.libreoffice.storage.DocumentProviderFactory;
import org.libreoffice.storage.IDocumentProvider; import org.libreoffice.storage.IDocumentProvider;
import org.libreoffice.storage.IFile; import org.libreoffice.storage.IFile;
...@@ -454,6 +455,9 @@ public class LibreOfficeUIActivity extends ActionBarActivity implements ActionBa ...@@ -454,6 +455,9 @@ public class LibreOfficeUIActivity extends ActionBarActivity implements ActionBa
case R.id.action_about: case R.id.action_about:
mAbout.showAbout(); mAbout.showAbout();
return true; return true;
case R.id.action_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
return true;
default: default:
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment