1 package net.osdn.gokigen.pkremote.preference.ricohgr2;
3 import android.content.Context;
4 import android.content.Intent;
5 import android.content.SharedPreferences;
6 import android.os.Bundle;
8 import android.provider.Settings;
9 import android.util.Log;
11 import net.osdn.gokigen.pkremote.R;
12 import net.osdn.gokigen.pkremote.camera.vendor.ricoh.operation.CameraPowerOffRicohGr2;
13 import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
14 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
15 import net.osdn.gokigen.pkremote.scene.IChangeScene;
19 import androidx.annotation.NonNull;
20 import androidx.appcompat.app.AppCompatActivity;
21 import androidx.fragment.app.FragmentActivity;
22 import androidx.preference.CheckBoxPreference;
23 import androidx.preference.ListPreference;
24 import androidx.preference.Preference;
25 import androidx.preference.PreferenceFragmentCompat;
26 import androidx.preference.PreferenceManager;
28 import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
29 import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
30 import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
32 public class RicohGr2PreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
34 private final String TAG = toString();
35 private AppCompatActivity context = null;
36 private SharedPreferences preferences = null;
37 private CameraPowerOffRicohGr2 powerOffController = null;
38 private LogCatViewer logCatViewer = null;
44 public static RicohGr2PreferenceFragment newInstance(@NonNull AppCompatActivity context, @NonNull IChangeScene changeScene)
46 RicohGr2PreferenceFragment instance = new RicohGr2PreferenceFragment();
47 instance.prepare(context, changeScene);
49 // パラメータはBundleにまとめておく
50 Bundle arguments = new Bundle();
51 //arguments.putString("title", title);
52 //arguments.putString("message", message);
53 instance.setArguments(arguments);
62 private void prepare(@NonNull AppCompatActivity context, @NonNull IChangeScene changeScene)
66 powerOffController = new CameraPowerOffRicohGr2(context, changeScene);
67 powerOffController.prepare();
69 logCatViewer = new LogCatViewer(changeScene);
70 logCatViewer.prepare();
72 this.context = context;
85 public void onAttach(Context activity)
87 super.onAttach(activity);
88 Log.v(TAG, "onAttach()");
92 preferences = PreferenceManager.getDefaultSharedPreferences(activity);
95 initializePreferences();
97 preferences.registerOnSharedPreferenceChangeListener(this);
109 private void initializePreferences()
113 Map<String, ?> items = preferences.getAll();
114 SharedPreferences.Editor editor = preferences.edit();
116 if (!items.containsKey(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA))
118 editor.putBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
120 if (!items.containsKey(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW))
122 editor.putBoolean(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true);
124 if (!items.containsKey(IPreferencePropertyAccessor.USE_PLAYBACK_MENU))
126 editor.putBoolean(IPreferencePropertyAccessor.USE_PLAYBACK_MENU, true);
128 if (!items.containsKey(IPreferencePropertyAccessor.CONNECTION_METHOD))
130 editor.putString(IPreferencePropertyAccessor.CONNECTION_METHOD, IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE);
132 if (!items.containsKey(IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW))
134 editor.putBoolean(IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW, true);
136 if (!items.containsKey(IPreferencePropertyAccessor.GR2_LCD_SLEEP))
138 editor.putBoolean(IPreferencePropertyAccessor.GR2_LCD_SLEEP, false);
140 if (!items.containsKey(IPreferencePropertyAccessor.SHARE_AFTER_SAVE))
142 editor.putBoolean(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false);
144 if (!items.containsKey(IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND))
146 editor.putBoolean(IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND, true);
148 if (!items.containsKey(IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF))
150 editor.putBoolean(IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF, false);
152 if (!items.containsKey(IPreferencePropertyAccessor.SMALL_PICTURE_SIZE))
154 editor.putString(IPreferencePropertyAccessor.SMALL_PICTURE_SIZE, IPreferencePropertyAccessor.SMALL_PICTURE_SIZE_DEFAULT_VALUE);
156 if (!items.containsKey(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT))
158 editor.putString(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT, IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT_DEFAULT_VALUE);
160 if (!items.containsKey(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_MAX_COUNT))
162 editor.putString(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_MAX_COUNT, IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_MAX_COUNT_DEFAULT_VALUE);
164 if (!items.containsKey(IPreferencePropertyAccessor.PIXPRO_HOST_IP))
166 editor.putString(IPreferencePropertyAccessor.PIXPRO_HOST_IP, IPreferencePropertyAccessor.PIXPRO_HOST_IP_DEFAULT_VALUE);
168 if (!items.containsKey(IPreferencePropertyAccessor.PIXPRO_COMMAND_PORT))
170 editor.putString(IPreferencePropertyAccessor.PIXPRO_COMMAND_PORT, IPreferencePropertyAccessor.PIXPRO_COMMAND_PORT_DEFAULT_VALUE);
172 if (!items.containsKey(IPreferencePropertyAccessor.PIXPRO_GET_PICS_LIST_TIMEOUT))
174 editor.putString(IPreferencePropertyAccessor.PIXPRO_GET_PICS_LIST_TIMEOUT, IPreferencePropertyAccessor.PIXPRO_GET_PICS_LIST_TIMEOUT_DEFAULT_VALUE);
176 if (!items.containsKey(IPreferencePropertyAccessor.THUMBNAIL_IMAGE_CACHE_SIZE))
178 editor.putString(IPreferencePropertyAccessor.THUMBNAIL_IMAGE_CACHE_SIZE, IPreferencePropertyAccessor.THUMBNAIL_IMAGE_CACHE_SIZE_DEFAULT_VALUE);
180 if (!items.containsKey(IPreferencePropertyAccessor.CANON_HOST_IP)) {
181 editor.putString(IPreferencePropertyAccessor.CANON_HOST_IP, IPreferencePropertyAccessor.CANON_HOST_IP_DEFAULT_VALUE);
183 if (!items.containsKey(IPreferencePropertyAccessor.CANON_AUTO_DETECT_HOST_IP)) {
184 editor.putBoolean(IPreferencePropertyAccessor.CANON_AUTO_DETECT_HOST_IP, true);
186 if (!items.containsKey(IPreferencePropertyAccessor.CANON_CONNECTION_SEQUENCE)) {
187 editor.putString(IPreferencePropertyAccessor.CANON_CONNECTION_SEQUENCE, IPreferencePropertyAccessor.CANON_CONNECTION_SEQUENCE_DEFAULT_VALUE);
189 if (!items.containsKey(IPreferencePropertyAccessor.CANON_SMALL_PICTURE_TYPE)) {
190 editor.putString(IPreferencePropertyAccessor.CANON_SMALL_PICTURE_TYPE, IPreferencePropertyAccessor.CANON_SMALL_PICTURE_TYPE_DEFAULT_VALUE);
192 if (!items.containsKey(IPreferencePropertyAccessor.VISIONKIDS_HOST_IP)) {
193 editor.putString(IPreferencePropertyAccessor.VISIONKIDS_HOST_IP, IPreferencePropertyAccessor.VISIONKIDS_HOST_IP_DEFAULT_VALUE);
195 if (!items.containsKey(IPreferencePropertyAccessor.VISIONKIDS_FTP_USER)) {
196 editor.putString(IPreferencePropertyAccessor.VISIONKIDS_FTP_USER, IPreferencePropertyAccessor.VISIONKIDS_FTP_USER_DEFAULT_VALUE);
198 if (!items.containsKey(IPreferencePropertyAccessor.VISIONKIDS_FTP_PASS)) {
199 editor.putString(IPreferencePropertyAccessor.VISIONKIDS_FTP_PASS, IPreferencePropertyAccessor.VISIONKIDS_FTP_PASS_DEFAULT_VALUE);
201 if (!items.containsKey(IPreferencePropertyAccessor.VISIONKIDS_LIST_TIMEOUT)) {
202 editor.putString(IPreferencePropertyAccessor.VISIONKIDS_LIST_TIMEOUT, IPreferencePropertyAccessor.VISIONKIDS_LIST_TIMEOUT_DEFAULT_VALUE);
204 if (!items.containsKey(IPreferencePropertyAccessor.VISIONKIDS_AUTO_SET_HOST_IP))
206 editor.putBoolean(IPreferencePropertyAccessor.VISIONKIDS_AUTO_SET_HOST_IP, true);
221 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
223 Log.v(TAG, "onSharedPreferenceChanged() : " + key);
229 case IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA:
230 value = preferences.getBoolean(key, true);
231 Log.v(TAG, " " + key + " , " + value);
234 case IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW:
235 value = preferences.getBoolean(key, true);
236 Log.v(TAG, " " + key + " , " + value);
239 case IPreferencePropertyAccessor.USE_PLAYBACK_MENU:
240 value = preferences.getBoolean(key, true);
241 Log.v(TAG, " " + key + " , " + value);
244 case IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW:
245 value = preferences.getBoolean(key, true);
246 Log.v(TAG, " " + key + " , " + value);
249 case IPreferencePropertyAccessor.GR2_LCD_SLEEP:
250 value = preferences.getBoolean(key, false);
251 Log.v(TAG, " " + key + " , " + value);
254 case IPreferencePropertyAccessor.SHARE_AFTER_SAVE:
255 value = preferences.getBoolean(key, false);
256 Log.v(TAG, " " + key + " , " + value);
259 case IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND:
260 value = preferences.getBoolean(key, true);
261 Log.v(TAG, " " + key + " , " + value);
264 case IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF:
265 value = preferences.getBoolean(key, false);
266 Log.v(TAG, " " + key + " , " + value);
270 String strValue = preferences.getString(key, "");
271 setListPreference(key, key, strValue);
282 public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
284 Log.v(TAG, "onCreatePreferences()");
287 //super.onCreate(savedInstanceState);
288 addPreferencesFromResource(R.xml.preferences_ricoh_gr2);
290 ListPreference connectionMethod = (ListPreference) findPreference(IPreferencePropertyAccessor.CONNECTION_METHOD);
291 connectionMethod.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
293 public boolean onPreferenceChange(Preference preference, Object newValue) {
294 preference.setSummary(newValue + " ");
298 connectionMethod.setSummary(connectionMethod.getValue() + " ");
300 ListPreference smallPictureSize = (ListPreference) findPreference(IPreferencePropertyAccessor.SMALL_PICTURE_SIZE);
301 smallPictureSize.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
303 public boolean onPreferenceChange(Preference preference, Object newValue) {
304 preference.setSummary(newValue + " ");
308 smallPictureSize.setSummary(smallPictureSize.getValue() + " ");
310 findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
311 findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
312 findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
325 public void onResume()
328 Log.v(TAG, "onResume() Start");
331 synchronizedProperty();
338 Log.v(TAG, "onResume() End");
346 public void onPause()
349 Log.v(TAG, "onPause() Start");
352 // Preference変更のリスナを解除
353 preferences.unregisterOnSharedPreferenceChangeListener(this);
360 Log.v(TAG, "onPause() End");
364 * ListPreference の表示データを設定
366 * @param pref_key Preference(表示)のキー
367 * @param key Preference(データ)のキー
368 * @param defaultValue Preferenceのデフォルト値
370 private void setListPreference(String pref_key, String key, String defaultValue)
375 pref = (ListPreference) findPreference(pref_key);
376 String value = preferences.getString(key, defaultValue);
379 pref.setValue(value);
380 pref.setSummary(value);
390 * BooleanPreference の表示データを設定
392 * @param pref_key Preference(表示)のキー
393 * @param key Preference(データ)のキー
394 * @param defaultValue Preferenceのデフォルト値
396 private void setBooleanPreference(String pref_key, String key, boolean defaultValue)
400 CheckBoxPreference pref = (CheckBoxPreference) findPreference(pref_key);
402 boolean value = preferences.getBoolean(key, defaultValue);
403 pref.setChecked(value);
416 private void synchronizedProperty()
418 final FragmentActivity activity = getActivity();
419 final boolean defaultValue = true;
420 if (activity != null)
422 activity.runOnUiThread(new Runnable() {
427 // Preferenceの画面に反映させる
428 setBooleanPreference(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, defaultValue);
429 setBooleanPreference(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, defaultValue);
430 setBooleanPreference(IPreferencePropertyAccessor.USE_PLAYBACK_MENU, IPreferencePropertyAccessor.USE_PLAYBACK_MENU, defaultValue);
431 setBooleanPreference(IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW, IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW, defaultValue);
432 setBooleanPreference(IPreferencePropertyAccessor.GR2_LCD_SLEEP, IPreferencePropertyAccessor.GR2_LCD_SLEEP, defaultValue);
433 setBooleanPreference(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, IPreferencePropertyAccessor.SHARE_AFTER_SAVE, defaultValue);
434 setBooleanPreference(IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND, IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND, defaultValue);
435 setBooleanPreference(IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF, IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF, false);
447 public boolean onPreferenceClick(Preference preference)
451 String preferenceKey = preference.getKey();
452 if (preferenceKey.contains(WIFI_SETTINGS))
455 Log.v(TAG, " onPreferenceClick : " + preferenceKey);
458 context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));