OSDN Git Service

グリッド線を細くてしっかりとした白線にしてみた。
[gokigen/A01c.git] / wear / src / main / java / jp / sfjp / gokigen / a01c / liveview / OlyCameraLiveViewOnTouchListener.java
1 package jp.sfjp.gokigen.a01c.liveview;
2
3 import android.content.Context;
4 import android.util.Log;
5 import android.util.SparseArray;
6 import android.view.MotionEvent;
7 import android.view.View;
8
9 import jp.sfjp.gokigen.a01c.IChangeScene;
10 import jp.sfjp.gokigen.a01c.R;
11 import jp.sfjp.gokigen.a01c.liveview.button.IPushedButton;
12 import jp.sfjp.gokigen.a01c.liveview.button.PushedButtonFactory;
13 import jp.sfjp.gokigen.a01c.olycamerawrapper.dispatcher.ICameraFeatureDispatcher;
14
15 /**
16  *   画面がタッチ・クリックされた時の処理分岐
17  *
18  */
19 public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener, View.OnTouchListener, View.OnLongClickListener
20 {
21     private final String TAG = toString();
22
23     private final ICameraFeatureDispatcher dispatcher;
24     private final IChangeScene changeScene;
25     private final SparseArray<IPushedButton> buttonDispatcher;
26     private boolean prohibitOperation = true;
27
28
29     /**
30      *   コンストラクタの整理
31      *
32      */
33     public OlyCameraLiveViewOnTouchListener(Context context, ICameraFeatureDispatcher dispatcher, IChangeScene changeScene)
34     {
35         this.dispatcher = dispatcher;
36         this.changeScene = changeScene;
37         buttonDispatcher = new PushedButtonFactory(context, dispatcher).getButtonMap();
38     }
39
40     /**
41      *   ボタン(オブジェクト)をクリックしたときの処理
42      */
43     @Override
44     public void onClick(View v)
45     {
46         int id = v.getId();
47         Log.v(TAG, "onClick() : " + id);
48         if (prohibitOperation)
49         {
50             // 操作禁止の指示がされていた場合は何もしない
51             Log.v(TAG, "onClick() : prohibit operation");
52             return;
53         }
54         try
55         {
56             IPushedButton button = buttonDispatcher.get(id);
57             if (button != null)
58             {
59                 button.pushedButton(false);
60             }
61         }
62         catch (Exception e)
63         {
64             e.printStackTrace();
65         }
66     }
67
68     /**
69      *   長押しされたとき...
70      *
71      *
72      */
73     @Override
74     public boolean onLongClick(View v)
75     {
76         boolean ret = false;
77         int id = v.getId();
78         Log.v(TAG, "onLongClick() : " + id);
79         if (prohibitOperation)
80         {
81             // 操作禁止の指示がされていた場合は何もしない
82             Log.v(TAG, "onLongClick() : prohibit operation");
83             return (false);
84         }
85         try
86         {
87             IPushedButton button = buttonDispatcher.get(id);
88             if (button != null)
89             {
90                 ret = button.pushedButton(true);
91             }
92         }
93         catch (Exception e)
94         {
95             e.printStackTrace();
96         }
97         return (ret);
98     }
99
100     /**
101      *   画面(ライブビュー部分)をタッチした時の処理
102      *
103      */
104     @Override
105     public boolean onTouch(View v, MotionEvent event)
106     {
107         int id = v.getId();
108         Log.v(TAG, "onTouch() : " + id);
109         if (prohibitOperation)
110         {
111             // 操作禁止の指示がされていた場合は、接続状態を示すようにする
112             Log.v(TAG, "onTouch() : prohibit operation");
113             return (changeScene.showConnectionStatus());
114         }
115         // 現在のところ、タッチエリアの場合はオートフォーカス実行で固定
116         return ((id == R.id.liveview)&&(dispatcher.dispatchAreaAction(event, ICameraFeatureDispatcher.FEATURE_AREA_ACTION_DRIVE_AUTOFOCUS)));
117     }
118
119     /**
120      *   操作の可否を設定する。
121      *
122      *    @param operation  true: 操作可能, false: 操作不可
123      *
124      */
125     public void setEnableOperation(boolean operation)
126     {
127         prohibitOperation = !operation;
128     }
129
130     /**
131      *   操作可能状態かを応答する。
132      *
133      * @return true: 操作可能, false: 操作不可
134      */
135     public boolean isEnabledOperation()
136     {
137         return (!prohibitOperation);
138     }
139
140 }