mirror of
https://github.com/syncthing/syncthing-android.git
synced 2024-12-23 03:11:30 +00:00
Add pause support for folders and devices (fixes #856)
This commit is contained in:
parent
030ef4ee7b
commit
b7f0c02238
40 changed files with 141 additions and 82 deletions
|
@ -78,6 +78,8 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
|
||||
private SwitchCompat mIntroducerView;
|
||||
|
||||
private SwitchCompat mDevicePaused;
|
||||
|
||||
private TextView mSyncthingVersionView;
|
||||
|
||||
private View mCompressionContainer;
|
||||
|
@ -110,7 +112,6 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
public void afterTextChanged(Editable s) {
|
||||
if (!s.toString().equals(mDevice.deviceID)) {
|
||||
mDeviceNeedsToUpdate = true;
|
||||
|
||||
mDevice.deviceID = s.toString();
|
||||
}
|
||||
}
|
||||
|
@ -121,7 +122,6 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
public void afterTextChanged(Editable s) {
|
||||
if (!s.toString().equals(mDevice.name)) {
|
||||
mDeviceNeedsToUpdate = true;
|
||||
|
||||
mDevice.name = s.toString();
|
||||
}
|
||||
}
|
||||
|
@ -132,19 +132,24 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
public void afterTextChanged(Editable s) {
|
||||
if (!s.toString().equals(displayableAddresses())) {
|
||||
mDeviceNeedsToUpdate = true;
|
||||
|
||||
mDevice.addresses = persistableAddresses(s);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final CompoundButton.OnCheckedChangeListener mIntroducerCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
|
||||
private final CompoundButton.OnCheckedChangeListener mCheckedListener =
|
||||
new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
if (mDevice.introducer != isChecked) {
|
||||
mDeviceNeedsToUpdate = true;
|
||||
|
||||
mDevice.introducer = isChecked;
|
||||
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
|
||||
switch (view.getId()) {
|
||||
case R.id.introducer:
|
||||
mDevice.introducer = isChecked;
|
||||
mDeviceNeedsToUpdate = true;
|
||||
break;
|
||||
case R.id.devicePause:
|
||||
mDevice.paused = isChecked;
|
||||
mDeviceNeedsToUpdate = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -167,6 +172,7 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
mCompressionContainer = findViewById(R.id.compressionContainer);
|
||||
mCompressionValueView = findViewById(R.id.compressionValue);
|
||||
mIntroducerView = findViewById(R.id.introducer);
|
||||
mDevicePaused = findViewById(R.id.devicePause);
|
||||
mSyncthingVersionView = findViewById(R.id.syncthingVersion);
|
||||
|
||||
mQrButton.setOnClickListener(this);
|
||||
|
@ -293,18 +299,26 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
}
|
||||
|
||||
private void updateViewsAndSetListeners() {
|
||||
mIdView.removeTextChangedListener(mIdTextWatcher);
|
||||
mNameView.removeTextChangedListener(mNameTextWatcher);
|
||||
mAddressesView.removeTextChangedListener(mAddressesTextWatcher);
|
||||
mIntroducerView.setOnCheckedChangeListener(null);
|
||||
mDevicePaused.setOnCheckedChangeListener(null);
|
||||
|
||||
// Update views
|
||||
mIdView.setText(mDevice.deviceID);
|
||||
mNameView.setText(mDevice.name);
|
||||
mAddressesView.setText(displayableAddresses());
|
||||
mCompressionValueView.setText(Compression.fromValue(this, mDevice.compression).getTitle(this));
|
||||
mIntroducerView.setChecked(mDevice.introducer);
|
||||
mDevicePaused.setChecked(mDevice.paused);
|
||||
|
||||
// Keep state updated
|
||||
mIdView.addTextChangedListener(mIdTextWatcher);
|
||||
mNameView.addTextChangedListener(mNameTextWatcher);
|
||||
mAddressesView.addTextChangedListener(mAddressesTextWatcher);
|
||||
mIntroducerView.setOnCheckedChangeListener(mIntroducerCheckedChangeListener);
|
||||
mIntroducerView.setOnCheckedChangeListener(mCheckedListener);
|
||||
mDevicePaused.setOnCheckedChangeListener(mCheckedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -384,6 +398,7 @@ public class DeviceActivity extends SyncthingActivity implements View.OnClickLis
|
|||
mDevice.addresses = DYNAMIC_ADDRESS;
|
||||
mDevice.compression = METADATA.getValue(this);
|
||||
mDevice.introducer = false;
|
||||
mDevice.paused = false;
|
||||
}
|
||||
|
||||
private void prepareEditMode() {
|
||||
|
|
|
@ -78,6 +78,7 @@ public class FolderActivity extends SyncthingActivity
|
|||
private TextView mPathView;
|
||||
private SwitchCompat mFolderMasterView;
|
||||
private SwitchCompat mFolderFileWatcher;
|
||||
private SwitchCompat mFolderPaused;
|
||||
private ViewGroup mDevicesContainer;
|
||||
private TextView mVersioningDescriptionView;
|
||||
private TextView mVersioningTypeView;
|
||||
|
@ -114,6 +115,10 @@ public class FolderActivity extends SyncthingActivity
|
|||
mFolder.fsWatcherEnabled = isChecked;
|
||||
mFolderNeedsToUpdate = true;
|
||||
break;
|
||||
case R.id.folderPause:
|
||||
mFolder.paused = isChecked;
|
||||
mFolderNeedsToUpdate = true;
|
||||
break;
|
||||
case R.id.device_toggle:
|
||||
Device device = (Device) view.getTag();
|
||||
if (isChecked) {
|
||||
|
@ -141,6 +146,7 @@ public class FolderActivity extends SyncthingActivity
|
|||
mPathView = findViewById(R.id.directoryTextView);
|
||||
mFolderMasterView = findViewById(R.id.master);
|
||||
mFolderFileWatcher = findViewById(R.id.fileWatcher);
|
||||
mFolderPaused = findViewById(R.id.folderPause);
|
||||
mVersioningDescriptionView = findViewById(R.id.versioningDescription);
|
||||
mVersioningTypeView = findViewById(R.id.versioningType);
|
||||
mDevicesContainer = findViewById(R.id.devicesContainer);
|
||||
|
@ -316,6 +322,7 @@ public class FolderActivity extends SyncthingActivity
|
|||
mPathView.removeTextChangedListener(mTextWatcher);
|
||||
mFolderMasterView.setOnCheckedChangeListener(null);
|
||||
mFolderFileWatcher.setOnCheckedChangeListener(null);
|
||||
mFolderPaused.setOnCheckedChangeListener(null);
|
||||
|
||||
// Update views
|
||||
mLabelView.setText(mFolder.label);
|
||||
|
@ -324,6 +331,7 @@ public class FolderActivity extends SyncthingActivity
|
|||
updateVersioningDescription();
|
||||
mFolderMasterView.setChecked(Objects.equal(mFolder.type, "readonly"));
|
||||
mFolderFileWatcher.setChecked(mFolder.fsWatcherEnabled);
|
||||
mFolderPaused.setChecked(mFolder.paused);
|
||||
List<Device> devicesList = getApi().getDevices(false);
|
||||
|
||||
mDevicesContainer.removeAllViews();
|
||||
|
@ -341,6 +349,7 @@ public class FolderActivity extends SyncthingActivity
|
|||
mPathView.addTextChangedListener(mTextWatcher);
|
||||
mFolderMasterView.setOnCheckedChangeListener(mCheckedListener);
|
||||
mFolderFileWatcher.setOnCheckedChangeListener(mCheckedListener);
|
||||
mFolderPaused.setOnCheckedChangeListener(mCheckedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -438,6 +447,7 @@ public class FolderActivity extends SyncthingActivity
|
|||
* syncthing when the file watcher is enabled and a new folder is created.
|
||||
*/
|
||||
mFolder.rescanIntervalS = 3600;
|
||||
mFolder.paused = false;
|
||||
mFolder.versioning = new Folder.Versioning();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ public class Device {
|
|||
public String compression;
|
||||
public String certName;
|
||||
public boolean introducer;
|
||||
public boolean paused;
|
||||
|
||||
/**
|
||||
* Returns the device name, or the first characters of the ID if the name is empty.
|
||||
|
|
|
@ -13,6 +13,7 @@ public class Folder {
|
|||
|
||||
public String id;
|
||||
public String label;
|
||||
public String filesystemType = "basic";
|
||||
public String path;
|
||||
public String type;
|
||||
public boolean fsWatcherEnabled = true;
|
||||
|
@ -24,18 +25,19 @@ public class Folder {
|
|||
public MinDiskFree minDiskFree;
|
||||
public Versioning versioning;
|
||||
public int copiers;
|
||||
public int pullers;
|
||||
public int pullerMaxPendingKiB;
|
||||
public int hashers;
|
||||
public String order;
|
||||
public boolean ignoreDelete;
|
||||
public int scanProgressIntervalS;
|
||||
public int pullerSleepS;
|
||||
public int pullerPauseS;
|
||||
public int maxConflicts = 10;
|
||||
public boolean disableSparseFiles;
|
||||
public boolean disableTempIndexes;
|
||||
public boolean paused;
|
||||
public int weakHashThresholdPct = 25;
|
||||
public String markerName = ".stfolder";
|
||||
public String invalid;
|
||||
public boolean fsync = true;
|
||||
|
||||
public static class Versioning implements Serializable {
|
||||
public String type;
|
||||
|
|
|
@ -3,17 +3,27 @@ package com.nutomic.syncthingandroid.model;
|
|||
public class Model {
|
||||
public long globalBytes;
|
||||
public long globalDeleted;
|
||||
public long globalDirectories;
|
||||
public long globalFiles;
|
||||
public long globalSymlinks;
|
||||
public boolean ignorePatterns;
|
||||
public String invalid;
|
||||
public long localBytes;
|
||||
public long localDeleted;
|
||||
public long localDirectories;
|
||||
public long localSymlinks;
|
||||
public long localFiles;
|
||||
public long inSyncBytes;
|
||||
public long inSyncFiles;
|
||||
public long needBytes;
|
||||
public long needFiles;
|
||||
public long needDeletes;
|
||||
public long needDirectories;
|
||||
public long needFiles;
|
||||
public long needSymlinks;
|
||||
public long pullErrors;
|
||||
public long sequence;
|
||||
public String state;
|
||||
public String invalid;
|
||||
public String stateChanged;
|
||||
public long version;
|
||||
public String watchError;
|
||||
}
|
||||
|
|
|
@ -45,28 +45,46 @@ public class DevicesAdapter extends ArrayAdapter<Device> {
|
|||
|
||||
name.setText(getItem(position).getDisplayName());
|
||||
Resources r = getContext().getResources();
|
||||
boolean haveInfo = mConnections != null && mConnections.connections.containsKey(deviceId) &&
|
||||
mConnections.connections.get(deviceId).connected;
|
||||
if (haveInfo) {
|
||||
Connections.Connection conn = mConnections.connections.get(deviceId);
|
||||
|
||||
Connections.Connection conn = null;
|
||||
if (mConnections != null || mConnections.connections.containsKey(deviceId)) {
|
||||
conn = mConnections.connections.get(deviceId);
|
||||
}
|
||||
|
||||
if (conn == null) {
|
||||
download.setText(Util.readableTransferRate(getContext(), 0));
|
||||
upload.setText(Util.readableTransferRate(getContext(), 0));
|
||||
status.setText(r.getString(R.string.device_state_unknown));
|
||||
status.setTextColor(ContextCompat.getColor(getContext(), R.color.text_red));
|
||||
return convertView;
|
||||
}
|
||||
|
||||
if (conn.paused) {
|
||||
download.setText(Util.readableTransferRate(getContext(), 0));
|
||||
upload.setText(Util.readableTransferRate(getContext(), 0));
|
||||
status.setText(r.getString(R.string.device_paused));
|
||||
status.setTextColor(ContextCompat.getColor(getContext(), R.color.text_black));
|
||||
return convertView;
|
||||
}
|
||||
|
||||
if (conn.connected) {
|
||||
download.setText(Util.readableTransferRate(getContext(), conn.inBits));
|
||||
upload.setText(Util.readableTransferRate(getContext(), conn.outBits));
|
||||
if (conn.completion == 100) {
|
||||
status.setText(r.getString(R.string.device_up_to_date));
|
||||
status.setTextColor(ContextCompat.getColor(getContext(), R.color.text_green));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
status.setText(r.getString(R.string.device_syncing, conn.completion));
|
||||
status.setTextColor(ContextCompat.getColor(getContext(), R.color.text_blue));
|
||||
}
|
||||
download.setText(Util.readableTransferRate(getContext(), conn.inBits));
|
||||
upload.setText(Util.readableTransferRate(getContext(), conn.outBits));
|
||||
}
|
||||
else {
|
||||
download.setText(Util.readableTransferRate(getContext(), 0));
|
||||
upload.setText(Util.readableTransferRate(getContext(), 0));
|
||||
status.setText(r.getString(R.string.device_disconnected));
|
||||
status.setTextColor(ContextCompat.getColor(getContext(), R.color.text_red));
|
||||
return convertView;
|
||||
}
|
||||
|
||||
// !conn.connected
|
||||
download.setText(Util.readableTransferRate(getContext(), 0));
|
||||
upload.setText(Util.readableTransferRate(getContext(), 0));
|
||||
status.setText(r.getString(R.string.device_disconnected));
|
||||
status.setTextColor(ContextCompat.getColor(getContext(), R.color.text_red));
|
||||
return convertView;
|
||||
}
|
||||
|
||||
|
|
|
@ -82,18 +82,22 @@ public class FoldersAdapter extends ArrayAdapter<Folder> {
|
|||
binding.state.setText(getContext().getString(R.string.status_outofsync));
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_red));
|
||||
} else {
|
||||
binding.state.setText(getLocalizedState(getContext(), model.state, percentage));
|
||||
switch(model.state) {
|
||||
case "idle":
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_green));
|
||||
break;
|
||||
case "scanning":
|
||||
case "cleaning":
|
||||
case "syncing":
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_blue));
|
||||
break;
|
||||
default:
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_red));
|
||||
if (folder.paused) {
|
||||
binding.state.setText(getContext().getString(R.string.state_paused));
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_black));
|
||||
} else {
|
||||
binding.state.setText(getLocalizedState(getContext(), model.state, percentage));
|
||||
switch(model.state) {
|
||||
case "idle":
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_green));
|
||||
break;
|
||||
case "scanning":
|
||||
case "syncing":
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_blue));
|
||||
break;
|
||||
default:
|
||||
binding.state.setTextColor(ContextCompat.getColor(getContext(), R.color.text_red));
|
||||
}
|
||||
}
|
||||
}
|
||||
binding.items.setVisibility(VISIBLE);
|
||||
|
@ -118,18 +122,13 @@ public class FoldersAdapter extends ArrayAdapter<Folder> {
|
|||
*/
|
||||
private static String getLocalizedState(Context c, String state, int percentage) {
|
||||
switch (state) {
|
||||
case "idle": return c.getString(R.string.state_idle);
|
||||
case "scanning": return c.getString(R.string.state_scanning);
|
||||
case "cleaning": return c.getString(R.string.state_cleaning);
|
||||
case "syncing": return c.getString(R.string.state_syncing, percentage);
|
||||
case "error": return c.getString(R.string.state_error);
|
||||
case "unknown": // Fallthrough
|
||||
case "": return c.getString(R.string.state_unknown);
|
||||
case "idle": return c.getString(R.string.state_idle);
|
||||
case "scanning": return c.getString(R.string.state_scanning);
|
||||
case "syncing": return c.getString(R.string.state_syncing, percentage);
|
||||
case "error": return c.getString(R.string.state_error);
|
||||
case "unknown": return c.getString(R.string.state_unknown);
|
||||
default: return state;
|
||||
}
|
||||
if (BuildConfig.DEBUG) {
|
||||
throw new AssertionError("Unexpected folder state " + state);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -112,6 +112,16 @@
|
|||
android:drawableStart="@drawable/ic_phonelink_black_24dp_active"
|
||||
android:text="@string/introducer" />
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:id="@+id/devicePause"
|
||||
style="@style/Widget.Syncthing.TextView.Label.Details"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:drawableLeft="@drawable/ic_settings_black_24dp"
|
||||
android:drawableStart="@drawable/ic_settings_black_24dp"
|
||||
android:text="@string/pause_device" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/currentAddress"
|
||||
style="@style/Widget.Syncthing.TextView.Label.Details"
|
||||
|
|
|
@ -90,6 +90,16 @@
|
|||
android:drawableStart="@drawable/ic_autorenew_black_24dp"
|
||||
android:text="@string/folder_fileWatcher" />
|
||||
|
||||
<android.support.v7.widget.SwitchCompat
|
||||
android:id="@+id/folderPause"
|
||||
style="@style/Widget.Syncthing.TextView.Label.Details"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:drawableLeft="@drawable/ic_folder_black_24dp"
|
||||
android:drawableStart="@drawable/ic_folder_black_24dp"
|
||||
android:text="@string/folder_pause" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/versioningContainer"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -291,7 +291,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Бездействие</string>
|
||||
<string name="state_scanning">Сканиране</string>
|
||||
<string name="state_cleaning">Почистване</string>
|
||||
<string name="state_syncing">Синхронизиране (%1$d%%)</string>
|
||||
<string name="state_error">Грешка</string>
|
||||
<string name="state_unknown">Неясно</string>
|
||||
|
|
|
@ -358,7 +358,6 @@ Ens podeu informar dels problemes que trobeu a través de Github.</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inactiu</string>
|
||||
<string name="state_scanning">Escanejant</string>
|
||||
<string name="state_cleaning">Netejant</string>
|
||||
<string name="state_syncing">Sincronitzant (%1$d%%)</string>
|
||||
<string name="state_error">Error</string>
|
||||
<string name="state_unknown">Desconegut</string>
|
||||
|
|
|
@ -361,7 +361,6 @@ Všechny zaznamenané chyby prosím hlašte přes Github.</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Aktuální</string>
|
||||
<string name="state_scanning">Skenování</string>
|
||||
<string name="state_cleaning">Čištění</string>
|
||||
<string name="state_syncing">Synchronizuje se (%1$d%%)</string>
|
||||
<string name="state_error">Chyba</string>
|
||||
<string name="state_unknown">Neznámý</string>
|
||||
|
|
|
@ -350,7 +350,6 @@ Vær venlig at rapportere ethvert problem, du støder på, via Github. </string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Ledig</string>
|
||||
<string name="state_scanning">Scanner</string>
|
||||
<string name="state_cleaning">Gør rent</string>
|
||||
<string name="state_syncing">Synkroniserer (%1$d%%)</string>
|
||||
<string name="state_error">Fejl</string>
|
||||
<string name="state_unknown">Ukendt</string>
|
||||
|
|
|
@ -355,7 +355,6 @@ Bitte melden Sie auftretende Probleme via Github.</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Untätig</string>
|
||||
<string name="state_scanning">Scannen</string>
|
||||
<string name="state_cleaning">Aufräumen</string>
|
||||
<string name="state_syncing">Synchronisiere (%1$d%%)</string>
|
||||
<string name="state_error">Fehler</string>
|
||||
<string name="state_unknown">Unbekannt</string>
|
||||
|
|
|
@ -358,7 +358,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Αδρανής</string>
|
||||
<string name="state_scanning">Σάρωση</string>
|
||||
<string name="state_cleaning">Εκκαθάριση</string>
|
||||
<string name="state_syncing">Συγχρονισμός (%1$d%%)</string>
|
||||
<string name="state_error">Σφάλμα</string>
|
||||
<string name="state_unknown">Άγνωστο</string>
|
||||
|
|
|
@ -270,7 +270,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Sin utilizar</string>
|
||||
<string name="state_scanning">Escaneando</string>
|
||||
<string name="state_cleaning">Limpiando</string>
|
||||
<string name="state_syncing">Sincronizando (%1$d%%)</string>
|
||||
<string name="state_error">Error</string>
|
||||
<string name="state_unknown">Desconocido</string>
|
||||
|
|
|
@ -326,7 +326,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inactivo</string>
|
||||
<string name="state_scanning">Escaneando</string>
|
||||
<string name="state_cleaning">Limpiando</string>
|
||||
<string name="state_syncing">Sincronizando (%1$d%%)</string>
|
||||
<string name="state_error">Error</string>
|
||||
<string name="state_unknown">Desconocido</string>
|
||||
|
|
|
@ -314,7 +314,6 @@ Ilmoitathan ystävällisesti kaikista havaitsemistasi ongelmista Githubin kautta
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">toimeton</string>
|
||||
<string name="state_scanning">Skannataan</string>
|
||||
<string name="state_cleaning">Puhdistetaan</string>
|
||||
<string name="state_syncing">Synkronoidaan (%1$d%%)</string>
|
||||
<string name="state_error">Virhe</string>
|
||||
<string name="state_unknown">Tuntematon</string>
|
||||
|
|
|
@ -358,7 +358,6 @@ S\'il vous plaît, soumettez les problèmes que vous rencontrez via Github.</str
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">En veille</string>
|
||||
<string name="state_scanning">Analyse en cours</string>
|
||||
<string name="state_cleaning">Effacement en cours</string>
|
||||
<string name="state_syncing">Synchronisation (%1$d%%)</string>
|
||||
<string name="state_error">Erreur</string>
|
||||
<string name="state_unknown">Inconnu</string>
|
||||
|
|
|
@ -366,7 +366,6 @@ Biztosan törölni szeretnéd a Syncthing index adatbázisát?</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Tétlen</string>
|
||||
<string name="state_scanning">Vizsgálat</string>
|
||||
<string name="state_cleaning">Takarítás</string>
|
||||
<string name="state_syncing">Szinkronizálás (%1$d%%)</string>
|
||||
<string name="state_error">Hiba</string>
|
||||
<string name="state_unknown">Ismeretlen</string>
|
||||
|
|
|
@ -358,7 +358,6 @@ Si prega di segnalare eventuali problemi che si incontrano via Github.</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inattivo</string>
|
||||
<string name="state_scanning">Scansione in corso</string>
|
||||
<string name="state_cleaning">Pulizia</string>
|
||||
<string name="state_syncing">Sincronizzazione (%1$d%%)</string>
|
||||
<string name="state_error">Errore</string>
|
||||
<string name="state_unknown">Sconosciuto</string>
|
||||
|
|
|
@ -353,7 +353,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">アイドル</string>
|
||||
<string name="state_scanning">スキャン中</string>
|
||||
<string name="state_cleaning">クリーニング中</string>
|
||||
<string name="state_syncing">同期中 (%1$d%%)</string>
|
||||
<string name="state_error">エラー</string>
|
||||
<string name="state_unknown">不明</string>
|
||||
|
|
|
@ -346,7 +346,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">대기</string>
|
||||
<string name="state_scanning">스캔 중</string>
|
||||
<string name="state_cleaning">지우는 중</string>
|
||||
<string name="state_syncing">동기화 중 (%1$d%%)</string>
|
||||
<string name="state_error">오류</string>
|
||||
<string name="state_unknown">알 수 없음</string>
|
||||
|
|
|
@ -275,7 +275,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inaktiv</string>
|
||||
<string name="state_scanning">Skanner</string>
|
||||
<string name="state_cleaning">Rydder</string>
|
||||
<string name="state_syncing">Synkroniserer (%1$d%%)</string>
|
||||
<string name="state_error">Feil</string>
|
||||
<string name="state_unknown">Ukjent</string>
|
||||
|
|
|
@ -357,7 +357,6 @@ Als je problemen tegenkomt, meld ze dan via GitHub.</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inactief</string>
|
||||
<string name="state_scanning">Bezig met scannen</string>
|
||||
<string name="state_cleaning">Bezig met opruimen</string>
|
||||
<string name="state_syncing">Bezig met synchroniseren (%1$d%%)</string>
|
||||
<string name="state_error">Fout</string>
|
||||
<string name="state_unknown">Onbekend</string>
|
||||
|
|
|
@ -275,7 +275,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Kviler</string>
|
||||
<string name="state_scanning">Skannar</string>
|
||||
<string name="state_cleaning">Reingjer</string>
|
||||
<string name="state_syncing">Synkroniserer (%1$d%%)</string>
|
||||
<string name="state_error">Feil</string>
|
||||
<string name="state_unknown">Ukjend</string>
|
||||
|
|
|
@ -305,7 +305,6 @@ Proszę zgłaszać napotkane błędy programu za pośrednictwem serwisu Github.<
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Bezczynny</string>
|
||||
<string name="state_scanning">Skanowanie</string>
|
||||
<string name="state_cleaning">Czyszczenie</string>
|
||||
<string name="state_syncing">Synchronizowanie (%1$d%%)</string>
|
||||
<string name="state_error">Błąd</string>
|
||||
<string name="state_unknown">Nieznany</string>
|
||||
|
|
|
@ -354,7 +354,6 @@ Por favor, nos avise sobre quaisquer problemas que você encontrar via Github.</
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Em espera</string>
|
||||
<string name="state_scanning">Verificando</string>
|
||||
<string name="state_cleaning">Limpando</string>
|
||||
<string name="state_syncing">Sincronizando (%1$d%%)</string>
|
||||
<string name="state_error">Erro</string>
|
||||
<string name="state_unknown">Desconhecido</string>
|
||||
|
|
|
@ -297,7 +297,6 @@ Reporte, através do Github, quaisquer problemas que encontre, por favor.</strin
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Em espera</string>
|
||||
<string name="state_scanning">Verificando</string>
|
||||
<string name="state_cleaning">Limpando</string>
|
||||
<string name="state_syncing">Sincronizando (%1$d%%)</string>
|
||||
<string name="state_error">Erro</string>
|
||||
<string name="state_unknown">Desconhecido</string>
|
||||
|
|
|
@ -361,7 +361,6 @@ Vă rugăm să raportați orice problemă întâlniți, prin intermediul GitHub.
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inactiv</string>
|
||||
<string name="state_scanning">Scanare</string>
|
||||
<string name="state_cleaning">Curățare</string>
|
||||
<string name="state_syncing">Se sincronizează(%1$d%%)</string>
|
||||
<string name="state_error">Eroare</string>
|
||||
<string name="state_unknown">Necunoscut</string>
|
||||
|
|
|
@ -311,7 +311,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Бездействие</string>
|
||||
<string name="state_scanning">Сканирование</string>
|
||||
<string name="state_cleaning">Очистка</string>
|
||||
<string name="state_syncing">Синхронизация (%1$d%%)</string>
|
||||
<string name="state_error">Ошибка</string>
|
||||
<string name="state_unknown">Неизвестно</string>
|
||||
|
|
|
@ -256,7 +256,6 @@ Naozaj chcete resetovať databázu s indexom súborov?</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Nečinné</string>
|
||||
<string name="state_scanning">Skenovanie</string>
|
||||
<string name="state_cleaning">Čistenie</string>
|
||||
<string name="state_syncing">Synchronizuje sa (%1$d%%)</string>
|
||||
<string name="state_error">Chyba</string>
|
||||
<string name="state_unknown">Neznámy</string>
|
||||
|
|
|
@ -357,7 +357,6 @@ Vänligen rapportera eventuella problem du stöter på via Github.</string>
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Inaktiv</string>
|
||||
<string name="state_scanning">Skannar</string>
|
||||
<string name="state_cleaning">Städar</string>
|
||||
<string name="state_syncing">Synkroniserar (%1$d%%)</string>
|
||||
<string name="state_error">Fel</string>
|
||||
<string name="state_unknown">Okänd</string>
|
||||
|
|
|
@ -296,7 +296,6 @@ Eğer herhangi bir sorunla karşılaşırsan Github aracılığıyla bildir.</st
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Boşta</string>
|
||||
<string name="state_scanning">Taranıyor</string>
|
||||
<string name="state_cleaning">Temizleniyor</string>
|
||||
<string name="state_syncing">Eşzamanlama gerçekleştiriliyor (%1$d%%)</string>
|
||||
<string name="state_error">Hata</string>
|
||||
<string name="state_unknown">Bilinmiyor</string>
|
||||
|
|
|
@ -254,7 +254,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Очікування</string>
|
||||
<string name="state_scanning">Сканування</string>
|
||||
<string name="state_cleaning">Очистка</string>
|
||||
<string name="state_syncing">Синхронізуються (%1$d%%)</string>
|
||||
<string name="state_error">Помилка</string>
|
||||
<string name="state_unknown">Невідомо</string>
|
||||
|
|
|
@ -270,7 +270,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">Rãnh rỗi</string>
|
||||
<string name="state_scanning">Đang quét</string>
|
||||
<string name="state_cleaning">Đang dọn dẹp</string>
|
||||
<string name="state_syncing">Đang đ.bộ (%1$d%%)</string>
|
||||
<string name="state_error">Lỗi</string>
|
||||
<string name="state_unknown">Không rõ</string>
|
||||
|
|
|
@ -355,7 +355,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">空闲</string>
|
||||
<string name="state_scanning">正在扫描</string>
|
||||
<string name="state_cleaning">正在清理</string>
|
||||
<string name="state_syncing">正在同步 (%1$d%%)</string>
|
||||
<string name="state_error">错误</string>
|
||||
<string name="state_unknown">未知</string>
|
||||
|
|
|
@ -354,7 +354,6 @@
|
|||
<!--Possible folder states-->
|
||||
<string name="state_idle">閒置</string>
|
||||
<string name="state_scanning">正在掃描</string>
|
||||
<string name="state_cleaning">正在清理</string>
|
||||
<string name="state_syncing">正在同步 (%1$d%%)</string>
|
||||
<string name="state_error">錯誤</string>
|
||||
<string name="state_unknown">未知</string>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<color name="accent">#FFC107</color>
|
||||
<color name="divider">#1F000000</color>
|
||||
|
||||
<color name="text_black">#000000</color>
|
||||
<color name="text_red">#ffff4444</color>
|
||||
<color name="text_blue">#ff33b5e5</color>
|
||||
<color name="text_green">#ff99cc00</color>
|
||||
|
|
|
@ -103,6 +103,12 @@ Please report any problems you encounter via Github.</string>
|
|||
<!-- Indicates that there is no connection to the device -->
|
||||
<string name="device_disconnected">Disconnected</string>
|
||||
|
||||
<!-- Indicates that the device is paused and does not sync -->
|
||||
<string name="device_paused">Paused</string>
|
||||
|
||||
!-- Indicates that the device connection is unknown -->
|
||||
<string name="device_state_unknown">Unknown</string>
|
||||
|
||||
<!-- Title for current download rate -->
|
||||
<string name="download_title">Download</string>
|
||||
|
||||
|
@ -149,6 +155,9 @@ Please report any problems you encounter via Github.</string>
|
|||
<!-- Setting title -->
|
||||
<string name="folder_fileWatcher">Realtime Sync</string>
|
||||
|
||||
<!-- Setting title -->
|
||||
<string name="folder_pause">Pause Folder</string>
|
||||
|
||||
<!-- Setting title -->
|
||||
<string name="devices">Devices</string>
|
||||
|
||||
|
@ -212,6 +221,9 @@ Please report any problems you encounter via Github.</string>
|
|||
<!-- Setting title -->
|
||||
<string name="introducer">Introducer</string>
|
||||
|
||||
<!-- Setting title -->
|
||||
<string name="pause_device">Pause Device</string>
|
||||
|
||||
<!-- ActionBar item -->
|
||||
<string name="delete_device">Delete Device</string>
|
||||
|
||||
|
@ -620,10 +632,10 @@ Please report any problems you encounter via Github.</string>
|
|||
<!-- Possible folder states -->
|
||||
<string name="state_idle">Idle</string>
|
||||
<string name="state_scanning">Scanning</string>
|
||||
<string name="state_cleaning">Cleaning</string>
|
||||
<string name="state_syncing">Syncing (%1$d%%)</string>
|
||||
<string name="state_error">Error</string>
|
||||
<string name="state_unknown">Unknown</string>
|
||||
<string name="state_paused">Paused</string>
|
||||
<string name="status_outofsync">Out of Sync</string>
|
||||
|
||||
<!-- Format string for folder size, eg "500 MiB / 1 GiB" -->
|
||||
|
|
Loading…
Reference in a new issue