From 8d59a165b36198f9475fa6271e7fb33b6fa4a8fd Mon Sep 17 00:00:00 2001 From: Brendan Szymanski Date: Fri, 30 Nov 2018 20:46:37 -0500 Subject: [PATCH] Initial settings configuration --- app/build.gradle | 3 +- app/src/main/AndroidManifest.xml | 11 ++- .../main/java/com/opus/abacus/MainActivity.kt | 5 +- .../java/com/opus/abacus/SettingsActivity.kt | 66 +++++++++++++++++ app/src/main/res/values/strings.xml | 74 ++++++++++++++++++- app/src/main/res/values/styles.xml | 7 +- app/src/main/res/xml/pref_settings.xml | 22 ++++++ 7 files changed, 181 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/opus/abacus/SettingsActivity.kt create mode 100644 app/src/main/res/xml/pref_settings.xml diff --git a/app/build.gradle b/app/build.gradle index 9139dfe..9c1bca9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,5 +32,6 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' - implementation "android.arch.lifecycle:extensions:1.1.1" + implementation 'android.arch.lifecycle:extensions:1.1.1' + implementation 'androidx.preference:preference:1.1.0-alpha01' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 85030a5..3314c63 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,13 +12,22 @@ + android:theme="@style/AppTheme.NoActionBar"> + + + \ No newline at end of file diff --git a/app/src/main/java/com/opus/abacus/MainActivity.kt b/app/src/main/java/com/opus/abacus/MainActivity.kt index 3de9c5b..bb009d0 100644 --- a/app/src/main/java/com/opus/abacus/MainActivity.kt +++ b/app/src/main/java/com/opus/abacus/MainActivity.kt @@ -6,6 +6,7 @@ package com.opus.abacus +import android.content.Intent import android.os.Bundle import android.view.MenuItem import androidx.appcompat.app.AppCompatActivity @@ -56,7 +57,9 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte } R.id.nav_settings -> { - + val settingsActivity = Intent(this, SettingsActivity::class.java) + startActivity(settingsActivity) + return true } } diff --git a/app/src/main/java/com/opus/abacus/SettingsActivity.kt b/app/src/main/java/com/opus/abacus/SettingsActivity.kt new file mode 100644 index 0000000..ff35bf7 --- /dev/null +++ b/app/src/main/java/com/opus/abacus/SettingsActivity.kt @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018 Abacus Project + * Licensed under GPLv3 or any later version + * Refer to the LICENSE file included in the root directory + */ + +package com.opus.abacus + +import android.os.Bundle +import android.view.MenuItem +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.NavUtils +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceFragmentCompat + + +class SettingsActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + supportActionBar?.setDisplayHomeAsUpEnabled(true) + + if (supportFragmentManager.findFragmentById(android.R.id.content) == null) { + supportFragmentManager.beginTransaction() + .add(android.R.id.content, SettingsFragment()).commit() + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + val id = item.itemId + if (id == android.R.id.home) { + NavUtils.navigateUpFromSameTask(this) + } + return super.onOptionsItemSelected(item) + } + + class SettingsFragment : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.pref_settings) + + val significantDigitsEditTextPreference = + this.findPreference("pref_significant_digits") as EditTextPreference + significantDigitsEditTextPreference.setOnPreferenceChangeListener { _, newValue -> + try { + if (newValue.toString().toInt() < MIN_VALUE) { + significantDigitsEditTextPreference.text = MIN_VALUE.toString() + return@setOnPreferenceChangeListener false + } + if (newValue.toString().toInt() > MAX_VALUE) { + significantDigitsEditTextPreference.text = MAX_VALUE.toString() + return@setOnPreferenceChangeListener false + } + } catch (exception: NumberFormatException) { + return@setOnPreferenceChangeListener false + } + true + } + } + + companion object { + const val MIN_VALUE = 1 + const val MAX_VALUE = 23 + } + } +} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 227ed64..ea78c51 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,6 +38,76 @@ acos atan - - Hello blank fragment + + Settings + + + General + + Enable social recommendations + Recommendations for people to contact based on your message + history + + + Display name + John Smith + + Add friends to messages + + Always + When possible + Never + + + 1 + 0 + -1 + + + + Data & sync + + Sync frequency + + 15 minutes + 30 minutes + 1 hour + 3 hours + 6 hours + Never + + + 15 + 30 + 60 + 180 + 360 + -1 + + + + Entry 1 + Entry 2 + Entry 3 + + + + 1 + 2 + 3 + + + + + System sync settings + + + Notifications + + New message notifications + + Ringtone + Silent + + Vibrate diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index aeb194a..703e5b0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -7,15 +7,18 @@ - +