mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-02-12 01:20:49 +01:00
Added kotlinx-serialization plugin
This commit is contained in:
parent
af9ab19185
commit
aff820a84a
@ -2,6 +2,7 @@ plugins {
|
|||||||
id 'com.android.application'
|
id 'com.android.application'
|
||||||
id 'kotlin-android'
|
id 'kotlin-android'
|
||||||
id 'kotlin-android-extensions'
|
id 'kotlin-android-extensions'
|
||||||
|
id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
def keystorePropertiesFile = rootProject.file("keystore.properties")
|
def keystorePropertiesFile = rootProject.file("keystore.properties")
|
||||||
@ -67,4 +68,5 @@ dependencies {
|
|||||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:35d685c042'
|
implementation 'com.github.SimpleMobileTools:Simple-Commons:35d685c042'
|
||||||
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
|
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
|
||||||
implementation 'me.grantland:autofittextview:0.2.1'
|
implementation 'me.grantland:autofittextview:0.2.1'
|
||||||
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,6 @@ import android.os.Build
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import com.google.gson.Gson
|
|
||||||
import com.google.gson.JsonParseException
|
|
||||||
import com.google.gson.JsonSyntaxException
|
|
||||||
import com.google.gson.reflect.TypeToken
|
|
||||||
import com.simplemobiletools.commons.activities.ManageBlockedNumbersActivity
|
import com.simplemobiletools.commons.activities.ManageBlockedNumbersActivity
|
||||||
import com.simplemobiletools.commons.dialogs.ChangeDateTimeFormatDialog
|
import com.simplemobiletools.commons.dialogs.ChangeDateTimeFormatDialog
|
||||||
import com.simplemobiletools.commons.dialogs.FeatureLockedDialog
|
import com.simplemobiletools.commons.dialogs.FeatureLockedDialog
|
||||||
@ -25,6 +21,10 @@ import com.simplemobiletools.dialer.extensions.config
|
|||||||
import com.simplemobiletools.dialer.helpers.RecentsHelper
|
import com.simplemobiletools.dialer.helpers.RecentsHelper
|
||||||
import com.simplemobiletools.dialer.models.RecentCall
|
import com.simplemobiletools.dialer.models.RecentCall
|
||||||
import kotlinx.android.synthetic.main.activity_settings.*
|
import kotlinx.android.synthetic.main.activity_settings.*
|
||||||
|
import kotlinx.serialization.SerializationException
|
||||||
|
import kotlinx.serialization.decodeFromString
|
||||||
|
import kotlinx.serialization.encodeToString
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
@ -308,8 +308,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
inputStream.bufferedReader().readText()
|
inputStream.bufferedReader().readText()
|
||||||
}
|
}
|
||||||
|
|
||||||
val recentsType = object : TypeToken<List<RecentCall>>() {}.type
|
val objects = Json.decodeFromString<List<RecentCall>>(jsonString)
|
||||||
val objects = Gson().fromJson<List<RecentCall>>(jsonString, recentsType).orEmpty()
|
|
||||||
|
|
||||||
if (objects.isEmpty()) {
|
if (objects.isEmpty()) {
|
||||||
toast(R.string.no_entries_for_importing)
|
toast(R.string.no_entries_for_importing)
|
||||||
@ -319,9 +318,9 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
RecentsHelper(this).restoreRecentCalls(this, objects) {
|
RecentsHelper(this).restoreRecentCalls(this, objects) {
|
||||||
toast(R.string.importing_successful)
|
toast(R.string.importing_successful)
|
||||||
}
|
}
|
||||||
} catch (_: JsonParseException) {
|
} catch (_: SerializationException) {
|
||||||
toast(R.string.invalid_file_format)
|
toast(R.string.invalid_file_format)
|
||||||
} catch (_: JsonSyntaxException) {
|
} catch (_: IllegalArgumentException) {
|
||||||
toast(R.string.invalid_file_format)
|
toast(R.string.invalid_file_format)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
showErrorToast(e)
|
showErrorToast(e)
|
||||||
@ -335,7 +334,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
try {
|
try {
|
||||||
val outputStream = contentResolver.openOutputStream(uri)!!
|
val outputStream = contentResolver.openOutputStream(uri)!!
|
||||||
|
|
||||||
val jsonString = Gson().toJson(recents)
|
val jsonString = Json.encodeToString(recents)
|
||||||
outputStream.use {
|
outputStream.use {
|
||||||
it.write(jsonString.toByteArray())
|
it.write(jsonString.toByteArray())
|
||||||
}
|
}
|
||||||
|
@ -2,12 +2,12 @@ package com.simplemobiletools.dialer.models
|
|||||||
|
|
||||||
import android.telephony.PhoneNumberUtils
|
import android.telephony.PhoneNumberUtils
|
||||||
import com.simplemobiletools.commons.extensions.normalizePhoneNumber
|
import com.simplemobiletools.commons.extensions.normalizePhoneNumber
|
||||||
import java.io.Serializable
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used at displaying recent calls.
|
* Used at displaying recent calls.
|
||||||
* For contacts with multiple numbers specify the number and type
|
* For contacts with multiple numbers specify the number and type
|
||||||
*/
|
*/
|
||||||
|
@kotlinx.serialization.Serializable
|
||||||
data class RecentCall(
|
data class RecentCall(
|
||||||
val id: Int,
|
val id: Int,
|
||||||
val phoneNumber: String,
|
val phoneNumber: String,
|
||||||
@ -21,7 +21,7 @@ data class RecentCall(
|
|||||||
val specificNumber: String,
|
val specificNumber: String,
|
||||||
val specificType: String,
|
val specificType: String,
|
||||||
val isUnknownNumber: Boolean,
|
val isUnknownNumber: Boolean,
|
||||||
) : Serializable {
|
) {
|
||||||
fun doesContainPhoneNumber(text: String): Boolean {
|
fun doesContainPhoneNumber(text: String): Boolean {
|
||||||
val normalizedText = text.normalizePhoneNumber()
|
val normalizedText = text.normalizePhoneNumber()
|
||||||
return PhoneNumberUtils.compare(phoneNumber.normalizePhoneNumber(), normalizedText) ||
|
return PhoneNumberUtils.compare(phoneNumber.normalizePhoneNumber(), normalizedText) ||
|
||||||
@ -29,5 +29,4 @@ data class RecentCall(
|
|||||||
phoneNumber.normalizePhoneNumber().contains(normalizedText) ||
|
phoneNumber.normalizePhoneNumber().contains(normalizedText) ||
|
||||||
phoneNumber.contains(normalizedText)
|
phoneNumber.contains(normalizedText)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:hint="@string/filename"
|
android:hint="@string/filename_without_json"
|
||||||
android:paddingStart="@dimen/activity_margin"
|
android:paddingStart="@dimen/activity_margin"
|
||||||
android:paddingEnd="@dimen/activity_margin">
|
android:paddingEnd="@dimen/activity_margin">
|
||||||
|
|
||||||
@ -30,16 +30,5 @@
|
|||||||
|
|
||||||
</com.simplemobiletools.commons.views.MyTextInputLayout>
|
</com.simplemobiletools.commons.views.MyTextInputLayout>
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/export_call_history_divider"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1px"
|
|
||||||
android:layout_marginStart="@dimen/activity_margin"
|
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
|
||||||
android:layout_marginEnd="@dimen/activity_margin"
|
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
|
||||||
android:background="@color/divider_grey"
|
|
||||||
android:importantForAccessibility="no" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user