1
0
Fork 0
mirror of https://github.com/syncthing/syncthing-android.git synced 2024-11-26 14:21:16 +00:00

Reduce syncthing restart requests (#1099)

This commit is contained in:
Catfriend1 2018-05-29 21:35:49 +02:00 committed by Audrius Butkevicius
parent b33d966eff
commit 53fc6fdd3c
37 changed files with 38 additions and 154 deletions

View file

@ -467,7 +467,8 @@ public class MainActivity extends StateDialogActivity
startActivity(new Intent(Intent.ACTION_VIEW, uri)); startActivity(new Intent(Intent.ACTION_VIEW, uri));
break; break;
} }
getApi().editSettings(getApi().getGui(), options, this); getApi().editSettings(getApi().getGui(), options);
getApi().restart();
}; };
getApi().getUsageReport(report -> { getApi().getUsageReport(report -> {

View file

@ -1,47 +0,0 @@
package com.nutomic.syncthingandroid.activities;
import android.app.AlertDialog;
import android.os.Bundle;
import com.nutomic.syncthingandroid.R;
import com.nutomic.syncthingandroid.service.NotificationHandler;
/**
* Shows restart dialog.
*
* The user can choose to restart Syncthing immediately. Otherwise, a restart notification is
* displayed.
*/
public class RestartActivity extends SyncthingActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.restart_title)
.setPositiveButton(R.string.restart_now, (dialogInterface, i) -> {
getService().getApi().restart();
finish();
})
.setNegativeButton(R.string.restart_later, (dialogInterface, i) -> {
createRestartNotification();
finish();
})
.setOnCancelListener(dialog -> {
createRestartNotification();
finish();
})
.show();
}
/**
* Creates a notification prompting the user to restart the app.
*/
private void createRestartNotification() {
new NotificationHandler(getService()).showRestartNotification();
getApi().setRestartPostponed();
}
}

View file

@ -110,6 +110,7 @@ public class SettingsActivity extends SyncthingActivity {
/* Experimental options */ /* Experimental options */
private CheckBoxPreference mUseRoot; private CheckBoxPreference mUseRoot;
private CheckBoxPreference mUseWakelock;
private CheckBoxPreference mUseTor; private CheckBoxPreference mUseTor;
private EditTextPreference mSocksProxyAddress; private EditTextPreference mSocksProxyAddress;
private EditTextPreference mHttpProxyAddress; private EditTextPreference mHttpProxyAddress;
@ -122,6 +123,8 @@ public class SettingsActivity extends SyncthingActivity {
private Options mOptions; private Options mOptions;
private Config.Gui mGui; private Config.Gui mGui;
private Boolean mRequireRestart = false;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -196,7 +199,7 @@ public class SettingsActivity extends SyncthingActivity {
Preference stResetDeltas = findPreference("st_reset_deltas"); Preference stResetDeltas = findPreference("st_reset_deltas");
mUseRoot = (CheckBoxPreference) findPreference(Constants.PREF_USE_ROOT); mUseRoot = (CheckBoxPreference) findPreference(Constants.PREF_USE_ROOT);
Preference useWakelock = (CheckBoxPreference) findPreference(Constants.PREF_USE_WAKE_LOCK); mUseWakelock = (CheckBoxPreference) findPreference(Constants.PREF_USE_WAKE_LOCK);
mUseTor = (CheckBoxPreference) findPreference(Constants.PREF_USE_TOR); mUseTor = (CheckBoxPreference) findPreference(Constants.PREF_USE_TOR);
mSocksProxyAddress = (EditTextPreference) findPreference(Constants.PREF_SOCKS_PROXY_ADDRESS); mSocksProxyAddress = (EditTextPreference) findPreference(Constants.PREF_SOCKS_PROXY_ADDRESS);
mHttpProxyAddress = (EditTextPreference) findPreference(Constants.PREF_HTTP_PROXY_ADDRESS); mHttpProxyAddress = (EditTextPreference) findPreference(Constants.PREF_HTTP_PROXY_ADDRESS);
@ -220,7 +223,7 @@ public class SettingsActivity extends SyncthingActivity {
/* Experimental options */ /* Experimental options */
mUseRoot.setOnPreferenceClickListener(this); mUseRoot.setOnPreferenceClickListener(this);
useWakelock.setOnPreferenceChangeListener((p, o) -> requireRestart()); mUseWakelock.setOnPreferenceChangeListener(this);
mUseTor.setOnPreferenceChangeListener(this); mUseTor.setOnPreferenceChangeListener(this);
mSocksProxyAddress.setEnabled(!(Boolean) mUseTor.isChecked()); mSocksProxyAddress.setEnabled(!(Boolean) mUseTor.isChecked());
@ -291,11 +294,12 @@ public class SettingsActivity extends SyncthingActivity {
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy();
mPreferences.unregisterOnSharedPreferenceChangeListener(this); mPreferences.unregisterOnSharedPreferenceChangeListener(this);
if (mSyncthingService != null) if (mSyncthingService != null) {
mSyncthingService.unregisterOnApiChangeListener(this); mSyncthingService.unregisterOnApiChangeListener(this);
} }
super.onDestroy();
}
private void setPreferenceCategoryChangeListener( private void setPreferenceCategoryChangeListener(
Preference category, Preference.OnPreferenceChangeListener listener) { Preference category, Preference.OnPreferenceChangeListener listener) {
@ -365,22 +369,26 @@ public class SettingsActivity extends SyncthingActivity {
mOptions.urAccepted = ((boolean) o) mOptions.urAccepted = ((boolean) o)
? systemInfo.urVersionMax ? systemInfo.urVersionMax
: Options.USAGE_REPORTING_DENIED; : Options.USAGE_REPORTING_DENIED;
mApi.editSettings(mGui, mOptions, getActivity());
}); });
break; break;
default: throw new InvalidParameterException(); default: throw new InvalidParameterException();
} }
mApi.editSettings(mGui, mOptions, getActivity()); mApi.editSettings(mGui, mOptions);
mRequireRestart = true;
return true; return true;
} }
public boolean requireRestart() { @Override
public void onStop() {
if (mRequireRestart) {
if (mSyncthingService.getCurrentState() != SyncthingService.State.DISABLED && if (mSyncthingService.getCurrentState() != SyncthingService.State.DISABLED &&
mSyncthingService.getApi() != null) { mSyncthingService.getApi() != null) {
mSyncthingService.getApi().showRestartDialog(getActivity()); mSyncthingService.getApi().restart();
mRequireRestart = false;
} }
return true; }
super.onStop();
} }
/** /**
@ -409,16 +417,16 @@ public class SettingsActivity extends SyncthingActivity {
break; break;
case KEY_STTRACE: case KEY_STTRACE:
if (((String) o).matches("[0-9a-z, ]*")) if (((String) o).matches("[0-9a-z, ]*"))
requireRestart(); mRequireRestart = true;
else { else {
Toast.makeText(getActivity(), R.string.toast_invalid_sttrace, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.toast_invalid_sttrace, Toast.LENGTH_SHORT)
.show(); .show();
return false; return false;
} }
break; break;
case "environment_variables": case Constants.PREF_ENVIRONMENT_VARIABLES:
if (((String) o).matches("^(\\w+=[\\w:/\\.]+)?( \\w+=[\\w:/\\.]+)*$")) { if (((String) o).matches("^(\\w+=[\\w:/\\.]+)?( \\w+=[\\w:/\\.]+)*$")) {
requireRestart(); mRequireRestart = true;
} }
else { else {
Toast.makeText(getActivity(), R.string.toast_invalid_environment_variables, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.toast_invalid_environment_variables, Toast.LENGTH_SHORT)
@ -426,16 +434,19 @@ public class SettingsActivity extends SyncthingActivity {
return false; return false;
} }
break; break;
case Constants.PREF_USE_WAKE_LOCK:
mRequireRestart = true;
break;
case Constants.PREF_USE_TOR: case Constants.PREF_USE_TOR:
mSocksProxyAddress.setEnabled(!(Boolean) o); mSocksProxyAddress.setEnabled(!(Boolean) o);
mHttpProxyAddress.setEnabled(!(Boolean) o); mHttpProxyAddress.setEnabled(!(Boolean) o);
requireRestart(); mRequireRestart = true;
break; break;
case Constants.PREF_SOCKS_PROXY_ADDRESS: case Constants.PREF_SOCKS_PROXY_ADDRESS:
if (o.toString().trim().equals(mPreferences.getString(Constants.PREF_SOCKS_PROXY_ADDRESS, ""))) if (o.toString().trim().equals(mPreferences.getString(Constants.PREF_SOCKS_PROXY_ADDRESS, "")))
return false; return false;
if (handleSocksProxyPreferenceChange(preference, o.toString().trim())) { if (handleSocksProxyPreferenceChange(preference, o.toString().trim())) {
requireRestart(); mRequireRestart = true;
} else { } else {
return false; return false;
} }
@ -444,7 +455,7 @@ public class SettingsActivity extends SyncthingActivity {
if (o.toString().trim().equals(mPreferences.getString(Constants.PREF_HTTP_PROXY_ADDRESS, ""))) if (o.toString().trim().equals(mPreferences.getString(Constants.PREF_HTTP_PROXY_ADDRESS, "")))
return false; return false;
if (handleHttpProxyPreferenceChange(preference, o.toString().trim())) { if (handleHttpProxyPreferenceChange(preference, o.toString().trim())) {
requireRestart(); mRequireRestart = true;
} else { } else {
return false; return false;
} }
@ -465,7 +476,7 @@ public class SettingsActivity extends SyncthingActivity {
new TestRootTask().execute(); new TestRootTask().execute();
} else { } else {
new Thread(() -> Util.fixAppDataPermissions(getActivity())).start(); new Thread(() -> Util.fixAppDataPermissions(getActivity())).start();
requireRestart(); mRequireRestart = true;
} }
return true; return true;
case KEY_EXPORT_CONFIG: case KEY_EXPORT_CONFIG:
@ -561,7 +572,7 @@ public class SettingsActivity extends SyncthingActivity {
@Override @Override
protected void onPostExecute(Boolean haveRoot) { protected void onPostExecute(Boolean haveRoot) {
if (haveRoot) { if (haveRoot) {
requireRestart(); mRequireRestart = true;
mUseRoot.setChecked(true); mUseRoot.setChecked(true);
} else { } else {
Toast.makeText(getActivity(), R.string.toast_root_denied, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.toast_root_denied, Toast.LENGTH_SHORT)

View file

@ -17,6 +17,7 @@ public class Constants {
public static final String PREF_RESPECT_BATTERY_SAVING = "respect_battery_saving"; public static final String PREF_RESPECT_BATTERY_SAVING = "respect_battery_saving";
public static final String PREF_USE_ROOT = "use_root"; public static final String PREF_USE_ROOT = "use_root";
public static final String PREF_NOTIFICATION_TYPE = "notification_type"; public static final String PREF_NOTIFICATION_TYPE = "notification_type";
public static final String PREF_ENVIRONMENT_VARIABLES = "environment_variables";
public static final String PREF_USE_WAKE_LOCK = "wakelock_while_binary_running"; public static final String PREF_USE_WAKE_LOCK = "wakelock_while_binary_running";
public static final String PREF_USE_TOR = "use_tor"; public static final String PREF_USE_TOR = "use_tor";
public static final String PREF_SOCKS_PROXY_ADDRESS = "socks_proxy_address"; public static final String PREF_SOCKS_PROXY_ADDRESS = "socks_proxy_address";

View file

@ -18,7 +18,6 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.nutomic.syncthingandroid.BuildConfig; import com.nutomic.syncthingandroid.BuildConfig;
import com.nutomic.syncthingandroid.SyncthingApp; import com.nutomic.syncthingandroid.SyncthingApp;
import com.nutomic.syncthingandroid.activities.RestartActivity;
import com.nutomic.syncthingandroid.activities.ShareActivity; import com.nutomic.syncthingandroid.activities.ShareActivity;
import com.nutomic.syncthingandroid.http.GetRequest; import com.nutomic.syncthingandroid.http.GetRequest;
import com.nutomic.syncthingandroid.http.PostConfigRequest; import com.nutomic.syncthingandroid.http.PostConfigRequest;
@ -83,7 +82,6 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener {
private String mVersion; private String mVersion;
private Config mConfig; private Config mConfig;
private String mLocalDeviceId; private String mLocalDeviceId;
private boolean mRestartPostponed = false;
/** /**
* Stores the result of the last successful request to {@link GetRequest#URI_CONNECTIONS}, * Stores the result of the last successful request to {@link GetRequest#URI_CONNECTIONS},
@ -187,24 +185,14 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener {
} }
} }
/**
* Either shows a restart dialog, or only updates the config, depending on
* {@link #mRestartPostponed}.
*/
public void showRestartDialog(Activity activity) {
if (mRestartPostponed) {
sendConfig();
} else {
activity.startActivity(new Intent(mContext, RestartActivity.class));
}
mOnConfigChangedListener.onConfigChanged();
}
/** /**
* Sends current config to Syncthing. * Sends current config to Syncthing.
* Will result in a "ConfigSaved" event.
* EventProcessor will trigger this.reloadConfig().
*/ */
private void sendConfig() { private void sendConfig() {
new PostConfigRequest(mContext, mUrl, mApiKey, new Gson().toJson(mConfig), null); new PostConfigRequest(mContext, mUrl, mApiKey, new Gson().toJson(mConfig), null);
mOnConfigChangedListener.onConfigChanged();
} }
/** /**
@ -216,11 +204,11 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener {
.setAction(SyncthingService.ACTION_RESTART); .setAction(SyncthingService.ACTION_RESTART);
mContext.startService(intent); mContext.startService(intent);
}); });
mOnConfigChangedListener.onConfigChanged();
} }
public void shutdown() { public void shutdown() {
mNotificationHandler.cancelRestartNotification(); mNotificationHandler.cancelRestartNotification();
mRestartPostponed = false;
} }
/** /**
@ -330,10 +318,9 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener {
return deepCopy(mConfig.gui, Config.Gui.class); return deepCopy(mConfig.gui, Config.Gui.class);
} }
public void editSettings(Config.Gui newGui, Options newOptions, Activity activity) { public void editSettings(Config.Gui newGui, Options newOptions) {
mConfig.gui = newGui; mConfig.gui = newGui;
mConfig.options = newOptions; mConfig.options = newOptions;
showRestartDialog(activity);
} }
/** /**
@ -490,10 +477,6 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener {
}); });
} }
public void setRestartPostponed() {
mRestartPostponed = true;
}
public URL getUrl() { public URL getUrl() {
return mUrl; return mUrl;
} }

View file

@ -137,9 +137,7 @@
<!--RestApi--> <!--RestApi-->
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">إعادة تشغيل اﻵن</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">فيما بعد</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->
<!--Strings representing units for file sizes, from smallest to largest--> <!--Strings representing units for file sizes, from smallest to largest-->

View file

@ -272,9 +272,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Изисква се рестартиране</string> <string name="restart_title">Изисква се рестартиране</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Рестартирай</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">По-късно</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Натиснете за рестартиране на Syncthing</string> <string name="restart_notification_text">Натиснете за рестартиране на Syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -338,9 +338,7 @@ Ens podeu informar dels problemes que trobeu a través de Github.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Cal reiniciar</string> <string name="restart_title">Cal reiniciar</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Reinicia ara</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Més tard</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Feu clic aquí per reiniciar el Syncthing ara</string> <string name="restart_notification_text">Feu clic aquí per reiniciar el Syncthing ara</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -342,9 +342,7 @@ Všechny zaznamenané chyby prosím hlašte přes Github.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Je potřeba restartovat</string> <string name="restart_title">Je potřeba restartovat</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Restartovat hned</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Později</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Tapnout sem pro restart aplikace Syncthing</string> <string name="restart_notification_text">Tapnout sem pro restart aplikace Syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -332,9 +332,7 @@ Vær venlig at rapportere ethvert problem, du støder på, via Github. </string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Genstart nødvendig</string> <string name="restart_title">Genstart nødvendig</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Genstart Nu</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Senere</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Klik her for at genstarte Syncthing nu</string> <string name="restart_notification_text">Klik her for at genstarte Syncthing nu</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -363,9 +363,7 @@ Bitte melden Sie auftretende Probleme via GitHub.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Neustart erforderlich</string> <string name="restart_title">Neustart erforderlich</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Jetzt neu starten</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Später</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Klicke hier um Syncthing neu zu starten</string> <string name="restart_notification_text">Klicke hier um Syncthing neu zu starten</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -338,9 +338,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Απαιτείται επανεκκίνηση</string> <string name="restart_title">Απαιτείται επανεκκίνηση</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Επανεκκίνηση τώρα</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Αργότερα</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Πατήστε εδώ για να επανεκκινήσετε τώρα το Syncthing</string> <string name="restart_notification_text">Πατήστε εδώ για να επανεκκινήσετε τώρα το Syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -252,9 +252,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Reinicio requerido</string> <string name="restart_title">Reinicio requerido</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Reiniciar ahora</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Después</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Clic aquí para reiniciar syncthing ahora</string> <string name="restart_notification_text">Clic aquí para reiniciar syncthing ahora</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -308,9 +308,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Es necesario reiniciar</string> <string name="restart_title">Es necesario reiniciar</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Reiniciar ahora</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Después</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Haga clic aquí para reiniciar Syncthing ahora</string> <string name="restart_notification_text">Haga clic aquí para reiniciar Syncthing ahora</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -296,9 +296,7 @@ Ilmoitathan ystävällisesti kaikista havaitsemistasi ongelmista Githubin kautta
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Uudelleenkäynnistys tarvitaan</string> <string name="restart_title">Uudelleenkäynnistys tarvitaan</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Uudelleenkäynnistä nyt</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Myöhemmin</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Paina tästä uudelleenkäynnistääksesi Syncthingin nyt.</string> <string name="restart_notification_text">Paina tästä uudelleenkäynnistääksesi Syncthingin nyt.</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -367,9 +367,7 @@ S\'il vous plaît, soumettez les problèmes que vous rencontrez via Github.</str
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Redémarrage requis</string> <string name="restart_title">Redémarrage requis</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Redémarrer maintenant</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Plus tard</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Cliquez ici pour redémarrer Syncthing</string> <string name="restart_notification_text">Cliquez ici pour redémarrer Syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -373,9 +373,7 @@ VIGYÁZAT! Más alkalmazások kiolvashatják a backupból a titkos kulcsot, és
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Újraindítás szükséges</string> <string name="restart_title">Újraindítás szükséges</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Újraindítás most</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Később</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Koppints a Syncthing újraindításához</string> <string name="restart_notification_text">Koppints a Syncthing újraindításához</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -315,7 +315,6 @@ Jika ada masalah silakan laporkan lewat Github.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Nanti</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->
<!--Strings representing units for file sizes, from smallest to largest--> <!--Strings representing units for file sizes, from smallest to largest-->

View file

@ -367,9 +367,7 @@ Si prega di segnalare eventuali problemi che si incontrano via Github.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Riavvio Necessario</string> <string name="restart_title">Riavvio Necessario</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Riavvia ora</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Più tardi</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Tap qui per riavviare adesso syncthing</string> <string name="restart_notification_text">Tap qui per riavviare adesso syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -334,9 +334,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">再起動が必要です</string> <string name="restart_title">再起動が必要です</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">今すぐ再起動</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">後で</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">今すぐ Syncthing を再起動する</string> <string name="restart_notification_text">今すぐ Syncthing を再起動する</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -334,9 +334,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">재시작 필요</string> <string name="restart_title">재시작 필요</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">지금 재시작</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">나중에</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Syncthing을 재시작하려면 이곳을 클릭하세요</string> <string name="restart_notification_text">Syncthing을 재시작하려면 이곳을 클릭하세요</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -258,9 +258,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Omstart Nødvendig</string> <string name="restart_title">Omstart Nødvendig</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Start på nytt nå</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Senere</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Trykk her for å omstarte Syncthing nå</string> <string name="restart_notification_text">Trykk her for å omstarte Syncthing nå</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -367,9 +367,7 @@ Als je problemen tegenkomt, meld ze dan via GitHub.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Herstart vereist</string> <string name="restart_title">Herstart vereist</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Nu herstarten</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Later</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Klik hier om Syncthing nu te herstarten</string> <string name="restart_notification_text">Klik hier om Syncthing nu te herstarten</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -258,9 +258,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Omstart naudsynt</string> <string name="restart_title">Omstart naudsynt</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Start om att no</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Seinare</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Trykk her for å starte Syncthing om att no</string> <string name="restart_notification_text">Trykk her for å starte Syncthing om att no</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -341,9 +341,7 @@ Proszę zgłaszać napotkane błędy programu za pośrednictwem serwisu Github.<
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Wymagane ponowne uruchomienie</string> <string name="restart_title">Wymagane ponowne uruchomienie</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Uruchom ponownie</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Później</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Proszę kliknąć, aby uruchomić program ponownie</string> <string name="restart_notification_text">Proszę kliknąć, aby uruchomić program ponownie</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -344,9 +344,7 @@ Por favor, nos avise sobre quaisquer problemas que você encontrar via Github.</
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">É necessário reiniciar</string> <string name="restart_title">É necessário reiniciar</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Reiniciar agora</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Depois</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Toque aqui para reiniciar o Syncthing agora</string> <string name="restart_notification_text">Toque aqui para reiniciar o Syncthing agora</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -278,9 +278,7 @@ Reporte, através do Github, quaisquer problemas que encontre, por favor.</strin
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">É necessário reiniciar</string> <string name="restart_title">É necessário reiniciar</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Reiniciar agora</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Mais tarde</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Clique aqui para reiniciar o syncthing agora</string> <string name="restart_notification_text">Clique aqui para reiniciar o syncthing agora</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -342,9 +342,7 @@ Vă rugăm să raportați orice problemă întâlniți, prin intermediul GitHub.
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Repornire necesară</string> <string name="restart_title">Repornire necesară</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Repornire acum</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Mai târziu </string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Atingeți aici pentru a reporni Syncthing acum</string> <string name="restart_notification_text">Atingeți aici pentru a reporni Syncthing acum</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -346,9 +346,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Необходим перезапуск</string> <string name="restart_title">Необходим перезапуск</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Перезапустить сейчас</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Позже</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Нажмите здесь чтобы перезапустить Syncthing</string> <string name="restart_notification_text">Нажмите здесь чтобы перезапустить Syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -239,9 +239,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Je nutný reštart</string> <string name="restart_title">Je nutný reštart</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Reštartovať Ihneď</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Neskôr</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Kliknite sem, ak chcete Syncthing reštartovať ihneď.</string> <string name="restart_notification_text">Kliknite sem, ak chcete Syncthing reštartovať ihneď.</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -338,9 +338,7 @@ Vänligen rapportera eventuella problem du stöter på via Github.</string>
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Omstart behövs</string> <string name="restart_title">Omstart behövs</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Startar om nu</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Senare</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Klicka här för att starta om Syncthing nu</string> <string name="restart_notification_text">Klicka här för att starta om Syncthing nu</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -278,9 +278,7 @@ Eğer herhangi bir sorunla karşılaşırsan Github aracılığıyla bildir.</st
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Yeniden Başlatma Gerekli</string> <string name="restart_title">Yeniden Başlatma Gerekli</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Şimdi Yeniden Başlat</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Daha Sonra</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Şimdi Syncthing\'i yeniden başlatmak için tıkla</string> <string name="restart_notification_text">Şimdi Syncthing\'i yeniden başlatmak için tıkla</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -252,9 +252,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Необхідний перезапуск</string> <string name="restart_title">Необхідний перезапуск</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Перезапустити зараз</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Пізніше</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Тисни сюди для негайного перезапуску syncthing </string> <string name="restart_notification_text">Тисни сюди для негайного перезапуску syncthing </string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -252,9 +252,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">Cần kh.động lại</string> <string name="restart_title">Cần kh.động lại</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">Kh.động lại ngay</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">Để sau</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">Nhấp để kh.động lại Syncthing ngay</string> <string name="restart_notification_text">Nhấp để kh.động lại Syncthing ngay</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -336,9 +336,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">需要重启以应用</string> <string name="restart_title">需要重启以应用</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">立即重启</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">稍后重启</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">点此立即重启本应用</string> <string name="restart_notification_text">点此立即重启本应用</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -334,9 +334,7 @@
<!--Title of the notification shown when a restart is needed--> <!--Title of the notification shown when a restart is needed-->
<string name="restart_title">需要重新啟動</string> <string name="restart_title">需要重新啟動</string>
<!--Text for positive button in restart dialog--> <!--Text for positive button in restart dialog-->
<string name="restart_now">現在重新啟動</string>
<!--Text for the dismiss button of the restart Activity--> <!--Text for the dismiss button of the restart Activity-->
<string name="restart_later">稍後</string>
<!--Text of the notification shown when a restart is needed--> <!--Text of the notification shown when a restart is needed-->
<string name="restart_notification_text">按此以重新啟動 syncthing</string> <string name="restart_notification_text">按此以重新啟動 syncthing</string>
<!--Shown when a device ID is copied to the clipboard--> <!--Shown when a device ID is copied to the clipboard-->

View file

@ -604,11 +604,7 @@ Please report any problems you encounter via Github.</string>
<string name="restart_title">Restart Needed</string> <string name="restart_title">Restart Needed</string>
<!-- Text for positive button in restart dialog --> <!-- Text for positive button in restart dialog -->
<string name="restart_now">Restart Now</string>
<!-- Text for the dismiss button of the restart Activity --> <!-- Text for the dismiss button of the restart Activity -->
<string name="restart_later">Later</string>
<!-- Text of the notification shown when a restart is needed --> <!-- Text of the notification shown when a restart is needed -->
<string name="restart_notification_text">Click here to restart syncthing now</string> <string name="restart_notification_text">Click here to restart syncthing now</string>