diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4c20d70b..1ed02cc9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -225,25 +225,6 @@ android:label="@string/frequently_asked_questions" android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/> - - - - - - - - - - - - - - - - () - private var speedDialValues = ArrayList() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_dialpad) - - if (checkAppSideloading()) { - return - } - - speedDialValues = config.getSpeedDialValues() - - dialpad_0_holder.setOnClickListener { dialpadPressed('0', it) } - dialpad_1.setOnClickListener { dialpadPressed('1', it) } - dialpad_2.setOnClickListener { dialpadPressed('2', it) } - dialpad_3.setOnClickListener { dialpadPressed('3', it) } - dialpad_4.setOnClickListener { dialpadPressed('4', it) } - dialpad_5.setOnClickListener { dialpadPressed('5', it) } - dialpad_6.setOnClickListener { dialpadPressed('6', it) } - dialpad_7.setOnClickListener { dialpadPressed('7', it) } - dialpad_8.setOnClickListener { dialpadPressed('8', it) } - dialpad_9.setOnClickListener { dialpadPressed('9', it) } - - dialpad_1.setOnLongClickListener { speedDial(1); true } - dialpad_2.setOnLongClickListener { speedDial(2); true } - dialpad_3.setOnLongClickListener { speedDial(3); true } - dialpad_4.setOnLongClickListener { speedDial(4); true } - dialpad_5.setOnLongClickListener { speedDial(5); true } - dialpad_6.setOnLongClickListener { speedDial(6); true } - dialpad_7.setOnLongClickListener { speedDial(7); true } - dialpad_8.setOnLongClickListener { speedDial(8); true } - dialpad_9.setOnLongClickListener { speedDial(9); true } - - dialpad_0_holder.setOnLongClickListener { dialpadPressed('+', null); true } - dialpad_asterisk.setOnClickListener { dialpadPressed('*', it) } - dialpad_hashtag.setOnClickListener { dialpadPressed('#', it) } - dialpad_clear_char.setOnClickListener { clearChar(it) } - dialpad_clear_char.setOnLongClickListener { clearInput(); true } - dialpad_call_button.setOnClickListener { initCall() } - dialpad_input.onTextChangeListener { dialpadValueChanged(it) } - ContactsHelper(this).getContacts { gotContacts(it) } - disableKeyboardPopping() - - val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_vector, if (isBlackAndWhiteTheme()) Color.BLACK else config.primaryColor.getContrastColor()) - dialpad_call_button.setImageDrawable(callIcon) - dialpad_call_button.background.applyColorFilter(getAdjustedPrimaryColor()) - } - - override fun onResume() { - super.onResume() - updateTextColors(dialpad_holder) - dialpad_clear_char.applyColorFilter(config.textColor) - } - - override fun onCreateOptionsMenu(menu: Menu): Boolean { - menuInflater.inflate(R.menu.menu_dialpad, menu) - updateMenuItemColors(menu) - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - R.id.add_number_to_contact -> addNumberToContact() - else -> return super.onOptionsItemSelected(item) - } - return true - } - - private fun checkDialIntent(): Boolean { - return if (intent.action == Intent.ACTION_DIAL && intent.data != null && intent.dataString?.contains("tel:") == true) { - val number = Uri.decode(intent.dataString).substringAfter("tel:") - dialpad_input.setText(number) - dialpad_input.setSelection(number.length) - true - } else { - false - } - } - - private fun addNumberToContact() { - Intent().apply { - action = Intent.ACTION_INSERT_OR_EDIT - type = "vnd.android.cursor.item/contact" - putExtra(KEY_PHONE, dialpad_input.value) - if (resolveActivity(packageManager) != null) { - startActivity(this) - } else { - toast(R.string.no_app_found) - } - } - } - - private fun dialpadPressed(char: Char, view: View?) { - dialpad_input.addCharacter(char) - view?.performHapticFeedback() - } - - private fun clearChar(view: View) { - dialpad_input.dispatchKeyEvent(dialpad_input.getKeyEvent(KeyEvent.KEYCODE_DEL)) - view.performHapticFeedback() - } - - private fun clearInput() { - dialpad_input.setText("") - } - - private fun disableKeyboardPopping() { - dialpad_input.showSoftInputOnFocus = false - } - - private fun gotContacts(newContacts: ArrayList) { - contacts = newContacts - if (!checkDialIntent() && dialpad_input.value.isEmpty()) { - dialpadValueChanged("") - } - } - - @TargetApi(Build.VERSION_CODES.O) - private fun dialpadValueChanged(text: String) { - val len = text.length - if (len > 8 && text.startsWith("*#*#") && text.endsWith("#*#*")) { - val secretCode = text.substring(4, text.length - 4) - if (isOreoPlus()) { - if (isDefaultDialer()) { - getSystemService(TelephonyManager::class.java)?.sendDialerSpecialCode(secretCode) - } else { - launchSetDefaultDialerIntent() - } - } else { - val intent = Intent(SECRET_CODE_ACTION, Uri.parse("android_secret_code://$secretCode")) - sendBroadcast(intent) - } - return - } - - val showLetters = true - (dialpad_list.adapter as? ContactsAdapter)?.finishActMode() - val filtered = contacts.filter { - val convertedName = PhoneNumberUtils.convertKeypadLettersToDigits(it.getNameToDisplay().normalizeString()) - val company = PhoneNumberUtils.convertKeypadLettersToDigits(it.getFullCompany().normalizeString()) - it.doesContainPhoneNumber(text, showLetters) || (showLetters && (convertedName.contains(text, true) || company.contains(text, true))) - }.sortedWith(compareBy { - if (showLetters) { - !it.doesContainPhoneNumber(text, showLetters) - } else { - true - } - }).toMutableList() as ArrayList - - ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller, text) { - callContact(it as Contact) - }.apply { - dialpad_list.adapter = this - } - - dialpad_fastscroller.setScrollToY(0) - dialpad_fastscroller.setViews(dialpad_list) { - val item = (dialpad_list.adapter as ContactsAdapter).contactItems.getOrNull(it) - dialpad_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") - } - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { - super.onActivityResult(requestCode, resultCode, resultData) - if (requestCode == REQUEST_CODE_SET_DEFAULT_DIALER && isDefaultDialer()) { - dialpadValueChanged(dialpad_input.value) - } - } - - private fun initCall(number: String = dialpad_input.value) { - if (number.isNotEmpty()) { - if (config.showCallConfirmation) { - CallConfirmationDialog(this, number) { - startCallIntent(number) - } - } else { - startCallIntent(number) - } - } - } - - private fun speedDial(id: Int) { - if (dialpad_input.value.isEmpty()) { - val speedDial = speedDialValues.firstOrNull { it.id == id } - if (speedDial?.isValid() == true) { - initCall(speedDial.number) - } - } - } -} diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt index 8a8b81dd..197956e9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt @@ -6,7 +6,6 @@ import android.app.SearchManager import android.content.Context import android.content.Intent import android.content.pm.ShortcutInfo -import android.content.pm.ShortcutManager import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Icon import android.graphics.drawable.LayerDrawable @@ -294,35 +293,16 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { private fun checkShortcuts() { val appIconColor = config.appIconColor if (isNougatMR1Plus() && config.lastHandledShortcutColor != appIconColor) { - val launchDialpad = getLaunchDialpadShortcut(appIconColor) val createNewContact = getCreateNewContactShortcut(appIconColor) - val manager = getSystemService(ShortcutManager::class.java) try { - manager.dynamicShortcuts = Arrays.asList(launchDialpad, createNewContact) + shortcutManager.dynamicShortcuts = Arrays.asList(createNewContact) config.lastHandledShortcutColor = appIconColor } catch (ignored: Exception) { } } } - @SuppressLint("NewApi") - private fun getLaunchDialpadShortcut(appIconColor: Int): ShortcutInfo { - val newEvent = getString(R.string.dialpad) - val drawable = resources.getDrawable(R.drawable.shortcut_dialpad) - (drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_dialpad_background).applyColorFilter(appIconColor) - val bmp = drawable.convertToBitmap() - - val intent = Intent(this, DialpadActivity::class.java) - intent.action = Intent.ACTION_VIEW - return ShortcutInfo.Builder(this, "launch_dialpad") - .setShortLabel(newEvent) - .setLongLabel(newEvent) - .setIcon(Icon.createWithBitmap(bmp)) - .setIntent(intent) - .build() - } - @SuppressLint("NewApi") private fun getCreateNewContactShortcut(appIconColor: Int): ShortcutInfo { val newEvent = getString(R.string.create_new_contact) @@ -459,8 +439,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { } private fun launchDialpad() { - val intent = Intent(applicationContext, DialpadActivity::class.java) - startActivity(intent) + Intent(Intent.ACTION_DIAL).apply { + startActivity(this) + } } private fun tryImportContacts() { diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml deleted file mode 100644 index 45da045d..00000000 --- a/app/src/main/res/layout/activity_dialpad.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -