1
0
mirror of https://github.com/tuskyapp/Tusky synced 2025-02-09 20:40:34 +01:00

improved color scheme & theming (#4507)

Follow up to https://github.com/tuskyapp/Tusky/pull/3921

- no more hardcoded `tusky_blue`, instead the `colorPrimary` attribute
is used. This will help us when adding more themes, e.g a dynamic color
one.
- The `colorPrimary` of the dark theme is now lighter for more contrast
and subsequently the `colorOnPrimary` is now dark grey instead of white.
- `tusky_red_lighter` is now a bit more red than before
- Tweaked color usage in a few places for better contrast

I think this looks a bit unfamiliar but overall better and the higher
contrast makes things noticeably easier to read.

<img
src="https://github.com/tuskyapp/Tusky/assets/10157047/4cbb92d8-b772-4e94-bc15-c4baf0e5473f"
width="260"/>
This commit is contained in:
Konrad Pozniak 2024-06-19 16:50:35 +02:00 committed by GitHub
parent 125483db61
commit dcbd6d558c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
68 changed files with 272 additions and 233 deletions

View File

@ -84,7 +84,6 @@ class ListsActivity : BaseActivity() {
)
binding.swipeRefreshLayout.setOnRefreshListener { viewModel.retryLoading() }
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
lifecycleScope.launch {
viewModel.state.collect(this@ListsActivity::update)

View File

@ -58,6 +58,7 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.target.FixedSizeDrawable
import com.bumptech.glide.request.transition.Transition
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
@ -698,8 +699,8 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
startActivityWithSlideInAnimation(AnnouncementsActivity.newIntent(context))
}
badgeStyle = BadgeStyle().apply {
textColor = ColorHolder.fromColor(MaterialColors.getColor(binding.mainDrawer, com.google.android.material.R.attr.colorOnPrimary))
color = ColorHolder.fromColor(MaterialColors.getColor(binding.mainDrawer, com.google.android.material.R.attr.colorPrimary))
textColor = ColorHolder.fromColor(MaterialColors.getColor(binding.mainDrawer, materialR.attr.colorOnPrimary))
color = ColorHolder.fromColor(MaterialColors.getColor(binding.mainDrawer, materialR.attr.colorPrimary))
}
},
DividerDrawerItem(),
@ -856,7 +857,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
if (tabs[position].id == DIRECT) {
val badge = tab.orCreateBadge
badge.isVisible = accountManager.activeAccount?.hasDirectMessageBadge ?: false
badge.backgroundColor = MaterialColors.getColor(binding.mainDrawer, com.google.android.material.R.attr.colorPrimary)
badge.backgroundColor = MaterialColors.getColor(binding.mainDrawer, materialR.attr.colorPrimary)
directMessageTab = tab
}
}.also { it.attach() }

View File

@ -49,6 +49,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.viewpager2.widget.MarginPageTransformer
import com.bumptech.glide.Glide
import com.google.android.material.R as materialR
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.chip.Chip
import com.google.android.material.color.MaterialColors
@ -189,9 +190,9 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
* Load colors and dimensions from resources
*/
private fun loadResources() {
toolbarColor = MaterialColors.getColor(this, com.google.android.material.R.attr.colorSurface, Color.BLACK)
toolbarColor = MaterialColors.getColor(this, materialR.attr.colorSurface, Color.BLACK)
statusBarColorTransparent = getColor(R.color.transparent_statusbar_background)
statusBarColorOpaque = MaterialColors.getColor(this, androidx.appcompat.R.attr.colorPrimaryDark, Color.BLACK)
statusBarColorOpaque = MaterialColors.getColor(this, materialR.attr.colorPrimaryDark, Color.BLACK)
avatarSize = resources.getDimension(R.dimen.account_activity_avatar_size)
titleVisibleHeight = resources.getDimensionPixelSize(R.dimen.account_activity_scroll_title_visible_height)
}
@ -458,7 +459,6 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
binding.swipeToRefreshLayout.isRefreshing = isRefreshing == true
}
}
binding.swipeToRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
}
private fun onAccountChanged(account: Account?) {

View File

@ -104,7 +104,6 @@ class AccountMediaFragment :
binding.swipeRefreshLayout.isEnabled = false
binding.swipeRefreshLayout.setOnRefreshListener { refreshContent() }
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
binding.statusView.visibility = View.GONE

View File

@ -11,6 +11,7 @@ import androidx.core.view.setPadding
import androidx.paging.PagingDataAdapter
import androidx.recyclerview.widget.DiffUtil
import com.bumptech.glide.Glide
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors
import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.databinding.ItemAccountMediaBinding
@ -47,7 +48,7 @@ class AccountMediaGridAdapter(
private val baseItemBackgroundColor = MaterialColors.getColor(
context,
com.google.android.material.R.attr.colorSurface,
materialR.attr.colorSurface,
Color.BLACK
)
private val videoIndicator = AppCompatResources.getDrawable(

View File

@ -138,7 +138,6 @@ class AccountListFragment :
binding.recyclerView.addOnScrollListener(scrollListener)
binding.swipeRefreshLayout.setOnRefreshListener { fetchAccounts(adapter) }
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
fetchAccounts(adapter)
}

View File

@ -91,7 +91,6 @@ class AnnouncementsActivity :
}
binding.swipeRefreshLayout.setOnRefreshListener(this::refreshAnnouncements)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
binding.announcementsList.setHasFixedSize(true)
binding.announcementsList.layoutManager = LinearLayoutManager(this)

View File

@ -43,6 +43,7 @@ import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.annotation.AttrRes
import androidx.annotation.ColorInt
import androidx.annotation.StringRes
import androidx.annotation.VisibleForTesting
@ -61,6 +62,7 @@ import androidx.transition.TransitionManager
import com.canhub.cropper.CropImage
import com.canhub.cropper.CropImageContract
import com.canhub.cropper.options
import com.google.android.material.R as materialR
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
import com.google.android.material.color.MaterialColors
@ -821,24 +823,26 @@ class ComposeActivity :
binding.descriptionMissingWarningButton.hide()
} else {
binding.composeHideMediaButton.show()
@ColorInt val color = if (contentWarningShown) {
@AttrRes val color = if (contentWarningShown) {
binding.composeHideMediaButton.setImageResource(R.drawable.ic_hide_media_24dp)
binding.composeHideMediaButton.isClickable = false
getColor(R.color.transparent_tusky_blue)
materialR.attr.colorPrimary
} else {
binding.composeHideMediaButton.isClickable = true
if (markMediaSensitive) {
binding.composeHideMediaButton.setImageResource(R.drawable.ic_hide_media_24dp)
getColor(R.color.tusky_blue)
materialR.attr.colorPrimary
} else {
binding.composeHideMediaButton.setImageResource(R.drawable.ic_eye_24dp)
MaterialColors.getColor(
binding.composeHideMediaButton,
android.R.attr.textColorTertiary
)
android.R.attr.textColorTertiary
}
}
binding.composeHideMediaButton.drawable.setTint(color)
binding.composeHideMediaButton.drawable.setTint(
MaterialColors.getColor(
binding.composeHideMediaButton,
color
)
)
var oneMediaWithoutDescription = false
for (media in viewModel.media.value) {
@ -856,14 +860,15 @@ class ComposeActivity :
// Can't reschedule a published status
enableButton(binding.composeScheduleButton, clickable = false, colorActive = false)
} else {
@ColorInt val color = if (binding.composeScheduleView.time == null) {
@ColorInt val color =
MaterialColors.getColor(
binding.composeScheduleButton,
android.R.attr.textColorTertiary
if (binding.composeScheduleView.time == null) {
android.R.attr.textColorTertiary
} else {
materialR.attr.colorPrimary
}
)
} else {
getColor(R.color.tusky_blue)
}
binding.composeScheduleButton.drawable.setTint(color)
}
}
@ -1242,22 +1247,24 @@ class ComposeActivity :
TransitionManager.beginDelayedTransition(
binding.composeContentWarningBar.parent as ViewGroup
)
@ColorInt val color = if (show) {
@AttrRes val color = if (show) {
binding.composeContentWarningBar.show()
binding.composeContentWarningField.setSelection(
binding.composeContentWarningField.text.length
)
binding.composeContentWarningField.requestFocus()
getColor(R.color.tusky_blue)
materialR.attr.colorPrimary
} else {
binding.composeContentWarningBar.hide()
binding.composeEditField.requestFocus()
MaterialColors.getColor(
binding.composeContentWarningButton,
android.R.attr.textColorTertiary
)
android.R.attr.textColorTertiary
}
binding.composeContentWarningButton.drawable.setTint(color)
binding.composeContentWarningButton.drawable.setTint(
MaterialColors.getColor(
binding.composeHideMediaButton,
color
)
)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {

View File

@ -24,6 +24,8 @@ import android.graphics.RectF
import android.util.AttributeSet
import androidx.appcompat.content.res.AppCompatResources
import at.connyduck.sparkbutton.helpers.Utils
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors
import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.view.MediaPreviewImageView
@ -37,7 +39,7 @@ class ProgressImageView
private val progressRect = RectF()
private val biggerRect = RectF()
private val circlePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = context.getColor(R.color.tusky_blue)
color = MaterialColors.getColor(this@ProgressImageView, materialR.attr.colorPrimary)
strokeWidth = Utils.dpToPx(context, 4).toFloat()
style = Paint.Style.STROKE
}
@ -46,13 +48,15 @@ class ProgressImageView
}
private val markBgPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
style = Paint.Style.FILL
color = context.getColor(R.color.tusky_grey_10)
color = MaterialColors.getColor(this@ProgressImageView, android.R.attr.colorBackground)
}
private val captionDrawable = AppCompatResources.getDrawable(
context,
R.drawable.spellcheck
)!!.apply {
setTint(Color.WHITE)
setTint(
MaterialColors.getColor(this@ProgressImageView, android.R.attr.textColorTertiary)
)
}
private val circleRadius = Utils.dpToPx(context, 14)
private val circleMargin = Utils.dpToPx(context, 14)
@ -68,8 +72,10 @@ class ProgressImageView
}
fun setChecked(checked: Boolean) {
markBgPaint.color =
context.getColor(if (checked) R.color.tusky_blue else R.color.tusky_grey_10)
val backgroundColor = if (checked) materialR.attr.colorPrimary else android.R.attr.colorBackground
val foregroundColor = if (checked) materialR.attr.colorOnPrimary else android.R.attr.textColorTertiary
markBgPaint.color = MaterialColors.getColor(this, backgroundColor)
captionDrawable.setTint(MaterialColors.getColor(this, foregroundColor))
invalidate()
}

View File

@ -109,7 +109,7 @@ class ConversationsFragment :
setupRecyclerView(adapter)
initSwipeToRefresh()
binding.swipeRefreshLayout.setOnRefreshListener { refreshContent() }
adapter.addLoadStateListener { loadState ->
if (loadState.refresh != LoadState.Loading && loadState.source.refresh != LoadState.Loading) {
@ -245,11 +245,6 @@ class ConversationsFragment :
adapter?.refresh()
}
private fun initSwipeToRefresh() {
binding.swipeRefreshLayout.setOnRefreshListener { refreshContent() }
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
}
override fun onReblog(reblog: Boolean, position: Int) {
// its impossible to reblog private messages
}

View File

@ -48,7 +48,6 @@ class FiltersActivity : BaseActivity(), FiltersListener {
}
binding.swipeRefreshLayout.setOnRefreshListener { reloadFilters() }
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
setTitle(R.string.pref_title_timeline_filters)

View File

@ -137,7 +137,6 @@ class NotificationsFragment :
// Setup the SwipeRefreshLayout.
binding.swipeRefreshLayout.setOnRefreshListener(this)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
// Setup the RecyclerView.
binding.recyclerView.setHasFixedSize(true)

View File

@ -102,6 +102,7 @@ class ReportStatusesFragment :
startActivity(intent)
}
}
Attachment.Type.UNKNOWN -> {
}
}
@ -111,7 +112,7 @@ class ReportStatusesFragment :
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
handleClicks()
initStatusesView()
setupSwipeRefreshLayout()
binding.swipeRefreshLayout.setOnRefreshListener(this)
}
override fun onDestroyView() {
@ -138,6 +139,7 @@ class ReportStatusesFragment :
onRefresh()
true
}
else -> false
}
}
@ -148,12 +150,6 @@ class ReportStatusesFragment :
adapter?.refresh()
}
private fun setupSwipeRefreshLayout() {
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
binding.swipeRefreshLayout.setOnRefreshListener(this)
}
private fun initStatusesView() {
val statusDisplayOptions = StatusDisplayOptions(
animateAvatars = false,

View File

@ -77,7 +77,6 @@ class ScheduledStatusActivity :
}
binding.swipeRefreshLayout.setOnRefreshListener(this::refreshStatuses)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
binding.scheduledTootList.setHasFixedSize(true)
binding.scheduledTootList.layoutManager = LinearLayoutManager(this)

View File

@ -62,7 +62,7 @@ abstract class SearchFragment<T : Any> :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val adapter = initAdapter()
setupSwipeRefreshLayout()
binding.swipeRefreshLayout.setOnRefreshListener(this)
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
subscribeObservables(adapter)
}
@ -74,11 +74,6 @@ abstract class SearchFragment<T : Any> :
super.onDestroyView()
}
private fun setupSwipeRefreshLayout() {
binding.swipeRefreshLayout.setOnRefreshListener(this)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
}
private fun subscribeObservables(adapter: PagingDataAdapter<T, *>) {
viewLifecycleOwner.lifecycleScope.launch {
data.collectLatest { pagingData ->
@ -131,6 +126,7 @@ abstract class SearchFragment<T : Any> :
onRefresh()
true
}
else -> false
}
}

View File

@ -373,7 +373,6 @@ class TimelineFragment :
private fun setupSwipeRefreshLayout() {
binding.swipeRefreshLayout.isEnabled = isSwipeToRefreshEnabled
binding.swipeRefreshLayout.setOnRefreshListener(this)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
}
private fun setupRecyclerView(adapter: TimelinePagingAdapter) {

View File

@ -72,7 +72,7 @@ class TrendingTagsFragment :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val adapter = TrendingTagsAdapter(::onViewTag)
this.adapter = adapter
setupSwipeRefreshLayout()
binding.swipeRefreshLayout.setOnRefreshListener(this)
setupRecyclerView(adapter)
adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
@ -106,11 +106,6 @@ class TrendingTagsFragment :
super.onDestroyView()
}
private fun setupSwipeRefreshLayout() {
binding.swipeRefreshLayout.setOnRefreshListener(this)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
}
private fun setupLayoutManager(adapter: TrendingTagsAdapter, columnCount: Int) {
binding.recyclerView.layoutManager = GridLayoutManager(context, columnCount).apply {
spanSizeLookup = object : SpanSizeLookup() {

View File

@ -126,7 +126,6 @@ class ViewThreadFragment :
this.adapter = adapter
binding.swipeRefreshLayout.setOnRefreshListener(this)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
binding.recyclerView.setHasFixedSize(true)
binding.recyclerView.layoutManager = LinearLayoutManager(context)

View File

@ -75,7 +75,6 @@ class ViewEditsFragment :
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
binding.swipeRefreshLayout.setOnRefreshListener(this)
binding.swipeRefreshLayout.setColorSchemeResources(R.color.tusky_blue)
binding.recyclerView.setHasFixedSize(true)
binding.recyclerView.layoutManager = LinearLayoutManager(context)

View File

@ -43,6 +43,7 @@ import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.net.toUri
import androidx.preference.PreferenceManager
import at.connyduck.sparkbutton.helpers.Utils
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors
import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.entity.HashTag
@ -329,7 +330,7 @@ private fun openLinkInBrowser(uri: Uri?, context: Context) {
fun openLinkInCustomTab(uri: Uri, context: Context) {
val toolbarColor = MaterialColors.getColor(
context,
com.google.android.material.R.attr.colorSurface,
materialR.attr.colorSurface,
Color.BLACK
)
val navigationbarColor = MaterialColors.getColor(

View File

@ -26,6 +26,8 @@ import android.view.View
import androidx.annotation.ColorInt
import androidx.annotation.Dimension
import androidx.core.content.res.use
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors
import com.keylesspalace.tusky.R
import kotlin.math.max
@ -127,37 +129,29 @@ class GraphView @JvmOverloads constructor(
private fun initFromXML(attr: AttributeSet?) {
context.obtainStyledAttributes(attr, R.styleable.GraphView).use { a ->
primaryLineColor = context.getColor(
a.getResourceId(
R.styleable.GraphView_primaryLineColor,
R.color.tusky_blue
)
primaryLineColor = a.getColor(
R.styleable.GraphView_primaryLineColor,
MaterialColors.getColor(this, materialR.attr.colorPrimary)
)
secondaryLineColor = context.getColor(
a.getResourceId(
R.styleable.GraphView_secondaryLineColor,
R.color.tusky_red
)
secondaryLineColor = a.getColor(
R.styleable.GraphView_secondaryLineColor,
context.getColor(R.color.warning_color)
)
lineWidth = a.getDimensionPixelSize(
lineWidth = a.getDimension(
R.styleable.GraphView_lineWidth,
R.dimen.graph_line_thickness
).toFloat()
graphColor = context.getColor(
a.getResourceId(
R.styleable.GraphView_graphColor,
R.color.colorBackground
)
context.resources.getDimension(R.dimen.graph_line_thickness)
)
metaColor = context.getColor(
a.getResourceId(
R.styleable.GraphView_metaColor,
R.color.dividerColor
)
graphColor = a.getColor(
R.styleable.GraphView_graphColor,
context.getColor(R.color.colorBackground)
)
metaColor = a.getColor(
R.styleable.GraphView_metaColor,
context.getColor(R.color.dividerColor)
)
proportionalTrending = a.getBoolean(

View File

@ -20,6 +20,7 @@ import android.graphics.Color
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.core.content.res.use
import com.google.android.material.R as materialR
import com.google.android.material.card.MaterialCardView
import com.google.android.material.color.MaterialColors
import com.keylesspalace.tusky.R
@ -40,7 +41,7 @@ class LicenseCard
setCardBackgroundColor(
MaterialColors.getColor(
context,
com.google.android.material.R.attr.colorSurface,
materialR.attr.colorSurface,
Color.BLACK
)
)

View File

@ -0,0 +1,37 @@
/* Copyright 2024 Tusky contributors
*
* This file is a part of Tusky.
*
* This program 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.
*
* Tusky 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.
*
* You should have received a copy of the GNU General Public License along with Tusky; if not,
* see <http://www.gnu.org/licenses>. */
package com.keylesspalace.tusky.view
import android.content.Context
import android.util.AttributeSet
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors
/**
* SwipeRefreshLayout does not allow theming of the color scheme,
* so we use this class to still have a single point to change its colors.
*/
class TuskySwipeRefreshLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null
) : SwipeRefreshLayout(context, attrs) {
init {
setColorSchemeColors(
MaterialColors.getColor(this, materialR.attr.colorPrimary)
)
}
}

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- attr not working here for Android 5? -->
<item android:state_checked="false" android:color="@color/textColorTertiary"/>
<item android:state_checked="true" android:color="@color/tusky_blue"/>
</selector>
<item android:state_checked="false" android:color="?android:attr/textColorTertiary"/>
<item android:state_checked="true" android:color="?attr/colorPrimary"/>
</selector>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:color="?android:attr/textColorTertiary"/>
<item android:state_focused="true" android:color="@color/tusky_blue"/>
</selector>
<item android:state_focused="true" android:color="?attr/colorPrimary"/>
</selector>

View File

@ -4,5 +4,5 @@
android:width="18dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="@color/tusky_blue" android:pathData="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" />
</vector>
<path android:fillColor="?attr/colorPrimary" android:pathData="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" />
</vector>

View File

@ -3,7 +3,7 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/tusky_blue">
android:tint="?attr/colorPrimary">
<path
android:fillColor="@android:color/white"
android:pathData="M14.4,6L14,4H5v17h2v-7h5.6l0.4,2h7V6z"/>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/tusky_blue"
android:fillColor="?attr/colorPrimary"
android:pathData="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/tusky_blue"
android:fillColor="?attr/colorPrimary"
android:pathData="M15,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM6,10L6,7L4,7v3L1,10v2h3v3h2v-3h3v-2L6,10zM15,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
</vector>

View File

@ -4,5 +4,5 @@
android:pathData="M21.282,12A9.282,9.282 0,0 1,12 21.282,9.282 9.282,0 0,1 2.718,12 9.282,9.282 0,0 1,12 2.718,9.282 9.282,0 0,1 21.282,12Z"
android:strokeAlpha="1" android:strokeColor="#00000000"
android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="8"/>
<path android:fillAlpha="1" android:fillColor="@color/tusky_blue" android:pathData="M10,16.5l6,-4.5 -6,-4.5v9zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
<path android:fillAlpha="1" android:fillColor="?attr/colorPrimary" android:pathData="M10,16.5l6,-4.5 -6,-4.5v9zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/tusky_blue"
android:fillColor="?attr/colorPrimary"
android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM9,17L7,17v-7h2v7zM13,17h-2L11,7h2v10zM17,17h-2v-4h2v4z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/tusky_blue"
android:fillColor="?attr/colorPrimary"
android:pathData="M17,2L17,5L5,5L5,11L7,11L7,7L17,7L17,10L21,6L17,2zM9.75,9.75L9.75,14.25L14.25,14.25L14.25,9.75L9.75,9.75zM17,13L17,17L7,17L7,14L3,18L7,22L7,19L19,19L19,13L17,13z"/>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/tusky_blue"
android:fillColor="?attr/colorPrimary"
android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
</vector>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/tusky_blue" />
</shape>
<solid android:color="?attr/colorPrimary" />
</shape>

View File

@ -25,10 +25,10 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lineWidth="2sp"
app:metaColor="@color/tusky_blue_light"
app:primaryLineColor="@color/tusky_blue"
app:metaColor="?android:attr/textColorTertiary"
app:primaryLineColor="?attr/colorPrimary"
app:proportionalTrending="true"
app:secondaryLineColor="@color/tusky_red" />
app:secondaryLineColor="@color/warning_color" />
<TextView
android:id="@+id/current_usage"
@ -38,7 +38,7 @@
android:paddingStart="6dp"
android:textAlignment="textEnd"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/tusky_blue"
android:textColor="?attr/colorPrimary"
android:textSize="8sp"
android:textStyle="normal"
app:layout_constrainedWidth="true"
@ -55,7 +55,7 @@
android:paddingStart="6dp"
android:textAlignment="textEnd"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/tusky_red"
android:textColor="@color/warning_color"
android:textSize="8sp"
android:textStyle="normal"
app:layout_constrainedWidth="true"
@ -99,7 +99,7 @@
android:importantForAccessibility="no"
android:textAlignment="textEnd"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/tusky_blue"
android:textColor="?attr/colorPrimary"
android:textStyle="normal|bold"
app:layout_constrainedWidth="false"
app:layout_constraintEnd_toStartOf="@id/barrier2"
@ -129,7 +129,7 @@
android:importantForAccessibility="no"
android:textAlignment="textEnd"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/tusky_red"
android:textColor="@color/warning_color"
android:textStyle="normal|bold"
app:layout_constrainedWidth="false"
app:layout_constraintEnd_toStartOf="@id/barrier2"

View File

@ -21,7 +21,7 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -50,7 +50,7 @@
tools:src="@drawable/errorphant_error"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/topProgressBar"

View File

@ -70,7 +70,7 @@
</com.google.android.material.appbar.AppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -96,7 +96,7 @@
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBar"

View File

@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="640dp"
android:layout_height="match_parent"
@ -44,7 +44,7 @@
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/initialProgressBar"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeToRefreshLayout"
@ -210,7 +210,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/account_note_saved"
android:textColor="@color/tusky_blue"
android:textColor="?attr/colorPrimary"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/accountNoteTextInputLayout" />
@ -461,7 +461,8 @@
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:contentDescription="@string/action_mention"
app:srcCompat="@drawable/ic_create_24dp" />
app:srcCompat="@drawable/ic_create_24dp"
app:tint="?attr/colorOnPrimary" />
<include layout="@layout/item_status_bottom_sheet" />
@ -479,4 +480,4 @@
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>

View File

@ -15,7 +15,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -42,7 +42,7 @@
tools:src="@drawable/errorphant_error"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<include layout="@layout/item_status_bottom_sheet" />

View File

@ -28,85 +28,89 @@
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/label_filter_title">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filterTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"/>
android:inputType="textNoSuggestions" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
style="@style/TextAppearance.Material3.TitleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/label_filter_keywords"
style="@style/TextAppearance.Material3.TitleSmall"
android:textColor="?attr/colorAccent" />
<com.google.android.material.chip.ChipGroup
android:id="@+id/keywordChips"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/keywordChips"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.chip.Chip
android:id="@+id/actionChip"
style="@style/Widget.MaterialComponents.Chip.Action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="false"
android:text="@string/action_add"
app:chipIcon="@drawable/ic_plus_24dp"
app:chipSurfaceColor="@color/tusky_blue" />
<com.google.android.material.chip.Chip
android:id="@+id/actionChip"
style="@style/Widget.MaterialComponents.Chip.Action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="false"
android:text="@string/action_add"
android:textColor="?attr/colorOnPrimary"
app:chipIcon="@drawable/ic_plus_24dp"
app:chipIconTint="?attr/colorOnPrimary"
app:chipSurfaceColor="?attr/colorPrimary" />
</com.google.android.material.chip.ChipGroup>
<TextView
style="@style/TextAppearance.Material3.TitleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/label_filter_action"
style="@style/TextAppearance.Material3.TitleSmall"
android:textColor="?attr/colorAccent" />
<RadioGroup
android:id="@+id/filter_action_group"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/filter_action_warn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="@string/filter_description_warn"/>
android:text="@string/filter_description_warn" />
<RadioButton
android:id="@+id/filter_action_hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="@string/filter_description_hide"/>
android:text="@string/filter_description_hide" />
</RadioGroup>
<TextView
style="@style/TextAppearance.Material3.TitleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/label_duration"
style="@style/TextAppearance.Material3.TitleSmall"
android:textColor="?attr/colorAccent" />
<Spinner
android:id="@+id/filterDurationSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:entries="@array/filter_duration_names"
/>
android:minHeight="48dp" />
<TextView
style="@style/TextAppearance.Material3.TitleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/label_filter_context"
style="@style/TextAppearance.Material3.TitleSmall"
android:textColor="?attr/colorAccent" />
<com.google.android.material.switchmaterial.SwitchMaterial
@ -145,27 +149,27 @@
android:text="@string/pref_title_account_filter_keywords" />
<LinearLayout
style="?android:attr/buttonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:gravity="end"
style="?android:attr/buttonBarStyle">
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<Button
android:id="@+id/filter_delete_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/action_delete"
style="?android:attr/buttonBarButtonStyle" />
android:text="@string/action_delete" />
<Button
android:id="@+id/filter_save_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="@string/action_save"
style="?android:attr/buttonBarButtonStyle" />
android:text="@string/action_save" />
</LinearLayout>
</LinearLayout>

View File

@ -108,7 +108,7 @@
</com.google.android.material.textfield.TextInputLayout>
<CheckBox
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/lockedCheckBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -117,8 +117,7 @@
android:layout_marginEnd="16dp"
android:paddingStart="8dp"
android:text="@string/lock_account_label"
android:textSize="?attr/status_text_medium"
app:buttonTint="@color/compound_button_color" />
android:textSize="?attr/status_text_medium" />
<TextView
android:layout_width="match_parent"
@ -172,4 +171,4 @@
android:indeterminate="true"
android:visibility="gone" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -10,7 +10,7 @@
android:id="@+id/includedToolbar"
layout="@layout/toolbar_basic" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -34,7 +34,7 @@
android:layout_height="match_parent"
android:layout_gravity="center" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBar"
@ -50,6 +50,7 @@
android:contentDescription="@string/filter_addition_title"
app:layout_anchor="@id/filtersList"
app:layout_anchorGravity="bottom|end"
app:srcCompat="@drawable/ic_plus_24dp" />
app:srcCompat="@drawable/ic_plus_24dp"
app:tint="?attr/colorOnPrimary" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -42,7 +42,8 @@
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:contentDescription="@string/action_mention"
app:srcCompat="@drawable/ic_hashtag" />
android:contentDescription="@string/action_follow_hashtag"
app:srcCompat="@drawable/ic_hashtag"
app:tint="?attr/colorOnPrimary" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -13,7 +13,7 @@
android:id="@+id/includedToolbar"
layout="@layout/toolbar_basic" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="0dp"
android:layout_height="0dp"
@ -40,7 +40,7 @@
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBar"
@ -63,6 +63,7 @@
android:contentDescription="@string/action_create_list"
app:layout_anchor="@id/listsRecycler"
app:layout_anchorGravity="bottom|end"
app:srcCompat="@drawable/ic_plus_24dp" />
app:srcCompat="@drawable/ic_plus_24dp"
app:tint="?attr/colorOnPrimary" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -87,6 +87,7 @@
android:contentDescription="@string/action_compose"
app:layout_anchor="@id/viewPager"
app:layout_anchorGravity="bottom|end"
app:tint="?attr/colorOnPrimary"
app:srcCompat="@drawable/ic_create_24dp" />
<include layout="@layout/item_status_bottom_sheet" />

View File

@ -24,7 +24,7 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -47,6 +47,6 @@
tools:src="@drawable/errorphant_error"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -29,7 +29,8 @@
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:contentDescription="@string/action_add_tab"
app:srcCompat="@drawable/ic_plus_24dp" />
app:srcCompat="@drawable/ic_plus_24dp"
app:tint="?attr/colorOnPrimary" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/sheet"
@ -66,7 +67,8 @@
android:text="@string/action_add_tab"
android:textColor="?attr/colorOnPrimary"
android:textSize="?attr/status_text_large"
app:drawableStartCompat="@drawable/ic_plus_24dp" />
app:drawableStartCompat="@drawable/ic_plus_24dp"
app:drawableTint="?attr/colorOnPrimary" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -29,7 +29,7 @@
android:id="@+id/licenseCardLink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/tusky_blue" />
android:textColor="?attr/colorPrimary" />
</LinearLayout>
</merge>
</merge>

View File

@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -28,7 +28,7 @@
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
</FrameLayout>

View File

@ -6,7 +6,7 @@
android:layout_height="match_parent"
tools:context=".components.report.fragments.ReportStatusesFragment">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
@ -19,7 +19,7 @@
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBarTop"
@ -69,4 +69,4 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -4,7 +4,7 @@
android:layout_width="@dimen/timeline_width"
android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -19,7 +19,7 @@
android:paddingBottom="@dimen/recyclerview_bottom_padding_no_actionbutton"
tools:listitem="@layout/item_account" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/searchProgressBar"

View File

@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:background="?android:attr/colorBackground">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -27,7 +27,7 @@
android:layout_marginBottom="?attr/actionBarSize"
android:visibility="gone" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBar"

View File

@ -63,7 +63,7 @@
</com.google.android.material.appbar.AppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -88,7 +88,7 @@
android:visibility="gone" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBar"

View File

@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:background="?android:attr/colorBackground">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -29,7 +29,7 @@
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
<ProgressBar
android:id="@+id/progressBar"

View File

@ -72,7 +72,7 @@
tools:text="\@Entenhausen@birbsarecooooooooooool.site" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
@ -91,7 +91,7 @@
android:paddingBottom="@dimen/recyclerview_bottom_padding_no_actionbutton"
android:scrollbarStyle="outsideInset"
android:scrollbars="vertical" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
</LinearLayout>
<ProgressBar

View File

@ -17,7 +17,7 @@
android:indeterminate="true"
android:visibility="gone" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.keylesspalace.tusky.view.TuskySwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
@ -45,7 +45,7 @@
android:layout_gravity="center"
android:visibility="gone" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.keylesspalace.tusky.view.TuskySwipeRefreshLayout>
</LinearLayout>
<ProgressBar

View File

@ -20,10 +20,10 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="8dp"
app:layout_constraintBottom_toTopOf="@id/announcementDate"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text"
app:layout_constraintBottom_toTopOf="@id/announcementDate">
app:layout_constraintTop_toBottomOf="@id/text">
<com.google.android.material.chip.Chip
android:id="@+id/addReactionChip"
@ -32,9 +32,11 @@
android:layout_height="wrap_content"
android:checkable="false"
android:contentDescription="@string/action_add_reaction"
android:textColor="?attr/colorOnPrimary"
app:chipEndPadding="4dp"
app:chipIcon="@drawable/ic_plus_24dp"
app:chipSurfaceColor="@color/tusky_blue"
app:chipIconTint="?attr/colorOnPrimary"
app:chipSurfaceColor="?attr/colorPrimary"
app:textEndPadding="0dp"
app:textStartPadding="0dp" />
@ -44,12 +46,11 @@
android:id="@+id/announcementDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:lineSpacingMultiplier="1.1"
android:paddingHorizontal="8dp"
android:paddingBottom="8dp"
android:lineSpacingMultiplier="1.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/chipGroup"
/>
app:layout_constraintTop_toBottomOf="@id/chipGroup" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -382,7 +382,7 @@
sparkbutton:iconSize="28dp"
sparkbutton:inactiveImage="@drawable/ic_reblog_24dp"
sparkbutton:primaryColor="@color/tusky_blue"
sparkbutton:secondaryColor="@color/tusky_blue_light" />
sparkbutton:secondaryColor="@color/tusky_blue_lighter" />
<TextView
android:id="@+id/status_insets"

View File

@ -394,7 +394,7 @@
sparkbutton:iconSize="28dp"
sparkbutton:inactiveImage="@drawable/ic_reblog_24dp"
sparkbutton:primaryColor="@color/tusky_blue"
sparkbutton:secondaryColor="@color/tusky_blue_light" />
sparkbutton:secondaryColor="@color/tusky_blue_lighter" />
<at.connyduck.sparkbutton.SparkButton
android:id="@+id/status_favourite"

View File

@ -2,9 +2,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/status_filtered_placeholder"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/status_filter_label"
@ -12,22 +12,20 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="0dp"
android:textColor="?android:textColorTertiary"
android:textSize="?attr/status_text_medium"
android:textAlignment="center"
android:text="Filter: MyFilter"
tools:ignore="HardcodedText"
/>
android:textAlignment="center"
android:textColor="?android:textColorSecondary"
android:textSize="?attr/status_text_medium"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/status_filter_show_anyway"
style="@style/TuskyButton.TextButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
style="@style/TuskyButton.TextButton"
android:textStyle="bold"
android:textSize="?attr/status_text_medium"
android:text="@string/status_filtered_show_anyway"
/>
android:textSize="?attr/status_text_medium"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>

View File

@ -5,11 +5,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:colorBackground"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:orientation="horizontal"
android:paddingTop="8dp"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall">
android:paddingTop="8dp"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<ImageView
android:id="@+id/imageView"
@ -70,8 +70,10 @@
android:layout_height="wrap_content"
android:checkable="false"
android:text="@string/add_hashtag_title"
android:textColor="?attr/colorOnPrimary"
app:chipIcon="@drawable/ic_plus_24dp"
app:chipSurfaceColor="@color/tusky_blue" />
app:chipIconTint="?attr/colorOnPrimary"
app:chipSurfaceColor="?attr/colorPrimary" />
</com.google.android.material.chip.ChipGroup>

View File

@ -25,10 +25,10 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lineWidth="2sp"
app:metaColor="@color/tusky_blue_light"
app:primaryLineColor="@color/tusky_blue"
app:metaColor="?android:attr/textColorTertiary"
app:primaryLineColor="?attr/colorPrimary"
app:proportionalTrending="true"
app:secondaryLineColor="@color/tusky_red" />
app:secondaryLineColor="@color/warning_color" />
<TextView
android:id="@+id/current_usage"
@ -38,7 +38,7 @@
android:paddingStart="6dp"
android:textAlignment="textEnd"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/tusky_blue"
android:textColor="?attr/colorPrimary"
android:textSize="8sp"
android:textStyle="normal"
app:layout_constrainedWidth="true"
@ -55,7 +55,7 @@
android:paddingStart="6dp"
android:textAlignment="textEnd"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/tusky_red"
android:textColor="@color/warning_color"
android:textSize="8sp"
android:textStyle="normal"
app:layout_constrainedWidth="true"
@ -99,7 +99,7 @@
android:importantForAccessibility="no"
android:textAlignment="textEnd"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/tusky_blue"
android:textColor="?attr/colorPrimary"
android:textStyle="normal|bold"
app:layout_constrainedWidth="false"
app:layout_constraintEnd_toStartOf="@id/usageLabel"
@ -132,7 +132,7 @@
android:importantForAccessibility="no"
android:textAlignment="textEnd"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/tusky_red"
android:textColor="@color/warning_color"
android:textStyle="normal|bold"
app:layout_constrainedWidth="false"
app:layout_constraintEnd_toStartOf="@+id/accountsLabel"

View File

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">@color/tusky_blue</color>
<color name="colorSecondary">@color/tusky_blue</color>
<color name="colorPrimary">@color/tusky_blue_light</color>
<color name="colorSecondary">@color/tusky_blue_light</color>
<color name="colorSurface">@color/tusky_grey_30</color>
<color name="colorPrimaryDark">@color/tusky_grey_25</color>
<color name="colorOnPrimary">@color/tusky_grey_10</color>
<color name="colorBackground">@color/tusky_grey_20</color>
<color name="windowBackground">@color/tusky_grey_10</color>

View File

@ -1,15 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the original Tusky Blue, but for better contrast tusky_blue_light and tusky_blue_dark should be used in the ui-->
<color name="tusky_blue">#2b90d9</color>
<color name="tusky_blue_darker">#217aba</color>
<color name="tusky_blue_light">#56a7e1</color>
<color name="tusky_blue_light">#3c9add</color>
<color name="tusky_blue_dark">#217aba</color>
<color name="tusky_blue_lighter">#56a7e1</color>
<color name="tusky_orange">#ca8f04</color>
<color name="tusky_orange_light">#fab207</color>
<color name="tusky_green">#00731B</color>
<color name="tusky_green_light">#25d069</color>
<color name="tusky_green_lighter">#CCFFD8</color>
<color name="tusky_red">#DF1553</color>
<color name="tusky_red_lighter">#FFC0C0</color>
<color name="tusky_red_lighter">#FF7287</color>
<color name="white">#fff</color>
<color name="black">#000</color>
@ -38,7 +40,7 @@
<!-- colors used in the elephant friend drawables -->
<color name="elephant_friend_border_color">#121419</color>
<color name="elephant_friend_accent_color">@color/tusky_blue</color>
<color name="elephant_friend_accent_color">?attr/colorPrimary</color>
<color name="elephant_friend_body_color">#9BAEC8</color>
<color name="elephant_friend_dark_body_color_1">#8192A6</color>
<color name="elephant_friend_dark_body_color_2">#7F90A4</color>

View File

@ -196,6 +196,7 @@
<string name="action_links">Links</string>
<string name="action_mentions">Mentions</string>
<string name="action_hashtags">Hashtags</string>
<string name="action_follow_hashtag">Follow a new hashtag</string>
<string name="action_open_reblogger">Open boost author</string>
<string name="action_open_reblogged_by">Show boosts</string>
<string name="action_open_faved_by">Show favorites</string>

View File

@ -48,7 +48,7 @@
<item name="status_text_large">18sp</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorOnPrimary">@color/white</item>
<item name="colorOnPrimary">@color/colorOnPrimary</item>
<item name="colorSecondary">@color/colorSecondary</item>
<item name="colorOnSecondary">@color/white</item>
@ -93,6 +93,8 @@
<style name="TuskyBlackThemeBase" parent="TuskyBaseTheme">
<item name="colorPrimaryDark">@color/tusky_grey_05</item>
<item name="colorOnPrimary">@color/black</item>
<item name="android:colorBackground">@color/black</item>
<item name="windowBackgroundColor">@color/black</item>

View File

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">@color/tusky_blue_darker</color>
<color name="colorSecondary">@color/tusky_blue_darker</color>
<color name="colorPrimary">@color/tusky_blue_dark</color>
<color name="colorSecondary">@color/tusky_blue_dark</color>
<color name="colorSurface">@color/tusky_grey_95</color>
<color name="colorPrimaryDark">@color/tusky_grey_70</color>
<color name="colorOnPrimary">@color/white</color>
<color name="colorBackground">@color/white</color>
<color name="windowBackground">@color/tusky_grey_80</color>
@ -17,7 +19,7 @@
<color name="colorBackgroundAccent">@color/tusky_grey_70</color>
<color name="colorBackgroundHighlight">@color/tusky_grey_50</color>
<color name="dividerColor">@color/tusky_grey_80</color>
<color name="dividerColor">@color/tusky_grey_70</color>
<color name="dividerColorOther">@color/tusky_grey_90</color>
<color name="favoriteButtonActiveColor">@color/tusky_orange_light</color>