OSDN Git Service

Thetaのプレビューまで。
[gokigen/A01c.git] / wear / src / main / java / jp / sfjp / gokigen / a01c / thetacamerawrapper / ThetaCameraController.kt
1 package jp.sfjp.gokigen.a01c.thetacamerawrapper
2
3 import android.util.Log
4 import android.view.MotionEvent
5 import androidx.appcompat.app.AppCompatActivity
6 import jp.sfjp.gokigen.a01c.ICameraConnection
7 import jp.sfjp.gokigen.a01c.ICameraController
8 import jp.sfjp.gokigen.a01c.IShowInformation
9 import jp.sfjp.gokigen.a01c.liveview.CameraLiveViewListenerImpl
10 import jp.sfjp.gokigen.a01c.liveview.IAutoFocusFrameDisplay
11 import jp.sfjp.gokigen.a01c.liveview.ICameraStatusReceiver
12 import jp.sfjp.gokigen.a01c.olycamerawrapper.ICameraRunMode
13 import jp.sfjp.gokigen.a01c.olycamerawrapper.IIndicatorControl
14 import jp.sfjp.gokigen.a01c.olycamerawrapper.ILevelGauge
15 import jp.sfjp.gokigen.a01c.olycamerawrapper.IZoomLensHolder
16 import jp.sfjp.gokigen.a01c.olycamerawrapper.property.ICameraPropertyLoadSaveOperations
17 import jp.sfjp.gokigen.a01c.olycamerawrapper.property.ILoadSaveCameraProperties
18 import jp.sfjp.gokigen.a01c.olycamerawrapper.property.IOlyCameraPropertyProvider
19 import jp.sfjp.gokigen.a01c.preference.PreferenceAccessWrapper
20 import jp.sfjp.gokigen.a01c.thetacamerawrapper.connection.ThetaCameraConnection
21 import jp.sfjp.gokigen.a01c.thetacamerawrapper.liveview.ThetaLiveViewControl
22 import jp.sfjp.gokigen.a01c.thetacamerawrapper.operation.ThetaDummyOperation
23 import jp.sfjp.gokigen.a01c.thetacamerawrapper.operation.ThetaSingleShotControl
24
25 class ThetaCameraController(val context: AppCompatActivity, private val focusFrameDisplay: IAutoFocusFrameDisplay, private val showInformation: IShowInformation, private val receiver: ICameraStatusReceiver, private val preferences: PreferenceAccessWrapper) : ICameraController, IIndicatorControl
26 {
27     //private lateinit var listener : CameraLiveViewListenerImpl
28     private lateinit var liveViewControl : ThetaLiveViewControl
29     private val dummyOperation = ThetaDummyOperation()
30     private val sessionIdHolder = ThetaSessionHolder()
31     private val cameraConnection = ThetaCameraConnection(context, receiver, sessionIdHolder)
32     private val singleShot = ThetaSingleShotControl(sessionIdHolder, this, this)
33
34     override fun setLiveViewListener(listener: CameraLiveViewListenerImpl)
35     {
36         this.liveViewControl = ThetaLiveViewControl(sessionIdHolder, listener)
37     }
38
39     override fun changeLiveViewSize(size: String?)
40     {
41         // ログだけ残す
42         Log.v(toString(), " changeLiveViewSize: $size")
43     }
44
45     override fun startLiveView()
46     {
47         if (::liveViewControl.isInitialized)
48         {
49             liveViewControl.startLiveView()
50         }
51     }
52
53     override fun stopLiveView()
54     {
55         if (::liveViewControl.isInitialized)
56         {
57             liveViewControl.stopLiveView()
58         }
59     }
60
61     override fun updateTakeMode()
62     {
63         // なにもしない
64     }
65
66     override fun driveAutoFocus(event: MotionEvent?): Boolean
67     {
68         return (true)
69     }
70
71     override fun unlockAutoFocus()
72     {
73         // なにもしない
74     }
75
76     override fun isContainsAutoFocusPoint(event: MotionEvent?): Boolean
77     {
78         return (false)
79     }
80
81     override fun singleShot()
82     {
83         singleShot.singleShot(sessionIdHolder.isApiLevelV21())
84     }
85
86     override fun movieControl()
87     {
88         // TODO("Not yet implemented")
89     }
90
91     override fun bracketingShot(bracketingStyle: Int, bracketingCount: Int, durationSeconds: Int)
92     {
93         // TODO("Not yet implemented")
94     }
95
96     override fun setRecViewMode(isRecViewMode: Boolean)
97     {
98         // なにもしない
99     }
100
101     override fun toggleAutoExposure()
102     {
103         // なにもしない
104     }
105
106     override fun toggleManualFocus()
107     {
108         // なにもしない
109     }
110
111     override fun isManualFocus(): Boolean
112     {
113         return (false)
114     }
115
116     override fun isAFLock(): Boolean
117     {
118         return (false)
119     }
120
121     override fun isAELock(): Boolean
122     {
123         return (false)
124     }
125
126     override fun updateStatusAll()
127     {
128         // なにもしない
129     }
130
131     override fun getCameraPropertyProvider(): IOlyCameraPropertyProvider
132     {
133         return (dummyOperation)
134     }
135
136     override fun getCameraPropertyLoadSaveOperations(): ICameraPropertyLoadSaveOperations
137     {
138         return (dummyOperation)
139     }
140
141     override fun getLoadSaveCameraProperties(): ILoadSaveCameraProperties
142     {
143         return (dummyOperation)
144     }
145
146     override fun getChangeRunModeExecutor(): ICameraRunMode
147     {
148         return (dummyOperation)
149     }
150
151     override fun getConnectionInterface(): ICameraConnection
152     {
153         return (cameraConnection)
154     }
155
156     override fun getZoomLensHolder(): IZoomLensHolder
157     {
158         return (dummyOperation)
159     }
160
161     override fun getLevelGauge(): ILevelGauge
162     {
163         return (dummyOperation)
164     }
165
166     override fun onAfLockUpdate(isAfLocked: Boolean)
167     {
168         //TODO("Not yet implemented")
169     }
170
171     override fun onShootingStatusUpdate(status: IIndicatorControl.shootingStatus?)
172     {
173         //TODO("Not yet implemented")
174     }
175 }