Remove obsolete defaultNoteViewMode preference

This commit is contained in:
PhilKes 2025-03-29 13:46:17 +01:00
parent c586eab072
commit b5e13ce73a
15 changed files with 29 additions and 61 deletions

View file

@ -2,11 +2,11 @@
"formatVersion": 1,
"database": {
"version": 9,
"identityHash": "794af16cac662f9dc12be0736752f1a5",
"identityHash": "042b20b5b4cfc8415e6cf6348196e869",
"entities": [
{
"tableName": "BaseNote",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` TEXT NOT NULL, `folder` TEXT NOT NULL, `color` TEXT NOT NULL, `title` TEXT NOT NULL, `pinned` INTEGER NOT NULL, `timestamp` INTEGER NOT NULL, `modifiedTimestamp` INTEGER NOT NULL, `labels` TEXT NOT NULL, `body` TEXT NOT NULL, `spans` TEXT NOT NULL, `items` TEXT NOT NULL, `images` TEXT NOT NULL, `files` TEXT NOT NULL, `audios` TEXT NOT NULL, `reminders` TEXT NOT NULL, `viewMode` TEXT)",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` TEXT NOT NULL, `folder` TEXT NOT NULL, `color` TEXT NOT NULL, `title` TEXT NOT NULL, `pinned` INTEGER NOT NULL, `timestamp` INTEGER NOT NULL, `modifiedTimestamp` INTEGER NOT NULL, `labels` TEXT NOT NULL, `body` TEXT NOT NULL, `spans` TEXT NOT NULL, `items` TEXT NOT NULL, `images` TEXT NOT NULL, `files` TEXT NOT NULL, `audios` TEXT NOT NULL, `reminders` TEXT NOT NULL, `viewMode` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
@ -108,7 +108,7 @@
"fieldPath": "viewMode",
"columnName": "viewMode",
"affinity": "TEXT",
"notNull": false
"notNull": true
}
],
"primaryKey": {
@ -158,7 +158,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '794af16cac662f9dc12be0736752f1a5')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '042b20b5b4cfc8415e6cf6348196e869')"
]
}
}

View file

@ -19,6 +19,7 @@ import com.philkes.notallyx.data.model.BaseNote
import com.philkes.notallyx.data.model.Color
import com.philkes.notallyx.data.model.Converters
import com.philkes.notallyx.data.model.Label
import com.philkes.notallyx.data.model.NoteViewMode
import com.philkes.notallyx.data.model.toColorString
import com.philkes.notallyx.presentation.view.misc.NotNullLiveData
import com.philkes.notallyx.presentation.viewmodel.preference.BiometricLock
@ -266,7 +267,9 @@ abstract class NotallyDatabase : RoomDatabase() {
object Migration9 : Migration(8, 9) {
override fun migrate(db: SupportSQLiteDatabase) {
db.execSQL("ALTER TABLE `BaseNote` ADD COLUMN `viewMode` TEXT DEFAULT NULL")
db.execSQL(
"ALTER TABLE `BaseNote` ADD COLUMN `viewMode` TEXT DEFAULT '${NoteViewMode.EDIT.name}'"
)
}
}
}

View file

@ -17,6 +17,7 @@ import com.philkes.notallyx.data.model.BaseNote
import com.philkes.notallyx.data.model.FileAttachment
import com.philkes.notallyx.data.model.Folder
import com.philkes.notallyx.data.model.ListItem
import com.philkes.notallyx.data.model.NoteViewMode
import com.philkes.notallyx.data.model.Type
import com.philkes.notallyx.utils.log
import com.philkes.notallyx.utils.startsWithAnyOf
@ -155,7 +156,7 @@ fun EvernoteNote.mapToBaseNote(): BaseNote {
files = files,
audios = audios,
reminders = mutableListOf(),
null,
NoteViewMode.EDIT,
)
}

View file

@ -14,6 +14,7 @@ import com.philkes.notallyx.data.model.BaseNote
import com.philkes.notallyx.data.model.FileAttachment
import com.philkes.notallyx.data.model.Folder
import com.philkes.notallyx.data.model.ListItem
import com.philkes.notallyx.data.model.NoteViewMode
import com.philkes.notallyx.data.model.Type
import com.philkes.notallyx.utils.listFilesRecursive
import com.philkes.notallyx.utils.log
@ -162,7 +163,7 @@ class GoogleKeepImporter : ExternalImporter {
files = files,
audios = audios,
reminders = mutableListOf(),
null,
NoteViewMode.EDIT,
)
}

View file

@ -9,6 +9,7 @@ import com.philkes.notallyx.data.imports.ImportProgress
import com.philkes.notallyx.data.model.BaseNote
import com.philkes.notallyx.data.model.Folder
import com.philkes.notallyx.data.model.ListItem
import com.philkes.notallyx.data.model.NoteViewMode
import com.philkes.notallyx.data.model.Type
import com.philkes.notallyx.utils.MIME_TYPE_JSON
import com.philkes.notallyx.utils.readFileContents
@ -59,7 +60,7 @@ class PlainTextImporter : ExternalImporter {
files = listOf(),
audios = listOf(),
reminders = listOf(),
null,
NoteViewMode.EDIT,
)
)
}

View file

@ -25,7 +25,7 @@ data class BaseNote(
val files: List<FileAttachment>,
val audios: List<Audio>,
val reminders: List<Reminder>,
val viewMode: NoteViewMode?,
val viewMode: NoteViewMode,
) : Item {
companion object {
@ -75,7 +75,7 @@ data class BaseNote(
result = 31 * result + files.hashCode()
result = 31 * result + audios.hashCode()
result = 31 * result + reminders.hashCode()
result = 31 * result + (viewMode?.hashCode() ?: 0)
result = 31 * result + viewMode.hashCode()
return result
}
}

View file

@ -100,26 +100,24 @@ fun BaseNote.toJson(): String {
fun String.toBaseNote(): BaseNote {
val jsonObject = JSONObject(this)
val id = jsonObject.getLongOrDefault("id", -1L)
val type = Type.valueOfOrDefault(jsonObject.getStringOrDefault("type", Type.NOTE.name)!!)
val folder =
Folder.valueOfOrDefault(jsonObject.getStringOrDefault("folder", Folder.NOTES.name)!!)
val type = Type.valueOfOrDefault(jsonObject.getStringOrDefault("type", Type.NOTE.name))
val folder = Folder.valueOfOrDefault(jsonObject.getStringOrDefault("folder", Folder.NOTES.name))
val color =
jsonObject.getStringOrDefault("color", COLOR_DEFAULT)!!.takeIf { it.isValid() }
jsonObject.getStringOrDefault("color", COLOR_DEFAULT).takeIf { it.isValid() }
?: COLOR_DEFAULT
val title = jsonObject.getStringOrDefault("title", "")!!
val title = jsonObject.getStringOrDefault("title", "")
val pinned = jsonObject.getBooleanOrDefault("pinned", false)
val timestamp = jsonObject.getLongOrDefault("timestamp", System.currentTimeMillis())
val modifiedTimestamp = jsonObject.getLongOrDefault("modifiedTimestamp", timestamp)
val labels = Converters.jsonToLabels(jsonObject.getArrayOrEmpty("labels"))
val body = jsonObject.getStringOrDefault("body", "")!!
val body = jsonObject.getStringOrDefault("body", "")
val spans = Converters.jsonToSpans(jsonObject.getArrayOrEmpty("spans"))
val items = Converters.jsonToItems(jsonObject.getArrayOrEmpty("items"))
val images = Converters.jsonToFiles(jsonObject.getArrayOrEmpty("images"))
val files = Converters.jsonToFiles(jsonObject.getArrayOrEmpty("files"))
val audios = Converters.jsonToAudios(jsonObject.getArrayOrEmpty("audios"))
val reminders = Converters.jsonToReminders(jsonObject.getArrayOrEmpty("reminders"))
val viewMode =
jsonObject.getStringOrDefault("viewMode", null)?.let { NoteViewMode.valueOfOrDefault(it) }
val viewMode = NoteViewMode.valueOfOrDefault(jsonObject.getStringOrDefault("viewMode", ""))
return BaseNote(
id,
type,
@ -141,7 +139,7 @@ fun String.toBaseNote(): BaseNote {
)
}
private fun JSONObject.getStringOrDefault(key: String, defaultValue: String?): String? {
private fun JSONObject.getStringOrDefault(key: String, defaultValue: String): String {
return try {
getString(key)
} catch (exception: JSONException) {

View file

@ -12,7 +12,7 @@ enum class NoteViewMode(override val textResId: Int) : StaticTextProvider {
try {
NoteViewMode.valueOf(value)
} catch (e: Exception) {
null
EDIT
}
}
}

View file

@ -647,13 +647,6 @@ class SettingsFragment : Fragment() {
model.savePreference(autoSaveAfterIdleTime, newValue)
}
defaultNoteViewMode.observe(viewLifecycleOwner) { value ->
DefaultNoteViewMode.setup(defaultNoteViewMode, value, requireContext()) { newValue
->
model.savePreference(defaultNoteViewMode, newValue)
}
}
ClearData.setOnClickListener {
MaterialAlertDialogBuilder(requireContext())
.setMessage(R.string.clear_data_message)

View file

@ -551,13 +551,6 @@ abstract class EditActivity(private val type: Type) :
removeAllViews()
addToggleViewMode()
notallyModel.viewMode.value =
when {
notallyModel.isNewNote -> NoteViewMode.EDIT
notallyModel.viewMode.value != null -> notallyModel.viewMode.value!!
else -> preferences.defaultNoteViewMode.value
}
addIconButton(R.string.more, R.drawable.more_vert, marginStart = 0) {
MoreNoteBottomSheet(
this@EditActivity,
@ -577,9 +570,7 @@ abstract class EditActivity(private val type: Type) :
when (notallyModel.viewMode.value) {
NoteViewMode.EDIT -> NoteViewMode.READ_ONLY
NoteViewMode.READ_ONLY -> NoteViewMode.EDIT
null -> NoteViewMode.EDIT
}
notallyModel.viewModeChangedByUser = true
}
}

View file

@ -93,8 +93,7 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
val audios = NotNullLiveData<List<Audio>>(emptyList())
val reminders = NotNullLiveData<List<Reminder>>(emptyList())
val viewMode = MutableLiveData<NoteViewMode?>(null)
var viewModeChangedByUser = false
val viewMode = NotNullLiveData(NoteViewMode.EDIT)
val addingFiles = MutableLiveData<Progress>()
val eventBus = MutableLiveData<Event<List<FileError>>>()
@ -254,7 +253,6 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
audios.value = baseNote.audios
reminders.value = baseNote.reminders
viewMode.value = baseNote.viewMode
viewModeChangedByUser = false
} else {
originalNote = createBaseNote()
app.showToast(R.string.cant_find_note)
@ -335,12 +333,6 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
val spans = getFilteredSpans(body)
val body = this.body.toString()
val nonEmptyItems = this.items.filter { item -> item.body.isNotEmpty() }
val viewMode =
if (isNewNote) {
null
} else if (viewModeChangedByUser) {
viewMode.value
} else originalNote?.viewMode
return BaseNote(
id,
type,
@ -358,7 +350,7 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
files.value,
audios.value,
reminders.value,
viewMode,
viewMode.value,
)
}

View file

@ -7,7 +7,6 @@ import androidx.preference.PreferenceManager
import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKey
import com.philkes.notallyx.R
import com.philkes.notallyx.data.model.NoteViewMode
import com.philkes.notallyx.data.model.Type
import com.philkes.notallyx.presentation.viewmodel.preference.Constants.PASSWORD_EMPTY
import com.philkes.notallyx.utils.backup.importPreferences
@ -77,13 +76,6 @@ class NotallyXPreferences private constructor(private val context: Context) {
10,
R.string.max_lines_to_display_title,
)
val defaultNoteViewMode =
createEnumPreference(
preferences,
"defaultNoteViewMode",
NoteViewMode.EDIT,
R.string.default_note_view_mode,
)
val labelsHidden = StringSetPreference("labelsHiddenInNavigation", preferences, setOf())
val labelTagsHiddenInOverview =
BooleanPreference(
@ -238,7 +230,6 @@ class NotallyXPreferences private constructor(private val context: Context) {
backupPassword,
backupOnSave,
autoSaveAfterIdleTime,
defaultNoteViewMode,
)
.forEach { it.refresh() }
}

View file

@ -285,7 +285,7 @@ private fun Cursor.toBaseNote(): BaseNote {
val viewMode =
if (viewModeIndex != -1) {
NoteViewMode.valueOfOrDefault(getString(viewModeIndex))
} else null
} else NoteViewMode.EDIT
return BaseNote(
0,
type,

View file

@ -4,6 +4,7 @@ import com.philkes.notallyx.data.model.BaseNote
import com.philkes.notallyx.data.model.Folder
import com.philkes.notallyx.data.model.Label
import com.philkes.notallyx.data.model.ListItem
import com.philkes.notallyx.data.model.NoteViewMode
import com.philkes.notallyx.data.model.SpanRepresentation
import com.philkes.notallyx.data.model.Type
import com.philkes.notallyx.data.model.parseToColorString
@ -113,7 +114,7 @@ private fun XmlPullParser.parseBaseNote(rootTag: String, folder: Folder): BaseNo
emptyList(),
emptyList(),
emptyList(),
null,
NoteViewMode.EDIT,
)
}

View file

@ -53,10 +53,6 @@
android:id="@+id/StartView"
layout="@layout/preference" />
<include
android:id="@+id/DefaultNoteViewMode"
layout="@layout/preference" />
<include
android:id="@+id/AutoSaveAfterIdle"
layout="@layout/preference_seekbar" />