X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fosdn%2Fgokigen%2Fgr2control%2Fpreference%2Folympus%2FPreferenceFragment.java;h=eee02ca14fa2f7a2c14cc9124e42a618653b12f8;hb=a1b73cb05836be4e0eb3d1cfee8b1bdb4394c3dc;hp=8844605ec1c6ad802d8c45a4c63296bd1ba07836;hpb=8e769c6e9955f3e2003ebe3a5df65caf15ac750c;p=gokigen%2FGr2Control.git diff --git a/app/src/main/java/net/osdn/gokigen/gr2control/preference/olympus/PreferenceFragment.java b/app/src/main/java/net/osdn/gokigen/gr2control/preference/olympus/PreferenceFragment.java index 8844605..eee02ca 100644 --- a/app/src/main/java/net/osdn/gokigen/gr2control/preference/olympus/PreferenceFragment.java +++ b/app/src/main/java/net/osdn/gokigen/gr2control/preference/olympus/PreferenceFragment.java @@ -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 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 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); + } }