private void initLanguageMap() { mLanguageMap = new HashMap<String, CellBroadcastLanguage>(); for (int i = 0; i < LANGUAGE_NUM; i++) { CellBroadcastLanguage language = mLanguageList.get(i); if (language != null) { int id = language.getLanguageId(); mLanguageMap.put(String.valueOf(id), language); } } }
private void updateLanguagesWithSingleConfig(SmsBroadcastConfigInfo info) { int languageBeginIndex = info.getFromCodeScheme(); int languageEndIndex = info.getToCodeScheme(); if (languageBeginIndex != -1 && languageBeginIndex != -2) { for (int j = languageBeginIndex; j <= languageEndIndex; j++) { if (mCellBroadcastAsyncTask.isCancelled()) { break; } CellBroadcastLanguage language = getLanguageObjectFromKey(String.valueOf(j)); if (language != null) { language.setLanguageState(info.isSelected()); } } } else { MmsLog.d(LOG_TAG, "Select all language!"); if (languageBeginIndex == -2 && languageEndIndex == -2) { for (int i = 0; i < mLanguageList.size(); i++) { if (mCellBroadcastAsyncTask.isCancelled()) { break; } CellBroadcastLanguage language = (CellBroadcastLanguage) mLanguageList.get(i); CellBroadcastLanguage lang = getLanguageObjectFromKey(String.valueOf(language.getLanguageId())); if (lang != null) { lang.setLanguageState(true); } } } } }
// convert selection info to SmsBroadcastConfigInfo[],and send to the system private SmsBroadcastConfigInfo[] makeLanguageConfigArray() { ArrayList<SmsBroadcastConfigInfo> list = new ArrayList<SmsBroadcastConfigInfo>(); if (mLanguageList.get(0).getLanguageState()) { SmsBroadcastConfigInfo cBConfig = new SmsBroadcastConfigInfo(-1, -1, -2, -2, true); list.add(cBConfig); } else { int beginId = mLanguageList.get(1).getLanguageId(); int endId = beginId; boolean beginState = mLanguageList.get(1).getLanguageState(); int i = 2; int tSize = mLanguageList.size(); for (i = 2; i < tSize; i++) { CellBroadcastLanguage tLanguage = mLanguageList.get(i); int tempId = tLanguage.getLanguageId(); boolean tempState = tLanguage.getLanguageState(); if ((tempId == endId + 1) && (beginState == tempState)) { endId = tempId; } else { SmsBroadcastConfigInfo cBConfig = new SmsBroadcastConfigInfo(-1, -1, beginId, endId, beginState); list.add(cBConfig); beginId = tempId; endId = tempId; beginState = tempState; } } if (i == mLanguageList.size()) { endId = mLanguageList.get(i - 1).getLanguageId(); SmsBroadcastConfigInfo cBConfig = new SmsBroadcastConfigInfo(-1, -1, beginId, endId, beginState); list.add(cBConfig); } } return list.toArray(new SmsBroadcastConfigInfo[list.size()]); }
private void showLanguageSelectDialog() { final boolean[] temp = new boolean[LANGUAGE_NUM]; final boolean[] temp2 = new boolean[LANGUAGE_NUM]; boolean allLanguagesFlag = true; for (int i = 1; i < temp.length; i++) { CellBroadcastLanguage tLanguage = mLanguageList.get(i); if (tLanguage != null) { MmsLog.d(LOG_TAG, "language status " + tLanguage.getLanguageState()); temp[i] = tLanguage.getLanguageState(); temp2[i] = tLanguage.getLanguageState(); } else { MmsLog.i(LOG_TAG, "showLanguageSelectDialog() init the language list failed when i=" + i); } if (!temp[i]) { allLanguagesFlag = false; // not select all languages } } // init "All Languages" selection MmsLog.d(LOG_TAG, "All language status " + allLanguagesFlag); mLanguageList.get(0).setLanguageState(allLanguagesFlag); temp[0] = allLanguagesFlag; temp2[0] = allLanguagesFlag; final AlertDialog.Builder dlgBuilder = new AlertDialog.Builder(this); dlgBuilder.setTitle(getString(R.string.cb_dialog_title_language_choice)); dlgBuilder.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { int tLength = temp.length; // if select "all languages" if (temp[0]) { for (int i = 0; i < tLength; i++) { temp[i] = true; } } // select a language at least boolean flag = false; for (int i = 0; i < tLength; i++) { mLanguageList.get(i).setLanguageState(temp[i]); if (temp[i]) { flag = true; } } if (flag) { SmsBroadcastConfigInfo[] langList = makeLanguageConfigArray(); setCellBroadcastConfig(langList); } else { displayMessage(R.string.cb_error_language_select); for (int i = 0; i < tLength; i++) { mLanguageList.get(i).setLanguageState(temp2[i]); } } } }); dlgBuilder.setNegativeButton(R.string.cancel, null); DialogInterface.OnMultiChoiceClickListener multiChoiceListener = new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) { temp[whichButton] = isChecked; AlertDialog languageDialog = null; if (dialog instanceof AlertDialog) { languageDialog = (AlertDialog) dialog; } if (whichButton == 0) { if (languageDialog != null) { for (int i = 1; i < temp.length; ++i) { ListView items = languageDialog.getListView(); items.setItemChecked(i, isChecked); temp[i] = isChecked; } } } else { if ((!isChecked) && (languageDialog != null)) { ListView items = languageDialog.getListView(); items.setItemChecked(0, isChecked); temp[0] = false; } else if (isChecked && (languageDialog != null)) { /// M: ALPS00641361 @{ // if select all language, the first item should be checked // // MTK add setCheckedAlllanguageItem(temp, isChecked, languageDialog); /// @} } } } }; dlgBuilder.setMultiChoiceItems(R.array.language_list_values, temp, multiChoiceListener); AlertDialog languageDialog = dlgBuilder.create(); if (languageDialog != null) { languageDialog.show(); } }