183 lines
6.1 KiB
Java
183 lines
6.1 KiB
Java
package org.mian.gitnex.activities;
|
|
|
|
import android.graphics.Color;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.widget.NumberPicker;
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|
import com.pes.androidmaterialcolorpickerdialog.ColorPicker;
|
|
import org.mian.gitnex.R;
|
|
import org.mian.gitnex.databinding.ActivitySettingsNotificationsBinding;
|
|
import org.mian.gitnex.helpers.AppUtil;
|
|
import org.mian.gitnex.helpers.Constants;
|
|
import org.mian.gitnex.helpers.Toasty;
|
|
import org.mian.gitnex.notifications.Notifications;
|
|
|
|
/**
|
|
* @author M M Arif
|
|
* @author opyale
|
|
*/
|
|
public class SettingsNotificationsActivity extends BaseActivity {
|
|
|
|
private ActivitySettingsNotificationsBinding viewBinding;
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
viewBinding = ActivitySettingsNotificationsBinding.inflate(getLayoutInflater());
|
|
setContentView(viewBinding.getRoot());
|
|
|
|
View.OnClickListener onClickListener = viewClose -> finish();
|
|
|
|
viewBinding.close.setOnClickListener(onClickListener);
|
|
|
|
viewBinding.pollingDelaySelected.setText(
|
|
String.format(
|
|
getString(R.string.pollingDelaySelectedText),
|
|
tinyDB.getInt("pollingDelayMinutes", Constants.defaultPollingDelay)));
|
|
viewBinding.chooseColorState.setCardBackgroundColor(
|
|
tinyDB.getInt("notificationsLightColor", Color.GREEN));
|
|
|
|
viewBinding.enableNotificationsMode.setChecked(
|
|
tinyDB.getBoolean("notificationsEnabled", true));
|
|
viewBinding.enableLightsMode.setChecked(
|
|
tinyDB.getBoolean("notificationsEnableLights", true));
|
|
viewBinding.enableVibrationMode.setChecked(
|
|
tinyDB.getBoolean("notificationsEnableVibration", true));
|
|
|
|
if (!viewBinding.enableNotificationsMode.isChecked()) {
|
|
AppUtil.setMultiVisibility(
|
|
View.GONE,
|
|
viewBinding.chooseColorFrame,
|
|
viewBinding.enableLightsFrame,
|
|
viewBinding.enableVibrationFrame,
|
|
viewBinding.pollingDelayFrame);
|
|
}
|
|
|
|
if (!viewBinding.enableLightsMode.isChecked()) {
|
|
viewBinding.chooseColorFrame.setVisibility(View.GONE);
|
|
}
|
|
|
|
viewBinding.enableNotificationsMode.setOnCheckedChangeListener(
|
|
(buttonView, isChecked) -> {
|
|
tinyDB.putBoolean("notificationsEnabled", isChecked);
|
|
|
|
if (isChecked) {
|
|
Notifications.startWorker(ctx);
|
|
AppUtil.setMultiVisibility(
|
|
View.VISIBLE,
|
|
viewBinding.chooseColorFrame,
|
|
viewBinding.enableLightsFrame,
|
|
viewBinding.enableVibrationFrame,
|
|
viewBinding.pollingDelayFrame);
|
|
} else {
|
|
Notifications.stopWorker(ctx);
|
|
AppUtil.setMultiVisibility(
|
|
View.GONE,
|
|
viewBinding.chooseColorFrame,
|
|
viewBinding.enableLightsFrame,
|
|
viewBinding.enableVibrationFrame,
|
|
viewBinding.pollingDelayFrame);
|
|
}
|
|
|
|
Toasty.success(appCtx, getResources().getString(R.string.settingsSave));
|
|
});
|
|
viewBinding.enableNotificationsFrame.setOnClickListener(
|
|
v ->
|
|
viewBinding.enableNotificationsMode.setChecked(
|
|
!viewBinding.enableNotificationsMode.isChecked()));
|
|
|
|
// polling delay
|
|
viewBinding.pollingDelayFrame.setOnClickListener(
|
|
v -> {
|
|
NumberPicker numberPicker = new NumberPicker(ctx);
|
|
numberPicker.setMinValue(Constants.minimumPollingDelay);
|
|
numberPicker.setMaxValue(Constants.maximumPollingDelay);
|
|
numberPicker.setValue(
|
|
tinyDB.getInt("pollingDelayMinutes", Constants.defaultPollingDelay));
|
|
numberPicker.setWrapSelectorWheel(true);
|
|
|
|
MaterialAlertDialogBuilder materialAlertDialogBuilder =
|
|
new MaterialAlertDialogBuilder(ctx)
|
|
.setTitle(R.string.pollingDelayDialogHeaderText)
|
|
.setMessage(
|
|
getString(R.string.pollingDelayDialogDescriptionText))
|
|
.setCancelable(true)
|
|
.setNeutralButton(
|
|
R.string.cancelButton,
|
|
(dialog, which) -> dialog.dismiss())
|
|
.setPositiveButton(
|
|
getString(R.string.okButton),
|
|
(dialog, which) -> {
|
|
tinyDB.putInt(
|
|
"pollingDelayMinutes",
|
|
numberPicker.getValue());
|
|
|
|
Notifications.stopWorker(ctx);
|
|
Notifications.startWorker(ctx);
|
|
|
|
viewBinding.pollingDelaySelected.setText(
|
|
String.format(
|
|
getString(
|
|
R.string
|
|
.pollingDelaySelectedText),
|
|
numberPicker.getValue()));
|
|
Toasty.success(
|
|
appCtx,
|
|
getResources()
|
|
.getString(R.string.settingsSave));
|
|
});
|
|
|
|
materialAlertDialogBuilder.setView(numberPicker);
|
|
materialAlertDialogBuilder.create().show();
|
|
});
|
|
|
|
// lights switcher
|
|
viewBinding.enableLightsMode.setOnCheckedChangeListener(
|
|
(buttonView, isChecked) -> {
|
|
if (!isChecked) {
|
|
viewBinding.chooseColorFrame.setVisibility(View.GONE);
|
|
} else {
|
|
viewBinding.chooseColorFrame.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
tinyDB.putBoolean("notificationsEnableLights", isChecked);
|
|
Toasty.success(appCtx, getResources().getString(R.string.settingsSave));
|
|
});
|
|
viewBinding.enableLightsFrame.setOnClickListener(
|
|
v ->
|
|
viewBinding.enableLightsMode.setChecked(
|
|
!viewBinding.enableLightsMode.isChecked()));
|
|
|
|
// lights color chooser
|
|
viewBinding.chooseColorFrame.setOnClickListener(
|
|
v -> {
|
|
ColorPicker colorPicker = new ColorPicker(SettingsNotificationsActivity.this);
|
|
colorPicker.setColor(tinyDB.getInt("notificationsLightColor", Color.GREEN));
|
|
colorPicker.setCallback(
|
|
color -> {
|
|
tinyDB.putInt("notificationsLightColor", color);
|
|
viewBinding.chooseColorState.setCardBackgroundColor(color);
|
|
colorPicker.dismiss();
|
|
Toasty.success(
|
|
appCtx, getResources().getString(R.string.settingsSave));
|
|
});
|
|
|
|
colorPicker.show();
|
|
});
|
|
|
|
// vibration switcher
|
|
viewBinding.enableVibrationMode.setOnCheckedChangeListener(
|
|
(buttonView, isChecked) -> {
|
|
tinyDB.putBoolean("notificationsEnableVibration", isChecked);
|
|
Toasty.success(appCtx, getResources().getString(R.string.settingsSave));
|
|
});
|
|
viewBinding.enableVibrationFrame.setOnClickListener(
|
|
v ->
|
|
viewBinding.enableVibrationMode.setChecked(
|
|
!viewBinding.enableVibrationMode.isChecked()));
|
|
}
|
|
}
|