Use consumption period buttons

This commit is contained in:
TCFDONMEZ
2026-09-30 11:28:24 +03:00
parent 634a374ea7
commit 76d1d680d6
4 changed files with 48 additions and 26 deletions
+1
View File
@@ -0,0 +1 @@
fc57705c80131278ae85cf2c25fb7f2330629c62aea759f9e1324ac93ca1cb8f FatihsMG4-unstable-2.2.21.apk
+2 -2
View File
@@ -34,8 +34,8 @@ android {
applicationId "com.evsuite.abrp" applicationId "com.evsuite.abrp"
minSdk 27 minSdk 27
targetSdk 36 targetSdk 36
versionCode 37 versionCode 38
versionName "2.2.20" versionName "2.2.21"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@@ -108,7 +108,7 @@ public class MainActivity extends AppCompatActivity {
vehCharging, vehHvac, vehSoe, vehCharging, vehHvac, vehSoe,
vehTireFl, vehTireFr, vehTireRl, vehTireRr; vehTireFl, vehTireFr, vehTireRl, vehTireRr;
private ConsumptionTracker consumptionTracker; private ConsumptionTracker consumptionTracker;
private Spinner consumptionPeriod; private ConsumptionTracker.Period consumptionPeriod = ConsumptionTracker.Period.LIFETIME;
private TextView consumptionDistance, consumptionEnergy, consumptionAverage, private TextView consumptionDistance, consumptionEnergy, consumptionAverage,
consumptionSpeed, consumptionTime, consumptionSoc; consumptionSpeed, consumptionTime, consumptionSoc;
private Button consumptionReset; private Button consumptionReset;
@@ -824,12 +824,6 @@ public class MainActivity extends AppCompatActivity {
private void bindConsumptionPane() { private void bindConsumptionPane() {
consumptionTracker = ConsumptionTracker.get(this); consumptionTracker = ConsumptionTracker.get(this);
consumptionPeriod = consumptionPane.findViewById(R.id.consumption_period);
String[] periods = {"Başlangıçtan itibaren", "Motor çalıştıktan itibaren",
"Tüm zamanlar", "Trip A", "Trip B"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_spinner_dropdown_item, periods);
consumptionPeriod.setAdapter(adapter);
consumptionDistance = consumptionPane.findViewById(R.id.consumption_distance); consumptionDistance = consumptionPane.findViewById(R.id.consumption_distance);
consumptionEnergy = consumptionPane.findViewById(R.id.consumption_energy); consumptionEnergy = consumptionPane.findViewById(R.id.consumption_energy);
consumptionAverage = consumptionPane.findViewById(R.id.consumption_average); consumptionAverage = consumptionPane.findViewById(R.id.consumption_average);
@@ -837,28 +831,49 @@ public class MainActivity extends AppCompatActivity {
consumptionTime = consumptionPane.findViewById(R.id.consumption_time); consumptionTime = consumptionPane.findViewById(R.id.consumption_time);
consumptionSoc = consumptionPane.findViewById(R.id.consumption_soc); consumptionSoc = consumptionPane.findViewById(R.id.consumption_soc);
consumptionReset = consumptionPane.findViewById(R.id.consumption_reset); consumptionReset = consumptionPane.findViewById(R.id.consumption_reset);
consumptionPeriod.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { bindPeriodButton(R.id.consumption_lifetime, ConsumptionTracker.Period.LIFETIME);
@Override public void onItemSelected(AdapterView<?> p, View v, int position, long id) { bindPeriodButton(R.id.consumption_start, ConsumptionTracker.Period.START);
consumptionReset.setVisibility(position >= 3 ? View.VISIBLE : View.GONE); bindPeriodButton(R.id.consumption_motor, ConsumptionTracker.Period.MOTOR);
refreshConsumption(); bindPeriodButton(R.id.consumption_trip_a, ConsumptionTracker.Period.TRIP_A);
} bindPeriodButton(R.id.consumption_trip_b, ConsumptionTracker.Period.TRIP_B);
@Override public void onNothingSelected(AdapterView<?> p) {} selectPeriodButton(R.id.consumption_lifetime);
});
consumptionReset.setOnClickListener(v -> { consumptionReset.setOnClickListener(v -> {
int selected = consumptionPeriod.getSelectedItemPosition(); if (consumptionPeriod != ConsumptionTracker.Period.TRIP_A && consumptionPeriod != ConsumptionTracker.Period.TRIP_B) return;
if (selected < 3) return; String name = consumptionPeriod == ConsumptionTracker.Period.TRIP_A ? "Trip A" : "Trip B";
String name = selected == 3 ? "Trip A" : "Trip B";
new MaterialAlertDialogBuilder(this).setTitle(name + " sıfırlansın mı?") new MaterialAlertDialogBuilder(this).setTitle(name + " sıfırlansın mı?")
.setMessage("Bu sayacın kayıtlı tüketim geçmişi kalıcı olarak silinir.") .setMessage("Bu sayacın kayıtlı tüketim geçmişi kalıcı olarak silinir.")
.setNegativeButton("Vazgeç", null) .setNegativeButton("Vazgeç", null)
.setPositiveButton("Sıfırla", (d, w) -> { .setPositiveButton("Sıfırla", (d, w) -> {
consumptionTracker.reset(selected == 3 consumptionTracker.reset(consumptionPeriod);
? ConsumptionTracker.Period.TRIP_A : ConsumptionTracker.Period.TRIP_B);
refreshConsumption(); refreshConsumption();
}).show(); }).show();
}); });
} }
private void bindPeriodButton(int id, ConsumptionTracker.Period period) {
View button = consumptionPane.findViewById(id);
button.setOnClickListener(v -> {
selectPeriodButton(id);
consumptionPeriod = period;
consumptionReset.setVisibility(period == ConsumptionTracker.Period.TRIP_A ||
period == ConsumptionTracker.Period.TRIP_B ? View.VISIBLE : View.GONE);
refreshConsumption();
});
}
private void selectPeriodButton(int selectedId) {
int[] ids = {R.id.consumption_lifetime, R.id.consumption_start,
R.id.consumption_motor, R.id.consumption_trip_a, R.id.consumption_trip_b};
for (int id : ids) {
MaterialButton button = consumptionPane.findViewById(id);
boolean selected = id == selectedId;
button.setSelected(selected);
button.setTextColor(selected ? 0xFFD8C39A : COLOR_PENDING);
button.setStrokeColor(android.content.res.ColorStateList.valueOf(
selected ? 0xFFD8C39A : 0xFF3A4143));
}
}
private void bindChargingPane() { private void bindChargingPane() {
chargeStatus = chargingPane.findViewById(R.id.charge_status); chargeStatus = chargingPane.findViewById(R.id.charge_status);
chargeSoc = chargingPane.findViewById(R.id.charge_soc); chargeSoc = chargingPane.findViewById(R.id.charge_soc);
@@ -894,10 +909,8 @@ public class MainActivity extends AppCompatActivity {
} }
private void refreshConsumption() { private void refreshConsumption() {
if (consumptionTracker == null || consumptionPeriod == null) return; if (consumptionTracker == null) return;
ConsumptionTracker.Period period = ConsumptionTracker.Period.values()[ ConsumptionTracker.Totals t = consumptionTracker.totals(consumptionPeriod);
Math.max(0, consumptionPeriod.getSelectedItemPosition())];
ConsumptionTracker.Totals t = consumptionTracker.totals(period);
consumptionDistance.setText(String.format(java.util.Locale.getDefault(), "%.1f km", t.km)); consumptionDistance.setText(String.format(java.util.Locale.getDefault(), "%.1f km", t.km));
consumptionEnergy.setText(String.format(java.util.Locale.getDefault(), "%.2f kWh", t.kwh)); consumptionEnergy.setText(String.format(java.util.Locale.getDefault(), "%.2f kWh", t.kwh));
consumptionAverage.setText(t.km < 0.1 ? "—" : String.format(java.util.Locale.getDefault(), consumptionAverage.setText(t.km < 0.1 ? "—" : String.format(java.util.Locale.getDefault(),
+9 -1
View File
@@ -3,7 +3,15 @@
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="24dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="24dp">
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="20dp" android:background="@drawable/bg_glass"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="20dp" android:background="@drawable/bg_glass">
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TÜKETİM DÖNEMİ" android:textAppearance="@style/Text.EV.Eyebrow"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TÜKETİM DÖNEMİ" android:textAppearance="@style/Text.EV.Eyebrow"/>
<Spinner android:id="@+id/consumption_period" android:layout_width="match_parent" android:layout_height="64dp" android:layout_marginTop="8dp"/> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:scrollbars="none">
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">
<com.google.android.material.button.MaterialButton android:id="@+id/consumption_lifetime" style="@style/Widget.EV.Button.Outlined" android:layout_width="wrap_content" android:layout_height="56dp" android:text="Tüm zamanlar"/>
<com.google.android.material.button.MaterialButton android:id="@+id/consumption_start" style="@style/Widget.EV.Button.Outlined" android:layout_width="wrap_content" android:layout_height="56dp" android:layout_marginStart="8dp" android:text="Başlangıçtan"/>
<com.google.android.material.button.MaterialButton android:id="@+id/consumption_motor" style="@style/Widget.EV.Button.Outlined" android:layout_width="wrap_content" android:layout_height="56dp" android:layout_marginStart="8dp" android:text="Motor sonrası"/>
<com.google.android.material.button.MaterialButton android:id="@+id/consumption_trip_a" style="@style/Widget.EV.Button.Outlined" android:layout_width="wrap_content" android:layout_height="56dp" android:layout_marginStart="8dp" android:text="Trip A"/>
<com.google.android.material.button.MaterialButton android:id="@+id/consumption_trip_b" style="@style/Widget.EV.Button.Outlined" android:layout_width="wrap_content" android:layout_height="56dp" android:layout_marginStart="8dp" android:text="Trip B"/>
</LinearLayout>
</HorizontalScrollView>
<GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="2"> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="2">
<TextView android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="Mesafe" android:textAppearance="@style/DataLabel"/><TextView android:id="@+id/consumption_distance" android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="—" android:textAppearance="@style/DataValue"/> <TextView android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="Mesafe" android:textAppearance="@style/DataLabel"/><TextView android:id="@+id/consumption_distance" android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="—" android:textAppearance="@style/DataValue"/>
<TextView android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="Net enerji" android:textAppearance="@style/DataLabel"/><TextView android:id="@+id/consumption_energy" android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="—" android:textAppearance="@style/DataValue"/> <TextView android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="Net enerji" android:textAppearance="@style/DataLabel"/><TextView android:id="@+id/consumption_energy" android:layout_width="0dp" android:layout_columnWeight="1" android:padding="12dp" android:text="—" android:textAppearance="@style/DataValue"/>