mvp/injection: Applies MVP and DI patterns to SettingsFragment
- Introduce the SettingsService interface. Its implementation is
the native Android SharePreferences mecanism. Dependency inversion allows
to respect the best practices in terms of separation of concerns.
- LocalService has been adapted to fit the new architecture patterns
but it will be refactored more deeply in a next patch.
Change-Id: Iff9cdc640f2dd6ae2467236564e9d35c3a4d2ca9
Tuleap: #1304
diff --git a/ring-android/app/src/main/res/layout/frag_settings.xml b/ring-android/app/src/main/res/layout/frag_settings.xml
new file mode 100644
index 0000000..16ccef4
--- /dev/null
+++ b/ring-android/app/src/main/res/layout/frag_settings.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Copyright (c) 2016 Savoir-faire Linux Inc.
+
+Author: Thibault Wittemberg <thibault.wittemberg@savoirfairelinux.com>
+
+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; either version 3 of the License, or
+(at your option) any later version.
+
+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, see <http://www.gnu.org/licenses/>.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="@dimen/padding_medium">
+
+ <!-- Network settings -->
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="@string/pref_category_network"
+ android:textColor="@color/color_primary_dark"
+ android:textSize="18sp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="8dp"
+ android:weightSum="1">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start"
+ android:src="@drawable/ic_perm_data_setting_black_24dp"
+ android:contentDescription="@string/pref_mobileData_summary" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.6"
+ android:orientation="vertical">
+
+ <TextView
+ style="@style/ListPrimary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:lines="1"
+ android:text="@string/pref_mobileData_title" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_mobileData_summary" />
+
+ </LinearLayout>
+
+ <Switch
+ android:id="@+id/settings_mobile_data"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2"
+ android:checked="false" />
+
+ </LinearLayout>
+
+ <!-- Contacts settings -->
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="@string/pref_category_contacts"
+ android:textColor="@color/color_primary_dark"
+ android:textSize="18sp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="8dp"
+ android:weightSum="1">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start"
+ android:src="@drawable/ic_group_black"
+ android:contentDescription="@string/pref_systemContacts_summary" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.6"
+ android:orientation="vertical">
+
+ <TextView
+ style="@style/ListPrimary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:lines="1"
+ android:text="@string/pref_systemContacts_title" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_systemContacts_summary" />
+
+ </LinearLayout>
+
+ <Switch
+ android:id="@+id/settings_contacts"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2"
+ android:checked="false" />
+
+ </LinearLayout>
+
+ <!-- System settings -->
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="@string/pref_category_system"
+ android:textColor="@color/color_primary_dark"
+ android:textSize="18sp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="8dp"
+ android:weightSum="1">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start"
+ android:src="@drawable/ic_dialpad_black"
+ android:contentDescription="@string/pref_systemDialer_summary" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.6"
+ android:orientation="vertical">
+
+ <TextView
+ style="@style/ListPrimary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:lines="1"
+ android:ellipsize="end"
+ android:text="@string/pref_systemDialer_title" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_systemDialer_summary" />
+
+ </LinearLayout>
+
+ <Switch
+ android:id="@+id/settings_place_call"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2"
+ android:checked="false" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="8dp"
+ android:weightSum="1">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2">
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start"
+ android:src="@drawable/ic_android_black"
+ android:contentDescription="@string/pref_startOnBoot_summary" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.6"
+ android:orientation="vertical">
+
+ <TextView
+ style="@style/ListPrimary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:lines="1"
+ android:ellipsize="end"
+ android:text="@string/pref_startOnBoot_title" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_startOnBoot_summary" />
+
+ </LinearLayout>
+
+ <Switch
+ android:id="@+id/settings_startup"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="0.2"
+ android:checked="false" />
+
+ </LinearLayout>
+
+ <!-- Privacy -->
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="@string/pref_category_privacy"
+ android:textColor="@color/color_primary_dark"
+ android:textSize="18sp" />
+
+ <LinearLayout
+ android:id="@+id/settings_clear_history"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/selectableItemBackground"
+ android:padding="8dp"
+ android:orientation="vertical">
+
+ <TextView
+ style="@style/ListPrimary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:lines="1"
+ android:ellipsize="end"
+ android:text="@string/pref_clearHistory_title" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/pref_clearHistory_summary" />
+
+ </LinearLayout>
+
+ </LinearLayout>
+</ScrollView>
diff --git a/ring-android/app/src/main/res/xml/preferences.xml b/ring-android/app/src/main/res/xml/preferences.xml
deleted file mode 100644
index 17896ed..0000000
--- a/ring-android/app/src/main/res/xml/preferences.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-Copyright (c) 2016 Savoir-faire Linux Inc.
-
-Author: Adrien Beraud <adrien.beraud@savoirfairelinux.com>
-
-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; either version 3 of the License, or
-(at your option) any later version.
-
-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, see <http://www.gnu.org/licenses/>.
--->
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
- <android.support.v7.preference.PreferenceCategory android:title="@string/pref_category_network">
- <android.support.v14.preference.SwitchPreference
- android:defaultValue="false"
- android:icon="@drawable/ic_perm_data_setting_black_24dp"
- android:key="@string/pref_mobileData_key"
- android:summary="@string/pref_mobileData_summary"
- android:title="@string/pref_mobileData_title" />
- </android.support.v7.preference.PreferenceCategory>
-
- <android.support.v7.preference.PreferenceCategory android:title="@string/pref_category_contacts">
- <android.support.v14.preference.SwitchPreference
- android:defaultValue="true"
- android:icon="@drawable/ic_group_black"
- android:key="@string/pref_systemContacts_key"
- android:summary="@string/pref_systemContacts_summary"
- android:title="@string/pref_systemContacts_title" />
-
- </android.support.v7.preference.PreferenceCategory>
- <android.support.v7.preference.PreferenceCategory android:title="@string/pref_category_system">
-
- <android.support.v14.preference.SwitchPreference
- android:defaultValue="false"
- android:icon="@drawable/ic_dialpad_black"
- android:key="@string/pref_systemDialer_key"
- android:summary="@string/pref_systemDialer_summary"
- android:title="@string/pref_systemDialer_title" />
-
-
- <android.support.v14.preference.SwitchPreference
- android:defaultValue="true"
- android:icon="@drawable/ic_android_black"
- android:key="@string/pref_startOnBoot_key"
- android:summary="@string/pref_startOnBoot_summary"
- android:title="@string/pref_startOnBoot_title" />
-
- </android.support.v7.preference.PreferenceCategory>
-
- <android.support.v7.preference.PreferenceCategory android:title="@string/pref_category_privacy">
- <Preference
- android:key="@string/pref_clearHistory_key"
- android:summary="@string/pref_clearHistory_summary"
- android:title="@string/pref_clearHistory_title" />
- </android.support.v7.preference.PreferenceCategory>
-
-</android.support.v7.preference.PreferenceScreen>
\ No newline at end of file