diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-09-15 00:56:02 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-09-15 00:56:02 +0900 |
commit | 7c4deb7a9109a277f95066ac40af1d96f8f410ec (patch) | |
tree | 396f8bf3e7b7a4b458fffc503e372a8544123d22 /app/src/main/java/net | |
parent | 93b315a3ac7536b007e385bba4434bbda9410de8 (diff) | |
download | SmileEssence-7c4deb7a9109a277f95066ac40af1d96f8f410ec.tar.gz |
Preferences まわりをリファクタ
Diffstat (limited to 'app/src/main/java/net')
25 files changed, 191 insertions, 247 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.java b/app/src/main/java/net/lacolaco/smileessence/Application.java index 20e6f7aa..3fdbad88 100644 --- a/app/src/main/java/net/lacolaco/smileessence/Application.java +++ b/app/src/main/java/net/lacolaco/smileessence/Application.java @@ -24,11 +24,28 @@ package net.lacolaco.smileessence; +import android.content.Context; + public class Application extends com.activeandroid.app.Application { // ------------------------------ FIELDS ------------------------------ private int themeIndex; + private static Context context; + + public static Context getContext() { + if (context == null) { + throw new IllegalStateException("Application is not initialized"); + } + return context; + } + + @Override + public void onCreate() { + super.onCreate(); + // onCreate は一度しか呼ばれないはずだから安全なはず + context = getApplicationContext(); + } // --------------------- GETTER / SETTER METHODS --------------------- @@ -39,4 +56,5 @@ public class Application extends com.activeandroid.app.Application { public void setThemeIndex(int themeIndex) { this.themeIndex = themeIndex; } + } diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java index 62bc24eb..13c21d0f 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java @@ -39,7 +39,6 @@ import net.lacolaco.smileessence.command.status.StatusCommand; import net.lacolaco.smileessence.command.user.UserCommand; import net.lacolaco.smileessence.entity.CommandSetting; import net.lacolaco.smileessence.logging.Logger; -import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.util.Themes; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; import net.lacolaco.smileessence.viewmodel.CheckBoxModel; @@ -87,7 +86,6 @@ public class EditCommandActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { - UserPreferenceHelper userPreferenceHelper = new UserPreferenceHelper(this); setTheme(Themes.getTheme(((Application) getApplication()).getThemeIndex())); super.onCreate(savedInstanceState); setContentView(R.layout.layout_edit_list); diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/EditTabActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/EditTabActivity.java index 8145ae7f..bdce51b9 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/EditTabActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/EditTabActivity.java @@ -90,15 +90,10 @@ public class EditTabActivity extends Activity { return (MainActivity) getParent(); } - private UserPreferenceHelper getPreference() { - return new UserPreferenceHelper(this); - } - // ------------------------ OVERRIDE METHODS ------------------------ @Override protected void onCreate(Bundle savedInstanceState) { - UserPreferenceHelper userPreferenceHelper = getPreference(); setTheme(Themes.getTheme(((Application) getApplication()).getThemeIndex())); super.onCreate(savedInstanceState); setContentView(R.layout.layout_edit_list); @@ -135,11 +130,11 @@ public class EditTabActivity extends Activity { } private int getPosition(int key, int defaultValue) { - return Integer.parseInt(getPreference().getValue(key, String.valueOf(defaultValue))); + return UserPreferenceHelper.getInstance().get(key, defaultValue); } private boolean getVisibility(int key) { - return getPreference().getValue(key, true); + return UserPreferenceHelper.getInstance().get(key, true); } private void initializeViews() { @@ -150,11 +145,7 @@ public class EditTabActivity extends Activity { adapter.update(); } - private void putPosition(int key, int value) { - getPreference().putValue(key, String.valueOf(value)); - } - private void putVisibility(int key, boolean value) { - getPreference().putValue(key, value); + UserPreferenceHelper.getInstance().set(key, value); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java index 8d8bd695..5452051c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java @@ -32,7 +32,6 @@ import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.view.ViewPager; -import android.text.TextUtils; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -50,7 +49,7 @@ import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.notification.NotificationType; import net.lacolaco.smileessence.notification.Notificator; -import net.lacolaco.smileessence.preference.AppPreferenceHelper; +import net.lacolaco.smileessence.preference.InternalPreferenceHelper; import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.twitter.*; import net.lacolaco.smileessence.twitter.UserStreamListener; @@ -69,9 +68,6 @@ public class MainActivity extends Activity { public static final int REQUEST_OAUTH = 10; public static final int REQUEST_GET_PICTURE_FROM_GALLERY = 11; public static final int REQUEST_GET_PICTURE_FROM_CAMERA = 12; - private static final String KEY_LAST_USED_SEARCH_QUERY = "lastUsedSearchQuery"; - private static final String KEY_LAST_USED_ACCOUNT_ID = "lastUsedAccountID"; - private static final String KEY_LAST_USER_LIST = "lastUsedUserList"; private ViewPager viewPager; private PageListAdapter pagerAdapter; private Account currentAccount; @@ -81,10 +77,6 @@ public class MainActivity extends Activity { // --------------------- GETTER / SETTER METHODS --------------------- - public AppPreferenceHelper getAppPreferenceHelper() { - return new AppPreferenceHelper(this); - } - public Uri getCameraTempFilePath() { return cameraTempFilePath; } @@ -102,36 +94,31 @@ public class MainActivity extends Activity { } public String getLastSearch() { - return getAppPreferenceHelper().getValue(KEY_LAST_USED_SEARCH_QUERY, ""); + return InternalPreferenceHelper.getInstance().get(R.string.key_last_used_search_query, ""); } public void setLastSearch(String query) { - getAppPreferenceHelper().putValue(KEY_LAST_USED_SEARCH_QUERY, query); + InternalPreferenceHelper.getInstance().set(R.string.key_last_used_search_query, query); } private long getLastUsedAccountID() { - String id = getAppPreferenceHelper().getValue(KEY_LAST_USED_ACCOUNT_ID, ""); - if (TextUtils.isEmpty(id)) { - return -1; - } else { - return Long.parseLong(id); - } + return InternalPreferenceHelper.getInstance().get(R.string.key_last_used_account_id, -1L); } private void setLastUsedAccountID(Account account) { - getAppPreferenceHelper().putValue(KEY_LAST_USED_ACCOUNT_ID, account.getId()); + InternalPreferenceHelper.getInstance().set(R.string.key_last_used_account_id, account.getId()); } public String getLastUserList() { - return getAppPreferenceHelper().getValue(KEY_LAST_USER_LIST, ""); + return InternalPreferenceHelper.getInstance().get(R.string.key_last_used_user_list, ""); } - public int getThemeIndex() { - return ((Application) getApplication()).getThemeIndex(); + public void setLastUserList(String lastUserList) { + InternalPreferenceHelper.getInstance().set(R.string.key_last_used_user_list, lastUserList); } - public UserPreferenceHelper getUserPreferenceHelper() { - return new UserPreferenceHelper(this); + public int getThemeIndex() { + return ((Application) getApplication()).getThemeIndex(); } public String getVersion() { @@ -333,10 +320,6 @@ public class MainActivity extends Activity { } } - public void saveLastUserList(String lastUserList) { - getAppPreferenceHelper().putValue(KEY_LAST_USER_LIST, lastUserList); - } - public void setSelectedPageIndex(final int position, final boolean smooth) { new UIHandler() { @Override @@ -429,13 +412,13 @@ public class MainActivity extends Activity { pagerAdapter.addPage(PostFragment.class, getString(R.string.page_name_post), null, false); pagerAdapter.addPage(HomeFragment.class, getString(R.string.page_name_home), null, false); pagerAdapter.addPage(MentionsFragment.class, getString(R.string.page_name_mentions), null, false); - if (getUserPreferenceHelper().getValue(R.string.key_page_history_visibility, true)) + if (UserPreferenceHelper.getInstance().get(R.string.key_page_history_visibility, true)) pagerAdapter.addPage(HistoryFragment.class, getString(R.string.page_name_history), null, false); - if (getUserPreferenceHelper().getValue(R.string.key_page_messages_visibility, true)) + if (UserPreferenceHelper.getInstance().get(R.string.key_page_messages_visibility, true)) pagerAdapter.addPage(MessagesFragment.class, getString(R.string.page_name_messages), null, false); - if (getUserPreferenceHelper().getValue(R.string.key_page_search_visibility, true)) + if (UserPreferenceHelper.getInstance().get(R.string.key_page_search_visibility, true)) pagerAdapter.addPage(SearchFragment.class, getString(R.string.page_name_search), null, false); - if (getUserPreferenceHelper().getValue(R.string.key_page_list_visibility, true)) + if (UserPreferenceHelper.getInstance().get(R.string.key_page_list_visibility, true)) pagerAdapter.addPage(UserListFragment.class, getString(R.string.page_name_list), null, false); pagerAdapter.notifyDataSetChanged(); viewPager.setOffscreenPageLimit(pagerAdapter.getCount()); @@ -475,7 +458,7 @@ public class MainActivity extends Activity { } private void setTheme() { - ((Application) getApplication()).setThemeIndex(getUserPreferenceHelper().getValue(R.string.key_setting_theme, 0)); + ((Application) getApplication()).setThemeIndex(UserPreferenceHelper.getInstance().get(R.string.key_setting_theme, 0)); setTheme(Themes.getTheme(getThemeIndex())); } diff --git a/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenSearch.java b/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenSearch.java index 7ddcc362..8dc06e41 100644 --- a/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenSearch.java +++ b/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenSearch.java @@ -29,6 +29,7 @@ import android.app.Activity; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.entity.SearchQuery; +import net.lacolaco.smileessence.preference.UserPreferenceHelper; public class CommandOpenSearch extends Command { @@ -56,7 +57,7 @@ public class CommandOpenSearch extends Command { @Override public boolean isEnabled() { - return ((MainActivity) getActivity()).getUserPreferenceHelper().getValue(R.string.key_page_search_visibility, true); + return UserPreferenceHelper.getInstance().get(R.string.key_page_search_visibility, true); } // -------------------------- OTHER METHODS -------------------------- diff --git a/app/src/main/java/net/lacolaco/smileessence/command/CommandSearchOnTwitter.java b/app/src/main/java/net/lacolaco/smileessence/command/CommandSearchOnTwitter.java index 4be2862e..cb037636 100644 --- a/app/src/main/java/net/lacolaco/smileessence/command/CommandSearchOnTwitter.java +++ b/app/src/main/java/net/lacolaco/smileessence/command/CommandSearchOnTwitter.java @@ -28,6 +28,7 @@ import android.app.Activity; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; +import net.lacolaco.smileessence.preference.UserPreferenceHelper; public class CommandSearchOnTwitter extends Command { @@ -51,7 +52,7 @@ public class CommandSearchOnTwitter extends Command { @Override public boolean isEnabled() { - return ((MainActivity) getActivity()).getUserPreferenceHelper().getValue(R.string.key_page_search_visibility, true); + return UserPreferenceHelper.getInstance().get(R.string.key_page_search_visibility, true); } // -------------------------- OTHER METHODS -------------------------- diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java index dd870836..e5288f29 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java @@ -1,9 +1,8 @@ package net.lacolaco.smileessence.entity; -import com.google.common.base.Function; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.google.common.collect.Lists; +import net.lacolaco.smileessence.util.ListUtils; import twitter4j.*; import java.util.Date; @@ -33,12 +32,7 @@ public class DirectMessage { } public synchronized static List<DirectMessage> fromTwitter(List<twitter4j.DirectMessage> sts) { - return Lists.transform(sts, new Function<twitter4j.DirectMessage, DirectMessage>() { - @Override - public DirectMessage apply(twitter4j.DirectMessage input) { - return DirectMessage.fromTwitter(input); - } - }); + return ListUtils.map(sts, DirectMessage::fromTwitter); } // インスタンス diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java index effec22f..1d82e268 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java @@ -1,10 +1,9 @@ package net.lacolaco.smileessence.entity; -import com.google.common.base.Function; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.google.common.collect.Lists; import net.lacolaco.smileessence.twitter.util.TwitterUtils; +import net.lacolaco.smileessence.util.ListUtils; import twitter4j.*; import java.util.Date; @@ -34,12 +33,7 @@ public class Tweet { } public synchronized static List<Tweet> fromTwitter(List<Status> sts) { - return Lists.transform(sts, new Function<Status, Tweet>() { - @Override - public Tweet apply(twitter4j.Status input) { - return Tweet.fromTwitter(input); - } - }); + return ListUtils.map(sts, Tweet::fromTwitter); } // インスタンス diff --git a/app/src/main/java/net/lacolaco/smileessence/preference/AppPreferenceHelper.java b/app/src/main/java/net/lacolaco/smileessence/preference/InternalPreferenceHelper.java index a5dd9b9d..a99d7639 100644 --- a/app/src/main/java/net/lacolaco/smileessence/preference/AppPreferenceHelper.java +++ b/app/src/main/java/net/lacolaco/smileessence/preference/InternalPreferenceHelper.java @@ -25,16 +25,29 @@ package net.lacolaco.smileessence.preference; import android.content.Context; +import android.content.SharedPreferences; +import net.lacolaco.smileessence.Application; -public class AppPreferenceHelper extends SharedPreferenceHelper { +public class InternalPreferenceHelper extends SharedPreferenceHelper { // ------------------------------ FIELDS ------------------------------ private static final String FILE_NAME = "AppPreference"; + private static final InternalPreferenceHelper instance = new InternalPreferenceHelper(); + + public static InternalPreferenceHelper getInstance() { + return instance; + } + + private InternalPreferenceHelper() { + } // --------------------------- CONSTRUCTORS --------------------------- - public AppPreferenceHelper(Context context) { - super(context, FILE_NAME); + @Override + protected SharedPreferences getPreferences() { + + return Application.getContext().getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); + } } diff --git a/app/src/main/java/net/lacolaco/smileessence/preference/SharedPreferenceHelper.java b/app/src/main/java/net/lacolaco/smileessence/preference/SharedPreferenceHelper.java index 47d58dfb..51283078 100644 --- a/app/src/main/java/net/lacolaco/smileessence/preference/SharedPreferenceHelper.java +++ b/app/src/main/java/net/lacolaco/smileessence/preference/SharedPreferenceHelper.java @@ -24,90 +24,102 @@ package net.lacolaco.smileessence.preference; -import android.content.Context; import android.content.SharedPreferences; +import net.lacolaco.smileessence.Application; import java.util.Set; -public class SharedPreferenceHelper { - - // ------------------------------ FIELDS ------------------------------ - - protected final Context context; - protected final String fileName; - - // --------------------------- CONSTRUCTORS --------------------------- - - public SharedPreferenceHelper(Context context, String fileName) { - this.context = context; - this.fileName = fileName; - } - +public abstract class SharedPreferenceHelper { // --------------------- GETTER / SETTER METHODS --------------------- - protected SharedPreferences getPref() { - return context.getSharedPreferences(fileName, Context.MODE_PRIVATE); - } + protected abstract SharedPreferences getPreferences(); // -------------------------- OTHER METHODS -------------------------- - public boolean getValue(String key, boolean defaultValue) { - return getPref().getBoolean(key, defaultValue); + public String get(int key, String defaultValue) { + return getPreferences().getString(getString(key), defaultValue); + } + + // int, long, float value may be stored in String format (old versions) + public int get(int key, int defaultValue) { + try { + return getPreferences().getInt(getString(key), defaultValue); + } catch (ClassCastException ex) { + int ret = Integer.parseInt(get(key, String.valueOf(defaultValue))); + set(key, ret); + return ret; + } } - public int getValue(String key, int defaultValue) { - return Integer.valueOf(getPref().getString(key, String.valueOf(defaultValue))); + public long get(int key, long defaultValue) { + try { + return getPreferences().getLong(getString(key), defaultValue); + } catch (ClassCastException ex) { + long ret = Long.parseLong(get(key, String.valueOf(defaultValue))); + set(key, ret); + return ret; + } } - public float getValue(String key, float defaultValue) { - return Float.valueOf(getPref().getString(key, String.valueOf(defaultValue))); + public float get(int key, float defaultValue) { + try { + return getPreferences().getFloat(getString(key), defaultValue); + } catch (ClassCastException ex) { + float ret = Float.parseFloat(get(key, String.valueOf(defaultValue))); + set(key, ret); + return ret; + } } - public long getValue(String key, long defaultValue) { - return Long.valueOf(getPref().getString(key, String.valueOf(defaultValue))); + public boolean get(int key, boolean defaultValue) { + return getPreferences().getBoolean(getString(key), defaultValue); } - public String getValue(String key, String defaultValue) { - return getPref().getString(key, defaultValue); + public Set<String> get(int key, Set<String> defaultValue) { + return getPreferences().getStringSet(getString(key), defaultValue); } - public Set<String> getValue(String key, Set<String> defaultValue) { - return getPref().getStringSet(key, defaultValue); + public boolean set(int key, String value) { + return getPreferences().edit() + .putString(getString(key), value) + .commit(); } - public boolean putValue(String key, boolean value) { - SharedPreferences.Editor editor = getPref().edit(); - editor.putBoolean(key, value); - return editor.commit(); + public boolean set(int key, int value) { + return getPreferences().edit() + .putInt(getString(key), value) + .commit(); } - public boolean putValue(String key, int value) { - SharedPreferences.Editor editor = getPref().edit(); - editor.putString(key, String.valueOf(value)); - return editor.commit(); + public boolean set(int key, long value) { + return getPreferences().edit() + .putLong(getString(key), value) + .commit(); } - public boolean putValue(String key, float value) { - SharedPreferences.Editor editor = getPref().edit(); - editor.putString(key, String.valueOf(value)); - return editor.commit(); + public boolean set(int key, float value) { + return getPreferences().edit() + .putFloat(getString(key), value) + .commit(); } - public boolean putValue(String key, long value) { - SharedPreferences.Editor editor = getPref().edit(); - editor.putString(key, String.valueOf(value)); - return editor.commit(); + public boolean set(int key, boolean value) { + return getPreferences().edit() + .putBoolean(getString(key), value) + .commit(); } - public boolean putValue(String key, String value) { - SharedPreferences.Editor editor = getPref().edit(); - editor.putString(key, value); - return editor.commit(); + public boolean set(int key, Set<String> value) { + return getPreferences().edit() + .putStringSet(getString(key), value) + .commit(); } - public boolean putValue(String key, Set<String> value) { - SharedPreferences.Editor editor = getPref().edit(); - editor.putStringSet(key, value); - return editor.commit(); + private String getString(int resID) { + try { + return Application.getContext().getString(resID); + } catch (Exception e) { + return null; + } } } diff --git a/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java b/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java index 67c02c37..61420658 100644 --- a/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java +++ b/app/src/main/java/net/lacolaco/smileessence/preference/UserPreferenceHelper.java @@ -27,104 +27,26 @@ package net.lacolaco.smileessence.preference; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import net.lacolaco.smileessence.Application; import java.util.Set; public class UserPreferenceHelper extends SharedPreferenceHelper { - - // ------------------------------ FIELDS ------------------------------ - - public static final int TEXT_SIZE_MIN = 8; - public static final int TEXT_SIZE_MAX = 24; - public static final int TIMELINES_MIN = 1; - public static final int TIMELINES_MAX = 200; - // --------------------------- CONSTRUCTORS --------------------------- - public UserPreferenceHelper(Context context) { - super(context, null); - } - - // --------------------- GETTER / SETTER METHODS --------------------- - - @Override - protected SharedPreferences getPref() { - return PreferenceManager.getDefaultSharedPreferences(context); - } - - // -------------------------- OTHER METHODS -------------------------- - - public boolean getValue(int keyID, boolean defaultValue) { - return getString(keyID) != null ? super.getValue(getString(keyID), defaultValue) : defaultValue; - } - - public int getValue(int keyID, int defaultValue) { - return getString(keyID) != null ? super.getValue(getString(keyID), defaultValue) : defaultValue; - } - - public float getValue(int keyID, float defaultValue) { - return getString(keyID) != null ? super.getValue(getString(keyID), defaultValue) : defaultValue; - } + private static final UserPreferenceHelper instance = new UserPreferenceHelper(); - public long getValue(int keyID, long defaultValue) { - return getString(keyID) != null ? super.getValue(getString(keyID), defaultValue) : defaultValue; + public static UserPreferenceHelper getInstance() { + return instance; } - public String getValue(int keyID, String defaultValue) { - return getString(keyID) != null ? super.getValue(getString(keyID), defaultValue) : defaultValue; + private UserPreferenceHelper() { } - public Set<String> getValue(int keyID, Set<String> defaultValue) { - return getString(keyID) != null ? super.getValue(getString(keyID), defaultValue) : defaultValue; - } - - public boolean putValue(int keyID, boolean value) { - if (getString(keyID) == null) { - return false; - } - return super.putValue(getString(keyID), value); - } - - public boolean putValue(int keyID, int value) { - if (getString(keyID) == null) { - return false; - } - return super.putValue(getString(keyID), value); - } - - public boolean putValue(int keyID, float value) { - if (getString(keyID) == null) { - return false; - } - return super.putValue(getString(keyID), value); - } - - public boolean putValue(int keyID, long value) { - if (getString(keyID) == null) { - return false; - } - return super.putValue(getString(keyID), value); - } - - public boolean putValue(int keyID, String value) { - if (getString(keyID) == null) { - return false; - } - return super.putValue(getString(keyID), value); - } - - public boolean putValue(int keyID, Set<String> value) { - if (getString(keyID) == null) { - return false; - } - return super.putValue(getString(keyID), value); - } + // --------------------- GETTER / SETTER METHODS --------------------- - protected String getString(int resID) { - try { - return context.getString(resID); - } catch (Exception e) { - return null; - } + @Override + protected SharedPreferences getPreferences() { + return PreferenceManager.getDefaultSharedPreferences(Application.getContext()); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java index c4806a06..6a8936f3 100644 --- a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java +++ b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java @@ -32,6 +32,7 @@ import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.notification.Notificator; +import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; import net.lacolaco.smileessence.view.adapter.EventListAdapter; import net.lacolaco.smileessence.view.adapter.MessageListAdapter; @@ -165,7 +166,7 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect @Override public void onUnfavorite(twitter4j.User source, twitter4j.User target, twitter4j.Status unfavoritedStatus) { Tweet tweet = Tweet.fromTwitter(unfavoritedStatus); - boolean unfavNoticeEnabled = activity.getUserPreferenceHelper().getValue(R.string.key_setting_notify_on_unfavorited, true); + boolean unfavNoticeEnabled = UserPreferenceHelper.getInstance().get(R.string.key_setting_notify_on_unfavorited, true); if (isMe(User.fromTwitter(target)) && unfavNoticeEnabled) { addToHistory(new EventViewModel(EnumEvent.UNFAVORITED, User.fromTwitter(source), tweet)); } diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java index 8590c935..66ff7e1f 100644 --- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java +++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java @@ -24,8 +24,6 @@ package net.lacolaco.smileessence.twitter.task; -import android.app.Activity; - import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.entity.DirectMessage; import net.lacolaco.smileessence.logging.Logger; diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java index a57fbeaa..3f227965 100644 --- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java +++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java @@ -24,12 +24,7 @@ package net.lacolaco.smileessence.twitter.task; -import android.app.Activity; - -import com.google.common.base.Function; -import com.google.common.collect.Lists; import net.lacolaco.smileessence.R; -import net.lacolaco.smileessence.data.FavoriteCache; import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.notification.NotificationType; diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java b/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java index b2557094..1886508c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java +++ b/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java @@ -30,15 +30,13 @@ import com.twitter.Validator; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; -import net.lacolaco.smileessence.entity.Account; -import net.lacolaco.smileessence.entity.Tweet; -import net.lacolaco.smileessence.entity.User; +import net.lacolaco.smileessence.entity.*; +import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.twitter.task.ShowDirectMessageTask; import net.lacolaco.smileessence.twitter.task.ShowStatusTask; import net.lacolaco.smileessence.twitter.task.ShowUserTask; import net.lacolaco.smileessence.twitter.task.TwitterTask; -import net.lacolaco.smileessence.entity.DirectMessage; import twitter4j.Paging; import twitter4j.URLEntity; import twitter4j.UserMentionEntity; @@ -222,7 +220,7 @@ public class TwitterUtils { } public static int getPagingCount(MainActivity activity) { - return activity.getUserPreferenceHelper().getValue(R.string.key_setting_timelines, 20); + return UserPreferenceHelper.getInstance().get(R.string.key_setting_timelines, 20); } public static String getMessageSummary(DirectMessage message) { diff --git a/app/src/main/java/net/lacolaco/smileessence/util/Function.java b/app/src/main/java/net/lacolaco/smileessence/util/Function.java new file mode 100644 index 00000000..82ea8c03 --- /dev/null +++ b/app/src/main/java/net/lacolaco/smileessence/util/Function.java @@ -0,0 +1,18 @@ +package net.lacolaco.smileessence.util; + +import java.util.Objects; + +public interface Function<T, R> { + R apply(T t); + /*default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { + Objects.requireNonNull(before); + return (V v) -> apply(before.apply(v)); + } + default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) { + Objects.requireNonNull(after); + return (T t) -> after.apply(apply(t)); + } + static <T> Function<T, T> identity() { + return t -> t; + }*/ +} diff --git a/app/src/main/java/net/lacolaco/smileessence/util/ListUtils.java b/app/src/main/java/net/lacolaco/smileessence/util/ListUtils.java new file mode 100644 index 00000000..6ebc7579 --- /dev/null +++ b/app/src/main/java/net/lacolaco/smileessence/util/ListUtils.java @@ -0,0 +1,14 @@ +package net.lacolaco.smileessence.util; + +import java.util.ArrayList; +import java.util.List; + +public class ListUtils { + public static <T, R> List<R> map(List<T> orig, Function<T, R> func) { + List<R> result = new ArrayList<>(orig.size()); + for (T item : orig) { + result.add(func.apply(item)); + } + return result; + } +} diff --git a/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java index a4d8ddb1..2fb4ea9e 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java @@ -230,13 +230,12 @@ public class PostFragment extends PageFragment implements TextWatcher, View.OnFo Logger.debug("onCreateView"); MainActivity activity = (MainActivity) getActivity(); PostState.getState().setListener(this); - UserPreferenceHelper preferenceHelper = new UserPreferenceHelper(activity); View v = inflater.inflate(R.layout.fragment_post, null); buttonTweet = getTweetButton(v); buttonTweet.setOnClickListener(this); editText = getEditText(v); textViewCount = getCountTextView(v); - int textSize = preferenceHelper.getValue(R.string.key_setting_text_size, 10); + int textSize = UserPreferenceHelper.getInstance().get(R.string.key_setting_text_size, 10); editText.addTextChangedListener(this); editText.setOnFocusChangeListener(this); editText.setTextSize(textSize + 4); @@ -376,7 +375,7 @@ public class PostFragment extends PageFragment implements TextWatcher, View.OnFo PostState state = PostState.getState(); StatusUpdate statusUpdate = state.toStatusUpdate(); MainActivity mainActivity = (MainActivity) getActivity(); - boolean resizeFlag = new UserPreferenceHelper(mainActivity).getValue(R.string.key_setting_resize_post_image, false); + boolean resizeFlag = UserPreferenceHelper.getInstance().get(R.string.key_setting_resize_post_image, false); TweetTask tweetTask = new TweetTask(mainActivity.getCurrentAccount().getTwitter(), statusUpdate, state.getMediaFilePath(), resizeFlag); tweetTask.execute(); PostState.newState().beginTransaction().commit(); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java index e3f813c2..894461a0 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/SettingFragment.java @@ -37,7 +37,6 @@ import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.LicenseActivity; import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.notification.Notificator; -import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.view.dialog.ConfirmDialogFragment; import net.lacolaco.smileessence.view.dialog.SimpleDialogFragment; @@ -45,6 +44,10 @@ import static android.content.SharedPreferences.OnSharedPreferenceChangeListener public class SettingFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener, Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener { + private static final int TEXT_SIZE_MIN = 8; + private static final int TEXT_SIZE_MAX = 24; + private static final int TIMELINES_MIN = 1; + private static final int TIMELINES_MAX = 200; // ------------------------ INTERFACE METHODS ------------------------ @@ -57,7 +60,7 @@ public class SettingFragment extends PreferenceFragment implements OnSharedPrefe if (preference.getKey().contentEquals(getString(R.string.key_setting_text_size))) { if (TextUtils.isDigitsOnly(newValueStr)) { int newTextSize = Integer.parseInt(newValueStr); - if (UserPreferenceHelper.TEXT_SIZE_MIN <= newTextSize && newTextSize <= UserPreferenceHelper.TEXT_SIZE_MAX) { + if (TEXT_SIZE_MIN <= newTextSize && newTextSize <= TEXT_SIZE_MAX) { return true; } Notificator.getInstance().publish(R.string.error_setting_text_size_range); @@ -68,7 +71,7 @@ public class SettingFragment extends PreferenceFragment implements OnSharedPrefe } else if (preference.getKey().contentEquals(getString(R.string.key_setting_timelines))) { if (TextUtils.isDigitsOnly(newValueStr)) { int newTextSize = Integer.parseInt(newValueStr); - if (UserPreferenceHelper.TIMELINES_MIN <= newTextSize && newTextSize <= UserPreferenceHelper.TIMELINES_MAX) { + if (TIMELINES_MIN <= newTextSize && newTextSize <= TIMELINES_MAX) { return true; } Notificator.getInstance().publish(R.string.error_setting_timelines_range); @@ -98,7 +101,7 @@ public class SettingFragment extends PreferenceFragment implements OnSharedPrefe public void run() { Notificator.getInstance().publish(R.string.notice_cleared_account); Account.deleteAll(); - finishActivity(); + getActivity().finish(); } }, false); } else if (key.contentEquals(getString(R.string.key_setting_licenses))) { @@ -159,10 +162,6 @@ public class SettingFragment extends PreferenceFragment implements OnSharedPrefe return findPreference(getString(preferenceResID)); } - private void finishActivity() { - getActivity().finish(); - } - private void openLicenseActivity() { Intent intent = new Intent(getActivity(), LicenseActivity.class); getActivity().startActivity(intent); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java index 9e8fd65b..cd186dca 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java @@ -219,7 +219,7 @@ public class UserListFragment extends CustomListFragment<UserListListAdapter> im } public void startUserList(Twitter twitter, String listFullName) { - getMainActivity().saveLastUserList(listFullName); + getMainActivity().setLastUserList(listFullName); final UserListListAdapter adapter = getAdapter(); adapter.setListFullName(listFullName); adapter.clear(); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java index 99146758..76824e45 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java @@ -29,8 +29,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; -import com.google.common.collect.Iterables; - import net.lacolaco.smileessence.util.UIHandler; import net.lacolaco.smileessence.viewmodel.IViewModel; diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/ConfirmDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/ConfirmDialogFragment.java index f1f1f126..f86f0a5f 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/ConfirmDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/ConfirmDialogFragment.java @@ -59,7 +59,7 @@ public abstract class ConfirmDialogFragment extends StackableDialogFragment { } public static void show(Activity activity, String text, final Runnable onOK, final Runnable onCancel, boolean ignorable) { - boolean confirm = new UserPreferenceHelper(activity).getValue(R.string.key_setting_show_confirm_dialog, true); + boolean confirm = UserPreferenceHelper.getInstance().get(R.string.key_setting_show_confirm_dialog, true); if (!confirm && ignorable) { onOK.run(); return; diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java index 0eb78e11..4391a76a 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java @@ -138,9 +138,8 @@ public class EventViewModel implements IViewModel { if (convertedView == null) { convertedView = inflater.inflate(R.layout.list_item_status, null); } - UserPreferenceHelper preferenceHelper = new UserPreferenceHelper(activity); - int textSize = preferenceHelper.getValue(R.string.key_setting_text_size, 10); - int nameStyle = preferenceHelper.getValue(R.string.key_setting_namestyle, 0); + int textSize = UserPreferenceHelper.getInstance().get(R.string.key_setting_text_size, 10); + int nameStyle = UserPreferenceHelper.getInstance().get(R.string.key_setting_namestyle, 0); int theme = ((MainActivity) activity).getThemeIndex(); NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon); ImageCache.getInstance().setImageToView(getIconURL(), icon); diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java index 7930e410..b6c640b5 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java @@ -91,9 +91,8 @@ public class MessageViewModel implements IViewModel { if (convertedView == null) { convertedView = inflater.inflate(R.layout.list_item_status, null); } - UserPreferenceHelper preferenceHelper = new UserPreferenceHelper(activity); - int textSize = preferenceHelper.getValue(R.string.key_setting_text_size, 10); - int nameStyle = preferenceHelper.getValue(R.string.key_setting_namestyle, 0); + int textSize = UserPreferenceHelper.getInstance().get(R.string.key_setting_text_size, 10); + int nameStyle = UserPreferenceHelper.getInstance().get(R.string.key_setting_namestyle, 0); int theme = ((MainActivity) activity).getThemeIndex(); NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon); ImageCache.getInstance().setImageToView(directMessage.getSender().getProfileImageUrl(), icon); diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java index 1013b1a9..2385019d 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java @@ -147,7 +147,7 @@ public class StatusViewModel implements IViewModel { @Override public View getView(final Activity activity, final LayoutInflater inflater, View convertedView) { - boolean extendStatusURL = new UserPreferenceHelper(activity).getValue(R.string.key_setting_extend_status_url, true); + boolean extendStatusURL = UserPreferenceHelper.getInstance().get(R.string.key_setting_extend_status_url, true); return getView(activity, inflater, convertedView, extendStatusURL); } @@ -162,9 +162,8 @@ public class StatusViewModel implements IViewModel { if (convertedView == null) { convertedView = inflater.inflate(R.layout.list_item_status, null); } - UserPreferenceHelper preferenceHelper = new UserPreferenceHelper(activity); - int textSize = preferenceHelper.getValue(R.string.key_setting_text_size, 10); - int nameStyle = preferenceHelper.getValue(R.string.key_setting_namestyle, 0); + int textSize = UserPreferenceHelper.getInstance().get(R.string.key_setting_text_size, 10); + int nameStyle = UserPreferenceHelper.getInstance().get(R.string.key_setting_namestyle, 0); int theme = ((MainActivity) activity).getThemeIndex(); NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon); ImageCache.getInstance().setImageToView(tweet.getUser().getProfileImageUrl(), icon); @@ -258,7 +257,7 @@ public class StatusViewModel implements IViewModel { } private boolean isReadMorseEnabled(MainActivity activity) { - return activity.getUserPreferenceHelper().getValue(R.string.key_setting_read_morse, true); + return UserPreferenceHelper.getInstance().get(R.string.key_setting_read_morse, true); } private void onClick(Activity activity) { |