/* IRKitServiceListActivity.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.irkit.settings.activity; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import org.deviceconnect.android.deviceplugin.irkit.IRKitDeviceService; import org.deviceconnect.android.deviceplugin.irkit.R; import org.deviceconnect.android.deviceplugin.irkit.data.IRKitDBHelper; import org.deviceconnect.android.message.DConnectMessageService; import org.deviceconnect.android.service.DConnectService; import org.deviceconnect.android.service.DConnectServiceListener; import org.deviceconnect.android.ui.activity.DConnectServiceListActivity; /** * IRKitサービス一覧画面. * @author NTT DOCOMO, INC. */ public class IRKitServiceListActivity extends DConnectServiceListActivity implements DConnectServiceListener{ /** * ダイアログタイプ:{@value}. */ private static final String DIALOG_TYPE_VIRTUAL_DEIVCE = "TYPE_VIRTUAL_DEIVCE"; @Override protected Class<? extends DConnectMessageService> getMessageServiceClass() { return IRKitDeviceService.class; } @Override protected Class<? extends Activity> getSettingManualActivityClass() { return IRKitSettingActivity.class; } @Override protected boolean enablesItemClick() { return true; } public void onServiceRemoved(final DConnectService service) { super.onServiceRemoved(service); if (service.getId().contains(".")) { IRKitDBHelper helper = new IRKitDBHelper(this); helper.removeVirtualDevice(service.getId()); } } @Override protected void onItemClick(final DConnectService service) { // ServiceIdに.が含まれている場合は仮想デバイスとみなす。 if (service.getId().contains(".")) { AlertDialogFragment vDialog = AlertDialogFragment.create(DIALOG_TYPE_VIRTUAL_DEIVCE, getString(R.string.not_open_virtual_device_title), getString(R.string.not_open_virtual_device_message), getString(R.string.dialog_ok)); vDialog.show(getFragmentManager(), DIALOG_TYPE_VIRTUAL_DEIVCE); return; } Intent intent = new Intent(getApplicationContext(), IRKitVirtualDeviceListActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(IRKitVirtualDeviceListActivity.EXTRA_SERVICE_ID, service.getId()); startActivity(intent); } /** * エラーダイアログ. */ public static class AlertDialogFragment extends DialogFragment { /** * タグのキーを定義します. */ private static final String KEY_TAG = "tag"; /** * タイトルのキーを定義します. */ private static final String KEY_TITLE = "title"; /** * メッセージのキーを定義します. */ private static final String KEY_MESSAGE = "message"; /** * Positiveボタンのキーを定義します. */ private static final String KEY_POSITIVE = "yes"; /** * Negativeボタンのキーを定義します. */ private static final String KEY_NEGATIVE = "no"; /** * ボタン無しでAlertDialogを作成します. * @param tag タグ * @param title タイトル * @param message メッセージ * @return AlertDialogFragmentのインスタンス */ public static AlertDialogFragment create(final String tag, final String title, final String message) { return create(tag, title, message, null, null); } /** * PositiveボタンのみでAlertDialogを作成します. * @param tag タグ * @param title タイトル * @param message メッセージ * @param positive positiveボタン名 * @return AlertDialogFragmentのインスタンス */ public static AlertDialogFragment create(final String tag, final String title, final String message, final String positive) { return create(tag, title, message, positive, null); } /** * ボタン有りでAlertDialogを作成します. * @param tag タグ * @param title タイトル * @param message メッセージ * @param positive positiveボタン名 * @param negative negativeボタン名 * @return AlertDialogFragmentのインスタンス */ public static AlertDialogFragment create(final String tag, final String title, final String message, final String positive, final String negative) { Bundle args = new Bundle(); args.putString(KEY_TAG, tag); args.putString(KEY_TITLE, title); args.putString(KEY_MESSAGE, message); if (positive != null) { args.putString(KEY_POSITIVE, positive); } if (negative != null) { args.putString(KEY_NEGATIVE, negative); } AlertDialogFragment dialog = new AlertDialogFragment(); dialog.setArguments(args); return dialog; } @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getArguments().getString(KEY_TITLE)); builder.setMessage(getArguments().getString(KEY_MESSAGE)); if (getArguments().getString(KEY_POSITIVE) != null) { builder.setPositiveButton(getArguments().getString(KEY_POSITIVE), null); } if (getArguments().getString(KEY_NEGATIVE) != null) { builder.setNegativeButton(getArguments().getString(KEY_NEGATIVE), null); } return builder.create(); } @Override public void onCancel(final DialogInterface dialog) { } } }