1 package jp.sfjp.gokigen.a01c.thetacamerawrapper
3 import android.util.Log
4 import android.view.MotionEvent
5 import androidx.appcompat.app.AppCompatActivity
6 import androidx.preference.PreferenceDataStore
7 import jp.sfjp.gokigen.a01c.ICameraConnection
8 import jp.sfjp.gokigen.a01c.ICameraController
9 import jp.sfjp.gokigen.a01c.ICameraFeatureDispatcher
10 import jp.sfjp.gokigen.a01c.IShowInformation
11 import jp.sfjp.gokigen.a01c.liveview.CameraLiveViewListenerImpl
12 import jp.sfjp.gokigen.a01c.liveview.IAutoFocusFrameDisplay
13 import jp.sfjp.gokigen.a01c.liveview.ICameraStatusReceiver
14 import jp.sfjp.gokigen.a01c.liveview.ILiveImageStatusNotify
15 import jp.sfjp.gokigen.a01c.olycamerawrapper.ICameraRunMode
16 import jp.sfjp.gokigen.a01c.olycamerawrapper.IIndicatorControl
17 import jp.sfjp.gokigen.a01c.olycamerawrapper.ILevelGauge
18 import jp.sfjp.gokigen.a01c.olycamerawrapper.IZoomLensHolder
19 import jp.sfjp.gokigen.a01c.olycamerawrapper.property.ICameraPropertyLoadSaveOperations
20 import jp.sfjp.gokigen.a01c.olycamerawrapper.property.ILoadSaveCameraProperties
21 import jp.sfjp.gokigen.a01c.olycamerawrapper.property.IOlyCameraPropertyProvider
22 import jp.sfjp.gokigen.a01c.preference.PreferenceAccessWrapper
23 import jp.sfjp.gokigen.a01c.thetacamerawrapper.connection.ThetaCameraConnection
24 import jp.sfjp.gokigen.a01c.thetacamerawrapper.liveview.ThetaLiveViewControl
25 import jp.sfjp.gokigen.a01c.thetacamerawrapper.operation.ThetaDummyOperation
26 import jp.sfjp.gokigen.a01c.thetacamerawrapper.operation.ThetaSingleShotControl
28 class ThetaCameraController(val context: AppCompatActivity, private val focusFrameDisplay: IAutoFocusFrameDisplay, private val showInformation: IShowInformation, private val receiver: ICameraStatusReceiver, private val preferences: PreferenceAccessWrapper) : ICameraController, IIndicatorControl
30 private lateinit var featureDispatcher : ThetaFeatureDispatcher
31 private lateinit var liveViewControl : ThetaLiveViewControl
32 private val dummyOperation = ThetaDummyOperation()
33 private val sessionIdHolder = ThetaSessionHolder()
34 private val cameraConnection = ThetaCameraConnection(context, receiver, sessionIdHolder)
35 private val singleShot = ThetaSingleShotControl(sessionIdHolder, this, this)
37 override fun setLiveViewListener(listener: CameraLiveViewListenerImpl)
39 this.liveViewControl = ThetaLiveViewControl(sessionIdHolder, listener)
42 override fun changeLiveViewSize(size: String?)
45 Log.v(toString(), " changeLiveViewSize: $size")
48 override fun startLiveView()
50 if (::liveViewControl.isInitialized)
52 liveViewControl.startLiveView()
56 override fun stopLiveView()
58 if (::liveViewControl.isInitialized)
60 liveViewControl.stopLiveView()
64 override fun updateTakeMode()
69 override fun driveAutoFocus(event: MotionEvent?): Boolean
74 override fun unlockAutoFocus()
79 override fun isContainsAutoFocusPoint(event: MotionEvent?): Boolean
84 override fun singleShot()
86 singleShot.singleShot(sessionIdHolder.isApiLevelV21())
89 override fun movieControl()
91 // TODO("Not yet implemented")
94 override fun bracketingShot(bracketingStyle: Int, bracketingCount: Int, durationSeconds: Int)
96 // TODO("Not yet implemented")
99 override fun setRecViewMode(isRecViewMode: Boolean)
104 override fun toggleAutoExposure()
109 override fun toggleManualFocus()
114 override fun isManualFocus(): Boolean
119 override fun isAFLock(): Boolean
124 override fun isAELock(): Boolean
129 override fun updateStatusAll()
134 override fun getCameraPropertyProvider(): IOlyCameraPropertyProvider
136 return (dummyOperation)
139 override fun getCameraPropertyLoadSaveOperations(): ICameraPropertyLoadSaveOperations
141 return (dummyOperation)
144 override fun getLoadSaveCameraProperties(): ILoadSaveCameraProperties
146 return (dummyOperation)
149 override fun getChangeRunModeExecutor(): ICameraRunMode
151 return (dummyOperation)
154 override fun getConnectionInterface(): ICameraConnection
156 return (cameraConnection)
159 override fun getZoomLensHolder(): IZoomLensHolder
161 return (dummyOperation)
164 override fun getLevelGauge(): ILevelGauge
166 return (dummyOperation)
169 override fun getFeatureDispatcher(context: AppCompatActivity, statusDrawer: IShowInformation, camera: ICameraController, accessWrapper: PreferenceDataStore, liveImageView: ILiveImageStatusNotify): ICameraFeatureDispatcher
171 if (!(::featureDispatcher.isInitialized))
173 featureDispatcher = ThetaFeatureDispatcher(context, statusDrawer, camera, accessWrapper, liveImageView)
175 return (featureDispatcher)
178 override fun onAfLockUpdate(isAfLocked: Boolean)
180 //TODO("Not yet implemented")
183 override fun onShootingStatusUpdate(status: IIndicatorControl.shootingStatus?)
185 //TODO("Not yet implemented")