1 package net.osdn.gokigen.gr2control.scene;
3 import android.util.Log;
5 import net.osdn.gokigen.gr2control.R;
6 import net.osdn.gokigen.gr2control.camera.ICameraConnection;
7 import net.osdn.gokigen.gr2control.camera.ICameraStatusReceiver;
8 import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
9 import net.osdn.gokigen.gr2control.liveview.IStatusViewDrawer;
10 import net.osdn.gokigen.gr2control.logcat.LogCatFragment;
11 import net.osdn.gokigen.gr2control.playback.ImageGridViewFragment;
12 import net.osdn.gokigen.gr2control.preference.Gr2ControlPreferenceFragment;
13 import net.osdn.gokigen.gr2control.preference.fuji_x.FujiXPreferenceFragment;
14 import net.osdn.gokigen.gr2control.preference.olympus.PreferenceFragment;
15 import net.osdn.gokigen.gr2control.preference.ricohgr2.RicohGr2PreferenceFragment;
17 import androidx.annotation.NonNull;
18 import androidx.appcompat.app.AppCompatActivity;
19 import androidx.fragment.app.FragmentTransaction;
20 import androidx.preference.PreferenceFragmentCompat;
26 public class CameraSceneUpdater implements ICameraStatusReceiver, IChangeScene
28 private final String TAG = toString();
29 private final AppCompatActivity activity;
30 private IInterfaceProvider interfaceProvider;
31 private IStatusViewDrawer statusViewDrawer;
33 private PreferenceFragmentCompat preferenceFragment = null;
34 private PreferenceFragmentCompat preferenceFragmentOpc = null;
35 private PreferenceFragmentCompat preferenceFragmentRicoh = null;
36 private PreferenceFragmentCompat preferenceFragmentFujiX = null;
38 private LogCatFragment logCatFragment = null;
39 private ImageGridViewFragment imageGridViewFragment = null;
41 public static CameraSceneUpdater newInstance(@NonNull AppCompatActivity activity)
43 return (new CameraSceneUpdater(activity));
50 private CameraSceneUpdater(@NonNull AppCompatActivity activity)
52 this.activity = activity;
56 public void registerInterface(@NonNull IStatusViewDrawer statusViewDrawer, @NonNull IInterfaceProvider interfaceProvider)
58 Log.v(TAG, "registerInterface()");
59 this.statusViewDrawer = statusViewDrawer;
60 this.interfaceProvider = interfaceProvider;
63 // ICameraStatusReceiver
65 public void onStatusNotify(String message)
67 Log.v(TAG, " CONNECTION MESSAGE : " + message);
70 if (statusViewDrawer != null)
72 statusViewDrawer.updateStatusView(message);
73 ICameraConnection connection = getCameraConnection(interfaceProvider.getCammeraConnectionMethod());
74 if (connection != null)
76 statusViewDrawer.updateConnectionStatus(connection.getConnectionStatus());
86 // ICameraStatusReceiver
88 public void onCameraConnected()
90 Log.v(TAG, "onCameraConnected()");
94 ICameraConnection connection = getCameraConnection(interfaceProvider.getCammeraConnectionMethod());
95 if (connection != null)
97 connection.forceUpdateConnectionStatus(ICameraConnection.CameraConnectionStatus.CONNECTED);
99 if (statusViewDrawer != null)
101 statusViewDrawer.updateConnectionStatus(ICameraConnection.CameraConnectionStatus.CONNECTED);
104 statusViewDrawer.startLiveView();
113 // ICameraStatusReceiver
115 public void onCameraDisconnected()
117 Log.v(TAG, "onCameraDisconnected()");
118 if (statusViewDrawer != null)
120 statusViewDrawer.updateStatusView(activity.getString(R.string.camera_disconnected));
121 statusViewDrawer.updateConnectionStatus(ICameraConnection.CameraConnectionStatus.DISCONNECTED);
125 // ICameraStatusReceiver
127 public void onCameraOccursException(String message, Exception e)
129 Log.v(TAG, "onCameraOccursException() " + message);
133 ICameraConnection connection = getCameraConnection(interfaceProvider.getCammeraConnectionMethod());
134 if (connection != null)
136 connection.alertConnectingFailed(message + " " + e.getLocalizedMessage());
138 if (statusViewDrawer != null)
140 statusViewDrawer.updateStatusView(message);
141 if (connection != null)
143 statusViewDrawer.updateConnectionStatus(connection.getConnectionStatus());
149 ee.printStackTrace();
155 public void changeSceneToCameraPropertyList()
160 ICameraConnection.CameraConnectionMethod method = interfaceProvider.getCammeraConnectionMethod();
161 ICameraConnection connection = getCameraConnection(method);
162 if (method == ICameraConnection.CameraConnectionMethod.RICOH_GR2)
164 // OPCカメラでない場合には、「OPCカメラのみ有効です」表示をして画面遷移させない
165 Toast.makeText(getApplicationContext(), getText(R.string.only_opc_feature), Toast.LENGTH_SHORT).show();
167 else if (method == ICameraConnection.CameraConnectionMethod.SONY)
169 // OPCカメラでない場合には、「OPCカメラのみ有効です」表示をして画面遷移させない
170 Toast.makeText(getApplicationContext(), getText(R.string.only_opc_feature), Toast.LENGTH_SHORT).show();
175 if (connection != null)
177 ICameraConnection.CameraConnectionStatus status = connection.getConnectionStatus();
178 if (status == ICameraConnection.CameraConnectionStatus.CONNECTED)
180 if (propertyListFragment == null)
182 propertyListFragment = OlyCameraPropertyListFragment.newInstance(this, interfaceProvider.getOlympusInterface().getCameraPropertyProvider());
184 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
185 transaction.replace(R.id.fragment1, propertyListFragment);
187 transaction.addToBackStack(null);
188 transaction.commit();
202 public void changeSceneToConfiguration(ICameraConnection.CameraConnectionMethod connectionMethod)
206 if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH_GR2)
208 changeSceneToRicohConfiguration();
210 else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
212 changeSceneToFujiXConfiguration();
214 else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
216 changeSceneToOpcConfiguration();
218 else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.UNKNOWN)
220 changeSceneToSummaryConfiguration();
229 private void changeSceneToSummaryConfiguration()
233 if (preferenceFragment == null)
235 preferenceFragment = Gr2ControlPreferenceFragment.newInstance(activity, this);
237 FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
238 transaction.replace(R.id.fragment1, preferenceFragment);
240 transaction.addToBackStack(null);
241 transaction.commit();
249 private void changeSceneToOpcConfiguration()
253 if (preferenceFragmentOpc == null)
255 preferenceFragmentOpc = PreferenceFragment.newInstance(activity, interfaceProvider, this);
257 FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
258 transaction.replace(R.id.fragment1, preferenceFragmentOpc);
260 transaction.addToBackStack(null);
261 transaction.commit();
269 private void changeSceneToRicohConfiguration()
273 if (preferenceFragmentRicoh == null)
275 preferenceFragmentRicoh = RicohGr2PreferenceFragment.newInstance(activity, this);
277 FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
278 transaction.replace(R.id.fragment1, preferenceFragmentRicoh);
280 transaction.addToBackStack(null);
281 transaction.commit();
289 private void changeSceneToFujiXConfiguration()
293 if (preferenceFragmentFujiX == null)
295 preferenceFragmentFujiX = FujiXPreferenceFragment.newInstance(activity, this);
297 FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
298 transaction.replace(R.id.fragment1, preferenceFragmentFujiX);
300 transaction.addToBackStack(null);
301 transaction.commit();
311 public void changeCameraConnection()
313 if (interfaceProvider == null)
315 Log.v(TAG, "changeCameraConnection() : interfaceProvider is NULL");
320 interfaceProvider.resetCameraConnectionMethod();
321 ICameraConnection connection = interfaceProvider.getCameraConnection();
322 if (connection != null)
324 ICameraConnection.CameraConnectionStatus status = connection.getConnectionStatus();
325 if (status == ICameraConnection.CameraConnectionStatus.CONNECTED)
328 connection.disconnect(false);
332 connection.startWatchWifiStatus(activity);
343 public void changeSceneToDebugInformation()
345 if (logCatFragment == null)
347 logCatFragment = LogCatFragment.newInstance();
349 FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
350 transaction.replace(R.id.fragment1, logCatFragment);
352 transaction.addToBackStack(null);
353 transaction.commit();
358 public void changeSceneToApiList()
361 if (sonyApiListFragmentSony == null)
363 sonyApiListFragmentSony = SonyCameraApiListFragment.newInstance(interfaceProvider);
365 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
366 transaction.replace(R.id.fragment1, sonyApiListFragmentSony);
368 transaction.addToBackStack(null);
369 transaction.commit();
379 public void changeScenceToImageList()
381 Log.v(TAG, "changeScenceToImageList()");
384 if (imageGridViewFragment == null)
386 imageGridViewFragment = ImageGridViewFragment.newInstance(interfaceProvider.getPlaybackControl(), interfaceProvider.getCameraRunMode());
388 FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
389 transaction.replace(R.id.fragment1, imageGridViewFragment);
391 transaction.addToBackStack(null);
392 transaction.commit();
402 public void exitApplication()
404 Log.v(TAG, "exitApplication()");
407 ICameraConnection connection = getCameraConnection(interfaceProvider.getCammeraConnectionMethod());
408 if (connection != null)
410 connection.disconnect(true);
420 private ICameraConnection getCameraConnection(ICameraConnection.CameraConnectionMethod method)
422 Log.v(TAG, "method : " + method);
423 return (interfaceProvider.getCameraConnection());