theme bug fixes

This commit is contained in:
deniscerri 2023-04-23 14:42:12 +02:00
parent 026cf5cdba
commit a29eecadee
No known key found for this signature in database
GPG key ID: 95C43D517D830350
20 changed files with 59 additions and 70 deletions

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
<bytecodeTargetLevel target="11" />
</component>
</project>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17_PREVIEW" project-jdk-name="jbr-17" project-jdk-type="JavaSDK" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="jbr-17" project-jdk-type="JavaSDK" />
</project>

View file

@ -4,7 +4,7 @@ plugins {
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id "org.jetbrains.kotlin.plugin.serialization" version "1.7.21"
id "org.jetbrains.kotlin.plugin.serialization" version "1.8.10"
}
def properties = new Properties()
@ -97,12 +97,12 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '1.8'
jvmTarget = '11'
}
splits {
@ -130,12 +130,11 @@ dependencies {
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation 'com.google.android.material:material:1.9.0-beta01'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.core:core:1.9.0'
implementation 'androidx.recyclerview:recyclerview:1.3.0'
implementation 'androidx.preference:preference:1.2.0'
implementation "androidx.navigation:navigation-fragment-ktx:$navVer"
implementation "androidx.navigation:navigation-ui-ktx:$navVer"
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.core:core-ktx:1.10.0'
implementation 'androidx.test.ext:junit-ktx:1.1.5'
implementation 'androidx.benchmark:benchmark-macro:1.1.1'
testImplementation "junit:junit:$junitVer"
@ -148,7 +147,7 @@ dependencies {
androidTestImplementation "androidx.test:rules:1.5.0"
androidTestImplementation "androidx.navigation:navigation-testing:$navVer"
implementation "io.reactivex.rxjava2:rxandroid:2.1.0"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation "com.devbrackets.android:exomedia:4.3.0"
implementation("androidx.cardview:cardview:1.0.0")
@ -164,7 +163,7 @@ dependencies {
implementation "androidx.room:room-ktx:2.5.1"
kapt "androidx.room:room-compiler:2.5.1"
androidTestImplementation "androidx.room:room-testing:2.5.1"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
implementation "androidx.compose.runtime:runtime:$composeVer"
androidTestImplementation "com.google.truth:truth:1.1.3"
@ -174,9 +173,9 @@ dependencies {
implementation "com.squareup.retrofit2:retrofit:$retrofitVer"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVer"
implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.10"
implementation "com.squareup.okhttp3:logging-interceptor:4.7.2"
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0'
implementation "com.google.android.exoplayer:exoplayer:2.18.5"
implementation 'it.xabaras.android:recyclerview-swipedecorator:1.4'

View file

@ -38,9 +38,9 @@
<activity
android:name=".MainActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:windowSoftInputMode="adjustResize">
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -56,7 +56,7 @@
</activity>
<activity
android:name=".receiver.ShareActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleInstance"
@ -71,7 +71,7 @@
</activity>
<activity
android:name=".ui.more.downloadLogs.DownloadLogListActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".MainActivity">
<intent-filter>
@ -82,7 +82,7 @@
</activity>
<activity
android:name=".ui.downloads.DownloadQueueActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".MainActivity">
<intent-filter>
@ -93,7 +93,7 @@
</activity>
<activity
android:name=".ui.more.downloadLogs.DownloadLogActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".ui.more.downloadLogs.DownloadLogListActivity">
<intent-filter>
@ -104,7 +104,7 @@
</activity>
<activity
android:name=".ui.more.settings.SettingsActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".MainActivity">
<intent-filter>
@ -115,11 +115,10 @@
</activity>
<activity
android:name=".ui.more.TerminalActivity"
android:configChanges="layoutDirection|locale|orientation|screenSize"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:label="@string/terminal"
android:parentActivityName=".MainActivity"
android:theme="@style/BaseTheme">
android:parentActivityName=".MainActivity">
<intent-filter>
<action android:name="ytdlnis.TerminalActivity" />
@ -135,7 +134,7 @@
</activity>
<activity
android:name=".ui.more.CommandTemplatesActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".MainActivity"
android:windowSoftInputMode="adjustResize">
@ -148,7 +147,7 @@
<activity
android:name=".ui.more.CookiesActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".MainActivity"
android:windowSoftInputMode="adjustResize">
@ -161,7 +160,7 @@
<activity
android:name=".ui.more.WebViewActivity"
android:configChanges="layoutDirection|locale"
android:configChanges="smallestScreenSize|layoutDirection|locale|orientation|screenSize"
android:exported="true"
android:parentActivityName=".MainActivity"
android:windowSoftInputMode="adjustResize">

View file

@ -18,7 +18,6 @@ import android.view.View
import android.view.WindowInsets
import android.widget.CheckBox
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.forEach
@ -35,11 +34,9 @@ import com.deniscerri.ytdlnis.ui.downloads.DownloadQueueActivity
import com.deniscerri.ytdlnis.ui.more.settings.SettingsActivity
import com.deniscerri.ytdlnis.util.ThemeUtil
import com.deniscerri.ytdlnis.util.UpdateUtil
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.navigation.NavigationBarView
import com.google.android.material.navigation.NavigationView
import com.google.android.material.navigationrail.NavigationRailView
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.BufferedReader
@ -62,7 +59,7 @@ class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ThemeUtil.updateTheme(this)
setContentView(R.layout.activity_main)
context = baseContext
resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java]

View file

@ -31,6 +31,7 @@ import com.deniscerri.ytdlnis.database.models.ResultItem
import com.deniscerri.ytdlnis.database.viewmodel.CookieViewModel
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel
import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel
import com.deniscerri.ytdlnis.ui.BaseActivity
import com.deniscerri.ytdlnis.ui.downloadcard.DownloadBottomSheetDialog
import com.deniscerri.ytdlnis.ui.downloadcard.SelectPlaylistItemsBottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialog
@ -41,7 +42,7 @@ import kotlinx.coroutines.withContext
import java.io.File
import kotlin.system.exitProcess
class ShareActivity : AppCompatActivity() {
class ShareActivity : BaseActivity() {
lateinit var context: Context
private lateinit var resultViewModel: ResultViewModel

View file

@ -38,6 +38,7 @@ class ActiveDownloadsFragment() : Fragment(), ActiveDownloadAdapter.OnItemClickL
lateinit var downloadItem: DownloadItem
private lateinit var notificationUtil: NotificationUtil
private lateinit var fileUtil: FileUtil
private lateinit var list: List<DownloadItem>
override fun onCreateView(
@ -51,6 +52,7 @@ class ActiveDownloadsFragment() : Fragment(), ActiveDownloadAdapter.OnItemClickL
notificationUtil = NotificationUtil(requireContext())
fileUtil = FileUtil()
downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java]
list = listOf()
return fragmentView
}
@ -78,6 +80,7 @@ class ActiveDownloadsFragment() : Fragment(), ActiveDownloadAdapter.OnItemClickL
}
downloadViewModel.activeDownloads.observe(viewLifecycleOwner) {
list = it
activeDownloads.submitList(it)
it.forEach{item ->
WorkManager.getInstance(requireContext())
@ -121,6 +124,7 @@ class ActiveDownloadsFragment() : Fragment(), ActiveDownloadAdapter.OnItemClickL
}
private fun cancelDownload(itemID: Long){
list.find { it.id == itemID }?.let { downloadViewModel.deleteDownload(it) }
val id = itemID.toInt()
YoutubeDL.getInstance().destroyProcessById(id.toString())
WorkManager.getInstance(requireContext()).cancelUniqueWork(id.toString())

View file

@ -162,7 +162,7 @@ class NotificationUtil(var context: Context) {
val errorPendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
notificationBuilder
.setContentTitle("${context.getString(R.string.errored)}: $title")
.setContentTitle("${context.getString(R.string.failed_download)}: $title")
.setContentText(error)
.setSmallIcon(R.drawable.ic_app_icon)
.setLargeIcon(

View file

@ -12,12 +12,13 @@ object ThemeUtil {
fun updateTheme(activity: AppCompatActivity) {
val sharedPreferences = activity.getSharedPreferences("root_preferences", Application.MODE_PRIVATE)
val themeMode = sharedPreferences.getString("ytdlnis_theme", "Default")!!
//update accent
val themeAccent = sharedPreferences.getString("theme_accent","blue")
when (themeAccent) {
"Default" -> activity.setTheme(R.style.BaseTheme)
when (sharedPreferences.getString("theme_accent","blue")) {
"Default" -> {
DynamicColors.applyToActivityIfAvailable(activity)
activity.setTheme(R.style.BaseTheme)
}
"blue" -> activity.setTheme(R.style.Theme_Blue)
"red" -> activity.setTheme(R.style.Theme_Red)
"green" -> activity.setTheme(R.style.Theme_Green)
@ -26,21 +27,17 @@ object ThemeUtil {
"monochrome" -> activity.setTheme(R.style.Theme_Monochrome)
}
//dynamic colors
if (themeAccent == "Default") DynamicColors.applyToActivityIfAvailable(activity)
//high contrast theme
val highContrast = sharedPreferences.getBoolean(
"high_contrast",
false
)
if (highContrast) activity.theme.applyStyle(R.style.Pure, true)
if (sharedPreferences.getBoolean("high_contrast",false)) {
activity.theme.applyStyle(R.style.Pure, true)
}
when (themeMode) {
when (sharedPreferences.getString("ytdlnis_theme", "System")!!) {
"System" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
"Light" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
"Dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
else -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
}
}
}

View file

@ -310,6 +310,8 @@ class DownloadWorker(
historyDao.insert(historyItem)
}
}
notificationUtil.cancelDownloadNotification(downloadItem.id.toInt())
notificationUtil.createDownloadFinished(
downloadItem.title, if (finalPath.equals(context.getString(R.string.unfound_file))) null else finalPath,
NotificationUtil.DOWNLOAD_FINISHED_CHANNEL_ID
@ -338,11 +340,7 @@ class DownloadWorker(
}, 1000)
Log.e(TAG, context.getString(R.string.failed_download), it)
notificationUtil.updateDownloadNotification(
downloadItem.id.toInt(),
context.getString(R.string.failed_download), 0, 0, downloadItem.title,
NotificationUtil.DOWNLOAD_SERVICE_CHANNEL_ID
)
notificationUtil.cancelDownloadNotification(downloadItem.id.toInt())
downloadItem.status = DownloadRepository.Status.Error.toString()
runBlocking {

View file

@ -110,6 +110,8 @@ class TerminalDownloadWorker(
if (logDownloads && logFile.exists()){
logFile.appendText("${it.out}\n")
}
notificationUtil.cancelDownloadNotification(itemId)
}.onFailure {
if (it is YoutubeDL.CanceledException) {
return Result.failure()
@ -121,11 +123,7 @@ class TerminalDownloadWorker(
tempFileDir.delete()
Log.e(TAG, context.getString(R.string.failed_download), it)
notificationUtil.updateDownloadNotification(
itemId,
context.getString(R.string.failed_download), 0, 0, command.take(65),
NotificationUtil.DOWNLOAD_SERVICE_CHANNEL_ID
)
notificationUtil.cancelDownloadNotification(itemId)
return Result.failure()
}

View file

@ -18,7 +18,6 @@
android:id="@+id/history_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll"
app:title="@string/downloads"
app:menu="@menu/history_menu"
/>

View file

@ -112,7 +112,7 @@
android:id="@+id/home_toolbar"
android:layout_width="match_parent"
app:title="@string/app_name"
app:layout_scrollFlags="scroll"
app:layout_scrollFlags="scroll|enterAlways"
android:layout_height="wrap_content" />
<com.google.android.material.search.SearchBar

View file

@ -177,10 +177,8 @@
<string name="end">Slutt</string>
<string name="start">Start</string>
<string name="quality">Kvalitet</string>
<string name="black">Helsvart</string>
<string name="system">System</string>
<string name="pure_theme_summary">Helsvart/helhvit drakt</string>
<string name="white">Helhvit</string>
<string name="high_contrast">Høykontrast</string>
<string name="link_you_copied">Lenke du kopierte</string>
<string name="cut">Klipp ut</string>

View file

@ -1,9 +1,10 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="BaseTheme" parent="Theme.Material3.DayNight.NoActionBar">
<item name="android:windowLightStatusBar">?attr/isLightTheme</item>
<style name="BaseTheme" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:windowLightStatusBar">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:color">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="windowActionModeOverlay">true</item>
<item name="alertDialogTheme">@style/ThemeOverlay.Material3.MaterialAlertDialog</item>
<item name="dialogCornerRadius">28dp</item>

View file

@ -221,8 +221,6 @@
<string name="light">Çelët</string>
<string name="quality">Kualiteti</string>
<string name="system">Sistemi</string>
<string name="white">Kompet e Bardhë</string>
<string name="black">Komplet e Zezë</string>
<string name="accents">Ngjyrat</string>
<string name="high_contrast">Kontrast i Lartë</string>
<string name="pure_theme_summary">Temë komplet e Zezë / e Bardhë</string>

View file

@ -1,5 +1,5 @@
<resources>
<style name="Theme.BottomSheet" parent="Theme.Material3.DayNight.NoActionBar">
<style name="Theme.BottomSheet" parent="BaseTheme">
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>

View file

@ -1,10 +1,10 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="BaseTheme" parent="Theme.Material3.DayNight.NoActionBar">
<style name="BaseTheme" parent="Theme.Material3.Light.NoActionBar">
<item name="android:windowLightStatusBar">?attr/isLightTheme</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:color">@android:color/transparent</item>
<item name="windowActionModeOverlay">true</item>
<item name="alertDialogTheme">@style/ThemeOverlay.Material3.MaterialAlertDialog</item>
<item name="dialogCornerRadius">28dp</item>

View file

@ -12,7 +12,7 @@
android:entries="@array/themes"
android:entryValues="@array/themes_values"
android:icon="@drawable/baseline_format_paint_24"
app:defaultValue="Default"
app:defaultValue="System"
app:key="ytdlnis_theme"
app:summary="@string/defaultValue"
app:title="@string/Theme" />

View file

@ -23,7 +23,7 @@ buildscript {
commonsCompressVer = '1.12'
youtubedlAndroidVer = "7222fe9637"
workVer = "2.8.1"
composeVer = "1.4.0-alpha02"
composeVer = '1.4.2'
kotlinVer = "1.7.21"
coroutineVer = "1.6.4"
retrofitVer = "2.9.0"
@ -41,8 +41,8 @@ buildscript {
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
id 'org.jetbrains.kotlin.android' version '1.7.21' apply false
id "org.jetbrains.kotlin.plugin.serialization" version "1.7.21" apply false
id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
id "org.jetbrains.kotlin.plugin.serialization" version "1.8.10" apply false
id 'com.android.test' version '7.4.2' apply false
}