mirror of
https://github.com/syncthing/syncthing-android.git
synced 2024-11-26 06:11:19 +00:00
* Add TipsAndTricks activity * Add TipListAdapter * Fix lint * Fix typo * Fix toolbar * Fix layout * Add onClick listener * Add tips * Update APK version to 0.14.51.8 / 4171 * Update README.md and whatsnew * Fix Android 4.x compatibility * Imported translations
This commit is contained in:
parent
5fbd99619e
commit
200f50e940
47 changed files with 299 additions and 47 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
[![License: MPLv2](https://img.shields.io/badge/License-MPLv2-blue.svg)](https://opensource.org/licenses/MPL-2.0)
|
||||
<a href="https://github.com/Catfriend1/syncthing-android/releases" alt="GitHub release"><img src="https://img.shields.io/github/release/Catfriend1/syncthing-android/all.svg" /></a>
|
||||
<a href="https://f-droid.org/de/packages/com.github.catfriend1.syncthingandroid" alt="F-Droid release"><img src="https://img.shields.io/badge/f--droid-4161-brightgreen.svg" /></a>
|
||||
<a href="https://f-droid.org/de/packages/com.github.catfriend1.syncthingandroid" alt="F-Droid release"><img src="https://img.shields.io/badge/f--droid-4170-brightgreen.svg" /></a>
|
||||
|
||||
# Major enhancements in this fork are:
|
||||
- Individual sync conditions can be applied per device and per folder (for expert users).
|
||||
|
|
|
@ -5,6 +5,7 @@ apply plugin: 'com.github.triplet.play'
|
|||
dependencies {
|
||||
implementation 'eu.chainfire:libsuperuser:1.0.0.201704021214'
|
||||
implementation 'com.android.support:design:28.0.0'
|
||||
implementation 'com.android.support:recyclerview-v7:28.0.0'
|
||||
implementation 'com.google.zxing:android-integration:3.3.0'
|
||||
implementation 'com.google.code.gson:gson:2.8.2'
|
||||
implementation 'org.mindrot:jbcrypt:0.4'
|
||||
|
@ -35,8 +36,8 @@ android {
|
|||
applicationId "com.github.catfriend1.syncthingandroid"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 26
|
||||
versionCode 4170
|
||||
versionName "0.14.51.7"
|
||||
versionCode 4171
|
||||
versionName "0.14.51.8"
|
||||
testApplicationId 'com.github.catfriend1.syncthingandroid.test'
|
||||
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
|
||||
playAccountConfig = playAccountConfigs.defaultAccountConfig
|
||||
|
|
|
@ -46,6 +46,15 @@
|
|||
android:label="@string/app_name"
|
||||
android:launchMode="singleTask">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activities.TipsAndTricksActivity"
|
||||
android:label="@string/tips_and_tricks_title"
|
||||
android:parentActivityName=".activities.MainActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".activities.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activities.WebGuiActivity"
|
||||
android:label="@string/web_gui_title"
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
package com.nutomic.syncthingandroid.activities;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.nutomic.syncthingandroid.R;
|
||||
import com.nutomic.syncthingandroid.views.TipListAdapter;
|
||||
import com.nutomic.syncthingandroid.views.TipListAdapter.ItemClickListener;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Holds a RecyclerView that shows tips and tricks.
|
||||
*/
|
||||
public class TipsAndTricksActivity extends SyncthingActivity {
|
||||
|
||||
private static final String TAG = "TipsAndTricksActivity";
|
||||
|
||||
private RecyclerView mRecyclerView;
|
||||
private TipListAdapter mTipListAdapter;
|
||||
private RecyclerView.LayoutManager mLayoutManager;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_tips_and_tricks);
|
||||
mRecyclerView = findViewById(R.id.tip_recycler_view);
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mLayoutManager = new LinearLayoutManager(this);
|
||||
mRecyclerView.setLayoutManager(mLayoutManager);
|
||||
mTipListAdapter = new TipListAdapter(this);
|
||||
|
||||
/**
|
||||
* Determine the app's private data folder on external storage if present.
|
||||
* e.g. "/storage/abcd-efgh/Android/[PACKAGE_NAME]/files"
|
||||
*/
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
ArrayList<File> externalFilesDir = new ArrayList<>();
|
||||
externalFilesDir.addAll(Arrays.asList(getExternalFilesDirs(null)));
|
||||
externalFilesDir.remove(getExternalFilesDir(null));
|
||||
if (externalFilesDir.size() > 0) {
|
||||
String absExternalStorageAppFilesPath = externalFilesDir.get(0).getAbsolutePath();
|
||||
mTipListAdapter.add(getString(R.string.tip_write_to_sdcard_title),
|
||||
getString(R.string.tip_write_to_sdcard_text, absExternalStorageAppFilesPath));
|
||||
}
|
||||
}
|
||||
|
||||
// Fill tip title and text content.
|
||||
mTipListAdapter.add(getString(R.string.tip_sync_on_local_network_title), getString(R.string.tip_sync_on_local_network_text));
|
||||
mTipListAdapter.add(getString(R.string.tip_custom_sync_conditions_title), getString(R.string.tip_custom_sync_conditions_text));
|
||||
|
||||
// Set onClick listener and add adapter to recycler view.
|
||||
mTipListAdapter.setOnClickListener(
|
||||
new ItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(View view, String itemTitle, String itemText) {
|
||||
Log.v(TAG, "User clicked item with title \'" + itemTitle + "\'");
|
||||
/**
|
||||
* Future improvement:
|
||||
* Collapse texts to the first three lines and open a DialogFragment
|
||||
* if the user clicks an item from the tip list.
|
||||
*/
|
||||
}
|
||||
}
|
||||
);
|
||||
mRecyclerView.setAdapter(mTipListAdapter);
|
||||
}
|
||||
|
||||
}
|
|
@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableMap;
|
|||
import com.nutomic.syncthingandroid.R;
|
||||
import com.nutomic.syncthingandroid.activities.MainActivity;
|
||||
import com.nutomic.syncthingandroid.activities.SettingsActivity;
|
||||
import com.nutomic.syncthingandroid.activities.TipsAndTricksActivity;
|
||||
import com.nutomic.syncthingandroid.activities.WebGuiActivity;
|
||||
import com.nutomic.syncthingandroid.http.ImageGetRequest;
|
||||
import com.nutomic.syncthingandroid.service.Constants;
|
||||
|
@ -37,11 +38,20 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
|
||||
private static final String TAG = "DrawerFragment";
|
||||
|
||||
/**
|
||||
* These buttons might be accessible if the screen is big enough
|
||||
* or the user can scroll the drawer to access them.
|
||||
*/
|
||||
private TextView mVersion = null;
|
||||
private TextView mDrawerActionShowQrCode;
|
||||
private TextView mDrawerActionWebGui;
|
||||
private TextView mDrawerActionImportExport;
|
||||
private TextView mDrawerActionRestart;
|
||||
private TextView mDrawerTipsAndTricks;
|
||||
|
||||
/**
|
||||
* These buttons are always visible.
|
||||
*/
|
||||
private TextView mDrawerActionSettings;
|
||||
private TextView mDrawerActionExit;
|
||||
|
||||
|
@ -84,6 +94,7 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
mDrawerActionWebGui = view.findViewById(R.id.drawerActionWebGui);
|
||||
mDrawerActionImportExport = view.findViewById(R.id.drawerActionImportExport);
|
||||
mDrawerActionRestart = view.findViewById(R.id.drawerActionRestart);
|
||||
mDrawerTipsAndTricks = view.findViewById(R.id.drawerActionTipsAndTricks);
|
||||
mDrawerActionSettings = view.findViewById(R.id.drawerActionSettings);
|
||||
mDrawerActionExit = view.findViewById(R.id.drawerActionExit);
|
||||
|
||||
|
@ -92,6 +103,7 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
mDrawerActionWebGui.setOnClickListener(this);
|
||||
mDrawerActionImportExport.setOnClickListener(this);
|
||||
mDrawerActionRestart.setOnClickListener(this);
|
||||
mDrawerTipsAndTricks.setOnClickListener(this);
|
||||
mDrawerActionSettings.setOnClickListener(this);
|
||||
mDrawerActionExit.setOnClickListener(this);
|
||||
|
||||
|
@ -124,6 +136,7 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
mDrawerActionShowQrCode.setVisibility(synthingRunning ? View.VISIBLE : View.GONE);
|
||||
mDrawerActionWebGui.setVisibility(synthingRunning ? View.VISIBLE : View.GONE);
|
||||
mDrawerActionRestart.setVisibility(synthingRunning ? View.VISIBLE : View.GONE);
|
||||
mDrawerTipsAndTricks.setVisibility(View.VISIBLE);
|
||||
mDrawerActionExit.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
@ -155,14 +168,13 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
public void onClick(View v) {
|
||||
Intent intent;
|
||||
switch (v.getId()) {
|
||||
case R.id.drawerActionShowQrCode:
|
||||
showQrCode();
|
||||
break;
|
||||
case R.id.drawerActionWebGui:
|
||||
startActivity(new Intent(mActivity, WebGuiActivity.class));
|
||||
mActivity.closeDrawer();
|
||||
break;
|
||||
case R.id.drawerActionSettings:
|
||||
startActivity(new Intent(mActivity, SettingsActivity.class));
|
||||
mActivity.closeDrawer();
|
||||
break;
|
||||
case R.id.drawerActionImportExport:
|
||||
intent = new Intent(mActivity, SettingsActivity.class);
|
||||
intent.putExtra(SettingsActivity.EXTRA_OPEN_SUB_PREF_SCREEN, "category_import_export");
|
||||
|
@ -173,6 +185,14 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
mActivity.showRestartDialog();
|
||||
mActivity.closeDrawer();
|
||||
break;
|
||||
case R.id.drawerActionTipsAndTricks:
|
||||
startActivity(new Intent(mActivity, TipsAndTricksActivity.class));
|
||||
mActivity.closeDrawer();
|
||||
break;
|
||||
case R.id.drawerActionSettings:
|
||||
startActivity(new Intent(mActivity, SettingsActivity.class));
|
||||
mActivity.closeDrawer();
|
||||
break;
|
||||
case R.id.drawerActionExit:
|
||||
if (sharedPreferences != null && sharedPreferences.getBoolean(Constants.PREF_START_SERVICE_ON_BOOT, false)) {
|
||||
/**
|
||||
|
@ -193,9 +213,6 @@ public class DrawerFragment extends Fragment implements SyncthingService.OnServi
|
|||
}
|
||||
mActivity.closeDrawer();
|
||||
break;
|
||||
case R.id.drawerActionShowQrCode:
|
||||
showQrCode();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ public class FileUtils {
|
|||
try {
|
||||
/**
|
||||
* Determine the app's private data folder on external storage if present.
|
||||
* e.g. "/storage/abcd-efgh/Android/com.nutomic.syncthinandroid/files"
|
||||
* e.g. "/storage/abcd-efgh/Android/[PACKAGE_NAME]/files"
|
||||
*/
|
||||
ArrayList<File> externalFilesDir = new ArrayList<>();
|
||||
externalFilesDir.addAll(Arrays.asList(context.getExternalFilesDirs(null)));
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
package com.nutomic.syncthingandroid.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
// import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.nutomic.syncthingandroid.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class TipListAdapter extends RecyclerView.Adapter<TipListAdapter.ViewHolder> {
|
||||
|
||||
// private static final String TAG = "TipListAdapter";
|
||||
|
||||
private ArrayList<TipEntry> mTipData = new ArrayList<TipEntry>();
|
||||
private ItemClickListener mOnClickListener;
|
||||
private LayoutInflater mLayoutInflater;
|
||||
|
||||
private class TipEntry {
|
||||
public String title;
|
||||
public String text;
|
||||
|
||||
public TipEntry(String title, String text) {
|
||||
this.title = title;
|
||||
this.text = text;
|
||||
}
|
||||
}
|
||||
|
||||
public interface ItemClickListener {
|
||||
void onItemClick(View view, String title, String text);
|
||||
}
|
||||
|
||||
public TipListAdapter(Context context) {
|
||||
mLayoutInflater = LayoutInflater.from(context);
|
||||
}
|
||||
|
||||
public void add(String title, String text) {
|
||||
mTipData.add(new TipEntry(title, text));
|
||||
}
|
||||
|
||||
public void setOnClickListener(ItemClickListener onClickListener) {
|
||||
mOnClickListener = onClickListener;
|
||||
}
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
public TextView tipTitle;
|
||||
public TextView tipText;
|
||||
public View layout;
|
||||
|
||||
public ViewHolder(View view) {
|
||||
super(view);
|
||||
tipTitle = view.findViewById(R.id.tip_title);
|
||||
tipText = view.findViewById(R.id.tip_text);
|
||||
view.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
int position = getAdapterPosition();
|
||||
String title = mTipData.get(position).title;
|
||||
String text = mTipData.get(position).text;
|
||||
if (mOnClickListener != null) {
|
||||
mOnClickListener.onItemClick(view, title, text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view = mLayoutInflater.inflate(R.layout.item_tip, parent, false);
|
||||
return new ViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
|
||||
viewHolder.tipTitle.setText(mTipData.get(position).title);
|
||||
viewHolder.tipText.setText(mTipData.get(position).text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mTipData.size();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,13 +1,11 @@
|
|||
Enhancements
|
||||
* Specify sync conditions differently for each folder, device [NEW]
|
||||
* Added offline 'tips & tricks' content [NEW]
|
||||
* UI explains why syncthing is running (or not)
|
||||
* Support in-app editing of folder's ignore list items
|
||||
Fixes
|
||||
* Fixed the "battery eater"
|
||||
* Fixed xml encoding when parsing, saving the config (#89)
|
||||
* Fixed override changes button not showing
|
||||
* Android 8 and 9 support
|
||||
* Fixed phone plugged to charger detection
|
||||
* Lots of bug fixes and better Android 8+ support (#52, #54, #56, #59)
|
||||
Maintenance
|
||||
* Updated syncthing to v0.14.51
|
||||
* Added support for "receive only" folders
|
||||
* Updated syncthing to v0.14.51 (receiveOnly folders)
|
||||
|
|
BIN
app/src/main/res/drawable-hdpi/ic_help_outline_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-hdpi/ic_help_outline_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 544 B |
BIN
app/src/main/res/drawable-mdpi/ic_help_outline_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_help_outline_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 364 B |
BIN
app/src/main/res/drawable-xhdpi/ic_help_outline_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_help_outline_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 740 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_help_outline_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/ic_help_outline_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/ic_help_outline_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/ic_help_outline_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
15
app/src/main/res/layout/activity_tips_and_tricks.xml
Normal file
15
app/src/main/res/layout/activity_tips_and_tricks.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include layout="@layout/widget_toolbar" />
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/tip_recycler_view"
|
||||
android:paddingTop="?attr/actionBarSize"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
</RelativeLayout>
|
|
@ -135,6 +135,17 @@
|
|||
android:text="@string/restart"
|
||||
android:clickable="true"
|
||||
android:focusable="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawerActionTipsAndTricks"
|
||||
style="@style/Widget.Syncthing.TextView.Label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:drawableLeft="@drawable/ic_help_outline_black_24dp"
|
||||
android:drawableStart="@drawable/ic_help_outline_black_24dp"
|
||||
android:text="@string/tips_and_tricks_title"
|
||||
android:clickable="true"
|
||||
android:focusable="true" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
||||
|
|
35
app/src/main/res/layout/item_tip.xml
Normal file
35
app/src/main/res/layout/item_tip.xml
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:padding="6dip"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tip_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="6dip"
|
||||
android:layout_marginRight="6dip"
|
||||
android:contentDescription="@string/generic_help"
|
||||
android:gravity="top"
|
||||
android:src="@drawable/ic_help_outline_black_24dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tip_title"
|
||||
android:layout_marginTop="-25dp"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tip_text"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
|
||||
</LinearLayout>
|
|
@ -197,7 +197,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Уеб интерфейс</string>
|
||||
|
||||
|
|
|
@ -222,7 +222,6 @@ Ens podeu informar dels problemes que trobeu a través de Github.</string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interfície web</string>
|
||||
|
||||
|
|
|
@ -210,7 +210,6 @@ Všechny zaznamenané chyby prosím hlašte přes Github.</string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Syncthing GUI</string>
|
||||
|
||||
|
|
|
@ -206,7 +206,6 @@ Vær venlig at rapportere ethvert problem, du støder på, via Github. </string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web GUI</string>
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ Bitte melden Sie auftretende Probleme via GitHub.</string>
|
|||
<string name="finish">Fertig</string>
|
||||
<string name="generic_example">Beispiel</string>
|
||||
<string name="generic_error">Fehler</string>
|
||||
<string name="generic_help">Hilfe</string>
|
||||
<string name="grant_permission">Zugriff gewähren</string>
|
||||
<string name="permission_granted">Zugriff gewährt</string>
|
||||
<string name="reason">Grund:</string>
|
||||
|
@ -283,9 +284,23 @@ Bitte melden Sie auftretende Probleme via GitHub.</string>
|
|||
<!-- Toast show if we could not get root permissions -->
|
||||
<string name="toast_root_denied">Konnte keine Root-Rechte erhalten.</string>
|
||||
|
||||
<!-- WebGuiActivity -->
|
||||
<!-- TipsAndTricks activity -->
|
||||
|
||||
|
||||
<!-- Title of the Tips and Tricks activity -->
|
||||
<string name="tips_and_tricks_title">Tipps & Tricks</string>
|
||||
|
||||
<string name="tip_write_to_sdcard_title">Workaround zum Schreiben auf Speicherkarte</string>
|
||||
<string name="tip_write_to_sdcard_text">Wenn Du die Meldung \"Android erlaubt nur schreibgeschützten Zugriff\" für einen bestimmten Ordner erhältst, erstelle einen neuen Ordner und benutze diesen Pfad, um Schreibzugriff zu erhalten:\n%1$s/DEIN_ORDNER_NAME\nSei vorsichtig: Dieser Ordner wird von Android gelöscht, sobald du die App deinstallierst. Verschiebe die Daten an einen sicheren Ort außerhalb des .../Android Ordners, bevor du die App deinstallierst.</string>
|
||||
|
||||
<string name="tip_sync_on_local_network_title">Nur über lokales WLAN-Netzwerk syncen</string>
|
||||
<string name="tip_sync_on_local_network_text">Wenn Du beabsichtigst, nur mit Geräten zu syncen, die am lokalen WLAN-Netzwerk angeschlossen oder Teil eines Hotspot-WLAN sind, kannst du den Batterieverbrauch reduzieren und versehentliches Syncen über mobile Daten verhindern, indem Du die folgenden Optionen unter \"Einstellungen/Syncthing-Optionen\" abschaltest:\n- NAT-Durchdringung\n- Globale Gerätesuche\n- Weiterleitung aktivieren\nLasse nur die \"Lokale Gerätesuche\" eingeschaltet.</string>
|
||||
|
||||
<string name="tip_custom_sync_conditions_title">Sync-Bedingungen pro Ordner/Gerät festlegen</string>
|
||||
<string name="tip_custom_sync_conditions_text">Diese Funktion wird in zukünftigen Releases weiter verbessert. Für den Moment wollten wir das App-Verhalten nicht \"umstürzen\", um bestehende Konfigurationen nicht zu \"brechen\". Deshalb können die \"individuellen Sync-Bedingungen\" für einen bestimmten Netzwerktyp erst festgelegt werden, wenn dieser Netzwerktyp vorher in den globalen Laufkonditionen aktiviert wurde.</string>
|
||||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Weboberfläche</string>
|
||||
|
||||
|
|
|
@ -206,7 +206,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web GUI</string>
|
||||
|
||||
|
|
|
@ -184,7 +184,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interfaz Web</string>
|
||||
|
||||
|
|
|
@ -195,7 +195,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interfaz gráfica web</string>
|
||||
|
||||
|
|
|
@ -211,7 +211,6 @@ Ilmoitathan ystävällisesti kaikista havaitsemistasi ongelmista Githubin kautta
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web käyttöliittymä</string>
|
||||
|
||||
|
|
|
@ -224,7 +224,6 @@ S\'il vous plaît, soumettez les problèmes que vous rencontrez via Github.</str
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interface WEB</string>
|
||||
|
||||
|
|
|
@ -228,7 +228,6 @@ Néhány eszközön extra alkalmazás-leállító alkalmazást telepített fel a
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Webes felület</string>
|
||||
|
||||
|
|
|
@ -200,7 +200,6 @@ Jika ada masalah silakan laporkan lewat Github.</string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web GUI</string>
|
||||
|
||||
|
|
|
@ -224,7 +224,6 @@ Si prega di segnalare eventuali problemi che si incontrano via Github.</string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interfaccia Web</string>
|
||||
|
||||
|
|
|
@ -207,7 +207,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web GUI</string>
|
||||
|
||||
|
|
|
@ -205,7 +205,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">웹 GUI</string>
|
||||
|
||||
|
|
|
@ -187,7 +187,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Webgrensesnitt</string>
|
||||
|
||||
|
|
|
@ -224,7 +224,6 @@ Als je problemen tegenkomt, meld ze dan via GitHub.</string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web-interface</string>
|
||||
|
||||
|
|
|
@ -187,7 +187,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Grafisk grensesnitt på verdsveven</string>
|
||||
|
||||
|
|
|
@ -210,7 +210,6 @@ Proszę zgłaszać napotkane błędy programu za pośrednictwem serwisu Github.<
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interfejs internetowy</string>
|
||||
|
||||
|
|
|
@ -224,7 +224,6 @@ Por favor, nos avise sobre quaisquer problemas que você encontrar via Github.</
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interface web</string>
|
||||
|
||||
|
|
|
@ -200,7 +200,6 @@ Reporte, através do Github, quaisquer problemas que encontre, por favor.</strin
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interface Web</string>
|
||||
|
||||
|
|
|
@ -242,7 +242,6 @@ Vă rugăm să raportați orice problemă întâlniți, prin intermediul GitHub.
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Interfață web</string>
|
||||
|
||||
|
|
|
@ -226,7 +226,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Веб-интерфейс</string>
|
||||
|
||||
|
|
|
@ -171,7 +171,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Webové GUI</string>
|
||||
|
||||
|
|
|
@ -241,7 +241,6 @@ Vänligen rapportera eventuella problem du stöter på via Github.</string>
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Webbgränssnitt</string>
|
||||
|
||||
|
|
|
@ -197,7 +197,6 @@ Eğer herhangi bir sorunla karşılaşırsan Github aracılığıyla bildir.</st
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web Arayüzü</string>
|
||||
|
||||
|
|
|
@ -158,7 +158,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Веб-інтерфейс</string>
|
||||
|
||||
|
|
|
@ -184,7 +184,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">GUI web</string>
|
||||
|
||||
|
|
|
@ -209,7 +209,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">网页管理页面</string>
|
||||
|
||||
|
|
|
@ -205,7 +205,6 @@
|
|||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">網頁 GUI</string>
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ Please report any problems you encounter via Github.</string>
|
|||
<string name="finish">Finish</string>
|
||||
<string name="generic_example">Example</string>
|
||||
<string name="generic_error">Error</string>
|
||||
<string name="generic_help">Help</string>
|
||||
<string name="grant_permission">Grant permission</string>
|
||||
<string name="permission_granted">Permission granted</string>
|
||||
<string name="reason">Reason:</string>
|
||||
|
@ -283,9 +284,23 @@ Please report any problems you encounter via Github.</string>
|
|||
<!-- Toast show if we could not get root permissions -->
|
||||
<string name="toast_root_denied">Did not get root permissions</string>
|
||||
|
||||
<!-- WebGuiActivity -->
|
||||
<!-- TipsAndTricks activity -->
|
||||
|
||||
|
||||
<!-- Title of the Tips and Tricks activity -->
|
||||
<string name="tips_and_tricks_title">Tips & Tricks</string>
|
||||
|
||||
<string name="tip_write_to_sdcard_title">Write to external sdcard workaround</string>
|
||||
<string name="tip_write_to_sdcard_text">If you see the UI stating that \'Android only grants syncthing read-only access\' to a certain folder, create a new folder using this path to gain write access:\n%1$s/YOUR_FOLDER_NAME\nBe careful: This folder will get wiped out by Android if you uninstall this app. Before uninstalling the app, move the data to a safe place outside the .../Android folder.</string>
|
||||
|
||||
<string name="tip_sync_on_local_network_title">Sync only using the local WiFi network</string>
|
||||
<string name="tip_sync_on_local_network_text">If you\'d like to sync only with devices that are located on the local WiFi network or reachable via WiFi hotspot, you can lower battery usage and avoid accidentially syncing over mobile data by turning off the following options under \'Settings/Syncthing Options\':\n- Enable NAT traversal\n- Global Discovery\n- Enable Relaying\nOnly leave \'Local discovery\' enabled.</string>
|
||||
|
||||
<string name="tip_custom_sync_conditions_title">Use per folder/device custom sync conditions</string>
|
||||
<string name="tip_custom_sync_conditions_text">This feature will still be improved in future releases. For now, we didn\'t want to break existing configs and app behaviour. That\'s why custom sync conditions for a certain network type can only be set if you enable syncing on the network in the global run conditions first.</string>
|
||||
|
||||
<!-- WebGuiActivity -->
|
||||
|
||||
<!-- Title of the web gui activity -->
|
||||
<string name="web_gui_title">Web GUI</string>
|
||||
|
||||
|
|
Loading…
Reference in a new issue