aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-22 11:26:51 +0200
committerDanilo M. <danix@danix.xyz>2026-10-22 11:26:51 +0200
commit5c116d4ba7a59ac5a5c9acbdb166248a97c42b81 (patch)
tree35c030bf1311ad6f8e89b802de6bab89e886547a
parent2e7672cef12dddfa3c2511904b58d86baf52f6b8 (diff)
downloadmygram-droid-5c116d4ba7a59ac5a5c9acbdb166248a97c42b81.tar.gz
mygram-droid-5c116d4ba7a59ac5a5c9acbdb166248a97c42b81.zip
Add settings screen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-rw-r--r--app/src/main/java/mygram/droid/SettingsActivity.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/app/src/main/java/mygram/droid/SettingsActivity.java b/app/src/main/java/mygram/droid/SettingsActivity.java
index 776e48b..a8839bb 100644
--- a/app/src/main/java/mygram/droid/SettingsActivity.java
+++ b/app/src/main/java/mygram/droid/SettingsActivity.java
@@ -15,6 +15,68 @@
package mygram.droid;
import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.InputType;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.Toast;
+/** Viewer password, photo and background durations, change instance. */
public final class SettingsActivity extends Activity {
+ @Override
+ protected void onCreate(Bundle state) {
+ super.onCreate(state);
+ LinearLayout box = Ui.column(this);
+ box.addView(Ui.text(this, Prefs.server(), 18));
+ box.addView(Ui.text(this, "Viewer password", 14));
+ EditText pw = Ui.field(this, "Password", Ui.password());
+ pw.setText(Prefs.password());
+ box.addView(pw);
+ box.addView(Ui.text(this, "Photo duration, seconds", 14));
+ EditText photo = Ui.field(this, "8", InputType.TYPE_CLASS_NUMBER);
+ photo.setText(String.valueOf(Prefs.photoSeconds()));
+ box.addView(photo);
+ box.addView(Ui.text(this, "Background change, seconds", 14));
+ EditText bg = Ui.field(this, "15", InputType.TYPE_CLASS_NUMBER);
+ bg.setText(String.valueOf(Prefs.backgroundSeconds()));
+ box.addView(bg);
+ LinearLayout row = Ui.row(this);
+ row.addView(Ui.iconButton(this, R.drawable.ic_check, "Save", v -> save(pw.getText().toString(),
+ photo.getText().toString(), bg.getText().toString())));
+ row.addView(Ui.iconButton(this, R.drawable.ic_swap, "Change instance",
+ v -> startActivity(new Intent(this, SetupActivity.class))));
+ box.addView(row);
+ setContentView(box);
+ row.getChildAt(0).requestFocus();
+ }
+
+ private void save(String password, String photo, String background) {
+ int p = seconds(photo), b = seconds(background);
+ if (p < 1 || b < 1) {
+ Toast.makeText(this, "Durations must be 1 to 600 seconds", Toast.LENGTH_LONG).show();
+ return;
+ }
+ Prefs.setTimes(p, b);
+ if (password.equals(Prefs.password())) {
+ finish();
+ return;
+ }
+ Api.async(() -> {
+ Api.login(Prefs.server(), password);
+ return true;
+ }, ok -> {
+ Prefs.setPassword(password);
+ finish();
+ }, e -> Toast.makeText(this, "Login failed: " + e.getMessage(), Toast.LENGTH_LONG).show());
+ }
+
+ private static int seconds(String s) {
+ try {
+ int v = Integer.parseInt(s.trim());
+ return v <= 600 ? v : -1;
+ } catch (NumberFormatException e) {
+ return -1;
+ }
+ }
}