Reorganize Searchable data types

This commit is contained in:
MM20
2022-10-12 20:36:39 +02:00
parent a01b0aa03d
commit bcda89c211
98 changed files with 817 additions and 738 deletions
+1 -1
View File
@@ -48,8 +48,8 @@ dependencies {
implementation(libs.koin.android)
implementation(project(":preferences"))
implementation(project(":search"))
implementation(project(":base"))
implementation(project(":ktx"))
implementation(project(":crashreporter"))
}
@@ -4,21 +4,35 @@ import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat
import de.mm20.launcher2.icons.ColorLayer
import de.mm20.launcher2.icons.StaticLauncherIcon
import de.mm20.launcher2.icons.TintedIconLayer
import de.mm20.launcher2.ktx.tryStartActivity
import de.mm20.launcher2.search.PinnableSearchable
import de.mm20.launcher2.search.Searchable
import de.mm20.launcher2.wikipedia.R
class Wikipedia(
data class Wikipedia(
override val label: String,
val id: Long,
val text: String,
val image: String?,
val wikipediaUrl: String,
) : Searchable() {
override val key = "wikipedia://$wikipediaUrl:$id"
override val labelOverride: String? = null,
) : PinnableSearchable {
override val domain: String = Domain
override val preferDetailsOverLaunch: Boolean = false
override fun overrideLabel(label: String): Wikipedia {
return this.copy(labelOverride = label)
}
override val key = "$domain://$wikipediaUrl:$id"
override fun getPlaceholderIcon(context: Context): StaticLauncherIcon {
return StaticLauncherIcon(
@@ -31,7 +45,7 @@ class Wikipedia(
)
}
override fun getLaunchIntent(context: Context): Intent? {
private fun getLaunchIntent(): Intent {
val intent = CustomTabsIntent
.Builder()
.setToolbarColor(Color.BLACK)
@@ -42,4 +56,12 @@ class Wikipedia(
intent.intent.data = Uri.parse(uri)
return intent.intent
}
override fun launch(context: Context, options: Bundle?): Boolean {
return context.tryStartActivity(getLaunchIntent(), options)
}
companion object {
const val Domain = "wikipedia"
}
}
@@ -1,14 +1,15 @@
package de.mm20.launcher2.wikipedia
import android.content.Context
import de.mm20.launcher2.search.PinnableSearchable
import de.mm20.launcher2.search.SearchableDeserializer
import de.mm20.launcher2.search.SearchableSerializer
import de.mm20.launcher2.search.data.Searchable
import de.mm20.launcher2.search.Searchable
import de.mm20.launcher2.search.data.Wikipedia
import org.json.JSONObject
class WikipediaSerializer : SearchableSerializer {
override fun serialize(searchable: Searchable): String {
override fun serialize(searchable: PinnableSearchable): String {
searchable as Wikipedia
val json = JSONObject()
json.put("label", searchable.label)
@@ -24,7 +25,7 @@ class WikipediaSerializer : SearchableSerializer {
}
class WikipediaDeserializer(val context: Context) : SearchableDeserializer {
override fun deserialize(serialized: String): Searchable? {
override fun deserialize(serialized: String): PinnableSearchable? {
val json = JSONObject(serialized)
return Wikipedia(
label = json.getString("label"),