From 19991abd0d2b304dc4f697b50bb05cd78ccd4eba Mon Sep 17 00:00:00 2001 From: Catfriend1 Date: Sun, 26 Aug 2018 13:02:37 +0200 Subject: [PATCH] Support in-app editing of folder's ignore list items (fixes #19) (#40) * Read ignore list from REST * Add write back of ignore list via REST endpoint call * Disable the edit ignore EditText when a new folder is created to preserve existing ".stignore" contents --- .../activities/FolderActivity.java | 81 ++++++++++++------- .../syncthingandroid/http/GetRequest.java | 1 + .../http/PostConfigRequest.java | 22 ----- .../syncthingandroid/http/PostRequest.java | 9 ++- .../model/FolderIgnoreList.java | 6 ++ .../syncthingandroid/service/RestApi.java | 31 ++++++- app/src/main/res/layout/fragment_folder.xml | 17 +++- app/src/main/res/values-ca-rES/strings.xml | 5 -- app/src/main/res/values-cs/strings.xml | 5 -- app/src/main/res/values-da/strings.xml | 5 -- app/src/main/res/values-de/strings.xml | 5 -- app/src/main/res/values-el/strings.xml | 5 -- app/src/main/res/values-fr/strings.xml | 5 -- app/src/main/res/values-hu/strings.xml | 5 -- app/src/main/res/values-in/strings.xml | 5 -- app/src/main/res/values-it/strings.xml | 5 -- app/src/main/res/values-ja/strings.xml | 5 -- app/src/main/res/values-ko/strings.xml | 5 -- app/src/main/res/values-nl/strings.xml | 5 -- app/src/main/res/values-pl/strings.xml | 5 -- app/src/main/res/values-pt-rBR/strings.xml | 5 -- app/src/main/res/values-ro/strings.xml | 5 -- app/src/main/res/values-ru/strings.xml | 5 -- app/src/main/res/values-sv/strings.xml | 5 -- app/src/main/res/values-uk/strings.xml | 3 - app/src/main/res/values-zh-rCN/strings.xml | 5 -- app/src/main/res/values-zh-rTW/strings.xml | 5 -- app/src/main/res/values/strings.xml | 5 -- 28 files changed, 106 insertions(+), 164 deletions(-) delete mode 100644 app/src/main/java/com/nutomic/syncthingandroid/http/PostConfigRequest.java create mode 100644 app/src/main/java/com/nutomic/syncthingandroid/model/FolderIgnoreList.java diff --git a/app/src/main/java/com/nutomic/syncthingandroid/activities/FolderActivity.java b/app/src/main/java/com/nutomic/syncthingandroid/activities/FolderActivity.java index 1c1ca5ed..a0228c17 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/activities/FolderActivity.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/activities/FolderActivity.java @@ -5,7 +5,6 @@ import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; -import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import android.os.Build; @@ -32,6 +31,7 @@ import com.google.gson.Gson; import com.nutomic.syncthingandroid.R; import com.nutomic.syncthingandroid.model.Device; import com.nutomic.syncthingandroid.model.Folder; +import com.nutomic.syncthingandroid.model.FolderIgnoreList; import com.nutomic.syncthingandroid.service.Constants; import com.nutomic.syncthingandroid.service.RestApi; import com.nutomic.syncthingandroid.service.SyncthingService; @@ -81,7 +81,7 @@ public class FolderActivity extends SyncthingActivity private static final int CHOOSE_FOLDER_REQUEST = 3459; private static final String FOLDER_MARKER_NAME = ".stfolder"; - private static final String IGNORE_FILE_NAME = ".stignore"; + // private static final String IGNORE_FILE_NAME = ".stignore"; private Folder mFolder; // Contains SAF readwrite access URI on API level >= Build.VERSION_CODES.LOLLIPOP (21) @@ -102,7 +102,8 @@ public class FolderActivity extends SyncthingActivity private TextView mPullOrderDescriptionView; private TextView mVersioningDescriptionView; private TextView mVersioningTypeView; - private TextView mEditIgnores; + private TextView mEditIgnoreListTitle; + private TextView mEditIgnoreListContent; private boolean mIsCreateMode; private boolean mFolderNeedsToUpdate = false; @@ -118,6 +119,7 @@ public class FolderActivity extends SyncthingActivity mFolder.label = mLabelView.getText().toString(); mFolder.id = mIdView.getText().toString();; // mPathView must not be handled here as it's handled by {@link onActivityResult} + // mEditIgnoreListContent must not be handled here as it's written back when the dialog ends. mFolderNeedsToUpdate = true; } }; @@ -170,14 +172,14 @@ public class FolderActivity extends SyncthingActivity mVersioningDescriptionView = findViewById(R.id.versioningDescription); mVersioningTypeView = findViewById(R.id.versioningType); mDevicesContainer = findViewById(R.id.devicesContainer); - mEditIgnores = findViewById(R.id.edit_ignores); + mEditIgnoreListTitle = findViewById(R.id.edit_ignore_list_title); + mEditIgnoreListContent = findViewById(R.id.edit_ignore_list_content); mPathView.setOnClickListener(view -> onPathViewClick()); findViewById(R.id.folderTypeContainer).setOnClickListener(v -> showFolderTypeDialog()); findViewById(R.id.pullOrderContainer).setOnClickListener(v -> showPullOrderDialog()); findViewById(R.id.versioningContainer).setOnClickListener(v -> showVersioningDialog()); - mEditIgnores.setOnClickListener(v -> editIgnores()); if (mIsCreateMode) { if (savedInstanceState != null) { @@ -191,7 +193,8 @@ public class FolderActivity extends SyncthingActivity } // Open keyboard on label view in edit mode. mLabelView.requestFocus(); - mEditIgnores.setEnabled(false); + mEditIgnoreListTitle.setEnabled(false); + mEditIgnoreListContent.setEnabled(false); } else { // Prepare edit mode. @@ -238,27 +241,6 @@ public class FolderActivity extends SyncthingActivity startActivityForResult(intent, CHOOSE_FOLDER_REQUEST); } - private void editIgnores() { - try { - File ignoreFile = new File(mFolder.path, IGNORE_FILE_NAME); - if (!ignoreFile.exists() && !ignoreFile.createNewFile()) { - Toast.makeText(this, R.string.create_ignore_file_error, Toast.LENGTH_SHORT).show(); - return; - } - Intent intent = new Intent(Intent.ACTION_EDIT); - Uri uri = Uri.fromFile(ignoreFile); - intent.setDataAndType(uri, "text/plain"); - intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - - startActivity(intent); - } catch (IOException e) { - Log.w(TAG, e); - } catch (ActivityNotFoundException e) { - Log.w(TAG, e); - Toast.makeText(this, R.string.edit_ignore_file_error, Toast.LENGTH_SHORT).show(); - } - } - private void showFolderTypeDialog() { if (TextUtils.isEmpty(mFolder.path)) { Toast.makeText(this, R.string.folder_path_required, Toast.LENGTH_LONG) @@ -318,15 +300,23 @@ public class FolderActivity extends SyncthingActivity } mLabelView.removeTextChangedListener(mTextWatcher); mIdView.removeTextChangedListener(mTextWatcher); + mEditIgnoreListContent.removeTextChangedListener(mTextWatcher); } @Override public void onPause() { + try { + // This should trigger {@link #mTextWatcher} if the element still has the focus. + mEditIgnoreListContent.clearFocus(); + } catch (Exception e) { + Log.e(TAG, "onPause: mEditIgnoreListContent", e); + } super.onPause(); // We don't want to update every time a TextView's character changes, // so we hold off until the view stops being visible to the user. if (mFolderNeedsToUpdate) { + Log.v(TAG, "onPause: mFolderNeedsToUpdate == true"); updateFolder(); } } @@ -362,7 +352,8 @@ public class FolderActivity extends SyncthingActivity } if (!mIsCreateMode) { - List folders = getApi().getFolders(); + RestApi restApi = getApi(); // restApi != null because of State.ACTIVE + List folders = restApi.getFolders(); String passedId = getIntent().getStringExtra(EXTRA_FOLDER_ID); mFolder = null; for (Folder currentFolder : folders) { @@ -376,6 +367,7 @@ public class FolderActivity extends SyncthingActivity finish(); return; } + restApi.getFolderIgnoreList(mFolder.id, this::onReceiveFolderIgnoreList); checkWriteAndUpdateUI(); } if (getIntent().hasExtra(EXTRA_DEVICE_ID)) { @@ -388,6 +380,18 @@ public class FolderActivity extends SyncthingActivity updateViewsAndSetListeners(); } + private void onReceiveFolderIgnoreList(FolderIgnoreList folderIgnoreList) { + if (folderIgnoreList.ignore == null) { + Log.w(TAG, "onReceiveFolderIgnoreList: folderIgnoreList == null."); + return; + } + String ignoreList = TextUtils.join("\n", folderIgnoreList.ignore); + mEditIgnoreListContent.setMaxLines(Integer.MAX_VALUE); + mEditIgnoreListContent.removeTextChangedListener(mTextWatcher); + mEditIgnoreListContent.setText(ignoreList); + mEditIgnoreListContent.addTextChangedListener(mTextWatcher); + } + // If the FolderActivity gets recreated after the VersioningDialogActivity is closed, then the result from the VersioningDialogActivity will be received before // the mFolder variable has been recreated, so the versioning config will be stored in the mVersioning variable until the mFolder variable has been // recreated in the onServiceStateChange(). This has been observed to happen after the screen orientation has changed while the VersioningDialogActivity was open. @@ -568,7 +572,6 @@ public class FolderActivity extends SyncthingActivity if (mCanWriteToPath) { mAccessExplanationView.setText(R.string.folder_path_readwrite); mFolderTypeView.setEnabled(true); - mEditIgnores.setEnabled(true); if (mIsCreateMode) { /** * Suggest folder type FOLDER_TYPE_SEND_RECEIVE for folders to be created @@ -577,12 +580,16 @@ public class FolderActivity extends SyncthingActivity * or enabled root mode thus having write access. */ mFolder.type = Constants.FOLDER_TYPE_SEND_RECEIVE; + } else { + mEditIgnoreListTitle.setEnabled(true); + mEditIgnoreListContent.setEnabled(true); } } else { // Force "sendonly" folder. mAccessExplanationView.setText(R.string.folder_path_readonly); mFolderTypeView.setEnabled(false); - mEditIgnores.setEnabled(false); + mEditIgnoreListTitle.setEnabled(false); + mEditIgnoreListContent.setEnabled(false); mFolder.type = Constants.FOLDER_TYPE_SEND_ONLY; } } @@ -644,11 +651,23 @@ public class FolderActivity extends SyncthingActivity private void updateFolder() { if (!mIsCreateMode) { + RestApi restApi = getApi(); /** * RestApi is guaranteed not to be null as {@link onServiceStateChange} * immediately finishes this activity if SyncthingService shuts down. */ - getApi().updateFolder(mFolder); + /* + if (restApi == null) { + Log.e(TAG, "updateFolder: restApi == null"); + return; + } + */ + // Update ignore list. + String[] ignore = mEditIgnoreListContent.getText().toString().split("\n"); + restApi.postFolderIgnoreList(mFolder.id, ignore); + + // Update model and send the config to REST endpoint. + restApi.updateFolder(mFolder); } } diff --git a/app/src/main/java/com/nutomic/syncthingandroid/http/GetRequest.java b/app/src/main/java/com/nutomic/syncthingandroid/http/GetRequest.java index 874189dc..f1d3463b 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/http/GetRequest.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/http/GetRequest.java @@ -21,6 +21,7 @@ public class GetRequest extends ApiRequest { public static final String URI_VERSION = "/rest/system/version"; public static final String URI_SYSTEM_STATUS = "/rest/system/status"; public static final String URI_CONNECTIONS = "/rest/system/connections"; + public static final String URI_DB_IGNORES = "/rest/db/ignores"; public static final String URI_DB_STATUS = "/rest/db/status"; public static final String URI_DEVICEID = "/rest/svc/deviceid"; public static final String URI_REPORT = "/rest/svc/report"; diff --git a/app/src/main/java/com/nutomic/syncthingandroid/http/PostConfigRequest.java b/app/src/main/java/com/nutomic/syncthingandroid/http/PostConfigRequest.java deleted file mode 100644 index eb759748..00000000 --- a/app/src/main/java/com/nutomic/syncthingandroid/http/PostConfigRequest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.nutomic.syncthingandroid.http; - -import android.content.Context; -import android.net.Uri; - -import com.android.volley.Request; - -import java.net.URL; -import java.util.Collections; - -public class PostConfigRequest extends ApiRequest { - - private static final String URI_CONFIG = "/rest/system/config"; - - public PostConfigRequest(Context context, URL url, String apiKey, String config, - OnSuccessListener listener) { - super(context, url, URI_CONFIG, apiKey); - Uri uri = buildUri(Collections.emptyMap()); - connect(Request.Method.POST, uri, config, listener, null); - } - -} diff --git a/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java b/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java index 435842cf..9bf439ad 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java @@ -13,14 +13,17 @@ import java.util.Map; public class PostRequest extends ApiRequest { - public static final String URI_DB_OVERRIDE = "/rest/db/override"; + public static final String URI_DB_IGNORES = "/rest/db/ignores"; + public static final String URI_DB_OVERRIDE = "/rest/db/override"; + public static final String URI_SYSTEM_CONFIG = "/rest/system/config"; public PostRequest(Context context, URL url, String path, String apiKey, - @Nullable Map params, OnSuccessListener listener) { + @Nullable Map params, @Nullable String postBody, + OnSuccessListener listener) { super(context, url, path, apiKey); Map safeParams = Optional.fromNullable(params).or(Collections.emptyMap()); Uri uri = buildUri(safeParams); - connect(Request.Method.POST, uri, null, listener, null); + connect(Request.Method.POST, uri, postBody, listener, null); } } diff --git a/app/src/main/java/com/nutomic/syncthingandroid/model/FolderIgnoreList.java b/app/src/main/java/com/nutomic/syncthingandroid/model/FolderIgnoreList.java new file mode 100644 index 00000000..091443d2 --- /dev/null +++ b/app/src/main/java/com/nutomic/syncthingandroid/model/FolderIgnoreList.java @@ -0,0 +1,6 @@ +package com.nutomic.syncthingandroid.model; + +public class FolderIgnoreList { + public String[] expanded; + public String[] ignore; +} diff --git a/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java b/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java index 4c5b4ba5..bada0f22 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java @@ -21,7 +21,6 @@ import com.nutomic.syncthingandroid.SyncthingApp; import com.nutomic.syncthingandroid.activities.ShareActivity; import com.nutomic.syncthingandroid.http.GetRequest; import com.nutomic.syncthingandroid.http.PostRequest; -import com.nutomic.syncthingandroid.http.PostConfigRequest; import com.nutomic.syncthingandroid.model.Config; import com.nutomic.syncthingandroid.model.Completion; import com.nutomic.syncthingandroid.model.CompletionInfo; @@ -29,6 +28,7 @@ import com.nutomic.syncthingandroid.model.Connections; import com.nutomic.syncthingandroid.model.Device; import com.nutomic.syncthingandroid.model.Event; import com.nutomic.syncthingandroid.model.Folder; +import com.nutomic.syncthingandroid.model.FolderIgnoreList; import com.nutomic.syncthingandroid.model.FolderStatus; import com.nutomic.syncthingandroid.model.Options; import com.nutomic.syncthingandroid.model.SystemStatus; @@ -299,7 +299,7 @@ public class RestApi { public void overrideChanges(String folderId) { Log.d(TAG, "overrideChanges '" + folderId + "'"); new PostRequest(mContext, mUrl, PostRequest.URI_DB_OVERRIDE, mApiKey, - ImmutableMap.of("folder", folderId), null); + ImmutableMap.of("folder", folderId), null, null); } /** @@ -312,7 +312,8 @@ public class RestApi { synchronized (mConfigLock) { jsonConfig = new Gson().toJson(mConfig); } - new PostConfigRequest(mContext, mUrl, mApiKey, jsonConfig, null); + new PostRequest(mContext, mUrl, PostRequest.URI_SYSTEM_CONFIG, mApiKey, + null, jsonConfig, null); mOnConfigChangedListener.onConfigChanged(); } @@ -324,7 +325,8 @@ public class RestApi { synchronized (mConfigLock) { jsonConfig = new Gson().toJson(mConfig); } - new PostConfigRequest(mContext, mUrl, mApiKey, jsonConfig, result -> { + new PostRequest(mContext, mUrl, PostRequest.URI_SYSTEM_CONFIG, mApiKey, + null, jsonConfig, result -> { Intent intent = new Intent(mContext, SyncthingService.class) .setAction(SyncthingService.ACTION_RESTART); mContext.startService(intent); @@ -513,6 +515,27 @@ public class RestApi { } } + /** + * Requests ignore list for given folder. + */ + public void getFolderIgnoreList(String folderId, OnResultListener1 listener) { + new GetRequest(mContext, mUrl, GetRequest.URI_DB_IGNORES, mApiKey, + ImmutableMap.of("folder", folderId), result -> { + FolderIgnoreList folderIgnoreList = new Gson().fromJson(result, FolderIgnoreList.class); + listener.onResult(folderIgnoreList); + }); + } + + /** + * Posts ignore list for given folder. + */ + public void postFolderIgnoreList(String folderId, String[] ignore) { + FolderIgnoreList folderIgnoreList = new FolderIgnoreList(); + folderIgnoreList.ignore = ignore; + new PostRequest(mContext, mUrl, PostRequest.URI_DB_IGNORES, mApiKey, + ImmutableMap.of("folder", folderId), new Gson().toJson(folderIgnoreList), null); + } + /** * Requests and parses system version information. */ diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml index 9a77d284..b60a93a8 100644 --- a/app/src/main/res/layout/fragment_folder.xml +++ b/app/src/main/res/layout/fragment_folder.xml @@ -222,7 +222,7 @@ android:textAppearance="@style/TextAppearance.AppCompat.Caption" /> + + diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 662c2290..531ecb01 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -172,11 +172,6 @@ Ens podeu informar dels problemes que trobeu a través de Github. Voleu descartar els canvis? Patrons a ignorar - - No s\'ha pogut crear el fitxer d\'ignorats. Es pot escriure al directori? - - No hi ha cap editor de text - diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 8cecbce2..8fd2d544 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -163,11 +163,6 @@ Všechny zaznamenané chyby prosím hlašte přes Github. Zrušit změny? Ignorované vzory - - Vytvoření souboru s ignorovanými vzory selhalo. Umožňuje složka zápis? - - Nenalezen žádný textový editor - diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 35f905aa..feef2de2 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -159,11 +159,6 @@ Vær venlig at rapportere ethvert problem, du støder på, via Github. Slet dine ændringer? Ignorer-mønstre - - Kunne ikke danne ignorer-filen. Er mappen skrivebeskyttet? - - Intet tekstbehandlingsprogram blev fundet - diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 56d8aa9c..ec8116db 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -223,11 +223,6 @@ Bitte melden Sie auftretende Probleme via GitHub. Entschuldigung. Der ausgewählte Ordner kann nicht verwendet werden. Bitte wähle einen Ordner auf dem internen oder externen Speicher aus. Ausschluss Muster - - Erstellen der ignore Datei fehlgeschlagen. Kann ins Verzeichnis geschrieben werden? - - Texteditor nicht gefunden - diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 1999aa00..6841d3ab 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -159,11 +159,6 @@ Να απορριφθούν οι αλλαγές που κάνατε; Πρότυπα για αγνόηση - - Αδυναμία δημιουργίας αρχείου προτύπων αγνόησης. Υπάρχει δικαίωμα εγγραφής στον κατάλογο; - - Δεν βρέθηκε επεξεργαστής κειμένου - diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 35a4a5db..1e0865df 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -174,11 +174,6 @@ S\'il vous plaît, soumettez les problèmes que vous rencontrez via Github.Annuler vos modifications ? Ignorer les exclusions - - Création de fichier échoué, fichier ignoré. Le répertoire est-il accessible en écriture ? - - Editeur de texte non trouvé - diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 17053345..0b954301 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -178,11 +178,6 @@ Néhány eszközön extra alkalmazás-leállító alkalmazást telepített fel a Elveted a módosításaidat? Kihagyási minták - - Nem sikerült létrehozni a kihagyási fájlt. Írható a könyvtár? - - Nem található szövegszerkesztő - diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index b7968c04..f852e693 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -153,11 +153,6 @@ Jika ada masalah silakan laporkan lewat Github. Abaikan perubahan anda? Pola pengabaian - - Gagal membuat berkas ignore. Apakah direktori bisa ditulisi? - - Tidak ada editor teks yang ditemukan - diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bbaf6ab3..b29571b5 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -174,11 +174,6 @@ Si prega di segnalare eventuali problemi che si incontrano via Github. Annullare le modifiche? Schemi Esclusione File - - Impossibile creare il file delle esclusioni. La directory è scrivibile? - - Nessun editor di testo trovato - diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 03bbf284..a2525fc4 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -160,11 +160,6 @@ 変更を破棄しますか? 無視するパターン - - 無視ファイルの作成に失敗しました。ディレクトリは書き込み可能ですか? - - テキストエディタが見つかりません - diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 297b8d1a..7cd577a8 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -158,11 +158,6 @@ 설정 변경을 취소합니까? 패턴 무시하기 - - 무시 파일을 만들지 못했습니다. 디렉토리가 쓰기 가능합니까? - - 텍스트 편집기를 찾을 수 없습니다 - diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index b9774be5..48989e34 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -174,11 +174,6 @@ Als je problemen tegenkomt, meld ze dan via GitHub. Wijzigingen verwerpen? Patronen negeren - - Aanmaken van ignore-bestand mislukt. Is de map schrijfbaar? - - Geen tekstverwerker gevonden - diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7da7a0ad..0a515d35 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -163,11 +163,6 @@ Proszę zgłaszać napotkane błędy programu za pośrednictwem serwisu Github.< Porzucić zmiany? Wzorce ignorowania - - Nie powiodło się tworzenie pliku ze wzorcami ignorowania. Czy do folderu można zapisywać? - - Nie znaleziono edytora tekstu - diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 05b6d229..360243f9 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -174,11 +174,6 @@ Por favor, nos avise sobre quaisquer problemas que você encontrar via Github.Descartar as alterações? Filtros - - Não foi possível criar o arquivo de filtros. Este diretório tem permissões de escrita? - - Nenhum editor de texto foi encontrado - diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 247b50a0..b39ad20f 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -192,11 +192,6 @@ Vă rugăm să raportați orice problemă întâlniți, prin intermediul GitHub. Ne pare rău. Directorul selectat nu poate fi folosit. Vă rugăm să alegeți un director localizat pe stocarea internă sau externă. Ignoră șabloane - - Nu s-a putut crea fișierul de ignorare. Se poate scrie în director? - - Nu s-a găsit nici un editor de text - diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 469ed116..e6972e83 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -176,11 +176,6 @@ Отменить внесённые изменения? Шаблоны игнорирования - - Ошибка при попытке создания файла с шаблонами игнорирования. У папки есть право на запись? - - Текстовый редактор не найден - diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index feb8534a..65c97b2c 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -191,11 +191,6 @@ Vänligen rapportera eventuella problem du stöter på via Github. Tyvärr. Den valda mappen kan inte användas. Välj en mapp som finns på intern eller extern lagring. Ignorera mönster - - Misslyckades med att skapa ignorera-fil. Är katalogen skrivbar? - - Ingen textredigerare hittades - diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 025a416e..ea7122e2 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -119,9 +119,6 @@ Скасувати зміни? Ігнорувати паттерни - - Текстові редактори не знайдено - diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 33513f23..51fb6f19 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -162,11 +162,6 @@ 放弃所做的更改? 忽略列表 - - 创建忽略文件失败。文件夹可写吗? - - 未找到文本编辑器 - diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index e75e0704..d2546512 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -158,11 +158,6 @@ 放棄變更? 忽略樣式 - - 無法建立忽略檔案。資料夾是可寫入的? - - 找不到文字編輯器 - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c5144123..3d60b4a3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -223,11 +223,6 @@ Please report any problems you encounter via Github. Sorry. The selected folder cannot be used. Please select a folder located on the internal or external storage. Ignore Patterns - - Failed to create ignore file. Is the directory writable? - - No text editor found -