From 8cf5df20b257ef05d64ebb1f14b272c2e1848b7c Mon Sep 17 00:00:00 2001
From: tibbi <tibor@kaputa.sk>
Date: Sun, 27 Nov 2016 10:50:45 +0100
Subject: [PATCH] allow changing text gravity

---
 .../com/simplemobiletools/notes/Config.kt     |  4 +++
 .../com/simplemobiletools/notes/Constants.kt  |  6 +++++
 .../notes/MyWidgetProvider.kt                 |  2 +-
 .../notes/activities/SettingsActivity.kt      | 13 +++++++++
 .../notes/extensions/Context.kt               |  7 +++++
 .../notes/fragments/NoteFragment.kt           |  2 ++
 app/src/main/res/layout/activity_settings.xml | 27 +++++++++++++++++++
 app/src/main/res/layout/widget.xml            |  2 +-
 app/src/main/res/values-de/strings.xml        |  4 +++
 app/src/main/res/values-es/strings.xml        |  4 +++
 app/src/main/res/values-it/strings.xml        |  4 +++
 app/src/main/res/values-ja/strings.xml        |  4 +++
 app/src/main/res/values-pt-rPT/strings.xml    |  4 +++
 app/src/main/res/values-sv/strings.xml        |  4 +++
 app/src/main/res/values/array.xml             |  6 +++++
 app/src/main/res/values/strings.xml           |  6 ++++-
 16 files changed, 96 insertions(+), 3 deletions(-)

diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/Config.kt b/app/src/main/kotlin/com/simplemobiletools/notes/Config.kt
index 4833bbeb..ef950783 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/Config.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/Config.kt
@@ -26,6 +26,10 @@ class Config(context: Context) {
         get() = mPrefs.getInt(FONT_SIZE, FONT_SIZE_MEDIUM)
         set(size) = mPrefs.edit().putInt(FONT_SIZE, size).apply()
 
+    var gravity: Int
+        get() = mPrefs.getInt(GRAVITY, GRAVITY_LEFT)
+        set(size) = mPrefs.edit().putInt(GRAVITY, size).apply()
+
     var currentNoteId: Int
         get() = mPrefs.getInt(CURRENT_NOTE_ID, 1)
         set(id) = mPrefs.edit().putInt(CURRENT_NOTE_ID, id).apply()
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/notes/Constants.kt
index d32cd431..e8d97b86 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/Constants.kt
@@ -10,9 +10,15 @@ val IS_DARK_THEME = "is_dark_theme"
 val CURRENT_NOTE_ID = "current_note_id"
 val WIDGET_NOTE_ID = "widget_note_id"
 val FONT_SIZE = "font_size"
+val GRAVITY = "gravity"
 val WIDGET_BG_COLOR = "widget_bg_color"
 val WIDGET_TEXT_COLOR = "widget_text_color"
 
+// gravity
+val GRAVITY_LEFT = 0
+val GRAVITY_CENTER = 1
+val GRAVITY_RIGHT = 2
+
 // font sizes
 val FONT_SIZE_SMALL = 0
 val FONT_SIZE_MEDIUM = 1
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/notes/MyWidgetProvider.kt
index 1512fa37..5d798333 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/MyWidgetProvider.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/MyWidgetProvider.kt
@@ -54,7 +54,7 @@ class MyWidgetProvider : AppWidgetProvider() {
     private fun updateWidget(widgetManager: AppWidgetManager, widgetId: Int, remoteViews: RemoteViews) {
         val widgetNoteId = mPrefs.getInt(WIDGET_NOTE_ID, 1)
         val note = mDb.getNote(widgetNoteId)
-        remoteViews.setTextViewText(R.id.notes_view, if (note != null) note.value else "")
+        remoteViews.setTextViewText(R.id.notes_view, note?.value ?: "")
         widgetManager.updateAppWidget(widgetId, remoteViews)
     }
 }
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt
index 4e4d9ead..4acd808a 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt
@@ -19,6 +19,7 @@ class SettingsActivity : SimpleActivity() {
         setupDarkTheme()
         setupFontSize()
         setupWidgetNote()
+        setupGravity()
     }
 
     private fun setupDarkTheme() {
@@ -66,6 +67,18 @@ class SettingsActivity : SimpleActivity() {
         }
     }
 
+    private fun setupGravity() {
+        settings_gravity.setSelection(config.gravity)
+        settings_gravity.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
+            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+                config.gravity = settings_gravity.selectedItemPosition
+            }
+
+            override fun onNothingSelected(parent: AdapterView<*>?) {
+            }
+        }
+    }
+
     private fun getNoteIndexWithId(id: Int, notes: List<Note>): Int {
         for (i in 0..notes.count() - 1) {
             if (notes[i].id == id) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/notes/extensions/Context.kt
index 2512bc33..e3eca940 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/extensions/Context.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/extensions/Context.kt
@@ -5,6 +5,7 @@ import android.content.ComponentName
 import android.content.Context
 import android.content.Intent
 import android.util.TypedValue
+import android.view.Gravity
 import com.simplemobiletools.notes.*
 
 fun Context.getTextSize() =
@@ -15,6 +16,12 @@ fun Context.getTextSize() =
             else -> resources.getDimension(R.dimen.medium_text_size)
         }
 
+fun Context.getTextGravity() =
+        when (Config.newInstance(this).gravity) {
+            GRAVITY_CENTER -> Gravity.CENTER_HORIZONTAL
+            GRAVITY_RIGHT -> Gravity.RIGHT
+            else -> Gravity.LEFT
+        }
 
 fun Context.updateWidget() {
     val widgetManager = AppWidgetManager.getInstance(this)
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt b/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt
index 069f6f25..4655a6e1 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt
@@ -10,6 +10,7 @@ import com.simplemobiletools.filepicker.extensions.value
 import com.simplemobiletools.notes.NOTE_ID
 import com.simplemobiletools.notes.R
 import com.simplemobiletools.notes.databases.DBHelper
+import com.simplemobiletools.notes.extensions.getTextGravity
 import com.simplemobiletools.notes.extensions.getTextSize
 import com.simplemobiletools.notes.extensions.updateWidget
 import com.simplemobiletools.notes.models.Note
@@ -44,6 +45,7 @@ class NoteFragment : Fragment() {
     override fun onResume() {
         super.onResume()
         view.notes_view.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getTextSize())
+        view.notes_view.gravity = context.getTextGravity()
     }
 
     override fun onPause() {
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 141b8f4b..ffb76906 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -64,6 +64,33 @@
 
         </RelativeLayout>
 
+        <RelativeLayout
+            android:id="@+id/settings_gravity_holder"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/normal_padding"
+            android:paddingBottom="@dimen/activity_margin"
+            android:paddingLeft="@dimen/activity_margin"
+            android:paddingRight="@dimen/normal_padding"
+            android:paddingTop="@dimen/activity_margin">
+
+            <TextView
+                android:id="@+id/settings_gravity_label"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:paddingLeft="@dimen/normal_padding"
+                android:text="@string/gravity"/>
+
+            <android.support.v7.widget.AppCompatSpinner
+                android:id="@+id/settings_gravity"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:entries="@array/gravity"/>
+
+        </RelativeLayout>
+
         <RelativeLayout
             android:id="@+id/settings_widget_note_holder"
             android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/widget.xml b/app/src/main/res/layout/widget.xml
index b87f8095..324bac1f 100644
--- a/app/src/main/res/layout/widget.xml
+++ b/app/src/main/res/layout/widget.xml
@@ -10,7 +10,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@null"
-        android:gravity="top"
+        android:gravity="start"
         android:padding="@dimen/activity_margin"/>
 
 </RelativeLayout>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 027564dd..0587b795 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -30,6 +30,10 @@
     <string name="normal">Normal</string>
     <string name="large">Groß</string>
     <string name="extra_large">Sehr groß</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">Über</string>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 5b62595f..fd314382 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -30,6 +30,10 @@
     <string name="normal">Normal</string>
     <string name="large">Grande</string>
     <string name="extra_large">Enorme</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">Acerca de Simple Notes</string>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 3ea5993a..46aa3d1a 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -30,6 +30,10 @@
     <string name="normal">Normal</string>
     <string name="large">Large</string>
     <string name="extra_large">Extra Large</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">Informazioni</string>
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 4ed141ed..0b4768e0 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -30,6 +30,10 @@
     <string name="normal">通常</string>
     <string name="large">大</string>
     <string name="extra_large">特大</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">アプリについて</string>
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 0a183497..3a4e0707 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -30,6 +30,10 @@
     <string name="normal">Normal</string>
     <string name="large">Grande</string>
     <string name="extra_large">Muito grande</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">Acerca</string>
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index af65fbdf..5c1fffef 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -30,6 +30,10 @@
     <string name="normal">Normal</string>
     <string name="large">Large</string>
     <string name="extra_large">Extra Large</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">Om</string>
diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml
index b1c8ff1a..f861147c 100644
--- a/app/src/main/res/values/array.xml
+++ b/app/src/main/res/values/array.xml
@@ -6,4 +6,10 @@
         <item>@string/large</item>
         <item>@string/extra_large</item>
     </string-array>
+
+    <string-array name="gravity" translatable="false">
+        <item>@string/left</item>
+        <item>@string/center</item>
+        <item>@string/right</item>
+    </string-array>
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 32361725..c16a69db 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -24,12 +24,16 @@
     <!-- Settings -->
     <string name="settings">Settings</string>
     <string name="dark_theme">Dark theme</string>
-    <string name="note_font_size">Note font size</string>
     <string name="widget_note">Note used in widget</string>
+    <string name="note_font_size">Note font size</string>
     <string name="small">Small</string>
     <string name="normal">Normal</string>
     <string name="large">Large</string>
     <string name="extra_large">Extra Large</string>
+    <string name="gravity">Gravity</string>
+    <string name="left">Left</string>
+    <string name="center">Center</string>
+    <string name="right">Right</string>
 
     <!-- About -->
     <string name="about">About</string>