1 package net.osdn.gokigen.a01d.camera.sony.cameraproperty;
3 import android.app.Activity;
4 import android.app.AlertDialog;
5 import android.app.Dialog;
6 import android.support.v4.app.DialogFragment;
7 import android.content.DialogInterface;
8 import android.os.Bundle;
9 import android.support.annotation.NonNull;
10 import android.support.annotation.Nullable;
11 import android.util.Log;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.widget.AdapterView;
15 import android.widget.ArrayAdapter;
16 import android.widget.EditText;
17 import android.widget.Spinner;
18 import android.widget.TextView;
20 import net.osdn.gokigen.a01d.R;
21 import net.osdn.gokigen.a01d.camera.sony.wrapper.ISonyCameraApi;
28 public class SendRequestDialog extends DialogFragment
30 private final String TAG = toString();
31 private ISonyCameraApi cameraApi;
32 private String method = "";
33 private int selectedPosition = 0;
34 private SendRequestDialog.Callback callback = null;
35 Dialog myDialog = null;
41 public static SendRequestDialog newInstance(@NonNull ISonyCameraApi cameraApi, @NonNull String method, @Nullable SendRequestDialog.Callback callback)
43 SendRequestDialog instance = new SendRequestDialog();
44 instance.prepare(cameraApi, method, callback);
46 // パラメータはBundleにまとめておく
47 Bundle arguments = new Bundle();
48 arguments.putString("method", method);
49 //arguments.putString("message", message);
50 instance.setArguments(arguments);
59 private void prepare(@NonNull ISonyCameraApi cameraApi,@NonNull String method, @Nullable SendRequestDialog.Callback callback)
61 this.cameraApi = cameraApi;
63 this.callback = callback;
71 public @NonNull Dialog onCreateDialog(Bundle savedInstanceState)
73 final Activity activity = getActivity();
76 //final AlertDialog.Builder alertDialog = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.wear2_dialog_theme));
77 final AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity);
79 // Get the layout inflater
80 LayoutInflater inflater = activity.getLayoutInflater();
81 final View alertView = inflater.inflate(R.layout.request_edit_layout, null, false);
82 alertDialog.setView(alertView);
84 alertDialog.setIcon(R.drawable.ic_linked_camera_black_24dp);
85 alertDialog.setTitle("API : " + method);
86 final Spinner spinner = alertView.findViewById(R.id.spinner_selection_service);
87 final TextView methodName = alertView.findViewById(R.id.method_name);
88 final EditText parameter = alertView.findViewById(R.id.edit_parameter);
89 final EditText version = alertView.findViewById(R.id.edit_version);
92 methodName.setText("");
93 version.setText(activity.getString(R.string.dialog_version_hint));
94 ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item);
95 adapter.addAll(cameraApi.getSonyApiServiceList());
96 spinner.setAdapter(adapter);
97 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
100 public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
102 Log.v(TAG, "onItemSelected : " + position + " (" + id + ")");
103 selectedPosition = position;
107 public void onNothingSelected(AdapterView<?> parent)
109 Log.v(TAG, "onNothingSelected");
117 alertDialog.setCancelable(true);
120 alertDialog.setPositiveButton(activity.getString(R.string.dialog_positive_execute),
121 new DialogInterface.OnClickListener() {
122 public void onClick(DialogInterface dialog, int which)
126 Activity activity = getActivity();
127 if (activity != null)
129 if (callback != null)
131 callback.sendRequest((String) spinner.getAdapter().getItem(selectedPosition), method, parameter.getText().toString(), version.getText().toString());
138 if (callback != null)
140 callback.cancelled();
147 // ボタンを設定する (キャンセルボタン)
148 alertDialog.setNegativeButton(activity.getString(R.string.dialog_negative_cancel),
149 new DialogInterface.OnClickListener() {
150 public void onClick(DialogInterface dialog, int which) {
151 if (callback != null)
153 callback.cancelled();
160 myDialog = alertDialog.create();
166 public void onPause()
169 Log.v(TAG, "AlertDialog::onPause()");
170 if (myDialog != null)
180 public interface Callback
182 void sendRequest(String service, String apiName, String parameter, String version); // OKを選択したとき
183 void cancelled(); // キャンセルしたとき