diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt index c621c482..21b68145 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt @@ -269,8 +269,8 @@ class MainActivity : SimpleActivity() { } private fun getWantedNoteIndex(): Int { - var wantedNoteId = intent.getIntExtra(OPEN_NOTE_ID, -1) - if (wantedNoteId == -1) { + var wantedNoteId = intent.getLongExtra(OPEN_NOTE_ID, -1) + if (wantedNoteId == -1L) { wantedNoteId = config.currentNoteId } return getNoteIndexWithId(wantedNoteId) @@ -289,7 +289,7 @@ class MainActivity : SimpleActivity() { } } - private fun updateSelectedNote(id: Int) { + private fun updateSelectedNote(id: Long) { config.currentNoteId = id val index = getNoteIndexWithId(id) view_pager.currentItem = index @@ -298,14 +298,14 @@ class MainActivity : SimpleActivity() { private fun displayNewNoteDialog(value: String = "") { NewNoteDialog(this, dbHelper) { - val newNote = Note(0, it, value, TYPE_NOTE) + val newNote = Note(null, it, value, TYPE_NOTE) addNewNote(newNote) } } private fun addNewNote(note: Note) { Thread { - val id = notesDB.insertOrUpdate(note).toInt() + val id = notesDB.insertOrUpdate(note) mNotes = notesDB.getNotes().toMutableList() as ArrayList showSaveButton = false runOnUiThread { @@ -386,10 +386,11 @@ class MainActivity : SimpleActivity() { private fun openPath(path: String) { openFile(path, false) { var title = path.getFilenameFromPath() - if (dbHelper.doesNoteTitleExist(title)) + if (dbHelper.doesNoteTitleExist(title)) { title += " (file)" + } - val note = Note(0, title, "", TYPE_NOTE, path) + val note = Note(null, title, "", TYPE_NOTE, path) addNewNote(note) } } @@ -406,16 +407,11 @@ class MainActivity : SimpleActivity() { FilePickerDialog(this, pickFile = false, canAddShowHiddenButton = true) { openFolder(it) { ImportFolderDialog(this, it.path) { - val noteId = it NotesHelper(this).getNotes { mNotes = it showSaveButton = false invalidateOptionsMenu() initViewPager() - updateSelectedNote(noteId) - view_pager.onGlobalLayout { - mAdapter?.focusEditText(getNoteIndexWithId(noteId)) - } } } } @@ -623,7 +619,7 @@ class MainActivity : SimpleActivity() { mAdapter?.redo(view_pager.currentItem) } - private fun getNoteIndexWithId(id: Int): Int { + private fun getNoteIndexWithId(id: Long): Int { for (i in 0 until mNotes.count()) { if (mNotes[i].id == id) { mCurrentNote = mNotes[i] diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/WidgetConfigureActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/WidgetConfigureActivity.kt index 9b1cd5fc..972f7b74 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/WidgetConfigureActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/WidgetConfigureActivity.kt @@ -92,17 +92,17 @@ class WidgetConfigureActivity : SimpleActivity() { private fun showNoteSelector() { val items = ArrayList() mNotes.forEach { - items.add(RadioItem(it.id!!, it.title)) + items.add(RadioItem(it.id!!.toInt(), it.title)) } RadioGroupDialog(this, items, mCurrentNoteId) { val selectedId = it as Int - updateCurrentNote(mNotes.first { it.id == selectedId }) + updateCurrentNote(mNotes.first { it.id!!.toInt() == selectedId }) } } private fun updateCurrentNote(note: Note) { - mCurrentNoteId = note.id!! + mCurrentNoteId = note.id!!.toInt() notes_picker_value.text = note.title val sampleValue = if (note.value.isEmpty() || mIsCustomizingColors) getString(R.string.widget_config) else note.value notes_view.text = sampleValue diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/NotesPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/NotesPagerAdapter.kt index 4b47bd3c..fcc4dc23 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/NotesPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/NotesPagerAdapter.kt @@ -18,7 +18,7 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List, val activity override fun getItem(position: Int): NoteFragment { val bundle = Bundle() val id = notes[position].id - bundle.putInt(NOTE_ID, id!!) + bundle.putInt(NOTE_ID, id!!.toInt()) if (fragments.containsKey(position)) { return fragments[position]!! diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/databases/NotesDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/databases/NotesDatabase.kt index 49619714..200ddcc1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/databases/NotesDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/databases/NotesDatabase.kt @@ -51,7 +51,7 @@ abstract class NotesDatabase : RoomDatabase() { private fun insertFirstNote(context: Context) { Executors.newSingleThreadExecutor().execute { val generalNote = context.resources.getString(R.string.general_note) - val note = Note(1, generalNote, "", TYPE_NOTE) + val note = Note(null, generalNote, "", TYPE_NOTE) db!!.NotesDao().insertOrUpdate(note) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/ImportFolderDialog.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/ImportFolderDialog.kt index a91e3a8b..96593bbe 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/ImportFolderDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/ImportFolderDialog.kt @@ -9,12 +9,13 @@ import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.activities.SimpleActivity import com.simplemobiletools.notes.pro.extensions.dbHelper +import com.simplemobiletools.notes.pro.extensions.notesDB import com.simplemobiletools.notes.pro.helpers.TYPE_NOTE import com.simplemobiletools.notes.pro.models.Note import kotlinx.android.synthetic.main.dialog_import_folder.view.* import java.io.File -class ImportFolderDialog(val activity: SimpleActivity, val path: String, val callback: (id: Int) -> Unit) : AlertDialog.Builder(activity) { +class ImportFolderDialog(val activity: SimpleActivity, val path: String, val callback: () -> Unit) : AlertDialog.Builder(activity) { private var dialog: AlertDialog init { @@ -37,7 +38,6 @@ class ImportFolderDialog(val activity: SimpleActivity, val path: String, val cal private fun saveFolder(updateFilesOnEdit: Boolean) { val folder = File(path) - var lastSavedNoteId = -1 folder.listFiles { file -> val filename = file.path.getFilenameFromPath() when { @@ -54,22 +54,21 @@ class ImportFolderDialog(val activity: SimpleActivity, val path: String, val cal if (updateFilesOnEdit) { activity.handleSAFDialog(path) { - lastSavedNoteId = saveNote(title, value, storePath) + saveNote(title, value, storePath) } } else { - lastSavedNoteId = saveNote(title, value, storePath) + saveNote(title, value, storePath) } } - if (lastSavedNoteId != -1) { - callback(lastSavedNoteId) - } - + callback() dialog.dismiss() } - private fun saveNote(title: String, value: String, path: String): Int { - val note = Note(0, title, value, TYPE_NOTE, path) - return activity.dbHelper.insertNote(note) + private fun saveNote(title: String, value: String, path: String) { + val note = Note(null, title, value, TYPE_NOTE, path) + Thread { + activity.notesDB.insertOrUpdate(note) + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenFileDialog.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenFileDialog.kt index a8e85403..c478c93b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenFileDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenFileDialog.kt @@ -45,7 +45,7 @@ class OpenFileDialog(val activity: SimpleActivity, val path: String, val callbac private fun saveNote(storeContent: String, storePath: String) { val filename = path.getFilenameFromPath() - val note = Note(0, filename, storeContent, TYPE_NOTE, storePath) + val note = Note(null, filename, storeContent, TYPE_NOTE, storePath) callback(note) dialog.dismiss() } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenNoteDialog.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenNoteDialog.kt index 3aa98486..2c766973 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenNoteDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/OpenNoteDialog.kt @@ -16,7 +16,7 @@ import com.simplemobiletools.notes.pro.models.Note import kotlinx.android.synthetic.main.dialog_open_note.view.* import kotlinx.android.synthetic.main.open_note_item.view.* -class OpenNoteDialog(val activity: Activity, val callback: (checkedId: Int) -> Unit) { +class OpenNoteDialog(val activity: Activity, val callback: (checkedId: Long) -> Unit) { private var dialog: AlertDialog? = null init { @@ -34,10 +34,10 @@ class OpenNoteDialog(val activity: Activity, val callback: (checkedId: Int) -> U open_note_item_radio_button.apply { text = note.title isChecked = note.id == activity.config.currentNoteId - id = note.id!! + id = note.id!!.toInt() setOnClickListener { - callback(id) + callback(note.id!!) dialog?.dismiss() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/Config.kt index 41b9808c..760a36f3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/Config.kt @@ -45,13 +45,13 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(GRAVITY, GRAVITY_LEFT) set(size) = prefs.edit().putInt(GRAVITY, size).apply() - var currentNoteId: Int - get() = prefs.getInt(CURRENT_NOTE_ID, 1) - set(id) = prefs.edit().putInt(CURRENT_NOTE_ID, id).apply() + var currentNoteId: Long + get() = prefs.getLong(CURRENT_NOTE_ID, 1L) + set(id) = prefs.edit().putLong(CURRENT_NOTE_ID, id).apply() - var widgetNoteId: Int - get() = prefs.getInt(WIDGET_NOTE_ID, 1) - set(id) = prefs.edit().putInt(WIDGET_NOTE_ID, id).apply() + var widgetNoteId: Long + get() = prefs.getLong(WIDGET_NOTE_ID, 1L) + set(id) = prefs.edit().putLong(WIDGET_NOTE_ID, id).apply() var placeCursorToEnd: Boolean get() = prefs.getBoolean(CURSOR_PLACEMENT, true) diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/DBHelper.kt index b4161367..fa7c5c71 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/DBHelper.kt @@ -7,6 +7,7 @@ import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteDatabase.CONFLICT_IGNORE import android.database.sqlite.SQLiteOpenHelper import com.simplemobiletools.commons.extensions.getIntValue +import com.simplemobiletools.commons.extensions.getLongValue import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.models.Note import com.simplemobiletools.notes.pro.models.Widget @@ -52,11 +53,6 @@ class DBHelper private constructor(private val mContext: Context) : SQLiteOpenHe db.insert(NOTES_TABLE_NAME, null, values) } - fun insertNote(note: Note): Int { - val values = fillNoteContentValues(note) - return mDb.insertWithOnConflict(NOTES_TABLE_NAME, null, values, CONFLICT_IGNORE).toInt() - } - fun insertWidget(widget: Widget): Int { val values = fillWidgetContentValues(widget) return mDb.insertWithOnConflict(WIDGETS_TABLE_NAME, null, values, CONFLICT_IGNORE).toInt() @@ -78,7 +74,7 @@ class DBHelper private constructor(private val mContext: Context) : SQLiteOpenHe } } - fun deleteNote(id: Int) { + fun deleteNote(id: Long) { mDb.delete(NOTES_TABLE_NAME, "$COL_ID = $id", null) mDb.delete(WIDGETS_TABLE_NAME, "$COL_NOTE_ID = $id", null) } @@ -96,7 +92,7 @@ class DBHelper private constructor(private val mContext: Context) : SQLiteOpenHe } } - fun getNoteId(path: String): Int { + fun getNoteId(path: String): Long { val cols = arrayOf(COL_ID) val selection = "$COL_PATH = ?" val selectionArgs = arrayOf(path) @@ -104,7 +100,7 @@ class DBHelper private constructor(private val mContext: Context) : SQLiteOpenHe try { cursor = mDb.query(NOTES_TABLE_NAME, cols, selection, selectionArgs, null, null, null) if (cursor?.moveToFirst() == true) { - return cursor.getIntValue(COL_ID) + return cursor.getLongValue(COL_ID) } } finally { cursor?.close() diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/Note.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/Note.kt index efff0898..ed426d69 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/Note.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/Note.kt @@ -9,7 +9,7 @@ import java.io.FileNotFoundException @Entity(tableName = "notes", indices = [(Index(value = ["id"], unique = true))]) data class Note( - @PrimaryKey(autoGenerate = true) var id: Int?, + @PrimaryKey(autoGenerate = true) var id: Long?, @ColumnInfo(name = "title") var title: String, @ColumnInfo(name = "value") var value: String, @ColumnInfo(name = "type") var type: Int,