added themed icon for a12 and up & added ability to change scheduled time of a download
This commit is contained in:
parent
69b1e55ebd
commit
075dcf874d
19 changed files with 224 additions and 134 deletions
|
|
@ -20,6 +20,7 @@ import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.card.MaterialCardView
|
import com.google.android.material.card.MaterialCardView
|
||||||
import com.google.android.material.progressindicator.LinearProgressIndicator
|
import com.google.android.material.progressindicator.LinearProgressIndicator
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
import java.util.zip.GZIPOutputStream
|
||||||
|
|
||||||
class ActiveDownloadAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter<DownloadItem?, ActiveDownloadAdapter.ViewHolder>(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) {
|
class ActiveDownloadAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter<DownloadItem?, ActiveDownloadAdapter.ViewHolder>(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) {
|
||||||
private val onItemClickListener: OnItemClickListener
|
private val onItemClickListener: OnItemClickListener
|
||||||
|
|
@ -103,6 +104,7 @@ class ActiveDownloadAdapter(onItemClickListener: OnItemClickListener, activity:
|
||||||
|
|
||||||
val fileSize = card.findViewById<TextView>(R.id.file_size)
|
val fileSize = card.findViewById<TextView>(R.id.file_size)
|
||||||
fileSize.text = fileUtil.convertFileSize(item.format.filesize)
|
fileSize.text = fileUtil.convertFileSize(item.format.filesize)
|
||||||
|
if (fileSize.text == "?") fileSize.visibility = View.GONE
|
||||||
|
|
||||||
//OUTPUT
|
//OUTPUT
|
||||||
val output = card.findViewById<TextView>(R.id.output)
|
val output = card.findViewById<TextView>(R.id.output)
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,9 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity:
|
||||||
itemUrl.text = item.url
|
itemUrl.text = item.url
|
||||||
|
|
||||||
val formatNote = card.findViewById<Chip>(R.id.format_note)
|
val formatNote = card.findViewById<Chip>(R.id.format_note)
|
||||||
formatNote!!.text = item.format.format_note.uppercase()
|
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
||||||
|
View.GONE
|
||||||
|
else formatNote!!.text = item.format.format_note.uppercase()
|
||||||
|
|
||||||
val codec = card.findViewById<Chip>(R.id.codec)
|
val codec = card.findViewById<Chip>(R.id.codec)
|
||||||
val codecText =
|
val codecText =
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ import com.deniscerri.ytdlnis.database.models.ResultItem
|
||||||
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel
|
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel
|
||||||
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type
|
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type
|
||||||
import com.deniscerri.ytdlnis.receiver.ShareActivity
|
import com.deniscerri.ytdlnis.receiver.ShareActivity
|
||||||
|
import com.deniscerri.ytdlnis.util.FileUtil
|
||||||
|
import com.deniscerri.ytdlnis.util.UiUtil
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
|
|
@ -34,6 +36,7 @@ import com.google.android.material.timepicker.TimeFormat
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,11 +47,13 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val
|
||||||
private lateinit var downloadViewModel: DownloadViewModel
|
private lateinit var downloadViewModel: DownloadViewModel
|
||||||
private lateinit var behavior: BottomSheetBehavior<View>
|
private lateinit var behavior: BottomSheetBehavior<View>
|
||||||
private lateinit var commandTemplateDao : CommandTemplateDao
|
private lateinit var commandTemplateDao : CommandTemplateDao
|
||||||
|
private lateinit var uiUtil: UiUtil
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java]
|
downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java]
|
||||||
commandTemplateDao = DBManager.getInstance(requireContext()).commandTemplateDao
|
commandTemplateDao = DBManager.getInstance(requireContext()).commandTemplateDao
|
||||||
|
uiUtil = UiUtil(FileUtil())
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("RestrictedApi")
|
@SuppressLint("RestrictedApi")
|
||||||
|
|
@ -139,43 +144,12 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val
|
||||||
|
|
||||||
val scheduleBtn = view.findViewById<MaterialButton>(R.id.bottomsheet_schedule_button)
|
val scheduleBtn = view.findViewById<MaterialButton>(R.id.bottomsheet_schedule_button)
|
||||||
scheduleBtn.setOnClickListener{
|
scheduleBtn.setOnClickListener{
|
||||||
val currentDate = Calendar.getInstance()
|
uiUtil.showDatePicker(fragmentManager) {
|
||||||
val date = Calendar.getInstance()
|
val item: DownloadItem = getDownloadItem();
|
||||||
|
item.downloadStartTime = it.timeInMillis
|
||||||
val datepicker = MaterialDatePicker.Builder.datePicker()
|
downloadViewModel.queueDownloads(listOf(item))
|
||||||
.setCalendarConstraints(
|
dismiss()
|
||||||
CalendarConstraints.Builder()
|
|
||||||
.setValidator(DateValidatorPointForward.now())
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
|
|
||||||
.build()
|
|
||||||
|
|
||||||
datepicker.addOnPositiveButtonClickListener{
|
|
||||||
date.timeInMillis = it
|
|
||||||
|
|
||||||
|
|
||||||
val timepicker = MaterialTimePicker.Builder()
|
|
||||||
.setTimeFormat(TimeFormat.CLOCK_24H)
|
|
||||||
.setHour(currentDate.get(Calendar.HOUR_OF_DAY))
|
|
||||||
.setMinute(currentDate.get(Calendar.MINUTE))
|
|
||||||
.build()
|
|
||||||
|
|
||||||
timepicker.addOnPositiveButtonClickListener{
|
|
||||||
date[Calendar.HOUR_OF_DAY] = timepicker.hour
|
|
||||||
date[Calendar.MINUTE] = timepicker.minute
|
|
||||||
|
|
||||||
|
|
||||||
val item: DownloadItem = getDownloadItem();
|
|
||||||
item.downloadStartTime = date.timeInMillis
|
|
||||||
downloadViewModel.queueDownloads(listOf(item))
|
|
||||||
dismiss()
|
|
||||||
}
|
|
||||||
timepicker.show(fragmentManager, "timepicker")
|
|
||||||
|
|
||||||
}
|
}
|
||||||
datepicker.show(fragmentManager, "datepicker")
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val download = view.findViewById<Button>(R.id.bottomsheet_download_button)
|
val download = view.findViewById<Button>(R.id.bottomsheet_download_button)
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ class FormatSelectionBottomSheetDialog(private val item: DownloadItem, private v
|
||||||
Type.audio -> formats.filter { it.format_note.contains("audio", ignoreCase = true) }
|
Type.audio -> formats.filter { it.format_note.contains("audio", ignoreCase = true) }
|
||||||
else -> formats.filter { !it.format_note.contains("audio", ignoreCase = true) }
|
else -> formats.filter { !it.format_note.contains("audio", ignoreCase = true) }
|
||||||
}
|
}
|
||||||
|
if (formats.isEmpty()) throw Exception()
|
||||||
addFormatsToView(linearLayout)
|
addFormatsToView(linearLayout)
|
||||||
refreshBtn.visibility = View.GONE
|
refreshBtn.visibility = View.GONE
|
||||||
}catch (e: Exception){
|
}catch (e: Exception){
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import com.deniscerri.ytdlnis.util.FileUtil
|
||||||
import com.deniscerri.ytdlnis.util.UiUtil
|
import com.deniscerri.ytdlnis.util.UiUtil
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
|
import com.google.android.material.chip.Chip
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -113,9 +114,12 @@ class CancelledDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClic
|
||||||
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
||||||
}
|
}
|
||||||
|
|
||||||
val formatNote = bottomSheet.findViewById<TextView>(R.id.format_note)
|
val time = bottomSheet.findViewById<Chip>(R.id.time)
|
||||||
val codec = bottomSheet.findViewById<TextView>(R.id.codec)
|
val formatNote = bottomSheet.findViewById<Chip>(R.id.format_note)
|
||||||
val fileSize = bottomSheet.findViewById<TextView>(R.id.file_size)
|
val codec = bottomSheet.findViewById<Chip>(R.id.codec)
|
||||||
|
val fileSize = bottomSheet.findViewById<Chip>(R.id.file_size)
|
||||||
|
|
||||||
|
time!!.visibility = View.GONE
|
||||||
|
|
||||||
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
||||||
View.GONE
|
View.GONE
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import com.deniscerri.ytdlnis.util.FileUtil
|
||||||
import com.deniscerri.ytdlnis.util.UiUtil
|
import com.deniscerri.ytdlnis.util.UiUtil
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
|
import com.google.android.material.chip.Chip
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|
@ -115,10 +116,13 @@ class ErroredDownloadsFragment() : Fragment(), GenericDownloadAdapter.OnItemClic
|
||||||
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val time = bottomSheet.findViewById<Chip>(R.id.time)
|
||||||
val formatNote = bottomSheet.findViewById<TextView>(R.id.format_note)
|
val formatNote = bottomSheet.findViewById<TextView>(R.id.format_note)
|
||||||
val codec = bottomSheet.findViewById<TextView>(R.id.codec)
|
val codec = bottomSheet.findViewById<TextView>(R.id.codec)
|
||||||
val fileSize = bottomSheet.findViewById<TextView>(R.id.file_size)
|
val fileSize = bottomSheet.findViewById<TextView>(R.id.file_size)
|
||||||
|
|
||||||
|
time!!.visibility = View.GONE
|
||||||
|
|
||||||
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
||||||
View.GONE
|
View.GONE
|
||||||
else formatNote!!.text = item.format.format_note
|
else formatNote!!.text = item.format.format_note
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
|
import android.text.format.DateUtils
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.view.View.*
|
import android.view.View.*
|
||||||
|
|
@ -400,10 +401,18 @@ class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener{
|
||||||
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val time = bottomSheet!!.findViewById<TextView>(R.id.time)
|
||||||
val formatNote = bottomSheet!!.findViewById<TextView>(R.id.format_note)
|
val formatNote = bottomSheet!!.findViewById<TextView>(R.id.format_note)
|
||||||
val codec = bottomSheet!!.findViewById<TextView>(R.id.codec)
|
val codec = bottomSheet!!.findViewById<TextView>(R.id.codec)
|
||||||
val fileSize = bottomSheet!!.findViewById<TextView>(R.id.file_size)
|
val fileSize = bottomSheet!!.findViewById<TextView>(R.id.file_size)
|
||||||
|
|
||||||
|
time!!.text = DateUtils.getRelativeTimeSpanString(
|
||||||
|
item.time * 1000L,
|
||||||
|
System.currentTimeMillis(),
|
||||||
|
DateUtils.MINUTE_IN_MILLIS
|
||||||
|
)
|
||||||
|
time.isClickable = false
|
||||||
|
|
||||||
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility = GONE
|
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility = GONE
|
||||||
else formatNote!!.text = item.format.format_note
|
else formatNote!!.text = item.format.format_note
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.deniscerri.ytdlnis.ui.downloads
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.text.format.DateUtils
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
|
@ -10,6 +11,7 @@ import android.view.Window
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
|
@ -28,10 +30,12 @@ import com.deniscerri.ytdlnis.util.NotificationUtil
|
||||||
import com.deniscerri.ytdlnis.util.UiUtil
|
import com.deniscerri.ytdlnis.util.UiUtil
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
|
import com.google.android.material.chip.Chip
|
||||||
import com.yausername.youtubedl_android.YoutubeDL
|
import com.yausername.youtubedl_android.YoutubeDL
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import org.w3c.dom.Text
|
||||||
|
|
||||||
|
|
||||||
class QueuedDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClickListener {
|
class QueuedDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClickListener {
|
||||||
|
|
@ -119,9 +123,30 @@ class QueuedDownloadsFragment : Fragment(), GenericDownloadAdapter.OnItemClickLi
|
||||||
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
btn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_terminal)
|
||||||
}
|
}
|
||||||
|
|
||||||
val formatNote = bottomSheet.findViewById<TextView>(R.id.format_note)
|
val time = bottomSheet.findViewById<Chip>(R.id.time)
|
||||||
val codec = bottomSheet.findViewById<TextView>(R.id.codec)
|
val formatNote = bottomSheet.findViewById<Chip>(R.id.format_note)
|
||||||
val fileSize = bottomSheet.findViewById<TextView>(R.id.file_size)
|
val codec = bottomSheet.findViewById<Chip>(R.id.codec)
|
||||||
|
val fileSize = bottomSheet.findViewById<Chip>(R.id.file_size)
|
||||||
|
|
||||||
|
if (item.downloadStartTime <= System.currentTimeMillis() / 1000) time!!.visibility = View.GONE
|
||||||
|
else {
|
||||||
|
time!!.text = DateUtils.getRelativeTimeSpanString(
|
||||||
|
item.downloadStartTime,
|
||||||
|
System.currentTimeMillis(),
|
||||||
|
DateUtils.MINUTE_IN_MILLIS
|
||||||
|
)
|
||||||
|
|
||||||
|
time.setOnClickListener {
|
||||||
|
uiUtil.showDatePicker(parentFragmentManager) {
|
||||||
|
bottomSheet.dismiss()
|
||||||
|
Toast.makeText(context, getString(R.string.download_rescheduled_to) + " " + it.time, Toast.LENGTH_LONG).show()
|
||||||
|
downloadViewModel.deleteDownload(item)
|
||||||
|
item.downloadStartTime = it.timeInMillis
|
||||||
|
WorkManager.getInstance(requireContext()).cancelUniqueWork(item.id.toString())
|
||||||
|
downloadViewModel.queueDownloads(listOf(item))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
if (item.format.format_note == "?" || item.format.format_note == "") formatNote!!.visibility =
|
||||||
View.GONE
|
View.GONE
|
||||||
|
|
|
||||||
|
|
@ -18,17 +18,25 @@ import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.appcompat.content.res.AppCompatResources
|
import androidx.appcompat.content.res.AppCompatResources
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import com.deniscerri.ytdlnis.R
|
import com.deniscerri.ytdlnis.R
|
||||||
import com.deniscerri.ytdlnis.database.models.CommandTemplate
|
import com.deniscerri.ytdlnis.database.models.CommandTemplate
|
||||||
|
import com.deniscerri.ytdlnis.database.models.DownloadItem
|
||||||
import com.deniscerri.ytdlnis.database.models.Format
|
import com.deniscerri.ytdlnis.database.models.Format
|
||||||
import com.deniscerri.ytdlnis.database.models.TemplateShortcut
|
import com.deniscerri.ytdlnis.database.models.TemplateShortcut
|
||||||
import com.deniscerri.ytdlnis.database.viewmodel.CommandTemplateViewModel
|
import com.deniscerri.ytdlnis.database.viewmodel.CommandTemplateViewModel
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import com.google.android.material.chip.ChipGroup
|
import com.google.android.material.chip.ChipGroup
|
||||||
|
import com.google.android.material.datepicker.CalendarConstraints
|
||||||
|
import com.google.android.material.datepicker.DateValidatorPointForward
|
||||||
|
import com.google.android.material.datepicker.MaterialDatePicker
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
|
import com.google.android.material.timepicker.MaterialTimePicker
|
||||||
|
import com.google.android.material.timepicker.TimeFormat
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
class UiUtil(private val fileUtil: FileUtil) {
|
class UiUtil(private val fileUtil: FileUtil) {
|
||||||
fun populateFormatCard(formatCard : ConstraintLayout, chosenFormat: Format){
|
fun populateFormatCard(formatCard : ConstraintLayout, chosenFormat: Format){
|
||||||
|
|
@ -214,4 +222,38 @@ class UiUtil(private val fileUtil: FileUtil) {
|
||||||
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||||
fragmentContext.startActivity(i)
|
fragmentContext.startActivity(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun showDatePicker(fragmentManager: FragmentManager , onSubmit : (chosenDate: Calendar) -> Unit ){
|
||||||
|
val currentDate = Calendar.getInstance()
|
||||||
|
val date = Calendar.getInstance()
|
||||||
|
|
||||||
|
val datePicker = MaterialDatePicker.Builder.datePicker()
|
||||||
|
.setCalendarConstraints(
|
||||||
|
CalendarConstraints.Builder()
|
||||||
|
.setValidator(DateValidatorPointForward.now())
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
|
||||||
|
.build()
|
||||||
|
|
||||||
|
datePicker.addOnPositiveButtonClickListener{
|
||||||
|
date.timeInMillis = it
|
||||||
|
|
||||||
|
|
||||||
|
val timepicker = MaterialTimePicker.Builder()
|
||||||
|
.setTimeFormat(TimeFormat.CLOCK_24H)
|
||||||
|
.setHour(currentDate.get(Calendar.HOUR_OF_DAY))
|
||||||
|
.setMinute(currentDate.get(Calendar.MINUTE))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
timepicker.addOnPositiveButtonClickListener{
|
||||||
|
date[Calendar.HOUR_OF_DAY] = timepicker.hour
|
||||||
|
date[Calendar.MINUTE] = timepicker.minute
|
||||||
|
onSubmit(date)
|
||||||
|
}
|
||||||
|
timepicker.show(fragmentManager, "timepicker")
|
||||||
|
|
||||||
|
}
|
||||||
|
datePicker.show(fragmentManager, "datepicker")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<path
|
<path
|
||||||
android:name="path"
|
android:name="path"
|
||||||
android:pathData="M 73.977 46.512 C 75.734 48.222 76.781 50.662 76.872 53.315 C 76.945 55.412 77 57.629 77 59.482 C 77 61.335 76.945 63.552 76.872 65.649 C 76.718 70.133 73.835 74.006 69.404 74.78 C 65.706 75.426 60.571 76 54 76 C 47.429 76 42.294 75.426 38.596 74.78 C 34.165 74.006 31.282 70.133 31.128 65.649 C 31.055 63.552 31 61.335 31 59.482 C 31 57.629 31.055 55.412 31.128 53.315 C 31.282 48.831 34.165 44.957 38.596 44.183 C 41.576 43.663 45.489 43.189 50.335 43.025 C 51.232 37.348 56.145 33 62.083 33 C 68.658 33 73.977 38.331 73.977 44.895 L 73.977 46.512 Z M 52.345 42.976 C 52.886 42.968 53.438 42.963 54 42.963 L 54.086 42.963 C 53.495 42.964 52.915 42.969 52.347 42.978 C 52.224 43.601 52.16 44.244 52.16 44.902 L 52.16 51.756 L 48.489 51.76 C 46.26 51.763 44.867 54.174 45.98 56.106 L 51.541 65.764 C 52.656 67.699 55.448 67.701 56.565 65.767 L 62.15 56.095 C 63.267 54.161 61.869 51.744 59.636 51.747 L 55.803 51.752 L 55.803 44.902 L 55.803 44.895 L 55.782 44.895 C 55.782 41.413 58.603 38.59 62.083 38.59 C 65.26 38.59 67.888 40.943 68.322 44.003 C 68.695 44.062 69.056 44.122 69.404 44.183 C 70.345 44.347 71.216 44.651 72.006 45.071 L 72.006 44.895 C 72.006 39.412 67.563 34.967 62.083 34.967 C 57.259 34.967 53.239 38.411 52.345 42.976 Z M 66.248 43.705 C 65.731 41.885 64.058 40.557 62.083 40.557 C 60.356 40.557 58.86 41.571 58.166 43.043 C 61.248 43.162 63.941 43.407 66.248 43.705 Z"
|
android:pathData="M 73.977 46.512 C 75.734 48.222 76.781 50.662 76.872 53.315 C 76.945 55.412 77 57.629 77 59.482 C 77 61.335 76.945 63.552 76.872 65.649 C 76.718 70.133 73.835 74.006 69.404 74.78 C 65.706 75.426 60.571 76 54 76 C 47.429 76 42.294 75.426 38.596 74.78 C 34.165 74.006 31.282 70.133 31.128 65.649 C 31.055 63.552 31 61.335 31 59.482 C 31 57.629 31.055 55.412 31.128 53.315 C 31.282 48.831 34.165 44.957 38.596 44.183 C 41.576 43.663 45.489 43.189 50.335 43.025 C 51.232 37.348 56.145 33 62.083 33 C 68.658 33 73.977 38.331 73.977 44.895 L 73.977 46.512 Z M 52.345 42.976 C 52.886 42.968 53.438 42.963 54 42.963 L 54.086 42.963 C 53.495 42.964 52.915 42.969 52.347 42.978 C 52.224 43.601 52.16 44.244 52.16 44.902 L 52.16 51.756 L 48.489 51.76 C 46.26 51.763 44.867 54.174 45.98 56.106 L 51.541 65.764 C 52.656 67.699 55.448 67.701 56.565 65.767 L 62.15 56.095 C 63.267 54.161 61.869 51.744 59.636 51.747 L 55.803 51.752 L 55.803 44.902 L 55.803 44.895 L 55.782 44.895 C 55.782 41.413 58.603 38.59 62.083 38.59 C 65.26 38.59 67.888 40.943 68.322 44.003 C 68.695 44.062 69.056 44.122 69.404 44.183 C 70.345 44.347 71.216 44.651 72.006 45.071 L 72.006 44.895 C 72.006 39.412 67.563 34.967 62.083 34.967 C 57.259 34.967 53.239 38.411 52.345 42.976 Z M 66.248 43.705 C 65.731 41.885 64.058 40.557 62.083 40.557 C 60.356 40.557 58.86 41.571 58.166 43.043 C 61.248 43.162 63.941 43.407 66.248 43.705 Z"
|
||||||
android:fillColor="#d43c3c"
|
android:fillColor="@color/icon_fg"
|
||||||
android:strokeWidth="1"
|
android:strokeWidth="1"
|
||||||
android:fillType="evenOdd"/>
|
android:fillType="evenOdd"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
|
|
||||||
11
app/src/main/res/drawable/image_gradient_shape.xml
Normal file
11
app/src/main/res/drawable/image_gradient_shape.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle" >
|
||||||
|
|
||||||
|
<gradient
|
||||||
|
android:angle="90"
|
||||||
|
android:endColor="#00ffffff"
|
||||||
|
android:startColor="?attr/colorSurfaceContainer"
|
||||||
|
android:centerColor="#00ffffff" />
|
||||||
|
|
||||||
|
<corners android:radius="0dp" />
|
||||||
|
</shape>
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
android:id="@+id/image_view"
|
android:id="@+id/image_view"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
|
android:foreground="@drawable/image_gradient_shape"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
|
@ -45,109 +46,97 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/title"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="0dp"
|
||||||
android:paddingStart="10dp"
|
android:orientation="vertical"
|
||||||
android:paddingTop="10dp"
|
|
||||||
android:paddingEnd="10dp"
|
|
||||||
android:paddingBottom="10dp"
|
|
||||||
android:shadowColor="@color/black"
|
|
||||||
android:shadowDx="4"
|
|
||||||
android:shadowDy="4"
|
|
||||||
android:shadowRadius="2"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="15sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/active_download_cancel"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/author"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="bottom"
|
|
||||||
android:paddingLeft="10dp"
|
|
||||||
android:paddingTop="10dp"
|
|
||||||
android:paddingRight="10dp"
|
|
||||||
android:paddingBottom="10dp"
|
|
||||||
android:shadowColor="@color/black"
|
|
||||||
android:shadowDx="4"
|
|
||||||
android:shadowDy="4"
|
|
||||||
android:shadowRadius="1.5"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="12sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
|
app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/active_download_cancel"
|
app:layout_constraintEnd_toStartOf="@+id/active_download_cancel"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/title" />
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/format_note"
|
android:id="@+id/title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingVertical="10dp"
|
android:ellipsize="end"
|
||||||
android:paddingStart="10dp"
|
android:maxLines="2"
|
||||||
android:paddingEnd="0dp"
|
android:paddingStart="10dp"
|
||||||
android:textSize="15sp"
|
android:scrollbars="none"
|
||||||
android:shadowColor="@color/black"
|
android:paddingTop="10dp"
|
||||||
android:shadowDx="4"
|
android:paddingEnd="10dp"
|
||||||
android:shadowDy="4"
|
android:shadowColor="@color/black"
|
||||||
android:shadowRadius="2"
|
android:shadowDx="4"
|
||||||
android:textColor="@color/white"
|
android:shadowDy="4"
|
||||||
android:textStyle="bold"
|
android:shadowRadius="2"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/output"
|
android:textColor="@color/white"
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
android:textSize="17sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<LinearLayout
|
<TextView
|
||||||
|
android:id="@+id/author"
|
||||||
|
android:layout_width="296dp"
|
||||||
|
android:layout_height="20dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="bottom"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:paddingStart="10dp"
|
||||||
|
android:scrollbars="none"
|
||||||
|
android:paddingEnd="10dp"
|
||||||
|
android:paddingBottom="5dp"
|
||||||
|
android:shadowColor="@color/black"
|
||||||
|
android:shadowDx="4"
|
||||||
|
android:shadowDy="4"
|
||||||
|
android:shadowRadius="1.5"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.chip.ChipGroup
|
||||||
android:id="@+id/linearLayout2"
|
android:id="@+id/linearLayout2"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingHorizontal="10dp"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="10dp"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/output"
|
app:layout_constraintBottom_toTopOf="@+id/output"
|
||||||
app:layout_constraintStart_toEndOf="@+id/format_note">
|
app:layout_constraintStart_toStartOf="parent">
|
||||||
|
|
||||||
|
<com.google.android.material.chip.Chip
|
||||||
|
android:id="@+id/format_note"
|
||||||
|
style="@style/Widget.Material3.FloatingActionButton.Large.Secondary"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clickable="false"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/output"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<com.google.android.material.chip.Chip
|
||||||
android:id="@+id/codec"
|
android:id="@+id/codec"
|
||||||
style="@style/Widget.Material3.FloatingActionButton.Large.Secondary"
|
style="@style/Widget.Material3.FloatingActionButton.Large.Secondary"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="5dp"
|
|
||||||
android:background="?attr/colorSecondary"
|
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:gravity="center"
|
|
||||||
android:minWidth="30dp"
|
|
||||||
android:paddingHorizontal="10dp"
|
|
||||||
app:cornerRadius="10dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<com.google.android.material.chip.Chip
|
||||||
android:id="@+id/file_size"
|
android:id="@+id/file_size"
|
||||||
style="@style/Widget.Material3.FloatingActionButton.Large.Tertiary"
|
style="@style/Widget.Material3.FloatingActionButton.Large.Tertiary"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="5dp"
|
|
||||||
android:background="?attr/colorSecondary"
|
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:gravity="center"
|
|
||||||
android:minWidth="30dp"
|
|
||||||
android:paddingHorizontal="10dp"
|
|
||||||
app:cornerRadius="10dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
</LinearLayout>
|
</com.google.android.material.chip.ChipGroup>
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
@ -159,12 +148,7 @@
|
||||||
android:paddingRight="10dp"
|
android:paddingRight="10dp"
|
||||||
android:paddingBottom="10dp"
|
android:paddingBottom="10dp"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:textStyle="bold"
|
android:fontFamily="monospace"
|
||||||
android:shadowColor="@color/black"
|
|
||||||
android:shadowDx="4"
|
|
||||||
android:shadowDy="4"
|
|
||||||
android:shadowRadius="2"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintVertical_bias="0.2" />
|
app:layout_constraintVertical_bias="0.375" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,20 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/url">
|
app:layout_constraintTop_toBottomOf="@+id/url">
|
||||||
|
|
||||||
|
<com.google.android.material.chip.Chip
|
||||||
|
android:id="@+id/time"
|
||||||
|
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clickable="true"
|
||||||
|
android:minWidth="30dp"
|
||||||
|
app:cornerRadius="10dp"
|
||||||
|
app:chipIcon="@drawable/ic_clock"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
android:focusable="true" />
|
||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
android:id="@+id/format_note"
|
android:id="@+id/format_note"
|
||||||
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
|
style="@style/Widget.Material3.FloatingActionButton.Large.Primary"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/search_suggestions_constraintLayout"
|
android:id="@+id/search_suggestions_constraintLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
@ -30,34 +30,32 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
style="?attr/materialIconButtonStyle"
|
|
||||||
android:layout_width="40dp"
|
|
||||||
android:scrollbars="none"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="0.01"
|
|
||||||
android:src="@drawable/ic_search"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/suggestion_text"
|
android:id="@+id/suggestion_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:focusable="true"
|
||||||
|
android:clickable="true"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:paddingStart="20dp"
|
|
||||||
android:paddingEnd="20dp"
|
android:paddingEnd="20dp"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold"
|
||||||
|
android:drawablePadding="20dp"
|
||||||
|
app:drawableLeftCompat="@drawable/ic_search" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
style="?attr/materialIconButtonStyle"
|
style="?attr/materialIconButtonStyle"
|
||||||
android:id="@+id/set_search_query_button"
|
android:id="@+id/set_search_query_button"
|
||||||
android:layout_width="40dp"
|
android:layout_width="40dp"
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:focusable="true"
|
||||||
|
android:clickable="true"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:src="@drawable/ic_arrow_up"
|
android:src="@drawable/ic_arrow_up"
|
||||||
android:layout_weight="0.01"
|
android:layout_weight="0.01"
|
||||||
|
|
|
||||||
9
app/src/main/res/values-night-v31/colors.xml
Normal file
9
app/src/main/res/values-night-v31/colors.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="white">#FFFFFF</color>
|
||||||
|
<color name="black">#000000</color>
|
||||||
|
<color name="grey">#323232</color>
|
||||||
|
<color name="light_grey">#A6A6A6</color>
|
||||||
|
<color name="icon_bg">@android:color/system_neutral1_800</color>
|
||||||
|
<color name="icon_fg">@android:color/system_accent1_100</color>
|
||||||
|
</resources>
|
||||||
9
app/src/main/res/values-notnight-v31/colors.xml
Normal file
9
app/src/main/res/values-notnight-v31/colors.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="white">#FFFFFF</color>
|
||||||
|
<color name="black">#000000</color>
|
||||||
|
<color name="grey">#323232</color>
|
||||||
|
<color name="light_grey">#A6A6A6</color>
|
||||||
|
<color name="icon_bg">@android:color/system_accent1_100</color>
|
||||||
|
<color name="icon_fg">@android:color/system_neutral1_700</color>
|
||||||
|
</resources>
|
||||||
|
|
@ -5,4 +5,5 @@
|
||||||
<color name="grey">#323232</color>
|
<color name="grey">#323232</color>
|
||||||
<color name="light_grey">#A6A6A6</color>
|
<color name="light_grey">#A6A6A6</color>
|
||||||
<color name="icon_bg">@android:color/background_dark</color>
|
<color name="icon_bg">@android:color/background_dark</color>
|
||||||
|
<color name="icon_fg">#d43c3c</color>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -219,4 +219,5 @@
|
||||||
<string name="help_translate_summary">Translate this app on your language using Weblate</string>
|
<string name="help_translate_summary">Translate this app on your language using Weblate</string>
|
||||||
<string name="workmanager_updated">You need to restart the app and have no active downloads for this preference to take effect!</string>
|
<string name="workmanager_updated">You need to restart the app and have no active downloads for this preference to take effect!</string>
|
||||||
<string name="restart">Restart</string>
|
<string name="restart">Restart</string>
|
||||||
|
<string name="download_rescheduled_to">Download rescheduled to:</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in a new issue