1 package net.osdn.gokigen.gr2control.liveview;
3 import android.content.DialogInterface;
4 import android.util.Log;
5 import android.view.View;
7 import net.osdn.gokigen.gr2control.R;
8 import net.osdn.gokigen.gr2control.camera.ICameraStatus;
9 import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
11 import java.util.List;
13 import androidx.annotation.NonNull;
14 import androidx.appcompat.app.AlertDialog;
15 import androidx.fragment.app.FragmentActivity;
21 class LiveViewControlPanelClickListener implements View.OnClickListener
23 private final String TAG = toString();
24 private final FragmentActivity activity;
25 private final IInterfaceProvider interfaceProvider;
27 LiveViewControlPanelClickListener(FragmentActivity context, IInterfaceProvider interfaceProvider)
29 this.activity = context;
30 this.interfaceProvider = interfaceProvider;
34 public void onClick(View view)
38 int id = view.getId();
39 ICameraStatus statusList = interfaceProvider.getCameraStatusListHolder();
40 if (statusList == null)
42 // ステータスリストの保持クラスが取れなかった...
43 Log.w(TAG, "ICameraStatus is NULL...");
48 case R.id.takemodeTextView:
49 selectTakeMode(statusList);
52 case R.id.shutterSpeedTextView:
53 selectShutterSpeed(statusList);
56 case R.id.apertureValueTextView:
57 selectAperture(statusList);
60 case R.id.exposureCompensationTextView:
61 selectExposureCompensation(statusList);
64 case R.id.aeModeImageView:
65 selectAeMode(statusList);
68 case R.id.whiteBalanceTextView:
69 selectWhiteBalance(statusList);
72 case R.id.isoSensitivityTextView:
73 selectIsoSensitivity(statusList);
76 case R.id.setEffectImageView:
77 selectEffect(statusList);
81 Log.v(TAG, "onClick() : " + id);
91 private void selectTakeMode(@NonNull ICameraStatus statusList)
93 Log.v(TAG,"selectTakeMode()");
96 choiceStatusList(statusList, ICameraStatus.TAKE_MODE);
104 private void selectShutterSpeed(@NonNull ICameraStatus statusList)
106 Log.v(TAG,"selectShutterSpeed()");
109 choiceStatusList(statusList, ICameraStatus.SHUTTER_SPEED);
118 private void selectAperture(@NonNull ICameraStatus statusList)
120 Log.v(TAG,"selectAperture()");
123 choiceStatusList(statusList, ICameraStatus.APERATURE);
132 private void selectExposureCompensation(@NonNull ICameraStatus statusList)
134 Log.v(TAG,"selectExposureCompensation()");
137 choiceStatusList(statusList, ICameraStatus.EXPREV);
146 private void selectAeMode(@NonNull ICameraStatus statusList)
148 Log.v(TAG,"selectAeMode()");
151 choiceStatusList(statusList, ICameraStatus.AE);
159 private void selectWhiteBalance(@NonNull ICameraStatus statusList)
161 Log.v(TAG,"selectWhiteBalance()");
164 choiceStatusList(statusList, ICameraStatus.WHITE_BALANCE);
172 private void selectIsoSensitivity(@NonNull ICameraStatus statusList)
174 Log.v(TAG,"selectIsoSensitivity()");
177 choiceStatusList(statusList, ICameraStatus.ISO_SENSITIVITY);
185 private void selectEffect(@NonNull ICameraStatus statusList)
187 Log.v(TAG,"selectWhiteBalance()");
190 choiceStatusList(statusList, ICameraStatus.EFFECT);
202 private void choiceStatusList(@NonNull final ICameraStatus statusList, final String key)
206 final String current = statusList.getStatus(key);
207 final List<String> itemList = statusList.getStatusList(key);
209 if (itemList.size() <= 0)
211 // アイテム(選択肢)が登録されていなければ、何もしない
215 // しかし、ここ、ちょーダサいんだけど...
216 String[] items = new String[itemList.size()];
217 for (int ii = 0; ii < items.length; ++ii)
219 items[ii] = itemList.get(ii);
220 // ついでにもうべたべたで...ここで表示用の文字列を置き換える
221 // (注: itemsだけ置き換え、itemList と current は 内部値のままとなっている
222 if (key.equals(ICameraStatus.SHUTTER_SPEED))
224 items[ii] = items[ii].replace(".", "/");
226 else if (key.equals(ICameraStatus.APERATURE))
228 items[ii] = "F" + items[ii];
232 AlertDialog.Builder builder = new AlertDialog.Builder(activity);
233 builder.setSingleChoiceItems(items, itemList.indexOf(current), new DialogInterface.OnClickListener() {
235 public void onClick(DialogInterface dialogInterface, int i)
237 String choice = itemList.get(i);
238 Log.v(TAG, key + " ITEM CHOICED : " + choice + "(CURRENT : " + current + ")");
240 statusList.setStatus(key, choice);
241 dialogInterface.dismiss();