diff --git a/accounts/src/main/java/de/mm20/launcher2/accounts/AccountsRepository.kt b/accounts/src/main/java/de/mm20/launcher2/accounts/AccountsRepository.kt index e5b3ba6a..e5801eef 100644 --- a/accounts/src/main/java/de/mm20/launcher2/accounts/AccountsRepository.kt +++ b/accounts/src/main/java/de/mm20/launcher2/accounts/AccountsRepository.kt @@ -9,8 +9,6 @@ import de.mm20.launcher2.owncloud.OwncloudClient import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch interface AccountsRepository { @@ -26,7 +24,7 @@ interface AccountsRepository { } internal class AccountsRepositoryImpl( - private val context: Context + context: Context ) : AccountsRepository { private val scope = CoroutineScope(Job() + Dispatchers.Default) diff --git a/app/src/debug/java/de/mm20/launcher2/debug/Debug.kt b/app/src/debug/java/de/mm20/launcher2/debug/Debug.kt index 69fac8f7..a2ad2888 100644 --- a/app/src/debug/java/de/mm20/launcher2/debug/Debug.kt +++ b/app/src/debug/java/de/mm20/launcher2/debug/Debug.kt @@ -2,7 +2,6 @@ package de.mm20.launcher2.debug import android.os.StrictMode import android.util.Log -import de.mm20.launcher2.BuildConfig class Debug { init { diff --git a/app/src/main/java/de/mm20/launcher2/activity/AddItemActivity.kt b/app/src/main/java/de/mm20/launcher2/activity/AddItemActivity.kt index 259e43b5..15f7e542 100644 --- a/app/src/main/java/de/mm20/launcher2/activity/AddItemActivity.kt +++ b/app/src/main/java/de/mm20/launcher2/activity/AddItemActivity.kt @@ -1,4 +1,4 @@ -package de.mm20.launcher2.activity; +package de.mm20.launcher2.activity import android.app.Activity import android.content.Context diff --git a/applications/src/main/java/de/mm20/launcher2/applications/Module.kt b/applications/src/main/java/de/mm20/launcher2/applications/Module.kt index c3131e48..397e37f9 100644 --- a/applications/src/main/java/de/mm20/launcher2/applications/Module.kt +++ b/applications/src/main/java/de/mm20/launcher2/applications/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.applications import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val applicationsModule = module { diff --git a/backup/src/main/java/de/mm20/launcher2/backup/Module.kt b/backup/src/main/java/de/mm20/launcher2/backup/Module.kt index bf98fbda..a90dac10 100644 --- a/backup/src/main/java/de/mm20/launcher2/backup/Module.kt +++ b/backup/src/main/java/de/mm20/launcher2/backup/Module.kt @@ -4,5 +4,5 @@ import org.koin.android.ext.koin.androidContext import org.koin.dsl.module val backupModule = module { - single { BackupManager(androidContext(), get(), get(), get(), get()) } + single { BackupManager(androidContext(), get(), get(), get(), get()) } } \ No newline at end of file diff --git a/badges/src/main/java/de/mm20/launcher2/badges/providers/CloudBadgeProvider.kt b/badges/src/main/java/de/mm20/launcher2/badges/providers/CloudBadgeProvider.kt index 6dc98e59..341f9843 100644 --- a/badges/src/main/java/de/mm20/launcher2/badges/providers/CloudBadgeProvider.kt +++ b/badges/src/main/java/de/mm20/launcher2/badges/providers/CloudBadgeProvider.kt @@ -1,8 +1,6 @@ package de.mm20.launcher2.badges.providers -import android.util.Log import de.mm20.launcher2.badges.Badge -import de.mm20.launcher2.badges.R import de.mm20.launcher2.search.data.File import de.mm20.launcher2.search.data.Searchable import kotlinx.coroutines.flow.Flow diff --git a/badges/src/main/java/de/mm20/launcher2/badges/providers/SuspendedAppsBadgeProvider.kt b/badges/src/main/java/de/mm20/launcher2/badges/providers/SuspendedAppsBadgeProvider.kt index c49e766d..9dee626f 100644 --- a/badges/src/main/java/de/mm20/launcher2/badges/providers/SuspendedAppsBadgeProvider.kt +++ b/badges/src/main/java/de/mm20/launcher2/badges/providers/SuspendedAppsBadgeProvider.kt @@ -4,7 +4,6 @@ import de.mm20.launcher2.applications.AppRepository import de.mm20.launcher2.badges.Badge import de.mm20.launcher2.badges.R import de.mm20.launcher2.search.data.Application -import de.mm20.launcher2.search.data.LauncherApp import de.mm20.launcher2.search.data.Searchable import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow diff --git a/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt b/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt deleted file mode 100644 index 6840066c..00000000 --- a/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt +++ /dev/null @@ -1,50 +0,0 @@ -package de.mm20.launcher2.graphics - -import android.content.res.ColorStateList -import android.graphics.* -import android.graphics.drawable.Drawable - -class TextDrawable( - val text: String, - val color: Int = Color.WHITE, - val height: Int? = null, - val fontSize: Float = 13f, - typeface: Typeface = Typeface.DEFAULT -): Drawable() { - - private val paint = Paint() - private val rect = Rect() - - init { - paint.textAlign = Paint.Align.CENTER - paint.textSize = fontSize - paint.color = color - paint.isAntiAlias = true - paint.typeface = typeface - paint.style = Paint.Style.FILL - } - - override fun draw(canvas: Canvas) { - val bounds = bounds - if (height != null) paint.textSize = fontSize * bounds.height().toFloat() / height.toFloat() - else paint.textSize = fontSize - paint.getTextBounds(text, 0, text.length, rect) - canvas.drawText(text, bounds.exactCenterX(), bounds.exactCenterY() + rect.height() / 2f, paint) - } - - override fun setAlpha(alpha: Int) { - paint.alpha = alpha - } - - override fun setColorFilter(colorFilter: ColorFilter?) { - paint.colorFilter = colorFilter - } - - override fun getOpacity(): Int { - return PixelFormat.TRANSLUCENT - } - - override fun setTintList(tint: ColorStateList?) { - paint.color = tint?.defaultColor ?: color - } -} \ No newline at end of file diff --git a/base/src/main/java/de/mm20/launcher2/icons/LauncherIcon.kt b/base/src/main/java/de/mm20/launcher2/icons/LauncherIcon.kt index dde2bd04..3113d2ef 100644 --- a/base/src/main/java/de/mm20/launcher2/icons/LauncherIcon.kt +++ b/base/src/main/java/de/mm20/launcher2/icons/LauncherIcon.kt @@ -1,7 +1,5 @@ package de.mm20.launcher2.icons -import android.content.res.Resources - sealed interface LauncherIcon data class StaticLauncherIcon( diff --git a/calculator/src/main/java/de/mm20/launcher2/search/data/Calculator.kt b/calculator/src/main/java/de/mm20/launcher2/search/data/Calculator.kt index ba1570bd..0d77c057 100644 --- a/calculator/src/main/java/de/mm20/launcher2/search/data/Calculator.kt +++ b/calculator/src/main/java/de/mm20/launcher2/search/data/Calculator.kt @@ -48,7 +48,7 @@ class Calculator( } formattedOctString = s.toString() - s = StringBuffer(solution.roundToInt().toString(16).toUpperCase()) + s = StringBuffer(solution.roundToInt().toString(16).uppercase(Locale.getDefault())) while (s.length % 2 != 0) { s = s.insert(0, '0') } @@ -62,7 +62,7 @@ class Calculator( fun getBeatifiedTerm(): String { if(term.matches(Regex("0x[0-9a-fA-F]+"))) { - return term.substring(2).toUpperCase(Locale.ROOT) + "₁₆" + return term.substring(2).uppercase(Locale.ROOT) + "₁₆" } if(term.matches(Regex("0b[01]+"))) { return term.substring(2) + "₂" diff --git a/calendar/src/main/java/de/mm20/launcher2/calendar/Module.kt b/calendar/src/main/java/de/mm20/launcher2/calendar/Module.kt index 56b6b377..2944249c 100644 --- a/calendar/src/main/java/de/mm20/launcher2/calendar/Module.kt +++ b/calendar/src/main/java/de/mm20/launcher2/calendar/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.calendar import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val calendarModule = module { diff --git a/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt b/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt index 8ad7b2df..6d3e2c40 100644 --- a/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt +++ b/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt @@ -3,16 +3,10 @@ package de.mm20.launcher2.search.data import android.content.ContentUris import android.content.Context import android.content.Intent -import android.graphics.Color -import android.graphics.Typeface -import android.graphics.drawable.ColorDrawable import android.provider.CalendarContract -import de.mm20.launcher2.graphics.TextDrawable import de.mm20.launcher2.icons.ColorLayer import de.mm20.launcher2.icons.StaticLauncherIcon import de.mm20.launcher2.icons.TextLayer -import de.mm20.launcher2.ktx.dp -import palettes.TonalPalette import java.text.SimpleDateFormat class CalendarEvent( diff --git a/contacts/src/main/java/de/mm20/launcher2/contacts/Module.kt b/contacts/src/main/java/de/mm20/launcher2/contacts/Module.kt index 80dc4aea..640a2d1f 100644 --- a/contacts/src/main/java/de/mm20/launcher2/contacts/Module.kt +++ b/contacts/src/main/java/de/mm20/launcher2/contacts/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.contacts import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val contactsModule = module { diff --git a/crashreporter/src/main/java/com/balsikandar/crashreporter/utils/AppUtils.java b/crashreporter/src/main/java/com/balsikandar/crashreporter/utils/AppUtils.java index 2dd74393..e17e2221 100644 --- a/crashreporter/src/main/java/com/balsikandar/crashreporter/utils/AppUtils.java +++ b/crashreporter/src/main/java/com/balsikandar/crashreporter/utils/AppUtils.java @@ -9,7 +9,6 @@ import android.os.Build; import android.util.Log; import java.util.TimeZone; -import java.util.UUID; import static com.balsikandar.crashreporter.utils.AppUtilsKt.getAppSignature; @@ -68,26 +67,6 @@ public class AppUtils { return tz.getID(); } - private static String getDeviceId(Context context) { - String androidDeviceId = getAndroidDeviceId(context); - if (androidDeviceId == null) - androidDeviceId = UUID.randomUUID().toString(); - return androidDeviceId; - - } - - private static String getAndroidDeviceId(Context context) { - final String INVALID_ANDROID_ID = "9774d56d682e549c"; - final String androidId = android.provider.Settings.Secure.getString( - context.getContentResolver(), - android.provider.Settings.Secure.ANDROID_ID); - if (androidId == null - || androidId.toLowerCase().equals(INVALID_ANDROID_ID)) { - return null; - } - return androidId; - } - private static int getAppVersionCode(Context context) { try { PackageInfo packageInfo = context.getPackageManager() diff --git a/currencies/src/main/java/de/mm20/launcher2/currencies/CurrencyRepository.kt b/currencies/src/main/java/de/mm20/launcher2/currencies/CurrencyRepository.kt index cd569769..c8b85a4f 100644 --- a/currencies/src/main/java/de/mm20/launcher2/currencies/CurrencyRepository.kt +++ b/currencies/src/main/java/de/mm20/launcher2/currencies/CurrencyRepository.kt @@ -31,7 +31,7 @@ class CurrencyRepository( toCurrency: String? = null ): List> { - return withContext>>(Dispatchers.IO) { + return withContext(Dispatchers.IO) { val dao = AppDatabase.getInstance(context) .currencyDao() diff --git a/database/build.gradle.kts b/database/build.gradle.kts index 1bdedd04..664d40b5 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -16,7 +16,7 @@ android { javaCompileOptions { annotationProcessorOptions { - arguments.put("room.schemaLocation", "$projectDir/schemas") + arguments["room.schemaLocation"] = "$projectDir/schemas" } } } diff --git a/database/src/main/java/de/mm20/launcher2/database/AppDatabase.kt b/database/src/main/java/de/mm20/launcher2/database/AppDatabase.kt index 0293a02b..2bcaa659 100644 --- a/database/src/main/java/de/mm20/launcher2/database/AppDatabase.kt +++ b/database/src/main/java/de/mm20/launcher2/database/AppDatabase.kt @@ -1,3 +1,5 @@ +@file:Suppress("ClassName") + package de.mm20.launcher2.database import android.content.Context diff --git a/database/src/main/java/de/mm20/launcher2/database/IconDao.kt b/database/src/main/java/de/mm20/launcher2/database/IconDao.kt index 0a6bdeb5..51d7b478 100644 --- a/database/src/main/java/de/mm20/launcher2/database/IconDao.kt +++ b/database/src/main/java/de/mm20/launcher2/database/IconDao.kt @@ -1,6 +1,5 @@ package de.mm20.launcher2.database -import android.content.ComponentName import androidx.lifecycle.LiveData import androidx.room.* import de.mm20.launcher2.database.entities.IconEntity diff --git a/database/src/main/java/de/mm20/launcher2/database/WeatherDao.kt b/database/src/main/java/de/mm20/launcher2/database/WeatherDao.kt index 1cf80871..8c236abc 100644 --- a/database/src/main/java/de/mm20/launcher2/database/WeatherDao.kt +++ b/database/src/main/java/de/mm20/launcher2/database/WeatherDao.kt @@ -1,10 +1,6 @@ package de.mm20.launcher2.database -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.OnConflictStrategy.REPLACE -import androidx.room.Query -import androidx.room.Transaction +import androidx.room.* import de.mm20.launcher2.database.entities.ForecastEntity import kotlinx.coroutines.flow.Flow @@ -13,7 +9,7 @@ interface WeatherDao { @Query("SELECT * FROM ${ForecastEntity.TABLE_NAME} ORDER BY timestamp ASC") fun getForecasts(): Flow> - @Insert(onConflict = REPLACE) + @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(forecasts: List) @Query("DELETE FROM ${ForecastEntity.TABLE_NAME}") diff --git a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt index 43d685a8..fc9e14c0 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesItem.kt @@ -1,12 +1,8 @@ package de.mm20.launcher2.favorites -import android.content.Context import de.mm20.launcher2.database.entities.FavoritesItemEntity import de.mm20.launcher2.search.SearchableSerializer import de.mm20.launcher2.search.data.Searchable -import org.koin.core.component.KoinComponent -import org.koin.core.component.inject -import org.koin.core.parameter.parametersOf data class FavoritesItem( val key: String, diff --git a/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt b/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt index 9a0bbc92..c0439184 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/Module.kt @@ -1,19 +1,5 @@ package de.mm20.launcher2.favorites -import de.mm20.launcher2.appshortcuts.AppShortcutDeserializer -import de.mm20.launcher2.appshortcuts.AppShortcutSerializer -import de.mm20.launcher2.calendar.CalendarEventDeserializer -import de.mm20.launcher2.calendar.CalendarEventSerializer -import de.mm20.launcher2.contacts.ContactDeserializer -import de.mm20.launcher2.contacts.ContactSerializer -import de.mm20.launcher2.files.* -import de.mm20.launcher2.search.NullDeserializer -import de.mm20.launcher2.search.NullSerializer -import de.mm20.launcher2.search.data.* -import de.mm20.launcher2.websites.WebsiteDeserializer -import de.mm20.launcher2.websites.WebsiteSerializer -import de.mm20.launcher2.wikipedia.WikipediaDeserializer -import de.mm20.launcher2.wikipedia.WikipediaSerializer import org.koin.android.ext.koin.androidContext import org.koin.dsl.module diff --git a/files/src/main/java/de/mm20/launcher2/files/Module.kt b/files/src/main/java/de/mm20/launcher2/files/Module.kt index 5e8660ea..f2f17e85 100644 --- a/files/src/main/java/de/mm20/launcher2/files/Module.kt +++ b/files/src/main/java/de/mm20/launcher2/files/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.files import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val filesModule = module { diff --git a/files/src/main/java/de/mm20/launcher2/media/ThumbnailUtilsCompat.kt b/files/src/main/java/de/mm20/launcher2/media/ThumbnailUtilsCompat.kt index 7d955347..f55d48a1 100644 --- a/files/src/main/java/de/mm20/launcher2/media/ThumbnailUtilsCompat.kt +++ b/files/src/main/java/de/mm20/launcher2/media/ThumbnailUtilsCompat.kt @@ -6,7 +6,6 @@ import android.os.Build import android.os.CancellationSignal import android.provider.MediaStore import android.util.Size -import androidx.core.content.ContentResolverCompat import java.io.File import java.io.IOException diff --git a/files/src/main/java/de/mm20/launcher2/search/data/File.kt b/files/src/main/java/de/mm20/launcher2/search/data/File.kt index a9893cd6..43570b78 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/File.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/File.kt @@ -114,7 +114,7 @@ abstract class File( } } if (resource == R.string.file_type_none && label.matches(Regex(".+\\..+"))) { - val extension = label.substringAfterLast(".").toUpperCase(Locale.getDefault()) + val extension = label.substringAfterLast(".").uppercase(Locale.getDefault()) if (extension == "kvaesitso") return context.getString( R.string.file_type_launcherbackup, context.getString(R.string.app_name) diff --git a/files/src/main/java/de/mm20/launcher2/search/data/GDriveFile.kt b/files/src/main/java/de/mm20/launcher2/search/data/GDriveFile.kt index 10f70589..b47fd6ee 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/GDriveFile.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/GDriveFile.kt @@ -4,10 +4,6 @@ import android.content.Context import android.content.Intent import android.net.Uri import de.mm20.launcher2.files.R -import de.mm20.launcher2.gservices.DriveFileMeta -import de.mm20.launcher2.gservices.GoogleApiHelper -import de.mm20.launcher2.helper.NetworkUtils -import de.mm20.launcher2.icons.LauncherIcon class GDriveFile( val fileId: String, diff --git a/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt b/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt index 00396f82..d8297eab 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/LocalFile.kt @@ -114,8 +114,8 @@ open class LocalFile( val icon = withContext(Dispatchers.IO) { pkgInfo?.applicationInfo?.loadIcon(context.packageManager) } ?: return null - when { - icon is AdaptiveIconDrawable -> { + when (icon) { + is AdaptiveIconDrawable -> { return StaticLauncherIcon( foregroundLayer = icon.foreground?.let { StaticIconLayer( diff --git a/files/src/main/java/de/mm20/launcher2/search/data/OneDriveFile.kt b/files/src/main/java/de/mm20/launcher2/search/data/OneDriveFile.kt index 42a4f086..b667796e 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/OneDriveFile.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/OneDriveFile.kt @@ -3,10 +3,7 @@ package de.mm20.launcher2.search.data import android.content.Context import android.content.Intent import android.net.Uri -import de.mm20.launcher2.msservices.DriveItem import de.mm20.launcher2.files.R -import de.mm20.launcher2.msservices.MicrosoftGraphApiHelper -import de.mm20.launcher2.icons.LauncherIcon class OneDriveFile( val fileId: String, diff --git a/files/src/main/java/de/mm20/launcher2/search/data/OwncloudFile.kt b/files/src/main/java/de/mm20/launcher2/search/data/OwncloudFile.kt index 1470f1ed..d9adf20b 100644 --- a/files/src/main/java/de/mm20/launcher2/search/data/OwncloudFile.kt +++ b/files/src/main/java/de/mm20/launcher2/search/data/OwncloudFile.kt @@ -4,8 +4,6 @@ import android.content.Context import android.content.Intent import android.net.Uri import de.mm20.launcher2.files.R -import de.mm20.launcher2.helper.NetworkUtils -import de.mm20.launcher2.owncloud.OwncloudClient class OwncloudFile( fileId: Long, diff --git a/g-services/src/main/java/de/mm20/launcher2/gservices/DriveFile.kt b/g-services/src/main/java/de/mm20/launcher2/gservices/DriveFile.kt index 6f6bcf9f..eeec0f03 100644 --- a/g-services/src/main/java/de/mm20/launcher2/gservices/DriveFile.kt +++ b/g-services/src/main/java/de/mm20/launcher2/gservices/DriveFile.kt @@ -26,7 +26,7 @@ data class DriveFile( width = file.imageMediaMetadata?.width ?: file.videoMediaMetadata?.width, height = file.imageMediaMetadata?.height ?: file.videoMediaMetadata?.height ), - directoryColor = file.folderColorRgb?.toLowerCase(Locale.ROOT), + directoryColor = file.folderColorRgb.lowercase(Locale.ROOT), viewUri = file.webViewLink ?: "" ) } diff --git a/icons/src/main/java/de/mm20/launcher2/icons/providers/GoogleClockIconProvider.kt b/icons/src/main/java/de/mm20/launcher2/icons/providers/GoogleClockIconProvider.kt index 2001f258..ed33a978 100644 --- a/icons/src/main/java/de/mm20/launcher2/icons/providers/GoogleClockIconProvider.kt +++ b/icons/src/main/java/de/mm20/launcher2/icons/providers/GoogleClockIconProvider.kt @@ -69,10 +69,10 @@ class GoogleClockIconProvider(val context: Context) : IconProvider { } ClockSublayer( drawable = drw, - role = when { - it == hourLayer -> ClockSublayerRole.Hour - it == minuteLayer -> ClockSublayerRole.Minute - it == secondLayer -> ClockSublayerRole.Second + role = when (it) { + hourLayer -> ClockSublayerRole.Hour + minuteLayer -> ClockSublayerRole.Minute + secondLayer -> ClockSublayerRole.Second else -> ClockSublayerRole.Static } ) diff --git a/icons/src/main/java/de/mm20/launcher2/icons/providers/IconPackIconProvider.kt b/icons/src/main/java/de/mm20/launcher2/icons/providers/IconPackIconProvider.kt index 34acf5a1..e36fb377 100644 --- a/icons/src/main/java/de/mm20/launcher2/icons/providers/IconPackIconProvider.kt +++ b/icons/src/main/java/de/mm20/launcher2/icons/providers/IconPackIconProvider.kt @@ -44,8 +44,8 @@ class IconPackIconProvider( val resId = res.getIdentifier(drawableName, "drawable", iconPack).takeIf { it != 0 } ?: return generateIcon(context, searchable.launcherActivityInfo, size) val drawable = ResourcesCompat.getDrawable(res, resId, context.theme) ?: return null - return when { - drawable is AdaptiveIconDrawable -> { + return when (drawable) { + is AdaptiveIconDrawable -> { return StaticLauncherIcon( foregroundLayer = drawable.foreground?.let { StaticIconLayer( @@ -135,7 +135,7 @@ class IconPackIconProvider( } if (upon != null) { res.getIdentifier(upon, "drawable", pack).takeIf { it != 0 }?.let { - paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_OVER); + paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_OVER) val maskDrawable = ResourcesCompat.getDrawable(res, it, null) ?: return null val maskBmp = maskDrawable.toBitmap(size, size) inBounds = Rect(0, 0, maskBmp.width, maskBmp.height) @@ -145,7 +145,7 @@ class IconPackIconProvider( } if (back != null) { res.getIdentifier(back, "drawable", pack).takeIf { it != 0 }?.let { - paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_OVER); + paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_OVER) val maskDrawable = ResourcesCompat.getDrawable(res, it, null) ?: return null val maskBmp = maskDrawable.toBitmap(size, size) inBounds = Rect(0, 0, maskBmp.width, maskBmp.height) diff --git a/icons/src/main/java/de/mm20/launcher2/icons/providers/SystemIconProvider.kt b/icons/src/main/java/de/mm20/launcher2/icons/providers/SystemIconProvider.kt index d7594fac..431dc2ae 100644 --- a/icons/src/main/java/de/mm20/launcher2/icons/providers/SystemIconProvider.kt +++ b/icons/src/main/java/de/mm20/launcher2/icons/providers/SystemIconProvider.kt @@ -2,7 +2,6 @@ package de.mm20.launcher2.icons.providers import android.content.Context import de.mm20.launcher2.icons.LauncherIcon -import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.search.data.Searchable class SystemIconProvider( diff --git a/icons/src/main/java/de/mm20/launcher2/icons/providers/ThemedIconProvider.kt b/icons/src/main/java/de/mm20/launcher2/icons/providers/ThemedIconProvider.kt index 1642bb46..39fa9a45 100644 --- a/icons/src/main/java/de/mm20/launcher2/icons/providers/ThemedIconProvider.kt +++ b/icons/src/main/java/de/mm20/launcher2/icons/providers/ThemedIconProvider.kt @@ -112,9 +112,9 @@ internal class ThemedIconProvider( } ClockSublayer( drawable = drw, - role = when { - it == hourIndex -> ClockSublayerRole.Hour - it == minuteIndex -> ClockSublayerRole.Minute + role = when (it) { + hourIndex -> ClockSublayerRole.Hour + minuteIndex -> ClockSublayerRole.Minute else -> ClockSublayerRole.Static } ) diff --git a/ktx/src/main/java/de/mm20/launcher2/ktx/Fragment.kt b/ktx/src/main/java/de/mm20/launcher2/ktx/Fragment.kt index 7faa1fbc..52b9038d 100644 --- a/ktx/src/main/java/de/mm20/launcher2/ktx/Fragment.kt +++ b/ktx/src/main/java/de/mm20/launcher2/ktx/Fragment.kt @@ -1,7 +1,5 @@ package de.mm20.launcher2.ktx -import android.view.View -import android.view.ViewGroup import androidx.fragment.app.Fragment val Fragment.dp: Float diff --git a/ktx/src/main/java/de/mm20/launcher2/ktx/View.kt b/ktx/src/main/java/de/mm20/launcher2/ktx/View.kt index aa6b79ec..743fcc1b 100644 --- a/ktx/src/main/java/de/mm20/launcher2/ktx/View.kt +++ b/ktx/src/main/java/de/mm20/launcher2/ktx/View.kt @@ -4,7 +4,6 @@ import android.view.View import android.view.ViewGroup import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope -import kotlin.coroutines.CoroutineContext val View.dp: Float get() = context.dp diff --git a/music/src/main/java/de/mm20/launcher2/music/Module.kt b/music/src/main/java/de/mm20/launcher2/music/Module.kt index de8fc139..56449dd8 100644 --- a/music/src/main/java/de/mm20/launcher2/music/Module.kt +++ b/music/src/main/java/de/mm20/launcher2/music/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.music import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val musicModule = module { diff --git a/music/src/main/java/de/mm20/launcher2/music/MusicRepository.kt b/music/src/main/java/de/mm20/launcher2/music/MusicRepository.kt index 977abc66..a0536382 100644 --- a/music/src/main/java/de/mm20/launcher2/music/MusicRepository.kt +++ b/music/src/main/java/de/mm20/launcher2/music/MusicRepository.kt @@ -51,7 +51,7 @@ interface MusicRepository { internal class MusicRepositoryImpl( private val context: Context, - private val notificationRepository: NotificationRepository + notificationRepository: NotificationRepository ) : MusicRepository, KoinComponent { private val scope = CoroutineScope(Job() + Dispatchers.Default) diff --git a/notifications/src/main/java/de/mm20/launcher2/notifications/NotificationRepository.kt b/notifications/src/main/java/de/mm20/launcher2/notifications/NotificationRepository.kt index 63c2009d..acb0fca5 100644 --- a/notifications/src/main/java/de/mm20/launcher2/notifications/NotificationRepository.kt +++ b/notifications/src/main/java/de/mm20/launcher2/notifications/NotificationRepository.kt @@ -31,7 +31,7 @@ interface NotificationRepository { fun cancelNotification(notification: StatusBarNotification) } -internal class NotificationRepositoryImpl() : NotificationRepository { +internal class NotificationRepositoryImpl : NotificationRepository { private val scope = CoroutineScope(Job() + Dispatchers.Default) override val notifications: MutableStateFlow> = MutableStateFlow( emptyList() diff --git a/preferences/src/main/java/de/mm20/launcher2/preferences/DataStore.kt b/preferences/src/main/java/de/mm20/launcher2/preferences/DataStore.kt index 4c8cdad8..ca8ea0cc 100644 --- a/preferences/src/main/java/de/mm20/launcher2/preferences/DataStore.kt +++ b/preferences/src/main/java/de/mm20/launcher2/preferences/DataStore.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.preferences import android.content.Context -import android.util.Log import androidx.datastore.core.DataMigration import androidx.datastore.core.DataStore import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler diff --git a/search/src/main/java/de/mm20/launcher2/search/Module.kt b/search/src/main/java/de/mm20/launcher2/search/Module.kt index ff3a5000..d90d769c 100644 --- a/search/src/main/java/de/mm20/launcher2/search/Module.kt +++ b/search/src/main/java/de/mm20/launcher2/search/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.search import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val searchModule = module { diff --git a/search/src/main/java/de/mm20/launcher2/search/SearchRepository.kt b/search/src/main/java/de/mm20/launcher2/search/SearchRepository.kt deleted file mode 100644 index 76a430c7..00000000 --- a/search/src/main/java/de/mm20/launcher2/search/SearchRepository.kt +++ /dev/null @@ -1,25 +0,0 @@ -package de.mm20.launcher2.search - -import androidx.lifecycle.MutableLiveData - -class SearchRepository { - - val isSearching = MutableLiveData(false) - val currentQuery = MutableLiveData() - - private var runningSearches = 0 - set(value) { - synchronized(runningSearches) { - field = value - isSearching.value = value > 0 - } - } - - @Synchronized - fun startSearch() { - synchronized(runningSearches) { - runningSearches++ - } - } - -} \ No newline at end of file diff --git a/search/src/main/java/de/mm20/launcher2/search/data/Websearch.kt b/search/src/main/java/de/mm20/launcher2/search/data/Websearch.kt index 01efaa09..d4b57f00 100644 --- a/search/src/main/java/de/mm20/launcher2/search/data/Websearch.kt +++ b/search/src/main/java/de/mm20/launcher2/search/data/Websearch.kt @@ -3,7 +3,6 @@ package de.mm20.launcher2.search.data import android.content.Intent import android.net.Uri import de.mm20.launcher2.database.entities.WebsearchEntity -import java.net.URLEncoder class Websearch( var urlTemplate: String, diff --git a/settings.gradle.kts b/settings.gradle.kts index f95e0d37..c7ea27a8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -41,7 +41,7 @@ dependencyResolutionManagement { version("targetSdk", "32") } create("libs") { - version("kotlin", "1.7.0") + version("kotlin", "1.6.21") version("kotlinx.coroutines", "1.6.3") alias("kotlin.stdlib") .to("org.jetbrains.kotlin", "kotlin-stdlib") @@ -60,7 +60,7 @@ dependencyResolutionManagement { listOf("kotlin.stdlib", "kotlinx.coroutines.core", "kotlinx.coroutines.android") ) - version("androidx.compose", "1.2.0-rc01") + version("androidx.compose", "1.2.0-rc02") alias("androidx.compose.runtime") .to("androidx.compose.runtime", "runtime") .versionRef("androidx.compose") @@ -206,7 +206,7 @@ dependencyResolutionManagement { .to("androidx.datastore", "datastore") .version("1.0.0") - version("androidx.room", "2.4.2") + version("androidx.room", "2.5.0-alpha02") alias("androidx.roomruntime") .to("androidx.room", "room-runtime") .versionRef("androidx.room") diff --git a/transition/src/main/java/de/mm20/launcher2/transition/TextResize.kt b/transition/src/main/java/de/mm20/launcher2/transition/TextResize.kt deleted file mode 100644 index a06724a4..00000000 --- a/transition/src/main/java/de/mm20/launcher2/transition/TextResize.kt +++ /dev/null @@ -1,399 +0,0 @@ -package de.mm20.launcher2.transition - -import android.animation.* -import android.content.Context -import android.graphics.* -import android.graphics.drawable.Drawable -import android.util.AttributeSet -import android.util.TypedValue -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.transition.Transition -import androidx.transition.TransitionValues - - -/** - * Transitions a TextView from one font size to another. This does not - * do any animation of TextView content and if the text changes, this - * transition will not run. - * - * - * The animation works by capturing a bitmap of the text at the startLegacy - * and end states. It then scales the startLegacy bitmap until it reaches - * a threshold and switches to the scaled end bitmap for the remainder - * of the animation. This keeps the jump in bitmaps in the middle of - * the animation, where it is less noticeable than at the beginning - * or end of the animation. This transition does not work well with - * cropped text. TextResize also does not work with changes in - * TextView gravity. - */ -class TextResize : Transition { - - constructor() { - addTarget(TextView::class.java) - } - - /** - * Constructor used from XML. - */ - constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { - addTarget(TextView::class.java) - } - - override fun captureStartValues(transitionValues: TransitionValues) { - captureValues(transitionValues) - } - - override fun captureEndValues(transitionValues: TransitionValues) { - captureValues(transitionValues) - } - - override fun getTransitionProperties(): Array { - return PROPERTIES - } - - - private fun captureValues(transitionValues: TransitionValues) { - if (transitionValues.view !is TextView) { - return - } - val view = transitionValues.view as TextView - val fontSize = view.textSize - transitionValues.values.put(FONT_SIZE, fontSize) - val data = TextResizeData(view) - transitionValues.values.put(DATA, data) - } - - override fun createAnimator(sceneRoot: ViewGroup, startValues: TransitionValues?, - endValues: TransitionValues?): Animator? { - if (startValues == null || endValues == null) { - return null - } - - val startData = startValues.values.get(DATA) as TextResizeData - val endData = endValues.values.get(DATA) as TextResizeData - if (startData.gravity != endData.gravity) { - return null // Can't deal with changes in gravity - } - - val textView = endValues.view as TextView - var startFontSize = startValues.values.get(FONT_SIZE) as Float - // Capture the startLegacy bitmap -- we need to set the values to the startLegacy values first - setTextViewData(textView, startData, startFontSize) - val startWidth = textView.paint.measureText(textView.text.toString()) - - val startBitmap = captureTextBitmap(textView) - - if (startBitmap == null) { - startFontSize = 0f - } - - var endFontSize = endValues.values.get(FONT_SIZE) as Float - - // Set the values to the end values - setTextViewData(textView, endData, endFontSize) - - val endWidth = textView.paint.measureText(textView.text.toString()) - - // Capture the end bitmap - val endBitmap = captureTextBitmap(textView) - if (endBitmap == null) { - endFontSize = 0f - } - - if (startFontSize == 0f && endFontSize == 0f) { - return null // Can't animate null bitmaps - } - - // Set the colors of the TextView so that nothing is drawn. - // Only draw the bitmaps in the overlay. - val textColors = textView.textColors - val hintColors = textView.hintTextColors - val highlightColor = textView.highlightColor - val linkColors = textView.linkTextColors - textView.setTextColor(Color.TRANSPARENT) - textView.setHintTextColor(Color.TRANSPARENT) - textView.highlightColor = Color.TRANSPARENT - textView.setLinkTextColor(Color.TRANSPARENT) - - if (startBitmap == null || endBitmap == null) return null - // Create the drawable that will be animated in the TextView's overlay. - // Ensure that it is showing the startLegacy state now. - val drawable = SwitchBitmapDrawable(textView, startData.gravity, - startBitmap, startFontSize, startWidth, endBitmap, endFontSize, endWidth) - textView.overlay.add(drawable) - - // Properties: left, top, font size, text color - val leftProp = PropertyValuesHolder.ofFloat("left", startData.paddingLeft.toFloat(), endData.paddingLeft.toFloat()) - val topProp = PropertyValuesHolder.ofFloat("top", startData.paddingTop.toFloat(), endData.paddingTop.toFloat()) - val rightProp = PropertyValuesHolder.ofFloat("right", - (startData.width - startData.paddingRight).toFloat(), (endData.width - endData.paddingRight).toFloat()) - val bottomProp = PropertyValuesHolder.ofFloat("bottom", - (startData.height - startData.paddingBottom).toFloat(), (endData.height - endData.paddingBottom).toFloat()) - val fontSizeProp = PropertyValuesHolder.ofFloat("fontSize", startFontSize, endFontSize) - val animator: ObjectAnimator - if (startData.textColor != endData.textColor) { - val textColorProp = PropertyValuesHolder.ofObject("textColor", - ArgbEvaluator(), startData.textColor, endData.textColor) - animator = ObjectAnimator.ofPropertyValuesHolder(drawable, - leftProp, topProp, rightProp, bottomProp, fontSizeProp, textColorProp) - } else { - animator = ObjectAnimator.ofPropertyValuesHolder(drawable, - leftProp, topProp, rightProp, bottomProp, fontSizeProp) - } - - val finalFontSize = endFontSize - val listener = object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - textView.overlay.remove(drawable) - textView.setTextColor(textColors) - textView.setHintTextColor(hintColors) - textView.highlightColor = highlightColor - textView.setLinkTextColor(linkColors) - } - - override fun onAnimationPause(animation: Animator) { - textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, drawable.fontSize) - val paddingLeft = Math.round(drawable.left) - val paddingTop = Math.round(drawable.top) - val fraction = animator.getAnimatedFraction() - val paddingRight = Math.round(interpolate(startData.paddingRight.toFloat(), - endData.paddingRight.toFloat(), fraction)) - val paddingBottom = Math.round(interpolate(startData.paddingBottom.toFloat(), - endData.paddingBottom.toFloat(), fraction)) - textView.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom) - textView.setTextColor(drawable.textColor) - } - - override fun onAnimationResume(animation: Animator) { - textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, finalFontSize) - textView.setPadding(endData.paddingLeft, endData.paddingTop, - endData.paddingRight, endData.paddingBottom) - textView.setTextColor(endData.textColor) - } - } - animator.addListener(listener) - animator.addPauseListener(listener) - return animator - } - - /** - * This Drawable is used to scale the startLegacy and end bitmaps and switch between them - * at the appropriate progress. - */ - private class SwitchBitmapDrawable(private val view: TextView, gravity: Int, - private val startBitmap: Bitmap, private val startFontSize: Float, private val startWidth: Float, - private val endBitmap: Bitmap, private val endFontSize: Float, private val endWidth: Float) : Drawable() { - - private val horizontalGravity: Int - private val verticalGravity: Int - private val paint = Paint() - /** - * @return The font size of the text in the displayed bitmap. - */ - /** - * Sets the font size that the text should be displayed at. - * - * @param fontSize The font size in pixels of the scaled bitmap text. - */ - var fontSize: Float = 0.toFloat() - set(fontSize) { - field = fontSize - invalidateSelf() - } - /** - * @return The left side of the text. - */ - /** - * Sets the left side of the text. This should be the same as the left padding. - * - * @param left The left side of the text in pixels. - */ - var left: Float = 0.toFloat() - set(left) { - field = left - invalidateSelf() - } - /** - * @return The top of the text. - */ - /** - * Sets the top of the text. This should be the same as the top padding. - * - * @param top The top of the text in pixels. - */ - var top: Float = 0.toFloat() - set(top) { - field = top - invalidateSelf() - } - /** - * @return The right side of the text. - */ - /** - * Sets the right of the drawable. - * - * @param right The right pixel of the drawn area. - */ - var right: Float = 0.toFloat() - set(right) { - field = right - invalidateSelf() - } - /** - * @return The bottom of the text. - */ - /** - * Sets the bottom of the drawable. - * - * @param bottom The bottom pixel of the drawn area. - */ - var bottom: Float = 0.toFloat() - set(bottom) { - field = bottom - invalidateSelf() - } - /** - * @return The color of the text being displayed. - */ - /** - * Sets the color of the text to be displayed. - * - * @param textColor The color of the text to be displayed. - */ - var textColor: Int = 0 - set(textColor) { - field = textColor - colorFilter = PorterDuffColorFilter(textColor, PorterDuff.Mode.SRC_IN) - invalidateSelf() - } - - override fun getOpacity(): Int { - return PixelFormat.TRANSLUCENT - } - - init { - this.horizontalGravity = gravity and Gravity.HORIZONTAL_GRAVITY_MASK - this.verticalGravity = gravity and Gravity.VERTICAL_GRAVITY_MASK - } - - override fun invalidateSelf() { - super.invalidateSelf() - view.invalidate() - } - - override fun draw(canvas: Canvas) { - val saveCount = canvas.save() - // The threshold changes depending on the target font sizes. Because scaled-up - // fonts look bad, we want to switch when closer to the smaller font size. This - // algorithm ensures that null bitmaps (font size = 0) are never used. - val threshold = startFontSize / (startFontSize + endFontSize) - val fontSize = fontSize - val progress = (fontSize - startFontSize) / (endFontSize - startFontSize) - - // The drawn text width is a more accurate scale than font size. This avoids - // jump when switching bitmaps. - val expectedWidth = interpolate(startWidth, endWidth, progress) - if (progress < threshold) { - // draw startLegacy bitmap - val scale = expectedWidth / startWidth - val tx = getTranslationPoint(horizontalGravity, this.left, this.right, - startBitmap.width.toFloat(), scale) - val ty = getTranslationPoint(verticalGravity, this.top, this.bottom, - startBitmap.height.toFloat(), scale) - canvas.translate(tx, ty) - canvas.scale(scale, scale) - canvas.drawBitmap(startBitmap, 0f, 0f, paint) - } else { - // draw end bitmap - val scale = expectedWidth / endWidth - val tx = getTranslationPoint(horizontalGravity, this.left, this.right, - endBitmap.width.toFloat(), scale) - val ty = getTranslationPoint(verticalGravity, this.top, this.bottom, - endBitmap.height.toFloat(), scale) - canvas.translate(tx, ty) - canvas.scale(scale, scale) - canvas.drawBitmap(endBitmap, 0f, 0f, paint) - } - canvas.restoreToCount(saveCount) - } - - override fun setAlpha(alpha: Int) {} - - override fun setColorFilter(colorFilter: ColorFilter?) { - paint.colorFilter = colorFilter - } - - private fun getTranslationPoint(gravity: Int, start: Float, end: Float, dim: Float, - scale: Float): Float { - return when (gravity) { - Gravity.CENTER_HORIZONTAL, Gravity.CENTER_VERTICAL -> (start + end - dim * scale) / 2f - Gravity.RIGHT, Gravity.BOTTOM -> end - dim * scale - Gravity.LEFT, Gravity.TOP -> start - else -> start - } - } - } - - /** - * Contains all the non-font-size data used by the TextResize transition. - * None of these values should trigger the transition, so they are not listed - * in PROPERTIES. These are captured together to avoid boxing of all the - * primitives while adding to TransitionValues. - */ - internal class TextResizeData(textView: TextView) { - val paddingLeft = textView.paddingLeft - val paddingTop = textView.paddingTop - val paddingRight = textView.paddingRight - val paddingBottom = textView.paddingBottom - val width = textView.width - val height = textView.height - val gravity = textView.gravity - val textColor = textView.currentTextColor - - } - - companion object { - private val FONT_SIZE = "TextResize:fontSize" - private val DATA = "TextResize:data" - - private val PROPERTIES = arrayOf( - // We only care about FONT_SIZE. If anything else changes, we don't - // want this transition to be called to create an Animator. - FONT_SIZE) - - private fun setTextViewData(view: TextView, data: TextResizeData, fontSize: Float) { - view.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize) - view.setPadding(data.paddingLeft, data.paddingTop, data.paddingRight, data.paddingBottom) - view.right = view.left + data.width - view.bottom = view.top + data.height - view.setTextColor(data.textColor) - val widthSpec = View.MeasureSpec.makeMeasureSpec(view.width, View.MeasureSpec.EXACTLY) - val heightSpec = View.MeasureSpec.makeMeasureSpec(view.height, View.MeasureSpec.EXACTLY) - view.measure(widthSpec, heightSpec) - view.layout(view.left, view.top, view.right, view.bottom) - } - - private fun captureTextBitmap(textView: TextView): Bitmap? { - val background = textView.background - textView.background = null - val width = textView.width - textView.paddingLeft - textView.paddingRight - val height = textView.height - textView.paddingTop - textView.paddingBottom - if (width <= 0 || height <= 0) { - return null - } - val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) - val canvas = Canvas(bitmap) - canvas.translate((-textView.paddingLeft).toFloat(), (-textView.paddingTop).toFloat()) - textView.draw(canvas) - textView.background = background - return bitmap - } - - private fun interpolate(start: Float, end: Float, fraction: Float): Float { - return start + fraction * (end - start) - } - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/animation/TextUnit.kt b/ui/src/main/java/de/mm20/launcher2/ui/animation/TextUnit.kt index 8219374d..275c07dd 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/animation/TextUnit.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/animation/TextUnit.kt @@ -3,7 +3,6 @@ package de.mm20.launcher2.ui.animation import androidx.compose.animation.core.* import androidx.compose.runtime.Composable import androidx.compose.runtime.State -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.ExperimentalUnitApi import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.TextUnitType diff --git a/ui/src/main/java/de/mm20/launcher2/ui/common/RestoreBackupSheet.kt b/ui/src/main/java/de/mm20/launcher2/ui/common/RestoreBackupSheet.kt index 7a2884fa..3cf4c135 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/common/RestoreBackupSheet.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/common/RestoreBackupSheet.kt @@ -27,7 +27,7 @@ import de.mm20.launcher2.ui.component.BottomSheetDialog import de.mm20.launcher2.ui.component.LargeMessage import de.mm20.launcher2.ui.component.SmallMessage -@OptIn(ExperimentalComposeUiApi::class, ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class) @Composable fun RestoreBackupSheet( uri: Uri, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/LauncherCard.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/LauncherCard.kt index 1f98d3c5..a4ee2e12 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/LauncherCard.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/LauncherCard.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.ui.component import androidx.compose.foundation.BorderStroke -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt index 40019057..c038dd73 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt @@ -42,6 +42,7 @@ import de.mm20.launcher2.ui.locals.LocalDarkTheme import palettes.TonalPalette import java.time.Instant import java.time.ZoneId +import kotlin.math.abs import kotlin.math.pow import kotlin.math.roundToInt @@ -389,12 +390,12 @@ private val SquircleShape: Shape for (x in -radius.roundToInt()..radius.roundToInt()) lineTo( x.toFloat(), - Math.cbrt(radiusToPow - Math.abs(x * x * x)).toFloat() + Math.cbrt(radiusToPow - abs(x * x * x)).toFloat() ) for (x in radius.roundToInt() downTo -radius.roundToInt()) lineTo( x.toFloat(), - (-Math.cbrt(radiusToPow - Math.abs(x * x * x))).toFloat() + (-Math.cbrt(radiusToPow - abs(x * x * x))).toFloat() ) translate(Offset(size.width / 2f, size.height / 2f)) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceWithSwitch.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceWithSwitch.kt index ff6a3dee..d24637f4 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceWithSwitch.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/PreferenceWithSwitch.kt @@ -3,7 +3,6 @@ package de.mm20.launcher2.ui.component.preferences import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material3.LocalContentColor -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Switch import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/SwitchPreference.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/SwitchPreference.kt index 8a725c44..6d7884ec 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/SwitchPreference.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/SwitchPreference.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.ui.component.preferences import androidx.compose.material3.Switch -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.vector.ImageVector diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/weather/AnimatedWeatherIcon.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/weather/AnimatedWeatherIcon.kt index e0b57ace..4bc6c113 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/weather/AnimatedWeatherIcon.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/weather/AnimatedWeatherIcon.kt @@ -613,6 +613,7 @@ private fun Precipitation(icon: WeatherIcon) { tint = colorResource(id = R.color.weather_snow) ) } + else -> {} } } } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt index df64aa6c..fe9c1a3e 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/LauncherActivity.kt @@ -181,14 +181,6 @@ class LauncherActivity : BaseActivity() { WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } - override fun onResume() { - super.onResume() - - /*binding.container.doOnNextLayout { - WallpaperManager.getInstance(this).setWallpaperOffsets(it.windowToken, 0.5f, 0.5f) - }*/ - } - override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) val navContract = intent?.let { GestureNavContract.fromIntent(it) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt index 0e403d35..6464809c 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt @@ -6,7 +6,7 @@ import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.slideIn import androidx.compose.animation.slideOut import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.gestures.LocalOverScrollConfiguration +import androidx.compose.foundation.LocalOverscrollConfiguration import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState @@ -46,8 +46,7 @@ import de.mm20.launcher2.ui.utils.rememberNotificationShadeController import kotlin.math.roundToInt @OptIn( - ExperimentalMaterialApi::class, - ExperimentalFoundationApi::class + ExperimentalMaterialApi::class, ExperimentalFoundationApi::class ) @Composable fun PagerScaffold( @@ -216,7 +215,7 @@ fun PagerScaffold( CompositionLocalProvider( - LocalOverScrollConfiguration provides null + LocalOverscrollConfiguration provides null ) { Row( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt index 804f7811..3860fde4 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt @@ -7,7 +7,7 @@ import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.slideIn import androidx.compose.animation.slideOut import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.gestures.LocalOverScrollConfiguration +import androidx.compose.foundation.LocalOverscrollConfiguration import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -231,7 +231,7 @@ fun PullDownScaffold( derivedStateOf { maxHeight } } CompositionLocalProvider( - LocalOverScrollConfiguration provides null + LocalOverscrollConfiguration provides null ) { val offset by animateFloatAsState(if (isSearchOpen) 1f else 0f) Column( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesVM.kt index 1d15a43d..fa76452a 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesVM.kt @@ -1,9 +1,6 @@ package de.mm20.launcher2.ui.launcher.modals -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import androidx.lifecycle.liveData import de.mm20.launcher2.favorites.FavoritesItem import de.mm20.launcher2.favorites.FavoritesRepository import org.koin.core.component.KoinComponent diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheet.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheet.kt index e84873db..27bdaf29 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheet.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheet.kt @@ -3,19 +3,13 @@ package de.mm20.launcher2.ui.launcher.modals import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Edit -import androidx.compose.material.icons.rounded.Settings import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheetVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheetVM.kt index 5b174892..c2e93b41 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheetVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/HiddenItemsSheetVM.kt @@ -3,11 +3,7 @@ package de.mm20.launcher2.ui.launcher.modals import android.content.Context import android.content.Intent import androidx.lifecycle.ViewModel -import de.mm20.launcher2.favorites.FavoritesRepository import de.mm20.launcher2.ui.settings.SettingsActivity -import kotlinx.coroutines.flow.map -import org.koin.core.component.KoinComponent -import org.koin.core.component.inject class HiddenItemsSheetVM: ViewModel() { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt index 8a7fe682..3ee14497 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt @@ -1,21 +1,9 @@ package de.mm20.launcher2.ui.launcher.search -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.foundation.layout.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.VisibilityOff -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.livedata.observeAsState -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewmodel.compose.viewModel -import de.mm20.launcher2.ui.launcher.LauncherActivityVM import de.mm20.launcher2.ui.launcher.search.apps.AppResults import de.mm20.launcher2.ui.launcher.search.appshortcuts.AppShortcutResults import de.mm20.launcher2.ui.launcher.search.calculator.CalculatorResults @@ -29,7 +17,6 @@ import de.mm20.launcher2.ui.launcher.search.website.WebsiteResults import de.mm20.launcher2.ui.launcher.search.wikipedia.WikipediaResults import de.mm20.launcher2.ui.layout.BottomReversed -@OptIn(ExperimentalMaterial3Api::class) @Composable fun SearchColumn( modifier: Modifier = Modifier, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt index 945148cf..857b8712 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt @@ -37,7 +37,6 @@ import kotlin.math.min import kotlin.math.pow import kotlin.math.roundToInt -@OptIn(ExperimentalMaterialApi::class) @Composable fun AppItem( modifier: Modifier = Modifier, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorItem.kt index 6e906c5b..01bbd819 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorItem.kt @@ -1,4 +1,4 @@ -package de.mm20.launcher2.ui.search +package de.mm20.launcher2.ui.launcher.search.calculator import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorResults.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorResults.kt index a7d46482..310221db 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorResults.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/calculator/CalculatorResults.kt @@ -11,7 +11,6 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import de.mm20.launcher2.ui.component.LauncherCard import de.mm20.launcher2.ui.launcher.search.SearchVM -import de.mm20.launcher2.ui.search.CalculatorItem @Composable fun ColumnScope.CalculatorResults(reverse: Boolean = false) { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt index c2dfd552..d03e56d7 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt @@ -109,7 +109,7 @@ fun GridItem(modifier: Modifier = Modifier, item: Searchable, showLabels: Boolea } } -@OptIn(ExperimentalComposeUiApi::class, ExperimentalAnimationApi::class) +@OptIn(ExperimentalComposeUiApi::class) @Composable fun ItemPopup(origin: Rect, searchable: Searchable, onDismissRequest: () -> Unit) { var show by remember { mutableStateOf(false) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItemVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItemVM.kt index 06fdd8ee..0d49a6c6 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItemVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItemVM.kt @@ -1,19 +1,8 @@ package de.mm20.launcher2.ui.launcher.search.common.grid -import androidx.appcompat.app.AppCompatActivity -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.toAndroidRect -import androidx.core.app.ActivityOptionsCompat -import de.mm20.launcher2.badges.BadgeRepository -import de.mm20.launcher2.favorites.FavoritesRepository -import de.mm20.launcher2.icons.IconRepository -import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.search.data.Searchable import de.mm20.launcher2.ui.launcher.search.common.SearchableItemVM -import kotlinx.coroutines.flow.Flow -import org.koin.core.component.KoinComponent -import org.koin.core.component.inject class GridItemVM( - private val searchable: Searchable + searchable: Searchable ): SearchableItemVM(searchable) \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItem.kt index 8ec96891..80991805 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItem.kt @@ -16,7 +16,7 @@ import de.mm20.launcher2.ui.launcher.search.contacts.ContactItem import de.mm20.launcher2.ui.launcher.search.files.FileItem import de.mm20.launcher2.ui.launcher.search.shortcut.AppShortcutItem -@OptIn(ExperimentalMaterialApi::class, androidx.compose.foundation.ExperimentalFoundationApi::class) +@OptIn(androidx.compose.foundation.ExperimentalFoundationApi::class) @Composable fun ListItem(modifier: Modifier = Modifier, item: Searchable) { var showDetails by remember { mutableStateOf(false) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItemVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItemVM.kt index d0c5a09e..c3bb237c 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItemVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/list/ListItemVM.kt @@ -4,6 +4,5 @@ import de.mm20.launcher2.search.data.Searchable import de.mm20.launcher2.ui.launcher.search.common.SearchableItemVM class ListItemVM( - private val searchable: Searchable -): SearchableItemVM(searchable) { -} \ No newline at end of file + searchable: Searchable +): SearchableItemVM(searchable) \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt index 40431be3..e5a42442 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt @@ -43,7 +43,6 @@ import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.ui.modifier.scale import kotlinx.coroutines.launch -@OptIn(ExperimentalUnitApi::class) @Composable fun ContactItem( modifier: Modifier = Modifier, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt index c12c75f3..7eca5e4a 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt @@ -38,7 +38,6 @@ import kotlinx.coroutines.launch import java.text.DecimalFormat import kotlin.math.roundToInt -@OptIn(ExperimentalUnitApi::class) @Composable fun FileItem( modifier: Modifier = Modifier, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt index 118d3995..b550d229 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt @@ -40,7 +40,6 @@ import kotlinx.coroutines.launch import kotlin.math.pow import kotlin.math.roundToInt -@OptIn(ExperimentalMaterialApi::class) @Composable fun AppShortcutItem( modifier: Modifier = Modifier, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterItem.kt index ea564b80..068e2d0b 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterItem.kt @@ -1,9 +1,8 @@ -package de.mm20.launcher2.ui.search +package de.mm20.launcher2.ui.launcher.search.unitconverter import android.icu.text.DateFormat import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.* import androidx.compose.material3.* @@ -12,11 +11,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Dialog import de.mm20.launcher2.search.data.CurrencyUnitConverter import de.mm20.launcher2.search.data.UnitConverter import de.mm20.launcher2.ui.R diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterResults.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterResults.kt index 2e46b131..0ca5bd15 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterResults.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/unitconverter/UnitConverterResults.kt @@ -11,7 +11,6 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import de.mm20.launcher2.ui.component.LauncherCard import de.mm20.launcher2.ui.launcher.search.SearchVM -import de.mm20.launcher2.ui.search.UnitConverterItem @Composable fun ColumnScope.UnitConverterResults(reverse: Boolean = false) { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionHandler.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionHandler.kt index 881251ac..ff015c71 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionHandler.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionHandler.kt @@ -1,6 +1,5 @@ package de.mm20.launcher2.ui.launcher.transitions -import android.content.ComponentName import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import com.android.launcher3.GestureNavContract diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionManager.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionManager.kt index 0d0c62f3..925e6ae1 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionManager.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/transitions/HomeTransitionManager.kt @@ -1,9 +1,6 @@ package de.mm20.launcher2.ui.launcher.transitions -import android.util.Log -import androidx.compose.runtime.Composable import androidx.compose.runtime.compositionLocalOf -import androidx.compose.ui.geometry.Rect import androidx.compose.ui.graphics.toAndroidRectF import com.android.launcher3.GestureNavContract import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetColumn.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetColumn.kt index 77f5cfde..75259fac 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetColumn.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetColumn.kt @@ -16,7 +16,6 @@ import androidx.compose.foundation.gestures.rememberDraggableState import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Add import androidx.compose.material3.* @@ -36,7 +35,7 @@ import androidx.compose.ui.window.Dialog import androidx.lifecycle.Lifecycle import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.viewmodel.compose.viewModel -import de.mm20.launcher2.ui.ClockWidget +import de.mm20.launcher2.ui.launcher.widgets.clock.ClockWidget import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.ktx.animateTo import de.mm20.launcher2.ui.launcher.widgets.picker.PickAppWidgetActivity diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt index 19b2a782..35d43733 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/calendar/CalendarWidget.kt @@ -145,7 +145,7 @@ fun CalendarWidget() { ) } val pinnedEvents by viewModel.pinnedCalendarEvents.observeAsState(emptyList()) - if (pinnedEvents.size > 0) { + if (pinnedEvents.isNotEmpty()) { Text( stringResource(R.string.calendar_widget_pinned_events), modifier = Modifier.padding(start = 4.dp, end = 4.dp, top = 8.dp, bottom = 4.dp), diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/ClockWidget.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/ClockWidget.kt index f297c421..1f7670e0 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/ClockWidget.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/ClockWidget.kt @@ -1,4 +1,4 @@ -package de.mm20.launcher2.ui +package de.mm20.launcher2.ui.launcher.widgets.clock import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -19,7 +19,6 @@ import androidx.lifecycle.viewmodel.compose.viewModel import de.mm20.launcher2.preferences.Settings.ClockWidgetSettings.ClockStyle import de.mm20.launcher2.preferences.Settings.ClockWidgetSettings.ClockWidgetLayout import de.mm20.launcher2.ui.base.LocalTime -import de.mm20.launcher2.ui.launcher.widgets.clock.ClockWidgetVM import de.mm20.launcher2.ui.launcher.widgets.clock.clocks.* import de.mm20.launcher2.ui.launcher.widgets.clock.parts.PartProvider diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/parts/PartProvider.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/parts/PartProvider.kt index 7c5c7e03..f2103a55 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/parts/PartProvider.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/parts/PartProvider.kt @@ -2,7 +2,6 @@ package de.mm20.launcher2.ui.launcher.widgets.clock.parts import android.content.Context import androidx.compose.runtime.Composable -import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.preferences.Settings.ClockWidgetSettings.ClockWidgetLayout import kotlinx.coroutines.flow.Flow diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/AppWidgetList.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/AppWidgetList.kt index b850b5c0..0b5969a8 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/AppWidgetList.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/AppWidgetList.kt @@ -33,7 +33,7 @@ fun AppWidgetList( modifier = modifier ) { for (group in widgets) { - item() { + item { Text( modifier = Modifier.padding( top = 16.dp, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/PickAppWidgetActivity.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/PickAppWidgetActivity.kt index 3927f72a..943a6c8e 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/PickAppWidgetActivity.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/picker/PickAppWidgetActivity.kt @@ -10,6 +10,7 @@ import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material3.* @@ -67,7 +68,7 @@ class PickAppWidgetActivity : BaseActivity() { if (selected == null) { if (widgets != null) { AppWidgetList( - modifier = Modifier.fillMaxSize(), + modifier = Modifier.fillMaxSize().padding(it), widgets = widgets, onWidgetSelected = { selectAppWidget(it) @@ -75,7 +76,7 @@ class PickAppWidgetActivity : BaseActivity() { ) } else { Box( - modifier = Modifier.fillMaxSize(), + modifier = Modifier.fillMaxSize().padding(it), contentAlignment = Alignment.Center ) { CircularProgressIndicator() diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt index d8947265..ac2e4bd8 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/weather/WeatherWidget.kt @@ -39,7 +39,6 @@ import java.text.DecimalFormat import java.text.SimpleDateFormat import kotlin.math.roundToInt -@OptIn(ExperimentalAnimationApi::class) @Composable fun WeatherWidget() { val viewModel: WeatherWidgetWM = viewModel() diff --git a/ui/src/main/java/de/mm20/launcher2/ui/legacy/helper/BitmapHolder.kt b/ui/src/main/java/de/mm20/launcher2/ui/legacy/helper/BitmapHolder.kt deleted file mode 100644 index f55de608..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/legacy/helper/BitmapHolder.kt +++ /dev/null @@ -1,22 +0,0 @@ -package de.mm20.launcher2.ui.legacy.helper - -import android.graphics.* -import android.util.LruCache -import androidx.annotation.MainThread - -/** - * Helper object to store temporary bitmaps to draw on so they don't have to be allocated every - * time and can be reused by different classes and methods. - */ -object BitmapHolder { - private val cache = LruCache>(8) - - @MainThread - fun getBitmapAndCanvas(size: Int): Pair { - return cache[size]?.apply { second.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) } - ?: Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888).let { - Pair(it, Canvas(it)).also { pair -> cache.put(size, pair) } - } - } - -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/legacy/view/BatteryChargingView.kt b/ui/src/main/java/de/mm20/launcher2/ui/legacy/view/BatteryChargingView.kt deleted file mode 100644 index 41e2526d..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/legacy/view/BatteryChargingView.kt +++ /dev/null @@ -1,137 +0,0 @@ -package de.mm20.launcher2.ui.legacy.view - -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.content.IntentFilter -import android.graphics.Canvas -import android.graphics.Color -import android.graphics.Paint -import android.os.BatteryManager -import android.util.AttributeSet -import android.view.View -import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.* -import de.mm20.launcher2.ktx.dp -import java.util.* - -class BatteryChargingView : View, DefaultLifecycleObserver { - constructor(context: Context) : super(context) - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) - constructor(context: Context, attrs: AttributeSet?, defStyleRes: Int) : super(context, attrs, defStyleRes) - - private var animating = false - - private val activity = context as AppCompatActivity - - init { - activity.lifecycle.addObserver(this) - } - - private val batteryReceiver = object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - if (intent?.action != Intent.ACTION_BATTERY_CHANGED) return - update(intent, true) - } - } - - override fun onResume(owner: LifecycleOwner) { - super.onResume(owner) - val intent = activity.registerReceiver(batteryReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) - start() - intent?.let { update(it, true) } - } - - override fun onPause(owner: LifecycleOwner) { - super.onPause(owner) - stop() - try { - activity.unregisterReceiver(batteryReceiver) - } catch (e: IllegalArgumentException) { - } - } - - private fun update(intent: Intent, retryOnZeroCurrent: Boolean = false) { - val status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) - val charging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL - if (charging) { - val bm = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager - val current = bm.getLongProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW) - if (current <= 0) { - intensity = 5 - start() - //Workaround for delayed current updates - if (retryOnZeroCurrent) postDelayed({ update(intent) }, 1000) - return - } - intensity = Math.round(current / 100000f).takeIf { it > 0 } ?: 1 - start() - } else { - intensity = 0 - } - } - - var intensity = 0 - set(value) { - if (field == 0 && value > 0) start() - if (value == 0) stop() - field = when { - value > 100 -> 100 - value < 0 -> 0 - else -> value - } - - for (i in field until bubbles.size) { - bubbles.pop() - } - for (i in bubbles.size until field) { - bubbles.push(FloatArray(6) { 0f }) - } - } - - fun start() { - if (animating || intensity == 0) return - animating = true - invalidate() - } - - fun stop() { - animating = false - } - - - /** - * 0: Pos X - * 1: Pos Y - * 2: Delta X - * 3: Delta Y - * 4: Radius - * 5: Lifetime left - */ - private var bubbles = ArrayDeque() - - private val paint = Paint() - - - override fun onDraw(canvas: Canvas) { - super.onDraw(canvas) - if (!animating) return - for (b in bubbles) { - if (b[5] <= 0f) { - b[0] = (Math.random() * width).toFloat() - b[1] = height.toFloat() - b[2] = ((Math.random() - 0.5) * width / 120f).toFloat() * dp - b[3] = -(Math.random() * height / 90f).toFloat() * dp - b[4] = (Math.random() * 2 + 2).toFloat() * dp - b[5] = (Math.random() * 80 + 40).toInt().toFloat() - } - paint.color = Color.argb((b[5] / 120f * 120).toInt(), 255, 255, 255) - canvas.drawCircle(b[0], b[1], b[4], paint) - - b[0] += b[2] - b[1] += b[3] - b[5]-- - } - postInvalidate() - } -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivityVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivityVM.kt deleted file mode 100644 index 8aa48867..00000000 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/SettingsActivityVM.kt +++ /dev/null @@ -1,15 +0,0 @@ -package de.mm20.launcher2.ui.settings - -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.asLiveData -import de.mm20.launcher2.preferences.LauncherDataStore -import de.mm20.launcher2.preferences.Settings -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.runBlocking -import org.koin.core.component.KoinComponent -import org.koin.core.component.inject - -class SettingsActivityVM: ViewModel(), KoinComponent { -} \ No newline at end of file diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/accounts/AccountsSettingsScreenVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/accounts/AccountsSettingsScreenVM.kt index 24423059..0b49d1ef 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/accounts/AccountsSettingsScreenVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/accounts/AccountsSettingsScreenVM.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.ui.settings.accounts import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt index d52340d8..20c66b18 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt @@ -318,7 +318,6 @@ fun SearchBarStylePreference( } } -@OptIn(ExperimentalFoundationApi::class) @Composable fun IconShapePreference( title: String, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreen.kt index 616d58f5..981231ae 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreen.kt @@ -1,6 +1,5 @@ package de.mm20.launcher2.ui.settings.backup -import android.net.Uri import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.runtime.* diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreenVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreenVM.kt index c3d46141..21d55ca4 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreenVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/backup/BackupSettingsScreenVM.kt @@ -1,19 +1,9 @@ package de.mm20.launcher2.ui.settings.backup -import android.content.Context -import android.content.Intent import android.net.Uri -import androidx.core.content.FileProvider import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import de.mm20.launcher2.backup.BackupManager -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import org.koin.core.component.KoinComponent -import org.koin.core.component.inject -import java.io.File class BackupSettingsScreenVM : ViewModel(), KoinComponent { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/buildinfo/BuildInfoSettingsScreenVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/buildinfo/BuildInfoSettingsScreenVM.kt index 44dc58b8..b562b629 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/buildinfo/BuildInfoSettingsScreenVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/buildinfo/BuildInfoSettingsScreenVM.kt @@ -1,17 +1,12 @@ package de.mm20.launcher2.ui.settings.buildinfo -import android.content.pm.PackageManager -import android.os.Build -import android.util.Base64 import androidx.lifecycle.ViewModel -import androidx.lifecycle.liveData import de.mm20.launcher2.accounts.AccountType import de.mm20.launcher2.accounts.AccountsRepository import de.mm20.launcher2.preferences.Settings.WeatherSettings.WeatherProvider import de.mm20.launcher2.weather.WeatherRepository import org.koin.core.component.KoinComponent import org.koin.core.component.inject -import java.security.MessageDigest class BuildInfoSettingsScreenVM : ViewModel(), KoinComponent { private val accountsRepository: AccountsRepository by inject() diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt index 41e2a2ca..159b44e4 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/clockwidget/ClockWidgetSettingsScreen.kt @@ -20,7 +20,7 @@ import com.google.accompanist.pager.HorizontalPagerIndicator import com.google.accompanist.pager.rememberPagerState import de.mm20.launcher2.preferences.Settings.ClockWidgetSettings.ClockStyle import de.mm20.launcher2.preferences.Settings.ClockWidgetSettings.ClockWidgetLayout -import de.mm20.launcher2.ui.Clock +import de.mm20.launcher2.ui.launcher.widgets.clock.Clock import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.component.preferences.* diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreenVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreenVM.kt index 9878d7df..69400dfa 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreenVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/crashreporter/CrashReporterScreenVM.kt @@ -2,7 +2,6 @@ package de.mm20.launcher2.ui.settings.crashreporter import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import androidx.lifecycle.liveData import androidx.lifecycle.viewModelScope import de.mm20.launcher2.crashreporter.BuildConfig import de.mm20.launcher2.crashreporter.CrashReport diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/easteregg/EasterEggSettingsScreenVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/easteregg/EasterEggSettingsScreenVM.kt index f57cf766..3ad48569 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/easteregg/EasterEggSettingsScreenVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/easteregg/EasterEggSettingsScreenVM.kt @@ -4,8 +4,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope import de.mm20.launcher2.preferences.LauncherDataStore -import de.mm20.launcher2.preferences.Settings -import de.mm20.launcher2.preferences.Settings.IconSettings.IconShape import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import org.koin.core.component.KoinComponent diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt index d3e6eb70..ccf7d1b1 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt @@ -82,7 +82,7 @@ fun HiddenItemsSettingsScreen() { DropdownMenuItem( text = { Text(stringResource(R.string.menu_app_info)) }, onClick = { - viewModel.openAppInfo(context, searchable as Application) + viewModel.openAppInfo(context, searchable) showPopup = false }) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreenVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreenVM.kt index 0e8fb66e..3e73cae9 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreenVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/websearch/WebSearchSettingsScreenVM.kt @@ -1,17 +1,9 @@ package de.mm20.launcher2.ui.settings.websearch -import android.content.Context -import android.graphics.Bitmap -import android.graphics.BitmapFactory import android.net.Uri -import androidx.core.graphics.drawable.toBitmap -import androidx.core.graphics.scale import androidx.lifecycle.ViewModel import androidx.lifecycle.asLiveData import androidx.lifecycle.viewModelScope -import coil.imageLoader -import coil.request.ImageRequest -import coil.size.Scale import de.mm20.launcher2.search.WebsearchRepository import de.mm20.launcher2.search.data.Websearch import kotlinx.coroutines.Dispatchers @@ -20,7 +12,6 @@ import kotlinx.coroutines.withContext import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.io.File -import java.io.FileOutputStream class WebSearchSettingsScreenVM: ViewModel(), KoinComponent { private val repository: WebsearchRepository by inject() diff --git a/unitconverter/src/main/java/de/mm20/launcher2/unitconverter/Module.kt b/unitconverter/src/main/java/de/mm20/launcher2/unitconverter/Module.kt index b272f2b6..bd80eef5 100644 --- a/unitconverter/src/main/java/de/mm20/launcher2/unitconverter/Module.kt +++ b/unitconverter/src/main/java/de/mm20/launcher2/unitconverter/Module.kt @@ -2,7 +2,6 @@ package de.mm20.launcher2.unitconverter import de.mm20.launcher2.currencies.CurrencyRepository import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val unitConverterModule = module { diff --git a/websites/src/main/java/de/mm20/launcher2/websites/Module.kt b/websites/src/main/java/de/mm20/launcher2/websites/Module.kt index 9765f84d..cbf71d88 100644 --- a/websites/src/main/java/de/mm20/launcher2/websites/Module.kt +++ b/websites/src/main/java/de/mm20/launcher2/websites/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.websites import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val websitesModule = module { diff --git a/websites/src/main/java/de/mm20/launcher2/websites/WebsiteRepository.kt b/websites/src/main/java/de/mm20/launcher2/websites/WebsiteRepository.kt index 2bc7ee28..68ce94d5 100644 --- a/websites/src/main/java/de/mm20/launcher2/websites/WebsiteRepository.kt +++ b/websites/src/main/java/de/mm20/launcher2/websites/WebsiteRepository.kt @@ -94,8 +94,8 @@ internal class WebsiteRepositoryImpl(val context: Context) : WebsiteRepository, if (favicon.isBlank()) favicon = doc.select("link[rel=icon]").attr("href") if (favicon.isBlank()) favicon = doc.head().select("link[href~=.*\\.(ico|png)]").attr("href") - if (!favicon.isBlank()) favicon = resolveUrl(response.request.url, favicon) - if (!image.isBlank()) image = resolveUrl(response.request.url, image) + if (favicon.isNotBlank()) favicon = resolveUrl(response.request.url, favicon) + if (image.isNotBlank()) image = resolveUrl(response.request.url, image) return@withContext Website( label = title, url = url, diff --git a/widgets/src/main/java/de/mm20/launcher2/widgets/Module.kt b/widgets/src/main/java/de/mm20/launcher2/widgets/Module.kt index 75abf6ac..2f9d3a46 100644 --- a/widgets/src/main/java/de/mm20/launcher2/widgets/Module.kt +++ b/widgets/src/main/java/de/mm20/launcher2/widgets/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.widgets import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val widgetsModule = module { diff --git a/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt b/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt index 9441b493..d8bcd7e9 100644 --- a/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt +++ b/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt @@ -7,7 +7,6 @@ import android.net.Uri import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.ContextCompat import de.mm20.launcher2.icons.ColorLayer -import de.mm20.launcher2.icons.StaticIconLayer import de.mm20.launcher2.icons.StaticLauncherIcon import de.mm20.launcher2.icons.TintedIconLayer import de.mm20.launcher2.wikipedia.R @@ -43,8 +42,4 @@ class Wikipedia( intent.intent.data = Uri.parse(uri) return intent.intent } - - companion object { - - } } \ No newline at end of file diff --git a/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/Module.kt b/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/Module.kt index e3d73ab0..dff6cb1d 100644 --- a/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/Module.kt +++ b/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/Module.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.wikipedia import org.koin.android.ext.koin.androidContext -import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.dsl.module val wikipediaModule = module {