/*
* Copyright 2008-2013, ETH Zürich, Samuel Welten, Michael Kuhn, Tobias Langner,
* Sandro Affentranger, Lukas Bossard, Michael Grob, Rahul Jain,
* Dominic Langenegger, Sonia Mayor Alonso, Roger Odermatt, Tobias Schlueter,
* Yannick Stucki, Sebastian Wendland, Samuel Zehnder, Samuel Zihlmann,
* Samuel Zweifel
*
* This file is part of Jukefox.
*
* Jukefox is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or any later version. Jukefox is
* distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* Jukefox. If not, see <http://www.gnu.org/licenses/>.
*/
package ch.ethz.dcg.pancho3.commons.settings;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.ActivityInfo;
import android.preference.PreferenceManager;
import ch.ethz.dcg.jukefox.commons.AndroidConstants;
import ch.ethz.dcg.jukefox.commons.utils.Log;
import ch.ethz.dcg.pancho3.R;
public class SharedPreferencesKeys {
private final static String TAG = SharedPreferencesKeys.class.getSimpleName();
// TODO: A prefs file is also defined in PanchoConsts
// public final static String PANCHO_SHARED_PREFS = "PanchoSharedPrefs";
private static final String OLD_PREFS_FILE = "panchoprefs";
public final static String OLD_KEY_IS_UPDATING = "IsUpdating";
public final static String OLD_KEY_IS_DATA_DISTORTED = "IsDataDistorted";
public final static String OLD_KEY_UPDATE_SUCCESSFUL = "successful update";
public final static String OLD_KEY_COORD_VERSION = "coords version";
public final static String OLD_KEY_PLAY_LOG_DB_VERSION = "play log db version";
public final static String OLD_KEY_LAST_SENT_PLAY_LOG_ID = "last sent play log id";
public final static String OLD_KEY_RANDOM_USER_HASH = "random user hash";
public final static String OLD_KEY_GAPLESS_OFFSET = "gapless offset";
public final static String OLD_KEY_APP_VERSION = "version";
public final static String OLD_KEY_FULL_SCREEN = "fullscreen";
public final static String OLD_KEY_FILE_LOCATIONS = "file locations";
public final static String OLD_KEY_TRACKS_SORTED = "sorted tracks";
public final static String OLD_KEY_STARTED_UPDATES_CNT = "started updates";
public final static String OLD_KEY_SUCCESSFUL_UPDATES_CNT = "successful updates";
public final static String OLD_KEY_USE_COVER_FILES = "use cover files";
public final static String OLD_KEY_LOGGING = "logging";
public final static String OLD_KEY_LOG_START_TIME = "log start";
public final static String OLD_KEY_PLAYLIST_POS = "playlist position";
public final static String OLD_KEY_POS_IN_SONG = "pos in song";
public final static String OLD_KEY_LAST_PLAY_MODE = "last play mode";
public final static String OLD_KEY_AVOID_ARTISTS = "avoid artists";
public final static String OLD_KEY_SHOW_ZOOM_BAR = "show zoom bar";
public final static String OLD_KEY_RESUME_ON_HEADSET = "resume on headset";
public final static String OLD_KEY_HAPTIC_FEEDBACK = "haptic feedback";
public final static String OLD_KEY_GOTO_CUR_ALBUM = "goto cur album";
public final static String OLD_KEY_HIGHLIGHT_CUR_ALBUM = "highlight current album";
public final static String OLD_KEY_AUTO_SHOW_COVER = "auto show cover";
public final static String OLD_KEY_DRAW_FLOOR = "draw floor";
public final static String OLD_KEY_SHOW_TIPS = "show tipps";
public final static String OLD_KEY_ICON_LISTS = "icon lists";
public final static String OLD_KEY_LOCK_ORIENTATION = "lock orientation";
public final static String OLD_KEY_ALWAYS_NOTIFY = "always notify"; // RENAMED
// TO
// SHOW_NOTIFICATIONS
public final static String OLD_KEY_GAPLESS = "gapless";
public final static String OLD_KEY_SCROBBLE = "scrobble";
public final static String OLD_KEY_SCROBBLE_PAUSED = "scrobble paused";
public final static String OLD_KEY_SCROBBLE_NUM_TRACKS = "scrobble numTracks"; // RENAMED
// TO
// SCROBBLE_INTERVAL
public final static String OLD_KEY_SCROBBLE_USERNAME = "scrobble username";
public final static String OLD_KEY_SCROBBLE_PWD = "scrobble password";
public final static String OLD_KEY_LOG_LAST_ASK_TIME = "last log ask";
public final static String OLD_KEY_LOG_CNT = "num times log";
public final static String OLD_KEY_IMPROVE_Jukefox = "improve museek";
// public final static String KEY_IS_UPDATING = "IsUpdating";
// public final static String KEY_IS_DATA_DISTORTED = "IsDataDistorted";
// public final static String KEY_UPDATE_SUCCESSFUL = "successfulUpdate";
//
// public final static String KEY_COORD_VERSION = "coordsVersion";
// public final static String KEY_PLAY_LOG_DB_VERSION = "playLogDbVersion";
// public final static String KEY_LAST_SENT_PLAY_LOG_ID =
// "lastSentPlayLogId";
// public final static String KEY_RANDOM_USER_HASH = "randomUserHash";
//
// public final static String KEY_GAPLESS_OFFSET = "gaplessOffset";
// public final static String KEY_SIMILAR_MODE_ARTIST_AVOIDANCE_NUMBER =
// "similarModeArtistAvoidanceNumber";
// public final static String KEY_APP_VERSION = "version";
// public final static String KEY_FULL_SCREEN = "fullscreen";
// public final static String KEY_FILE_LOCATIONS = "fileLocations";
// public final static String KEY_TRACKS_SORTED = "sortedTracks";
// public final static String KEY_STARTED_UPDATES_CNT = "startedUpdates";
// public final static String KEY_SUCCESSFUL_UPDATES_CNT =
// "successfulUpdates";
//
// public final static String KEY_USE_COVER_FILES = "useCoverFiles";
// public final static String KEY_LOGGING = "logging";
// public final static String KEY_LOG_START_TIME = "logStartTime";
// public final static String KEY_PLAYLIST_POS = "playlistPosition";
// public final static String KEY_POS_IN_SONG = "posInSong";
// public final static String KEY_LAST_PLAY_MODE = "lastPlayMode";
//
// public final static String KEY_SHOW_ZOOM_BAR = "showZoomBar";
// public final static String KEY_RESUME_ON_HEADSET_PLUG =
// "resumeOnHeadsetPlug";
// public final static String KEY_KINETIC_MOVEMENT = "kineticMovement";
// public final static String KEY_HAPTIC_FEEDBACK = "vibrationFeedback";
// public final static String KEY_GOTO_CUR_ALBUM = "goToCurrentSongInMap";
// public final static String KEY_HIGHLIGHT_CUR_ALBUM =
// "highlightCurrentSongInMap";
//
// public final static String KEY_AUTO_SHOW_COVER = "autoShowAlbumArt";
// public final static String KEY_DRAW_FLOOR = "drawFloor";
// public final static String KEY_SHOW_TIPS = "showTips";
// public final static String KEY_ICON_LISTS = "showIconLists";
// public final static String KEY_LOCK_ORIENTATION =
// "lockScreenOrientation";
//
// public final static String KEY_SHOW_NOTIFICATIONS = "showNotifications";
// public final static String KEY_GAPLESS = "gaplessPlaybackEnabled";
// public final static String KEY_SCROBBLE_ENABLED = "scrobbleEnabled";
// public final static String KEY_SCROBBLE_PAUSED = "scrobblePaused";
// public final static String KEY_SCROBBLE_INTERVAL = "scrobbleInterval";
// public final static String KEY_SCROBBLE_USERNAME = "lastFmUserName";
// public final static String KEY_SCROBBLE_PWD = "lastFmPassword";
// public final static String KEY_LOG_LAST_ASK_TIME = "lastLogAsk";
// public final static String KEY_LOG_CNT = "numTimesLog";
//
// public final static String KEY_IMPROVE_MUSEEK = "improveMuseek";
//
// public final static String KEY_IS_FIRST_START = "isFirstStart";
// public final static String KEY_IS_COMMITTING_SERVER_DATA =
// "isCommittingServerData";
// public final static String KEY_NEEDS_RECOMPUTE = "needsRecompute";
//
// public static final String KEY_SEARCH_WHILE_TYPING = "searchWhileTyping";
//
// public static final String KEY_FAMOUS_ARTISTS_INSERTED =
// "famousArtistsInserted";
//
// public static final String KEY_LASTPOS_IN_PCA_X = "lastPositionInPcaX";
// public static final String KEY_LASTPOS_IN_PCA_Y = "lastPositionInPcaY";
//
// public static final String KEY_SHARED_PREF_VERSION = "sharedPrefVersion";
public static void updateSharedPrefs(Context ctx) {
SharedPreferences newPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
SharedPreferences oldPrefs = ctx.getSharedPreferences(OLD_PREFS_FILE, Context.MODE_PRIVATE);
// SharedPreferences oldPrefs = PreferenceManager
// .getDefaultSharedPreferences(ctx);
SharedPreferences.Editor editor = newPrefs.edit();
// updateKey(OLD_KEY_IS_UPDATING, KEY_IS_UPDATING, oldPrefs, editor);
// updateKey(OLD_KEY_IS_DATA_DISTORTED, KEY_IS_DATA_DISTORTED, oldPrefs,
// editor);
// updateKey(OLD_KEY_UPDATE_SUCCESSFUL, KEY_UPDATE_SUCCESSFUL, oldPrefs,
// editor);
updateKeyInt(OLD_KEY_COORD_VERSION, ctx.getString(R.string.KEY_COORD_VERSION), oldPrefs, editor);
// TODO: not required as we do not copy the playlog table...:
// updateKeyInt(OLD_KEY_PLAY_LOG_DB_VERSION,
// ctx.getString(R.string.KEY_PLAY_LOG_DB_VERSION), oldPrefs, editor);
// updateKeyLong(OLD_KEY_LAST_SENT_PLAY_LOG_ID,
// ctx.getString(R.string.KEY_LAST_SENT_PLAY_LOG_ID), oldPrefs, editor);
updateKeyLong(OLD_KEY_RANDOM_USER_HASH, ctx.getString(R.string.KEY_RANDOM_USER_HASH), oldPrefs, editor);
updateKeyInt(OLD_KEY_GAPLESS_OFFSET, ctx.getString(R.string.KEY_GAPLESS_OFFSET), oldPrefs, editor);
updateKeyString(OLD_KEY_APP_VERSION, ctx.getString(R.string.KEY_APP_VERSION), oldPrefs, editor);
// updateKey(OLD_KEY_FULL_SCREEN, KEY_FULL_SCREEN, oldPrefs, editor);
// updateKey(OLD_KEY_FILE_LOCATIONS, KEY_FILE_LOCATIONS, oldPrefs,
// editor);
// updateKey(OLD_KEY_TRACKS_SORTED, KEY_TRACKS_SORTED, oldPrefs,
// editor);
updateKeyInt(OLD_KEY_STARTED_UPDATES_CNT, ctx.getString(R.string.KEY_NUMBER_OF_STARTED_IMPORTS), oldPrefs,
editor);
updateKeyInt(OLD_KEY_SUCCESSFUL_UPDATES_CNT, ctx.getString(R.string.KEY_NUMBER_OF_COMPLETED_IMPORTS), oldPrefs,
editor);
updateKeyBoolean(OLD_KEY_USE_COVER_FILES, ctx.getString(R.string.KEY_USE_COVER_FILES), oldPrefs, editor);
updateKeyInt(OLD_KEY_LOGGING, ctx.getString(R.string.KEY_LOGGING), oldPrefs, editor);
updateKeyLong(OLD_KEY_LOG_START_TIME, ctx.getString(R.string.KEY_LOG_START_TIME), oldPrefs, editor);
// updateKey(OLD_KEY_PLAYLIST_POS, KEY_PLAYLIST_POS, oldPrefs, editor);
// updateKey(OLD_KEY_POS_IN_SONG, KEY_POS_IN_SONG, oldPrefs, editor);
// updateKey(OLD_KEY_LAST_PLAY_MODE, KEY_LAST_PLAY_MODE, oldPrefs,
// editor);
updateKeyInt(OLD_KEY_AVOID_ARTISTS, ctx.getString(R.string.KEY_SIMILAR_MODE_ARTIST_AVOIDANCE_NUMBER), oldPrefs,
editor);
updateKeyBoolean(OLD_KEY_SHOW_ZOOM_BAR, ctx.getString(R.string.KEY_SHOW_ZOOM_BAR), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_RESUME_ON_HEADSET, ctx.getString(R.string.KEY_RESUME_ON_HEADSET_PLUG), oldPrefs,
editor);
updateKeyBoolean(OLD_KEY_HAPTIC_FEEDBACK, ctx.getString(R.string.KEY_HAPTIC_FEEDBACK), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_GOTO_CUR_ALBUM, ctx.getString(R.string.KEY_GOTO_CUR_ALBUM), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_HIGHLIGHT_CUR_ALBUM, ctx.getString(R.string.KEY_HIGHLIGHT_CUR_ALBUM), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_AUTO_SHOW_COVER, ctx.getString(R.string.KEY_AUTO_SHOW_COVER), oldPrefs, editor);
// updateKey(OLD_KEY_DRAW_FLOOR, KEY_DRAW_FLOOR, oldPrefs, editor);
updateKeyBoolean(OLD_KEY_SHOW_TIPS, ctx.getString(R.string.KEY_SHOW_TIPS), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_ICON_LISTS, ctx.getString(R.string.KEY_ICON_LISTS), oldPrefs, editor);
// updateKeyInt(OLD_KEY_LOCK_ORIENTATION, KEY_LOCK_ORIENTATION,
// oldPrefs, editor);
updateKeyBoolean(OLD_KEY_ALWAYS_NOTIFY, ctx.getString(R.string.KEY_SHOW_NOTIFICATIONS), oldPrefs, editor); // RENAMED
// TO
// SHOW_NOTIFICATIONS
updateKeyBoolean(OLD_KEY_GAPLESS, ctx.getString(R.string.KEY_GAPLESS), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_SCROBBLE, ctx.getString(R.string.KEY_SCROBBLE_ENABLED), oldPrefs, editor);
updateKeyBoolean(OLD_KEY_SCROBBLE_PAUSED, ctx.getString(R.string.KEY_SCROBBLE_PAUSED), oldPrefs, editor);
updateKeyInt(OLD_KEY_SCROBBLE_NUM_TRACKS, ctx.getString(R.string.KEY_SCROBBLE_INTERVAL), oldPrefs, editor); // RENAMED
// TO
// SCROBBLE_INTERVAL
updateKeyString(OLD_KEY_SCROBBLE_USERNAME, ctx.getString(R.string.KEY_SCROBBLE_USERNAME), oldPrefs, editor);
updateKeyString(OLD_KEY_SCROBBLE_PWD, ctx.getString(R.string.KEY_SCROBBLE_PWD), oldPrefs, editor);
// updateKey(OLD_KEY_LOG_LAST_ASK_TIME, KEY_LOG_LAST_ASK_TIME, oldPrefs,
// editor);
// updateKey(OLD_KEY_LOG_CNT, KEY_LOG_CNT, oldPrefs, editor);
updateKeyBoolean(OLD_KEY_IMPROVE_Jukefox, ctx.getString(R.string.KEY_GATHER_USAGE_DATA), oldPrefs, editor);
if (oldPrefs.getInt(OLD_KEY_SUCCESSFUL_UPDATES_CNT, 0) > 0) {
editor.putBoolean(ctx.getString(R.string.KEY_HAS_SENT_DOWNLOAD_STATS), true);
}
String orientation = oldPrefs.getString(OLD_KEY_LOCK_ORIENTATION, null);
if (orientation != null) {
if (orientation.equals("no")) {
editor.putInt(ctx.getString(R.string.KEY_SCREEN_ORIENTATION),
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals("portrait")) {
editor.putInt(ctx.getString(R.string.KEY_SCREEN_ORIENTATION), ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals("landscape")) {
editor
.putInt(ctx.getString(R.string.KEY_SCREEN_ORIENTATION),
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
editor.putInt(ctx.getString(R.string.KEY_SHARED_PREF_VERSION), AndroidConstants.SHARED_PREF_VERSION);
try {
Editor oldEdit = oldPrefs.edit();
oldEdit.clear();
boolean b = oldEdit.commit();
if (!b) {
Log.v(TAG, "could not clear old prefs");
} else {
Log.v(TAG, "successfully cleared old prefs");
}
} catch (Exception e) {
Log.w(TAG, e);
}
}
private static void updateKeyInt(String oldKey, String newKey, SharedPreferences oldPrefs, Editor editor) {
if (!oldPrefs.contains(oldKey)) {
return;
}
int i = oldPrefs.getInt(oldKey, -1); // should never be set to the
// default value
editor.putInt(newKey, i);
}
private static void updateKeyBoolean(String oldKey, String newKey, SharedPreferences oldPrefs, Editor editor) {
if (!oldPrefs.contains(oldKey)) {
return;
}
boolean b = oldPrefs.getBoolean(oldKey, false); // should never be set
// to the default value
editor.putBoolean(newKey, b);
}
private static void updateKeyString(String oldKey, String newKey, SharedPreferences oldPrefs, Editor editor) {
if (!oldPrefs.contains(oldKey)) {
return;
}
String s = oldPrefs.getString(oldKey, ""); // should never be set to the
// default value
editor.putString(newKey, s);
}
private static void updateKeyLong(String oldKey, String newKey, SharedPreferences oldPrefs, Editor editor) {
if (!oldPrefs.contains(oldKey)) {
return;
}
Long l = oldPrefs.getLong(oldKey, 0); // should never be set to the
// default value
editor.putLong(newKey, l);
}
public static boolean hasOldVersionKeys(Context ctx) {
SharedPreferences oldPrefs = ctx.getSharedPreferences(OLD_PREFS_FILE, Context.MODE_PRIVATE);
if (oldPrefs.contains(SharedPreferencesKeys.OLD_KEY_APP_VERSION)) {
Log.v(TAG, "contains OLD_KEY_APP_VERSION");
return true;
}
if (oldPrefs.contains(SharedPreferencesKeys.OLD_KEY_STARTED_UPDATES_CNT)) {
Log.v(TAG, "contains OLD_KEY_STARTED_UPDATES_CNT");
return true;
}
Log.v(TAG, "no old pref keys found.");
return false;
}
}