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 71d0519d..fcedcfcb 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 @@ -58,8 +58,7 @@ class MainActivity : SimpleActivity() { setContentView(R.layout.activity_main) appLaunched(BuildConfig.APPLICATION_ID) - initViewPager() - + initViewPager(intent.getLongExtra(OPEN_NOTE_ID, -1L)) pager_title_strip.setTextSize(TypedValue.COMPLEX_UNIT_PX, getTextSize()) pager_title_strip.layoutParams.height = (pager_title_strip.height + resources.getDimension(R.dimen.activity_margin) * 2).toInt() checkWhatsNewDialog() @@ -202,7 +201,8 @@ class MainActivity : SimpleActivity() { override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) - view_pager.currentItem = getWantedNoteIndex(null) + val wantedNoteId = intent.getLongExtra(OPEN_NOTE_ID, -1L) + view_pager.currentItem = getWantedNoteIndex(wantedNoteId) } private fun storeStateVariables() { @@ -256,6 +256,7 @@ class MainActivity : SimpleActivity() { view_pager.apply { adapter = mAdapter currentItem = getWantedNoteIndex(wantedNoteId) + config.currentNoteId = mCurrentNote.id!! onPageChangeListener { mCurrentNote = mNotes[it] @@ -269,12 +270,10 @@ class MainActivity : SimpleActivity() { } } - private fun getWantedNoteIndex(secondaryWantedNoteId: Long?): Int { - var wantedNoteId = intent.getLongExtra(OPEN_NOTE_ID, -1) - if (wantedNoteId == -1L) { - wantedNoteId = secondaryWantedNoteId ?: config.currentNoteId - } - return getNoteIndexWithId(wantedNoteId) + private fun getWantedNoteIndex(wantedNoteId: Long?): Int { + intent.removeExtra(OPEN_NOTE_ID) + val noteIdToOpen = if (wantedNoteId == null || wantedNoteId == -1L) config.currentNoteId else wantedNoteId + return getNoteIndexWithId(noteIdToOpen) } private fun currentNotesView() = if (view_pager == null) { diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/SplashActivity.kt index f47128a7..45c8e25f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/SplashActivity.kt @@ -8,7 +8,7 @@ class SplashActivity : BaseSplashActivity() { override fun initActivity() { if (intent.extras?.containsKey(OPEN_NOTE_ID) == true) { Intent(this, MainActivity::class.java).apply { - putExtra(OPEN_NOTE_ID, intent.getIntExtra(OPEN_NOTE_ID, -1)) + putExtra(OPEN_NOTE_ID, intent.getLongExtra(OPEN_NOTE_ID, -1L)) startActivity(this) } } else { 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 fcc4dc23..0e89ef00 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!!.toInt()) + bundle.putLong(NOTE_ID, id!!) if (fragments.containsKey(position)) { return fragments[position]!! diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt index da4a80df..2c9050de 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt @@ -22,7 +22,7 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi private var widgetTextColor = context.config.widgetTextColor override fun getViewAt(position: Int): RemoteViews { - val noteId = intent.getIntExtra(NOTE_ID, 1) + val noteId = intent.getLongExtra(NOTE_ID, 0L) val views = RemoteViews(context.packageName, R.layout.widget_text_layout).apply { val note = context.notesDB.getNoteWithId(noteId) if (note != null) { diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/NoteFragment.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/NoteFragment.kt index 32fe7464..2ececd44 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/NoteFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/NoteFragment.kt @@ -38,14 +38,14 @@ class NoteFragment : androidx.fragment.app.Fragment() { private var textHistory = TextHistory() private var isUndoOrRedo = false private var skipTextUpdating = false - private var noteId = 0 + private var noteId = 0L private var note: Note? = null lateinit var view: ViewGroup override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { view = inflater.inflate(R.layout.fragment_note, container, false) as ViewGroup - noteId = arguments!!.getInt(NOTE_ID) + noteId = arguments!!.getLong(NOTE_ID) retainInstance = true val layoutToInflate = if (config!!.enableLineWrap) R.layout.note_view_static else R.layout.note_view_horiz_scrollable @@ -87,11 +87,11 @@ class NoteFragment : androidx.fragment.app.Fragment() { override fun setMenuVisibility(menuVisible: Boolean) { super.setMenuVisibility(menuVisible) - if (!menuVisible && noteId != 0 && config?.autosaveNotes == true) { + if (!menuVisible && noteId != 0L && config?.autosaveNotes == true) { saveText(false) } - if (menuVisible && noteId != 0) { + if (menuVisible && noteId != 0L) { val currentText = getCurrentNoteViewText() if (currentText != null) { (activity as MainActivity).currentNoteTextChanged(currentText, isUndoAvailable(), isRedoAvailable()) diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt index 90ebb7dc..261b566c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt @@ -26,24 +26,26 @@ class MyWidgetProvider : AppWidgetProvider() { override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { super.onUpdate(context, appWidgetManager, appWidgetIds) - context.widgetsDB.getWidgets().forEach { - val views = RemoteViews(context.packageName, R.layout.widget) - views.setBackgroundColor(R.id.notes_widget_holder, context.config.widgetBgColor) - setupAppOpenIntent(context, views, R.id.notes_widget_holder, it) + Thread { + context.widgetsDB.getWidgets().forEach { + val views = RemoteViews(context.packageName, R.layout.widget) + views.setBackgroundColor(R.id.notes_widget_holder, context.config.widgetBgColor) + setupAppOpenIntent(context, views, R.id.notes_widget_holder, it) - Intent(context, WidgetService::class.java).apply { - putExtra(NOTE_ID, it.noteId) - data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME)) - views.setRemoteAdapter(R.id.notes_widget_listview, this) + Intent(context, WidgetService::class.java).apply { + putExtra(NOTE_ID, it.noteId) + data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME)) + views.setRemoteAdapter(R.id.notes_widget_listview, this) + } + + val startActivityIntent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java) + startActivityIntent.putExtra(OPEN_NOTE_ID, it.noteId) + val startActivityPendingIntent = PendingIntent.getActivity(context, it.widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT) + views.setPendingIntentTemplate(R.id.notes_widget_listview, startActivityPendingIntent) + + appWidgetManager.updateAppWidget(it.widgetId, views) + appWidgetManager.notifyAppWidgetViewDataChanged(it.widgetId, R.id.notes_widget_listview) } - - val startActivityIntent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java) - startActivityIntent.putExtra(OPEN_NOTE_ID, it.noteId) - val startActivityPendingIntent = PendingIntent.getActivity(context, it.widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT) - views.setPendingIntentTemplate(R.id.notes_widget_listview, startActivityPendingIntent) - - appWidgetManager.updateAppWidget(it.widgetId, views) - appWidgetManager.notifyAppWidgetViewDataChanged(it.widgetId, R.id.notes_widget_listview) - } + }.start() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/NotesHelper.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/NotesHelper.kt index c7c804c6..6b53eec4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/NotesHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/NotesHelper.kt @@ -40,7 +40,7 @@ class NotesHelper(val activity: Activity) { }.start() } - fun getNoteWithId(id: Int, callback: (note: Note?) -> Unit) { + fun getNoteWithId(id: Long, callback: (note: Note?) -> Unit) { Thread { val note = activity.notesDB.getNoteWithId(id) activity.runOnUiThread { diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/NotesDao.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/NotesDao.kt index 6165b89b..38eefd57 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/NotesDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/NotesDao.kt @@ -9,7 +9,7 @@ interface NotesDao { fun getNotes(): List @Query("SELECT * FROM notes WHERE id = :id") - fun getNoteWithId(id: Int): Note? + fun getNoteWithId(id: Long): Note? @Query("SELECT id FROM notes WHERE path = :path") fun getNoteIdWithPath(path: String): Long?