/** * Copyright 2016 JustWayward Team * <p/> * 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 * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * 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 com.justwayward.reader.manager; import com.justwayward.reader.base.Constant; import com.justwayward.reader.bean.support.BookMark; import com.justwayward.reader.utils.AppUtils; import com.justwayward.reader.utils.ScreenUtils; import com.justwayward.reader.utils.SharedPreferencesUtil; import java.util.ArrayList; import java.util.List; /** * @author yuyh. * @date 2016/9/23. */ public class SettingManager { private volatile static SettingManager manager; public static SettingManager getInstance() { return manager != null ? manager : (manager = new SettingManager()); } /** * 保存书籍阅读字体大小 * * @param bookId 需根据bookId对应,避免由于字体大小引起的分页不准确 * @param fontSizePx * @return */ public void saveFontSize(String bookId, int fontSizePx) { // 书籍对应 SharedPreferencesUtil.getInstance().putInt(getFontSizeKey(bookId), fontSizePx); } /** * 保存全局生效的阅读字体大小 * * @param fontSizePx */ public void saveFontSize(int fontSizePx) { saveFontSize("", fontSizePx); } public int getReadFontSize(String bookId) { return SharedPreferencesUtil.getInstance().getInt(getFontSizeKey(bookId), ScreenUtils.dpToPxInt(16)); } public int getReadFontSize() { return getReadFontSize(""); } private String getFontSizeKey(String bookId) { return bookId + "-readFontSize"; } public int getReadBrightness() { return SharedPreferencesUtil.getInstance().getInt(getLightnessKey(), (int) ScreenUtils.getScreenBrightness(AppUtils.getAppContext())); } /** * 保存阅读界面屏幕亮度 * * @param percent 亮度比例 0~100 */ public void saveReadBrightness(int percent) { SharedPreferencesUtil.getInstance().putInt(getLightnessKey(), percent); } private String getLightnessKey() { return "readLightness"; } public synchronized void saveReadProgress(String bookId, int currentChapter, int m_mbBufBeginPos, int m_mbBufEndPos) { SharedPreferencesUtil.getInstance() .putInt(getChapterKey(bookId), currentChapter) .putInt(getStartPosKey(bookId), m_mbBufBeginPos) .putInt(getEndPosKey(bookId), m_mbBufEndPos); } /** * 获取上次阅读章节及位置 * * @param bookId * @return */ public int[] getReadProgress(String bookId) { int lastChapter = SharedPreferencesUtil.getInstance().getInt(getChapterKey(bookId), 1); int startPos = SharedPreferencesUtil.getInstance().getInt(getStartPosKey(bookId), 0); int endPos = SharedPreferencesUtil.getInstance().getInt(getEndPosKey(bookId), 0); return new int[]{lastChapter, startPos, endPos}; } public void removeReadProgress(String bookId) { SharedPreferencesUtil.getInstance() .remove(getChapterKey(bookId)) .remove(getStartPosKey(bookId)) .remove(getEndPosKey(bookId)); } private String getChapterKey(String bookId) { return bookId + "-chapter"; } private String getStartPosKey(String bookId) { return bookId + "-startPos"; } private String getEndPosKey(String bookId) { return bookId + "-endPos"; } public boolean addBookMark(String bookId, BookMark mark) { List<BookMark> marks = SharedPreferencesUtil.getInstance().getObject(getBookMarksKey(bookId), ArrayList.class); if (marks != null && marks.size() > 0) { for (BookMark item : marks) { if (item.chapter == mark.chapter && item.startPos == mark.startPos) { return false; } } } else { marks = new ArrayList<>(); } marks.add(mark); SharedPreferencesUtil.getInstance().putObject(getBookMarksKey(bookId), marks); return true; } public List<BookMark> getBookMarks(String bookId) { return SharedPreferencesUtil.getInstance().getObject(getBookMarksKey(bookId), ArrayList.class); } public void clearBookMarks(String bookId) { SharedPreferencesUtil.getInstance().remove(getBookMarksKey(bookId)); } private String getBookMarksKey(String bookId) { return bookId + "-marks"; } public void saveReadTheme(int theme) { SharedPreferencesUtil.getInstance().putInt("readTheme", theme); } public int getReadTheme() { if (SharedPreferencesUtil.getInstance().getBoolean(Constant.ISNIGHT, false)) { return ThemeManager.NIGHT; } return SharedPreferencesUtil.getInstance().getInt("readTheme", 3); } /** * 是否可以使用音量键翻页 * * @param enable */ public void saveVolumeFlipEnable(boolean enable) { SharedPreferencesUtil.getInstance().putBoolean("volumeFlip", enable); } public boolean isVolumeFlipEnable() { return SharedPreferencesUtil.getInstance().getBoolean("volumeFlip", true); } public void saveAutoBrightness(boolean enable) { SharedPreferencesUtil.getInstance().putBoolean("autoBrightness", enable); } public boolean isAutoBrightness() { return SharedPreferencesUtil.getInstance().getBoolean("autoBrightness", false); } /** * 保存用户选择的性别 * * @param sex male female */ public void saveUserChooseSex(String sex) { SharedPreferencesUtil.getInstance().putString("userChooseSex", sex); } /** * 获取用户选择性别 * * @return */ public String getUserChooseSex() { return SharedPreferencesUtil.getInstance().getString("userChooseSex", Constant.Gender.MALE); } public boolean isUserChooseSex() { return SharedPreferencesUtil.getInstance().exists("userChooseSex"); } public boolean isNoneCover() { return SharedPreferencesUtil.getInstance().getBoolean("isNoneCover", false); } public void saveNoneCover(boolean isNoneCover) { SharedPreferencesUtil.getInstance().putBoolean("isNoneCover", isNoneCover); } }