diff options
| author | 2023-12-07 18:51:57 +0000 | |
|---|---|---|
| committer | 2023-12-07 18:51:57 +0000 | |
| commit | a8aa4eca4e3b88c77d568704aed0f381ebbf12a9 (patch) | |
| tree | df9f2e905cdff13cbba0d938aef98cf60453717e | |
| parent | 164dc5b33450356aa8dce97b34b2718e1c0ec208 (diff) | |
| parent | b1b1146028052f7cfe17becb21709357ee271fa4 (diff) | |
Merge "Creating an interface to provide a custom XAxisRenderer object to the BarChartModel" into main
2 files changed, 49 insertions, 0 deletions
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/BarChart.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/BarChart.kt index e761a33cf67a..caceb6f6ec4a 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/BarChart.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/BarChart.kt @@ -38,6 +38,8 @@ import androidx.compose.ui.viewinterop.AndroidView import com.android.settingslib.spa.framework.theme.divider import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.components.YAxis.AxisDependency import com.github.mikephil.charting.data.BarData import com.github.mikephil.charting.data.BarDataSet import com.github.mikephil.charting.data.BarEntry @@ -90,6 +92,10 @@ interface BarChartModel { /** If set to true, touch gestures are enabled on the [BarChart]. */ val enableBarchartTouch: Boolean get() = true + + /** The renderer provider for x-axis. */ + val xAxisRendererProvider: XAxisRendererProvider? + get() = null } data class BarChartData( @@ -143,6 +149,16 @@ fun BarChart(barChartModel: BarChartModel) { yOffset = 10f } + barChartModel.xAxisRendererProvider?.let { + setXAxisRenderer( + it.provideXAxisRenderer( + getViewPortHandler(), + getXAxis(), + getTransformer(YAxis.AxisDependency.LEFT) + ) + ) + } + axisLeft.apply { axisMaximum = barChartModel.yAxisMaxValue axisMinimum = barChartModel.yAxisMinValue diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/XAxisRendererProvider.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/XAxisRendererProvider.kt new file mode 100644 index 000000000000..6569d25dd00d --- /dev/null +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/chart/XAxisRendererProvider.kt @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settingslib.spa.widget.chart + +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.renderer.XAxisRenderer +import com.github.mikephil.charting.utils.Transformer +import com.github.mikephil.charting.utils.ViewPortHandler + +/** A provider for [XAxisRenderer] objects. */ +fun interface XAxisRendererProvider { + + /** Provides an object of [XAxisRenderer] type. */ + fun provideXAxisRenderer( + viewPortHandler: ViewPortHandler, + xAxis: XAxis, + transformer: Transformer + ): XAxisRenderer +}
\ No newline at end of file |