package net.osdn.gokigen.gr2control.liveview;
+import android.content.DialogInterface;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.FragmentActivity;
import net.osdn.gokigen.gr2control.R;
+import net.osdn.gokigen.gr2control.camera.ICameraStatus;
import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandCallback;
import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandPublisher;
import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.IFujiXCameraCommands;
import net.osdn.gokigen.gr2control.camera.utils.SimpleLogDumper;
+import java.util.List;
+
public class LiveViewFujiXKeyPanelClickListener implements View.OnClickListener, View.OnLongClickListener, IFujiXCommandCallback
{
private final String TAG = toString();
+ private final FragmentActivity activity;
private static final boolean isDumpLog = false;
private final IInterfaceProvider interfaceProvider;
private final Vibrator vibrator;
- LiveViewFujiXKeyPanelClickListener(@NonNull IInterfaceProvider interfaceProvider, @Nullable Vibrator vibrator)
+ LiveViewFujiXKeyPanelClickListener(@NonNull FragmentActivity activity, @NonNull IInterfaceProvider interfaceProvider, @Nullable Vibrator vibrator)
{
+ this.activity = activity;
this.interfaceProvider = interfaceProvider;
this.vibrator = vibrator;
}
case R.id.button_fuji_x_xv_minus:
updateValue(IFujiXCameraCommands.EXPREV, 0);
break;
- case R.id.button_fuji_x_xv_plus:
- updateValue(IFujiXCameraCommands.EXPREV, 1);
+ case R.id.button_fuji_x_flash:
+ updateSelection(ICameraStatus.FLASH_XV);
+ isVibrate = false;
+ break;
+ case R.id.button_fuji_x_timer:
+ updateSelection(ICameraStatus.SELF_TIMER);
+ isVibrate = false;
break;
+
default:
isVibrate = false;
break;
break;
case R.id.button_fuji_x_xv_plus:
break;
+ case R.id.button_fuji_x_flash:
+ break;
+ case R.id.button_fuji_x_timer:
+ break;
default:
break;
}
}
/**
+ * 選択肢を更新する
+ *
+ */
+ private void updateSelection(@NonNull final String key)
+ {
+ try
+ {
+ Log.v(TAG, "updateSelection() : " + key);
+ final ICameraStatus statusList = interfaceProvider.getCameraStatusListHolder();
+ if (statusList == null)
+ {
+ // ステータスリストの保持クラスが取れなかった...
+ Log.w(TAG, "ICameraStatus is NULL...");
+ return;
+ }
+ final String current = statusList.getStatus(key);
+ final List<String> itemList = statusList.getStatusList(key);
+ if (itemList.size() <= 0)
+ {
+ // アイテム(選択肢)が登録されていなければ、何もしない
+ return;
+ }
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+
+ // リストから配列に積み替え...
+ String[] items = new String[itemList.size()];
+ int index = 0;
+ for (String item : itemList)
+ {
+ Log.v(TAG, " (" + index + ") " + item);
+ items[index] = item;
+ index++;
+ }
+ int position = itemList.indexOf(current);
+ Log.v(TAG, " updateSelection() : " + key + " " + itemList.size() + " " + position);
+ builder.setSingleChoiceItems(items, position, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i)
+ {
+ String choice = itemList.get(i);
+ Log.v(TAG, key + " ITEM CHOICED : " + choice + "(CURRENT : " + current + ")");
+
+ statusList.setStatus(key, choice);
+ dialogInterface.dismiss();
+ }
+ });
+ builder.show();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
* ぶるぶるさせる
*
*/