fix trending tags for rtl languages (#4889)
closes https://github.com/tuskyapp/Tusky/issues/4887 And some other small improvements like better paddings and font sizes. Also the `status_info` in `item_status` now looks nicer in rtl mode.
This commit is contained in:
parent
170358fe89
commit
8f8b8195a1
9 changed files with 60 additions and 73 deletions
|
|
@ -41,7 +41,7 @@ class TrendingTagViewHolder(
|
|||
binding.totalAccounts.text = formatNumber(totalAccounts, 1000)
|
||||
|
||||
binding.currentUsage.text = numberFormat.format(tagViewData.usage.last())
|
||||
binding.currentAccounts.text = numberFormat.format(tagViewData.usage.last())
|
||||
binding.currentAccounts.text = numberFormat.format(tagViewData.accounts.last())
|
||||
|
||||
itemView.setOnClickListener {
|
||||
onViewTag(tagViewData.name)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import kotlin.math.abs
|
|||
import kotlin.math.ln
|
||||
import kotlin.math.pow
|
||||
|
||||
private val numberFormatter: NumberFormat = NumberFormat.getInstance()
|
||||
private val ln_1k = ln(1000.0)
|
||||
|
||||
/**
|
||||
|
|
@ -19,6 +18,7 @@ private val ln_1k = ln(1000.0)
|
|||
* a suffix appropriate to the scaling is appended.
|
||||
*/
|
||||
fun formatNumber(num: Long, min: Int = 100000): String {
|
||||
val numberFormatter: NumberFormat = NumberFormat.getInstance()
|
||||
val absNum = abs(num)
|
||||
if (absNum < min) return numberFormatter.format(num)
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import android.graphics.Paint
|
|||
import android.graphics.Path
|
||||
import android.graphics.PathMeasure
|
||||
import android.graphics.Rect
|
||||
import android.text.TextUtils
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import androidx.annotation.ColorInt
|
||||
|
|
@ -29,6 +30,7 @@ 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 java.util.Locale
|
||||
import kotlin.math.max
|
||||
|
||||
class GraphView @JvmOverloads constructor(
|
||||
|
|
@ -68,63 +70,40 @@ class GraphView @JvmOverloads constructor(
|
|||
private var primaryLinePath: Path = Path()
|
||||
private var secondaryLinePath: Path = Path()
|
||||
|
||||
private var isRtlLayout: Boolean = false
|
||||
|
||||
var maxTrendingValue: Long = 300
|
||||
var primaryLineData: List<Long> = if (isInEditMode) {
|
||||
listOf(
|
||||
30,
|
||||
60,
|
||||
70,
|
||||
80,
|
||||
130,
|
||||
190,
|
||||
80
|
||||
)
|
||||
listOf(30, 60, 70, 80, 130, 190, 80)
|
||||
} else {
|
||||
listOf(
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
)
|
||||
listOf(1, 1, 1, 1, 1, 1, 1)
|
||||
}
|
||||
set(value) {
|
||||
field = value.map { max(1, it) }
|
||||
if (isRtlLayout) {
|
||||
field = field.reversed()
|
||||
}
|
||||
primaryLinePath.reset()
|
||||
invalidate()
|
||||
}
|
||||
|
||||
var secondaryLineData: List<Long> = if (isInEditMode) {
|
||||
listOf(
|
||||
10,
|
||||
20,
|
||||
40,
|
||||
60,
|
||||
100,
|
||||
132,
|
||||
20
|
||||
)
|
||||
listOf(10, 20, 40, 60, 100, 132, 20)
|
||||
} else {
|
||||
listOf(
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
)
|
||||
listOf(1, 1, 1, 1, 1, 1, 1)
|
||||
}
|
||||
set(value) {
|
||||
field = value.map { max(1, it) }
|
||||
if (isRtlLayout) {
|
||||
field = field.reversed()
|
||||
}
|
||||
secondaryLinePath.reset()
|
||||
invalidate()
|
||||
}
|
||||
|
||||
init {
|
||||
initFromXML(attrs)
|
||||
isRtlLayout = TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == LAYOUT_DIRECTION_RTL
|
||||
}
|
||||
|
||||
private fun initFromXML(attr: AttributeSet?) {
|
||||
|
|
@ -291,7 +270,7 @@ class GraphView @JvmOverloads constructor(
|
|||
linePath = secondaryLinePath,
|
||||
linePaint = secondaryLinePaint,
|
||||
circlePaint = secondaryCirclePaint,
|
||||
lineThickness = lineWidth
|
||||
lineThickness = lineWidth,
|
||||
)
|
||||
drawLine(
|
||||
canvas = canvas,
|
||||
|
|
@ -317,8 +296,11 @@ class GraphView @JvmOverloads constructor(
|
|||
)
|
||||
|
||||
val pm = PathMeasure(linePath, false)
|
||||
|
||||
val dotPosition = if (isRtlLayout) 0f else pm.length
|
||||
|
||||
val coord = floatArrayOf(0f, 0f)
|
||||
pm.getPosTan(pm.length * 1f, coord, null)
|
||||
pm.getPosTan(dotPosition, coord, null)
|
||||
|
||||
drawCircle(coord[0], coord[1], lineThickness * 2f, circlePaint)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:alpha="0.6" android:color="@color/colorBackground" />
|
||||
</selector>
|
||||
<item android:alpha="0.6" android:color="?android:colorBackground" />
|
||||
</selector>
|
||||
|
|
|
|||
|
|
@ -39,12 +39,13 @@
|
|||
android:textAlignment="textEnd"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="8sp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="normal"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toTopOf="@id/current_accounts"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/graph"
|
||||
tools:ignore="RtlSymmetry"
|
||||
tools:text="12 345" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -56,12 +57,13 @@
|
|||
android:textAlignment="textEnd"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
android:textColor="@color/warning_color"
|
||||
android:textSize="8sp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="normal"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toBottomOf="@id/graph"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/graph"
|
||||
tools:ignore="RtlSymmetry"
|
||||
tools:text="12 345" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
|
@ -112,14 +114,15 @@
|
|||
android:id="@+id/usageLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:text="@string/total_usage"
|
||||
android:textAlignment="textEnd"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
app:layout_constrainedWidth="false"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/total_usage"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/total_usage"
|
||||
app:layout_constraintTop_toTopOf="@+id/total_usage"
|
||||
app:layout_constraintStart_toEndOf="@id/barrier2" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -141,13 +144,14 @@
|
|||
android:id="@+id/accountsLabel"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:text="@string/total_accounts"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/total_accounts"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/total_accounts"
|
||||
app:layout_constraintTop_toTopOf="@+id/total_accounts"
|
||||
app:layout_constraintStart_toEndOf="@id/barrier2" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
|
|
@ -157,6 +161,7 @@
|
|||
app:barrierDirection="end"
|
||||
app:constraint_referenced_ids="total_usage,total_accounts"
|
||||
tools:layout_editor_absoluteY="8dp" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
android:id="@+id/notification_policy_summary_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/filtered_notifications"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:textStyle="normal|bold"
|
||||
|
|
@ -23,6 +24,7 @@
|
|||
android:id="@+id/notification_policy_summary_description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
app:layout_constraintEnd_toStartOf="@id/notification_policy_summary_badge"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
|
|||
|
|
@ -12,21 +12,22 @@
|
|||
|
||||
<TextView
|
||||
android:id="@+id/status_info"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="14dp"
|
||||
android:layout_marginTop="@dimen/status_reblogged_bar_padding_top"
|
||||
android:layout_marginEnd="14dp"
|
||||
android:drawablePadding="6dp"
|
||||
android:gravity="center_vertical"
|
||||
android:gravity="start"
|
||||
android:importantForAccessibility="no"
|
||||
android:paddingStart="38dp"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
android:textSize="?attr/status_text_medium"
|
||||
app:drawableStartCompat="@drawable/ic_reblog_18dp"
|
||||
app:drawableTint="?android:textColorTertiary"
|
||||
app:layout_constraintLeft_toRightOf="parent"
|
||||
app:layout_constraintRight_toLeftOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="RtlSymmetry"
|
||||
tools:text="ConnyDuck boosted"
|
||||
|
|
|
|||
|
|
@ -35,16 +35,17 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:importantForAccessibility="no"
|
||||
android:paddingStart="6dp"
|
||||
android:paddingStart="8dp"
|
||||
android:textAlignment="textEnd"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="8sp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="normal"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toTopOf="@id/current_accounts"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1"
|
||||
app:layout_constraintStart_toEndOf="@id/graph"
|
||||
tools:ignore="RtlSymmetry"
|
||||
tools:text="12 345" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -52,17 +53,18 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:importantForAccessibility="no"
|
||||
android:paddingStart="6dp"
|
||||
android:paddingStart="8dp"
|
||||
android:textAlignment="textEnd"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
android:textColor="@color/warning_color"
|
||||
android:textSize="8sp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="normal"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBottom_toBottomOf="@id/graph"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1"
|
||||
app:layout_constraintStart_toEndOf="@id/graph"
|
||||
tools:text="12 345" />
|
||||
tools:ignore="RtlSymmetry"
|
||||
tools:text="13" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/legend_container"
|
||||
|
|
@ -101,8 +103,6 @@
|
|||
android:textAppearance="?android:attr/textAppearanceListItemSmall"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textStyle="normal|bold"
|
||||
app:layout_constrainedWidth="false"
|
||||
app:layout_constraintEnd_toStartOf="@id/usageLabel"
|
||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tag"
|
||||
|
|
@ -112,16 +112,15 @@
|
|||
android:id="@+id/usageLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:text="@string/total_usage"
|
||||
android:textAlignment="textEnd"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
app:layout_constrainedWidth="false"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/total_usage"
|
||||
app:layout_constraintEnd_toStartOf="@id/total_accounts"
|
||||
app:layout_constraintStart_toEndOf="@+id/total_usage" />
|
||||
app:layout_constraintBottom_toBottomOf="@+id/total_usage"
|
||||
app:layout_constraintStart_toEndOf="@+id/total_usage"
|
||||
app:layout_constraintTop_toTopOf="@+id/total_usage" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/total_accounts"
|
||||
|
|
@ -134,8 +133,6 @@
|
|||
android:textAppearance="?android:attr/textAppearanceListItemSmall"
|
||||
android:textColor="@color/warning_color"
|
||||
android:textStyle="normal|bold"
|
||||
app:layout_constrainedWidth="false"
|
||||
app:layout_constraintEnd_toStartOf="@+id/accountsLabel"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintStart_toEndOf="@id/usageLabel"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tag"
|
||||
|
|
@ -145,14 +142,15 @@
|
|||
android:id="@+id/accountsLabel"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:text="@string/total_accounts"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/total_accounts"
|
||||
app:layout_constraintStart_toEndOf="@id/total_accounts" />
|
||||
app:layout_constraintBottom_toBottomOf="@+id/total_accounts"
|
||||
app:layout_constraintStart_toEndOf="@id/total_accounts"
|
||||
app:layout_constraintTop_toTopOf="@+id/total_accounts" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,5 @@
|
|||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:textAppearance="?android:attr/textAppearanceListItem"
|
||||
android:textAlignment="textEnd"
|
||||
android:textColor="?android:textColorTertiary"
|
||||
tools:text="@string/date_range" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue