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:
@@ -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));
|
||||
}
|
||||
};
|
||||
|
@@ -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 -->
|
||||
|
Reference in New Issue
Block a user