OSDN Git Service

ボタンに割り当てる機能をカスタマイズ可能にする仕込みを入れた。
authorMRSa <mrsa@myad.jp>
Tue, 14 Mar 2017 15:13:55 +0000 (00:13 +0900)
committerMRSa <mrsa@myad.jp>
Tue, 14 Mar 2017 15:13:55 +0000 (00:13 +0900)
app/src/main/java/jp/sfjp/gokigen/a01c/liveview/ICameraFeatureDispatcher.java [new file with mode: 0644]
app/src/main/java/jp/sfjp/gokigen/a01c/liveview/OlyCameraLiveViewOnTouchListener.java

diff --git a/app/src/main/java/jp/sfjp/gokigen/a01c/liveview/ICameraFeatureDispatcher.java b/app/src/main/java/jp/sfjp/gokigen/a01c/liveview/ICameraFeatureDispatcher.java
new file mode 100644 (file)
index 0000000..e8c2d02
--- /dev/null
@@ -0,0 +1,57 @@
+package jp.sfjp.gokigen.a01c.liveview;
+
+/**
+ *   機能とボタンの設定群
+ *
+ */
+public interface ICameraFeatureDispatcher
+{
+    // 撮影モード
+    String MODE_P = "_P";
+    String MODE_M = "_M";
+    String MODE_A = "_A";
+    String MODE_S = "_S";
+    String MODE_ART = "_ART";
+    String MODE_IAUTO = "_iAUTO";
+    String MODE_MOVIE = "_MOVIE";
+
+    // ボタンアクション
+    String ACTION_BUTTON1 = "B1";
+    String ACTION_BUTTON2 = "B2";
+    String ACTION_BUTTON3 = "B3";
+    String ACTION_BUTTON4 = "B4";
+    String ACTION_BUTTON5 = "B5";
+    String ACTION_BUTTON6 = "B6";
+
+    // エリアアクション
+    String ACTION_AREA1 = "A1";
+    String ACTION_AREA2 = "A2";
+    String ACTION_AREA3 = "A3";
+
+    // ボタンラベル
+    String DRAWABLE_BUTTON1 = "D1";
+    String DRAWABLE_BUTTON2 = "D2";
+    String DRAWABLE_BUTTON3 = "D3";
+    String DRAWABLE_BUTTON4 = "D4";
+    String DRAWABLE_BUTTON5 = "D5";
+    String DRAWABLE_BUTTON6 = "D6";
+
+    // 表示エリア
+    String SHOW_TEXT_AREA1 = "TXT1";
+    String SHOW_TEXT_AREA2 = "TXT2";
+    String SHOW_TEXT_AREA3 = "TXT3";
+    String SHOW_TEXT_AREA4 = "TXT4";
+    String SHOW_TEXT_AREA5 = "TXT5";
+    String SHOW_TEXT_AREA6 = "TXT6";
+    String SHOW_TEXT_AREA7 = "TXT7";
+
+
+    // A01Cが持つ機能 (ボタンに割り当て可能)
+    int FEATURE_ACTION_NONE = 0;
+    int FEATURE_SETTINGS = 1;
+    int FEATURE_TOGGLE_SHOW_GRID = 2;
+    int FEATURE_SHUTTER_SINGLESHOT = 3;
+    int FEATURE_CHANGE_TAKEMODE = 4;
+    int FEATURE_CHAGE_AE_LOCK_MODE = 5;
+
+}
index 9094b7d..727b362 100644 (file)
@@ -143,298 +143,425 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         return (camera.driveAutoFocus(event));
     }
 
-
+    /**
+     *   ボタン1が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedButton1()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_BUTTON1;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_TOGGLE_SHOW_GRID;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
-        // グリッドの表示 / 非表示
-        changeShowGrid();
+        dispatchAction(IShowInformation.BUTTON_1, preferences.getInt(preference_action_id, defaultAction));
     }
 
 
+    /**
+     *   ボタン2が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedButton2()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_BUTTON2;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_ACTION_NONE;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
+        dispatchAction(IShowInformation.BUTTON_2, preferences.getInt(preference_action_id, defaultAction));
     }
 
-
-
+    /**
+     *   ボタン3が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedButton3()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_BUTTON3;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_ACTION_NONE;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
+        dispatchAction(IShowInformation.BUTTON_3, preferences.getInt(preference_action_id, defaultAction));
     }
 
-
+    /**
+     *   ボタン4が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedButton4()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_BUTTON4;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_ACTION_NONE;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
+        dispatchAction(IShowInformation.BUTTON_4, preferences.getInt(preference_action_id, defaultAction));
     }
 
-
+    /**
+     *   ボタン5が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedButton5()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_BUTTON5;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_ACTION_NONE;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
+        dispatchAction(IShowInformation.BUTTON_5, preferences.getInt(preference_action_id, defaultAction));
     }
 
-
+    /**
+     *   ボタン6が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedButton6()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_BUTTON6;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
-        pushShutterButton();
+        dispatchAction(IShowInformation.BUTTON_6, preferences.getInt(preference_action_id, defaultAction));
     }
 
 
+    /**
+     *   表示エリア1が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedArea1()
     {
-        // 撮影モードの変更
-        changeTakeMode();
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_AREA1;
+        String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_CHANGE_TAKEMODE;
+        switch (takeMode)
+        {
+            case "P":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
+                break;
+
+            case "A":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
+                break;
+
+            case "S":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
+                break;
+
+            case "M":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
+                break;
+
+            case "ART":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
+                break;
+
+            case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
+            case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
+            default:
+                break;
+        }
+        dispatchAction(IShowInformation.AREA_1, preferences.getInt(preference_action_id, defaultAction));
     }
 
+    /**
+     *   表示エリア2が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedArea2()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_AREA2;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_ACTION_NONE;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
+        dispatchAction(IShowInformation.AREA_2, preferences.getInt(preference_action_id, defaultAction));
     }
 
+    /**
+     *   表示エリア3が押された時の機能を引き当て実行する
+     *
+     */
     private void pushedArea3()
     {
+        String preference_action_id = ICameraFeatureDispatcher.ACTION_AREA3;
         String takeMode = getTakeMode();
+        int defaultAction = ICameraFeatureDispatcher.FEATURE_CHAGE_AE_LOCK_MODE;
         switch (takeMode)
         {
             case "P":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
                 break;
 
             case "A":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
                 break;
 
             case "S":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
                 break;
 
             case "M":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
                 break;
 
             case "ART":
-                //
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
                 break;
 
             case "iAuto":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
+                break;
+
             case "movie":
+                preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                break;
+
             default:
-                //
                 break;
         }
-        changeAeLockMode();
+        dispatchAction(IShowInformation.AREA_3, preferences.getInt(preference_action_id, defaultAction));
     }
 
     /**
-     *   ã\83\86ã\82­ã\82¹ã\83\88表示ã\82¨ã\83ªã\82¢ï¼\88設å®\9aç\94»é\9d¢ã\82\92é\96\8bã\81\8fで固定)
+     *   ã\83\86ã\82­ã\82¹ã\83\88表示ã\82¨ã\83ªã\82¢ï¼\94ï¼\88æ©\9fè\83½ã\81¯ã\80\8c設å®\9aç\94»é\9d¢ã\82\92é\96\8bã\81\8fã\80\8dで固定)
      */
     private void pushedArea4()
     {
-        showSettingsScreen();
+        // 設定画面を開く
+        dispatchAction(IShowInformation.AREA_4, ICameraFeatureDispatcher.FEATURE_SETTINGS);
     }
 
+
     /***************************************************************
-     *   以下、具体的な機能の実行... あとで切り離す。
+     *   ä»¥ä¸\8bã\80\81å\85·ä½\93ç\9a\84ã\81ªæ©\9fè\83½ã\81®å®\9fè¡\8c... ã\81\93ã\81\93ã\81\8bã\82\89ä¸\8bã\81¯ã\80\81ã\81\82ã\81¨ã\81§å\88\87ã\82\8aé\9b¢ã\81\99ã\80\82
      *
      ***************************************************************/
 
@@ -494,7 +621,6 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         camera.updateTakeMode();
     }
 
-
     /**
      *   シャッターボタンが押された!
      *   (現在は、連続撮影モードやムービー撮影についてはまだ非対応)
@@ -514,10 +640,10 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
      *   グリッド表示の ON/OFFを切り替える
      *
      */
-    private void changeShowGrid()
+    private void changeShowGrid(int objectId)
     {
         liveImageView.toggleShowGridFrame();
-        updateGridStatusButton(IShowInformation.BUTTON_1);
+        updateGridStatusButton(objectId);
     }
 
     /**
@@ -557,4 +683,44 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
     {
         // TBD...
     }
+
+    /**
+     *   指定した機能を実行する
+     *
+     * @param objectId     操作したオブジェクト
+     * @param featureNumber  操作する機能
+     */
+    private void dispatchAction(int objectId, int featureNumber)
+    {
+        if (featureNumber <= ICameraFeatureDispatcher.FEATURE_ACTION_NONE)
+        {
+            // 何もしない
+            return;
+        }
+
+        // 機能実行の割り当て...
+        switch (featureNumber)
+        {
+            case ICameraFeatureDispatcher.FEATURE_SETTINGS:
+                // 設定画面を開く
+                showSettingsScreen();
+                break;
+            case ICameraFeatureDispatcher.FEATURE_TOGGLE_SHOW_GRID:
+                // グリッド標示ON/OFF
+                changeShowGrid(objectId);
+                break;
+            case ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT:
+                // シャッター
+                pushShutterButton();
+                break;
+            case ICameraFeatureDispatcher.FEATURE_CHANGE_TAKEMODE:
+                // 撮影モードの変更
+                changeTakeMode();
+                break;
+            case ICameraFeatureDispatcher.FEATURE_CHAGE_AE_LOCK_MODE:
+                // AE LOCKのON/OFF切り替え
+                changeAeLockMode();
+                break;
+        }
+    }
 }