From 54bcd443ec49908b4e1df8599ef52cdab443e291 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 24 Oct 2016 23:19:26 +0200 Subject: [PATCH] mark the currently selected Note in the Open Note dialog --- .../com/simplemobiletools/notes/Config.java | 12 ++--- .../simplemobiletools/notes/Constants.java | 2 +- .../notes/activities/MainActivity.java | 36 ++++++-------- .../notes/views/dialogs/OpenNoteDialog.kt | 48 +++++++++++++++++++ .../notes/views/dialogs/WidgetNoteDialog.kt | 6 +-- ...widget_note.xml => dialog_radio_group.xml} | 0 6 files changed, 73 insertions(+), 31 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/OpenNoteDialog.kt rename app/src/main/res/layout/{dialog_change_widget_note.xml => dialog_radio_group.xml} (100%) diff --git a/app/src/main/java/com/simplemobiletools/notes/Config.java b/app/src/main/java/com/simplemobiletools/notes/Config.java index 5fc83ae3..5b15452a 100644 --- a/app/src/main/java/com/simplemobiletools/notes/Config.java +++ b/app/src/main/java/com/simplemobiletools/notes/Config.java @@ -38,19 +38,19 @@ public class Config { mPrefs.edit().putInt(Constants.FONT_SIZE, size).apply(); } - public int getCurrentNoteIndex() { - return mPrefs.getInt(Constants.CURRENT_NOTE_INDEX, 0); + public int getCurrentNoteId() { + return mPrefs.getInt(Constants.CURRENT_NOTE_ID, 0); } - public void setCurrentNoteIndex(int index) { - mPrefs.edit().putInt(Constants.CURRENT_NOTE_INDEX, index).apply(); + public void setCurrentNoteId(int id) { + mPrefs.edit().putInt(Constants.CURRENT_NOTE_ID, id).apply(); } - public int getWidgetNoteIndex() { + public int getWidgetNoteId() { return mPrefs.getInt(Constants.WIDGET_NOTE_ID, 1); } - public void setWidgetNoteIndex(int id) { + public void setWidgetNoteId(int id) { mPrefs.edit().putInt(Constants.WIDGET_NOTE_ID, id).apply(); } } diff --git a/app/src/main/java/com/simplemobiletools/notes/Constants.java b/app/src/main/java/com/simplemobiletools/notes/Constants.java index c531b9e2..42b65522 100644 --- a/app/src/main/java/com/simplemobiletools/notes/Constants.java +++ b/app/src/main/java/com/simplemobiletools/notes/Constants.java @@ -7,7 +7,7 @@ public class Constants { public static final String PREFS_KEY = "Notes"; public static final String IS_FIRST_RUN = "is_first_run"; public static final String IS_DARK_THEME = "is_dark_theme"; - public static final String CURRENT_NOTE_INDEX = "current_note_index"; + public static final String CURRENT_NOTE_ID = "current_note_id"; public static final String WIDGET_NOTE_ID = "widget_note_id"; public static final String FONT_SIZE = "font_size"; public static final String WIDGET_BG_COLOR = "widget_bg_color"; diff --git a/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java index e000b670..df3bd3b6 100644 --- a/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java @@ -19,6 +19,7 @@ import com.simplemobiletools.notes.R; import com.simplemobiletools.notes.Utils; import com.simplemobiletools.notes.databases.DBHelper; import com.simplemobiletools.notes.models.Note; +import com.simplemobiletools.notes.views.dialogs.OpenNoteDialog; import com.simplemobiletools.notes.views.dialogs.WidgetNoteDialog; import java.util.List; @@ -27,7 +28,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -public class MainActivity extends SimpleActivity { +public class MainActivity extends SimpleActivity implements OpenNoteDialog.OpenNoteListener { @BindView(R.id.notes_view) EditText mNotesView; @BindView(R.id.current_note_label) TextView mCurrNoteLabel; @BindView(R.id.current_note_title) TextView mCurrNoteTitle; @@ -44,7 +45,7 @@ public class MainActivity extends SimpleActivity { mDb = DBHelper.newInstance(getApplicationContext()); mNotes = mDb.getNotes(); - updateSelectedNote(mConfig.getCurrentNoteIndex()); + updateSelectedNote(mConfig.getCurrentNoteId()); } @Override @@ -111,10 +112,13 @@ public class MainActivity extends SimpleActivity { new WidgetNoteDialog(this); } - private void updateSelectedNote(int index) { + private void updateSelectedNote(int id) { saveText(); - mConfig.setCurrentNoteIndex(index); - mCurrentNote = mNotes.get(index); + mCurrentNote = mDb.getNote(id); + if (mCurrentNote == null) + return; + + mConfig.setCurrentNoteId(id); mNotesView.setText(mCurrentNote.getValue()); mCurrNoteTitle.setText(mCurrentNote.getTitle()); @@ -199,22 +203,7 @@ public class MainActivity extends SimpleActivity { } private void displayOpenNoteDialog() { - final AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(getResources().getString(R.string.pick_a_note)); - - final int cnt = mNotes.size(); - String[] notes = new String[cnt]; - for (int i = 0; i < cnt; i++) { - notes[i] = mNotes.get(i).getTitle(); - } - - builder.setItems(notes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - updateSelectedNote(which); - } - }); - builder.show(); + new OpenNoteDialog(this); } private void saveText() { @@ -258,4 +247,9 @@ public class MainActivity extends SimpleActivity { final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mNotesView.getWindowToken(), 0); } + + @Override + public void noteSelected(int id) { + updateSelectedNote(id); + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/OpenNoteDialog.kt b/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/OpenNoteDialog.kt new file mode 100644 index 00000000..e2ae96fd --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/OpenNoteDialog.kt @@ -0,0 +1,48 @@ +package com.simplemobiletools.notes.views.dialogs + +import android.app.Activity +import android.app.AlertDialog +import android.view.ViewGroup +import android.widget.RadioButton +import android.widget.RadioGroup +import com.simplemobiletools.notes.Config +import com.simplemobiletools.notes.R +import com.simplemobiletools.notes.databases.DBHelper + +class OpenNoteDialog(val activity: Activity) : AlertDialog.Builder(activity), RadioGroup.OnCheckedChangeListener { + val dialog: AlertDialog? + + init { + val config = Config.newInstance(context) + val view = activity.layoutInflater.inflate(R.layout.dialog_radio_group, null) as RadioGroup + view.setOnCheckedChangeListener(this) + + val db = DBHelper.newInstance(context) + val notes = db.notes + notes.forEach { + val radioButton = activity.layoutInflater.inflate(R.layout.radio_button, null) as RadioButton + radioButton.apply { + text = it.title + isChecked = it.id == config.currentNoteId + id = it.id + } + view.addView(radioButton, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) + } + + dialog = AlertDialog.Builder(activity) + .setTitle(activity.resources.getString(R.string.pick_a_note)) + .setView(view) + .create() + + dialog?.show() + } + + override fun onCheckedChanged(group: RadioGroup, checkedId: Int) { + (activity as OpenNoteListener).noteSelected(checkedId) + dialog?.dismiss() + } + + interface OpenNoteListener { + fun noteSelected(id: Int) + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/WidgetNoteDialog.kt b/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/WidgetNoteDialog.kt index 10d9041c..cf20f893 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/WidgetNoteDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/views/dialogs/WidgetNoteDialog.kt @@ -15,7 +15,7 @@ class WidgetNoteDialog(val activity: Activity) : AlertDialog.Builder(activity), init { mConfig = Config.newInstance(context) - val view = activity.layoutInflater.inflate(R.layout.dialog_change_widget_note, null) as RadioGroup + val view = activity.layoutInflater.inflate(R.layout.dialog_radio_group, null) as RadioGroup view.setOnCheckedChangeListener(this) val db = DBHelper.newInstance(context) @@ -24,7 +24,7 @@ class WidgetNoteDialog(val activity: Activity) : AlertDialog.Builder(activity), val radioButton = activity.layoutInflater.inflate(R.layout.radio_button, null) as RadioButton radioButton.apply { text = it.title - isChecked = it.id == mConfig.widgetNoteIndex + isChecked = it.id == mConfig.widgetNoteId id = it.id } view.addView(radioButton, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) @@ -39,7 +39,7 @@ class WidgetNoteDialog(val activity: Activity) : AlertDialog.Builder(activity), } override fun onCheckedChanged(group: RadioGroup, checkedId: Int) { - mConfig.widgetNoteIndex = checkedId + mConfig.widgetNoteId = checkedId dialog?.dismiss() } } diff --git a/app/src/main/res/layout/dialog_change_widget_note.xml b/app/src/main/res/layout/dialog_radio_group.xml similarity index 100% rename from app/src/main/res/layout/dialog_change_widget_note.xml rename to app/src/main/res/layout/dialog_radio_group.xml