package net.osdn.gokigen.gr2control.preference.olympus;
-import android.support.annotation.NonNull;
-import android.support.v4.app.FragmentActivity;
-import android.support.v7.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
-import android.support.v7.preference.CheckBoxPreference;
-import android.support.v7.preference.ListPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceFragmentCompat;
-import android.support.v7.preference.PreferenceManager;
+import android.provider.Settings;
import android.util.Log;
import net.osdn.gokigen.gr2control.R;
import net.osdn.gokigen.gr2control.camera.ICameraHardwareStatus;
import net.osdn.gokigen.gr2control.camera.ICameraRunMode;
+import net.osdn.gokigen.gr2control.camera.ICameraRunModeCallback;
import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.olympus.operation.CameraPowerOff;
import net.osdn.gokigen.gr2control.camera.olympus.wrapper.property.IOlyCameraProperty;
import java.util.Locale;
import java.util.Map;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentActivity;
+import androidx.preference.CheckBoxPreference;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
import jp.co.olympus.camerakit.OLYCamera;
* SettingFragment
*
*/
-public class PreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, PreferenceSynchronizer.IPropertySynchronizeCallback
+public class PreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, PreferenceSynchronizer.IPropertySynchronizeCallback, Preference.OnPreferenceClickListener, ICameraRunModeCallback
{
private final String TAG = toString();
+ private AppCompatActivity context = null;
private IOlyCameraPropertyProvider propertyInterface = null;
private ICameraHardwareStatus hardwareStatusInterface = null;
private ICameraRunMode changeRunModeExecutor = null;
private void setInterface(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider factory, @NonNull IChangeScene changeScene)
{
Log.v(TAG, "setInterface()");
- this.propertyInterface = factory.getOlympusInterfaceProvider().getCameraPropertyProvider();
- this.changeRunModeExecutor = factory.getCameraRunMode();
- hardwareStatusInterface = factory.getHardwareStatus();
- powerOffController = new CameraPowerOff(context, changeScene);
- powerOffController.prepare();
- logCatViewer = new LogCatViewer(changeScene);
- logCatViewer.prepare();
+ try
+ {
+ this.propertyInterface = factory.getOlympusInterfaceProvider().getCameraPropertyProvider();
+ this.changeRunModeExecutor = factory.getCameraRunMode();
+ hardwareStatusInterface = factory.getHardwareStatus();
+ powerOffController = new CameraPowerOff(context, changeScene);
+ powerOffController.prepare();
+ logCatViewer = new LogCatViewer(changeScene);
+ logCatViewer.prepare();
+
+ this.context = context;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
/**
*
*/
@Override
- public void onAttach(Context activity)
+ public void onAttach(@NonNull Context activity)
{
super.onAttach(activity);
Log.v(TAG, "onAttach()");
-
- // Preference をつかまえる
- preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- if (preferenceSynchronizer == null)
+ try
{
- preferenceSynchronizer = new PreferenceSynchronizer(this.propertyInterface, preferences, this);
- }
+ // Preference をつかまえる
+ preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ if (preferenceSynchronizer == null)
+ {
+ preferenceSynchronizer = new PreferenceSynchronizer(this.propertyInterface, preferences, this);
+ }
- // Preference を初期設定する
- initializePreferences();
+ // Preference を初期設定する
+ initializePreferences();
- preferences.registerOnSharedPreferenceChangeListener(this);
+ preferences.registerOnSharedPreferenceChangeListener(this);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
/**
{
Map<String, ?> items = preferences.getAll();
SharedPreferences.Editor editor = preferences.edit();
-
+ if (!items.containsKey(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT))
+ {
+ editor.putString(IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT, IPreferencePropertyAccessor.RICOH_GET_PICS_LIST_TIMEOUT_DEFAULT_VALUE);
+ }
if (!items.containsKey(IPreferencePropertyAccessor.LIVE_VIEW_QUALITY))
{
editor.putString(IPreferencePropertyAccessor.LIVE_VIEW_QUALITY, IPreferencePropertyAccessor.LIVE_VIEW_QUALITY_DEFAULT_VALUE);
{
editor.putString(IPreferencePropertyAccessor.CONNECTION_METHOD, IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE);
}
+ if (!items.containsKey(IPreferencePropertyAccessor.SHARE_AFTER_SAVE)) {
+ editor.putBoolean(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.USE_PLAYBACK_MENU)) {
+ editor.putBoolean(IPreferencePropertyAccessor.USE_PLAYBACK_MENU, true);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW)) {
+ editor.putBoolean(IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW, true);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.GR2_LCD_SLEEP)) {
+ editor.putBoolean(IPreferencePropertyAccessor.GR2_LCD_SLEEP, false);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND)) {
+ editor.putBoolean(IPreferencePropertyAccessor.USE_GR2_SPECIAL_COMMAND, true);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF)) {
+ editor.putBoolean(IPreferencePropertyAccessor.PENTAX_CAPTURE_AFTER_AF, false);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.FUJI_X_DISPLAY_CAMERA_VIEW)) {
+ editor.putBoolean(IPreferencePropertyAccessor.FUJI_X_DISPLAY_CAMERA_VIEW, false);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.FUJI_X_FOCUS_XY)) {
+ editor.putString(IPreferencePropertyAccessor.FUJI_X_FOCUS_XY, IPreferencePropertyAccessor.FUJI_X_FOCUS_XY_DEFAULT_VALUE);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.FUJI_X_LIVEVIEW_WAIT)) {
+ editor.putString(IPreferencePropertyAccessor.FUJI_X_LIVEVIEW_WAIT, IPreferencePropertyAccessor.FUJI_X_LIVEVIEW_WAIT_DEFAULT_VALUE);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.FUJI_X_COMMAND_POLLING_WAIT)) {
+ editor.putString(IPreferencePropertyAccessor.FUJI_X_COMMAND_POLLING_WAIT, IPreferencePropertyAccessor.FUJI_X_COMMAND_POLLING_WAIT_DEFAULT_VALUE);
+ }
+ if (!items.containsKey(IPreferencePropertyAccessor.FUJI_X_GET_SCREENNAIL_AS_SMALL_PICTURE)) {
+ editor.putBoolean(IPreferencePropertyAccessor.FUJI_X_GET_SCREENNAIL_AS_SMALL_PICTURE, false);
+ }
editor.apply();
}
//super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_opc);
+ try
{
final HashMap<String, String> sizeTable = new HashMap<>();
sizeTable.put("QVGA", "(320x240)");
}
});
connectionMethod.setSummary(connectionMethod.getValue() + " ");
+
+ findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
+ findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+ findPreference("wifi_settings").setOnPreferenceClickListener(this);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
}
- findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
- findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
}
/**
*/
private void setHardwareSummary()
{
- // レンズ状態
- findPreference("lens_status").setSummary(hardwareStatusInterface.getLensMountStatus());
-
- // メディア状態
- findPreference("media_status").setSummary(hardwareStatusInterface.getMediaMountStatus());
-
- // 焦点距離
- String focalLength;
- float minLength = hardwareStatusInterface.getMinimumFocalLength();
- float maxLength = hardwareStatusInterface.getMaximumFocalLength();
- float actualLength = hardwareStatusInterface.getActualFocalLength();
- if (minLength == maxLength)
+ try
{
- focalLength = String.format(Locale.ENGLISH, "%3.0fmm", actualLength);
+ // レンズ状態
+ findPreference("lens_status").setSummary(hardwareStatusInterface.getLensMountStatus());
+
+ // メディア状態
+ findPreference("media_status").setSummary(hardwareStatusInterface.getMediaMountStatus());
+
+ // 焦点距離
+ String focalLength;
+ float minLength = hardwareStatusInterface.getMinimumFocalLength();
+ float maxLength = hardwareStatusInterface.getMaximumFocalLength();
+ float actualLength = hardwareStatusInterface.getActualFocalLength();
+ if (minLength == maxLength)
+ {
+ focalLength = String.format(Locale.ENGLISH, "%3.0fmm", actualLength);
+ }
+ else
+ {
+ focalLength = String.format(Locale.ENGLISH, "%3.0fmm - %3.0fmm (%3.0fmm)", minLength, maxLength, actualLength);
+ }
+ findPreference("focal_length").setSummary(focalLength);
}
- else
+ catch (Exception e)
{
- focalLength = String.format(Locale.ENGLISH, "%3.0fmm - %3.0fmm (%3.0fmm)", minLength, maxLength, actualLength);
+ e.printStackTrace();
}
- findPreference("focal_length").setSummary(focalLength);
// カメラのバージョン
try
{
super.onResume();
Log.v(TAG, "onResume() Start");
-
- // 撮影モードかどうかを確認して、撮影モードではなかったら撮影モードに切り替える
- if ((changeRunModeExecutor != null) && (!changeRunModeExecutor.isRecordingMode()))
+ try
{
- // Runモードを切り替える。(でも切り替えると、設定がクリアされてしまう...。
- changeRunModeExecutor.changeRunMode(true);
+ // 撮影モードかどうかを確認して、撮影モードではなかったら撮影モードに切り替える
+ if ((changeRunModeExecutor != null) && (!changeRunModeExecutor.isRecordingMode()))
+ {
+ // Runモードを切り替える。(でも切り替えると、設定がクリアされてしまう...。
+ changeRunModeExecutor.changeRunMode(true, this);
+ return;
+ }
+ synchronizeCameraProperties(true);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
}
- synchronizeCameraProperties(true);
Log.v(TAG, "onResume() End");
+ }
+
+ @Override
+ public void onCompleted(boolean isRecording)
+ {
+ synchronizeCameraProperties(true);
+ }
+ @Override
+ public void onErrorOccurred(boolean isRecording)
+ {
+ Log.v(TAG, " onErrorOccurred()");
+ synchronizeCameraProperties(true);
}
/**
Log.v(TAG, " " + key + " , " + value);
break;
+ case IPreferencePropertyAccessor.SHARE_AFTER_SAVE:
+ value = preferences.getBoolean(key, false);
+ Log.v(TAG, " " + key + " , " + value);
+ break;
+
+ case IPreferencePropertyAccessor.USE_PLAYBACK_MENU:
+ value = preferences.getBoolean(key, false);
+ Log.v(TAG, " " + key + " , " + value);
+ break;
+
default:
String strValue = preferences.getString(key, "");
setListPreference(key, key, strValue);
setListPreference(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE);
setBooleanPreference(IPreferencePropertyAccessor.RAW, IPreferencePropertyAccessor.RAW, true);
setBooleanPreference(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
+ setBooleanPreference(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false);
// カメラキットのバージョン
findPreference(IPreferencePropertyAccessor.CAMERAKIT_VERSION).setSummary(OLYCamera.getVersion());
}
});
}
+
+
+ @Override
+ public boolean onPreferenceClick(Preference preference)
+ {
+ try
+ {
+ String preferenceKey = preference.getKey();
+ if (preferenceKey.contains("wifi_settings"))
+ {
+ // Wifi 設定画面を表示する
+ Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+ if (context != null)
+ {
+ context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+ }
+ }
+ return (true);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return (false);
+ }
}