|
1 | 1 | package site.hanschen.runwithyou.ui.home.setting;
|
2 | 2 |
|
3 |
| -import android.content.Context; |
4 | 3 | import android.content.Intent;
|
5 |
| -import android.content.SharedPreferences; |
6 |
| -import android.net.Uri; |
7 |
| -import android.os.Build; |
8 | 4 | import android.os.Bundle;
|
9 |
| -import android.os.PowerManager; |
10 |
| -import android.preference.Preference; |
11 |
| -import android.preference.PreferenceFragment; |
12 |
| -import android.preference.PreferenceGroup; |
13 |
| -import android.preference.PreferenceScreen; |
14 |
| -import android.provider.Settings; |
| 5 | +import android.support.annotation.Nullable; |
| 6 | +import android.view.LayoutInflater; |
| 7 | +import android.view.View; |
| 8 | +import android.view.ViewGroup; |
| 9 | +import android.widget.FrameLayout; |
| 10 | +import android.widget.ImageView; |
| 11 | +import android.widget.TextView; |
15 | 12 |
|
16 |
| -import java.util.Locale; |
17 |
| - |
18 |
| -import javax.inject.Inject; |
19 |
| - |
20 |
| -import io.reactivex.Observable; |
21 |
| -import io.reactivex.ObservableEmitter; |
22 |
| -import io.reactivex.ObservableOnSubscribe; |
23 |
| -import io.reactivex.android.schedulers.AndroidSchedulers; |
24 |
| -import io.reactivex.functions.Consumer; |
25 |
| -import io.reactivex.schedulers.Schedulers; |
26 | 13 | import site.hanschen.runwithyou.R;
|
27 |
| -import site.hanschen.runwithyou.application.RunnerApplication; |
28 |
| -import site.hanschen.runwithyou.database.repository.SettingRepository; |
29 |
| -import site.hanschen.runwithyou.ui.WebViewActivity; |
30 |
| -import site.hanschen.runwithyou.ui.about.AboutActivity; |
31 |
| - |
| 14 | +import site.hanschen.runwithyou.base.RunnerBaseFragment; |
| 15 | +import site.hanschen.runwithyou.ui.home.userinfo.UserInfoActivity; |
32 | 16 |
|
33 | 17 | /**
|
34 | 18 | * @author HansChen
|
35 | 19 | */
|
36 |
| -public class SettingFragment extends PreferenceFragment { |
| 20 | +public class SettingFragment extends RunnerBaseFragment { |
37 | 21 |
|
38 |
| - @Inject |
39 |
| - SettingRepository mSettingRepository; |
40 |
| - @Inject |
41 |
| - SharedPreferences mPreferences; |
| 22 | + private FrameLayout mUserLayout; |
| 23 | + private TextView mUsername; |
| 24 | + private ImageView mUserIcon; |
42 | 25 |
|
43 | 26 | @Override
|
44 |
| - public void onCreate(Bundle savedInstanceState) { |
| 27 | + public void onCreate(@Nullable Bundle savedInstanceState) { |
45 | 28 | super.onCreate(savedInstanceState);
|
46 |
| - DaggerSettingComponent.builder() |
47 |
| - .applicationComponent(RunnerApplication.getInstance().getAppComponent()) |
48 |
| - .build() |
49 |
| - .inject(SettingFragment.this); |
50 |
| - addPreferencesFromResource(R.xml.setting_preferences); |
51 |
| - mPreferences.registerOnSharedPreferenceChangeListener(mOnPreferenceChangeListener); |
52 | 29 | }
|
53 | 30 |
|
54 | 31 | @Override
|
55 | 32 | public void onDestroy() {
|
56 | 33 | super.onDestroy();
|
57 |
| - mPreferences.unregisterOnSharedPreferenceChangeListener(mOnPreferenceChangeListener); |
58 | 34 | }
|
59 | 35 |
|
| 36 | + @Nullable |
60 | 37 | @Override
|
61 |
| - public void onActivityCreated(Bundle savedInstanceState) { |
62 |
| - super.onActivityCreated(savedInstanceState); |
63 |
| - initPreferences(); |
| 38 | + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { |
| 39 | + return inflater.inflate(R.layout.fragment_setting, container, false); |
64 | 40 | }
|
65 | 41 |
|
66 |
| - SharedPreferences.OnSharedPreferenceChangeListener mOnPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { |
67 |
| - @Override |
68 |
| - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { |
69 |
| - switch (key) { |
70 |
| - case "pref_target_step": |
71 |
| - int target = mSettingRepository.getTargetStep(); |
72 |
| - findPreference(key).setSummary(String.format(Locale.getDefault(), "每日运动目标:%d步", target)); |
73 |
| - break; |
74 |
| - default: |
75 |
| - break; |
76 |
| - } |
77 |
| - } |
78 |
| - }; |
79 |
| - |
80 |
| - private void initPreferences() { |
81 |
| - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { |
82 |
| - ((PreferenceGroup) findPreference(getString(R.string.pref_category_memory_resident))).removePreference( |
83 |
| - findPreference(getString(R.string.pref_memory_resident_white_list))); |
84 |
| - } |
85 |
| - |
86 |
| - Observable.create(new ObservableOnSubscribe<Integer>() { |
87 |
| - @Override |
88 |
| - public void subscribe(ObservableEmitter<Integer> e) throws Exception { |
89 |
| - e.onNext(mSettingRepository.getTargetStep()); |
90 |
| - } |
91 |
| - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Integer>() { |
| 42 | + @Override |
| 43 | + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { |
| 44 | + super.onViewCreated(view, savedInstanceState); |
| 45 | + mUserLayout = (FrameLayout) view.findViewById(R.id.fragment_setting_user_layout); |
| 46 | + mUserLayout.setOnClickListener(new View.OnClickListener() { |
92 | 47 | @Override
|
93 |
| - public void accept(Integer target) throws Exception { |
94 |
| - findPreference(getString(R.string.pref_target_step)).setSummary(String.format(Locale.getDefault(), |
95 |
| - "每日运动目标:%d步", |
96 |
| - target)); |
| 48 | + public void onClick(View v) { |
| 49 | + startActivity(new Intent(mContext, UserInfoActivity.class)); |
97 | 50 | }
|
98 | 51 | });
|
99 |
| - } |
100 |
| - |
101 |
| - @Override |
102 |
| - public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { |
103 |
| - handlePreferenceClick(preference); |
104 |
| - return super.onPreferenceTreeClick(preferenceScreen, preference); |
105 |
| - } |
106 |
| - |
107 |
| - private void handlePreferenceClick(Preference preference) { |
108 |
| - if (preference == null || preference.getKey() == null) { |
109 |
| - return; |
110 |
| - } |
111 |
| - switch (preference.getKey()) { |
112 |
| - case "pref_memory_resident_white_list": |
113 |
| - requestPowerWhiteList(); |
114 |
| - break; |
115 |
| - case "pref_etc_check_update": |
116 |
| - // TODO: 2016/12/28 |
117 |
| - break; |
118 |
| - case "pref_etc_issue": |
119 |
| - WebViewActivity.startup(getActivity(), "https://github.com/shensky711/Run-With-You/issues", "GitHub Issues"); |
120 |
| - break; |
121 |
| - case "pref_etc_about": |
122 |
| - startActivity(new Intent(getActivity(), AboutActivity.class)); |
123 |
| - break; |
124 |
| - default: |
125 |
| - break; |
126 |
| - } |
127 |
| - } |
128 |
| - |
129 |
| - private void requestPowerWhiteList() { |
130 |
| - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { |
131 |
| - return; |
132 |
| - } |
133 |
| - String packageName = getActivity().getPackageName(); |
134 |
| - PowerManager pm = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); |
135 |
| - Intent intent = new Intent(); |
136 |
| - if (pm.isIgnoringBatteryOptimizations(packageName)) { |
137 |
| - intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); |
138 |
| - } else { |
139 |
| - intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); |
140 |
| - intent.setData(Uri.parse("package:" + packageName)); |
141 |
| - } |
142 |
| - startActivity(intent); |
| 52 | + mUsername = (TextView) view.findViewById(R.id.fragment_setting_username); |
| 53 | + mUserIcon = (ImageView) view.findViewById(R.id.fragment_setting_user_icon); |
143 | 54 | }
|
144 | 55 | }
|
0 commit comments