From: David A. Velasco Date: Mon, 18 Nov 2013 13:24:04 +0000 (+0100) Subject: Merge remote-tracking branch 'origin/refactor_remote_operation_to_create_folder'... X-Git-Tag: oc-android-1.5.5~126^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/3cd9b0dc1c1833bcf7f0d1e5fe0dbedd34e05861?hp=eec99ea7d8c5ba0dafa5d4e8ff0ee68374344bc8 Merge remote-tracking branch 'origin/refactor_remote_operation_to_create_folder' into refactor_remote_operation_to_create_folder --- diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b1075278..bdd792b0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -18,8 +18,8 @@ along with this program. If not, see . --> + android:versionCode="105000" + android:versionName="1.5.0" xmlns:android="http://schemas.android.com/apk/res/android"> diff --git a/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/CreateRemoteFolderOperation.java b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/CreateRemoteFolderOperation.java index 50f6ce5e..0974d08b 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/CreateRemoteFolderOperation.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/operations/remote/CreateRemoteFolderOperation.java @@ -53,7 +53,7 @@ public class CreateRemoteFolderOperation extends RemoteOperation { RemoteOperationResult result = null; MkColMethod mkcol = null; - boolean noInvalidChars = FileUtils.validatePath(mRemotePath); + boolean noInvalidChars = FileUtils.isValidPath(mRemotePath); if (noInvalidChars) { try { mkcol = new MkColMethod(client.getBaseUri() + WebdavUtils.encodePath(mRemotePath)); diff --git a/oc_framework/src/com/owncloud/android/oc_framework/utils/FileUtils.java b/oc_framework/src/com/owncloud/android/oc_framework/utils/FileUtils.java index e4f10bb5..8fb01dce 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/utils/FileUtils.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/utils/FileUtils.java @@ -20,7 +20,7 @@ public class FileUtils { * @param fileName * @return */ - public static boolean validateName(String fileName) { + public static boolean isValidName(String fileName) { boolean result = true; Log.d("FileUtils", "fileName =======" + fileName); @@ -38,7 +38,7 @@ public class FileUtils { * @param path * @return */ - public static boolean validatePath(String path) { + public static boolean isValidPath(String path) { boolean result = true; Log.d("FileUtils", "path ....... " + path); diff --git a/oc_jb_workaround/AndroidManifest.xml b/oc_jb_workaround/AndroidManifest.xml index 9ae118d9..1b12fb49 100644 --- a/oc_jb_workaround/AndroidManifest.xml +++ b/oc_jb_workaround/AndroidManifest.xml @@ -1,18 +1,18 @@ + android:versionCode="0100010" + android:versionName="1.0.10" > + android:targetSdkVersion="19" /> + > diff --git a/oc_jb_workaround/res/drawable-hdpi/main_app_icon.png b/oc_jb_workaround/res/drawable-hdpi/main_app_icon.png index e388c7be..6fe153bb 100644 Binary files a/oc_jb_workaround/res/drawable-hdpi/main_app_icon.png and b/oc_jb_workaround/res/drawable-hdpi/main_app_icon.png differ diff --git a/oc_jb_workaround/res/drawable-hdpi/workaround_app_icon.png b/oc_jb_workaround/res/drawable-hdpi/workaround_app_icon.png index 7daeea4a..f28286a7 100644 Binary files a/oc_jb_workaround/res/drawable-hdpi/workaround_app_icon.png and b/oc_jb_workaround/res/drawable-hdpi/workaround_app_icon.png differ diff --git a/oc_jb_workaround/res/drawable-ldpi/main_app_icon.png b/oc_jb_workaround/res/drawable-ldpi/main_app_icon.png index 11cf0ab1..1bc470be 100644 Binary files a/oc_jb_workaround/res/drawable-ldpi/main_app_icon.png and b/oc_jb_workaround/res/drawable-ldpi/main_app_icon.png differ diff --git a/oc_jb_workaround/res/drawable-ldpi/workaround_app_icon.png b/oc_jb_workaround/res/drawable-ldpi/workaround_app_icon.png index 8cd92ff9..cd8eb078 100644 Binary files a/oc_jb_workaround/res/drawable-ldpi/workaround_app_icon.png and b/oc_jb_workaround/res/drawable-ldpi/workaround_app_icon.png differ diff --git a/oc_jb_workaround/res/drawable-mdpi/main_app_icon.png b/oc_jb_workaround/res/drawable-mdpi/main_app_icon.png index 6997c7e4..9008b9d3 100644 Binary files a/oc_jb_workaround/res/drawable-mdpi/main_app_icon.png and b/oc_jb_workaround/res/drawable-mdpi/main_app_icon.png differ diff --git a/oc_jb_workaround/res/drawable-mdpi/workaround_app_icon.png b/oc_jb_workaround/res/drawable-mdpi/workaround_app_icon.png index 5bc795a3..f7ca7b00 100644 Binary files a/oc_jb_workaround/res/drawable-mdpi/workaround_app_icon.png and b/oc_jb_workaround/res/drawable-mdpi/workaround_app_icon.png differ diff --git a/oc_jb_workaround/res/values-v11/styles.xml b/oc_jb_workaround/res/values-v11/styles.xml deleted file mode 100644 index 541752f6..00000000 --- a/oc_jb_workaround/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/oc_jb_workaround/res/values-v14/styles.xml b/oc_jb_workaround/res/values-v14/styles.xml deleted file mode 100644 index f20e0150..00000000 --- a/oc_jb_workaround/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/oc_jb_workaround/res/values/setup.xml b/oc_jb_workaround/res/values/setup.xml index ed898f55..0bf5e1dd 100644 --- a/oc_jb_workaround/res/values/setup.xml +++ b/oc_jb_workaround/res/values/setup.xml @@ -1,4 +1,21 @@ + ownCloud Jelly Bean Workaround for lost credentials diff --git a/oc_jb_workaround/res/values/styles.xml b/oc_jb_workaround/res/values/styles.xml deleted file mode 100644 index 4a10ca49..00000000 --- a/oc_jb_workaround/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/res/drawable-hdpi/icon.png b/res/drawable-hdpi/icon.png index 8a2fe193..6fe153bb 100644 Binary files a/res/drawable-hdpi/icon.png and b/res/drawable-hdpi/icon.png differ diff --git a/res/drawable-hdpi/logo.png b/res/drawable-hdpi/logo.png index a920912c..188d693a 100644 Binary files a/res/drawable-hdpi/logo.png and b/res/drawable-hdpi/logo.png differ diff --git a/res/drawable-ldpi/icon.png b/res/drawable-ldpi/icon.png index f8f54b73..1bc470be 100644 Binary files a/res/drawable-ldpi/icon.png and b/res/drawable-ldpi/icon.png differ diff --git a/res/drawable-ldpi/logo.png b/res/drawable-ldpi/logo.png index 7de7cb84..23998ff5 100644 Binary files a/res/drawable-ldpi/logo.png and b/res/drawable-ldpi/logo.png differ diff --git a/res/drawable-mdpi/icon.png b/res/drawable-mdpi/icon.png index 42bbaad0..9008b9d3 100644 Binary files a/res/drawable-mdpi/icon.png and b/res/drawable-mdpi/icon.png differ diff --git a/res/drawable-mdpi/logo.png b/res/drawable-mdpi/logo.png index a920912c..23998ff5 100644 Binary files a/res/drawable-mdpi/logo.png and b/res/drawable-mdpi/logo.png differ diff --git a/res/values-hu-rHU/strings.xml b/res/values-hu-rHU/strings.xml index 88da10fc..81bcfa6f 100644 --- a/res/values-hu-rHU/strings.xml +++ b/res/values-hu-rHU/strings.xml @@ -24,7 +24,11 @@ Ez megjeleníti a rögzitett eseményeket Elözmények törlése Súgó + Ajánlja egy barátjának + Visszajelzés Impresszum + Próbálja ki %1$s-t az okostelefonján! + Kérem próbálja ki %1$s-t az okostelefonján!\nInnen tölthető le: %2$s Szerver állapot ellenörzés A kiszolgáló címe Felhasználói név @@ -91,6 +95,7 @@ Néhány helyi fájlt figyelmen kívül hagytunk %1$d fájlt nem sikerült a %2$s mappából bemásolni Az 1.3.16 verzió használatakor azok az állományok, amiket erről az eszközről töltenek fel, a helyi %1$s mappába másolódnak be, hogy elkerülhető legyen az adatveszteség, amikor ugyanazt az állományt több résztvevő is szinkronizál.\n\nEmiatt a változás miatt, az e program korábbi változataival feltöltött állományok a %2$s mappába másolódtak. Sajnos azonban egy a szinkronizáció közben fellépő hiba miatt ez a feladat csak részben valósult meg. Két lehetősége van: vagy úgy dönt, hogy maradjanak a fájl(ok) ahol vannak és akkor törölje a %3$s-re mutató linket, vagy pedig helyezze át az állomány(oka)t a %1$s mappába, és tartsa meg a %4$s-re mutató linket.\n\nAz alábbiakban látható a helyi fájl(ok) listája és a távoli fájl(ok) a %5$s mappában, amihez linkelve voltak. + A %1$s mappa már nem létezik Helyezzük át mindet Az összes fájlt áthelyeztük Egyes fájlokat nem sikerült áthelyezni @@ -116,6 +121,7 @@ Nem támogatott média kodek Media fájl nem olvasható Médiafájl kódolása nem megfelelő + A lejátszás közben időtúllépés történt A média fájlt nem lehet streamelni. A média fájlt nem tudja lejátszani a jelenlegi médialejátszó Biztonsági hiba amikor megpróbálja lejátszani a %1$s @@ -130,12 +136,15 @@ A kapcsolat létrejött Kapcsolat tesztelése... Hibás a kiszolgáló beállítása + Egy bejelentkezési beállítás már létezik ugyanehhez a kiszolgálóhoz és felhasználóhoz + A megadott felhasználó nem azonos ezzel a belépési jogosultsággal Ismeretlen hiba történt! A kiszolgáló nem található Kiszolgáló nem található A kiszolgáló túl sokára válaszolt Hibás URL Nem sikerült az SSL kapcsolat felépítése + Az SSL kiszolgáló tanúsítványát nem sikerült ellenőrizni Ismeretlen változat a kiszolgálón A kapcsolat nem hozható létre Létrejött a titkosított kapcsolat @@ -143,7 +152,12 @@ Sikertelen azonosítás Hozzáférés megtagadva az azonsítást végző szerver által Nem várt állapot; kérlek, menj a szerver URL-jére újra. + A jogosultsága lejárt. Kérjük jelentkezzen be ismét! Kélek, írd be a jelenlegi jelszavadat + Lejárt a munkamenetének érvényessége. Kérjük jelentkezzen be ismét! + Kapcsolódás a felhasználóazonosítást végző kiszolgálóhoz... + A kiszolgáló nem támogatja ezt a felhasználóazonosítási módszert + %1$s nem támogat több bejelenkezési jogosultságot Automatikusan frissítse a fájlokat Átnevezés Eltávolítás @@ -164,6 +178,7 @@ Egy pillanat... Váratlan hiba; válassza ki a fájlt más programból Egy fájl sincs kiválasztva + Bejelentkezés oAuth2-vel Kapcsolódás az oAuth2 szerverhez... A kiszolgálót nem sikerült azonosítani - A kiszolgáló tanúsítványa nem megbízható diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index a54c11c4..faaee3f7 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -1,5 +1,7 @@ + različica %1$s + Osveži račun Pošlji datoteko Vsebina iz drugih programov Datoteke @@ -21,6 +23,7 @@ Pomoč Odziv Natis + Preveri strežnik Naslov strežnika Uporabniško ime Geslo @@ -93,10 +96,11 @@ Koda PIN bo zahtevana vsakič pred zagonom programa. Ponovno vnesite kodo PIN programa Odstrani kodo PIN programa - Vrednosti kodo PIN programa nista enaki - Nepravilen kodo PIN programa + Vrednosti kod PIN programa nista enaki + Nepravilna koda PIN programa Koda PIN programa je odstranjena Koda PIN programa je shranjena + Predvajalnik glasbe %1$s %1$s (predvajanja) %1$s (nalaganja) Medijskih datotek ni bilo mogoče najti @@ -112,15 +116,15 @@ Varna povezava ni na voljo. Povezava je vzpostavljena Preizkušanje povezave ... - Nastavitve servera so napačno oblikovane - Prišlo je do neznane napake + Napačno oblikovane nastavitve strežnika + Prišlo je do neznane napake! Gostitelja ni mogoče najti Namestitve servera ni mogoče najti Strežnik je potreboval preveč časa za odgovor Napačno oblikovan naslov URL Začenjanje SSL je spodletelo - Neprepoznana različica strežnika servera - Povezave ni mogoče vzpostaviti + Nepoznana različica strežnika + Ni mogoče vzpostaviti povezave Varna povezava je vzpostavljena Datoteka naj bo posodobljena Preimenuj @@ -165,6 +169,7 @@ Podpis: Algoritem: To je vsebnik predmetov. + Slika PNG 389 KB 2012/05/18 12:23 PM 12:23:45 @@ -179,6 +184,7 @@ Te slike ni mogoče prikazati Datoteke %1$s ni mogoče kopirati v krajevno mapo %2$s. izberi vse + vse izbrane poskusi znova Naloži več slik Sporočilo o napaki: diff --git a/res/values/strings.xml b/res/values/strings.xml index 21699cf8..05c7ecf8 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -182,7 +182,7 @@ Remote file could not be checked File contents already synchronized Directory could not be created - Invalid character in foldername: / \\ < > : " | ? * + Forbidden characters: / \\ < > : " | ? * Wait a moment "Unexpected problem ; please select the file from a different app" No file was selected @@ -232,7 +232,7 @@ This image can not be shown %1$s could not be copied to %2$s local directory - Failed InstantUpload" + Failed InstantUpload Failed instant uploads Summary of all failed instant uploads select all diff --git a/src/com/owncloud/android/files/OwnCloudFileObserver.java b/src/com/owncloud/android/files/OwnCloudFileObserver.java index 47a66b65..68c97e4f 100644 --- a/src/com/owncloud/android/files/OwnCloudFileObserver.java +++ b/src/com/owncloud/android/files/OwnCloudFileObserver.java @@ -28,8 +28,6 @@ import com.owncloud.android.oc_framework.operations.RemoteOperationResult.Result import com.owncloud.android.ui.activity.ConflictsResolveActivity; import com.owncloud.android.utils.Log_OC; - - import android.accounts.Account; import android.content.Context; import android.content.Intent; @@ -37,45 +35,57 @@ import android.os.FileObserver; public class OwnCloudFileObserver extends FileObserver { - public static int CHANGES_ONLY = CLOSE_WRITE; + private static int MASK = (FileObserver.MODIFY | FileObserver.CLOSE_WRITE); private static String TAG = OwnCloudFileObserver.class.getSimpleName(); private String mPath; private int mMask; private Account mOCAccount; - //private OCFile mFile; private Context mContext; + private boolean mModified; - public OwnCloudFileObserver(String path, Account account, Context context, int mask) { - super(path, mask); + public OwnCloudFileObserver(String path, Account account, Context context) { + super(path, MASK); if (path == null) throw new IllegalArgumentException("NULL path argument received"); - /*if (file == null) - throw new IllegalArgumentException("NULL file argument received");*/ if (account == null) throw new IllegalArgumentException("NULL account argument received"); if (context == null) throw new IllegalArgumentException("NULL context argument received"); - /*if (!path.equals(file.getStoragePath()) && !path.equals(FileStorageUtils.getDefaultSavePathFor(account.name, file))) - throw new IllegalArgumentException("File argument is not linked to the local file set in path argument"); */ mPath = path; - //mFile = file; mOCAccount = account; mContext = context; - mMask = mask; + mModified = false; } + @Override public void onEvent(int event, String path) { Log_OC.d(TAG, "Got file modified with event " + event + " and path " + mPath + ((path != null) ? File.separator + path : "")); - if ((event & mMask) == 0) { + if ((event & MASK) == 0) { Log_OC.wtf(TAG, "Incorrect event " + event + " sent for file " + mPath + ((path != null) ? File.separator + path : "") + " with registered for " + mMask + " and original path " + mPath); - return; - } + } else { + if ((event & FileObserver.MODIFY) != 0) { + // file changed + mModified = true; + } + // not sure if it's possible, but let's assume that both kind of events can be received at the same time + if ((event & FileObserver.CLOSE_WRITE) != 0) { + // file closed + if (mModified) { + mModified = false; + startSyncOperation(); + } + } + } + } + + + private void startSyncOperation() { FileDataStorageManager storageManager = new FileDataStorageManager(mOCAccount, mContext.getContentResolver()); OCFile file = storageManager.getFileByLocalPath(mPath); // a fresh object is needed; many things could have occurred to the file since it was registered to observe // again, assuming that local files are linked to a remote file AT MOST, SOMETHING TO BE DONE; diff --git a/src/com/owncloud/android/files/services/FileObserverService.java b/src/com/owncloud/android/files/services/FileObserverService.java index 871d2abf..fa1fec24 100644 --- a/src/com/owncloud/android/files/services/FileObserverService.java +++ b/src/com/owncloud/android/files/services/FileObserverService.java @@ -162,8 +162,7 @@ public class FileObserverService extends Service { OwnCloudFileObserver observer = new OwnCloudFileObserver( path, account, - getApplicationContext(), - OwnCloudFileObserver.CHANGES_ONLY); + getApplicationContext()); mObserversMap.put(path, observer); if (new File(path).exists()) { observer.startWatching(); @@ -202,8 +201,7 @@ public class FileObserverService extends Service { /// the local file was never registered to observe before observer = new OwnCloudFileObserver( localPath, account, - getApplicationContext(), - OwnCloudFileObserver.CHANGES_ONLY); + getApplicationContext()); mObserversMap.put(localPath, observer); Log_OC.d(TAG, "Observer added for path " + localPath); diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 37455d2e..685cff24 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1335,7 +1335,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa } else { dismissLoadingDialog(); if (result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME) { - Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg_invalid_characters, Toast.LENGTH_LONG).show(); + Toast.makeText(FileDisplayActivity.this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show(); } else { try { Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg, Toast.LENGTH_LONG); diff --git a/src/com/owncloud/android/ui/dialog/EditNameDialog.java b/src/com/owncloud/android/ui/dialog/EditNameDialog.java index 4d6243af..862715fd 100644 --- a/src/com/owncloud/android/ui/dialog/EditNameDialog.java +++ b/src/com/owncloud/android/ui/dialog/EditNameDialog.java @@ -27,10 +27,11 @@ import android.view.View; import android.view.WindowManager.LayoutParams; import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; - +import com.owncloud.android.oc_framework.utils.FileUtils; /** @@ -129,6 +130,10 @@ public class EditNameDialog extends SherlockDialogFragment implements DialogInte switch (which) { case AlertDialog.BUTTON_POSITIVE: { mNewFilename = ((TextView)(getDialog().findViewById(R.id.user_input))).getText().toString(); + if (!FileUtils.isValidName(mNewFilename)) { + Toast.makeText(getSherlockActivity(), R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show(); + return; + } mResult = true; } case AlertDialog.BUTTON_NEGATIVE: { // fall through