/* * Copyright 2012 Artiom Chilaru (http://flexlabs.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.flexlabs.widgets.dualbattery.widgetsettings; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import org.flexlabs.widgets.dualbattery.BatteryLevel; import org.flexlabs.widgets.dualbattery.Constants; public class WidgetSettingsContainer { private int textSize; private int textPosition; private int batterySelection; private int textColorCode; private int margin; private boolean alwaysShow; private boolean showNotDocked; private boolean showLabel; private boolean showOldStatus; private boolean swapBatteries; private String theme; private static SharedPreferences getPreferences(Context context, int widgetId) { SharedPreferences pref = context.getSharedPreferences(Constants.SETTINGS_WIDGET_FILE + widgetId, Context.MODE_PRIVATE); int version = pref.getInt(Constants.SETTING_VERSION, 1); if (version != Constants.SETTING_VERSION_CURRENT) updateWidgetSettings(pref, version); return pref; } public WidgetSettingsContainer(Context context, int widgetId) { SharedPreferences pref = getPreferences(context, widgetId); alwaysShow = pref.getBoolean(Constants.SETTING_ALWAYS_SHOW_DOCK, Constants.SETTING_ALWAYS_SHOW_DOCK_DEFAULT); showNotDocked = pref.getBoolean(Constants.SETTING_SHOW_NOT_DOCKED, Constants.SETTING_SHOW_NOT_DOCKED_DEFAULT); showLabel = pref.getBoolean(Constants.SETTING_SHOW_LABEL, Constants.SETTING_SHOW_LABEL_DEFAULT); showOldStatus = pref.getBoolean(Constants.SETTING_SHOW_OLD_DOCK, Constants.SETTING_SHOW_OLD_DOCK_DEFAULT); swapBatteries = pref.getBoolean(Constants.SETTING_SWAP_BATTERIES, Constants.SETTING_SWAP_BATTERIES_DEFAULT); textSize = pref.getInt(Constants.SETTING_TEXT_SIZE, Constants.SETTING_TEXT_SIZE_DEFAULT); textPosition = pref.getInt(Constants.SETTING_TEXT_POS, Constants.SETTING_TEXT_POS_DEFAULT); batterySelection = pref.getInt(Constants.SETTING_SHOW_SELECTION, Constants.SETTING_SHOW_SELECTION_DEFAULT); textColorCode = pref.getInt(Constants.SETTING_TEXT_COLOR, Constants.SETTING_TEXT_COLOR_DEFAULT); margin = pref.getInt(Constants.SETTING_MARGIN, Constants.SETTING_MARGIN_DEFAULT); theme = pref.getString(Constants.SETTING_THEME, Constants.SETTING_THEME_DEFAULT); } public static boolean getTempUnits(Context context, int widgetId) { SharedPreferences pref = getPreferences(context, widgetId); return pref.getInt(Constants.SETTING_TEMP_UNITS, Constants.SETTING_TEMP_UNITS_DEFAULT) == Constants.TEMP_UNIT_CELSIUS; } public static void setTempUnits(Context context, int widgetId, boolean tempUnitsC) { SharedPreferences pref = getPreferences(context, widgetId); pref.edit() .putInt(Constants.SETTING_TEMP_UNITS, tempUnitsC ? Constants.TEMP_UNIT_CELSIUS : Constants.TEMP_UNIT_FAHRENHEIT) .commit(); } public static boolean getUpgradeSwappedSingle(Context context, int widgetId) { SharedPreferences pref = getPreferences(context, widgetId); boolean justSwapped = pref.getBoolean(Constants.SETTING_JUST_SWAPPED, Constants.SETTING_JUST_SWAPPED_DEFAULT); if (justSwapped) { pref.edit() .remove(Constants.SETTING_JUST_SWAPPED) .commit(); } return justSwapped; } private static void updateWidgetSettings(SharedPreferences pref, int version) { SharedPreferences.Editor editor = pref.edit(); if (version == 1 && pref.getAll().size() == 0) version = Constants.SETTING_VERSION_CURRENT; if (version == 1) { if (pref.contains(Constants.SETTING_TEXT_SIZE)) { int textPosition = Integer.valueOf(pref.getString(Constants.SETTING_TEXT_SIZE, String.valueOf(Constants.SETTING_TEXT_SIZE_DEFAULT))); editor.putInt(Constants.SETTING_TEXT_SIZE, textPosition); } if (pref.contains(Constants.SETTING_TEXT_POS)) { int textPosition = Integer.valueOf(pref.getString(Constants.SETTING_TEXT_POS, String.valueOf(Constants.SETTING_TEXT_POS_DEFAULT))); editor.putInt(Constants.SETTING_TEXT_POS, textPosition); } if (pref.contains(Constants.SETTING_SHOW_SELECTION)) { int batterySelection = Integer.valueOf(pref.getString(Constants.SETTING_SHOW_SELECTION, String.valueOf(Constants.SETTING_SHOW_SELECTION_DEFAULT))); editor.putInt(Constants.SETTING_SHOW_SELECTION, batterySelection); } if (pref.contains(Constants.SETTING_TEXT_COLOR)) { int textColorCode = Integer.valueOf(pref.getString(Constants.SETTING_TEXT_COLOR, String.valueOf(Constants.SETTING_TEXT_COLOR_DEFAULT))); editor.putInt(Constants.SETTING_TEXT_COLOR, textColorCode); } if (pref.contains(Constants.SETTING_MARGIN)) { int margin = Integer.valueOf(pref.getString(Constants.SETTING_MARGIN, String.valueOf(Constants.SETTING_MARGIN_DEFAULT))); editor.putInt(Constants.SETTING_MARGIN, margin); } if (BatteryLevel.getCurrent().is_dockFriendly()) editor.putBoolean(Constants.SETTING_JUST_SWAPPED, true); version = 2; } if (version == 2) { if (BatteryLevel.getCurrent().is_dockFriendly()) editor.putBoolean(Constants.SETTING_JUST_SWAPPED, true); version = 3; } if (version == 3) { boolean showLabel = pref.getBoolean(Constants.SETTING_SHOW_LABEL, Constants.SETTING_SHOW_LABEL_DEFAULT); if (showLabel && !BatteryLevel.getCurrent().is_dockFriendly()) editor.remove(Constants.SETTING_SHOW_LABEL); version = 4; } editor.putInt(Constants.SETTING_VERSION, version); if (Build.VERSION.SDK_INT < 9) editor.commit(); else editor.apply(); } public int getTextSize() { return textSize; } public int getTextPosition() { return textPosition; } public int getBatterySelection() { return batterySelection; } public int getTextColorCode() { return textColorCode; } public int getMargin() { return margin; } public boolean isAlwaysShow() { return alwaysShow; } public boolean isShowNotDocked() { return showNotDocked; } public boolean isShowLabel() { return showLabel; } public boolean isShowOldStatus() { return showOldStatus; } public boolean isSwapBatteries() { return swapBatteries; } public String getTheme() { return theme; } }