mirror of
https://github.com/nextcloud/notes-android.git
synced 2024-10-25 14:15:48 +03:00
Add graceful migration of the old boolean setting to the new String setting
This commit is contained in:
parent
2dbd7e303b
commit
84fdfc7ea3
6 changed files with 52 additions and 14 deletions
|
@ -42,7 +42,7 @@ public class NoteListWidget extends AppWidgetProvider {
|
|||
}
|
||||
|
||||
String category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, null);
|
||||
darkTheme = sp.getString(NoteListWidget.DARK_THEME_KEY + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
darkTheme = getDarkThemeSetting(sp, appWidgetId);
|
||||
|
||||
Intent serviceIntent = new Intent(context, NoteListWidgetService.class);
|
||||
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
|
||||
|
@ -158,4 +158,14 @@ public class NoteListWidget extends AppWidgetProvider {
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getDarkThemeSetting(SharedPreferences sharedPreferences, int appWidgetId) {
|
||||
try {
|
||||
return sharedPreferences.getString(DARK_THEME_KEY + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
} catch (ClassCastException e) {
|
||||
//DARK_THEME was a boolean in older versions of the app. We thereofre have to still support the old setting.
|
||||
boolean isDarkTheme = sharedPreferences.getBoolean(DARK_THEME_KEY + appWidgetId, false);
|
||||
return isDarkTheme ? DarkModeSetting.DARK.name() : DarkModeSetting.LIGHT.name();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
|
|||
AppWidgetManager.INVALID_APPWIDGET_ID);
|
||||
final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this.context);
|
||||
displayMode = sp.getInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, -1);
|
||||
String themeName = sp.getString(NoteListWidget.DARK_THEME_KEY + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
String themeName = NoteListWidget.getDarkThemeSetting(sp, appWidgetId);
|
||||
DarkModeSetting theme = DarkModeSetting.valueOf(themeName);
|
||||
darkTheme = Notes.isDarkThemeActive(context, theme);
|
||||
category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, "");
|
||||
|
|
|
@ -34,12 +34,11 @@ public class SingleNoteWidget extends AppWidgetProvider {
|
|||
return;
|
||||
}
|
||||
|
||||
String darkThemeName = sp.getString(DARK_THEME_KEY + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
DarkModeSetting darkTheme = DarkModeSetting.valueOf(darkThemeName);
|
||||
DarkModeSetting darkTheme = getDarkThemeSetting(sp, appWidgetId);
|
||||
templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, sp.getLong(ACCOUNT_ID_KEY + appWidgetId, -1));
|
||||
|
||||
PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class);
|
||||
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
|
||||
|
@ -76,7 +75,7 @@ public class SingleNoteWidget extends AppWidgetProvider {
|
|||
AppWidgetManager awm = AppWidgetManager.getInstance(context);
|
||||
|
||||
updateAppWidget(context, AppWidgetManager.getInstance(context),
|
||||
(awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class))));
|
||||
(awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class))));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -93,4 +92,15 @@ public class SingleNoteWidget extends AppWidgetProvider {
|
|||
editor.apply();
|
||||
super.onDeleted(context, appWidgetIds);
|
||||
}
|
||||
|
||||
public static DarkModeSetting getDarkThemeSetting(SharedPreferences sharedPreferences, int appWidgetId) {
|
||||
try {
|
||||
String themeName = sharedPreferences.getString(DARK_THEME_KEY + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
return DarkModeSetting.valueOf(themeName);
|
||||
} catch (ClassCastException e) {
|
||||
//DARK_THEME was a boolean in older versions of the app. We thereofre have to still support the old setting.
|
||||
boolean isDarkTheme = sharedPreferences.getBoolean(DARK_THEME_KEY + appWidgetId, false);
|
||||
return isDarkTheme ? DarkModeSetting.DARK : DarkModeSetting.LIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@ import com.yydcdut.markdown.MarkdownProcessor;
|
|||
import com.yydcdut.markdown.syntax.text.TextFactory;
|
||||
|
||||
import it.niedermann.owncloud.notes.R;
|
||||
import it.niedermann.owncloud.notes.android.DarkModeSetting;
|
||||
import it.niedermann.owncloud.notes.android.activity.EditNoteActivity;
|
||||
import it.niedermann.owncloud.notes.model.DBNote;
|
||||
import it.niedermann.owncloud.notes.persistence.NoteSQLiteOpenHelper;
|
||||
|
@ -39,8 +38,7 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa
|
|||
appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
|
||||
AppWidgetManager.INVALID_APPWIDGET_ID);
|
||||
sp = PreferenceManager.getDefaultSharedPreferences(this.context);
|
||||
String themeName = sp.getString(SingleNoteWidget.DARK_THEME_KEY + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
darkModeActive = Notes.isDarkThemeActive(context, DarkModeSetting.valueOf(themeName));
|
||||
darkModeActive = Notes.isDarkThemeActive(context, SingleNoteWidget.getDarkThemeSetting(sp, appWidgetId));
|
||||
markdownProcessor = new MarkdownProcessor(this.context);
|
||||
markdownProcessor.factory(TextFactory.create());
|
||||
markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(this.context, darkModeActive).build());
|
||||
|
|
|
@ -38,16 +38,17 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import it.niedermann.owncloud.notes.R;
|
||||
import it.niedermann.owncloud.notes.android.DarkModeSetting;
|
||||
import it.niedermann.owncloud.notes.android.activity.EditNoteActivity;
|
||||
import it.niedermann.owncloud.notes.android.appwidget.NoteListWidget;
|
||||
import it.niedermann.owncloud.notes.android.appwidget.SingleNoteWidget;
|
||||
import it.niedermann.owncloud.notes.model.CloudNote;
|
||||
import it.niedermann.owncloud.notes.model.DBNote;
|
||||
import it.niedermann.owncloud.notes.model.DBStatus;
|
||||
import it.niedermann.owncloud.notes.model.ISyncCallback;
|
||||
import it.niedermann.owncloud.notes.model.LocalAccount;
|
||||
import it.niedermann.owncloud.notes.model.NavigationAdapter;
|
||||
import it.niedermann.owncloud.notes.util.DatabaseIndexUtil;
|
||||
import it.niedermann.owncloud.notes.model.ISyncCallback;
|
||||
import it.niedermann.owncloud.notes.util.NoteUtil;
|
||||
|
||||
import static it.niedermann.owncloud.notes.android.activity.EditNoteActivity.ACTION_SHORTCUT;
|
||||
|
@ -59,7 +60,7 @@ public class NoteSQLiteOpenHelper extends SQLiteOpenHelper {
|
|||
|
||||
private static final String TAG = NoteSQLiteOpenHelper.class.getSimpleName();
|
||||
|
||||
private static final int database_version = 10;
|
||||
private static final int database_version = 11;
|
||||
|
||||
private static final String database_name = "OWNCLOUD_NOTES";
|
||||
private static final String table_notes = "NOTES";
|
||||
|
@ -290,6 +291,19 @@ public class NoteSQLiteOpenHelper extends SQLiteOpenHelper {
|
|||
}
|
||||
cursor.close();
|
||||
}
|
||||
if (oldVersion < 11) {
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
Map<String, ?> prefs = sharedPreferences.getAll();
|
||||
for (Map.Entry<String, ?> pref : prefs.entrySet()) {
|
||||
String key = pref.getKey();
|
||||
if (key.equals("darkTheme") || key.startsWith(NoteListWidget.DARK_THEME_KEY) || key.startsWith(SingleNoteWidget.DARK_THEME_KEY)) {
|
||||
Boolean darkTheme = (Boolean) pref.getValue();
|
||||
editor.putString(pref.getKey(), darkTheme ? DarkModeSetting.DARK.name() : DarkModeSetting.LIGHT.name());
|
||||
}
|
||||
}
|
||||
editor.apply();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -369,7 +383,7 @@ public class NoteSQLiteOpenHelper extends SQLiteOpenHelper {
|
|||
deleteNoteAndSync(ssoAccount, note.getId());
|
||||
|
||||
notifyNotesChanged();
|
||||
getNoteServerSyncHelper().scheduleSync(ssoAccount,true);
|
||||
getNoteServerSyncHelper().scheduleSync(ssoAccount, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -686,7 +700,7 @@ public class NoteSQLiteOpenHelper extends SQLiteOpenHelper {
|
|||
if (callback != null) {
|
||||
serverSyncHelper.addCallbackPush(ssoAccount, callback);
|
||||
}
|
||||
serverSyncHelper.scheduleSync(ssoAccount,true);
|
||||
serverSyncHelper.scheduleSync(ssoAccount, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,7 +25,13 @@ public class Notes extends Application {
|
|||
|
||||
public static DarkModeSetting getAppTheme(Context context) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String mode = prefs.getString(DARK_THEME, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
String mode;
|
||||
try {
|
||||
mode = prefs.getString(DARK_THEME, DarkModeSetting.SYSTEM_DEFAULT.name());
|
||||
} catch (ClassCastException e) {
|
||||
boolean darkModeEnabled = prefs.getBoolean(DARK_THEME, false);
|
||||
mode = darkModeEnabled ? DarkModeSetting.DARK.name() : DarkModeSetting.LIGHT.name();
|
||||
}
|
||||
return DarkModeSetting.valueOf(mode);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue