Merge pull request #1524 from akallabeth/android_debug_settings

Add debug settings menu for android

Menu needs to be activated with cmake with -DWITH_ANDROID_DEBUG_MENU=ON
This commit is contained in:
Bernhard Miklautz 2013-10-03 05:36:42 -07:00
commit 5c61ac97cb
12 changed files with 874 additions and 642 deletions

View File

@ -28,6 +28,14 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/project.properties.cmake
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ant.properties.cmake
${CMAKE_CURRENT_BINARY_DIR}/ant.properties @ONLY)
# Generate a Java class with static members set to the CMake
# configuration properties.
set(JAVA_CFG "src/com/freerdp/freerdpcore/utils/BuildConfiguration.java")
set(JAVA_CFG_OUT "${CMAKE_CURRENT_BINARY_DIR}/${JAVA_CFG}")
set(JAVA_CFG_IN "${CMAKE_CURRENT_SOURCE_DIR}/${JAVA_CFG}.in")
CONFIGURE_FILE(${JAVA_CFG_IN} ${JAVA_CFG_OUT})
file(COPY res DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
if (ANDROID_SDK)

View File

@ -22,6 +22,7 @@
android:layout_height="wrap_content">
<ImageView android:id="@+id/bookmark_icon1"
android:contentDescription="@+id/bookmark_icon1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
@ -46,6 +47,7 @@
/>
<ImageView android:id="@+id/bookmark_icon2"
android:contentDescription="@+id/bookmark_icon2"
android:layout_marginTop="9dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -23,6 +23,7 @@
<ImageView
android:id="@+id/session_screenshot"
android:contentDescription="@+id/session_screenshot"
android:layout_width="64dp"
android:layout_height="48dp"
android:scaleType="fitXY"
@ -51,6 +52,7 @@
<ImageButton
android:id="@+id/session_disconnect"
android:contentDescription="@+id/session_disconnect"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_width="wrap_content"

View File

@ -32,8 +32,8 @@
<!-- List placeholder labels -->
<string name="list_placeholder_login">Login</string>
<string name="list_placeholder_no_servers">No Servers</string>
<string name="list_placeholder_connecting">Connecting ...</string>
<string name="list_placeholder_disconnecting">Disconnecting ...</string>
<string name="list_placeholder_connecting">Connecting &#8230;</string>
<string name="list_placeholder_disconnecting">Disconnecting &#8230;</string>
<string name="list_placeholder_connection_error">Connection Lost</string>
<string name="list_placeholder_wrong_password">Wrong Password</string>
<string name="list_placeholder_invalid_username">Invalid Username</string>
@ -178,8 +178,8 @@
<string name="dlg_title_credentials">Please enter your credentials</string>
<string name="dlg_title_create_shortcut">Create Shortcut</string>
<string name="dlg_msg_create_shortcut">Shortcut name:</string>
<string name="dlg_msg_connecting">Connecting ...</string>
<string name="dlg_msg_logging_in">Logging in ...</string>
<string name="dlg_msg_connecting">Connecting &#8230;</string>
<string name="dlg_msg_logging_in">Logging in &#8230;</string>
<string name="dlg_title_about">About aFreeRDP</string>
<string name="dlg_msg_about">Version: %1$s\n\u00A9 2012 Thinstuff Technologies GmbH</string>
<string name="dlg_title_create_bookmark_after_qc">Save Connection Settings?</string>
@ -191,4 +191,6 @@
<string name="dlg_msg_exit">Are you sure you want to exit the application?</string>
<string name="dlg_title_clear_cert_cache">Delete Certificates?</string>
<string name="dlg_msg_clear_cert_cache">Are you sure you want to delete all your cached Certificates?</string>
<string name="debug_level">Debug Level</string>
<string name="settings_debug">Debug Settings</string>
</resources>

View File

@ -26,7 +26,9 @@
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_cat_settings">
<PreferenceCategory
android:key="category.settings"
android:title="@string/settings_cat_settings">
<PreferenceScreen android:key="bookmark.screen" android:title="@string/settings_screen">
<intent android:action="android.intent.action.VIEW"
@ -49,6 +51,13 @@
android:data="preferences://advanced_settings" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceScreen android:key="bookmark.debug" android:title="@string/settings_debug">
<intent android:action="android.intent.action.VIEW"
android:targetPackage="*"
android:targetClass="com.freerdp.freerdpcore.presentation.BookmarkActivity"
android:data="preferences://debug_settings" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
Debug Settings Layout
Copyright 2013 Thinstuff Technologies GmbH
Copyright 2013 Armin Novak <anovak@thinstuff.at>
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.
*/
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:freerdp="http://schemas.android.com/apk/res-auto">
<PreferenceCategory android:title="@string/settings_debug">
<com.freerdp.freerdpcore.utils.IntEditTextPreference
android:key="bookmark.debug_level"
android:title="@string/debug_level"
android:summary="Debug level, 0 to disable."
android:numeric="integer"
android:inputType="number"
freerdp:bounds_min="0"
freerdp:bounds_max="10"
freerdp:bounds_default="0" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -5,18 +5,19 @@
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 com.freerdp.freerdpcore.domain;
import java.util.Locale;
import com.freerdp.freerdpcore.application.GlobalApp;
import android.content.SharedPreferences;
import android.os.Parcel;
import android.os.Parcelable;
public class BookmarkBase implements Parcelable, Cloneable
{
public class BookmarkBase implements Parcelable, Cloneable {
public static final int TYPE_INVALID = -1;
public static final int TYPE_MANUAL = 1;
public static final int TYPE_QUICKCONNECT = 2;
@ -24,8 +25,7 @@ public class BookmarkBase implements Parcelable, Cloneable
public static final int TYPE_CUSTOM_BASE = 1000;
// performance flags
public static class PerformanceFlags implements Parcelable
{
public static class PerformanceFlags implements Parcelable {
private boolean remotefx;
private boolean wallpaper;
private boolean theming;
@ -110,8 +110,7 @@ public class BookmarkBase implements Parcelable, Cloneable
this.desktopComposition = desktopComposition;
}
public static final Parcelable.Creator<PerformanceFlags> CREATOR = new Parcelable.Creator<PerformanceFlags>()
{
public static final Parcelable.Creator<PerformanceFlags> CREATOR = new Parcelable.Creator<PerformanceFlags>() {
public PerformanceFlags createFromParcel(Parcel in) {
return new PerformanceFlags(in);
}
@ -128,8 +127,7 @@ public class BookmarkBase implements Parcelable, Cloneable
}
@Override
public void writeToParcel(Parcel out, int flags)
{
public void writeToParcel(Parcel out, int flags) {
out.writeInt(remotefx ? 1 : 0);
out.writeInt(wallpaper ? 1 : 0);
out.writeInt(theming ? 1 : 0);
@ -141,8 +139,7 @@ public class BookmarkBase implements Parcelable, Cloneable
}
// Screen Settings class
public static class ScreenSettings implements Parcelable
{
public static class ScreenSettings implements Parcelable {
public static final int FITSCREEN = -2;
public static final int AUTOMATIC = -1;
public static final int CUSTOM = 0;
@ -171,8 +168,7 @@ public class BookmarkBase implements Parcelable, Cloneable
height = 0;
}
public void setResolution(int resolution)
{
public void setResolution(int resolution) {
this.resolution = resolution;
if (resolution == AUTOMATIC || resolution == FITSCREEN) {
@ -181,43 +177,35 @@ public class BookmarkBase implements Parcelable, Cloneable
}
}
public void setResolution(String resolution, int width, int height)
{
public void setResolution(String resolution, int width, int height) {
if (resolution.contains("x")) {
String[] dimensions = resolution.split("x");
this.width = Integer.valueOf(dimensions[0]);
this.height = Integer.valueOf(dimensions[1]);
this.resolution = PREDEFINED;
}
else if (resolution.equalsIgnoreCase("custom"))
{
} else if (resolution.equalsIgnoreCase("custom")) {
this.width = width;
this.height = height;
this.resolution = CUSTOM;
}
else if (resolution.equalsIgnoreCase("fitscreen"))
{
} else if (resolution.equalsIgnoreCase("fitscreen")) {
this.width = this.height = 0;
this.resolution = FITSCREEN;
}
else
{
} else {
this.width = this.height = 0;
this.resolution = AUTOMATIC;
}
}
public int getResolution()
{
public int getResolution() {
return resolution;
}
public String getResolutionString()
{
public String getResolutionString() {
if (isPredefined())
return (width + "x" + height);
return (isFitScreen() ? "fitscreen" : isAutomatic() ? "automatic" : "custom");
return (isFitScreen() ? "fitscreen" : isAutomatic() ? "automatic"
: "custom");
}
public boolean isPredefined() {
@ -260,8 +248,7 @@ public class BookmarkBase implements Parcelable, Cloneable
return colors;
}
public static final Parcelable.Creator<ScreenSettings> CREATOR = new Parcelable.Creator<ScreenSettings>()
{
public static final Parcelable.Creator<ScreenSettings> CREATOR = new Parcelable.Creator<ScreenSettings>() {
public ScreenSettings createFromParcel(Parcel in) {
return new ScreenSettings(in);
}
@ -278,8 +265,7 @@ public class BookmarkBase implements Parcelable, Cloneable
}
@Override
public void writeToParcel(Parcel out, int flags)
{
public void writeToParcel(Parcel out, int flags) {
out.writeInt(resolution);
out.writeInt(colors);
out.writeInt(width);
@ -287,10 +273,53 @@ public class BookmarkBase implements Parcelable, Cloneable
}
}
public static class DebugSettings implements Parcelable {
private int debug;
public DebugSettings() {
init();
}
public DebugSettings(Parcel parcel) {
debug = parcel.readInt();
}
private void init() {
debug = 0;
}
public int getDebugLevel() {
return debug;
}
public void setDebugLevel(int debug) {
this.debug = debug;
}
public static final Parcelable.Creator<DebugSettings> CREATOR = new Parcelable.Creator<DebugSettings>() {
public DebugSettings createFromParcel(Parcel in) {
return new DebugSettings(in);
}
@Override
public DebugSettings[] newArray(int size) {
return new DebugSettings[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(debug);
}
}
// Session Settings
public static class AdvancedSettings implements Parcelable
{
public static class AdvancedSettings implements Parcelable {
private boolean enable3GSettings;
private ScreenSettings screen3G;
private PerformanceFlags performance3G;
@ -308,8 +337,10 @@ public class BookmarkBase implements Parcelable, Cloneable
public AdvancedSettings(Parcel parcel) {
enable3GSettings = (parcel.readInt() == 1) ? true : false;
screen3G = parcel.readParcelable(ScreenSettings.class.getClassLoader());
performance3G = parcel.readParcelable(PerformanceFlags.class.getClassLoader());
screen3G = parcel.readParcelable(ScreenSettings.class
.getClassLoader());
performance3G = parcel.readParcelable(PerformanceFlags.class
.getClassLoader());
redirectSDCard = (parcel.readInt() == 1) ? true : false;
redirectSound = parcel.readInt();
redirectMicrophone = (parcel.readInt() == 1) ? true : false;
@ -396,28 +427,23 @@ public class BookmarkBase implements Parcelable, Cloneable
return consoleMode;
}
public void setRemoteProgram(String remoteProgram)
{
public void setRemoteProgram(String remoteProgram) {
this.remoteProgram = remoteProgram;
}
public String getRemoteProgram()
{
public String getRemoteProgram() {
return remoteProgram;
}
public void setWorkDir(String workDir)
{
public void setWorkDir(String workDir) {
this.workDir = workDir;
}
public String getWorkDir()
{
public String getWorkDir() {
return workDir;
}
public static final Parcelable.Creator<AdvancedSettings> CREATOR = new Parcelable.Creator<AdvancedSettings>()
{
public static final Parcelable.Creator<AdvancedSettings> CREATOR = new Parcelable.Creator<AdvancedSettings>() {
public AdvancedSettings createFromParcel(Parcel in) {
return new AdvancedSettings(in);
}
@ -434,8 +460,7 @@ public class BookmarkBase implements Parcelable, Cloneable
}
@Override
public void writeToParcel(Parcel out, int flags)
{
public void writeToParcel(Parcel out, int flags) {
out.writeInt(enable3GSettings ? 1 : 0);
out.writeParcelable(screen3G, flags);
out.writeParcelable(performance3G, flags);
@ -449,8 +474,8 @@ public class BookmarkBase implements Parcelable, Cloneable
}
}
protected int type;
private long id;
protected int type;
private long id;
private String label;
private String username;
private String password;
@ -459,23 +484,23 @@ public class BookmarkBase implements Parcelable, Cloneable
private ScreenSettings screenSettings;
private PerformanceFlags performanceFlags;
private AdvancedSettings advancedSettings;
private DebugSettings debugSettings;
private void init()
{
private void init() {
type = TYPE_INVALID;
id = -1;
label = "";
username = "";
password = "";
domain = "";
domain = "";
screenSettings = new ScreenSettings();
performanceFlags = new PerformanceFlags();
advancedSettings = new AdvancedSettings();
debugSettings = new DebugSettings();
}
public BookmarkBase(Parcel parcel)
{
public BookmarkBase(Parcel parcel) {
type = parcel.readInt();
id = parcel.readLong();
label = parcel.readString();
@ -483,9 +508,14 @@ public class BookmarkBase implements Parcelable, Cloneable
password = parcel.readString();
domain = parcel.readString();
screenSettings = parcel.readParcelable(ScreenSettings.class.getClassLoader());
performanceFlags = parcel.readParcelable(PerformanceFlags.class.getClassLoader());
advancedSettings = parcel.readParcelable(AdvancedSettings.class.getClassLoader());
screenSettings = parcel.readParcelable(ScreenSettings.class
.getClassLoader());
performanceFlags = parcel.readParcelable(PerformanceFlags.class
.getClassLoader());
advancedSettings = parcel.readParcelable(AdvancedSettings.class
.getClassLoader());
debugSettings = parcel.readParcelable(DebugSettings.class
.getClassLoader());
}
public BookmarkBase() {
@ -493,7 +523,9 @@ public class BookmarkBase implements Parcelable, Cloneable
}
@SuppressWarnings("unchecked")
public <T extends BookmarkBase> T get() { return (T)this; }
public <T extends BookmarkBase> T get() {
return (T) this;
}
public int getType() {
return type;
@ -563,18 +595,27 @@ public class BookmarkBase implements Parcelable, Cloneable
return advancedSettings;
}
public ScreenSettings getActiveScreenSettings()
{
return (GlobalApp.ConnectedTo3G && advancedSettings.getEnable3GSettings()) ? advancedSettings.getScreen3G() : screenSettings;
public void setDebugSettings(DebugSettings debugSettings) {
this.debugSettings = debugSettings;
}
public PerformanceFlags getActivePerformanceFlags()
{
return (GlobalApp.ConnectedTo3G && advancedSettings.getEnable3GSettings()) ? advancedSettings.getPerformance3G() : performanceFlags;
public DebugSettings getDebugSettings() {
return debugSettings;
}
public static final Parcelable.Creator<BookmarkBase> CREATOR = new Parcelable.Creator<BookmarkBase>()
{
public ScreenSettings getActiveScreenSettings() {
return (GlobalApp.ConnectedTo3G && advancedSettings
.getEnable3GSettings()) ? advancedSettings.getScreen3G()
: screenSettings;
}
public PerformanceFlags getActivePerformanceFlags() {
return (GlobalApp.ConnectedTo3G && advancedSettings
.getEnable3GSettings()) ? advancedSettings.getPerformance3G()
: performanceFlags;
}
public static final Parcelable.Creator<BookmarkBase> CREATOR = new Parcelable.Creator<BookmarkBase>() {
public BookmarkBase createFromParcel(Parcel in) {
return new BookmarkBase(in);
}
@ -591,8 +632,7 @@ public class BookmarkBase implements Parcelable, Cloneable
}
@Override
public void writeToParcel(Parcel out, int flags)
{
public void writeToParcel(Parcel out, int flags) {
out.writeInt(type);
out.writeLong(id);
out.writeString(label);
@ -603,11 +643,14 @@ public class BookmarkBase implements Parcelable, Cloneable
out.writeParcelable(screenSettings, flags);
out.writeParcelable(performanceFlags, flags);
out.writeParcelable(advancedSettings, flags);
out.writeParcelable(debugSettings, flags);
}
// write to shared preferences
public void writeToSharedPreferences(SharedPreferences sharedPrefs)
{
public void writeToSharedPreferences(SharedPreferences sharedPrefs) {
Locale locale = Locale.ENGLISH;
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.clear();
editor.putString("bookmark.label", label);
@ -616,95 +659,151 @@ public class BookmarkBase implements Parcelable, Cloneable
editor.putString("bookmark.domain", domain);
editor.putInt("bookmark.colors", screenSettings.getColors());
editor.putString("bookmark.resolution", screenSettings.getResolutionString().toLowerCase());
editor.putString("bookmark.resolution", screenSettings
.getResolutionString().toLowerCase(locale));
editor.putInt("bookmark.width", screenSettings.getWidth());
editor.putInt("bookmark.height", screenSettings.getHeight());
editor.putBoolean("bookmark.perf_remotefx", performanceFlags.getRemoteFX());
editor.putBoolean("bookmark.perf_wallpaper", performanceFlags.getWallpaper());
editor.putBoolean("bookmark.perf_font_smoothing", performanceFlags.getFontSmoothing());
editor.putBoolean("bookmark.perf_desktop_composition", performanceFlags.getDesktopComposition());
editor.putBoolean("bookmark.perf_window_dragging", performanceFlags.getFullWindowDrag());
editor.putBoolean("bookmark.perf_menu_animation", performanceFlags.getMenuAnimations());
editor.putBoolean("bookmark.perf_remotefx",
performanceFlags.getRemoteFX());
editor.putBoolean("bookmark.perf_wallpaper",
performanceFlags.getWallpaper());
editor.putBoolean("bookmark.perf_font_smoothing",
performanceFlags.getFontSmoothing());
editor.putBoolean("bookmark.perf_desktop_composition",
performanceFlags.getDesktopComposition());
editor.putBoolean("bookmark.perf_window_dragging",
performanceFlags.getFullWindowDrag());
editor.putBoolean("bookmark.perf_menu_animation",
performanceFlags.getMenuAnimations());
editor.putBoolean("bookmark.perf_themes", performanceFlags.getTheming());
editor.putBoolean("bookmark.enable_3g_settings", advancedSettings.getEnable3GSettings());
editor.putBoolean("bookmark.enable_3g_settings",
advancedSettings.getEnable3GSettings());
editor.putInt("bookmark.colors_3g", advancedSettings.getScreen3G().getColors());
editor.putString("bookmark.resolution_3g", advancedSettings.getScreen3G().getResolutionString().toLowerCase());
editor.putInt("bookmark.width_3g", advancedSettings.getScreen3G().getWidth());
editor.putInt("bookmark.height_3g", advancedSettings.getScreen3G().getHeight());
editor.putInt("bookmark.colors_3g", advancedSettings.getScreen3G()
.getColors());
editor.putString("bookmark.resolution_3g", advancedSettings
.getScreen3G().getResolutionString().toLowerCase(locale));
editor.putInt("bookmark.width_3g", advancedSettings.getScreen3G()
.getWidth());
editor.putInt("bookmark.height_3g", advancedSettings.getScreen3G()
.getHeight());
editor.putBoolean("bookmark.perf_remotefx_3g", advancedSettings.getPerformance3G().getRemoteFX());
editor.putBoolean("bookmark.perf_wallpaper_3g", advancedSettings.getPerformance3G().getWallpaper());
editor.putBoolean("bookmark.perf_font_smoothing_3g", advancedSettings.getPerformance3G().getFontSmoothing());
editor.putBoolean("bookmark.perf_desktop_composition_3g", advancedSettings.getPerformance3G().getDesktopComposition());
editor.putBoolean("bookmark.perf_window_dragging_3g", advancedSettings.getPerformance3G().getFullWindowDrag());
editor.putBoolean("bookmark.perf_menu_animation_3g", advancedSettings.getPerformance3G().getMenuAnimations());
editor.putBoolean("bookmark.perf_themes_3g", advancedSettings.getPerformance3G().getTheming());
editor.putBoolean("bookmark.perf_remotefx_3g", advancedSettings
.getPerformance3G().getRemoteFX());
editor.putBoolean("bookmark.perf_wallpaper_3g", advancedSettings
.getPerformance3G().getWallpaper());
editor.putBoolean("bookmark.perf_font_smoothing_3g", advancedSettings
.getPerformance3G().getFontSmoothing());
editor.putBoolean("bookmark.perf_desktop_composition_3g",
advancedSettings.getPerformance3G().getDesktopComposition());
editor.putBoolean("bookmark.perf_window_dragging_3g", advancedSettings
.getPerformance3G().getFullWindowDrag());
editor.putBoolean("bookmark.perf_menu_animation_3g", advancedSettings
.getPerformance3G().getMenuAnimations());
editor.putBoolean("bookmark.perf_themes_3g", advancedSettings
.getPerformance3G().getTheming());
editor.putBoolean("bookmark.redirect_sdcard", advancedSettings.getRedirectSDCard());
editor.putInt("bookmark.redirect_sound", advancedSettings.getRedirectSound());
editor.putBoolean("bookmark.redirect_microphone", advancedSettings.getRedirectMicrophone());
editor.putBoolean("bookmark.redirect_sdcard",
advancedSettings.getRedirectSDCard());
editor.putInt("bookmark.redirect_sound",
advancedSettings.getRedirectSound());
editor.putBoolean("bookmark.redirect_microphone",
advancedSettings.getRedirectMicrophone());
editor.putInt("bookmark.security", advancedSettings.getSecurity());
editor.putString("bookmark.remote_program", advancedSettings.getRemoteProgram());
editor.putString("bookmark.remote_program",
advancedSettings.getRemoteProgram());
editor.putString("bookmark.work_dir", advancedSettings.getWorkDir());
editor.putBoolean("bookmark.console_mode", advancedSettings.getConsoleMode());
editor.putBoolean("bookmark.console_mode",
advancedSettings.getConsoleMode());
editor.putInt("bookmark.debug_level",
debugSettings.getDebugLevel());
editor.commit();
}
// read from shared preferences
public void readFromSharedPreferences(SharedPreferences sharedPrefs)
{
public void readFromSharedPreferences(SharedPreferences sharedPrefs) {
label = sharedPrefs.getString("bookmark.label", "");
username = sharedPrefs.getString("bookmark.username", "");
password = sharedPrefs.getString("bookmark.password", "");
domain = sharedPrefs.getString("bookmark.domain", "");
screenSettings.setColors(sharedPrefs.getInt("bookmark.colors", 16));
screenSettings.setResolution(sharedPrefs.getString("bookmark.resolution", "automatic"), sharedPrefs.getInt("bookmark.width", 800), sharedPrefs.getInt("bookmark.height", 600));
screenSettings.setResolution(
sharedPrefs.getString("bookmark.resolution", "automatic"),
sharedPrefs.getInt("bookmark.width", 800),
sharedPrefs.getInt("bookmark.height", 600));
performanceFlags.setRemoteFX(sharedPrefs.getBoolean("bookmark.perf_remotefx", false));
performanceFlags.setWallpaper(sharedPrefs.getBoolean("bookmark.perf_wallpaper", false));
performanceFlags.setFontSmoothing(sharedPrefs.getBoolean("bookmark.perf_font_smoothing", false));
performanceFlags.setDesktopComposition(sharedPrefs.getBoolean("bookmark.perf_desktop_composition", false));
performanceFlags.setFullWindowDrag(sharedPrefs.getBoolean("bookmark.perf_window_dragging", false));
performanceFlags.setMenuAnimations(sharedPrefs.getBoolean("bookmark.perf_menu_animation", false));
performanceFlags.setTheming(sharedPrefs.getBoolean("bookmark.perf_themes", false));
performanceFlags.setRemoteFX(sharedPrefs.getBoolean(
"bookmark.perf_remotefx", false));
performanceFlags.setWallpaper(sharedPrefs.getBoolean(
"bookmark.perf_wallpaper", false));
performanceFlags.setFontSmoothing(sharedPrefs.getBoolean(
"bookmark.perf_font_smoothing", false));
performanceFlags.setDesktopComposition(sharedPrefs.getBoolean(
"bookmark.perf_desktop_composition", false));
performanceFlags.setFullWindowDrag(sharedPrefs.getBoolean(
"bookmark.perf_window_dragging", false));
performanceFlags.setMenuAnimations(sharedPrefs.getBoolean(
"bookmark.perf_menu_animation", false));
performanceFlags.setTheming(sharedPrefs.getBoolean(
"bookmark.perf_themes", false));
advancedSettings.setEnable3GSettings(sharedPrefs.getBoolean("bookmark.enable_3g_settings", false));
advancedSettings.setEnable3GSettings(sharedPrefs.getBoolean(
"bookmark.enable_3g_settings", false));
advancedSettings.getScreen3G().setColors(sharedPrefs.getInt("bookmark.colors_3g", 16));
advancedSettings.getScreen3G().setResolution(sharedPrefs.getString("bookmark.resolution_3g", "automatic"),
sharedPrefs.getInt("bookmark.width_3g", 800), sharedPrefs.getInt("bookmark.height_3g", 600));
advancedSettings.getScreen3G().setColors(
sharedPrefs.getInt("bookmark.colors_3g", 16));
advancedSettings.getScreen3G().setResolution(
sharedPrefs.getString("bookmark.resolution_3g", "automatic"),
sharedPrefs.getInt("bookmark.width_3g", 800),
sharedPrefs.getInt("bookmark.height_3g", 600));
advancedSettings.getPerformance3G().setRemoteFX(sharedPrefs.getBoolean("bookmark.perf_remotefx_3g", false));
advancedSettings.getPerformance3G().setWallpaper(sharedPrefs.getBoolean("bookmark.perf_wallpaper_3g", false));
advancedSettings.getPerformance3G().setFontSmoothing(sharedPrefs.getBoolean("bookmark.perf_font_smoothing_3g", false));
advancedSettings.getPerformance3G().setDesktopComposition(sharedPrefs.getBoolean("bookmark.perf_desktop_composition_3g", false));
advancedSettings.getPerformance3G().setFullWindowDrag(sharedPrefs.getBoolean("bookmark.perf_window_dragging_3g", false));
advancedSettings.getPerformance3G().setMenuAnimations(sharedPrefs.getBoolean("bookmark.perf_menu_animation_3g", false));
advancedSettings.getPerformance3G().setTheming(sharedPrefs.getBoolean("bookmark.perf_themes_3g", false));
advancedSettings.getPerformance3G().setRemoteFX(
sharedPrefs.getBoolean("bookmark.perf_remotefx_3g", false));
advancedSettings.getPerformance3G().setWallpaper(
sharedPrefs.getBoolean("bookmark.perf_wallpaper_3g", false));
advancedSettings.getPerformance3G().setFontSmoothing(
sharedPrefs
.getBoolean("bookmark.perf_font_smoothing_3g", false));
advancedSettings.getPerformance3G().setDesktopComposition(
sharedPrefs.getBoolean("bookmark.perf_desktop_composition_3g",
false));
advancedSettings.getPerformance3G().setFullWindowDrag(
sharedPrefs.getBoolean("bookmark.perf_window_dragging_3g",
false));
advancedSettings.getPerformance3G().setMenuAnimations(
sharedPrefs
.getBoolean("bookmark.perf_menu_animation_3g", false));
advancedSettings.getPerformance3G().setTheming(
sharedPrefs.getBoolean("bookmark.perf_themes_3g", false));
advancedSettings.setRedirectSDCard(sharedPrefs.getBoolean("bookmark.redirect_sdcard", false));
advancedSettings.setRedirectSound(sharedPrefs.getInt("bookmark.redirect_sound", 0));
advancedSettings.setRedirectMicrophone(sharedPrefs.getBoolean("bookmark.redirect_microphone", false));
advancedSettings.setSecurity(sharedPrefs.getInt("bookmark.security", 0));
advancedSettings.setRemoteProgram(sharedPrefs.getString("bookmark.remote_program", ""));
advancedSettings.setWorkDir(sharedPrefs.getString("bookmark.work_dir", ""));
advancedSettings.setConsoleMode(sharedPrefs.getBoolean("bookmark.console_mode", false));
advancedSettings.setRedirectSDCard(sharedPrefs.getBoolean(
"bookmark.redirect_sdcard", false));
advancedSettings.setRedirectSound(sharedPrefs.getInt(
"bookmark.redirect_sound", 0));
advancedSettings.setRedirectMicrophone(sharedPrefs.getBoolean(
"bookmark.redirect_microphone", false));
advancedSettings
.setSecurity(sharedPrefs.getInt("bookmark.security", 0));
advancedSettings.setRemoteProgram(sharedPrefs.getString(
"bookmark.remote_program", ""));
advancedSettings.setWorkDir(sharedPrefs.getString("bookmark.work_dir",
""));
advancedSettings.setConsoleMode(sharedPrefs.getBoolean(
"bookmark.console_mode", false));
debugSettings.setDebugLevel(sharedPrefs.getInt("bookmark.debug_level", 0));
}
// Cloneable
public Object clone()
{
try
{
public Object clone() {
try {
return super.clone();
}
catch(CloneNotSupportedException e)
{
} catch (CloneNotSupportedException e) {
return null;
}
}

View File

@ -5,12 +5,13 @@
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 com.freerdp.freerdpcore.presentation;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import com.freerdp.freerdpcore.R;
import com.freerdp.freerdpcore.application.GlobalApp;
@ -19,6 +20,7 @@ import com.freerdp.freerdpcore.domain.ConnectionReference;
import com.freerdp.freerdpcore.domain.ManualBookmark;
import com.freerdp.freerdpcore.services.BookmarkBaseGateway;
import com.freerdp.freerdpcore.utils.RDPFileParser;
import com.freerdp.freerdpcore.utils.BuildConfiguration;
import android.app.AlertDialog;
import android.content.ComponentName;
@ -29,10 +31,11 @@ import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.util.Log;
public class BookmarkActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener
{
public class BookmarkActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
public static final String PARAM_CONNECTION_REFERENCE = "conRef";
private static final String TAG = "BookmarkActivity";
@ -46,9 +49,12 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
private static final int PREFERENCES_SCREEN3G = 6;
private static final int PREFERENCES_PERFORMANCE3G = 7;
private static final int PREFERENCES_GATEWAY = 8;
private static final int PREFERENCES_DEBUG = 9;
// bookmark needs to be static because the activity is started for each subview
// (we have to do this because Android has a bug where the style for Preferences
// bookmark needs to be static because the activity is started for each
// subview
// (we have to do this because Android has a bug where the style for
// Preferences
// is only applied to the first PreferenceScreen but not to subsequent ones)
private static BookmarkBase bookmark = null;
@ -56,53 +62,48 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
private static boolean new_bookmark = false;
@Override
public void onCreate(Bundle savedInstanceState)
{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// init shared preferences for activity
getPreferenceManager().setSharedPreferencesName("TEMP");
getPreferenceManager().setSharedPreferencesMode(MODE_PRIVATE);
if (bookmark == null)
{
if (bookmark == null) {
// if we have a bookmark id set in the extras we are in edit mode
Bundle bundle = getIntent().getExtras();
if(bundle != null)
{
if (bundle != null) {
// See if we got a connection reference to a bookmark
if(bundle.containsKey(PARAM_CONNECTION_REFERENCE))
{
String refStr = bundle.getString(PARAM_CONNECTION_REFERENCE);
if(ConnectionReference.isManualBookmarkReference(refStr))
{
bookmark = GlobalApp.getManualBookmarkGateway().findById(ConnectionReference.getManualBookmarkId(refStr));
if (bundle.containsKey(PARAM_CONNECTION_REFERENCE)) {
String refStr = bundle
.getString(PARAM_CONNECTION_REFERENCE);
if (ConnectionReference.isManualBookmarkReference(refStr)) {
bookmark = GlobalApp.getManualBookmarkGateway()
.findById(
ConnectionReference
.getManualBookmarkId(refStr));
new_bookmark = false;
}
else if(ConnectionReference.isHostnameReference(refStr))
{
} else if (ConnectionReference.isHostnameReference(refStr)) {
bookmark = new ManualBookmark();
bookmark.<ManualBookmark>get().setLabel(ConnectionReference.getHostname(refStr));
bookmark.<ManualBookmark>get().setHostname(ConnectionReference.getHostname(refStr));
bookmark.<ManualBookmark> get().setLabel(
ConnectionReference.getHostname(refStr));
bookmark.<ManualBookmark> get().setHostname(
ConnectionReference.getHostname(refStr));
new_bookmark = true;
}
else if (ConnectionReference.isFileReference(refStr))
{
} else if (ConnectionReference.isFileReference(refStr)) {
String file = ConnectionReference.getFile(refStr);
bookmark = new ManualBookmark();
bookmark.setLabel(file);
try
{
try {
RDPFileParser rdpFile = new RDPFileParser(file);
updateBookmarkFromFile((ManualBookmark)bookmark, rdpFile);
updateBookmarkFromFile((ManualBookmark) bookmark,
rdpFile);
bookmark.setLabel(new File(file).getName());
new_bookmark = true;
}
catch (IOException e)
{
} catch (IOException e) {
Log.e(TAG, "Failed reading RDP file", e);
}
}
@ -110,98 +111,102 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
}
// last chance - ensure we really have a valid bookmark
if(bookmark == null)
if (bookmark == null)
bookmark = new ManualBookmark();
// hide gateway settings if we edit a non-manual bookmark
if (current_preferences == PREFERENCES_ADVANCED && bookmark.getType() != ManualBookmark.TYPE_MANUAL)
{
getPreferenceScreen().removePreference(findPreference("bookmark.enable_gateway"));
getPreferenceScreen().removePreference(findPreference("bookmark.gateway"));
if (current_preferences == PREFERENCES_ADVANCED
&& bookmark.getType() != ManualBookmark.TYPE_MANUAL) {
getPreferenceScreen().removePreference(
findPreference("bookmark.enable_gateway"));
getPreferenceScreen().removePreference(
findPreference("bookmark.gateway"));
}
// update preferences from bookmark
bookmark.writeToSharedPreferences(getPreferenceManager().getSharedPreferences());
bookmark.writeToSharedPreferences(getPreferenceManager()
.getSharedPreferences());
// no settings changed yet
settings_changed = false;
}
// load the requested settings resource
if (getIntent() == null || getIntent().getData() == null)
{
if (getIntent() == null || getIntent().getData() == null) {
addPreferencesFromResource(R.xml.bookmark_settings);
current_preferences = PREFERENCES_BOOKMARK;
}
else if (getIntent().getData().toString().equals("preferences://screen_settings"))
{
} else if (getIntent().getData().toString()
.equals("preferences://screen_settings")) {
addPreferencesFromResource(R.xml.screen_settings);
current_preferences = PREFERENCES_SCREEN;
}
else if (getIntent().getData().toString().equals("preferences://performance_flags"))
{
} else if (getIntent().getData().toString()
.equals("preferences://performance_flags")) {
addPreferencesFromResource(R.xml.performance_flags);
current_preferences = PREFERENCES_PERFORMANCE;
}
else if (getIntent().getData().toString().equals("preferences://screen_settings_3g"))
{
} else if (getIntent().getData().toString()
.equals("preferences://screen_settings_3g")) {
addPreferencesFromResource(R.xml.screen_settings_3g);
current_preferences = PREFERENCES_SCREEN3G;
}
else if (getIntent().getData().toString().equals("preferences://performance_flags_3g"))
{
} else if (getIntent().getData().toString()
.equals("preferences://performance_flags_3g")) {
addPreferencesFromResource(R.xml.performance_flags_3g);
current_preferences = PREFERENCES_PERFORMANCE3G;
}
else if (getIntent().getData().toString().equals("preferences://advanced_settings"))
{
} else if (getIntent().getData().toString()
.equals("preferences://advanced_settings")) {
addPreferencesFromResource(R.xml.advanced_settings);
current_preferences = PREFERENCES_ADVANCED;
}
else if (getIntent().getData().toString().equals("preferences://credentials_settings"))
{
} else if (getIntent().getData().toString()
.equals("preferences://credentials_settings")) {
addPreferencesFromResource(R.xml.credentials_settings);
current_preferences = PREFERENCES_CREDENTIALS;
}
else if (getIntent().getData().toString().equals("preferences://gateway_settings"))
{
} else if (getIntent().getData().toString()
.equals("preferences://gateway_settings")) {
addPreferencesFromResource(R.xml.gateway_settings);
current_preferences = PREFERENCES_GATEWAY;
}
else
{
} else if (getIntent().getData().toString()
.equals("preferences://debug_settings")) {
addPreferencesFromResource(R.xml.debug_settings);
current_preferences = PREFERENCES_DEBUG;
} else {
addPreferencesFromResource(R.xml.bookmark_settings);
current_preferences = PREFERENCES_BOOKMARK;
}
// Hide debug settings, if not activated.
if (!BuildConfiguration.WITH_ANDROID_DEBUG_MENU
.equalsIgnoreCase("ON")) {
Preference pref = findPreference("bookmark.debug");
PreferenceCategory cat = (PreferenceCategory)findPreference("category.settings");
if (pref != null) {
cat.removePreference(pref);
}
}
// update UI with bookmark data
initSettings(getPreferenceManager().getSharedPreferences());
SharedPreferences spref = getPreferenceManager().getSharedPreferences();
initSettings(spref);
// register for preferences changed notification
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
getPreferenceManager().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
// set the correct component names in our preferencescreen settings
setIntentComponentNames();
}
private void updateBookmarkFromFile(ManualBookmark bookmark, RDPFileParser rdpFile)
{
private void updateBookmarkFromFile(ManualBookmark bookmark,
RDPFileParser rdpFile) {
String s;
Integer i;
s = rdpFile.getString("full address");
if (s != null)
{
if (s != null) {
// this gets complicated as it can include port
if (s.lastIndexOf(":") > s.lastIndexOf("]"))
{
try
{
if (s.lastIndexOf(":") > s.lastIndexOf("]")) {
try {
String port = s.substring(s.lastIndexOf(":") + 1);
bookmark.setPort(Integer.parseInt(port));
}
catch (NumberFormatException e)
{
} catch (NumberFormatException e) {
Log.e(TAG, "Malformed address");
}
@ -232,92 +237,102 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
bookmark.getAdvancedSettings().setConsoleMode(i == 1);
}
private void setIntentComponentNames()
{
// we set the component name for our sub-activity calls here because we don't know the package
private void setIntentComponentNames() {
// we set the component name for our sub-activity calls here because we
// don't know the package
// name of the main app in our library project.
ComponentName compName = new ComponentName(getPackageName(), BookmarkActivity.class.getName());
String[] prefKeys = {
"bookmark.credentials",
"bookmark.screen",
"bookmark.performance",
"bookmark.advanced",
"bookmark.screen_3g",
"bookmark.performance_3g",
"bookmark.gateway_settings"
};
ComponentName compName = new ComponentName(getPackageName(),
BookmarkActivity.class.getName());
ArrayList<String> prefKeys = new ArrayList<String>();
for (int i = 0; i < prefKeys.length; ++i)
{
Preference pref = findPreference(prefKeys[i]);
prefKeys.add("bookmark.credentials");
prefKeys.add("bookmark.screen");
prefKeys.add("bookmark.performance");
prefKeys.add("bookmark.advanced");
prefKeys.add("bookmark.screen_3g");
prefKeys.add("bookmark.performance_3g");
prefKeys.add("bookmark.gateway_settings");
prefKeys.add("bookmark.debug");
for (String p : prefKeys) {
Preference pref = findPreference(p);
if (pref != null)
pref.getIntent().setComponent(compName);
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
settings_changed = true;
switch (current_preferences)
{
case PREFERENCES_BOOKMARK:
bookmarkSettingsChanged(sharedPreferences, key);
break;
switch (current_preferences) {
case PREFERENCES_DEBUG:
debugSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_ADVANCED:
advancedSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_BOOKMARK:
bookmarkSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_CREDENTIALS:
credentialsSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_ADVANCED:
advancedSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_SCREEN:
case PREFERENCES_SCREEN3G:
screenSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_CREDENTIALS:
credentialsSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_GATEWAY:
gatewaySettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_SCREEN:
case PREFERENCES_SCREEN3G:
screenSettingsChanged(sharedPreferences, key);
break;
case PREFERENCES_GATEWAY:
gatewaySettingsChanged(sharedPreferences, key);
break;
default:
break;
}
}
private void initSettings(SharedPreferences sharedPreferences)
{
switch (current_preferences)
{
case PREFERENCES_BOOKMARK:
initBookmarkSettings(sharedPreferences);
break;
private void initSettings(SharedPreferences sharedPreferences) {
switch (current_preferences) {
case PREFERENCES_BOOKMARK:
initBookmarkSettings(sharedPreferences);
break;
case PREFERENCES_ADVANCED:
initAdvancedSettings(sharedPreferences);
break;
case PREFERENCES_ADVANCED:
initAdvancedSettings(sharedPreferences);
break;
case PREFERENCES_CREDENTIALS:
initCredentialsSettings(sharedPreferences);
break;
case PREFERENCES_CREDENTIALS:
initCredentialsSettings(sharedPreferences);
break;
case PREFERENCES_SCREEN:
initScreenSettings(sharedPreferences);
break;
case PREFERENCES_SCREEN:
initScreenSettings(sharedPreferences);
break;
case PREFERENCES_SCREEN3G:
initScreenSettings3G(sharedPreferences);
break;
case PREFERENCES_SCREEN3G:
initScreenSettings3G(sharedPreferences);
break;
case PREFERENCES_GATEWAY:
initGatewaySettings(sharedPreferences);
break;
case PREFERENCES_GATEWAY:
initGatewaySettings(sharedPreferences);
break;
case PREFERENCES_DEBUG:
initDebugSettings(sharedPreferences);
break;
default:
break;
}
}
private void initBookmarkSettings(SharedPreferences sharedPreferences)
{
private void initBookmarkSettings(SharedPreferences sharedPreferences) {
bookmarkSettingsChanged(sharedPreferences, "bookmark.label");
bookmarkSettingsChanged(sharedPreferences, "bookmark.hostname");
bookmarkSettingsChanged(sharedPreferences, "bookmark.port");
@ -325,31 +340,38 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
bookmarkSettingsChanged(sharedPreferences, "bookmark.resolution");
}
private void bookmarkSettingsChanged(SharedPreferences sharedPreferences, String key)
{
private void bookmarkSettingsChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("bookmark.label") && findPreference(key) != null)
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
else if (key.equals("bookmark.hostname") && findPreference(key) != null)
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
else if (key.equals("bookmark.port") && findPreference(key) != null)
findPreference(key).setSummary(String.valueOf(sharedPreferences.getInt(key, -1)));
else if (key.equals("bookmark.username"))
{
findPreference(key).setSummary(
String.valueOf(sharedPreferences.getInt(key, -1)));
else if (key.equals("bookmark.username")) {
String username = sharedPreferences.getString(key, "<none>");
if (username.length() == 0)
username = "<none>";
findPreference("bookmark.credentials").setSummary(username);
}
else if (key.equals("bookmark.resolution") || key.equals("bookmark.colors") || key.equals("bookmark.width") || key.equals("bookmark.height"))
{
String resolution = sharedPreferences.getString("bookmark.resolution", "800x600");
//compare english string from resolutions_values_array array, decode to localized
//text for display
} else if (key.equals("bookmark.resolution")
|| key.equals("bookmark.colors")
|| key.equals("bookmark.width")
|| key.equals("bookmark.height")) {
String resolution = sharedPreferences.getString(
"bookmark.resolution", "800x600");
// compare english string from resolutions_values_array array,
// decode to localized
// text for display
if (resolution.equals("automatic")) {
resolution = getResources().getString(R.string.resolution_automatic);
resolution = getResources().getString(
R.string.resolution_automatic);
}
if (resolution.equals("custom")) {
resolution = getResources().getString(R.string.resolution_custom);
resolution = getResources().getString(
R.string.resolution_custom);
}
if (resolution.equals("fitscreen")) {
resolution = getResources().getString(R.string.resolution_fit);
@ -359,170 +381,188 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
}
}
private void initAdvancedSettings(SharedPreferences sharedPreferences)
{
advancedSettingsChanged(sharedPreferences, "bookmark.enable_gateway_settings");
advancedSettingsChanged(sharedPreferences, "bookmark.enable_3g_settings");
private void initAdvancedSettings(SharedPreferences sharedPreferences) {
advancedSettingsChanged(sharedPreferences,
"bookmark.enable_gateway_settings");
advancedSettingsChanged(sharedPreferences,
"bookmark.enable_3g_settings");
advancedSettingsChanged(sharedPreferences, "bookmark.security");
advancedSettingsChanged(sharedPreferences, "bookmark.resolution_3g");
advancedSettingsChanged(sharedPreferences, "bookmark.remote_program");
advancedSettingsChanged(sharedPreferences, "bookmark.work_dir");
}
private void advancedSettingsChanged(SharedPreferences sharedPreferences, String key)
{
if (key.equals("bookmark.enable_gateway_settings"))
{
boolean enabled = sharedPreferences.getBoolean(key, false);
findPreference("bookmark.gateway_settings").setEnabled(enabled);
}
else if (key.equals("bookmark.enable_3g_settings"))
{
private void advancedSettingsChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("bookmark.enable_gateway_settings")) {
boolean enabled = sharedPreferences.getBoolean(key, false);
findPreference("bookmark.gateway_settings").setEnabled(enabled);
} else if (key.equals("bookmark.enable_3g_settings")) {
boolean enabled = sharedPreferences.getBoolean(key, false);
findPreference("bookmark.screen_3g").setEnabled(enabled);
findPreference("bookmark.performance_3g").setEnabled(enabled);
}
else if (key.equals("bookmark.security"))
{
ListPreference listPreference = (ListPreference)findPreference(key);
CharSequence security = listPreference.getEntries()[sharedPreferences.getInt(key, 0)];
} else if (key.equals("bookmark.security")) {
ListPreference listPreference = (ListPreference) findPreference(key);
CharSequence security = listPreference.getEntries()[sharedPreferences
.getInt(key, 0)];
listPreference.setSummary(security);
}
else if (key.equals("bookmark.resolution_3g") || key.equals("bookmark.colors_3g") || key.equals("bookmark.width_3g") || key.equals("bookmark.height_3g"))
{
String resolution = sharedPreferences.getString("bookmark.resolution_3g", "800x600");
} else if (key.equals("bookmark.resolution_3g")
|| key.equals("bookmark.colors_3g")
|| key.equals("bookmark.width_3g")
|| key.equals("bookmark.height_3g")) {
String resolution = sharedPreferences.getString(
"bookmark.resolution_3g", "800x600");
if (resolution.equals("automatic"))
resolution = getResources().getString(R.string.resolution_automatic);
resolution = getResources().getString(
R.string.resolution_automatic);
else if (resolution.equals("custom"))
resolution = getResources().getString(R.string.resolution_custom);
resolution += "@" + sharedPreferences.getInt("bookmark.colors_3g", 16);
resolution = getResources().getString(
R.string.resolution_custom);
resolution += "@"
+ sharedPreferences.getInt("bookmark.colors_3g", 16);
findPreference("bookmark.screen_3g").setSummary(resolution);
}
else if (key.equals("bookmark.remote_program"))
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
} else if (key.equals("bookmark.remote_program"))
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
else if (key.equals("bookmark.work_dir"))
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
}
private void initCredentialsSettings(SharedPreferences sharedPreferences)
{
private void initCredentialsSettings(SharedPreferences sharedPreferences) {
credentialsSettingsChanged(sharedPreferences, "bookmark.username");
credentialsSettingsChanged(sharedPreferences, "bookmark.password");
credentialsSettingsChanged(sharedPreferences, "bookmark.domain");
}
private void credentialsSettingsChanged(SharedPreferences sharedPreferences, String key)
{
private void credentialsSettingsChanged(
SharedPreferences sharedPreferences, String key) {
if (key.equals("bookmark.username"))
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
else if (key.equals("bookmark.password"))
{
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
else if (key.equals("bookmark.password")) {
if (sharedPreferences.getString(key, "").length() == 0)
findPreference(key).setSummary(getResources().getString(R.string.settings_password_empty));
findPreference(key).setSummary(
getResources().getString(
R.string.settings_password_empty));
else
findPreference(key).setSummary(getResources().getString(R.string.settings_password_present));
}
else if (key.equals("bookmark.domain"))
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
findPreference(key).setSummary(
getResources().getString(
R.string.settings_password_present));
} else if (key.equals("bookmark.domain"))
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
}
private void initScreenSettings(SharedPreferences sharedPreferences)
{
private void initScreenSettings(SharedPreferences sharedPreferences) {
screenSettingsChanged(sharedPreferences, "bookmark.colors");
screenSettingsChanged(sharedPreferences, "bookmark.resolution");
screenSettingsChanged(sharedPreferences, "bookmark.width");
screenSettingsChanged(sharedPreferences, "bookmark.height");
}
private void initScreenSettings3G(SharedPreferences sharedPreferences)
{
private void initScreenSettings3G(SharedPreferences sharedPreferences) {
screenSettingsChanged(sharedPreferences, "bookmark.colors_3g");
screenSettingsChanged(sharedPreferences, "bookmark.resolution_3g");
screenSettingsChanged(sharedPreferences, "bookmark.width_3g");
screenSettingsChanged(sharedPreferences, "bookmark.height_3g");
}
private void screenSettingsChanged(SharedPreferences sharedPreferences, String key)
{
// could happen during initialization because 3g and non-3g settings share this routine - just skip
private void screenSettingsChanged(SharedPreferences sharedPreferences,
String key) {
// could happen during initialization because 3g and non-3g settings
// share this routine - just skip
if (findPreference(key) == null)
return;
if (key.equals("bookmark.colors") || key.equals("bookmark.colors_3g"))
{
ListPreference listPreference = (ListPreference)findPreference(key);
if (key.equals("bookmark.colors") || key.equals("bookmark.colors_3g")) {
ListPreference listPreference = (ListPreference) findPreference(key);
listPreference.setSummary(listPreference.getEntry());
}
else if (key.equals("bookmark.resolution") || key.equals("bookmark.resolution_3g"))
{
ListPreference listPreference = (ListPreference)findPreference(key);
} else if (key.equals("bookmark.resolution")
|| key.equals("bookmark.resolution_3g")) {
ListPreference listPreference = (ListPreference) findPreference(key);
listPreference.setSummary(listPreference.getEntry());
boolean enabled = listPreference.getValue().equalsIgnoreCase(getResources().getString(R.string.resolution_custom));
if (key.equals("bookmark.resolution"))
{
boolean enabled = listPreference.getValue().equalsIgnoreCase(
getResources().getString(R.string.resolution_custom));
if (key.equals("bookmark.resolution")) {
findPreference("bookmark.width").setEnabled(enabled);
findPreference("bookmark.height").setEnabled(enabled);
}
else
{
} else {
findPreference("bookmark.width_3g").setEnabled(enabled);
findPreference("bookmark.height_3g").setEnabled(enabled);
}
}
else if (key.equals("bookmark.width") || key.equals("bookmark.width_3g"))
findPreference(key).setSummary(String.valueOf(sharedPreferences.getInt(key, 800)));
else if (key.equals("bookmark.height") || key.equals("bookmark.height_3g"))
findPreference(key).setSummary(String.valueOf(sharedPreferences.getInt(key, 600)));
} else if (key.equals("bookmark.width")
|| key.equals("bookmark.width_3g"))
findPreference(key).setSummary(
String.valueOf(sharedPreferences.getInt(key, 800)));
else if (key.equals("bookmark.height")
|| key.equals("bookmark.height_3g"))
findPreference(key).setSummary(
String.valueOf(sharedPreferences.getInt(key, 600)));
}
private void initGatewaySettings(SharedPreferences sharedPreferences)
{
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_hostname");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_port");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_username");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_password");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_domain");
}
private void initDebugSettings(SharedPreferences sharedPreferences) {
debugSettingsChanged(sharedPreferences, "bookmark.debug_level");
}
private void gatewaySettingsChanged(SharedPreferences sharedPreferences, String key)
{
if (key.equals("bookmark.gateway_hostname"))
{
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
}
else if (key.equals("bookmark.gateway_port"))
{
findPreference(key).setSummary(String.valueOf(sharedPreferences.getInt(key, 443)));
}
else if (key.equals("bookmark.gateway_username"))
{
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
}
else if (key.equals("bookmark.gateway_password"))
{
if (sharedPreferences.getString(key, "").length() == 0)
findPreference(key).setSummary(getResources().getString(R.string.settings_password_empty));
else
findPreference(key).setSummary(getResources().getString(R.string.settings_password_present));
}
else if (key.equals("bookmark.gateway_domain"))
findPreference(key).setSummary(sharedPreferences.getString(key, ""));
}
private void initGatewaySettings(SharedPreferences sharedPreferences) {
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_hostname");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_port");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_username");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_password");
gatewaySettingsChanged(sharedPreferences, "bookmark.gateway_domain");
}
private void debugSettingsChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("bookmark.debug_level")) {
int level = sharedPreferences.getInt(key, 0);
Preference pref = findPreference("bookmark.debug_level");
pref.setDefaultValue(level);
}
}
private void gatewaySettingsChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("bookmark.gateway_hostname")) {
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
} else if (key.equals("bookmark.gateway_port")) {
findPreference(key).setSummary(
String.valueOf(sharedPreferences.getInt(key, 443)));
} else if (key.equals("bookmark.gateway_username")) {
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
} else if (key.equals("bookmark.gateway_password")) {
if (sharedPreferences.getString(key, "").length() == 0)
findPreference(key).setSummary(
getResources().getString(
R.string.settings_password_empty));
else
findPreference(key).setSummary(
getResources().getString(
R.string.settings_password_present));
} else if (key.equals("bookmark.gateway_domain"))
findPreference(key)
.setSummary(sharedPreferences.getString(key, ""));
}
private boolean verifySettings(SharedPreferences sharedPreferences) {
boolean verifyFailed = false;
// perform sanity checks on settings
// Label set
// Label set
if (sharedPreferences.getString("bookmark.label", "").length() == 0)
verifyFailed = true;
// Server and port specified
if (!verifyFailed && sharedPreferences.getString("bookmark.hostname", "").length() == 0)
// Server and port specified
if (!verifyFailed
&& sharedPreferences.getString("bookmark.hostname", "")
.length() == 0)
verifyFailed = true;
// Server and port specified
// Server and port specified
if (!verifyFailed && sharedPreferences.getInt("bookmark.port", -1) <= 0)
verifyFailed = true;
@ -530,93 +570,99 @@ public class BookmarkActivity extends PreferenceActivity implements OnSharedPref
return (!verifyFailed);
}
private void finishAndResetBookmark()
{
private void finishAndResetBookmark() {
bookmark = null;
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
getPreferenceManager().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
finish();
}
@Override
public void onBackPressed()
{
public void onBackPressed() {
// only proceed if we are in the main preferences screen
if (current_preferences != PREFERENCES_BOOKMARK)
{
if (current_preferences != PREFERENCES_BOOKMARK) {
super.onBackPressed();
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
getPreferenceManager().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
return;
}
SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences();
if(!verifySettings(sharedPreferences))
{
SharedPreferences sharedPreferences = getPreferenceManager()
.getSharedPreferences();
if (!verifySettings(sharedPreferences)) {
// ask the user if he wants to cancel or continue editing
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.error_bookmark_incomplete_title)
.setMessage(R.string.error_bookmark_incomplete)
.setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finishAndResetBookmark();
}
})
.setNegativeButton(R.string.cont, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.show();
.setMessage(R.string.error_bookmark_incomplete)
.setPositiveButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
finishAndResetBookmark();
}
})
.setNegativeButton(R.string.cont,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
}
}).show();
return;
}
else
{
// ask the user if he wants to save or cancel editing if a setting has changed
if (new_bookmark || settings_changed)
{
} else {
// ask the user if he wants to save or cancel editing if a setting
// has changed
if (new_bookmark || settings_changed) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.dlg_title_save_bookmark)
.setMessage(R.string.dlg_save_bookmark)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// read shared prefs back to bookmark
bookmark.readFromSharedPreferences(getPreferenceManager().getSharedPreferences());
.setMessage(R.string.dlg_save_bookmark)
.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// read shared prefs back to bookmark
bookmark.readFromSharedPreferences(getPreferenceManager()
.getSharedPreferences());
BookmarkBaseGateway bookmarkGateway;
if(bookmark.getType() == BookmarkBase.TYPE_MANUAL)
{
bookmarkGateway = GlobalApp.getManualBookmarkGateway();
// remove any history entry for this bookmark
GlobalApp.getQuickConnectHistoryGateway().removeHistoryItem(bookmark.<ManualBookmark>get().getHostname());
}
else
{
assert false;
return;
}
BookmarkBaseGateway bookmarkGateway;
if (bookmark.getType() == BookmarkBase.TYPE_MANUAL) {
bookmarkGateway = GlobalApp
.getManualBookmarkGateway();
// remove any history entry for this
// bookmark
GlobalApp
.getQuickConnectHistoryGateway()
.removeHistoryItem(
bookmark.<ManualBookmark> get()
.getHostname());
} else {
assert false;
return;
}
// insert or update bookmark and leave activity
if(bookmark.getId() > 0)
bookmarkGateway.update(bookmark);
else
bookmarkGateway.insert(bookmark);
// insert or update bookmark and leave
// activity
if (bookmark.getId() > 0)
bookmarkGateway.update(bookmark);
else
bookmarkGateway.insert(bookmark);
finishAndResetBookmark();
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finishAndResetBookmark();
}
})
.show();
}
else
{
finishAndResetBookmark();
}
})
.setNegativeButton(R.string.no,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
finishAndResetBookmark();
}
}).show();
} else {
finishAndResetBookmark();
}
}

View File

@ -71,6 +71,8 @@ public abstract class BookmarkBaseGateway
values.put("remote_program", bookmark.getAdvancedSettings().getRemoteProgram());
values.put("work_dir", bookmark.getAdvancedSettings().getWorkDir());
values.put("debug_level", bookmark.getDebugSettings().getDebugLevel());
// add any special columns
addBookmarkSpecificColumns(bookmark, values);
@ -109,6 +111,8 @@ public abstract class BookmarkBaseGateway
values.put("remote_program", bookmark.getAdvancedSettings().getRemoteProgram());
values.put("work_dir", bookmark.getAdvancedSettings().getWorkDir());
values.put("debug_level", bookmark.getDebugSettings().getDebugLevel());
addBookmarkSpecificColumns(bookmark, values);
// update bookmark
@ -230,6 +234,9 @@ public abstract class BookmarkBaseGateway
columns.add("remote_program");
columns.add("work_dir");
// debug settings
columns.add("debug_level");
addBookmarkSpecificColumns(columns);
}
@ -290,6 +297,8 @@ public abstract class BookmarkBaseGateway
bookmark.getAdvancedSettings().setRemoteProgram(cursor.getString(cursor.getColumnIndex("remote_program")));
bookmark.getAdvancedSettings().setWorkDir(cursor.getString(cursor.getColumnIndex("work_dir")));
bookmark.getDebugSettings().setDebugLevel(cursor.getInt(cursor.getColumnIndex("debug_level")));
readBookmarkSpecificColumns(bookmark, cursor);
return bookmark;

View File

@ -22,7 +22,7 @@ import android.database.sqlite.SQLiteOpenHelper;
public class BookmarkDB extends SQLiteOpenHelper
{
private static final int DB_VERSION = 4;
private static final int DB_VERSION = 6;
private static final String DB_NAME = "bookmarks.db";
public static final String ID = BaseColumns._ID;
@ -106,7 +106,8 @@ public class BookmarkDB extends SQLiteOpenHelper
+ "security, "
+ "remote_program, "
+ "work_dir, "
+ "console_mode) "
+ "console_mode, "
+ "debug_level ) "
+ "VALUES ( "
+ "'Test Server', "
+ "'testservice.afreerdp.com', "
@ -114,7 +115,7 @@ public class BookmarkDB extends SQLiteOpenHelper
+ "'', "
+ "'', "
+ "3389, "
+ "1, 1, 2, 2, 0, 0, 0, 0, '', '', 0);";
+ "1, 1, 2, 2, 0, 0, 0, 0, '', '', 0, 0);";
db.execSQL(sqlInsertDefaultSessionEntry);
}
@ -149,6 +150,7 @@ public class BookmarkDB extends SQLiteOpenHelper
+ "remote_program TEXT, "
+ "work_dir TEXT, "
+ "console_mode INTEGER, "
+ "debug_level INTEGER DEFAULT 0, "
+ "FOREIGN KEY(screen_settings) REFERENCES tbl_screen_settings(" + ID + "), "
+ "FOREIGN KEY(performance_flags) REFERENCES tbl_performance_flags(" + ID + "), "

View File

@ -0,0 +1,15 @@
package com.freerdp.freerdpcore.utils;
public class BuildConfiguration {
public static final String WITH_ANDROID_DEBUG_MENU = "@WITH_ANDROID_DEBUG_MENU@";
public static final int FREERDP_VERSION_MAJOR = @FREERDP_VERSION_MAJOR@;
public static final int FREERDP_VERSION_MINOR = @FREERDP_VERSION_MINOR@;
public static final int FREERDP_VERSION_REVISION = @FREERDP_VERSION_REVISION@;
public static final String FREERDP_VERSION_SUFFIX = "@FREERDP_VERSION_SUFFIX@";
public static final String FREERDP_API_VERSION = "@FREERDP_API_VERSION@";
public static final String FREERDP_VERSION = "@FREERDP_VERSION@";
public static final String FREERDP_VERSION_FULL = "@FREERDP_VERSION_FULL@";
public static final String GIT_REVISION = "@GIT_REVISION@";
}

View File

@ -21,9 +21,12 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
endif()
option(WITH_DEBUG_ANDROID_JNI "Enable debug output for android jni bindings" ${DEFAULT_DEBUG_OPTION})
option(WITH_ANDROID_DEBUG_MENU "Enable debug output for android jni bindings" ${DEFAULT_DEBUG_OPTION})
option(WITH_OPENSLES "Enable sound and microphone redirection using OpenSLES" ON)
option(ANDROID_BUILD_JAVA "Automatically android java code - build type depends on CMAKE_BUILD_TYPE" ON)
option(ANDROID_BUILD_JAVA_DEBUG "Create a android debug package" ${JAVA_DEBUG_DEFAULT})
set(ANDROID_APP_TARGET_SDK 11 CACHE STRING "Application target android SDK")
set(ANDROID_APP_MIN_SDK 9 CACHE STRING "Application minimum android SDK requirement")
set(ANDROID_APP_GOOGLE_TARGET_SDK "16" CACHE STRING "Application target google SDK")