1 package net.osdn.gokigen.pkremote.preference.panasonic;
3 import android.content.Context;
4 import android.content.Intent;
5 import android.content.SharedPreferences;
6 import android.os.Bundle;
7 import android.provider.Settings;
8 import android.util.Log;
10 import androidx.annotation.NonNull;
11 import androidx.appcompat.app.AppCompatActivity;
12 import androidx.fragment.app.FragmentActivity;
13 import androidx.preference.CheckBoxPreference;
14 import androidx.preference.ListPreference;
15 import androidx.preference.Preference;
16 import androidx.preference.PreferenceFragmentCompat;
17 import androidx.preference.PreferenceManager;
19 import net.osdn.gokigen.pkremote.R;
20 import net.osdn.gokigen.pkremote.camera.vendor.panasonic.operation.CameraPowerOffPanasonic;
21 import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
22 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
23 import net.osdn.gokigen.pkremote.scene.IChangeScene;
27 import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
28 import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
29 import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
35 public class PanasonicPreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
37 private final String TAG = toString();
38 private AppCompatActivity context = null;
39 private SharedPreferences preferences = null;
40 private CameraPowerOffPanasonic powerOffController = null;
41 private LogCatViewer logCatViewer = null;
42 //private PanasonicCameraApiListViewer cameraApiListViewer = null;
48 public static PanasonicPreferenceFragment newInstance(@NonNull AppCompatActivity context, @NonNull IChangeScene changeScene)
50 PanasonicPreferenceFragment instance = new PanasonicPreferenceFragment();
51 instance.prepare(context, changeScene);
53 // パラメータはBundleにまとめておく
54 Bundle arguments = new Bundle();
55 //arguments.putString("title", title);
56 //arguments.putString("message", message);
57 instance.setArguments(arguments);
66 private void prepare(@NonNull AppCompatActivity context, @NonNull IChangeScene changeScene)
70 powerOffController = new CameraPowerOffPanasonic(context, changeScene);
71 powerOffController.prepare();
73 logCatViewer = new LogCatViewer(changeScene);
74 logCatViewer.prepare();
76 //cameraApiListViewer = new PanasonicCameraApiListViewer(changeScene);
77 //cameraApiListViewer.prepare();
79 this.context = context;
92 public void onAttach(Context activity)
94 super.onAttach(activity);
95 Log.v(TAG, "onAttach()");
100 preferences = PreferenceManager.getDefaultSharedPreferences(activity);
102 // Preference を初期設定する
103 initializePreferences();
105 preferences.registerOnSharedPreferenceChangeListener(this);
117 private void initializePreferences()
121 Map<String, ?> items = preferences.getAll();
122 SharedPreferences.Editor editor = preferences.edit();
124 if (!items.containsKey(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA)) {
125 editor.putBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
127 if (!items.containsKey(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW)) {
128 editor.putBoolean(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true);
130 if (!items.containsKey(IPreferencePropertyAccessor.CONNECTION_METHOD)) {
131 editor.putString(IPreferencePropertyAccessor.CONNECTION_METHOD, IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE);
133 if (!items.containsKey(IPreferencePropertyAccessor.GET_SMALL_PICTURE_AS_VGA))
135 editor.putBoolean(IPreferencePropertyAccessor.GET_SMALL_PICTURE_AS_VGA, false);
137 if (!items.containsKey(IPreferencePropertyAccessor.USE_SMARTPHONE_TRANSFER_MODE))
139 editor.putBoolean(IPreferencePropertyAccessor.USE_SMARTPHONE_TRANSFER_MODE, false);
141 if (!items.containsKey(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT))
143 editor.putString(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT, IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT_DEFAULT_VALUE);
145 if (!items.containsKey(IPreferencePropertyAccessor.USE_OSC_THETA_V21))
147 editor.putBoolean(IPreferencePropertyAccessor.USE_OSC_THETA_V21, false);
149 if (!items.containsKey(IPreferencePropertyAccessor.PIXPRO_HOST_IP))
151 editor.putString(IPreferencePropertyAccessor.PIXPRO_HOST_IP, IPreferencePropertyAccessor.PIXPRO_HOST_IP_DEFAULT_VALUE);
153 if (!items.containsKey(IPreferencePropertyAccessor.PIXPRO_COMMAND_PORT))
155 editor.putString(IPreferencePropertyAccessor.PIXPRO_COMMAND_PORT, IPreferencePropertyAccessor.PIXPRO_COMMAND_PORT_DEFAULT_VALUE);
157 if (!items.containsKey(IPreferencePropertyAccessor.PIXPRO_GET_PICS_LIST_TIMEOUT))
159 editor.putString(IPreferencePropertyAccessor.PIXPRO_GET_PICS_LIST_TIMEOUT, IPreferencePropertyAccessor.PIXPRO_GET_PICS_LIST_TIMEOUT_DEFAULT_VALUE);
161 if (!items.containsKey(IPreferencePropertyAccessor.THUMBNAIL_IMAGE_CACHE_SIZE))
163 editor.putString(IPreferencePropertyAccessor.THUMBNAIL_IMAGE_CACHE_SIZE, IPreferencePropertyAccessor.THUMBNAIL_IMAGE_CACHE_SIZE_DEFAULT_VALUE);
178 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
180 Log.v(TAG, "onSharedPreferenceChanged() : " + key);
186 case IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA:
187 value = preferences.getBoolean(key, true);
188 Log.v(TAG, " " + key + " , " + value);
191 case IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW:
192 value = preferences.getBoolean(key, true);
193 Log.v(TAG, " " + key + " , " + value);
197 String strValue = preferences.getString(key, "");
198 setListPreference(key, key, strValue);
209 public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
211 Log.v(TAG, "onCreatePreferences()");
214 //super.onCreate(savedInstanceState);
215 addPreferencesFromResource(R.xml.preferences_panasonic);
217 ListPreference connectionMethod = (ListPreference) findPreference(IPreferencePropertyAccessor.CONNECTION_METHOD);
218 connectionMethod.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
220 public boolean onPreferenceChange(Preference preference, Object newValue) {
221 preference.setSummary(newValue + " ");
225 connectionMethod.setSummary(connectionMethod.getValue() + " ");
227 findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
228 findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
229 findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
230 //findPreference("panasonic_api_list").setOnPreferenceClickListener(cameraApiListViewer);
243 public void onResume()
246 Log.v(TAG, "onResume() Start");
250 synchronizedProperty();
257 Log.v(TAG, "onResume() End");
266 public void onPause()
269 Log.v(TAG, "onPause() Start");
273 // Preference変更のリスナを解除
274 preferences.unregisterOnSharedPreferenceChangeListener(this);
281 Log.v(TAG, "onPause() End");
285 * ListPreference の表示データを設定
287 * @param pref_key Preference(表示)のキー
288 * @param key Preference(データ)のキー
289 * @param defaultValue Preferenceのデフォルト値
291 private void setListPreference(String pref_key, String key, String defaultValue)
296 pref = (ListPreference) findPreference(pref_key);
297 String value = preferences.getString(key, defaultValue);
300 pref.setValue(value);
301 pref.setSummary(value);
311 * BooleanPreference の表示データを設定
313 * @param pref_key Preference(表示)のキー
314 * @param key Preference(データ)のキー
315 * @param defaultValue Preferenceのデフォルト値
317 private void setBooleanPreference(String pref_key, String key, boolean defaultValue)
321 CheckBoxPreference pref = (CheckBoxPreference) findPreference(pref_key);
323 boolean value = preferences.getBoolean(key, defaultValue);
324 pref.setChecked(value);
337 private void synchronizedProperty()
339 final FragmentActivity activity = getActivity();
340 final boolean defaultValue = true;
341 if (activity != null)
343 activity.runOnUiThread(new Runnable() {
348 // Preferenceの画面に反映させる
349 setBooleanPreference(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, defaultValue);
350 setBooleanPreference(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, defaultValue);
362 public boolean onPreferenceClick(Preference preference)
366 String preferenceKey = preference.getKey();
367 if (preferenceKey.contains(WIFI_SETTINGS))
370 Log.v(TAG, " onPreferenceClick : " + preferenceKey);
373 context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));