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 30d75c75..8cbd8e16 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/activities/SettingsActivity.kt
@@ -35,6 +35,7 @@ class SettingsActivity : SimpleActivity() {
setupClickableLinks()
setupMonospacedFont()
setupShowKeyboard()
+ setupShowWordCount()
setupFontSize()
setupGravity()
setupWidgetNote()
@@ -90,6 +91,14 @@ class SettingsActivity : SimpleActivity() {
}
}
+ private fun setupShowWordCount() {
+ settings_show_word_count.isChecked = config.showWordCount
+ settings_show_word_count_holder.setOnClickListener {
+ settings_show_word_count.toggle()
+ config.showWordCount = settings_show_word_count.isChecked
+ }
+ }
+
private fun setupFontSize() {
settings_font_size.text = getFontSizeText()
settings_font_size_holder.setOnClickListener {
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 104e5588..c5edd22a 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt
@@ -3,6 +3,8 @@ package com.simplemobiletools.notes.fragments
import android.graphics.Typeface
import android.os.Bundle
import android.support.v4.app.Fragment
+import android.text.Editable
+import android.text.TextWatcher
import android.text.method.LinkMovementMethod
import android.text.util.Linkify
import android.util.TypedValue
@@ -95,6 +97,7 @@ class NoteFragment : Fragment() {
super.onResume()
val config = context!!.config
+
view.notes_view.apply {
typeface = if (config.monospacedFont) Typeface.MONOSPACE else Typeface.DEFAULT
@@ -113,10 +116,45 @@ class NoteFragment : Fragment() {
setSelection(if (config.placeCursorToEnd) text.length else 0)
}
}
+
+ if (config.showWordCount) {
+ view.notes_view.addTextChangedListener(textWatcher)
+ view.notes_counter.visibility = View.VISIBLE
+ setWordCounter(view.notes_view.text)
+ }
+ else {
+ view.notes_counter.visibility = View.GONE
+ }
}
override fun onPause() {
super.onPause()
saveText()
+
+ removeTextWatcher()
+ }
+
+ private fun removeTextWatcher() {
+ //Avoid memory leak
+ view.notes_view.removeTextChangedListener(textWatcher)
+ }
+
+ private fun setWordCounter(text: Editable) {
+ //Replace new lines with space
+ val wordArray = text.toString().replace("\n", " ").split(" ")
+ //Count only items which are not empty
+ notes_counter.text = wordArray.count { it.isNotEmpty() }.toString()
+ }
+
+ private var textWatcher: TextWatcher = object : TextWatcher {
+ override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
+ }
+
+ override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
+ }
+
+ override fun afterTextChanged(editable: Editable) {
+ setWordCounter(editable)
+ }
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Config.kt
index 97c0dda4..25bc327e 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Config.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Config.kt
@@ -24,6 +24,10 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(SHOW_KEYBOARD, true)
set(showKeyboard) = prefs.edit().putBoolean(SHOW_KEYBOARD, showKeyboard).apply()
+ var showWordCount: Boolean
+ get() = prefs.getBoolean(SHOW_WORDCOUNT, false)
+ set(showWordCount) = prefs.edit().putBoolean(SHOW_WORDCOUNT, showWordCount).apply()
+
var fontSize: Int
get() = prefs.getInt(FONT_SIZE, FONT_SIZE_MEDIUM)
set(size) = prefs.edit().putInt(FONT_SIZE, size).apply()
diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Constants.kt
index 9c5d64f9..d147b8a9 100644
--- a/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/notes/helpers/Constants.kt
@@ -10,6 +10,7 @@ val CLICKABLE_LINKS = "clickable_links"
val WIDGET_NOTE_ID = "widget_note_id"
val MONOSPACED_FONT = "monospaced_font"
val SHOW_KEYBOARD = "show_keyboard"
+val SHOW_WORDCOUNT = "show_word_count"
val FONT_SIZE = "font_size"
val GRAVITY = "gravity"
val CURSOR_PLACEMENT = "cursor_placement"
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index c5a6dc67..d9348b05 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -159,6 +159,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 9aafc561..8ba59260 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -32,6 +32,7 @@
Platziere Cursor am Ende der Notiz
Benutze Monospace Schrift
Zeige Tastatur beim Start
+ Zeige Wort Zähler
Ausrichtung
Linksbündig
Zentriert
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 508be5da..8f4cd7c0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -32,6 +32,7 @@
Place cursor to the end of note
Use monospaced font
Show keyboard on startup
+ Show word counter
Alignment
Left
Center