commit
b70cd181d6
236 changed files with 1105 additions and 2486 deletions
|
@ -111,9 +111,9 @@ dependencies {
|
|||
implementation "androidx.core:core-ktx:$core_version"
|
||||
implementation 'androidx.palette:palette-ktx:1.0.0'
|
||||
|
||||
implementation 'androidx.mediarouter:mediarouter:1.3.0'
|
||||
implementation 'androidx.mediarouter:mediarouter:1.3.1'
|
||||
//Cast Dependencies
|
||||
normalImplementation 'com.google.android.gms:play-services-cast-framework:21.0.1'
|
||||
normalImplementation 'com.google.android.gms:play-services-cast-framework:21.1.0'
|
||||
//WebServer by NanoHttpd
|
||||
normalImplementation "org.nanohttpd:nanohttpd:2.3.1"
|
||||
|
||||
|
@ -130,7 +130,7 @@ dependencies {
|
|||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
|
||||
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
|
||||
|
||||
implementation "androidx.core:core-splashscreen:1.0.0-rc01"
|
||||
implementation "androidx.core:core-splashscreen:1.0.0"
|
||||
|
||||
normalImplementation 'com.google.android.play:feature-delivery:2.0.0'
|
||||
normalImplementation 'com.google.android.play:review:2.0.0'
|
||||
|
|
4
app/src/fdroid/res/values/donottranslate.xml
Normal file
4
app/src/fdroid/res/values/donottranslate.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="download_policy">never</string>
|
||||
</resources>
|
|
@ -21,6 +21,7 @@
|
|||
android:name="android.permission.WRITE_SETTINGS"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
|
||||
<uses-permission
|
||||
android:name="android.permission.BLUETOOTH_CONNECT"
|
||||
android:usesPermissionFlags="neverForLocation"
|
||||
|
@ -54,7 +55,6 @@
|
|||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
|
@ -124,7 +124,8 @@
|
|||
<activity android:name=".activities.PermissionActivity" />
|
||||
<activity
|
||||
android:name=".activities.LockScreenActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:excludeFromRecents="true"
|
||||
android:launchMode="singleTask"
|
||||
android:showOnLockScreen="true" />
|
||||
<activity
|
||||
android:name=".fragments.backup.RestoreActivity"
|
||||
|
|
|
@ -3,36 +3,36 @@
|
|||
"name": "Hemanth Savarala",
|
||||
"summary": "Lead Developer & Designer",
|
||||
"link": "https://github.com/h4h13",
|
||||
"image": "https://i.imgur.com/AoVs9oj.jpg"
|
||||
"image": "hemanth.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Prathamesh More",
|
||||
"summary": "Developer",
|
||||
"link": "https://prathameshmm02.github.io",
|
||||
"image": "https://i.imgur.com/ZHoOrHx.jpg"
|
||||
"image": "pratham.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Daksh P. Jain",
|
||||
"summary": "Website & GitHub Maintainer",
|
||||
"link": "https://daksh.eu.org",
|
||||
"image": "https://i.imgur.com/fnYpg65.jpg"
|
||||
"image": "daksh.png"
|
||||
},
|
||||
{
|
||||
"name": "Milind Goel",
|
||||
"summary": "Support Representative & Moderator",
|
||||
"link": "https://milindgoel.vercel.app",
|
||||
"image": "https://i.imgur.com/hWL8t48.jpg"
|
||||
"image": "milind.png"
|
||||
},
|
||||
{
|
||||
"name": "Lennart Glamann",
|
||||
"summary": "Play Store Banner & Images",
|
||||
"link": "https://telegram.me/FlixbusLennart",
|
||||
"image": "https://i.imgur.com/Q5Nsx1R.jpg"
|
||||
"image": "lenny.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Haythem Gataa",
|
||||
"summary": "App Logo & Banners",
|
||||
"link": "https://dribbble.com/haythemgataa",
|
||||
"image": "https://i.imgur.com/g5RuIZq.jpg"
|
||||
"image": "haythem.jpg"
|
||||
}
|
||||
]
|
||||
|
|
BIN
app/src/main/assets/images/daksh.png
Normal file
BIN
app/src/main/assets/images/daksh.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
BIN
app/src/main/assets/images/haythem.jpg
Normal file
BIN
app/src/main/assets/images/haythem.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
BIN
app/src/main/assets/images/hemanth.jpg
Normal file
BIN
app/src/main/assets/images/hemanth.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
app/src/main/assets/images/lenny.jpg
Normal file
BIN
app/src/main/assets/images/lenny.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
BIN
app/src/main/assets/images/milind.png
Normal file
BIN
app/src/main/assets/images/milind.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
BIN
app/src/main/assets/images/pratham.jpg
Normal file
BIN
app/src/main/assets/images/pratham.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
|
@ -62,6 +62,14 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<h5>July 10, 2022</h5>
|
||||
<h2>v6.0.3<span class="tag"><i>Beta</i></span></h2>
|
||||
<h3>Fixed</h3>
|
||||
<ul>
|
||||
<li>Migrated icons to Material symbols</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h5>June 21, 2022</h5>
|
||||
<h2>v6.0.2<span class="tag"><i>Beta</i></span></h2>
|
||||
|
|
|
@ -84,12 +84,11 @@ class LockScreenActivity : AbsMusicServiceActivity() {
|
|||
private fun lockScreenInit() {
|
||||
if (VersionUtils.hasOreoMR1()) {
|
||||
setShowWhenLocked(true)
|
||||
val keyguardManager = getSystemService<KeyguardManager>()
|
||||
keyguardManager?.requestDismissKeyguard(this, null)
|
||||
//setTurnScreenOn(true)
|
||||
} else {
|
||||
this.window.addFlags(
|
||||
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
|
||||
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
|
||||
window.addFlags(
|
||||
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
|
||||
// or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,18 +19,15 @@ import android.view.MenuItem
|
|||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||
import code.name.monkey.retromusic.activities.base.AbsThemeActivity
|
||||
import code.name.monkey.retromusic.databinding.ActivityDonationBinding
|
||||
import code.name.monkey.retromusic.extensions.openUrl
|
||||
import code.name.monkey.retromusic.extensions.setStatusBarColorAuto
|
||||
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
|
||||
|
||||
class SupportDevelopmentActivity : AbsThemeActivity() {
|
||||
|
||||
lateinit var binding: ActivityDonationBinding
|
||||
|
||||
companion object {
|
||||
val TAG: String = SupportDevelopmentActivity::class.java.simpleName
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (item.itemId == android.R.id.home) {
|
||||
onBackPressed()
|
||||
|
@ -49,6 +46,12 @@ class SupportDevelopmentActivity : AbsThemeActivity() {
|
|||
|
||||
setupToolbar()
|
||||
|
||||
binding.paypal.setOnClickListener {
|
||||
openUrl(PAYPAL_URL)
|
||||
}
|
||||
binding.kofi.setOnClickListener {
|
||||
openUrl(KOFI_URL)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupToolbar() {
|
||||
|
@ -56,4 +59,9 @@ class SupportDevelopmentActivity : AbsThemeActivity() {
|
|||
ToolbarContentTintHelper.colorBackButton(binding.toolbar)
|
||||
setSupportActionBar(binding.toolbar)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val PAYPAL_URL = "https://paypal.me/quickersilver"
|
||||
const val KOFI_URL = "https://ko-fi.com/quickersilver"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,53 +19,17 @@ import android.content.ClipboardManager
|
|||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import androidx.annotation.StringDef
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil
|
||||
import code.name.monkey.appthemehelper.util.TintHelper
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.activities.base.AbsThemeActivity
|
||||
import code.name.monkey.retromusic.activities.bugreport.model.DeviceInfo
|
||||
import code.name.monkey.retromusic.activities.bugreport.model.Report
|
||||
import code.name.monkey.retromusic.activities.bugreport.model.github.ExtraInfo
|
||||
import code.name.monkey.retromusic.activities.bugreport.model.github.GithubLogin
|
||||
import code.name.monkey.retromusic.activities.bugreport.model.github.GithubTarget
|
||||
import code.name.monkey.retromusic.databinding.ActivityBugReportBinding
|
||||
import code.name.monkey.retromusic.extensions.accentColor
|
||||
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
||||
import code.name.monkey.retromusic.extensions.showToast
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.eclipse.egit.github.core.Issue
|
||||
import org.eclipse.egit.github.core.client.GitHubClient
|
||||
import org.eclipse.egit.github.core.client.RequestException
|
||||
import org.eclipse.egit.github.core.service.IssueService
|
||||
import java.io.IOException
|
||||
|
||||
private const val RESULT_SUCCESS = "RESULT_OK"
|
||||
private const val RESULT_BAD_CREDENTIALS = "RESULT_BAD_CREDENTIALS"
|
||||
private const val RESULT_INVALID_TOKEN = "RESULT_INVALID_TOKEN"
|
||||
private const val RESULT_ISSUES_NOT_ENABLED = "RESULT_ISSUES_NOT_ENABLED"
|
||||
private const val RESULT_UNKNOWN = "RESULT_UNKNOWN"
|
||||
|
||||
@StringDef(
|
||||
RESULT_SUCCESS,
|
||||
RESULT_BAD_CREDENTIALS,
|
||||
RESULT_INVALID_TOKEN,
|
||||
RESULT_ISSUES_NOT_ENABLED,
|
||||
RESULT_UNKNOWN
|
||||
)
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
private annotation class Result
|
||||
|
||||
open class BugReportActivity : AbsThemeActivity() {
|
||||
|
||||
|
@ -91,72 +55,19 @@ open class BugReportActivity : AbsThemeActivity() {
|
|||
setSupportActionBar(binding.toolbar)
|
||||
ToolbarContentTintHelper.colorBackButton(binding.toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
TintHelper.setTintAuto(binding.cardReport.optionUseAccount, accentColor, false)
|
||||
binding.cardReport.optionUseAccount.setOnClickListener {
|
||||
binding.cardReport.inputTitle.isEnabled = true
|
||||
binding.cardReport.inputDescription.isEnabled = true
|
||||
binding.cardReport.inputUsername.isEnabled = true
|
||||
binding.cardReport.inputPassword.isEnabled = true
|
||||
|
||||
binding.cardReport.optionAnonymous.isChecked = false
|
||||
binding.sendFab.hide(object : FloatingActionButton.OnVisibilityChangedListener() {
|
||||
override fun onHidden(fab: FloatingActionButton?) {
|
||||
super.onHidden(fab)
|
||||
binding.sendFab.setImageResource(R.drawable.ic_send)
|
||||
binding.sendFab.show()
|
||||
}
|
||||
})
|
||||
}
|
||||
TintHelper.setTintAuto(binding.cardReport.optionAnonymous, accentColor, false)
|
||||
binding.cardReport.optionAnonymous.setOnClickListener {
|
||||
binding.cardReport.inputTitle.isEnabled = false
|
||||
binding.cardReport.inputDescription.isEnabled = false
|
||||
binding.cardReport.inputUsername.isEnabled = false
|
||||
binding.cardReport.inputPassword.isEnabled = false
|
||||
|
||||
binding.cardReport.optionUseAccount.isChecked = false
|
||||
binding.sendFab.hide(object : FloatingActionButton.OnVisibilityChangedListener() {
|
||||
override fun onHidden(fab: FloatingActionButton?) {
|
||||
super.onHidden(fab)
|
||||
binding.sendFab.setImageResource(R.drawable.ic_open_in_browser)
|
||||
binding.sendFab.show()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
binding.cardReport.inputPassword.setOnEditorActionListener { _, actionId, _ ->
|
||||
if (actionId == EditorInfo.IME_ACTION_SEND) {
|
||||
reportIssue()
|
||||
return@setOnEditorActionListener true
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
binding.cardDeviceInfo.airTextDeviceInfo.setOnClickListener { copyDeviceInfoToClipBoard() }
|
||||
|
||||
TintHelper.setTintAuto(binding.sendFab, accentColor, true)
|
||||
binding.sendFab.setOnClickListener { reportIssue() }
|
||||
|
||||
MaterialUtil.setTint(binding.cardReport.inputLayoutTitle, false)
|
||||
MaterialUtil.setTint(binding.cardReport.inputLayoutDescription, false)
|
||||
MaterialUtil.setTint(binding.cardReport.inputLayoutUsername, false)
|
||||
MaterialUtil.setTint(binding.cardReport.inputLayoutPassword, false)
|
||||
}
|
||||
|
||||
private fun reportIssue() {
|
||||
if (binding.cardReport.optionUseAccount.isChecked) {
|
||||
if (!validateInput()) return
|
||||
val username = binding.cardReport.inputUsername.text.toString()
|
||||
val password = binding.cardReport.inputPassword.text.toString()
|
||||
sendBugReport(GithubLogin(username, password))
|
||||
} else {
|
||||
copyDeviceInfoToClipBoard()
|
||||
|
||||
val i = Intent(Intent.ACTION_VIEW)
|
||||
i.data = ISSUE_TRACKER_LINK.toUri()
|
||||
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
startActivity(i)
|
||||
}
|
||||
copyDeviceInfoToClipBoard()
|
||||
val i = Intent(Intent.ACTION_VIEW)
|
||||
i.data = ISSUE_TRACKER_LINK.toUri()
|
||||
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
startActivity(i)
|
||||
}
|
||||
|
||||
private fun copyDeviceInfoToClipBoard() {
|
||||
|
@ -166,67 +77,6 @@ open class BugReportActivity : AbsThemeActivity() {
|
|||
showToast(R.string.copied_device_info_to_clipboard)
|
||||
}
|
||||
|
||||
private fun validateInput(): Boolean {
|
||||
var hasErrors = false
|
||||
|
||||
if (binding.cardReport.optionUseAccount.isChecked) {
|
||||
if (binding.cardReport.inputUsername.text.isNullOrEmpty()) {
|
||||
setError(binding.cardReport.inputLayoutUsername, R.string.bug_report_no_username)
|
||||
hasErrors = true
|
||||
} else {
|
||||
removeError(binding.cardReport.inputLayoutUsername)
|
||||
}
|
||||
|
||||
if (binding.cardReport.inputPassword.text.isNullOrEmpty()) {
|
||||
setError(binding.cardReport.inputLayoutPassword, R.string.bug_report_no_password)
|
||||
hasErrors = true
|
||||
} else {
|
||||
removeError(binding.cardReport.inputLayoutPassword)
|
||||
}
|
||||
}
|
||||
|
||||
if (binding.cardReport.inputTitle.text.isNullOrEmpty()) {
|
||||
setError(binding.cardReport.inputLayoutTitle, R.string.bug_report_no_title)
|
||||
hasErrors = true
|
||||
} else {
|
||||
removeError(binding.cardReport.inputLayoutTitle)
|
||||
}
|
||||
|
||||
if (binding.cardReport.inputDescription.text.isNullOrEmpty()) {
|
||||
setError(binding.cardReport.inputLayoutDescription, R.string.bug_report_no_description)
|
||||
hasErrors = true
|
||||
} else {
|
||||
removeError(binding.cardReport.inputLayoutDescription)
|
||||
}
|
||||
|
||||
return !hasErrors
|
||||
}
|
||||
|
||||
private fun setError(editTextLayout: TextInputLayout, @StringRes errorRes: Int) {
|
||||
editTextLayout.error = getString(errorRes)
|
||||
}
|
||||
|
||||
private fun removeError(editTextLayout: TextInputLayout) {
|
||||
editTextLayout.error = null
|
||||
}
|
||||
|
||||
private fun sendBugReport(login: GithubLogin) {
|
||||
if (!validateInput()) return
|
||||
|
||||
val bugTitle = binding.cardReport.inputTitle.text.toString()
|
||||
val bugDescription = binding.cardReport.inputDescription.text.toString()
|
||||
|
||||
val extraInfo = ExtraInfo()
|
||||
onSaveExtraInfo()
|
||||
|
||||
val report = Report(bugTitle, bugDescription, deviceInfo, extraInfo)
|
||||
val target = GithubTarget("RetroMusicPlayer", "RetroMusicPlayer")
|
||||
|
||||
reportIssue(report, target, login)
|
||||
}
|
||||
|
||||
private fun onSaveExtraInfo() {}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (item.itemId == android.R.id.home) {
|
||||
onBackPressed()
|
||||
|
@ -234,83 +84,8 @@ open class BugReportActivity : AbsThemeActivity() {
|
|||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
private fun reportIssue(
|
||||
report: Report,
|
||||
target: GithubTarget,
|
||||
login: GithubLogin
|
||||
) {
|
||||
val client: GitHubClient = if (login.shouldUseApiToken()) {
|
||||
GitHubClient().setOAuth2Token(login.apiToken)
|
||||
} else {
|
||||
GitHubClient().setCredentials(login.username, login.password)
|
||||
}
|
||||
|
||||
val issue = Issue().setTitle(report.title).setBody(report.getDescription())
|
||||
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
val result = try {
|
||||
IssueService(client).createIssue(target.username, target.repository, issue)
|
||||
RESULT_SUCCESS
|
||||
} catch (e: RequestException) {
|
||||
when (e.status) {
|
||||
STATUS_BAD_CREDENTIALS -> {
|
||||
if (login.shouldUseApiToken()) RESULT_INVALID_TOKEN else RESULT_BAD_CREDENTIALS
|
||||
}
|
||||
STATUS_ISSUES_NOT_ENABLED -> RESULT_ISSUES_NOT_ENABLED
|
||||
else -> {
|
||||
RESULT_UNKNOWN
|
||||
throw e
|
||||
}
|
||||
}
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
RESULT_UNKNOWN
|
||||
}
|
||||
|
||||
withContext(Dispatchers.Main) {
|
||||
val activity = this@BugReportActivity
|
||||
when (result) {
|
||||
RESULT_SUCCESS -> MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.bug_report_success)
|
||||
.setPositiveButton(android.R.string.ok) { _, _ -> tryToFinishActivity() }
|
||||
.show()
|
||||
RESULT_BAD_CREDENTIALS -> MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.bug_report_failed)
|
||||
.setMessage(R.string.bug_report_failed_wrong_credentials)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show()
|
||||
RESULT_INVALID_TOKEN -> MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.bug_report_failed)
|
||||
.setMessage(R.string.bug_report_failed_invalid_token)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show()
|
||||
RESULT_ISSUES_NOT_ENABLED -> MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.bug_report_failed)
|
||||
.setMessage(R.string.bug_report_failed_issues_not_available)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show()
|
||||
else -> MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.bug_report_failed)
|
||||
.setMessage(R.string.bug_report_failed_unknown)
|
||||
.setPositiveButton(android.R.string.ok) { _, _ -> tryToFinishActivity() }
|
||||
.setNegativeButton(android.R.string.cancel) { _, _ -> tryToFinishActivity() }
|
||||
.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun tryToFinishActivity() {
|
||||
if (!isFinishing) {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
private const val STATUS_BAD_CREDENTIALS = 401
|
||||
private const val STATUS_ISSUES_NOT_ENABLED = 410
|
||||
private const val ISSUE_TRACKER_LINK =
|
||||
"https://github.com/RetroMusicPlayer/RetroMusicPlayer"
|
||||
"https://github.com/RetroMusicPlayer/RetroMusicPlayer/issues"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import androidx.core.net.toUri
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.extensions.openUrl
|
||||
|
@ -26,7 +27,7 @@ import code.name.monkey.retromusic.views.RetroShapeableImageView
|
|||
import com.bumptech.glide.Glide
|
||||
|
||||
class ContributorAdapter(
|
||||
private var contributors: List<Contributor>
|
||||
private var contributors: List<Contributor>,
|
||||
) : RecyclerView.Adapter<ContributorAdapter.ViewHolder>() {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
|
@ -86,10 +87,9 @@ class ContributorAdapter(
|
|||
title.text = contributor.name
|
||||
text.text = contributor.summary
|
||||
Glide.with(image.context)
|
||||
.load(contributor.image)
|
||||
.load("file:///android_asset/images/${contributor.image}".toUri())
|
||||
.error(R.drawable.ic_account)
|
||||
.placeholder(R.drawable.ic_account)
|
||||
.dontAnimate()
|
||||
.into(image)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ class HomeAdapter(private val activity: AppCompatActivity) :
|
|||
val songAdapter = SongAdapter(
|
||||
activity,
|
||||
home.arrayList as MutableList<Song>,
|
||||
R.layout.item_favourite_card, null
|
||||
R.layout.item_favourite_card
|
||||
)
|
||||
layoutManager = linearLayoutManager()
|
||||
adapter = songAdapter
|
||||
|
@ -178,10 +178,10 @@ class HomeAdapter(private val activity: AppCompatActivity) :
|
|||
}
|
||||
|
||||
private fun artistsAdapter(artists: List<Artist>) =
|
||||
ArtistAdapter(activity, artists, PreferenceUtil.homeArtistGridStyle, null, this)
|
||||
ArtistAdapter(activity, artists, PreferenceUtil.homeArtistGridStyle, this)
|
||||
|
||||
private fun albumAdapter(albums: List<Album>) =
|
||||
AlbumAdapter(activity, albums, PreferenceUtil.homeAlbumGridStyle, null, this)
|
||||
AlbumAdapter(activity, albums, PreferenceUtil.homeAlbumGridStyle, this)
|
||||
|
||||
private fun gridLayoutManager() =
|
||||
GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false)
|
||||
|
|
|
@ -29,7 +29,6 @@ import code.name.monkey.retromusic.extensions.getTintedDrawable
|
|||
import code.name.monkey.retromusic.glide.GlideApp
|
||||
import code.name.monkey.retromusic.glide.RetroGlideExtension
|
||||
import code.name.monkey.retromusic.glide.audiocover.AudioFileCover
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.interfaces.ICallbacks
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
|
@ -44,10 +43,9 @@ class SongFileAdapter(
|
|||
override val activity: AppCompatActivity,
|
||||
private var dataSet: List<File>,
|
||||
private val itemLayoutRes: Int,
|
||||
private val iCallbacks: ICallbacks?,
|
||||
iCabHolder: ICabHolder?,
|
||||
private val iCallbacks: ICallbacks?
|
||||
) : AbsMultiSelectAdapter<SongFileAdapter.ViewHolder, File>(
|
||||
activity, iCabHolder, R.menu.menu_media_selection
|
||||
activity, R.menu.menu_media_selection
|
||||
), PopupTextProvider {
|
||||
|
||||
init {
|
||||
|
@ -110,7 +108,7 @@ class SongFileAdapter(
|
|||
)
|
||||
)
|
||||
} else {
|
||||
val error = activity.getTintedDrawable(R.drawable.ic_file_music, iconColor)
|
||||
val error = activity.getTintedDrawable(R.drawable.ic_audio_file, iconColor)
|
||||
GlideApp.with(activity)
|
||||
.load(AudioFileCover(file.path))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
|
|
|
@ -30,7 +30,6 @@ import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
|||
import code.name.monkey.retromusic.helper.SortOrder
|
||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Album
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
|
@ -42,11 +41,9 @@ open class AlbumAdapter(
|
|||
override val activity: FragmentActivity,
|
||||
var dataSet: List<Album>,
|
||||
var itemLayoutRes: Int,
|
||||
iCabHolder: ICabHolder?,
|
||||
val listener: IAlbumClickListener?
|
||||
) : AbsMultiSelectAdapter<AlbumAdapter.ViewHolder, Album>(
|
||||
activity,
|
||||
iCabHolder,
|
||||
R.menu.menu_media_selection
|
||||
), PopupTextProvider {
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ import code.name.monkey.retromusic.glide.RetroGlideExtension
|
|||
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
||||
import code.name.monkey.retromusic.helper.HorizontalAdapterHelper
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Album
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
|
@ -30,10 +29,9 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
|||
class HorizontalAlbumAdapter(
|
||||
activity: FragmentActivity,
|
||||
dataSet: List<Album>,
|
||||
ICabHolder: ICabHolder?,
|
||||
albumClickListener: IAlbumClickListener
|
||||
) : AlbumAdapter(
|
||||
activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, ICabHolder, albumClickListener
|
||||
activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, albumClickListener
|
||||
) {
|
||||
|
||||
override fun createViewHolder(view: View, viewType: Int): ViewHolder {
|
||||
|
|
|
@ -33,7 +33,6 @@ import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
|
|||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumArtistClickListener
|
||||
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Artist
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
|
@ -45,12 +44,10 @@ class ArtistAdapter(
|
|||
override val activity: FragmentActivity,
|
||||
var dataSet: List<Artist>,
|
||||
var itemLayoutRes: Int,
|
||||
val ICabHolder: ICabHolder?,
|
||||
val IArtistClickListener: IArtistClickListener,
|
||||
val IAlbumArtistClickListener: IAlbumArtistClickListener? = null
|
||||
) : AbsMultiSelectAdapter<ArtistAdapter.ViewHolder, Artist>(
|
||||
activity, ICabHolder, R.menu.menu_media_selection
|
||||
), PopupTextProvider {
|
||||
) : AbsMultiSelectAdapter<ArtistAdapter.ViewHolder, Artist>(activity, R.menu.menu_media_selection),
|
||||
PopupTextProvider {
|
||||
|
||||
var albumArtistsOnly = false
|
||||
|
||||
|
|
|
@ -1,56 +1,58 @@
|
|||
package code.name.monkey.retromusic.adapter.base
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Color
|
||||
import android.view.ActionMode
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.annotation.MenuRes
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import code.name.monkey.retromusic.databinding.NumberRollViewBinding
|
||||
import code.name.monkey.retromusic.views.NumberRollView
|
||||
|
||||
abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
||||
open val activity: FragmentActivity, private val ICabHolder: ICabHolder?, @MenuRes menuRes: Int
|
||||
) : RecyclerView.Adapter<V>(), ICabCallback {
|
||||
private var cab: AttachedCab? = null
|
||||
open val activity: FragmentActivity, @MenuRes menuRes: Int,
|
||||
) : RecyclerView.Adapter<V>(), ActionMode.Callback {
|
||||
var actionMode: ActionMode? = null
|
||||
private val checked: MutableList<I>
|
||||
private var menuRes: Int
|
||||
override fun onCabCreated(cab: AttachedCab, menu: Menu): Boolean {
|
||||
activity.window.statusBarColor =
|
||||
RetroColorUtil.shiftBackgroundColor(activity.surfaceColor())
|
||||
|
||||
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
|
||||
val inflater = mode?.menuInflater
|
||||
inflater?.inflate(menuRes, menu)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onCabFinished(cab: AttachedCab): Boolean {
|
||||
clearChecked()
|
||||
activity.window.statusBarColor = when {
|
||||
VersionUtils.hasMarshmallow() -> Color.TRANSPARENT
|
||||
else -> Color.BLACK
|
||||
}
|
||||
return true
|
||||
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onCabItemClicked(item: MenuItem): Boolean {
|
||||
if (item.itemId == R.id.action_multi_select_adapter_check_all) {
|
||||
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
|
||||
if (item?.itemId == R.id.action_multi_select_adapter_check_all) {
|
||||
checkAll()
|
||||
} else {
|
||||
onMultipleItemAction(item, ArrayList(checked))
|
||||
cab?.destroy()
|
||||
onMultipleItemAction(item!!, ArrayList(checked))
|
||||
actionMode?.finish()
|
||||
clearChecked()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onDestroyActionMode(mode: ActionMode?) {
|
||||
clearChecked()
|
||||
activity.window.statusBarColor = when {
|
||||
VersionUtils.hasMarshmallow() -> Color.TRANSPARENT
|
||||
else -> Color.BLACK
|
||||
}
|
||||
actionMode = null
|
||||
onBackPressedCallback.remove()
|
||||
}
|
||||
|
||||
private fun checkAll() {
|
||||
if (ICabHolder != null) {
|
||||
if (actionMode != null) {
|
||||
checked.clear()
|
||||
for (i in 0 until itemCount) {
|
||||
val identifier = getIdentifier(i)
|
||||
|
@ -72,7 +74,7 @@ abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
|||
}
|
||||
|
||||
protected val isInQuickSelectMode: Boolean
|
||||
get() = cab != null && cab!!.isActive()
|
||||
get() = actionMode != null
|
||||
|
||||
protected abstract fun onMultipleItemAction(menuItem: MenuItem, selection: List<I>)
|
||||
protected fun setMultiSelectMenuRes(@MenuRes menuRes: Int) {
|
||||
|
@ -80,16 +82,13 @@ abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
|||
}
|
||||
|
||||
protected fun toggleChecked(position: Int): Boolean {
|
||||
if (ICabHolder != null) {
|
||||
val identifier = getIdentifier(position) ?: return false
|
||||
if (!checked.remove(identifier)) {
|
||||
checked.add(identifier)
|
||||
}
|
||||
notifyItemChanged(position)
|
||||
updateCab()
|
||||
return true
|
||||
val identifier = getIdentifier(position) ?: return false
|
||||
if (!checked.remove(identifier)) {
|
||||
checked.add(identifier)
|
||||
}
|
||||
return false
|
||||
notifyItemChanged(position)
|
||||
updateCab()
|
||||
return true
|
||||
}
|
||||
|
||||
private fun clearChecked() {
|
||||
|
@ -97,23 +96,21 @@ abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
|||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
@SuppressLint("StringFormatInvalid", "StringFormatMatches")
|
||||
private fun updateCab() {
|
||||
if (ICabHolder != null) {
|
||||
if (cab == null || !cab!!.isActive()) {
|
||||
cab = ICabHolder.openCab(menuRes, this)
|
||||
if (actionMode == null) {
|
||||
actionMode = activity.startActionMode(this)?.apply {
|
||||
customView = NumberRollViewBinding.inflate(activity.layoutInflater).root
|
||||
}
|
||||
val size = checked.size
|
||||
when {
|
||||
size <= 0 -> {
|
||||
cab?.destroy()
|
||||
}
|
||||
size == 1 -> {
|
||||
cab?.title(literal = getName(checked[0]))
|
||||
}
|
||||
else -> {
|
||||
cab?.title(literal = activity.getString(R.string.x_selected, size))
|
||||
}
|
||||
activity.onBackPressedDispatcher.addCallback(onBackPressedCallback)
|
||||
}
|
||||
val size = checked.size
|
||||
when {
|
||||
size <= 0 -> {
|
||||
actionMode?.finish()
|
||||
}
|
||||
else -> {
|
||||
actionMode?.customView?.findViewById<NumberRollView>(R.id.selection_mode_number)
|
||||
?.setNumber(size, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -122,4 +119,13 @@ abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
|||
checked = ArrayList()
|
||||
this.menuRes = menuRes
|
||||
}
|
||||
|
||||
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
if (actionMode != null) {
|
||||
actionMode?.finish()
|
||||
remove()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@
|
|||
package code.name.monkey.retromusic.adapter.playlist
|
||||
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
|
@ -23,6 +24,8 @@ import androidx.appcompat.widget.PopupMenu
|
|||
import androidx.core.view.isGone
|
||||
import androidx.core.view.setPadding
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.appthemehelper.util.TintHelper
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
||||
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
||||
|
@ -35,7 +38,6 @@ import code.name.monkey.retromusic.glide.playlistPreview.PlaylistPreview
|
|||
import code.name.monkey.retromusic.helper.SortOrder.PlaylistSortOrder
|
||||
import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper
|
||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.interfaces.IPlaylistClickListener
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
|
@ -46,11 +48,9 @@ class PlaylistAdapter(
|
|||
override val activity: FragmentActivity,
|
||||
var dataSet: List<PlaylistWithSongs>,
|
||||
private var itemLayoutRes: Int,
|
||||
ICabHolder: ICabHolder?,
|
||||
private val listener: IPlaylistClickListener
|
||||
) : AbsMultiSelectAdapter<PlaylistAdapter.ViewHolder, PlaylistWithSongs>(
|
||||
activity,
|
||||
ICabHolder,
|
||||
R.menu.menu_playlists_selection
|
||||
), PopupTextProvider {
|
||||
|
||||
|
@ -72,7 +72,7 @@ class PlaylistAdapter(
|
|||
return createViewHolder(view)
|
||||
}
|
||||
|
||||
fun createViewHolder(view: View): ViewHolder {
|
||||
private fun createViewHolder(view: View): ViewHolder {
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
|
@ -101,17 +101,25 @@ class PlaylistAdapter(
|
|||
holder.title?.text = getPlaylistTitle(playlist.playlistEntity)
|
||||
holder.text?.text = getPlaylistText(playlist)
|
||||
holder.menu?.isGone = isChecked(playlist)
|
||||
GlideApp.with(activity)
|
||||
.load(
|
||||
if (itemLayoutRes == R.layout.item_list) {
|
||||
holder.image?.setPadding(activity.dipToPix(8F).toInt())
|
||||
R.drawable.ic_playlist_play
|
||||
} else PlaylistPreview(playlist)
|
||||
)
|
||||
.playlistOptions()
|
||||
.into(holder.image!!)
|
||||
if (itemLayoutRes == R.layout.item_list) {
|
||||
holder.image?.setPadding(activity.dipToPix(8F).toInt())
|
||||
holder.image?.setImageDrawable(getIconRes())
|
||||
} else {
|
||||
GlideApp.with(activity)
|
||||
.load(
|
||||
PlaylistPreview(playlist)
|
||||
)
|
||||
.playlistOptions()
|
||||
.into(holder.image!!)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getIconRes(): Drawable = TintHelper.createTintedDrawable(
|
||||
activity,
|
||||
R.drawable.ic_playlist_play,
|
||||
ATHUtil.resolveColor(activity, android.R.attr.colorControlNormal)
|
||||
)
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return dataSet.size
|
||||
}
|
||||
|
|
|
@ -21,15 +21,13 @@ import androidx.annotation.LayoutRes
|
|||
import androidx.fragment.app.FragmentActivity
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
|
||||
abstract class AbsOffsetSongAdapter(
|
||||
activity: FragmentActivity,
|
||||
dataSet: MutableList<Song>,
|
||||
@LayoutRes itemLayoutRes: Int,
|
||||
ICabHolder: ICabHolder?
|
||||
) : SongAdapter(activity, dataSet, itemLayoutRes, ICabHolder) {
|
||||
@LayoutRes itemLayoutRes: Int
|
||||
) : SongAdapter(activity, dataSet, itemLayoutRes) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SongAdapter.ViewHolder {
|
||||
if (viewType == OFFSET_ITEM) {
|
||||
|
|
|
@ -28,7 +28,6 @@ import code.name.monkey.retromusic.extensions.accentColor
|
|||
import code.name.monkey.retromusic.extensions.accentOutlineColor
|
||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter
|
||||
|
@ -42,8 +41,7 @@ class OrderablePlaylistSongAdapter(
|
|||
activity: FragmentActivity,
|
||||
dataSet: MutableList<Song>,
|
||||
itemLayoutRes: Int,
|
||||
ICabHolder: ICabHolder?,
|
||||
) : AbsOffsetSongAdapter(activity, dataSet, itemLayoutRes, ICabHolder),
|
||||
) : AbsOffsetSongAdapter(activity, dataSet, itemLayoutRes),
|
||||
DraggableItemAdapter<OrderablePlaylistSongAdapter.ViewHolder> {
|
||||
|
||||
val libraryViewModel: LibraryViewModel by activity.viewModel()
|
||||
|
|
|
@ -43,9 +43,8 @@ class PlayingQueueAdapter(
|
|||
dataSet: MutableList<Song>,
|
||||
private var current: Int,
|
||||
itemLayoutRes: Int,
|
||||
) : SongAdapter(
|
||||
activity, dataSet, itemLayoutRes, null
|
||||
), DraggableItemAdapter<PlayingQueueAdapter.ViewHolder>,
|
||||
) : SongAdapter(activity, dataSet, itemLayoutRes),
|
||||
DraggableItemAdapter<PlayingQueueAdapter.ViewHolder>,
|
||||
SwipeableItemAdapter<PlayingQueueAdapter.ViewHolder>,
|
||||
PopupTextProvider {
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ import code.name.monkey.retromusic.R
|
|||
import code.name.monkey.retromusic.extensions.accentColor
|
||||
import code.name.monkey.retromusic.extensions.accentOutlineColor
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
|
@ -30,9 +29,8 @@ import com.google.android.material.button.MaterialButton
|
|||
class ShuffleButtonSongAdapter(
|
||||
activity: FragmentActivity,
|
||||
dataSet: MutableList<Song>,
|
||||
itemLayoutRes: Int,
|
||||
ICabHolder: ICabHolder?
|
||||
) : AbsOffsetSongAdapter(activity, dataSet, itemLayoutRes, ICabHolder) {
|
||||
itemLayoutRes: Int
|
||||
) : AbsOffsetSongAdapter(activity, dataSet, itemLayoutRes) {
|
||||
|
||||
|
||||
override fun createViewHolder(view: View): SongAdapter.ViewHolder {
|
||||
|
|
|
@ -17,16 +17,14 @@ package code.name.monkey.retromusic.adapter.song
|
|||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
|
||||
class SimpleSongAdapter(
|
||||
context: FragmentActivity,
|
||||
songs: ArrayList<Song>,
|
||||
layoutRes: Int,
|
||||
ICabHolder: ICabHolder?
|
||||
) : SongAdapter(context, songs, layoutRes, ICabHolder) {
|
||||
layoutRes: Int
|
||||
) : SongAdapter(context, songs, layoutRes) {
|
||||
|
||||
override fun swapDataSet(dataSet: List<Song>) {
|
||||
this.dataSet = dataSet.toMutableList()
|
||||
|
|
|
@ -36,8 +36,6 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
|||
import code.name.monkey.retromusic.helper.SortOrder
|
||||
import code.name.monkey.retromusic.helper.menu.SongMenuHelper
|
||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
|
@ -53,13 +51,11 @@ open class SongAdapter(
|
|||
override val activity: FragmentActivity,
|
||||
var dataSet: MutableList<Song>,
|
||||
protected var itemLayoutRes: Int,
|
||||
ICabHolder: ICabHolder?,
|
||||
showSectionName: Boolean = true
|
||||
) : AbsMultiSelectAdapter<SongAdapter.ViewHolder, Song>(
|
||||
activity,
|
||||
ICabHolder,
|
||||
R.menu.menu_media_selection
|
||||
), ICabCallback, PopupTextProvider {
|
||||
), PopupTextProvider {
|
||||
|
||||
private var showSectionName = true
|
||||
|
||||
|
@ -217,6 +213,7 @@ open class SongAdapter(
|
|||
}
|
||||
|
||||
override fun onLongClick(v: View?): Boolean {
|
||||
println("Long click")
|
||||
return toggleChecked(layoutPosition)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
*/
|
||||
package code.name.monkey.retromusic.extensions
|
||||
|
||||
import android.R
|
||||
import android.animation.Animator
|
||||
import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
|
@ -72,7 +71,7 @@ fun EditText.appHandleColor(): EditText {
|
|||
|
||||
fun NavigationBarView.setItemColors(@ColorInt normalColor: Int, @ColorInt selectedColor: Int) {
|
||||
val csl = ColorStateList(
|
||||
arrayOf(intArrayOf(-R.attr.state_checked), intArrayOf(R.attr.state_checked)),
|
||||
arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)),
|
||||
intArrayOf(normalColor, selectedColor)
|
||||
)
|
||||
itemIconTintList = csl
|
||||
|
|
|
@ -19,7 +19,6 @@ import android.content.Intent
|
|||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import androidx.activity.addCallback
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.core.text.parseAsHtml
|
||||
|
@ -31,7 +30,6 @@ import androidx.navigation.fragment.navArgs
|
|||
import androidx.recyclerview.widget.DefaultItemAnimator
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.transition.Fade
|
||||
import code.name.monkey.appthemehelper.common.ATHToolbarActivity.getToolbarBackgroundColor
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||
import code.name.monkey.retromusic.EXTRA_ALBUM_ID
|
||||
|
@ -56,18 +54,12 @@ import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder.Companion
|
|||
import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder.Companion.SONG_TRACK_LIST
|
||||
import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder.Companion.SONG_Z_A
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Album
|
||||
import code.name.monkey.retromusic.model.Artist
|
||||
import code.name.monkey.retromusic.network.Result
|
||||
import code.name.monkey.retromusic.network.model.LastFmAlbum
|
||||
import code.name.monkey.retromusic.repository.RealRepository
|
||||
import code.name.monkey.retromusic.util.*
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.google.android.material.transition.MaterialArcMotion
|
||||
import com.google.android.material.transition.MaterialContainerTransform
|
||||
|
@ -80,7 +72,7 @@ import org.koin.core.parameter.parametersOf
|
|||
import java.text.Collator
|
||||
|
||||
class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_details),
|
||||
IAlbumClickListener, ICabHolder {
|
||||
IAlbumClickListener {
|
||||
|
||||
private var _binding: FragmentAlbumDetailsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
@ -110,20 +102,18 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_binding = FragmentAlbumDetailsBinding.bind(view)
|
||||
enterTransition = Fade()
|
||||
exitTransition = Fade()
|
||||
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
||||
mainActivity.setSupportActionBar(binding.toolbar)
|
||||
|
||||
binding.toolbar.title = " "
|
||||
binding.albumCoverContainer.transitionName = arguments.extraAlbumId.toString()
|
||||
postponeEnterTransition()
|
||||
detailsViewModel.getAlbum().observe(viewLifecycleOwner) {
|
||||
detailsViewModel.getAlbum().observe(viewLifecycleOwner) { album ->
|
||||
view.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
}
|
||||
albumArtistExists = !it.albumArtist.isNullOrEmpty()
|
||||
showAlbum(it)
|
||||
albumArtistExists = !album.albumArtist.isNullOrEmpty()
|
||||
showAlbum(album)
|
||||
binding.artistImage.transitionName = if (albumArtistExists) {
|
||||
album.albumArtist
|
||||
} else {
|
||||
|
@ -170,12 +160,6 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
}
|
||||
}
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
if (!handleBackPress()) {
|
||||
remove()
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
binding.appBarLayout?.statusBarForeground =
|
||||
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
|
||||
}
|
||||
|
@ -189,8 +173,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
simpleSongAdapter = SimpleSongAdapter(
|
||||
requireActivity() as AppCompatActivity,
|
||||
ArrayList(),
|
||||
R.layout.item_song,
|
||||
this
|
||||
R.layout.item_song
|
||||
)
|
||||
binding.fragmentAlbumContent.recyclerView.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
|
@ -264,7 +247,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
String.format(getString(R.string.label_more_from), album.artistName)
|
||||
|
||||
val albumAdapter =
|
||||
HorizontalAlbumAdapter(requireActivity() as AppCompatActivity, albums, this, this)
|
||||
HorizontalAlbumAdapter(requireActivity() as AppCompatActivity, albums, this)
|
||||
binding.fragmentAlbumContent.moreRecyclerView.layoutManager = GridLayoutManager(
|
||||
requireContext(),
|
||||
1,
|
||||
|
@ -452,38 +435,6 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
|||
simpleSongAdapter.swapDataSet(album.songs)
|
||||
}
|
||||
|
||||
private fun handleBackPress(): Boolean {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
|
|
|
@ -16,7 +16,6 @@ package code.name.monkey.retromusic.fragments.albums
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import androidx.activity.addCallback
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.navigation.fragment.FragmentNavigatorExtras
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -25,26 +24,18 @@ import code.name.monkey.retromusic.EXTRA_ALBUM_ID
|
|||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.album.AlbumAdapter
|
||||
import code.name.monkey.retromusic.extensions.setUpMediaRouteButton
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.fragments.GridStyle
|
||||
import code.name.monkey.retromusic.fragments.ReloadType
|
||||
import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.helper.SortOrder.AlbumSortOrder
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
|
||||
class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager>(),
|
||||
IAlbumClickListener, ICabHolder {
|
||||
IAlbumClickListener {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
@ -54,12 +45,6 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridL
|
|||
else
|
||||
adapter?.swapDataSet(listOf())
|
||||
}
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
if (!handleBackPress()) {
|
||||
remove()
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override val titleRes: Int
|
||||
|
@ -92,7 +77,6 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridL
|
|||
requireActivity(),
|
||||
dataSet,
|
||||
itemLayoutRes(),
|
||||
this,
|
||||
this
|
||||
)
|
||||
}
|
||||
|
@ -348,40 +332,6 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridL
|
|||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
if (cab.isActive()) {
|
||||
cab.destroy()
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleBackPress(): Boolean {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
adapter?.actionMode?.finish()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import android.view.Menu
|
|||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.activity.addCallback
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.os.bundleOf
|
||||
|
@ -22,7 +21,6 @@ import androidx.navigation.fragment.findNavController
|
|||
import androidx.recyclerview.widget.DefaultItemAnimator
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.transition.Fade
|
||||
import code.name.monkey.retromusic.EXTRA_ALBUM_ID
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter
|
||||
|
@ -37,17 +35,11 @@ import code.name.monkey.retromusic.glide.SingleColorTarget
|
|||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.helper.SortOrder
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Artist
|
||||
import code.name.monkey.retromusic.network.Result
|
||||
import code.name.monkey.retromusic.network.model.LastFmArtist
|
||||
import code.name.monkey.retromusic.repository.RealRepository
|
||||
import code.name.monkey.retromusic.util.*
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.google.android.material.transition.MaterialContainerTransform
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -57,7 +49,7 @@ import org.koin.android.ext.android.get
|
|||
import java.util.*
|
||||
|
||||
abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_artist_details),
|
||||
IAlbumClickListener, ICabHolder {
|
||||
IAlbumClickListener {
|
||||
private var _binding: FragmentArtistDetailsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
|
@ -86,8 +78,6 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_binding = FragmentArtistDetailsBinding.bind(view)
|
||||
enterTransition = Fade()
|
||||
exitTransition = Fade()
|
||||
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
||||
mainActivity.setSupportActionBar(binding.toolbar)
|
||||
binding.toolbar.title = null
|
||||
|
@ -115,26 +105,19 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
|||
binding.fragmentArtistContent.biographyText.maxLines = 4
|
||||
}
|
||||
}
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
if (!handleBackPress()) {
|
||||
remove()
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
setupSongSortButton()
|
||||
binding.appBarLayout?.statusBarForeground =
|
||||
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
|
||||
}
|
||||
|
||||
private fun setupRecyclerView() {
|
||||
albumAdapter = HorizontalAlbumAdapter(requireActivity(), ArrayList(), this, this)
|
||||
albumAdapter = HorizontalAlbumAdapter(requireActivity(), ArrayList(), this)
|
||||
binding.fragmentArtistContent.albumRecyclerView.apply {
|
||||
itemAnimator = DefaultItemAnimator()
|
||||
layoutManager = GridLayoutManager(this.context, 1, GridLayoutManager.HORIZONTAL, false)
|
||||
adapter = albumAdapter
|
||||
}
|
||||
songAdapter = SimpleSongAdapter(requireActivity(), ArrayList(), R.layout.item_song, this)
|
||||
songAdapter = SimpleSongAdapter(requireActivity(), ArrayList(), R.layout.item_song)
|
||||
binding.fragmentArtistContent.recyclerView.apply {
|
||||
itemAnimator = DefaultItemAnimator()
|
||||
layoutManager = LinearLayoutManager(this.context)
|
||||
|
@ -277,8 +260,12 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
|||
R.id.action_set_artist_image -> {
|
||||
val intent = Intent(Intent.ACTION_GET_CONTENT)
|
||||
intent.type = "image/*"
|
||||
selectImageLauncher.launch(Intent.createChooser(intent,
|
||||
getString(R.string.pick_from_local_storage)))
|
||||
selectImageLauncher.launch(
|
||||
Intent.createChooser(
|
||||
intent,
|
||||
getString(R.string.pick_from_local_storage)
|
||||
)
|
||||
)
|
||||
return true
|
||||
}
|
||||
R.id.action_reset_artist_image -> {
|
||||
|
@ -359,40 +346,6 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
|||
inflater.inflate(R.menu.menu_artist_detail, menu)
|
||||
}
|
||||
|
||||
|
||||
private fun handleBackPress(): Boolean {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
|
|
|
@ -16,7 +16,6 @@ package code.name.monkey.retromusic.fragments.artists
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import androidx.activity.addCallback
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.navigation.fragment.FragmentNavigatorExtras
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -26,7 +25,6 @@ import code.name.monkey.retromusic.EXTRA_ARTIST_NAME
|
|||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
|
||||
import code.name.monkey.retromusic.extensions.setUpMediaRouteButton
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.fragments.GridStyle
|
||||
import code.name.monkey.retromusic.fragments.ReloadType
|
||||
import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment
|
||||
|
@ -34,19 +32,12 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
|||
import code.name.monkey.retromusic.helper.SortOrder.ArtistSortOrder
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumArtistClickListener
|
||||
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
|
||||
class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager>(),
|
||||
IArtistClickListener, IAlbumArtistClickListener, ICabHolder {
|
||||
IArtistClickListener, IAlbumArtistClickListener {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
libraryViewModel.getArtists().observe(viewLifecycleOwner) {
|
||||
|
@ -55,12 +46,6 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, Gri
|
|||
else
|
||||
adapter?.swapDataSet(listOf())
|
||||
}
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
if (!handleBackPress()) {
|
||||
remove()
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override val titleRes: Int
|
||||
|
@ -98,7 +83,7 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, Gri
|
|||
dataSet,
|
||||
itemLayoutRes(),
|
||||
this,
|
||||
this, this
|
||||
this
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -346,47 +331,8 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, Gri
|
|||
return false
|
||||
}
|
||||
|
||||
private fun handleBackPress(): Boolean {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
libraryViewModel.forceReload(ReloadType.Artists)
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
if (cab.isActive()) {
|
||||
cab.destroy()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import androidx.navigation.navOptions
|
|||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
||||
import code.name.monkey.retromusic.interfaces.IMusicServiceEventListener
|
||||
import code.name.monkey.retromusic.util.maybeShowAnnoyingToasts
|
||||
|
||||
/**
|
||||
* Created by hemanths on 18/08/17.
|
||||
|
@ -66,7 +65,6 @@ open class AbsMusicServiceFragment(@LayoutRes layout: Int) : Fragment(layout),
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
serviceActivity?.addMusicServiceEventListener(this)
|
||||
maybeShowAnnoyingToasts()
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
|
|
|
@ -27,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
||||
import code.name.monkey.retromusic.databinding.FragmentMainRecyclerBinding
|
||||
import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog
|
||||
import code.name.monkey.retromusic.dialogs.ImportPlaylistDialog
|
||||
|
@ -225,4 +226,9 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
|
|||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
(adapter as? AbsMultiSelectAdapter<*, *>)?.actionMode?.finish()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,12 +40,13 @@ import code.name.monkey.retromusic.adapter.Storage
|
|||
import code.name.monkey.retromusic.adapter.StorageAdapter
|
||||
import code.name.monkey.retromusic.adapter.StorageClickListener
|
||||
import code.name.monkey.retromusic.databinding.FragmentFolderBinding
|
||||
import code.name.monkey.retromusic.extensions.*
|
||||
import code.name.monkey.retromusic.extensions.dip
|
||||
import code.name.monkey.retromusic.extensions.showToast
|
||||
import code.name.monkey.retromusic.extensions.textColorPrimary
|
||||
import code.name.monkey.retromusic.extensions.textColorSecondary
|
||||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote.openQueue
|
||||
import code.name.monkey.retromusic.helper.menu.SongsMenuHelper
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.interfaces.ICallbacks
|
||||
import code.name.monkey.retromusic.interfaces.IMainActivityFragmentCallbacks
|
||||
import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener
|
||||
|
@ -54,16 +55,11 @@ import code.name.monkey.retromusic.model.Song
|
|||
import code.name.monkey.retromusic.providers.BlacklistStore
|
||||
import code.name.monkey.retromusic.util.FileUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil.startDirectory
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.ThemedFastScroller.create
|
||||
import code.name.monkey.retromusic.util.getExternalStorageDirectory
|
||||
import code.name.monkey.retromusic.util.getExternalStoragePublicDirectory
|
||||
import code.name.monkey.retromusic.views.BreadCrumbLayout.Crumb
|
||||
import code.name.monkey.retromusic.views.BreadCrumbLayout.SelectionCallback
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.android.material.transition.MaterialFadeThrough
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -76,7 +72,7 @@ import java.lang.ref.WeakReference
|
|||
import java.util.*
|
||||
|
||||
class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||
IMainActivityFragmentCallbacks, ICabHolder, SelectionCallback, ICallbacks,
|
||||
IMainActivityFragmentCallbacks, SelectionCallback, ICallbacks,
|
||||
LoaderManager.LoaderCallbacks<List<File>>, StorageClickListener {
|
||||
private var _binding: FragmentFolderBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
@ -85,7 +81,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
|||
|
||||
private var adapter: SongFileAdapter? = null
|
||||
private var storageAdapter: StorageAdapter? = null
|
||||
private var cab: AttachedCab? = null
|
||||
private val fileComparator = Comparator { lhs: File, rhs: File ->
|
||||
if (lhs.isDirectory && !rhs.isDirectory) {
|
||||
return@Comparator -1
|
||||
|
@ -149,16 +144,10 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
|||
override fun onPause() {
|
||||
super.onPause()
|
||||
saveScrollPosition()
|
||||
if (cab.isActive()) {
|
||||
cab.destroy()
|
||||
}
|
||||
adapter?.actionMode?.finish()
|
||||
}
|
||||
|
||||
override fun handleBackPress(): Boolean {
|
||||
if (cab != null && cab!!.isActive()) {
|
||||
cab?.destroy()
|
||||
return true
|
||||
}
|
||||
if (binding.breadCrumbs.popHistory()) {
|
||||
setCrumb(binding.breadCrumbs.lastHistory(), false)
|
||||
return true
|
||||
|
@ -388,24 +377,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
|||
checkForMargins()
|
||||
}
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
if (cab != null && cab!!.isActive()) {
|
||||
cab?.destroy()
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
|
||||
private fun checkForMargins() {
|
||||
if (mainActivity.isBottomNavVisible) {
|
||||
binding.recyclerView.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
|
@ -487,7 +458,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
|||
}
|
||||
|
||||
private fun setUpRecyclerView() {
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(activity)
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
create(
|
||||
binding.recyclerView
|
||||
)
|
||||
|
@ -593,7 +564,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
|||
}
|
||||
|
||||
private fun switchToFileAdapter() {
|
||||
adapter = SongFileAdapter(mainActivity, LinkedList(), R.layout.item_list, this, this)
|
||||
adapter = SongFileAdapter(mainActivity, LinkedList(), R.layout.item_list, this)
|
||||
adapter!!.registerAdapterDataObserver(
|
||||
object : RecyclerView.AdapterDataObserver() {
|
||||
override fun onChanged() {
|
||||
|
|
|
@ -71,7 +71,7 @@ class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_
|
|||
}
|
||||
|
||||
private fun setupRecyclerView() {
|
||||
songAdapter = SongAdapter(requireActivity(), ArrayList(), R.layout.item_list, null)
|
||||
songAdapter = SongAdapter(requireActivity(), ArrayList(), R.layout.item_list)
|
||||
binding.recyclerView.apply {
|
||||
itemAnimator = DefaultItemAnimator()
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
|
|
|
@ -340,12 +340,12 @@ class LyricsFragment : AbsMainActivityFragment(R.layout.fragment_lyrics),
|
|||
lyricsType = if (!loadLRCLyrics()) {
|
||||
binding.lyricsView.isVisible = false
|
||||
loadNormalLyrics()
|
||||
LyricsType.SYNCED_LYRICS
|
||||
LyricsType.NORMAL_LYRICS
|
||||
} else {
|
||||
binding.normalLyrics.isVisible = false
|
||||
binding.noLyricsFound.isVisible = false
|
||||
binding.lyricsView.isVisible = true
|
||||
LyricsType.NORMAL_LYRICS
|
||||
LyricsType.SYNCED_LYRICS
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ import android.view.Menu
|
|||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.activity.addCallback
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.core.view.isVisible
|
||||
|
@ -36,27 +35,19 @@ import code.name.monkey.retromusic.adapter.song.ShuffleButtonSongAdapter
|
|||
import code.name.monkey.retromusic.adapter.song.SongAdapter
|
||||
import code.name.monkey.retromusic.databinding.FragmentPlaylistDetailBinding
|
||||
import code.name.monkey.retromusic.db.toSong
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||
import code.name.monkey.retromusic.interfaces.IAlbumClickListener
|
||||
import code.name.monkey.retromusic.interfaces.IArtistClickListener
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Album
|
||||
import code.name.monkey.retromusic.model.Artist
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
|
||||
|
||||
class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_detail),
|
||||
IArtistClickListener, IAlbumClickListener, ICabHolder {
|
||||
IArtistClickListener, IAlbumClickListener {
|
||||
private val args by navArgs<DetailListFragmentArgs>()
|
||||
private var _binding: FragmentPlaylistDetailBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
@ -104,12 +95,6 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
|
||||
binding.appBarLayout.statusBarForeground =
|
||||
MaterialShapeDrawable.createWithElevationOverlay(requireContext())
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
if (!handleBackPress()) {
|
||||
remove()
|
||||
findNavController().navigateUp()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun lastAddedSongs() {
|
||||
|
@ -117,7 +102,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
val songAdapter = ShuffleButtonSongAdapter(
|
||||
requireActivity(),
|
||||
mutableListOf(),
|
||||
R.layout.item_list, this
|
||||
R.layout.item_list
|
||||
)
|
||||
binding.recyclerView.apply {
|
||||
adapter = songAdapter
|
||||
|
@ -134,7 +119,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
val songAdapter = ShuffleButtonSongAdapter(
|
||||
requireActivity(),
|
||||
mutableListOf(),
|
||||
R.layout.item_list, this
|
||||
R.layout.item_list
|
||||
)
|
||||
binding.recyclerView.apply {
|
||||
adapter = songAdapter
|
||||
|
@ -151,7 +136,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
val songAdapter = ShuffleButtonSongAdapter(
|
||||
requireActivity(),
|
||||
mutableListOf(),
|
||||
R.layout.item_list, this
|
||||
R.layout.item_list
|
||||
)
|
||||
binding.recyclerView.apply {
|
||||
adapter = songAdapter
|
||||
|
@ -170,7 +155,7 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
val songAdapter = SongAdapter(
|
||||
requireActivity(),
|
||||
mutableListOf(),
|
||||
R.layout.item_list, this
|
||||
R.layout.item_list
|
||||
)
|
||||
binding.recyclerView.apply {
|
||||
adapter = songAdapter
|
||||
|
@ -211,14 +196,14 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
requireActivity(),
|
||||
artists,
|
||||
R.layout.item_grid_circle,
|
||||
this, this@DetailListFragment
|
||||
this
|
||||
)
|
||||
|
||||
private fun albumAdapter(albums: List<Album>): AlbumAdapter = AlbumAdapter(
|
||||
requireActivity(),
|
||||
albums,
|
||||
R.layout.item_grid,
|
||||
this, this@DetailListFragment
|
||||
this
|
||||
)
|
||||
|
||||
private fun linearLayoutManager(): LinearLayoutManager =
|
||||
|
@ -260,38 +245,6 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
|||
_binding = null
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
private fun handleBackPress(): Boolean {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.menu_clear_history, menu)
|
||||
if (showClearHistoryOption) {
|
||||
|
|
|
@ -55,7 +55,7 @@ class PlayingQueueRVFragment : AbsRecyclerViewFragment<PlayingQueueAdapter, Line
|
|||
setNavigationOnClickListener {
|
||||
findNavController().navigateUp()
|
||||
}
|
||||
setNavigationIcon(R.drawable.ic_keyboard_backspace_black)
|
||||
setNavigationIcon(R.drawable.ic_arrow_back)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -103,18 +103,19 @@ class LockScreenControlsFragment :
|
|||
}
|
||||
|
||||
override fun setColor(color: MediaNotificationProcessor) {
|
||||
val context = context ?: return
|
||||
|
||||
val colorBg = ATHUtil.resolveColor(requireContext(), android.R.attr.colorBackground)
|
||||
val colorBg = ATHUtil.resolveColor(context, android.R.attr.colorBackground)
|
||||
if (ColorUtil.isColorLight(colorBg)) {
|
||||
lastPlaybackControlsColor =
|
||||
MaterialValueHelper.getSecondaryTextColor(requireContext(), true)
|
||||
MaterialValueHelper.getSecondaryTextColor(context, true)
|
||||
lastDisabledPlaybackControlsColor =
|
||||
MaterialValueHelper.getSecondaryDisabledTextColor(requireContext(), true)
|
||||
MaterialValueHelper.getSecondaryDisabledTextColor(context, true)
|
||||
} else {
|
||||
lastPlaybackControlsColor =
|
||||
MaterialValueHelper.getPrimaryTextColor(requireContext(), false)
|
||||
MaterialValueHelper.getPrimaryTextColor(context, false)
|
||||
lastDisabledPlaybackControlsColor =
|
||||
MaterialValueHelper.getPrimaryDisabledTextColor(requireContext(), false)
|
||||
MaterialValueHelper.getPrimaryDisabledTextColor(context, false)
|
||||
}
|
||||
|
||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||
|
@ -135,7 +136,7 @@ class LockScreenControlsFragment :
|
|||
|
||||
TintHelper.setTintAuto(
|
||||
binding.playPauseButton,
|
||||
MaterialValueHelper.getPrimaryTextColor(requireContext(), isDark),
|
||||
MaterialValueHelper.getPrimaryTextColor(context, isDark),
|
||||
false
|
||||
)
|
||||
TintHelper.setTintAuto(binding.playPauseButton, colorFinal, true)
|
||||
|
|
|
@ -20,16 +20,9 @@ import code.name.monkey.retromusic.db.toSongs
|
|||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||
import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.ThemedFastScroller
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.google.android.material.transition.MaterialArcMotion
|
||||
import com.google.android.material.transition.MaterialContainerTransform
|
||||
|
@ -41,8 +34,7 @@ import org.koin.androidx.viewmodel.ext.android.viewModel
|
|||
import org.koin.core.parameter.parametersOf
|
||||
|
||||
|
||||
class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_detail),
|
||||
ICabHolder {
|
||||
class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_detail) {
|
||||
private val arguments by navArgs<PlaylistDetailsFragmentArgs>()
|
||||
private val viewModel by viewModel<PlaylistDetailsViewModel> {
|
||||
parametersOf(arguments.extraPlaylist)
|
||||
|
@ -95,8 +87,7 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
|
|||
playlist.playlistEntity,
|
||||
requireActivity(),
|
||||
ArrayList(),
|
||||
R.layout.item_queue,
|
||||
this
|
||||
R.layout.item_queue
|
||||
)
|
||||
|
||||
val dragDropManager = RecyclerViewDragDropManager()
|
||||
|
@ -165,26 +156,4 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
|
|||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
}
|
|
@ -66,7 +66,6 @@ class PlaylistsFragment :
|
|||
requireActivity(),
|
||||
dataSet,
|
||||
itemLayoutRes(),
|
||||
null,
|
||||
this
|
||||
)
|
||||
}
|
||||
|
|
|
@ -201,7 +201,7 @@ class PlayingQueueFragment : AbsMusicServiceFragment(R.layout.fragment_playing_q
|
|||
}
|
||||
setTitle(R.string.now_playing_queue)
|
||||
setTitleTextAppearance(context, R.style.ToolbarTextAppearanceNormal)
|
||||
setNavigationIcon(R.drawable.ic_keyboard_backspace_black)
|
||||
setNavigationIcon(R.drawable.ic_arrow_back)
|
||||
ToolbarContentTintHelper.colorBackButton(this)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,29 +16,19 @@ package code.name.monkey.retromusic.fragments.songs
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import androidx.activity.addCallback
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.song.SongAdapter
|
||||
import code.name.monkey.retromusic.extensions.setUpMediaRouteButton
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.fragments.GridStyle
|
||||
import code.name.monkey.retromusic.fragments.ReloadType
|
||||
import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment
|
||||
import code.name.monkey.retromusic.helper.SortOrder.SongSortOrder
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import com.afollestad.materialcab.createCab
|
||||
|
||||
class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLayoutManager>(),
|
||||
ICabHolder {
|
||||
class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLayoutManager>() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
libraryViewModel.getSongs().observe(viewLifecycleOwner) {
|
||||
|
@ -47,12 +37,6 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
else
|
||||
adapter?.swapDataSet(listOf())
|
||||
}
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
|
||||
if (!handleBackPress()) {
|
||||
remove()
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override val titleRes: Int
|
||||
|
@ -77,8 +61,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
return SongAdapter(
|
||||
requireActivity(),
|
||||
dataSet,
|
||||
itemLayoutRes(),
|
||||
this
|
||||
itemLayoutRes()
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -342,9 +325,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
if (cab.isActive()) {
|
||||
cab.destroy()
|
||||
}
|
||||
adapter?.actionMode?.finish()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -356,36 +337,4 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
|||
return SongsFragment()
|
||||
}
|
||||
}
|
||||
|
||||
private var cab: AttachedCab? = null
|
||||
|
||||
private fun handleBackPress(): Boolean {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||
cab?.let {
|
||||
if (it.isActive()) {
|
||||
it.destroy()
|
||||
}
|
||||
}
|
||||
cab = createCab(R.id.toolbar_container) {
|
||||
menu(menuRes)
|
||||
closeDrawable(R.drawable.ic_close)
|
||||
backgroundColor(literal = RetroColorUtil.shiftBackgroundColor(surfaceColor()))
|
||||
slideDown()
|
||||
onCreate { cab, menu -> callback.onCabCreated(cab, menu) }
|
||||
onSelection {
|
||||
callback.onCabItemClicked(it)
|
||||
}
|
||||
onDestroy { callback.onCabFinished(it) }
|
||||
}
|
||||
return cab as AttachedCab
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Hemanth Savarla.
|
||||
*
|
||||
* Licensed under the GNU General Public License v3
|
||||
*
|
||||
* This is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
package code.name.monkey.retromusic.interfaces
|
||||
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
|
||||
interface ICabCallback {
|
||||
fun onCabCreated(cab: AttachedCab, menu: Menu): Boolean
|
||||
|
||||
fun onCabItemClicked(item: MenuItem): Boolean
|
||||
|
||||
fun onCabFinished(cab: AttachedCab): Boolean
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Hemanth Savarla.
|
||||
*
|
||||
* Licensed under the GNU General Public License v3
|
||||
*
|
||||
* This is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
package code.name.monkey.retromusic.interfaces
|
||||
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
|
||||
interface ICabHolder {
|
||||
|
||||
fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab
|
||||
}
|
|
@ -431,7 +431,7 @@ public class LrcView extends View {
|
|||
|
||||
mTimePaint.setColor(mTimeTextColor);
|
||||
String timeText = LrcUtils.formatTime(mLrcEntryList.get(centerLine).getTime());
|
||||
float timeX = getWidth() - mTimeTextWidth / 2;
|
||||
float timeX = getWidth() - mTimeTextWidth / 2F;
|
||||
float timeY = centerY - (mTimeFontMetrics.descent + mTimeFontMetrics.ascent) / 2;
|
||||
canvas.drawText(timeText, timeX, timeY, mTimePaint);
|
||||
}
|
||||
|
@ -531,7 +531,7 @@ public class LrcView extends View {
|
|||
lrcEntry.init(mLrcPaint, (int) getLrcWidth(), mTextGravity);
|
||||
}
|
||||
|
||||
mOffset = getHeight() / 2;
|
||||
mOffset = getHeight() / 2F;
|
||||
}
|
||||
|
||||
private void reset() {
|
||||
|
@ -611,7 +611,7 @@ public class LrcView extends View {
|
|||
|
||||
private float getOffset(int line) {
|
||||
if (mLrcEntryList.get(line).getOffset() == Float.MIN_VALUE) {
|
||||
float offset = getHeight() / 2;
|
||||
float offset = getHeight() / 2F;
|
||||
for (int i = 1; i <= line; i++) {
|
||||
offset -=
|
||||
((mLrcEntryList.get(i - 1).getHeight() + mLrcEntryList.get(i).getHeight()) >> 1)
|
||||
|
|
|
@ -8,7 +8,7 @@ import kotlinx.parcelize.Parcelize
|
|||
@Parcelize
|
||||
class NotPlayedPlaylist : AbsSmartPlaylist(
|
||||
name = App.getContext().getString(R.string.not_recently_played),
|
||||
iconRes = R.drawable.ic_watch_later
|
||||
iconRes = R.drawable.ic_audiotrack
|
||||
) {
|
||||
override fun songs(): List<Song> {
|
||||
return topPlayedRepository.notRecentlyPlayedTracks()
|
||||
|
|
|
@ -55,7 +55,7 @@ class LibraryPreferenceDialog : DialogFragment() {
|
|||
|
||||
val categoryAdapter = CategoryInfoAdapter()
|
||||
binding.recyclerView.apply {
|
||||
layoutManager = LinearLayoutManager(activity)
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
adapter = categoryAdapter
|
||||
categoryAdapter.attachToRecyclerView(this)
|
||||
}
|
||||
|
|
|
@ -197,7 +197,7 @@ class MusicService : MediaBrowserServiceCompat(),
|
|||
override fun onReceive(context: Context, intent: Intent) {
|
||||
if (isLockScreen && isPlaying) {
|
||||
val lockIntent = Intent(context, LockScreenActivity::class.java)
|
||||
lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||
lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||
startActivity(lockIntent)
|
||||
}
|
||||
}
|
||||
|
@ -279,7 +279,7 @@ class MusicService : MediaBrowserServiceCompat(),
|
|||
uiThreadHandler = Handler(Looper.getMainLooper())
|
||||
registerReceiver(widgetIntentReceiver, IntentFilter(APP_WIDGET_UPDATE))
|
||||
registerReceiver(updateFavoriteReceiver, IntentFilter(FAVORITE_STATE_CHANGED))
|
||||
registerReceiver(lockScreenReceiver, IntentFilter(Intent.ACTION_SCREEN_OFF))
|
||||
registerReceiver(lockScreenReceiver, IntentFilter(Intent.ACTION_SCREEN_ON))
|
||||
sessionToken = mediaSession?.sessionToken
|
||||
notificationManager = getSystemService()
|
||||
initNotification()
|
||||
|
|
|
@ -189,12 +189,12 @@ class PlayingNotificationClassic(
|
|||
).toBitmap()
|
||||
val prev =
|
||||
context.getTintedDrawable(
|
||||
R.drawable.ic_skip_previous_round_white_32dp,
|
||||
R.drawable.ic_skip_previous,
|
||||
primary
|
||||
).toBitmap()
|
||||
val next =
|
||||
context.getTintedDrawable(
|
||||
R.drawable.ic_skip_next_round_white_32dp,
|
||||
R.drawable.ic_skip_next,
|
||||
primary
|
||||
).toBitmap()
|
||||
val playPause = getPlayPauseBitmap(true)
|
||||
|
|
|
@ -75,12 +75,12 @@ class PlayingNotificationImpl24(
|
|||
val toggleFavorite = buildFavoriteAction(false)
|
||||
val playPauseAction = buildPlayAction(true)
|
||||
val previousAction = NotificationCompat.Action(
|
||||
R.drawable.ic_skip_previous_round_white_32dp,
|
||||
R.drawable.ic_skip_previous,
|
||||
context.getString(R.string.action_previous),
|
||||
retrievePlaybackAction(ACTION_REWIND)
|
||||
)
|
||||
val nextAction = NotificationCompat.Action(
|
||||
R.drawable.ic_skip_next_round_white_32dp,
|
||||
R.drawable.ic_skip_next,
|
||||
context.getString(R.string.action_next),
|
||||
retrievePlaybackAction(ACTION_SKIP)
|
||||
)
|
||||
|
|
|
@ -12,7 +12,8 @@ import code.name.monkey.retromusic.extensions.showToast
|
|||
|
||||
fun Activity.maybeShowAnnoyingToasts() {
|
||||
if (BuildConfig.APPLICATION_ID != "code.name.monkey.retromusic" &&
|
||||
BuildConfig.APPLICATION_ID != "code.name.monkey.retromusic.debug"
|
||||
BuildConfig.APPLICATION_ID != "code.name.monkey.retromusic.debug"&&
|
||||
BuildConfig.APPLICATION_ID != "code.name.monkey.retromusic.normal"
|
||||
) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
// Log these things to console, if the plagiarizer even cares to check it
|
||||
|
@ -33,7 +34,3 @@ fun Activity.maybeShowAnnoyingToasts() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Fragment.maybeShowAnnoyingToasts() {
|
||||
requireActivity().maybeShowAnnoyingToasts()
|
||||
}
|
|
@ -0,0 +1,151 @@
|
|||
// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
package code.name.monkey.retromusic.views
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.ObjectAnimator
|
||||
import android.content.Context
|
||||
import android.content.res.ColorStateList
|
||||
import android.util.AttributeSet
|
||||
import android.util.Property
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import code.name.monkey.retromusic.R
|
||||
import java.text.NumberFormat
|
||||
|
||||
/**
|
||||
* View that shows an integer number. It provides a smooth roll animation on changing the
|
||||
* number.
|
||||
*/
|
||||
class NumberRollView(context: Context?, attrs: AttributeSet?) :
|
||||
FrameLayout(context!!, attrs) {
|
||||
private var mUpNumber: TextView? = null
|
||||
private var mDownNumber: TextView? = null
|
||||
private var mNumber = 0f
|
||||
private var mLastRollAnimator: Animator? = null
|
||||
private var mStringId = R.string.x_selected
|
||||
private var mStringIdForZero = 0
|
||||
override fun onFinishInflate() {
|
||||
super.onFinishInflate()
|
||||
mUpNumber = findViewById(R.id.up)
|
||||
mDownNumber = findViewById(R.id.down)
|
||||
assert(mUpNumber != null)
|
||||
assert(mDownNumber != null)
|
||||
setNumberRoll(mNumber)
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a number to display.
|
||||
* @param animate Whether it should smoothly animate to the number.
|
||||
*/
|
||||
fun setNumber(number: Int, animate: Boolean) {
|
||||
if (mLastRollAnimator != null) mLastRollAnimator!!.cancel()
|
||||
if (animate) {
|
||||
val rollAnimator: Animator =
|
||||
ObjectAnimator.ofFloat(this, NUMBER_PROPERTY, number.toFloat())
|
||||
rollAnimator.interpolator = LinearInterpolator()
|
||||
rollAnimator.start()
|
||||
mLastRollAnimator = rollAnimator
|
||||
} else {
|
||||
setNumberRoll(number.toFloat())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param stringId The id of the string to use for the description. The string must be a plural
|
||||
* that has one placeholder for a quantity.
|
||||
*/
|
||||
fun setString(stringId: Int) {
|
||||
mStringId = stringId
|
||||
}
|
||||
|
||||
/**
|
||||
* @param stringIdForZero The id of the string to use for the description when the number is
|
||||
* zero.
|
||||
*/
|
||||
fun setStringForZero(stringIdForZero: Int) {
|
||||
mStringIdForZero = stringIdForZero
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current number roll position.
|
||||
*/
|
||||
private fun getNumberRoll(): Float {
|
||||
return mNumber
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the number roll position.
|
||||
*/
|
||||
private fun setNumberRoll(number: Float) {
|
||||
mNumber = number
|
||||
val downNumber = number.toInt()
|
||||
val upNumber = downNumber + 1
|
||||
val numberFormatter = NumberFormat.getIntegerInstance()
|
||||
var newString = if (mStringId != 0) {
|
||||
if (upNumber == 0 && mStringIdForZero != 0) resources.getString(mStringIdForZero) else resources.getString(
|
||||
mStringId,
|
||||
upNumber
|
||||
)
|
||||
} else {
|
||||
numberFormatter.format(upNumber.toLong())
|
||||
}
|
||||
if (newString != mUpNumber!!.text.toString()) {
|
||||
mUpNumber!!.text = newString
|
||||
}
|
||||
newString = if (mStringId != 0) {
|
||||
if (downNumber == 0 && mStringIdForZero != 0) resources.getString(mStringIdForZero) else resources.getString(
|
||||
mStringId,
|
||||
downNumber
|
||||
)
|
||||
} else {
|
||||
numberFormatter.format(downNumber.toLong())
|
||||
}
|
||||
if (newString != mDownNumber!!.text.toString()) {
|
||||
mDownNumber!!.text = newString
|
||||
}
|
||||
val offset = number % 1.0f
|
||||
mUpNumber!!.translationY = mUpNumber!!.height * (offset - 1.0f)
|
||||
mDownNumber!!.translationY = mDownNumber!!.height * offset
|
||||
mUpNumber!!.alpha = offset
|
||||
mDownNumber!!.alpha = 1.0f - offset
|
||||
}
|
||||
|
||||
/** Ends any in-progress animations. */
|
||||
@VisibleForTesting
|
||||
fun endAnimationsForTesting() {
|
||||
if (mLastRollAnimator != null) mLastRollAnimator!!.end()
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the text color with [ColorStateList] for both [TextView].
|
||||
* @param resId The new text [ColorStateList] to use.
|
||||
*/
|
||||
fun setTextColorStateList(colorStateList: ColorStateList?) {
|
||||
mUpNumber!!.setTextColor(colorStateList)
|
||||
mDownNumber!!.setTextColor(colorStateList)
|
||||
}
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* A Property wrapper around the `number` functionality handled by the
|
||||
* [NumberRollView.setNumberRoll] and [NumberRollView.getNumberRoll]
|
||||
* methods.
|
||||
*/
|
||||
val NUMBER_PROPERTY: Property<NumberRollView, Float> =
|
||||
object : Property<NumberRollView, Float>(
|
||||
Float::class.java, ""
|
||||
) {
|
||||
override fun set(view: NumberRollView, value: Float) {
|
||||
view.setNumberRoll(value)
|
||||
}
|
||||
|
||||
override fun get(view: NumberRollView): Float {
|
||||
return view.getNumberRoll()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,7 +14,6 @@
|
|||
limitations under the License.
|
||||
-->
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:shareInterpolator="false">
|
||||
<alpha
|
||||
android:duration="50"
|
||||
|
@ -36,6 +35,5 @@
|
|||
android:pivotX="50%"
|
||||
android:pivotY="50%"
|
||||
android:toXScale="1"
|
||||
android:toYScale="1"
|
||||
tools:targetApi="lollipop" />
|
||||
android:toYScale="1" />
|
||||
</set>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM7.07,18.28c0.43,-0.9 3.05,-1.78 4.93,-1.78s4.51,0.88 4.93,1.78C15.57,19.36 13.86,20 12,20s-3.57,-0.64 -4.93,-1.72zM18.36,16.83c-1.43,-1.74 -4.9,-2.33 -6.36,-2.33s-4.93,0.59 -6.36,2.33C4.62,15.49 4,13.82 4,12c0,-4.41 3.59,-8 8,-8s8,3.59 8,8c0,1.82 -0.62,3.49 -1.64,4.83zM12,6c-1.94,0 -3.5,1.56 -3.5,3.5S10.06,13 12,13s3.5,-1.56 3.5,-3.5S13.94,6 12,6zM12,11c-0.83,0 -1.5,-0.67 -1.5,-1.5S11.17,8 12,8s1.5,0.67 1.5,1.5S12.83,11 12,11z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M5.85,17.1Q7.125,16.125 8.7,15.562Q10.275,15 12,15Q13.725,15 15.3,15.562Q16.875,16.125 18.15,17.1Q19.025,16.075 19.513,14.775Q20,13.475 20,12Q20,8.675 17.663,6.337Q15.325,4 12,4Q8.675,4 6.338,6.337Q4,8.675 4,12Q4,13.475 4.488,14.775Q4.975,16.075 5.85,17.1ZM12,13Q10.525,13 9.512,11.988Q8.5,10.975 8.5,9.5Q8.5,8.025 9.512,7.012Q10.525,6 12,6Q13.475,6 14.488,7.012Q15.5,8.025 15.5,9.5Q15.5,10.975 14.488,11.988Q13.475,13 12,13ZM12,22Q9.925,22 8.1,21.212Q6.275,20.425 4.925,19.075Q3.575,17.725 2.788,15.9Q2,14.075 2,12Q2,9.925 2.788,8.1Q3.575,6.275 4.925,4.925Q6.275,3.575 8.1,2.787Q9.925,2 12,2Q14.075,2 15.9,2.787Q17.725,3.575 19.075,4.925Q20.425,6.275 21.212,8.1Q22,9.925 22,12Q22,14.075 21.212,15.9Q20.425,17.725 19.075,19.075Q17.725,20.425 15.9,21.212Q14.075,22 12,22ZM12,20Q13.325,20 14.5,19.613Q15.675,19.225 16.65,18.5Q15.675,17.775 14.5,17.387Q13.325,17 12,17Q10.675,17 9.5,17.387Q8.325,17.775 7.35,18.5Q8.325,19.225 9.5,19.613Q10.675,20 12,20ZM12,11Q12.65,11 13.075,10.575Q13.5,10.15 13.5,9.5Q13.5,8.85 13.075,8.425Q12.65,8 12,8Q11.35,8 10.925,8.425Q10.5,8.85 10.5,9.5Q10.5,10.15 10.925,10.575Q11.35,11 12,11ZM12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5Q12,9.5 12,9.5ZM12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Q12,18.5 12,18.5Z"/>
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_arrow_back.xml
Normal file
10
app/src/main/res/drawable/ic_arrow_back.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M10.875,19.3 L4.275,12.7Q4.125,12.55 4.062,12.375Q4,12.2 4,12Q4,11.8 4.062,11.625Q4.125,11.45 4.275,11.3L10.875,4.7Q11.15,4.425 11.562,4.412Q11.975,4.4 12.275,4.7Q12.575,4.975 12.588,5.387Q12.6,5.8 12.3,6.1L7.4,11H18.575Q19,11 19.288,11.287Q19.575,11.575 19.575,12Q19.575,12.425 19.288,12.712Q19,13 18.575,13H7.4L12.3,17.9Q12.575,18.175 12.588,18.6Q12.6,19.025 12.3,19.3Q12.025,19.6 11.6,19.6Q11.175,19.6 10.875,19.3Z"/>
|
||||
</vector>
|
|
@ -1,23 +1,10 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z" />
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11.3,19.3Q11.025,19.025 11.012,18.6Q11,18.175 11.275,17.9L16.175,13H5Q4.575,13 4.287,12.712Q4,12.425 4,12Q4,11.575 4.287,11.287Q4.575,11 5,11H16.175L11.275,6.1Q11,5.825 11.012,5.4Q11.025,4.975 11.3,4.7Q11.575,4.425 12,4.425Q12.425,4.425 12.7,4.7L19.3,11.3Q19.45,11.425 19.513,11.612Q19.575,11.8 19.575,12Q19.575,12.2 19.513,12.375Q19.45,12.55 19.3,12.7L12.7,19.3Q12.425,19.575 12,19.575Q11.575,19.575 11.3,19.3Z"/>
|
||||
</vector>
|
||||
|
|
10
app/src/main/res/drawable/ic_audio_file.xml
Normal file
10
app/src/main/res/drawable/ic_audio_file.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M10.75,19Q11.7,19 12.35,18.35Q13,17.7 13,16.75V13H15Q15.425,13 15.713,12.712Q16,12.425 16,12Q16,11.575 15.713,11.287Q15.425,11 15,11H13Q12.575,11 12.288,11.287Q12,11.575 12,12V14.875Q11.725,14.675 11.413,14.587Q11.1,14.5 10.75,14.5Q9.8,14.5 9.15,15.15Q8.5,15.8 8.5,16.75Q8.5,17.7 9.15,18.35Q9.8,19 10.75,19ZM6,22Q5.175,22 4.588,21.413Q4,20.825 4,20V4Q4,3.175 4.588,2.587Q5.175,2 6,2H13.175Q13.575,2 13.938,2.15Q14.3,2.3 14.575,2.575L19.425,7.425Q19.7,7.7 19.85,8.062Q20,8.425 20,8.825V20Q20,20.825 19.413,21.413Q18.825,22 18,22ZM13,4H6Q6,4 6,4Q6,4 6,4V20Q6,20 6,20Q6,20 6,20H18Q18,20 18,20Q18,20 18,20V9H14Q13.575,9 13.288,8.712Q13,8.425 13,8ZM6,4V8Q6,8.425 6,8.712Q6,9 6,9V4V8Q6,8.425 6,8.712Q6,9 6,9V20Q6,20 6,20Q6,20 6,20Q6,20 6,20Q6,20 6,20V4Q6,4 6,4Q6,4 6,4Z"/>
|
||||
</vector>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M12 5v8.55c-0.94-0.54-2.1-0.75-3.33-0.32-1.34 0.48 -2.37 1.67-2.61 3.07-0.46 2.74 1.86 5.08 4.59 4.65 1.96-0.31 3.35-2.11 3.35-4.1V7h2c1.1 0 2-0.9 2-2s-0.9-2-2-2h-2c-1.1 0-2 0.9-2 2z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M10,21Q8.35,21 7.175,19.825Q6,18.65 6,17Q6,15.35 7.175,14.175Q8.35,13 10,13Q10.575,13 11.062,13.137Q11.55,13.275 12,13.55V5Q12,4.175 12.588,3.587Q13.175,3 14,3H16Q16.825,3 17.413,3.587Q18,4.175 18,5Q18,5.825 17.413,6.412Q16.825,7 16,7H14V17Q14,18.65 12.825,19.825Q11.65,21 10,21Z"/>
|
||||
</vector>
|
|
@ -4,7 +4,7 @@
|
|||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M19.35,10.04C18.67,6.59 15.64,4 12,4 9.11,4 6.6,5.64 5.35,8.04 2.34,8.36 0,10.91 0,14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5 0,-2.64 -2.05,-4.78 -4.65,-4.96zM14,13v4h-4v-4H7l5,-5 5,5h-3z" />
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6.5,20Q4.225,20 2.613,18.425Q1,16.85 1,14.575Q1,12.625 2.175,11.1Q3.35,9.575 5.25,9.15Q5.875,6.85 7.75,5.425Q9.625,4 12,4Q14.925,4 16.962,6.037Q19,8.075 19,11Q20.725,11.2 21.863,12.487Q23,13.775 23,15.5Q23,17.375 21.688,18.688Q20.375,20 18.5,20H13Q12.175,20 11.588,19.413Q11,18.825 11,18V12.8L10.1,13.7Q9.825,13.975 9.4,13.975Q8.975,13.975 8.7,13.7Q8.425,13.425 8.425,13Q8.425,12.575 8.7,12.3L11.3,9.7Q11.45,9.55 11.625,9.487Q11.8,9.425 12,9.425Q12.2,9.425 12.375,9.487Q12.55,9.55 12.7,9.7L15.3,12.3Q15.575,12.575 15.575,13Q15.575,13.425 15.3,13.7Q15.025,13.975 14.6,13.975Q14.175,13.975 13.9,13.7L13,12.8V18Q13,18 13,18Q13,18 13,18H18.5Q19.55,18 20.275,17.275Q21,16.55 21,15.5Q21,14.45 20.275,13.725Q19.55,13 18.5,13H17V11Q17,8.925 15.538,7.462Q14.075,6 12,6Q9.925,6 8.463,7.462Q7,8.925 7,11H6.5Q5.05,11 4.025,12.025Q3,13.05 3,14.5Q3,15.95 4.025,16.975Q5.05,18 6.5,18H8Q8.425,18 8.713,18.288Q9,18.575 9,19Q9,19.425 8.713,19.712Q8.425,20 8,20ZM12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM15,18L4,18v-4h11v4zM15,13L4,13L4,9h11v4zM20,18h-4L16,9h4v9z"/>
|
||||
</vector>
|
|
@ -1,9 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M9.5 3C7.56 3 5.85 4.24 5.23 6.08C3.36 6.44 2 8.09 2 10C2 12.21 3.79 14 6 14V22H17V20H20C20.55 20 21 19.55 21 19V11C21 10.45 20.55 10 20 10H18V8C18 5.79 16.21 4 14 4H12.32C11.5 3.35 10.53 3 9.5 3M9.5 5C10.29 5 11.03 5.37 11.5 6H14C15.11 6 16 6.9 16 8H12C10 8 9.32 9.13 8.5 10.63C7.68 12.13 6 12 6 12C4.89 12 4 11.11 4 10C4 8.9 4.89 8 6 8H7V7.5C7 6.12 8.12 5 9.5 5M17 12H19V18H17Z" />
|
||||
</vector>
|
|
@ -1,5 +1,10 @@
|
|||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M6,13c0.55,-0.55 0.55,-1.44 0,-1.99L6,11c-0.55,-0.55 -1.45,-0.55 -2,0s-0.55,1.45 0,2 1.45,0.55 2,0zM20,11c-0.56,-0.56 -1.45,-0.56 -2,-0.01L18,11c-0.55,0.55 -0.55,1.44 0,1.99L18,13c0.55,0.55 1.44,0.55 1.99,0L20,13c0.55,-0.55 0.55,-1.45 0,-2zM17,7l-4.29,-4.29c-0.63,-0.63 -1.71,-0.19 -1.71,0.7v6.18L7.11,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41L10.59,12 5.7,16.89c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L11,14.41v6.18c0,0.89 1.08,1.34 1.71,0.71L17,17c0.39,-0.39 0.39,-1.02 0,-1.42L13.41,12 17,8.42c0.39,-0.39 0.39,-1.03 0,-1.42zM14.88,16.29L13,18.17v-3.76l1.88,1.88zM13,9.59L13,5.83l1.88,1.88L13,9.59z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M5,13.5Q4.375,13.5 3.938,13.062Q3.5,12.625 3.5,12Q3.5,11.375 3.938,10.938Q4.375,10.5 5,10.5Q5.625,10.5 6.062,10.938Q6.5,11.375 6.5,12Q6.5,12.625 6.062,13.062Q5.625,13.5 5,13.5ZM19,13.5Q18.375,13.5 17.938,13.062Q17.5,12.625 17.5,12Q17.5,11.375 17.938,10.938Q18.375,10.5 19,10.5Q19.625,10.5 20.062,10.938Q20.5,11.375 20.5,12Q20.5,12.625 20.062,13.062Q19.625,13.5 19,13.5ZM11,14.4 L7.1,18.3Q6.825,18.575 6.4,18.575Q5.975,18.575 5.7,18.3Q5.425,18.025 5.425,17.6Q5.425,17.175 5.7,16.9L10.6,12L5.7,7.1Q5.425,6.825 5.425,6.4Q5.425,5.975 5.7,5.7Q5.975,5.425 6.4,5.425Q6.825,5.425 7.1,5.7L11,9.6V3.425Q11,3 11.262,2.725Q11.525,2.45 11.925,2.45Q12.175,2.45 12.425,2.562Q12.675,2.675 12.875,2.875L17,7Q17.15,7.15 17.213,7.325Q17.275,7.5 17.275,7.7Q17.275,7.9 17.213,8.075Q17.15,8.25 17,8.4L13.4,12L17,15.6Q17.15,15.75 17.213,15.925Q17.275,16.1 17.275,16.3Q17.275,16.5 17.213,16.675Q17.15,16.85 17,17L12.875,21.125Q12.675,21.325 12.425,21.438Q12.175,21.55 11.925,21.55Q11.525,21.55 11.262,21.275Q11,21 11,20.575ZM13,9.6 L14.9,7.7 13,5.85ZM13,18.15 L14.9,16.3 13,14.4Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M6 13c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm0 4c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm0-8c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm-3 0.5c-0.28 0-0.5 0.22 -0.5 0.5 s0.22 0.5 0.5 0.5 0.5-0.22 0.5 -0.5-0.22-0.5-0.5-0.5zM6 5c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm15 5.5c0.28 0 0.5-0.22 0.5 -0.5s-0.22-0.5-0.5-0.5-0.5 0.22 -0.5 0.5 0.22 0.5 0.5 0.5 zM14 7c0.55 0 1-0.45 1-1s-0.45-1-1-1-1 0.45-1 1 0.45 1 1 1zm0-3.5c0.28 0 0.5-0.22 0.5 -0.5s-0.22-0.5-0.5-0.5-0.5 0.22 -0.5 0.5 0.22 0.5 0.5 0.5 zm-11 10c-0.28 0-0.5 0.22 -0.5 0.5 s0.22 0.5 0.5 0.5 0.5-0.22 0.5 -0.5-0.22-0.5-0.5-0.5zm7 7c-0.28 0-0.5 0.22 -0.5 0.5 s0.22 0.5 0.5 0.5 0.5-0.22 0.5 -0.5-0.22-0.5-0.5-0.5zm0-17c0.28 0 0.5-0.22 0.5 -0.5s-0.22-0.5-0.5-0.5-0.5 0.22 -0.5 0.5 0.22 0.5 0.5 0.5 zM10 7c0.55 0 1-0.45 1-1s-0.45-1-1-1-1 0.45-1 1 0.45 1 1 1zm0 5.5c-0.83 0-1.5 0.67 -1.5 1.5s0.67 1.5 1.5 1.5 1.5-0.67 1.5-1.5-0.67-1.5-1.5-1.5zm8 0.5c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm0 4c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm0-8c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm0-4c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm3 8.5c-0.28 0-0.5 0.22 -0.5 0.5 s0.22 0.5 0.5 0.5 0.5-0.22 0.5 -0.5-0.22-0.5-0.5-0.5zM14 17c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm0 3.5c-0.28 0-0.5 0.22 -0.5 0.5 s0.22 0.5 0.5 0.5 0.5-0.22 0.5 -0.5-0.22-0.5-0.5-0.5zm-4-12c-0.83 0-1.5 0.67 -1.5 1.5s0.67 1.5 1.5 1.5 1.5-0.67 1.5-1.5-0.67-1.5-1.5-1.5zm0 8.5c-0.55 0-1 0.45-1 1s0.45 1 1 1 1-0.45 1-1-0.45-1-1-1zm4-4.5c-0.83 0-1.5 0.67 -1.5 1.5s0.67 1.5 1.5 1.5 1.5-0.67 1.5-1.5-0.67-1.5-1.5-1.5zm0-4c-0.83 0-1.5 0.67 -1.5 1.5s0.67 1.5 1.5 1.5 1.5-0.67 1.5-1.5-0.67-1.5-1.5-1.5z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M3,14.5Q2.8,14.5 2.65,14.35Q2.5,14.2 2.5,14Q2.5,13.8 2.65,13.65Q2.8,13.5 3,13.5Q3.2,13.5 3.35,13.65Q3.5,13.8 3.5,14Q3.5,14.2 3.35,14.35Q3.2,14.5 3,14.5ZM3,10.5Q2.8,10.5 2.65,10.35Q2.5,10.2 2.5,10Q2.5,9.8 2.65,9.65Q2.8,9.5 3,9.5Q3.2,9.5 3.35,9.65Q3.5,9.8 3.5,10Q3.5,10.2 3.35,10.35Q3.2,10.5 3,10.5ZM6,19Q5.575,19 5.287,18.712Q5,18.425 5,18Q5,17.575 5.287,17.288Q5.575,17 6,17Q6.425,17 6.713,17.288Q7,17.575 7,18Q7,18.425 6.713,18.712Q6.425,19 6,19ZM6,15Q5.575,15 5.287,14.712Q5,14.425 5,14Q5,13.575 5.287,13.287Q5.575,13 6,13Q6.425,13 6.713,13.287Q7,13.575 7,14Q7,14.425 6.713,14.712Q6.425,15 6,15ZM6,11Q5.575,11 5.287,10.712Q5,10.425 5,10Q5,9.575 5.287,9.287Q5.575,9 6,9Q6.425,9 6.713,9.287Q7,9.575 7,10Q7,10.425 6.713,10.712Q6.425,11 6,11ZM6,7Q5.575,7 5.287,6.713Q5,6.425 5,6Q5,5.575 5.287,5.287Q5.575,5 6,5Q6.425,5 6.713,5.287Q7,5.575 7,6Q7,6.425 6.713,6.713Q6.425,7 6,7ZM10,15.5Q9.375,15.5 8.938,15.062Q8.5,14.625 8.5,14Q8.5,13.375 8.938,12.938Q9.375,12.5 10,12.5Q10.625,12.5 11.062,12.938Q11.5,13.375 11.5,14Q11.5,14.625 11.062,15.062Q10.625,15.5 10,15.5ZM10,11.5Q9.375,11.5 8.938,11.062Q8.5,10.625 8.5,10Q8.5,9.375 8.938,8.938Q9.375,8.5 10,8.5Q10.625,8.5 11.062,8.938Q11.5,9.375 11.5,10Q11.5,10.625 11.062,11.062Q10.625,11.5 10,11.5ZM10,19Q9.575,19 9.288,18.712Q9,18.425 9,18Q9,17.575 9.288,17.288Q9.575,17 10,17Q10.425,17 10.713,17.288Q11,17.575 11,18Q11,18.425 10.713,18.712Q10.425,19 10,19ZM10,7Q9.575,7 9.288,6.713Q9,6.425 9,6Q9,5.575 9.288,5.287Q9.575,5 10,5Q10.425,5 10.713,5.287Q11,5.575 11,6Q11,6.425 10.713,6.713Q10.425,7 10,7ZM10,21.5Q9.8,21.5 9.65,21.35Q9.5,21.2 9.5,21Q9.5,20.8 9.65,20.65Q9.8,20.5 10,20.5Q10.2,20.5 10.35,20.65Q10.5,20.8 10.5,21Q10.5,21.2 10.35,21.35Q10.2,21.5 10,21.5ZM10,3.5Q9.8,3.5 9.65,3.35Q9.5,3.2 9.5,3Q9.5,2.8 9.65,2.65Q9.8,2.5 10,2.5Q10.2,2.5 10.35,2.65Q10.5,2.8 10.5,3Q10.5,3.2 10.35,3.35Q10.2,3.5 10,3.5ZM14,15.5Q13.375,15.5 12.938,15.062Q12.5,14.625 12.5,14Q12.5,13.375 12.938,12.938Q13.375,12.5 14,12.5Q14.625,12.5 15.062,12.938Q15.5,13.375 15.5,14Q15.5,14.625 15.062,15.062Q14.625,15.5 14,15.5ZM14,11.5Q13.375,11.5 12.938,11.062Q12.5,10.625 12.5,10Q12.5,9.375 12.938,8.938Q13.375,8.5 14,8.5Q14.625,8.5 15.062,8.938Q15.5,9.375 15.5,10Q15.5,10.625 15.062,11.062Q14.625,11.5 14,11.5ZM14,19Q13.575,19 13.288,18.712Q13,18.425 13,18Q13,17.575 13.288,17.288Q13.575,17 14,17Q14.425,17 14.713,17.288Q15,17.575 15,18Q15,18.425 14.713,18.712Q14.425,19 14,19ZM14,7Q13.575,7 13.288,6.713Q13,6.425 13,6Q13,5.575 13.288,5.287Q13.575,5 14,5Q14.425,5 14.713,5.287Q15,5.575 15,6Q15,6.425 14.713,6.713Q14.425,7 14,7ZM14,21.5Q13.8,21.5 13.65,21.35Q13.5,21.2 13.5,21Q13.5,20.8 13.65,20.65Q13.8,20.5 14,20.5Q14.2,20.5 14.35,20.65Q14.5,20.8 14.5,21Q14.5,21.2 14.35,21.35Q14.2,21.5 14,21.5ZM14,3.5Q13.8,3.5 13.65,3.35Q13.5,3.2 13.5,3Q13.5,2.8 13.65,2.65Q13.8,2.5 14,2.5Q14.2,2.5 14.35,2.65Q14.5,2.8 14.5,3Q14.5,3.2 14.35,3.35Q14.2,3.5 14,3.5ZM18,19Q17.575,19 17.288,18.712Q17,18.425 17,18Q17,17.575 17.288,17.288Q17.575,17 18,17Q18.425,17 18.712,17.288Q19,17.575 19,18Q19,18.425 18.712,18.712Q18.425,19 18,19ZM18,15Q17.575,15 17.288,14.712Q17,14.425 17,14Q17,13.575 17.288,13.287Q17.575,13 18,13Q18.425,13 18.712,13.287Q19,13.575 19,14Q19,14.425 18.712,14.712Q18.425,15 18,15ZM18,11Q17.575,11 17.288,10.712Q17,10.425 17,10Q17,9.575 17.288,9.287Q17.575,9 18,9Q18.425,9 18.712,9.287Q19,9.575 19,10Q19,10.425 18.712,10.712Q18.425,11 18,11ZM18,7Q17.575,7 17.288,6.713Q17,6.425 17,6Q17,5.575 17.288,5.287Q17.575,5 18,5Q18.425,5 18.712,5.287Q19,5.575 19,6Q19,6.425 18.712,6.713Q18.425,7 18,7ZM21,14.5Q20.8,14.5 20.65,14.35Q20.5,14.2 20.5,14Q20.5,13.8 20.65,13.65Q20.8,13.5 21,13.5Q21.2,13.5 21.35,13.65Q21.5,13.8 21.5,14Q21.5,14.2 21.35,14.35Q21.2,14.5 21,14.5ZM21,10.5Q20.8,10.5 20.65,10.35Q20.5,10.2 20.5,10Q20.5,9.8 20.65,9.65Q20.8,9.5 21,9.5Q21.2,9.5 21.35,9.65Q21.5,9.8 21.5,10Q21.5,10.2 21.35,10.35Q21.2,10.5 21,10.5Z"/>
|
||||
</vector>
|
|
@ -1,12 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M20 8h-2.81c-0.45-0.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5s-0.96 0.06 -1.41 0.17 L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-0.05 0.33 -0.09 0.66 -0.09 1v1H4v2h2v1c0 0.34 0.04 0.67 0.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c0.05-0.33 0.09 -0.66 0.09 -1v-1h2v-2h-2v-1c0-0.34-0.04-0.67-0.09-1H20V8zm-4 4v3c0 0.22-0.03 0.47 -0.07 0.7 l-0.1 0.65 -0.37 0.65 c-0.72 1.24-2.04 2-3.46 2s-2.74-0.77-3.46-2l-0.37-0.64-0.1-0.65C8.03 15.48 8 15.23 8 15v-4c0-0.23 0.03 -0.48 0.07 -0.7l0.1-0.65 0.37 -0.65c0.3-0.52 0.72 -0.97 1.21-1.31l0.57-0.39 0.74 -0.18c0.31-0.08 0.63 -0.12 0.94 -0.12 0.32 0 0.63 0.04 0.95 0.12 l0.68 0.16 0.61 0.42 c0.5 0.34 0.91 0.78 1.21 1.31l0.38 0.65 0.1 0.65 c0.04 0.22 0.07 0.47 0.07 0.69 v1zm-6 2h4v2h-4zm0-4h4v2h-4z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,21Q10.375,21 8.988,20.2Q7.6,19.4 6.8,18H4.975Q4.55,18 4.275,17.712Q4,17.425 4,17Q4,16.575 4.287,16.288Q4.575,16 5,16H6.1Q6.025,15.5 6.013,15Q6,14.5 6,14H4.975Q4.55,14 4.275,13.712Q4,13.425 4,13Q4,12.575 4.287,12.287Q4.575,12 5,12H6Q6,11.5 6.013,11Q6.025,10.5 6.1,10H4.975Q4.55,10 4.275,9.712Q4,9.425 4,9Q4,8.575 4.287,8.287Q4.575,8 5,8H6.8Q7.15,7.425 7.588,6.925Q8.025,6.425 8.6,6.05L7.675,5.1Q7.4,4.8 7.413,4.387Q7.425,3.975 7.7,3.7Q7.975,3.425 8.4,3.425Q8.825,3.425 9.1,3.7L10.55,5.15Q11.25,4.925 11.975,4.925Q12.7,4.925 13.4,5.15L14.9,3.675Q15.2,3.4 15.613,3.412Q16.025,3.425 16.3,3.7Q16.575,3.975 16.575,4.4Q16.575,4.825 16.3,5.1L15.35,6.05Q15.925,6.425 16.388,6.912Q16.85,7.4 17.2,8H19.025Q19.45,8 19.725,8.287Q20,8.575 20,9Q20,9.425 19.712,9.712Q19.425,10 19,10H17.9Q17.975,10.5 17.988,11Q18,11.5 18,12H19.025Q19.45,12 19.725,12.287Q20,12.575 20,13Q20,13.425 19.712,13.712Q19.425,14 19,14H18Q18,14.5 17.988,15Q17.975,15.5 17.9,16H19.025Q19.45,16 19.725,16.288Q20,16.575 20,17Q20,17.425 19.712,17.712Q19.425,18 19,18H17.2Q16.4,19.4 15.013,20.2Q13.625,21 12,21ZM12,19Q13.65,19 14.825,17.825Q16,16.65 16,15V11Q16,9.35 14.825,8.175Q13.65,7 12,7Q10.35,7 9.175,8.175Q8,9.35 8,11V15Q8,16.65 9.175,17.825Q10.35,19 12,19ZM11,16H13.025Q13.45,16 13.725,15.712Q14,15.425 14,15Q14,14.575 13.713,14.287Q13.425,14 13,14H10.975Q10.55,14 10.275,14.287Q10,14.575 10,15Q10,15.425 10.288,15.712Q10.575,16 11,16ZM11,12H13.025Q13.45,12 13.725,11.712Q14,11.425 14,11Q14,10.575 13.713,10.287Q13.425,10 13,10H10.975Q10.55,10 10.275,10.287Q10,10.575 10,11Q10,11.425 10.288,11.712Q10.575,12 11,12ZM12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Q12,13 12,13Z"/>
|
||||
</vector>
|
|
@ -1,5 +1,10 @@
|
|||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5h-11c-0.66,0 -1.21,0.42 -1.42,1.01L3,12v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,13 6.5,13s1.5,0.67 1.5,1.5S7.33,16 6.5,16zM17.5,16c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM5,11l1.5,-4.5h11L19,11L5,11z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6,19V19.525Q6,20.15 5.575,20.575Q5.15,21 4.5,21Q3.875,21 3.438,20.562Q3,20.125 3,19.5V12L5.1,6Q5.25,5.55 5.638,5.275Q6.025,5 6.5,5H17.5Q17.975,5 18.363,5.275Q18.75,5.55 18.9,6L21,12V19.525Q21,20.15 20.575,20.575Q20.15,21 19.5,21Q18.875,21 18.438,20.562Q18,20.125 18,19.5V19ZM5.8,10H18.2L17.15,7H6.85ZM7.5,16Q8.125,16 8.562,15.562Q9,15.125 9,14.5Q9,13.875 8.562,13.438Q8.125,13 7.5,13Q6.875,13 6.438,13.438Q6,13.875 6,14.5Q6,15.125 6.438,15.562Q6.875,16 7.5,16ZM16.5,16Q17.125,16 17.562,15.562Q18,15.125 18,14.5Q18,13.875 17.562,13.438Q17.125,13 16.5,13Q15.875,13 15.438,13.438Q15,13.875 15,14.5Q15,15.125 15.438,15.562Q15.875,16 16.5,16Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M20 6h-2.18c0.11-0.31 0.18 -0.65 0.18 -1 0-1.66-1.34-3-3-3-1.05 0-1.96 0.54 -2.5 1.35l-0.5 0.67 -0.5-0.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 0.35 0.07 0.69 0.18 1H4c-1.11 0-1.99 0.89 -1.99 2L2 19c0 1.11 0.89 2 2 2h16c1.11 0 2-0.89 2-2V8c0-1.11-0.89-2-2-2zm-5-2c0.55 0 1 0.45 1 1s-0.45 1-1 1-1-0.45-1-1 0.45-1 1-1zM9 4c0.55 0 1 0.45 1 1s-0.45 1-1 1-1-0.45-1-1 0.45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 12 7.4l3.38 4.6L17 10.83 14.92 8H20v6z" />
|
||||
</vector>
|
|
@ -1,24 +0,0 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<!-- drawable/cellphone.xml -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z" />
|
||||
</vector>
|
|
@ -1,24 +0,0 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<!-- drawable/cellphone_lock.xml -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M8.8,11V9.5C8.8,8.1 7.4,7 6,7C4.6,7 3.2,8.1 3.2,9.5V11C2.6,11 2,11.6 2,12.2V15.7C2,16.4 2.6,17 3.2,17H8.7C9.4,17 10,16.4 10,15.8V12.3C10,11.6 9.4,11 8.8,11M7.5,11H4.5V9.5C4.5,8.7 5.2,8.2 6,8.2C6.8,8.2 7.5,8.7 7.5,9.5V11Z" />
|
||||
</vector>
|
|
@ -1,10 +1,10 @@
|
|||
<vector android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z" />
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M10.6,13.8 L8.425,11.625Q8.15,11.35 7.75,11.35Q7.35,11.35 7.05,11.65Q6.775,11.925 6.775,12.35Q6.775,12.775 7.05,13.05L9.9,15.9Q10.175,16.175 10.6,16.175Q11.025,16.175 11.3,15.9L16.975,10.225Q17.25,9.95 17.25,9.55Q17.25,9.15 16.95,8.85Q16.675,8.575 16.25,8.575Q15.825,8.575 15.55,8.85ZM12,22Q9.925,22 8.1,21.212Q6.275,20.425 4.925,19.075Q3.575,17.725 2.788,15.9Q2,14.075 2,12Q2,9.925 2.788,8.1Q3.575,6.275 4.925,4.925Q6.275,3.575 8.1,2.787Q9.925,2 12,2Q14.075,2 15.9,2.787Q17.725,3.575 19.075,4.925Q20.425,6.275 21.212,8.1Q22,9.925 22,12Q22,14.075 21.212,15.9Q20.425,17.725 19.075,19.075Q17.725,20.425 15.9,21.212Q14.075,22 12,22Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,23 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M6 13h12c0.55 0 1-0.45 1-1s-0.45-1-1-1H6c-0.55 0-1 0.45-1 1s0.45 1 1 1zm-2 4h12c0.55 0 1-0.45 1-1s-0.45-1-1-1H4c-0.55 0-1 0.45-1 1s0.45 1 1 1zm3-9c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1s-0.45-1-1-1H8c-0.55 0-1 0.45-1 1z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M18,13H6Q5.575,13 5.287,12.712Q5,12.425 5,12Q5,11.575 5.287,11.287Q5.575,11 6,11H18Q18.425,11 18.712,11.287Q19,11.575 19,12Q19,12.425 18.712,12.712Q18.425,13 18,13ZM16,17H4Q3.575,17 3.288,16.712Q3,16.425 3,16Q3,15.575 3.288,15.287Q3.575,15 4,15H16Q16.425,15 16.712,15.287Q17,15.575 17,16Q17,16.425 16.712,16.712Q16.425,17 16,17ZM20,9H8Q7.575,9 7.287,8.712Q7,8.425 7,8Q7,7.575 7.287,7.287Q7.575,7 8,7H20Q20.425,7 20.712,7.287Q21,7.575 21,8Q21,8.425 20.712,8.712Q20.425,9 20,9Z"/>
|
||||
</vector>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M18.3 5.71c-0.39-0.39-1.02-0.39-1.41 0L12 10.59 7.11 5.7c-0.39-0.39-1.02-0.39-1.41 0-0.39 0.39 -0.39 1.02 0 1.41L10.59 12 5.7 16.89c-0.39 0.39 -0.39 1.02 0 1.41 0.39 0.39 1.02 0.39 1.41 0L12 13.41l4.89 4.89c0.39 0.39 1.02 0.39 1.41 0 0.39-0.39 0.39 -1.02 0-1.41L13.41 12l4.89-4.89c0.38-0.38 0.38 -1.02 0-1.4z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,13.4 L7.1,18.3Q6.825,18.575 6.4,18.575Q5.975,18.575 5.7,18.3Q5.425,18.025 5.425,17.6Q5.425,17.175 5.7,16.9L10.6,12L5.7,7.1Q5.425,6.825 5.425,6.4Q5.425,5.975 5.7,5.7Q5.975,5.425 6.4,5.425Q6.825,5.425 7.1,5.7L12,10.6L16.9,5.7Q17.175,5.425 17.6,5.425Q18.025,5.425 18.3,5.7Q18.575,5.975 18.575,6.4Q18.575,6.825 18.3,7.1L13.4,12L18.3,16.9Q18.575,17.175 18.575,17.6Q18.575,18.025 18.3,18.3Q18.025,18.575 17.6,18.575Q17.175,18.575 16.9,18.3Z"/>
|
||||
</vector>
|
|
@ -1,36 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M12 22C6.49 22 2 17.51 2 12S6.49 2 12 2s10 4.04 10 9c0 3.31-2.69 6-6 6h-1.77c-0.28 0-0.5 0.22 -0.5 0.5 0 0.12 0.05 0.23 0.13 0.33 0.41 0.47 0.64 1.06 0.64 1.67 0 1.38-1.12 2.5-2.5 2.5zm0-18c-4.41 0-8 3.59-8 8s3.59 8 8 8c0.28 0 0.5-0.22 0.5 -0.5 0-0.16-0.08-0.28-0.14-0.35-0.41-0.46-0.63-1.05-0.63-1.65 0-1.38 1.12-2.5 2.5-2.5H16c2.21 0 4-1.79 4-4 0-3.86-3.59-7-8-7z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M 6.5 10 C 7.32842712475 10 8 10.6715728753 8 11.5 C 8 12.3284271247 7.32842712475 13 6.5 13 C 5.67157287525 13 5 12.3284271247 5 11.5 C 5 10.6715728753 5.67157287525 10 6.5 10 Z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M 9.5 6 C 10.3284271247 6 11 6.67157287525 11 7.5 C 11 8.32842712475 10.3284271247 9 9.5 9 C 8.67157287525 9 8 8.32842712475 8 7.5 C 8 6.67157287525 8.67157287525 6 9.5 6 Z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M 14.5 6 C 15.3284271247 6 16 6.67157287525 16 7.5 C 16 8.32842712475 15.3284271247 9 14.5 9 C 13.6715728753 9 13 8.32842712475 13 7.5 C 13 6.67157287525 13.6715728753 6 14.5 6 Z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M 17.5 10 C 18.3284271247 10 19 10.6715728753 19 11.5 C 19 12.3284271247 18.3284271247 13 17.5 13 C 16.6715728753 13 16 12.3284271247 16 11.5 C 16 10.6715728753 16.6715728753 10 17.5 10 Z" />
|
||||
</vector>
|
|
@ -1,25 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path android:pathData="M0 0h24v24H0V0z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M17.66 5.41l0.92 0.92 -2.69 2.69-0.92-0.92 2.69-2.69M17.67 3c-0.26 0-0.51 0.1 -0.71 0.29 l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c0.4-0.4 0.4 -1.03 0.01 -1.42l-2.34-2.34c-0.2-0.19-0.45-0.29-0.7-0.29zM6.92 19L5 17.08l8.06-8.06 1.92 1.92L6.92 19z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M4,21Q3.575,21 3.288,20.712Q3,20.425 3,20V16.675Q3,16.475 3.075,16.288Q3.15,16.1 3.3,15.95L11.95,7.3L11.2,6.55Q10.925,6.275 10.925,5.85Q10.925,5.425 11.225,5.125Q11.5,4.85 11.925,4.85Q12.35,4.85 12.65,5.125L13.825,6.325L16.9,3.25Q17.175,2.975 17.6,2.975Q18.025,2.975 18.3,3.25L20.7,5.65Q20.975,5.925 20.975,6.35Q20.975,6.775 20.7,7.05L17.625,10.125L18.875,11.375Q19.15,11.65 19.15,12.075Q19.15,12.5 18.875,12.775Q18.575,13.075 18.15,13.075Q17.725,13.075 17.45,12.775L16.7,12.05L8.05,20.7Q7.9,20.85 7.713,20.925Q7.525,21 7.325,21ZM5,19H6.95L15.25,10.65L13.35,8.75L5,17.05Z"/>
|
||||
</vector>
|
|
@ -1,9 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M12,3A9,9 0,0 0,3 12A9,9 0,0 0,12 21A9,9 0,0 0,21 12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0,0 1,11 7.5A1.5,1.5 0,0 1,9.5 9A1.5,1.5 0,0 1,8 7.5A1.5,1.5 0,0 1,9.5 6M6.5,10A1.5,1.5 0,0 1,8 11.5A1.5,1.5 0,0 1,6.5 13A1.5,1.5 0,0 1,5 11.5A1.5,1.5 0,0 1,6.5 10M11.5,11A1.5,1.5 0,0 1,13 12.5A1.5,1.5 0,0 1,11.5 14A1.5,1.5 0,0 1,10 12.5A1.5,1.5 0,0 1,11.5 11M16.5,13A1.5,1.5 0,0 1,18 14.5A1.5,1.5 0,0 1,16.5 16H16.5A1.5,1.5 0,0 1,15 14.5H15A1.5,1.5 0,0 1,16.5 13M11,16A1.5,1.5 0,0 1,12.5 17.5A1.5,1.5 0,0 1,11 19A1.5,1.5 0,0 1,9.5 17.5A1.5,1.5 0,0 1,11 16Z" />
|
||||
</vector>
|
|
@ -1,13 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M15 4V3H9v1H4v2h1v13c0 1.1 0.9 2 2 2h10c1.1 0 2-0.9 2-2V6h1V4h-5zm2 15H7V6h10v13z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M9 8h2v9H9zm4 0h2v9h-2z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M7,21Q6.175,21 5.588,20.413Q5,19.825 5,19V6Q4.575,6 4.287,5.713Q4,5.425 4,5Q4,4.575 4.287,4.287Q4.575,4 5,4H9Q9,3.575 9.288,3.287Q9.575,3 10,3H14Q14.425,3 14.713,3.287Q15,3.575 15,4H19Q19.425,4 19.712,4.287Q20,4.575 20,5Q20,5.425 19.712,5.713Q19.425,6 19,6V19Q19,19.825 18.413,20.413Q17.825,21 17,21ZM7,6V19Q7,19 7,19Q7,19 7,19H17Q17,19 17,19Q17,19 17,19V6ZM9,16Q9,16.425 9.288,16.712Q9.575,17 10,17Q10.425,17 10.713,16.712Q11,16.425 11,16V9Q11,8.575 10.713,8.287Q10.425,8 10,8Q9.575,8 9.288,8.287Q9,8.575 9,9ZM13,16Q13,16.425 13.288,16.712Q13.575,17 14,17Q14.425,17 14.713,16.712Q15,16.425 15,16V9Q15,8.575 14.713,8.287Q14.425,8 14,8Q13.575,8 13.288,8.287Q13,8.575 13,9ZM7,6V19Q7,19 7,19Q7,19 7,19Q7,19 7,19Q7,19 7,19V6Z"/>
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_diamond.xml
Normal file
10
app/src/main/res/drawable/ic_diamond.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,19.875Q11.575,19.875 11.175,19.688Q10.775,19.5 10.475,19.15L2.825,10Q2.45,9.55 2.375,8.95Q2.3,8.35 2.575,7.825L4.45,4.1Q4.725,3.6 5.188,3.3Q5.65,3 6.225,3H17.775Q18.35,3 18.812,3.3Q19.275,3.6 19.55,4.1L21.425,7.825Q21.7,8.35 21.625,8.95Q21.55,9.55 21.175,10L13.525,19.15Q13.225,19.5 12.825,19.688Q12.425,19.875 12,19.875ZM9.625,8H14.375L12.875,5H11.125ZM11,16.675V10H5.45ZM13,16.675 L18.55,10H13ZM16.6,8H19.25L17.75,5Q17.75,5 17.75,5Q17.75,5 17.75,5H15.1ZM4.75,8H7.4L8.9,5H6.25Q6.25,5 6.25,5Q6.25,5 6.25,5Z"/>
|
||||
</vector>
|
|
@ -1,26 +0,0 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<!-- drawable/diamond_stone.xml -->
|
||||
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z" />
|
||||
</vector>
|
|
@ -6,5 +6,5 @@
|
|||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20,9H4v2h16V9zM4,15h16v-2H4V15z"/>
|
||||
android:pathData="M5,11Q4.575,11 4.287,10.712Q4,10.425 4,10Q4,9.575 4.287,9.287Q4.575,9 5,9H19Q19.425,9 19.712,9.287Q20,9.575 20,10Q20,10.425 19.712,10.712Q19.425,11 19,11ZM5,15Q4.575,15 4.287,14.712Q4,14.425 4,14Q4,13.575 4.287,13.287Q4.575,13 5,13H19Q19.425,13 19.712,13.287Q20,13.575 20,14Q20,14.425 19.712,14.712Q19.425,15 19,15Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path android:pathData="M0,0h24v24H0V0z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M11,18c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2S11,16.9,11,18z M9,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S10.1,10,9,10z M9,4C7.9,4,7,4.9,7,6s0.9,2,2,2s2-0.9,2-2S10.1,4,9,4z M15,8c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S13.9,8,15,8z M15,10 c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,10,15,10z M15,16c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,16,15,16z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M11,18c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2S11,16.9,11,18z M9,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2 S10.1,10,9,10z M9,4C7.9,4,7,4.9,7,6s0.9,2,2,2s2-0.9,2-2S10.1,4,9,4z M15,8c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S13.9,8,15,8z M15,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,10,15,10z M15,16c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,16,15,16z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M11,18c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2S11,16.9,11,18z M9,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2 S10.1,10,9,10z M9,4C7.9,4,7,4.9,7,6s0.9,2,2,2s2-0.9,2-2S10.1,4,9,4z M15,8c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S13.9,8,15,8z M15,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,10,15,10z M15,16c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,16,15,16z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M11,18c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2S11,16.9,11,18z M9,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2 S10.1,10,9,10z M9,4C7.9,4,7,4.9,7,6s0.9,2,2,2s2-0.9,2-2S10.1,4,9,4z M15,8c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S13.9,8,15,8z M15,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,10,15,10z M15,16c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,16,15,16z" />
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M11,18c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2S11,16.9,11,18z M9,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2 S10.1,10,9,10z M9,4C7.9,4,7,4.9,7,6s0.9,2,2,2s2-0.9,2-2S10.1,4,9,4z M15,8c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S13.9,8,15,8z M15,10c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,10,15,10z M15,16c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S16.1,16,15,16z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9,20Q8.175,20 7.588,19.413Q7,18.825 7,18Q7,17.175 7.588,16.587Q8.175,16 9,16Q9.825,16 10.413,16.587Q11,17.175 11,18Q11,18.825 10.413,19.413Q9.825,20 9,20ZM15,20Q14.175,20 13.588,19.413Q13,18.825 13,18Q13,17.175 13.588,16.587Q14.175,16 15,16Q15.825,16 16.413,16.587Q17,17.175 17,18Q17,18.825 16.413,19.413Q15.825,20 15,20ZM9,14Q8.175,14 7.588,13.412Q7,12.825 7,12Q7,11.175 7.588,10.587Q8.175,10 9,10Q9.825,10 10.413,10.587Q11,11.175 11,12Q11,12.825 10.413,13.412Q9.825,14 9,14ZM15,14Q14.175,14 13.588,13.412Q13,12.825 13,12Q13,11.175 13.588,10.587Q14.175,10 15,10Q15.825,10 16.413,10.587Q17,11.175 17,12Q17,12.825 16.413,13.412Q15.825,14 15,14ZM9,8Q8.175,8 7.588,7.412Q7,6.825 7,6Q7,5.175 7.588,4.588Q8.175,4 9,4Q9.825,4 10.413,4.588Q11,5.175 11,6Q11,6.825 10.413,7.412Q9.825,8 9,8ZM15,8Q14.175,8 13.588,7.412Q13,6.825 13,6Q13,5.175 13.588,4.588Q14.175,4 15,4Q15.825,4 16.413,4.588Q17,5.175 17,6Q17,6.825 16.413,7.412Q15.825,8 15,8Z"/>
|
||||
</vector>
|
|
@ -1,24 +0,0 @@
|
|||
<!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M18.92,5.01C18.72,4.42 18.16,4 17.5,4h-11c-0.66,0 -1.21,0.42 -1.42,1.01L3,11v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.5,15c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,12 6.5,12s1.5,0.67 1.5,1.5S7.33,15 6.5,15zM17.5,15c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM5,10l1.5,-4.5h11L19,10L5,10z" />
|
||||
</vector>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M3 17.46v3.04c0 0.28 0.22 0.5 0.5 0.5h3.04c0.13 0 0.26-0.05 0.35 -0.15L17.81 9.94l-3.75-3.75L3.15 17.1c-0.1 0.1 -0.15 0.22 -0.15 0.36 zM20.71 7.04c0.39-0.39 0.39 -1.02 0-1.41l-2.34-2.34c-0.39-0.39-1.02-0.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M19.3,8.925 L15.05,4.725 16.45,3.325Q17.025,2.75 17.863,2.75Q18.7,2.75 19.275,3.325L20.675,4.725Q21.25,5.3 21.275,6.113Q21.3,6.925 20.725,7.5ZM4,21Q3.575,21 3.288,20.712Q3,20.425 3,20V17.175Q3,16.975 3.075,16.788Q3.15,16.6 3.3,16.45L13.6,6.15L17.85,10.4L7.55,20.7Q7.4,20.85 7.213,20.925Q7.025,21 6.825,21Z"/>
|
||||
</vector>
|
|
@ -1,25 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M12 20c1.1 0 2-0.9 2-2V6c0-1.1-0.9-2-2-2s-2 0.9-2 2v12c0 1.1 0.9 2 2 2zm-6 0c1.1 0 2-0.9 2-2v-4c0-1.1-0.9-2-2-2s-2 0.9-2 2v4c0 1.1 0.9 2 2 2zm10-9v7c0 1.1 0.9 2 2 2s2-0.9 2-2v-7c0-1.1-0.9-2-2-2s-2 0.9-2 2z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6,20Q5.175,20 4.588,19.413Q4,18.825 4,18V14Q4,13.175 4.588,12.587Q5.175,12 6,12Q6.825,12 7.412,12.587Q8,13.175 8,14V18Q8,18.825 7.412,19.413Q6.825,20 6,20ZM12,20Q11.175,20 10.588,19.413Q10,18.825 10,18V6Q10,5.175 10.588,4.588Q11.175,4 12,4Q12.825,4 13.413,4.588Q14,5.175 14,6V18Q14,18.825 13.413,19.413Q12.825,20 12,20ZM18,20Q17.175,20 16.587,19.413Q16,18.825 16,18V11Q16,10.175 16.587,9.587Q17.175,9 18,9Q18.825,9 19.413,9.587Q20,10.175 20,11V18Q20,18.825 19.413,19.413Q18.825,20 18,20Z"/>
|
||||
</vector>
|
|
@ -1,10 +1,10 @@
|
|||
<vector android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,8l-6,6 1.41,1.41L12,10.83l4.59,4.58L18,14z" />
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6.7,14.675Q6.425,14.4 6.425,13.975Q6.425,13.55 6.7,13.275L11.3,8.675Q11.45,8.525 11.625,8.462Q11.8,8.4 12,8.4Q12.2,8.4 12.375,8.462Q12.55,8.525 12.7,8.675L17.325,13.3Q17.6,13.575 17.6,13.975Q17.6,14.375 17.3,14.675Q17.025,14.95 16.6,14.95Q16.175,14.95 15.9,14.675L12,10.775L8.075,14.7Q7.8,14.975 7.4,14.975Q7,14.975 6.7,14.675Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M9,16A2,2 0 0,0 7,18A2,2 0 0,0 9,20A2,2 0 0,0 11,18V13H14V11H10V16.27C9.71,16.1 9.36,16 9,16Z" />
|
||||
</vector>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M14 6l-0.72-1.45c-0.17-0.34-0.52-0.55-0.9-0.55H6c-0.55 0-1 0.45-1 1v15c0 0.55 0.45 1 1 1s1-0.45 1-1v-6h5l0.72 1.45c0.17 0.34 0.52 0.55 0.89 0.55 H19c0.55 0 1-0.45 1-1V7c0-0.55-0.45-1-1-1h-5zm4 8h-4l-1-2H7V6h5l1 2h5v6z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6,21Q5.575,21 5.287,20.712Q5,20.425 5,20V5Q5,4.575 5.287,4.287Q5.575,4 6,4H13.175Q13.525,4 13.8,4.225Q14.075,4.45 14.15,4.8L14.4,6H19Q19.425,6 19.712,6.287Q20,6.575 20,7V15Q20,15.425 19.712,15.712Q19.425,16 19,16H13.825Q13.475,16 13.2,15.775Q12.925,15.55 12.85,15.2L12.6,14H7V20Q7,20.425 6.713,20.712Q6.425,21 6,21ZM12.5,10ZM14.65,14H18V8H12.75L12.35,6H7V12H14.25Z"/>
|
||||
</vector>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M10.59 4.59C10.21 4.21 9.7 4 9.17 4H4c-1.1 0-1.99 0.9 -1.99 2L2 18c0 1.1 0.9 2 2 2h16c1.1 0 2-0.9 2-2V8c0-1.1-0.9-2-2-2h-8l-1.41-1.41z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M4,20Q3.175,20 2.588,19.413Q2,18.825 2,18V6Q2,5.175 2.588,4.588Q3.175,4 4,4H9.175Q9.575,4 9.938,4.15Q10.3,4.3 10.575,4.575L12,6H20Q20.825,6 21.413,6.588Q22,7.175 22,8V18Q22,18.825 21.413,19.413Q20.825,20 20,20Z"/>
|
||||
</vector>
|
|
@ -1,10 +0,0 @@
|
|||
<!-- drawable/food_croissant.xml -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M22,19L19,17L22,15V19M15,15L19,9L22,13L18,16L15,15M5,17L2,19V15L5,17M9,15L6,16L2,13L5,9L9,15M14,6L18,8L13,15H11L6,8L10,6H14Z" />
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_fullscreen.xml
Normal file
10
app/src/main/res/drawable/ic_fullscreen.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6,19Q5.575,19 5.287,18.712Q5,18.425 5,18V15Q5,14.575 5.287,14.287Q5.575,14 6,14Q6.425,14 6.713,14.287Q7,14.575 7,15V17H9Q9.425,17 9.713,17.288Q10,17.575 10,18Q10,18.425 9.713,18.712Q9.425,19 9,19ZM6,10Q5.575,10 5.287,9.712Q5,9.425 5,9V6Q5,5.575 5.287,5.287Q5.575,5 6,5H9Q9.425,5 9.713,5.287Q10,5.575 10,6Q10,6.425 9.713,6.713Q9.425,7 9,7H7V9Q7,9.425 6.713,9.712Q6.425,10 6,10ZM15,19Q14.575,19 14.288,18.712Q14,18.425 14,18Q14,17.575 14.288,17.288Q14.575,17 15,17H17V15Q17,14.575 17.288,14.287Q17.575,14 18,14Q18.425,14 18.712,14.287Q19,14.575 19,15V18Q19,18.425 18.712,18.712Q18.425,19 18,19ZM18,10Q17.575,10 17.288,9.712Q17,9.425 17,9V7H15Q14.575,7 14.288,6.713Q14,6.425 14,6Q14,5.575 14.288,5.287Q14.575,5 15,5H18Q18.425,5 18.712,5.287Q19,5.575 19,6V9Q19,9.425 18.712,9.712Q18.425,10 18,10Z"/>
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_gift.xml
Normal file
10
app/src/main/res/drawable/ic_gift.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M4,17V19Q4,19 4,19Q4,19 4,19H20Q20,19 20,19Q20,19 20,19V17ZM4,21Q3.175,21 2.588,20.413Q2,19.825 2,19V8Q2,7.175 2.588,6.588Q3.175,6 4,6H6.2Q6.075,5.775 6.037,5.525Q6,5.275 6,5Q6,3.75 6.875,2.875Q7.75,2 9,2Q9.75,2 10.387,2.387Q11.025,2.775 11.5,3.35L12,4L12.5,3.35Q12.95,2.75 13.6,2.375Q14.25,2 15,2Q16.25,2 17.125,2.875Q18,3.75 18,5Q18,5.275 17.962,5.525Q17.925,5.775 17.8,6H20Q20.825,6 21.413,6.588Q22,7.175 22,8V19Q22,19.825 21.413,20.413Q20.825,21 20,21ZM4,14H20V8Q20,8 20,8Q20,8 20,8H14.9L16.425,10.075Q16.65,10.375 16.562,10.762Q16.475,11.15 16.2,11.425Q15.875,11.675 15.475,11.6Q15.075,11.525 14.825,11.2L12,7.4L9.175,11.225Q8.9,11.575 8.488,11.637Q8.075,11.7 7.8,11.425Q7.45,11.175 7.388,10.775Q7.325,10.375 7.575,10.05L9.05,8H4Q4,8 4,8Q4,8 4,8ZM9,6Q9.425,6 9.713,5.713Q10,5.425 10,5Q10,4.575 9.713,4.287Q9.425,4 9,4Q8.575,4 8.288,4.287Q8,4.575 8,5Q8,5.425 8.288,5.713Q8.575,6 9,6ZM15,6Q15.425,6 15.713,5.713Q16,5.425 16,5Q16,4.575 15.713,4.287Q15.425,4 15,4Q14.575,4 14.288,4.287Q14,4.575 14,5Q14,5.425 14.288,5.713Q14.575,6 15,6Z"/>
|
||||
</vector>
|
|
@ -1,24 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-0.9 0.92 c-0.5 0.51 -0.86 0.97 -1.04 1.69-0.08 0.32 -0.13 0.68 -0.13 1.14h-2v-0.5c0-0.46 0.08 -0.9 0.22 -1.31 0.2 -0.58 0.53 -1.1 0.95 -1.52l1.24-1.26c0.46-0.44 0.68 -1.1 0.55 -1.8-0.13-0.72-0.69-1.33-1.39-1.53-1.11-0.31-2.14 0.32 -2.47 1.27-0.12 0.37 -0.43 0.65 -0.82 0.65 h-0.3C8.4 9 8 8.44 8.16 7.88c0.43-1.47 1.68-2.59 3.23-2.83 1.52-0.24 2.97 0.55 3.87 1.8 1.18 1.63 0.83 3.38-0.19 4.4z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11.95,18Q12.475,18 12.838,17.637Q13.2,17.275 13.2,16.75Q13.2,16.225 12.838,15.863Q12.475,15.5 11.95,15.5Q11.425,15.5 11.062,15.863Q10.7,16.225 10.7,16.75Q10.7,17.275 11.062,17.637Q11.425,18 11.95,18ZM12.1,7.7Q12.8,7.7 13.225,8.087Q13.65,8.475 13.65,9.1Q13.65,9.525 13.363,9.962Q13.075,10.4 12.55,10.875Q11.8,11.525 11.45,12.125Q11.1,12.725 11.1,13.325Q11.1,13.675 11.363,13.912Q11.625,14.15 11.975,14.15Q12.325,14.15 12.6,13.9Q12.875,13.65 12.95,13.275Q13.025,12.85 13.288,12.488Q13.55,12.125 14.15,11.55Q14.925,10.825 15.238,10.225Q15.55,9.625 15.55,8.9Q15.55,7.625 14.588,6.812Q13.625,6 12.1,6Q11.05,6 10.238,6.4Q9.425,6.8 8.975,7.625Q8.8,7.95 8.85,8.262Q8.9,8.575 9.2,8.775Q9.525,8.975 9.913,8.9Q10.3,8.825 10.55,8.475Q10.825,8.1 11.213,7.9Q11.6,7.7 12.1,7.7ZM12,22Q9.95,22 8.125,21.212Q6.3,20.425 4.938,19.075Q3.575,17.725 2.788,15.9Q2,14.075 2,12Q2,9.925 2.788,8.1Q3.575,6.275 4.938,4.925Q6.3,3.575 8.125,2.787Q9.95,2 12,2Q14.1,2 15.925,2.787Q17.75,3.575 19.1,4.925Q20.45,6.275 21.225,8.1Q22,9.925 22,12Q22,14.075 21.225,15.9Q20.45,17.725 19.1,19.075Q17.75,20.425 15.925,21.212Q14.1,22 12,22Z"/>
|
||||
</vector>
|
|
@ -1,10 +1,10 @@
|
|||
<vector android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportHeight="24"
|
||||
android:viewportWidth="24"
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13,3c-4.97,0 -9,4.03 -9,9L1,12l3.89,3.89 0.07,0.14L9,12L6,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.93,0 -3.68,-0.79 -4.94,-2.06l-1.42,1.42C8.27,19.99 10.51,21 13,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,8v5l4.28,2.54 0.72,-1.21 -3.5,-2.08L13.5,8L12,8z" />
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13,11.6 L15.5,14.1Q15.775,14.375 15.775,14.8Q15.775,15.225 15.5,15.5Q15.225,15.775 14.8,15.775Q14.375,15.775 14.1,15.5L11.3,12.7Q11.15,12.55 11.075,12.362Q11,12.175 11,11.975V8Q11,7.575 11.288,7.287Q11.575,7 12,7Q12.425,7 12.713,7.287Q13,7.575 13,8ZM12,21Q8.975,21 6.575,19.212Q4.175,17.425 3.35,14.55Q3.225,14.1 3.438,13.7Q3.65,13.3 4.1,13.2Q4.525,13.1 4.863,13.387Q5.2,13.675 5.325,14.1Q5.975,16.3 7.838,17.65Q9.7,19 12,19Q14.925,19 16.962,16.962Q19,14.925 19,12Q19,9.075 16.962,7.037Q14.925,5 12,5Q10.275,5 8.775,5.8Q7.275,6.6 6.25,8H8Q8.425,8 8.713,8.287Q9,8.575 9,9Q9,9.425 8.713,9.712Q8.425,10 8,10H4Q3.575,10 3.288,9.712Q3,9.425 3,9V5Q3,4.575 3.288,4.287Q3.575,4 4,4Q4.425,4 4.713,4.287Q5,4.575 5,5V6.35Q6.275,4.75 8.113,3.875Q9.95,3 12,3Q13.875,3 15.513,3.712Q17.15,4.425 18.363,5.637Q19.575,6.85 20.288,8.487Q21,10.125 21,12Q21,13.875 20.288,15.512Q19.575,17.15 18.363,18.362Q17.15,19.575 15.513,20.288Q13.875,21 12,21Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,23 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M10 19v-5h4v5c0 0.55 0.45 1 1 1h3c0.55 0 1-0.45 1-1v-7h1.7c0.46 0 0.68-0.57 0.33 -0.87L12.67 3.6c-0.38-0.34-0.96-0.34-1.34 0l-8.36 7.53c-0.34 0.3 -0.13 0.87 0.33 0.87 H5v7c0 0.55 0.45 1 1 1h3c0.55 0 1-0.45 1-1z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M6,21Q5.175,21 4.588,20.413Q4,19.825 4,19V10Q4,9.525 4.213,9.1Q4.425,8.675 4.8,8.4L10.8,3.9Q11.075,3.7 11.375,3.6Q11.675,3.5 12,3.5Q12.325,3.5 12.625,3.6Q12.925,3.7 13.2,3.9L19.2,8.4Q19.575,8.675 19.788,9.1Q20,9.525 20,10V19Q20,19.825 19.413,20.413Q18.825,21 18,21H14V14H10V21Z"/>
|
||||
</vector>
|
|
@ -1,25 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright (c) 2020 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M19 5v14H5V5h14m0-2H5c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2V5c0-1.1-0.9-2-2-2zm-4.86 8.86l-3 3.87L9 13.14 6 17h12l-3.86-5.14z" />
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M7,17H17Q17.3,17 17.45,16.725Q17.6,16.45 17.4,16.2L14.65,12.525Q14.5,12.325 14.25,12.325Q14,12.325 13.85,12.525L11.25,16L9.4,13.525Q9.25,13.325 9,13.325Q8.75,13.325 8.6,13.525L6.6,16.2Q6.4,16.45 6.55,16.725Q6.7,17 7,17ZM5,21Q4.175,21 3.587,20.413Q3,19.825 3,19V5Q3,4.175 3.587,3.587Q4.175,3 5,3H19Q19.825,3 20.413,3.587Q21,4.175 21,5V19Q21,19.825 20.413,20.413Q19.825,21 19,21ZM5,19H19Q19,19 19,19Q19,19 19,19V5Q19,5 19,5Q19,5 19,5H5Q5,5 5,5Q5,5 5,5V19Q5,19 5,19Q5,19 5,19ZM5,5Q5,5 5,5Q5,5 5,5V19Q5,19 5,19Q5,19 5,19Q5,19 5,19Q5,19 5,19V5Q5,5 5,5Q5,5 5,5Z"/>
|
||||
</vector>
|
|
@ -1,23 +1,10 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" />
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,17Q12.425,17 12.713,16.712Q13,16.425 13,16V11.975Q13,11.55 12.713,11.275Q12.425,11 12,11Q11.575,11 11.288,11.287Q11,11.575 11,12V16.025Q11,16.45 11.288,16.725Q11.575,17 12,17ZM12,9Q12.425,9 12.713,8.712Q13,8.425 13,8Q13,7.575 12.713,7.287Q12.425,7 12,7Q11.575,7 11.288,7.287Q11,7.575 11,8Q11,8.425 11.288,8.712Q11.575,9 12,9ZM12,22Q9.925,22 8.1,21.212Q6.275,20.425 4.925,19.075Q3.575,17.725 2.788,15.9Q2,14.075 2,12Q2,9.925 2.788,8.1Q3.575,6.275 4.925,4.925Q6.275,3.575 8.1,2.787Q9.925,2 12,2Q14.075,2 15.9,2.787Q17.725,3.575 19.075,4.925Q20.425,6.275 21.212,8.1Q22,9.925 22,12Q22,14.075 21.212,15.9Q20.425,17.725 19.075,19.075Q17.725,20.425 15.9,21.212Q14.075,22 12,22ZM12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12ZM12,20Q15.325,20 17.663,17.663Q20,15.325 20,12Q20,8.675 17.663,6.337Q15.325,4 12,4Q8.675,4 6.338,6.337Q4,8.675 4,12Q4,15.325 6.338,17.663Q8.675,20 12,20Z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,23 +1,10 @@
|
|||
<!--
|
||||
~ Copyright (c) 2019 Hemanth Savarala.
|
||||
~
|
||||
~ Licensed under the GNU General Public License v3
|
||||
~
|
||||
~ This is free software: you can redistribute it and/or modify it under
|
||||
~ the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
||||
~
|
||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
~ See the GNU General Public License for more details.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M20,5L4,5c-1.1,0 -1.99,0.9 -1.99,2L2,17c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,7c0,-1.1 -0.9,-2 -2,-2zM11,8h2v2h-2L11,8zM11,11h2v2h-2v-2zM8,8h2v2L8,10L8,8zM8,11h2v2L8,13v-2zM7,13L5,13v-2h2v2zM7,10L5,10L5,8h2v2zM16,17L8,17v-2h8v2zM16,13h-2v-2h2v2zM16,10h-2L14,8h2v2zM19,13h-2v-2h2v2zM19,10h-2L17,8h2v2z" />
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M3,21Q2.175,21 1.588,20.413Q1,19.825 1,19V6Q1,5.175 1.588,4.588Q2.175,4 3,4H21Q21.825,4 22.413,4.588Q23,5.175 23,6V19Q23,19.825 22.413,20.413Q21.825,21 21,21ZM9,10H11V8H9ZM5,10H7V8H5ZM8.5,17H15.5Q15.7,17 15.85,16.85Q16,16.7 16,16.5Q16,16.3 15.85,16.15Q15.7,16 15.5,16H8.5Q8.3,16 8.15,16.15Q8,16.3 8,16.5Q8,16.7 8.15,16.85Q8.3,17 8.5,17ZM13,10H15V8H13ZM9,14H11V12H9ZM5,14H7V12H5ZM13,14H15V12H13ZM17,10H19V8H17ZM17,14H19V12H17Z"/>
|
||||
</vector>
|
||||
|
|
10
app/src/main/res/drawable/ic_keyboard_arrow_down.xml
Normal file
10
app/src/main/res/drawable/ic_keyboard_arrow_down.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,14.975Q11.8,14.975 11.613,14.9Q11.425,14.825 11.3,14.7L6.7,10.1Q6.425,9.825 6.425,9.4Q6.425,8.975 6.7,8.7Q6.975,8.425 7.4,8.425Q7.825,8.425 8.1,8.7L12,12.6L15.9,8.7Q16.175,8.425 16.6,8.425Q17.025,8.425 17.3,8.7Q17.575,8.975 17.575,9.4Q17.575,9.825 17.3,10.1L12.7,14.7Q12.55,14.85 12.375,14.912Q12.2,14.975 12,14.975Z"/>
|
||||
</vector>
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@color/md_white_1000"
|
||||
android:pathData="M8.12 9.29L12 13.17l3.88-3.88c0.39-0.39 1.02-0.39 1.41 0 0.39 0.39 0.39 1.02 0 1.41l-4.59 4.59c-0.39 0.39 -1.02 0.39 -1.41 0L6.7 10.7c-0.39-0.39-0.39-1.02 0-1.41 0.39 -0.38 1.03-0.39 1.42 0z" />
|
||||
</vector>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue