13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* 23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project 33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License"); 53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License. 63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at 73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * http://www.apache.org/licenses/LICENSE-2.0 93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software 113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS, 123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and 143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License. 153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypackage com.android.omadm.service; 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport android.content.BroadcastReceiver; 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport android.content.Context; 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport android.content.Intent; 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport android.content.IntentFilter; 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport android.text.InputType; 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport android.util.Log; 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport java.util.concurrent.locks.Condition; 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport java.util.concurrent.locks.Lock; 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport java.util.concurrent.locks.ReentrantLock; 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypublic class DMAlert { 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* DMServiceAlert Response Code */ 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_RESP_FAIL = -1; 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_RESP_SUCCESS = 0; 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_RESP_NO = 1; 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_RESP_YES = 2; 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_RESP_CANCEL = 3; 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_RESP_TIMEOUT = 4; 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // DMServiceAlert Input Type 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_INPUT_ALPHA = 0; 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_INPUT_NUMERIC = 1; 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_INPUT_DATE = 2; 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_INPUT_TIME = 3; 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_INPUT_PHONE_NUM = 4; 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_INPUT_IP_ADDR = 5; 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // DMServiceAlert Echo Type 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ECHO_TEXT = 0; 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_ECHO_PASSWD = 1; 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // DMServiceAlert Icon Type 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_ICON_GENERIC = 0; 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ICON_PROGRESS = 1; 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ICON_OK = 2; 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ICON_ERROR = 3; 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ICON_CONFIRM = 4; 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ICON_ACTION = 5; 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_ICON_INFO = 6; 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // DMServiceAlert Title Type 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_TITLE_DEVICE_MGMT = 0; 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_SYSTEM_UPDATE = 1; 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_NEED_AUTHENTICATION = 2; 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_UPDATE_COMPLETE = 3; 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static final int DM_SERVICE_ALERT_TITLE_SYSTEM_MESSAGE = 4; 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_AUTHENTICATION_FAILED = 5; 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_UPDATE_ERROR = 6; 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_UPDATE_CANCELLED = 7; 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_PROFILE_FOR_BROWSER = 8; 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_PROFILE_FOR_MMS = 9; 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_CONNECTION_FAILED = 10; 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_CONNECTION_FAILURE = 11; 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static final int DM_SERVICE_ALERT_TITLE_SW_UPDATE = 12; 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private final Context mCtx; 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private boolean mUIMode; 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private Lock mLock; 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private Condition mCond; 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private int mResultCode; 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private String mResultData; 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private int mResultCheckedItem; 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private boolean[] mResultCheckedItems; 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public DMAlert(Context ctx) { 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx = ctx; 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mUIMode = true; 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public void setUIMode(boolean uiMode) { 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mUIMode = uiMode; 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // used for the test only 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public boolean getUIMode() { 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return mUIMode; 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Display a text message. Called from JNI code. 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param minDisplayTime minimum display time, in seconds. 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param msg messages to display 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param title resource ID for dialog title 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param icon resource ID for dialog icon 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return SYNCML_DM_SUCCESS on successful completion; SYNCML_DM_FAIL or another more specific 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * error code on failure. 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public int showDisplayAlert(int minDisplayTime, String msg, int title, int icon) { 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //if ( !mUIMode) return DM_SERVICE_ALERT_RESP_FAIL; 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.SHOW_DISPLAY_ALERT_DLG); 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Message", msg); 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Title", getTitle(title)); 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Icon", getIcon(icon)); 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Timeout", minDisplayTime); 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (RuntimeException e) { 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DM_SERVICE_ALERT_RESP_FAIL; 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DM_SERVICE_ALERT_RESP_SUCCESS; 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Display a confirmation alert dialog: user can confirm or cancel the action. Called from JNI 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * code. 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param maxDisplayTime maximum display time (for timeout), in seconds. 1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param msg messages to display 1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param title resource ID for dialog title 1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param icon resource ID for dialog icon 1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return SYNCML_DM_SUCCESS on successful completion; SYNCML_DM_FAIL or another more specific 1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * error code on failure. 1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public int showConfirmAlert(int maxDisplayTime, String msg, int title, int icon) { 1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //if ( !mUIMode) return DM_SERVICE_ALERT_RESP_FAIL; 1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock = new ReentrantLock(); 1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond = mLock.newCondition(); 1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.registerReceiver(mAlertCloseListener, filter); 1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.SHOW_CONFIRM_ALERT_DLG); 1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Message", msg); 1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Title", getTitle(title)); 1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Icon", getIcon(icon)); 1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Timeout", maxDisplayTime); 1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.lock(); 2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond.await(); 2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (InterruptedException e) { 2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } finally { 2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.unlock(); 2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.unregisterReceiver(mAlertCloseListener); 2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return mResultCode; 2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Display a text input message box for user to enter input. Called from JNI code. 2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param maxDisplayTime maximum display time (for timeout), in seconds. 2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param msg messages to display 2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param defaultText default user action when timeout 2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param maxLength length allowed in user input 2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param inputType data format as specified in DM_ALERT_INPUT_T 2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param echoType whether to echo user input (hidden for password ) as specified in 2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * DM_ALERT_ECHO_T 2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param title either DM_SERVICE_ALERT_TITLE_DEVICE_MGMT or DM_SERVICE_ALERT_TITLE_SYSTEM_MESSAGE 2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param icon is DM_SERVICE_ALERT_ICON_GENERIC 2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return SYNCML_DM_SUCCESS on successful completion; SYNCML_DM_FAIL or another more specific 2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * error code on failure. 2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public String showTextInputAlert(int maxDisplayTime, String msg, String defaultText, 2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int maxLength, int inputType, int echoType, 2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int title, int icon) { 2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //if ( !mUIMode) return String.valueOf(DM_SERVICE_ALERT_RESP_FAIL); 2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock = new ReentrantLock(); 2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond = mLock.newCondition(); 2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.registerReceiver(mAlertCloseListener, filter); 2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.SHOW_TEXTINPUT_ALERT_DLG); 2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Message", msg); 2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Title", getTitle(title)); 2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Icon", getIcon(icon)); 2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Timeout", maxDisplayTime); 2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("DefaultText", defaultText); 2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("MaxLength", maxLength); 2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("InputType", getInputType(inputType, echoType)); 2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("showTextInputAlert", "Dialog Intent: " + intent); 2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.lock(); 2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond.await(); 2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (InterruptedException e) { 2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } finally { 2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.unlock(); 2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.unregisterReceiver(mAlertCloseListener); 2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return String.valueOf(mResultCode) + ':' + mResultData; 2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Display a single choice message box for user to pick up one entry. Called from JNI code. 2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param maxDisplayTime maximum display time (for timeout), in seconds. 2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param msg messages to display 2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param choices an array of strings containing the text for each choice 2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param checkedItem the default checked entry 2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param title resource ID for dialog title 2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param icon resource ID for dialog icon 2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return SYNCML_DM_SUCCESS on successful completion; SYNCML_DM_FAIL or another more specific 2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * error code on failure. 2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public String showSingleChoiceAlert(int maxDisplayTime, String msg, String[] choices, 2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int checkedItem, int title, int icon) { 2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //if ( !mUIMode) return String.valueOf(DM_SERVICE_ALERT_RESP_FAIL); 2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock = new ReentrantLock(); 2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond = mLock.newCondition(); 2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.registerReceiver(mAlertCloseListener, filter); 2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.SHOW_SINGLECHOICE_ALERT_DLG); 2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Message", msg); 2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Title", getTitle(title)); 3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Icon", getIcon(icon)); 3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Timeout", maxDisplayTime); 3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Choices", choices); 3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("CheckedItem", checkedItem); 3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("showSingleChoiceAlert", "Dialog Intent: " + intent); 3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.lock(); 3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond.await(); 3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (InterruptedException e) { 3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } finally { 3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.unlock(); 3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.unregisterReceiver(mAlertCloseListener); 3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return String.valueOf(mResultCode) + ':' + mResultCheckedItem; 3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Display a multiple choice message box for user to pick up zero to many entry. Called from JNI 3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * code. 3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param maxDisplayTime maximum display time (for timeout), in seconds. 3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param msg messages to display 3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param choices an array of strings to hold text for each choice 3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param checkedItems an array of booleans to indicate the checked items 3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param title resource ID for dialog title 3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param icon resource ID for dialog icon 3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return SYNCML_DM_SUCCESS on successful completion; SYNCML_DM_FAIL or another more specific 3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * error code on failure. 3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public int showMultipleChoiceAlert(int maxDisplayTime, String msg, String[] choices, 3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby boolean[] checkedItems, int title, int icon) { 3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //if ( !mUIMode) return DM_SERVICE_ALERT_RESP_FAIL; 3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock = new ReentrantLock(); 3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond = mLock.newCondition(); 3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.registerReceiver(mAlertCloseListener, filter); 3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.SHOW_MULTICHOICE_ALERT_DLG); 3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Message", msg); 3513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Title", getTitle(title)); 3523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Icon", getIcon(icon)); 3533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Timeout", maxDisplayTime); 3543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Choices", choices); 3553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("CheckedItems", checkedItems); 3563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("showMultiChoiceAlert", "Dialog Intent: " + intent); 3583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 3603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.lock(); 3623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 3633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond.await(); 3643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (InterruptedException e) { 3653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.e("DMAlert", "lock/await interrupted", e); // FIXME logging 3663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } finally { 3673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.unlock(); 3683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.unregisterReceiver(mAlertCloseListener); 3693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int checkedItemsLength = checkedItems.length; 3723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (int i = 0; DM_SERVICE_ALERT_RESP_YES == mResultCode && i < checkedItemsLength; i++) { 3733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby checkedItems[i] = mResultCheckedItems[i]; 3743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return mResultCode; 3773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 3803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Display a progress bar. FIXME: remove if unused. 3813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 3823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param minDisplayTime minimum display time, in seconds. 3833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @param msg messages to display 3843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return Upon successful completion, the SYNCML_DM_SUCCESS is returned, otherwise 3853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SYNCML_DM_FAIL or other more specific error codes. 3863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 3873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public int showProgressAlert(int minDisplayTime, String msg, int title, int icon) { 3883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 3893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 3903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.SHOW_PROGRESS_ALERT_DLG); 3923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 3933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 3943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Message", msg); 3963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Title", getTitle(title)); 3973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Icon", getIcon(icon)); 3983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.putExtra("Timeout", minDisplayTime); 3993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 4013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 4023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (Exception e) { 4033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 4043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DM_SERVICE_ALERT_RESP_FAIL; 4053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DM_SERVICE_ALERT_RESP_SUCCESS; 4083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 4113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Hide a progress bar. FIXME: remove if unneeded. 4123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 4133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * @return Upon successful completion, the SYNCML_DM_SUCCESS is returned, otherwise 4143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SYNCML_DM_FAIL or other more specific error codes. 4153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 4163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public int hideProgressAlert() { 4173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby IntentFilter filter = new IntentFilter(); 4183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby filter.addAction(DMIntent.DM_ALERT_DLG_CLOSED); 4193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.HIDE_PROGRESS_ALERT_DLG); 4213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 4223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 4233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 4253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 4263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (Exception e) { 4273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 4283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DM_SERVICE_ALERT_RESP_FAIL; 4293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DM_SERVICE_ALERT_RESP_SUCCESS; 4323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /** 4353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Cancel alert when DM session times out. 4363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 4373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public void cancelSession() { 4383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!mUIMode) { 4393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 4403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Intent intent = new Intent(DMIntent.CANCEL_ALERT_DLG); 4433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 4443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby intent.setClass(mCtx, DMAlertActivity.class); 4453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 4473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCtx.startActivity(intent); 4483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } catch (Exception e) { 4493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby e.printStackTrace(); 4503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private String getTitle(int t) { 4543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby switch (t) { 4553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_TITLE_DEVICE_MGMT: 4563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return mCtx.getResources().getString(R.string.DM_SERVICE_ALERT_TITLE_DEVICE_MGMT); 4573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_TITLE_SYSTEM_MESSAGE: 4583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return mCtx.getResources() 4593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby .getString(R.string.DM_SERVICE_ALERT_TITLE_SYSTEM_MESSAGE); 4603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby default: 4613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return "Title ID: " + t; 4643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static int getIcon(int i) { 4673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby switch (i) { 4683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_ICON_GENERIC: 4693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return R.drawable.alert_dialog_icon; 4703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby default: 4713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return R.drawable.alert_dialog_icon; 4743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private static int getInputType(int i, int e) { 4773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int t = InputType.TYPE_CLASS_TEXT; 4783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby switch (i) { 4793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_INPUT_ALPHA: 4803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t = InputType.TYPE_CLASS_TEXT; 4813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_INPUT_NUMERIC: 4833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t = InputType.TYPE_CLASS_NUMBER; 4843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_INPUT_DATE: 4863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t = InputType.TYPE_DATETIME_VARIATION_DATE; 4873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_INPUT_TIME: 4893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t = InputType.TYPE_DATETIME_VARIATION_TIME; 4903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_INPUT_PHONE_NUM: 4923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t = InputType.TYPE_CLASS_PHONE; 4933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby case DM_SERVICE_ALERT_INPUT_IP_ADDR: 4953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t = InputType.TYPE_CLASS_TEXT; 4963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby default: 4983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 4993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (e == DM_SERVICE_ALERT_ECHO_PASSWD) { 5023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby t |= InputType.TYPE_TEXT_VARIATION_PASSWORD; 5033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return t; 5053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private final BroadcastReceiver mAlertCloseListener = new BroadcastReceiver() { 5083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby @Override 5093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public void onReceive(Context context, Intent intent) { 5103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.lock(); 5113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby try { 5123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby onReceiveLocked(intent); 5133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } finally { 5143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mLock.unlock(); 5153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private void onReceiveLocked(Intent intent) { 5193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mResultCode = intent.getIntExtra("ResultCode", DM_SERVICE_ALERT_RESP_SUCCESS); 5203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (DMClientService.DBG) { 5213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("mAlertCloseListener", "Dialog ResultCode: " + mResultCode); 5223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mResultData = intent.getStringExtra("ResultData"); 5253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (null != mResultData) { 5263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (DMClientService.DBG) { 5273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("mAlertCloseListener", "Dialog ResultData: " + mResultData); 5283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mResultCheckedItem = intent.getIntExtra("ResultCheckedItem", -1); 5323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (-1 != mResultCheckedItem) { 5333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (DMClientService.DBG) { 5343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("mAlertCloseListener", "Dialog ResultCheckedItem: " + mResultCheckedItem); 5353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby boolean[] resultCheckedItems = intent.getBooleanArrayExtra("ResultCheckedItems"); 5393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mResultCheckedItems = resultCheckedItems; 5403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (DMClientService.DBG && resultCheckedItems != null) { 5423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int resultCheckedItemsLength = resultCheckedItems.length; 5433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (int i = 0; i < resultCheckedItemsLength; i++) { 5443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Log.d("mAlertCloseListener", 5453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby "Dialog ResultCheckedItems " + i + ": " + resultCheckedItems[i]); 5463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 5493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby mCond.signalAll(); 5503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 5513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby }; 5523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 553