OSDN Git Service

FUJIFILM用画像詳細画面で、タイミングによってはスモールイメージを使用できるようにした。
[gokigen/Gr2Control.git] / app / src / main / java / net / osdn / gokigen / gr2control / preference / olympus / PreferenceFragment.java
index 8844605..eee02ca 100644 (file)
@@ -1,22 +1,17 @@
 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;
@@ -29,6 +24,14 @@ import java.util.HashMap;
 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;
 
 
@@ -36,9 +39,10 @@ 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;
@@ -70,13 +74,22 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
     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();
+        }
     }
 
     /**
@@ -84,22 +97,28 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
      *
      */
     @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();
+        }
     }
 
     /**
@@ -109,7 +128,10 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
     {
         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);
@@ -134,6 +156,39 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
         {
             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();
     }
 
@@ -149,6 +204,7 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
         //super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.preferences_opc);
 
+        try
         {
             final HashMap<String, String> sizeTable = new HashMap<>();
             sizeTable.put("QVGA", "(320x240)");
@@ -177,9 +233,15 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
                 }
             });
             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);
     }
 
     /**
@@ -187,26 +249,33 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
      */
     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
@@ -257,16 +326,35 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
     {
         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);
     }
 
     /**
@@ -338,6 +426,16 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
                     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);
@@ -439,6 +537,7 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
                     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());
@@ -459,4 +558,29 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar
             }
         });
     }
+
+
+    @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);
+    }
 }