1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-13 12:14:19 +02:00

change material calendar button text color

This commit is contained in:
oliexdev
2023-04-30 12:37:32 +02:00
parent 411efb76dd
commit 147deeafb8
2 changed files with 120 additions and 111 deletions

View File

@@ -1,22 +1,21 @@
/* Copyright (C) 2014 olie.xdev <olie.xdev@googlemail.com>
*
* 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.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>
*/
*
* 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.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.health.openscale.gui.preferences;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
@@ -30,17 +29,21 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TableRow;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.navigation.Navigation;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener;
import com.health.openscale.R;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.datatypes.ScaleUser;
@@ -85,7 +88,65 @@ public class UserSettingsFragment extends Fragment {
View root = inflater.inflate(R.layout.fragment_usersettings, container, false);
context = getContext();
setHasOptionsMenu(true);
requireActivity().addMenuProvider(new MenuProvider() {
@Override
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menu.clear();
menuInflater.inflate(R.menu.userentry_menu, menu);
// Apply a tint to all icons in the toolbar
for (int i = 0; i < menu.size(); ++i) {
MenuItem item = menu.getItem(i);
final Drawable drawable = item.getIcon();
if (drawable == null) {
continue;
}
final Drawable wrapped = DrawableCompat.wrap(drawable.mutate());
if (item.getItemId() == R.id.saveButton) {
DrawableCompat.setTint(wrapped, Color.parseColor("#FFFFFF"));
} else if (item.getItemId() == R.id.deleteButton) {
DrawableCompat.setTint(wrapped, Color.parseColor("#FF4444"));
}
item.setIcon(wrapped);
}
MenuItem deleteButton = menu.findItem(R.id.deleteButton);
switch (mode) {
case ADD:
deleteButton.setVisible(false);
break;
case EDIT:
deleteButton.setVisible(true);
break;
}
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.saveButton:
if (saveUserData()) {
if (getActivity().findViewById(R.id.nav_host_fragment) != null){
Navigation.findNavController(getActivity(), R.id.nav_host_fragment).getPreviousBackStackEntry().getSavedStateHandle().set("update", true);
Navigation.findNavController(getActivity(), R.id.nav_host_fragment).navigateUp();
} else {
getActivity().finish();
}
}
return true;
case R.id.deleteButton:
deleteUser();
return true;
}
return false;
}
}, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
if (getArguments() != null) {
mode = UserSettingsFragmentArgs.fromBundle(getArguments()).getMode();
@@ -129,15 +190,16 @@ public class UserSettingsFragment extends Fragment {
txtGoalDate.setText(dateFormat.format(goal_date));
txtBirthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar cal = Calendar.getInstance();
cal.setTime(birthday);
DatePickerDialog datePicker = new DatePickerDialog(
context, birthdayPickerListener, cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
datePicker.show();
}
@Override
public void onClick(View v) {
MaterialDatePicker<Long> datePicker = MaterialDatePicker.Builder
.datePicker()
.setSelection(birthday.getTime())
.build();
datePicker.addOnPositiveButtonClickListener(birthdayPickerListener);
datePicker.show(requireActivity().getSupportFragmentManager(), "Birthday_DatePicker");
}
});
chkGoalEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@@ -156,12 +218,13 @@ public class UserSettingsFragment extends Fragment {
txtGoalDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar cal = Calendar.getInstance();
cal.setTime(goal_date);
DatePickerDialog datePicker = new DatePickerDialog(
context, goalDatePickerListener, cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
datePicker.show();
MaterialDatePicker<Long> datePicker = MaterialDatePicker.Builder
.datePicker()
.setSelection(goal_date.getTime())
.build();
datePicker.addOnPositiveButtonClickListener(goalDatePickerListener);
datePicker.show(getActivity().getSupportFragmentManager(), "Goal_DatePicker");
}
});
@@ -205,70 +268,13 @@ public class UserSettingsFragment extends Fragment {
}
});
if (mode == USER_SETTING_MODE.EDIT) {
editMode();
}
return root;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.userentry_menu, menu);
// Apply a tint to all icons in the toolbar
for (int i = 0; i < menu.size(); ++i) {
MenuItem item = menu.getItem(i);
final Drawable drawable = item.getIcon();
if (drawable == null) {
continue;
}
final Drawable wrapped = DrawableCompat.wrap(drawable.mutate());
if (item.getItemId() == R.id.saveButton) {
DrawableCompat.setTint(wrapped, Color.parseColor("#FFFFFF"));
} else if (item.getItemId() == R.id.deleteButton) {
DrawableCompat.setTint(wrapped, Color.parseColor("#FF4444"));
}
item.setIcon(wrapped);
}
MenuItem deleteButton = menu.findItem(R.id.deleteButton);
switch (mode) {
case ADD:
deleteButton.setVisible(false);
break;
case EDIT:
editMode();
deleteButton.setVisible(true);
break;
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.saveButton:
if (saveUserData()) {
if (getActivity().findViewById(R.id.nav_host_fragment) != null){
Navigation.findNavController(getActivity(), R.id.nav_host_fragment).getPreviousBackStackEntry().getSavedStateHandle().set("update", true);
Navigation.findNavController(getActivity(), R.id.nav_host_fragment).navigateUp();
} else {
getActivity().finish();
}
}
return true;
case R.id.deleteButton:
deleteUser();
return true;
}
return super.onOptionsItemSelected(item);
}
private void editMode()
{
int id = UserSettingsFragmentArgs.fromBundle(getArguments()).getUserId();
@@ -367,24 +373,18 @@ public class UserSettingsFragment extends Fragment {
return validate;
}
private final DatePickerDialog.OnDateSetListener birthdayPickerListener = new DatePickerDialog.OnDateSetListener() {
private final MaterialPickerOnPositiveButtonClickListener<Long> birthdayPickerListener = new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
Calendar cal = Calendar.getInstance();
cal.set(selectedYear, selectedMonth, selectedDay, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
birthday = cal.getTime();
public void onPositiveButtonClick(Long selection) {
birthday = new Date(selection);
txtBirthday.setText(dateFormat.format(birthday));
}
};
}
};
private final DatePickerDialog.OnDateSetListener goalDatePickerListener = new DatePickerDialog.OnDateSetListener() {
private final MaterialPickerOnPositiveButtonClickListener<Long> goalDatePickerListener = new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
Calendar cal = Calendar.getInstance();
cal.set(selectedYear, selectedMonth, selectedDay, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
goal_date = cal.getTime();
public void onPositiveButtonClick(Long selection) {
goal_date = new Date(selection);
txtGoalDate.setText(dateFormat.format(goal_date));
}
};

View File

@@ -5,7 +5,7 @@
<item name="colorOnPrimary">@color/primaryLightColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorAccent">@color/primaryLightColor</item>
<item name="android:datePickerStyle">@style/DatePickerStyle</item>
<item name="materialCalendarTheme">@style/MaterialCalendarTheme</item>
</style>
<style name="AppTheme_Dark" parent="Theme.MaterialComponents.NoActionBar">
@@ -13,7 +13,7 @@
<item name="colorOnPrimary">@color/primaryLightColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorAccent">@color/primaryLightColor</item>
<item name="android:datePickerStyle">@style/DatePickerStyle</item>
<item name="materialCalendarTheme">@style/MaterialCalendarTheme</item>
</style>
<style name="AppTheme.NoActionBar">
@@ -21,8 +21,17 @@
<item name="windowNoTitle">true</item>
</style>
<style name="DatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
<item name="android:datePickerMode">spinner</item>
<style name="MaterialCalendarTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
<item name="buttonBarPositiveButtonStyle">@style/CalendarPositiveButtonStyle</item>
<item name="buttonBarNegativeButtonStyle">@style/CalendarNegativeButtonStyle</item>
</style>
<style name="CalendarPositiveButtonStyle" parent="@style/Widget.MaterialComponents.Button.TextButton.Dialog">
<item name="android:textColor">@color/primaryLightColor</item>
</style>
<style name="CalendarNegativeButtonStyle" parent="@style/Widget.MaterialComponents.Button.TextButton.Dialog">
<item name="android:textColor">@color/primaryLightColor</item>
</style>
<!-- Style for an Preference Entry -->