OSDN Git Service

ステータス表示の準備
[gokigen/ThetaView.git] / app / src / main / java / jp / osdn / gokigen / thetaview / liveview / LiveImageViewFragment.kt
1 package jp.osdn.gokigen.thetaview.liveview
2
3 import android.content.Context
4 import android.os.Bundle
5 import android.util.Log
6 import android.view.*
7 import android.widget.ImageButton
8 import androidx.fragment.app.Fragment
9 import jp.osdn.gokigen.thetaview.R
10 import jp.osdn.gokigen.thetaview.operation.ICameraControl
11 import jp.osdn.gokigen.thetaview.preference.IPreferencePropertyAccessor
12 import jp.osdn.gokigen.thetaview.preference.PreferenceAccessWrapper
13
14 //class LiveImageViewFragment(private val contentLayoutId: Int = R.layout.liveimage_view) : Fragment(contentLayoutId)
15 class LiveImageViewFragment(private val contentLayoutId: Int = R.layout.glsurface_view) : Fragment(contentLayoutId), View.OnTouchListener, GestureDetector.OnGestureListener, ScaleGestureDetector.OnScaleGestureListener
16 {
17     private lateinit var liveViewView : View
18     private lateinit var cameraControl: ICameraControl
19     private lateinit var gestureDetector : GestureDetector
20     private lateinit var scaleGestureDetector : ScaleGestureDetector
21     private lateinit var imageView : GokigenGLView
22     private lateinit var informationView : CanvasView
23
24
25     companion object
26     {
27         private val TAG = toString()
28         fun newInstance() = LiveImageViewFragment().apply { }
29     }
30
31     fun setCameraControl(cameraControl : ICameraControl)
32     {
33         this.cameraControl = cameraControl
34     }
35
36     override fun onCreate(savedInstanceState: Bundle?)
37     {
38         super.onCreate(savedInstanceState)
39
40         // 入力の初期化
41         gestureDetector = GestureDetector(context, this)
42         gestureDetector.setIsLongpressEnabled(true)
43         scaleGestureDetector = ScaleGestureDetector(context, this)
44     }
45
46     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
47     {
48         if (::liveViewView.isInitialized)
49         {
50             return (liveViewView)
51         }
52         liveViewView = inflater.inflate(contentLayoutId, null, false)
53         liveViewView.setOnTouchListener(this)
54
55         //val imageView = liveviewView.findViewById<LiveImageView>(R.id.liveViewFinder0)
56         imageView = liveViewView.findViewById(R.id.liveViewFinder0)
57         informationView = liveViewView.findViewById(R.id.canvasView)
58         if (::cameraControl.isInitialized)
59         {
60             liveViewView.findViewById<ImageButton>(R.id.button_camera)?.setOnClickListener(cameraControl.captureButtonReceiver())
61
62             //cameraControl.setRefresher(imageView, imageView)
63             cameraControl.setRefresher(imageView, imageView)
64
65             informationView.setShowCameraStatus(PreferenceAccessWrapper(requireContext()).getBoolean(IPreferencePropertyAccessor.SHOW_CAMERA_STATUS, IPreferencePropertyAccessor.SHOW_CAMERA_STATUS_DEFAULT_VALUE))
66         }
67         return (liveViewView)
68     }
69
70     override fun onResume()
71     {
72         super.onResume()
73         Log.v(TAG, " onResume() : ")
74         if (::informationView.isInitialized)
75         {
76             informationView.setShowCameraStatus(PreferenceAccessWrapper(requireContext()).getBoolean(IPreferencePropertyAccessor.SHOW_CAMERA_STATUS, IPreferencePropertyAccessor.SHOW_CAMERA_STATUS_DEFAULT_VALUE))
77         }
78     }
79
80     override fun onPause()
81     {
82         super.onPause()
83         Log.v(TAG, " onPause() : ")
84     }
85
86     // View.OnTouchListener
87     override fun onTouch(v: View?, event: MotionEvent?): Boolean
88     {
89         //Log.v(TAG, " onTouch()")
90         if (event == null)
91         {
92             v?.performClick()
93             return (false)
94         }
95         return (gestureDetector.onTouchEvent(event) || scaleGestureDetector.onTouchEvent(event))
96     }
97
98     // GestureDetector.OnGestureListener
99     override fun onDown(e: MotionEvent?): Boolean
100     {
101         //Log.v(TAG, " Gesture onDown")
102         return (false)
103     }
104
105     // GestureDetector.OnGestureListener
106     override fun onShowPress(e: MotionEvent?)
107     {
108         //Log.v(TAG, " Gesture onShowPress")
109     }
110
111     // GestureDetector.OnGestureListener
112     override fun onSingleTapUp(e: MotionEvent?): Boolean
113     {
114         //Log.v(TAG, " Gesture onSingleTapUp")
115         return (false)
116     }
117
118     // GestureDetector.OnGestureListener
119     override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean
120     {
121         //Log.v(TAG, " Gesture onScroll")
122         imageView.moveView(distanceX, distanceY)
123         return (false)
124     }
125
126     // GestureDetector.OnGestureListener
127     override fun onLongPress(e: MotionEvent?)
128     {
129         //Log.v(TAG, " Gesture onLongPress")
130         imageView.resetView()
131     }
132
133     // GestureDetector.OnGestureListener
134     override fun onFling(e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float): Boolean
135     {
136         //Log.v(TAG, " Gesture onFling")
137         return (false)
138     }
139
140     // ScaleGestureDetector.OnScaleGestureListener
141     override fun onScale(detector: ScaleGestureDetector?): Boolean
142     {
143         //Log.v(TAG, " Gesture onScale")
144         try
145         {
146             if (detector != null)
147             {
148                 imageView.setScaleFactor(detector.scaleFactor)
149                 return (true)
150             }
151         }
152         catch (e : Exception)
153         {
154             e.printStackTrace()
155         }
156         return (false)
157     }
158
159     // ScaleGestureDetector.OnScaleGestureListener
160     override fun onScaleBegin(detector: ScaleGestureDetector?): Boolean
161     {
162         //Log.v(TAG, " Gesture onScaleBegin")
163         return (true)
164     }
165
166     // ScaleGestureDetector.OnScaleGestureListener
167     override fun onScaleEnd(detector: ScaleGestureDetector?)
168     {
169         //Log.v(TAG, " Gesture onScaleEnd")
170     }
171 }