Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add confirmation for easy-to-make changes #34

Merged
merged 7 commits into from
May 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ plugins {
// =====
var isDev = false
var beta = false
var verBuild = 118
var verName = "1.1.1"
var verBuild = 120
var verName = "1.1.1.x.1"
var verBranch = "RELEASE" // use "RELEASE" for releases versions
var verReleaseTime = 1685446503 // in seconds
var verReleaseTime = 1685455456 // in seconds
// =====

android {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public class SettingsManager {
private String datePattern = "yyyy.MM.dd EE";
private String timePattern = "HH:mm:ss";
private ItemAddPosition itemAddPosition = ItemAddPosition.BOTTOM;
private boolean confirmFastChanges = true;


public SettingsManager(File saveFile) {
Expand Down Expand Up @@ -94,6 +95,9 @@ public void applyDateAndTimePreset(DateAndTimePreset p) {
@Setter public void setItemAddPosition(ItemAddPosition e) {this.itemAddPosition = e;}
@Getter public ItemAddPosition getItemAddPosition() {return itemAddPosition;}

@Getter public boolean isConfirmFastChanges() {return confirmFastChanges;}
@Setter public void setConfirmFastChanges(boolean confirmFastChanges) {this.confirmFastChanges = confirmFastChanges;}

private void load() {
if (!FileUtil.isExist(saveFile)) {
return;
Expand Down Expand Up @@ -132,7 +136,7 @@ private void load() {
try {
this.quickNoteNotificationItemsStorageId = UUID.fromString(j.optString("quickNoteNotificationItemsStorageId"));
} catch (Exception ignored) {}
this.isTelemetry = j.optBoolean("isTelemetry", true);
this.isTelemetry = j.optBoolean("isTelemetry", true); // TODO: 30.05.2023 (oht branch) use isTelemetry for fallback
try {
this.defaultQuickNoteType = ItemsRegistry.REGISTRY.get(j.getString("defaultQuickNoteType"));
} catch (Exception ignored) {}
Expand All @@ -146,6 +150,7 @@ private void load() {
try {
this.itemAddPosition = ItemAddPosition.valueOf(j.getString("itemAddPosition"));
} catch (Exception ignored) {}
this.confirmFastChanges = j.optBoolean("confirmFastChanges", this.confirmFastChanges);

} catch (Exception e) {
Logger.e(TAG, "load", e);
Expand Down Expand Up @@ -186,6 +191,7 @@ public JSONObject exportJSONSettings() throws JSONException {
j.put("datePattern", this.datePattern);
j.put("timePattern", this.timePattern);
j.put("itemAddPosition", this.itemAddPosition.name());
j.put("confirmFastChanges", this.confirmFastChanges);
return j;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,13 @@ class SettingsFragment : Fragment() {
settingsManager.itemAddPosition = if (binding.addItemsToTop.isChecked) SettingsManager.ItemAddPosition.TOP else SettingsManager.ItemAddPosition.BOTTOM
settingsManager.save()
})

// confirm easy-to-make changes
binding.confirmFastChanges.isChecked = settingsManager.isConfirmFastChanges
viewClick(binding.confirmFastChanges, Runnable {
settingsManager.isConfirmFastChanges = binding.confirmFastChanges.isChecked
settingsManager.save()
})
}

private fun setupFirstTabSpinner() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static com.fazziclay.opentoday.util.InlineUtil.viewVisible;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.Typeface;
Expand Down Expand Up @@ -245,8 +246,8 @@ public View generateCounterItemView(CounterItem item, ViewGroup parent) {
applyTextItemToTextView(item, binding.title);

// Counter
viewClick(binding.up, item::up);
viewClick(binding.down, item::down);
viewClick(binding.up, () -> runFastChanges(R.string.item_counter_fastChanges_up, item::up));
viewClick(binding.down, () -> runFastChanges(R.string.item_counter_fastChanges_down, item::down));
binding.up.setEnabled(!previewMode);
binding.down.setEnabled(!previewMode);

Expand Down Expand Up @@ -367,12 +368,47 @@ private void applyCheckItemToCheckBoxView(final CheckboxItem item, final CheckBo
view.setChecked(item.isChecked());
view.setEnabled(!previewMode);
viewClick(view, () -> {
item.setChecked(view.isChecked());
item.visibleChanged();
item.save();
boolean to = view.isChecked();
view.setChecked(!to);
runFastChanges(to ? R.string.item_checkbox_fastChanges_checked : R.string.item_checkbox_fastChanges_unchecked, () -> {
view.setChecked(to);
item.setChecked(to);
item.visibleChanged();
item.save();
});
});
}

private String getString(int resId, Object... formatArgs) {
return activity.getString(resId, formatArgs);
}

private String getString(int resId) {
return activity.getString(resId);
}

private void runFastChanges(int message, Runnable runnable) {
runFastChanges(getString(message), runnable);
}

private void runFastChanges(String message, Runnable runnable) {
if (settingsManager.isConfirmFastChanges()) {
new AlertDialog.Builder(activity)
.setTitle(R.string.fastChanges_dialog_title)
.setMessage(message)
.setNeutralButton(R.string.fastChanges_dialog_dontAsk, (_ignore, __ignore) -> {
settingsManager.setConfirmFastChanges(false);
settingsManager.save();
runnable.run();
})
.setNegativeButton(R.string.fastChanges_dialog_cancel, null)
.setPositiveButton(R.string.fastChanges_dialog_apply, (_ignore, __ignore) -> runnable.run())
.show();
} else {
runnable.run();
}
}

private interface ContentInterfaceE {
void run(final LinearLayout linearLayout, final View empty);
}
Expand Down
9 changes: 8 additions & 1 deletion app/src/main/res/layout/fragment_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,18 @@
android:layout_height="wrap_content"
android:text="@string/settings_addItemsToTop" />

<androidx.appcompat.widget.SwitchCompat
android:id="@+id/confirmFastChanges"
android:layout_below="@id/addItemsToTop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/settings_confirmFastChanges" />

<Button
android:id="@+id/date_and_time_format"
android:text="@string/settings_dateAndTime_format"
android:layout_width="wrap_content"
android:layout_below="@id/addItemsToTop"
android:layout_below="@id/confirmFastChanges"
android:layout_height="wrap_content" />


Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -364,4 +364,13 @@
<string name="settings_itemAddPosition_BOTTOM">Вниз</string>
<string name="settings_itemAddPosition_TOP">Вверх</string>
<string name="settings_addItemsToTop">Добавлять айтемы вверх</string>
<string name="item_checkbox_fastChanges_checked">Поставить галочку?</string>
<string name="settings_confirmFastChanges">Подтверждать лёгкие изменения</string>
<string name="item_checkbox_fastChanges_unchecked">Убрать галочку</string>
<string name="fastChanges_dialog_title">Лёгкое изменение</string>
<string name="fastChanges_dialog_dontAsk">Всегда</string>
<string name="fastChanges_dialog_cancel">Отмена</string>
<string name="fastChanges_dialog_apply">ОК</string>
<string name="item_counter_fastChanges_up">Увеличить значение счетчика?</string>
<string name="item_counter_fastChanges_down">Уменьшить значение счетчика?</string>
</resources>
9 changes: 9 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -366,4 +366,13 @@
<string name="settings_itemAddPosition_BOTTOM">Bottom</string>
<string name="settings_itemAddPosition_TOP">Top</string>
<string name="settings_addItemsToTop">Add items to top^</string>
<string name="settings_confirmFastChanges">Confirm easy-to-make changes</string>
<string name="fastChanges_dialog_title">Easy-to-make changes</string>
<string name="fastChanges_dialog_dontAsk">Don\'t ask</string>
<string name="fastChanges_dialog_cancel">Cancel</string>
<string name="fastChanges_dialog_apply">OK</string>
<string name="item_checkbox_fastChanges_checked">Check the box?</string>
<string name="item_checkbox_fastChanges_unchecked">Remove the check mark?</string>
<string name="item_counter_fastChanges_up">Increase the counter value?</string>
<string name="item_counter_fastChanges_down">Decrease the counter value?</string>
</resources>