aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/res/layout/activity_folder.xml
diff options
context:
space:
mode:
authorLena <lena@omega>2026-01-01 00:00:00 +0000
committerLena <lena@omega>2026-01-01 00:00:00 +0000
commit7e04941bccb2683f8a6e3ee38a99c50129234dd1 (patch)
tree471227fa437291e7a6b499e3de6c106c54eaf311 /app/src/main/res/layout/activity_folder.xml
downloadrsend-7e04941bccb2683f8a6e3ee38a99c50129234dd1.tar.gz
rsend: push phone folders to a home SSH host over rsync
A small Android app for one-way folder backup, a KISS alternative to Syncthing. It bundles rsync (built from pinned source via the NDK) and a pure-Go SSH transport, both shipped in the APK as lib*.so and run from the native library directory. rsend pins the host key, stores the ed25519 identity Keystore-encrypted, pushes each folder additively or as a mirror, and runs on demand or on a WiFi-only schedule. The build is self-contained and reproducible: make setup provisions the toolchain, make builds rsync, rsh, and the APK.
Diffstat (limited to 'app/src/main/res/layout/activity_folder.xml')
-rw-r--r--app/src/main/res/layout/activity_folder.xml123
1 files changed, 123 insertions, 0 deletions
diff --git a/app/src/main/res/layout/activity_folder.xml b/app/src/main/res/layout/activity_folder.xml
new file mode 100644
index 0000000..1a15f00
--- /dev/null
+++ b/app/src/main/res/layout/activity_folder.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/appRoot"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <include layout="@layout/app_toolbar" />
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="@dimen/space_m">
+
+ <LinearLayout
+ style="@style/Widget.Rsend.Card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.Rsend.Caption"
+ android:text="Name" />
+
+ <EditText
+ android:id="@+id/name"
+ style="@style/Widget.Rsend.EditText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:inputType="text"
+ android:hint="DCIM" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/space_m"
+ android:textAppearance="@style/TextAppearance.Rsend.Caption"
+ android:text="Local path" />
+
+ <EditText
+ android:id="@+id/local"
+ style="@style/Widget.Rsend.EditText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:inputType="textUri"
+ android:hint="/storage/emulated/0/DCIM" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/space_m"
+ android:textAppearance="@style/TextAppearance.Rsend.Caption"
+ android:text="Remote path" />
+
+ <EditText
+ android:id="@+id/remote"
+ style="@style/Widget.Rsend.EditText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:inputType="textUri"
+ android:hint="/backup/phone/DCIM" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/space_m"
+ android:textAppearance="@style/TextAppearance.Rsend.Caption"
+ android:text="Excludes (comma-separated)" />
+
+ <EditText
+ android:id="@+id/excludes"
+ style="@style/Widget.Rsend.EditText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:inputType="text"
+ android:hint=".thumbnails/, .trashed/" />
+
+ <Switch
+ android:id="@+id/delete"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/space_m"
+ android:textAppearance="@style/TextAppearance.Rsend.Body"
+ android:text="Mirror (delete on server when deleted locally)" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <Button
+ android:id="@+id/save"
+ style="@style/Widget.Rsend.Button.Primary"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_marginEnd="@dimen/space_s"
+ android:text="Save" />
+
+ <Button
+ android:id="@+id/removeFolder"
+ style="@style/Widget.Rsend.Button.Secondary"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="Remove" />
+ </LinearLayout>
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>