android:layout_marginBottom="4dp"\r
android:layout_marginRight="4dp"\r
android:src="@drawable/ic_favorite" />\r
+\r
+ <ImageView\r
+ android:id="@+id/custom_checkbox"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_gravity="center_vertical|bottom"\r
+ android:layout_marginLeft="4dp"\r
+ android:layout_marginRight="4dp"\r
+ android:gravity=""\r
+ android:src="@android:drawable/checkbox_off_background" />\r
</FrameLayout>\r
\r
</LinearLayout>
\ No newline at end of file
android:layout_marginRight="2dp"\r
android:src="@drawable/ic_favorite" />\r
\r
-\r
+ <ImageView\r
+ android:id="@+id/custom_checkbox"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_gravity="center_vertical|bottom"\r
+ android:layout_marginLeft="4dp"\r
+ android:layout_marginRight="4dp"\r
+ android:gravity=""\r
+ android:src="@android:drawable/checkbox_off_background"\r
+ android:elevation="30dp" />\r
\r
</FrameLayout>\r
\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><!--
+ ownCloud Android client application
+
+ Copyright (C) 2012 Bartek Przybylski
+ Copyright (C) 2015 ownCloud Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2,
+ as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/action_download_file"
+ android:title="@string/filedetails_download"
+ android:icon="@drawable/ic_action_download"
+ android:orderInCategory="1" />
+ <item
+ android:id="@+id/action_move"
+ android:title="@string/actionbar_move"
+ android:icon="@android:drawable/ic_menu_set_as"
+ android:orderInCategory="1" />
+ <item
+ android:id="@+id/action_copy"
+ android:title="@android:string/copy"
+ android:icon="@android:drawable/ic_menu_set_as"
+ android:orderInCategory="1" />
+ <item
+ android:id="@+id/action_remove_file"
+ android:title="@string/common_remove"
+ android:icon="@android:drawable/ic_menu_delete"
+ android:orderInCategory="1" />
+ <item
+ android:id="@+id/action_favorite_file"
+ android:title="@string/favorite"
+ android:icon="@android:drawable/ic_menu_set_as"
+ android:orderInCategory="1" />
+ <item
+ android:id="@+id/action_unfavorite_file"
+ android:title="@string/unfavorite"
+ android:icon="@android:drawable/ic_menu_set_as"
+ android:orderInCategory="1" />
+</menu>
<string name="favorite">المفضلة</string>
<string name="common_rename">إعادة التسمية</string>
<string name="common_remove">حذف</string>
- <string name="confirmation_remove_alert">هل تريد حقاً حذف %1$s ؟</string>
+ <string name="confirmation_remove_file_alert">هل تريد حقاً حذف %1$s ؟</string>
<string name="confirmation_remove_folder_alert">هل ترغب في حذف %1$s و جهات الإتصال التابعة له؟ </string>
<string name="confirmation_remove_local">محليا فقط</string>
<string name="confirmation_remove_folder_local">محليا فقط</string>
<string name="favorite">İstəkli</string>
<string name="common_rename">Adı dəyiş</string>
<string name="common_remove">Sil</string>
- <string name="confirmation_remove_alert">Siz həqiqətən %1$s silmək istəyirsiniz?</string>
+ <string name="confirmation_remove_file_alert">Siz həqiqətən %1$s silmək istəyirsiniz?</string>
<string name="confirmation_remove_folder_alert">Siz həqiqətəndə %1$s və onun kontentini silmək istəyirsiniz?</string>
<string name="confirmation_remove_local">Yalnız daxili</string>
<string name="confirmation_remove_folder_local">Yalnız daxili</string>
<string name="favorite">Любими</string>
<string name="common_rename">Преименуване</string>
<string name="common_remove">Премахване</string>
- <string name="confirmation_remove_alert">Наистина ли искате да изтриете %1$s ?</string>
+ <string name="confirmation_remove_file_alert">Наистина ли искате да изтриете %1$s ?</string>
<string name="confirmation_remove_folder_alert">Наистина ли искате да премахнете %1$s и съдържанието му?</string>
<string name="confirmation_remove_local">Само локално</string>
<string name="confirmation_remove_folder_local">Само локално</string>
<string name="favorite">প্রিয়জন</string>
<string name="common_rename">পূনঃনামকরণ</string>
<string name="common_remove">অপসারণ</string>
- <string name="confirmation_remove_alert">আপনি কি সত্যিই %1$s অপসারণ করতে চান?</string>
+ <string name="confirmation_remove_file_alert">আপনি কি সত্যিই %1$s অপসারণ করতে চান?</string>
<string name="confirmation_remove_folder_alert">আপনি কি সত্যিই %1$s এবং এর কনটেন্ট অপসারণ করতে চান?</string>
<string name="confirmation_remove_local">শুধুমাত্র লোকাল</string>
<string name="confirmation_remove_folder_local">শুধুমাত্র লোকাল</string>
<string name="favorite">Preferits</string>
<string name="common_rename">Reanomena</string>
<string name="common_remove">Elimina</string>
- <string name="confirmation_remove_alert">Esteu segur que voleu eliminar %1$s?</string>
+ <string name="confirmation_remove_file_alert">Esteu segur que voleu eliminar %1$s?</string>
<string name="confirmation_remove_folder_alert">Estàs segur que vols esborrar %1$s i els seus continguts?</string>
<string name="confirmation_remove_local">Només local</string>
<string name="confirmation_remove_folder_local">Només local</string>
<string name="unfavorite">Odebrat z oblíbených</string>
<string name="common_rename">Přejmenovat</string>
<string name="common_remove">Odstranit</string>
- <string name="confirmation_remove_alert">Opravdu chcete odstranit %1$s ?</string>
+ <string name="confirmation_remove_file_alert">Opravdu chcete odstranit %1$s ?</string>
<string name="confirmation_remove_folder_alert">Opravdu chcete odstranit %1$s a jeho obsah?</string>
<string name="confirmation_remove_local">Pouze místní</string>
<string name="confirmation_remove_folder_local">Pouze místní</string>
- <string name="confirmation_remove_remote">Ze serveru</string>
+ <string name="confirmation_remove_file_remote">Ze serveru</string>
<string name="confirmation_remove_remote_and_local">Vzdálený & místní</string>
<string name="remove_success_msg">Úspěšně odstraněno</string>
<string name="remove_fail_msg">Odstranění nelze dokončit</string>
<string name="unfavorite">Fjern markering som foretrukket</string>
<string name="common_rename">Omdøb</string>
<string name="common_remove">Fjern</string>
- <string name="confirmation_remove_alert">Er du sikker på at du vil fjerne %1$s ?</string>
+ <string name="confirmation_remove_file_alert">Er du sikker på at du vil fjerne %1$s ?</string>
<string name="confirmation_remove_folder_alert">Ønsker du virkelig at slette %1$s og dets indhold?</string>
<string name="confirmation_remove_local">Kun lokal</string>
<string name="confirmation_remove_folder_local">Kun lokal</string>
- <string name="confirmation_remove_remote">Fra server</string>
+ <string name="confirmation_remove_file_remote">Fra server</string>
<string name="confirmation_remove_remote_and_local">Fjernbeliggende og lokalt</string>
<string name="remove_success_msg">Vellykket fjernelse</string>
<string name="remove_fail_msg">Fjernelse kunne ikke fuldføres</string>
<string name="common_remove">Löschen</string>
<string name="confirmation_remove_local">Nur lokal</string>
<string name="confirmation_remove_folder_local">Nur lokale Inhalte</string>
- <string name="confirmation_remove_remote">Vom Server entfernen</string>
+ <string name="confirmation_remove_file_remote">Vom Server entfernen</string>
<string name="confirmation_remove_remote_and_local">Lokal und auf dem Server</string>
<string name="remove_success_msg">Erfolgreich gelöscht</string>
<string name="remove_fail_msg">Der Löschvorgang konnte nicht beendet werden</string>
<string name="unfavorite">Nicht mehr favorisieren</string>
<string name="common_rename">Umbenennen</string>
<string name="common_remove">Löschen</string>
- <string name="confirmation_remove_alert">Möchten Sie %1$s wirklich löschen?</string>
+ <string name="confirmation_remove_file_alert">Möchten Sie %1$s wirklich löschen?</string>
<string name="confirmation_remove_folder_alert">Möchten Sie wirklich %1$s und dessen Inhalte entfernen?</string>
<string name="confirmation_remove_local">Nur lokal</string>
<string name="confirmation_remove_folder_local">Nur lokal</string>
<string name="unfavorite">Favorit entfernen</string>
<string name="common_rename">Umbenennen</string>
<string name="common_remove">Löschen</string>
- <string name="confirmation_remove_alert">Möchtest Du %1$s wirklich löschen?</string>
+ <string name="confirmation_remove_file_alert">Möchtest Du %1$s wirklich löschen?</string>
<string name="confirmation_remove_folder_alert">Möchtest Du wirklich %1$s und dessen Inhalte entfernen?</string>
<string name="confirmation_remove_local">Nur lokal</string>
<string name="confirmation_remove_folder_local">Nur lokal</string>
<string name="unfavorite">Κατάργηση από τα αγαπημένα</string>
<string name="common_rename">Μετονομασία</string>
<string name="common_remove">Αφαίρεση</string>
- <string name="confirmation_remove_alert">Θέλετε στ\' αλήθεια να αφαιρέσετε το %1$s;</string>
+ <string name="confirmation_remove_file_alert">Θέλετε στ\' αλήθεια να αφαιρέσετε το %1$s;</string>
<string name="confirmation_remove_folder_alert">Θέλετε στ\' αλήθεια να διαγράψετε το %1$s και τα περιεχόμενά του;</string>
<string name="confirmation_remove_local">Μόνο τοπικά</string>
<string name="confirmation_remove_folder_local">Μόνο τοπικά</string>
- <string name="confirmation_remove_remote">Από το διακομιστή</string>
+ <string name="confirmation_remove_file_remote">Από το διακομιστή</string>
<string name="confirmation_remove_remote_and_local">Απομακρυσμένα & τοπικά</string>
<string name="remove_success_msg">Αφαίρεση επιτυχής</string>
<string name="remove_fail_msg">Η αφαίρεση απέτυχε</string>
<string name="unfavorite">Unfavourite</string>
<string name="common_rename">Rename</string>
<string name="common_remove">Remove</string>
- <string name="confirmation_remove_alert">Do you really want to remove %1$s?</string>
+ <string name="confirmation_remove_file_alert">Do you really want to remove %1$s?</string>
<string name="confirmation_remove_folder_alert">Do you really want to remove %1$s and its contents?</string>
<string name="confirmation_remove_local">Local only</string>
<string name="confirmation_remove_folder_local">Local only</string>
<string name="unfavorite">Nefavoratigi</string>
<string name="common_rename">Alinomigi</string>
<string name="common_remove">Forigi</string>
- <string name="confirmation_remove_alert">Ĉu vi vere volas forigi %1$s?</string>
+ <string name="confirmation_remove_file_alert">Ĉu vi vere volas forigi %1$s?</string>
<string name="confirmation_remove_folder_alert">Ĉu vi vere volas forigi %1$s kaj ĝia enhavo?</string>
<string name="confirmation_remove_local">Nur loka</string>
<string name="confirmation_remove_folder_local">Nur loka</string>
<string name="favorite">Favorito</string>
<string name="common_rename">Renombrar</string>
<string name="common_remove">Borrar</string>
- <string name="confirmation_remove_alert">¿Realmente quieres eliminar %1$s?</string>
+ <string name="confirmation_remove_file_alert">¿Realmente quieres eliminar %1$s?</string>
<string name="confirmation_remove_folder_alert">¿Realmente deseas eliminar %1$s y todo su contenido?</string>
<string name="confirmation_remove_local">Sólo local</string>
<string name="confirmation_remove_folder_local">Sólo local</string>
<string name="auth_unauthorized">usuario o clave incorrecta</string>
<string name="common_rename">Renombrar</string>
<string name="common_remove">Remover</string>
- <string name="confirmation_remove_alert">¿Realmente desea eliminar %1$s?</string>
+ <string name="confirmation_remove_file_alert">¿Realmente desea eliminar %1$s?</string>
<string name="confirmation_remove_folder_alert">¿Realmente desea eliminar el archivo %1$s y su contenido?</string>
<string name="confirmation_remove_local">Solo local</string>
<string name="confirmation_remove_folder_local">Solo local</string>
<string name="unfavorite">No-favorito</string>
<string name="common_rename">Renombrar</string>
<string name="common_remove">Borrar</string>
- <string name="confirmation_remove_alert">¿Realmente desea eliminar %1$s?</string>
+ <string name="confirmation_remove_file_alert">¿Realmente desea eliminar %1$s?</string>
<string name="confirmation_remove_folder_alert">¿Realmente desea eliminar %1$s y todo su contenido?</string>
<string name="confirmation_remove_local">Sólo local</string>
<string name="confirmation_remove_folder_local">Sólo local</string>
- <string name="confirmation_remove_remote">Desde el servidor</string>
+ <string name="confirmation_remove_file_remote">Desde el servidor</string>
<string name="confirmation_remove_remote_and_local">Remoto & local</string>
<string name="remove_success_msg">Borrado correctamente</string>
<string name="remove_fail_msg">El borrado no pudo ser completado</string>
<string name="unfavorite">Eemalda lemmik</string>
<string name="common_rename">Nimeta ümber</string>
<string name="common_remove">Eemalda</string>
- <string name="confirmation_remove_alert">Oled sa kindel, et soovid %1$s eemaldada?</string>
+ <string name="confirmation_remove_file_alert">Oled sa kindel, et soovid %1$s eemaldada?</string>
<string name="confirmation_remove_folder_alert">Kas sa tõesti soovid eemaldada %1$s ja selle sisu?</string>
<string name="confirmation_remove_local">Ainult kohalik</string>
<string name="confirmation_remove_folder_local">Ainult kohalik</string>
- <string name="confirmation_remove_remote">Serverist</string>
+ <string name="confirmation_remove_file_remote">Serverist</string>
<string name="confirmation_remove_remote_and_local">Kaugfail & kohalik</string>
<string name="remove_success_msg">Eemaldamine oli edukas</string>
<string name="remove_fail_msg">Eemaldamine ebaõnnestus</string>
<string name="favorite">Gogokoa</string>
<string name="common_rename">Berrizendatu</string>
<string name="common_remove">Ezabatu</string>
- <string name="confirmation_remove_alert">Ziur zaude %1$s ezabatu nahi duzula?</string>
+ <string name="confirmation_remove_file_alert">Ziur zaude %1$s ezabatu nahi duzula?</string>
<string name="confirmation_remove_folder_alert">Ziru zaude %1$s eta bere edukiak ezabatu nahi dituzula?</string>
<string name="confirmation_remove_local">Bertakoa bakarrik</string>
<string name="confirmation_remove_folder_local">Bertakoa bakarrik</string>
<string name="unfavorite">Poista suosikeista</string>
<string name="common_rename">Nimeä uudelleen</string>
<string name="common_remove">Poista</string>
- <string name="confirmation_remove_alert">Haluatko varmasti poistaa kohteen %1$s?</string>
+ <string name="confirmation_remove_file_alert">Haluatko varmasti poistaa kohteen %1$s?</string>
<string name="confirmation_remove_folder_alert">Haluatko varmasti poistaa kohteen %1$s ja sen sisällön?</string>
<string name="confirmation_remove_local">Vain paikallinen</string>
<string name="confirmation_remove_folder_local">Vain paikallinen</string>
- <string name="confirmation_remove_remote">Palvelimelta</string>
+ <string name="confirmation_remove_file_remote">Palvelimelta</string>
<string name="confirmation_remove_remote_and_local">Etä ja paikallinen</string>
<string name="remove_success_msg">Poistettu onnistuneesti</string>
<string name="remove_fail_msg">Poistamista ei voitu suorittaa loppuun asti</string>
<string name="unfavorite">Retirer des favoris</string>
<string name="common_rename">Renommer</string>
<string name="common_remove">Supprimer</string>
- <string name="confirmation_remove_alert">Voulez-vous vraiment supprimer %1$s ?</string>
+ <string name="confirmation_remove_file_alert">Voulez-vous vraiment supprimer %1$s ?</string>
<string name="confirmation_remove_folder_alert">Voulez-vous vraiment supprimer %1$s et son contenu ?</string>
<string name="confirmation_remove_local">Local seulement</string>
<string name="confirmation_remove_folder_local">Local seulement</string>
- <string name="confirmation_remove_remote">Depuis le serveur</string>
+ <string name="confirmation_remove_file_remote">Depuis le serveur</string>
<string name="confirmation_remove_remote_and_local">Distant & local</string>
<string name="remove_success_msg">Suppression effectuée avec succès</string>
<string name="remove_fail_msg">Suppression impossible</string>
<string name="unfavorite">Retirar de favoritos</string>
<string name="common_rename">Renomear</string>
<string name="common_remove">Retirar</string>
- <string name="confirmation_remove_alert">Confirma que quere retirar %1$s?</string>
+ <string name="confirmation_remove_file_alert">Confirma que quere retirar %1$s?</string>
<string name="confirmation_remove_folder_alert">Confirma que quere retirar %1$s e o seu contido?</string>
<string name="confirmation_remove_local">Só local</string>
<string name="confirmation_remove_folder_local">Só local</string>
<string name="favorite">מועדף</string>
<string name="common_rename">שינוי שם</string>
<string name="common_remove">הסרה</string>
- <string name="confirmation_remove_alert">האם באמת להסיר %1$s?</string>
+ <string name="confirmation_remove_file_alert">האם באמת להסיר %1$s?</string>
<string name="confirmation_remove_folder_alert">האם באמת להסיר %1$s ואת כל התכולה?</string>
<string name="confirmation_remove_local">מקומי בלבד</string>
<string name="confirmation_remove_folder_local">מקומי בלבד</string>
<string name="unfavorite">Nem kedvenc</string>
<string name="common_rename">Átnevezés</string>
<string name="common_remove">Eltávolítás</string>
- <string name="confirmation_remove_alert">Tényleg el akarod távolítani %1$s?</string>
+ <string name="confirmation_remove_file_alert">Tényleg el akarod távolítani %1$s?</string>
<string name="confirmation_remove_folder_alert">Tényleg el akarod távolítani a %1$s és tartalmát?</string>
<string name="confirmation_remove_local">Csak a helyi példány</string>
<string name="confirmation_remove_folder_local">Csak a helyi példány</string>
<string name="unfavorite">Hapus favorit</string>
<string name="common_rename">Ubah nama</string>
<string name="common_remove">Hapus</string>
- <string name="confirmation_remove_alert">Apakah Anda yakin ingin menghapus %1$s?</string>
+ <string name="confirmation_remove_file_alert">Apakah Anda yakin ingin menghapus %1$s?</string>
<string name="confirmation_remove_folder_alert">Apakah Anda yakin ingin menghapus %1$s dan isinya?</string>
<string name="confirmation_remove_local">Lokal saja</string>
<string name="confirmation_remove_folder_local">Lokal saja</string>
- <string name="confirmation_remove_remote">Dari server</string>
+ <string name="confirmation_remove_file_remote">Dari server</string>
<string name="confirmation_remove_remote_and_local">Remot & lokal</string>
<string name="remove_success_msg">Penghapusan berhasil</string>
<string name="remove_fail_msg">Penghapusan gagal</string>
<string name="unfavorite">Rimuovi dai preferiti</string>
<string name="common_rename">Rinomina</string>
<string name="common_remove">Rimuovi</string>
- <string name="confirmation_remove_alert">Vuoi davvero rimuovere %1$s?</string>
+ <string name="confirmation_remove_file_alert">Vuoi davvero rimuovere %1$s?</string>
<string name="confirmation_remove_folder_alert">Vuoi davvero rimuovere %1$s e il suo contenuto?</string>
<string name="confirmation_remove_local">Solo localmente</string>
<string name="confirmation_remove_folder_local">Solo locale</string>
- <string name="confirmation_remove_remote">Dal server</string>
+ <string name="confirmation_remove_file_remote">Dal server</string>
<string name="confirmation_remove_remote_and_local">Remota e locale</string>
<string name="remove_success_msg">Rimozione effettuata con successo</string>
<string name="remove_fail_msg">La rimozione non può essere completata</string>
<string name="unfavorite">お気に入りを解除</string>
<string name="common_rename">名前を変更</string>
<string name="common_remove">削除</string>
- <string name="confirmation_remove_alert">本当に %1$s を削除しますか?</string>
+ <string name="confirmation_remove_file_alert">本当に %1$s を削除しますか?</string>
<string name="confirmation_remove_folder_alert">本当に %1$s およびそのコンテンツを削除してもよろしいですか?</string>
<string name="confirmation_remove_local">ローカルのみ</string>
<string name="confirmation_remove_folder_local">ローカルのみ</string>
<string name="unfavorite">책갈피 해제</string>
<string name="common_rename">이름 바꾸기</string>
<string name="common_remove">삭제</string>
- <string name="confirmation_remove_alert">%1$s을(를) 삭제하시겠습니까?</string>
+ <string name="confirmation_remove_file_alert">%1$s을(를) 삭제하시겠습니까?</string>
<string name="confirmation_remove_folder_alert">%1$s 및 포함된 내용을 삭제하시겠습니까?</string>
<string name="confirmation_remove_local">로컬만</string>
<string name="confirmation_remove_folder_local">로컬만</string>
<string name="auth_unsupported_auth_method">De Server ënnerstëtzt dës Authentifizéierungsmethod net</string>
<string name="common_rename">Ëmbenennen</string>
<string name="common_remove">Läschen</string>
- <string name="confirmation_remove_alert">Wëlls du %1$s wierklech läschen?</string>
+ <string name="confirmation_remove_file_alert">Wëlls du %1$s wierklech läschen?</string>
<string name="confirmation_remove_folder_alert">Wëlls du %1$s an de ganzen Inhalt wierklech läschen?</string>
<string name="confirmation_remove_local">Nemme lokal</string>
<string name="confirmation_remove_folder_local">Nemme lokal</string>
<string name="unfavorite">Nebemėgti</string>
<string name="common_rename">Pervadinti</string>
<string name="common_remove">Pašalinti</string>
- <string name="confirmation_remove_alert">Ar tikrai norite pašalinti %1$s?</string>
+ <string name="confirmation_remove_file_alert">Ar tikrai norite pašalinti %1$s?</string>
<string name="confirmation_remove_folder_alert">Ar tikrai norite pašalinti %1$s ir ten esantį turinį?</string>
<string name="confirmation_remove_local">Tik vietiniai</string>
<string name="confirmation_remove_folder_local">Tik vietiniai</string>
<string name="auth_account_does_not_exist">Сметката сеуште не постои на овој уред</string>
<string name="common_rename">Преименувај</string>
<string name="common_remove">Отстрани</string>
- <string name="confirmation_remove_alert">Дали навистина сакаш да ја отстраниш %1$s?</string>
+ <string name="confirmation_remove_file_alert">Дали навистина сакаш да ја отстраниш %1$s?</string>
<string name="confirmation_remove_folder_alert">Дали навистина сакаш да го отстранам %1$s и неговата содржина?</string>
<string name="confirmation_remove_local">Само локално</string>
<string name="confirmation_remove_folder_local">Само локално</string>
<string name="unfavorite">Fjern favoritt</string>
<string name="common_rename">Endre navn</string>
<string name="common_remove">Fjern</string>
- <string name="confirmation_remove_alert">Vil du virkelig fjerne %1$s?</string>
+ <string name="confirmation_remove_file_alert">Vil du virkelig fjerne %1$s?</string>
<string name="confirmation_remove_folder_alert">Vil du virkelig fjerne %1$s inkludert innholdet?</string>
<string name="confirmation_remove_local">Kun lokalt</string>
<string name="confirmation_remove_folder_local">Kun lokalt</string>
- <string name="confirmation_remove_remote">Fra server</string>
+ <string name="confirmation_remove_file_remote">Fra server</string>
<string name="confirmation_remove_remote_and_local">Ekstern & lokal</string>
<string name="remove_success_msg">Fjerning var vellykket</string>
<string name="remove_fail_msg">Fjerning mislyktes</string>
<string name="unfavorite">Niet meer favoriet</string>
<string name="common_rename">Hernoemen</string>
<string name="common_remove">Verwijderen</string>
- <string name="confirmation_remove_alert">Wilt u %1$s werkelijk verwijderen?</string>
+ <string name="confirmation_remove_file_alert">Wilt u %1$s werkelijk verwijderen?</string>
<string name="confirmation_remove_folder_alert">Wilt u %1$s en de inhoud ervan werkelijk verwijderen?</string>
<string name="confirmation_remove_local">Alleen lokaal</string>
<string name="confirmation_remove_folder_local">Alleen lokaal</string>
- <string name="confirmation_remove_remote">Van server</string>
+ <string name="confirmation_remove_file_remote">Van server</string>
<string name="confirmation_remove_remote_and_local">Extern & lokaal</string>
<string name="remove_success_msg">Succesvol verwijderd</string>
<string name="remove_fail_msg">Verwijdering kon niet voltooid worden</string>
<string name="unfavorite">Suprimir dels favorits</string>
<string name="common_rename">Renomenar</string>
<string name="common_remove">Suprimir</string>
- <string name="confirmation_remove_alert">Sètz segur que volètz suprimir %1$s ?</string>
+ <string name="confirmation_remove_file_alert">Sètz segur que volètz suprimir %1$s ?</string>
<string name="confirmation_remove_folder_alert">Sètz segur que volètz suprimir %1$s e son contengut ?</string>
<string name="confirmation_remove_local">Local solament</string>
<string name="confirmation_remove_folder_local">Local solament</string>
- <string name="confirmation_remove_remote">Dempuèi lo servidor</string>
+ <string name="confirmation_remove_file_remote">Dempuèi lo servidor</string>
<string name="confirmation_remove_remote_and_local">Distant & local</string>
<string name="remove_success_msg">Supression efectuada amb succès</string>
<string name="remove_fail_msg">Supression impossibla</string>
<string name="unfavorite">Usuń z ulubionych</string>
<string name="common_rename">Zmień nazwę</string>
<string name="common_remove">Usuń</string>
- <string name="confirmation_remove_alert">Czy naprawdę chcesz usunąć %1$s?</string>
+ <string name="confirmation_remove_file_alert">Czy naprawdę chcesz usunąć %1$s?</string>
<string name="confirmation_remove_folder_alert">Czy naprawdę chcesz usunąć %1$s i jego zawartość?</string>
<string name="confirmation_remove_local">Tylko lokalnie</string>
<string name="confirmation_remove_folder_local">Tylko lokalnie</string>
- <string name="confirmation_remove_remote">Z serwera</string>
+ <string name="confirmation_remove_file_remote">Z serwera</string>
<string name="remove_success_msg">Usunięto</string>
<string name="remove_fail_msg">Nie można usunąć</string>
<string name="rename_dialog_title">Wprowadź nową nazwę</string>
<string name="unfavorite">Nãofavorito</string>
<string name="common_rename">Renomear</string>
<string name="common_remove">Remover</string>
- <string name="confirmation_remove_alert">Você realmente deseja remover %1$s?</string>
+ <string name="confirmation_remove_file_alert">Você realmente deseja remover %1$s?</string>
<string name="confirmation_remove_folder_alert">Você realmente deseja remover %1$s e seus conteúdos?</string>
<string name="confirmation_remove_local">Somente local</string>
<string name="confirmation_remove_folder_local">Somente local</string>
- <string name="confirmation_remove_remote">Do servidor</string>
+ <string name="confirmation_remove_file_remote">Do servidor</string>
<string name="confirmation_remove_remote_and_local">Remoto & local</string>
<string name="remove_success_msg">Removido com sucesso</string>
<string name="remove_fail_msg">Erro ao remover</string>
<string name="unfavorite">Retirar Favorito</string>
<string name="common_rename">Renomear</string>
<string name="common_remove">Remover</string>
- <string name="confirmation_remove_alert">Tem a certeza que deseja remover %1$s ?</string>
+ <string name="confirmation_remove_file_alert">Tem a certeza que deseja remover %1$s ?</string>
<string name="confirmation_remove_folder_alert">Deseja realmente remover %1$s e o seu conteúdo?</string>
<string name="confirmation_remove_local">Apenas localmente</string>
<string name="confirmation_remove_folder_local">Apenas localmente</string>
- <string name="confirmation_remove_remote">Do servidor</string>
+ <string name="confirmation_remove_file_remote">Do servidor</string>
<string name="confirmation_remove_remote_and_local">Remoto & local</string>
<string name="remove_success_msg">Removido com sucesso</string>
<string name="remove_fail_msg">Não foi possível remover</string>
<string name="unfavorite">Defavoritați</string>
<string name="common_rename">Redenumește</string>
<string name="common_remove">Elimină</string>
- <string name="confirmation_remove_alert">Doriti sigur sa stergeti %1$s?</string>
+ <string name="confirmation_remove_file_alert">Doriti sigur sa stergeti %1$s?</string>
<string name="confirmation_remove_folder_alert">Sigur vrei să elimini %1$s și conținutul său?</string>
<string name="confirmation_remove_local">Doar local</string>
<string name="confirmation_remove_folder_local">Doar local</string>
- <string name="confirmation_remove_remote">De pe server</string>
+ <string name="confirmation_remove_file_remote">De pe server</string>
<string name="confirmation_remove_remote_and_local">Ambele</string>
<string name="remove_success_msg">Eliminat cu succes</string>
<string name="remove_fail_msg">Eliminarea nu a reușit</string>
<string name="fd_keep_in_sync">Обновлять файл</string>
<string name="common_rename">Переименовать</string>
<string name="common_remove">Удалить</string>
- <string name="confirmation_remove_alert">Вы действительно хотите удалить %1$s?</string>
+ <string name="confirmation_remove_file_alert">Вы действительно хотите удалить %1$s?</string>
<string name="confirmation_remove_folder_alert">Вы действительно хотите удалить %1$s и все содержимое ?</string>
<string name="confirmation_remove_local">Только локально</string>
<string name="confirmation_remove_folder_local">Только локальное содержимое</string>
- <string name="confirmation_remove_remote">Удалить с сервера</string>
+ <string name="confirmation_remove_file_remote">Удалить с сервера</string>
<string name="confirmation_remove_remote_and_local">Оба, удаленный и локальный</string>
<string name="remove_success_msg">Успешное удаление</string>
<string name="remove_fail_msg">Удаление не может быть завершено</string>
<string name="unfavorite">Убрать из избранного</string>
<string name="common_rename">Переименовать</string>
<string name="common_remove">Удалить</string>
- <string name="confirmation_remove_alert">Вы действительно хотите удалить %1$s?</string>
+ <string name="confirmation_remove_file_alert">Вы действительно хотите удалить %1$s?</string>
<string name="confirmation_remove_folder_alert">Вы действительно хотите удалить %1$s и его содержимое?</string>
<string name="confirmation_remove_local">Только локально</string>
<string name="confirmation_remove_folder_local">Только локально</string>
<string name="unfavorite">Odobrať z obľúbených</string>
<string name="common_rename">Premenuj</string>
<string name="common_remove">Odober</string>
- <string name="confirmation_remove_alert">Naozaj chcete odstrániť %1$s?</string>
+ <string name="confirmation_remove_file_alert">Naozaj chcete odstrániť %1$s?</string>
<string name="confirmation_remove_folder_alert">Naozaj chcete odstrániť %1$s a jeho obsah?</string>
<string name="confirmation_remove_local">Iba lokálne</string>
<string name="confirmation_remove_folder_local">Iba lokálne</string>
- <string name="confirmation_remove_remote">Zo servera</string>
+ <string name="confirmation_remove_file_remote">Zo servera</string>
<string name="confirmation_remove_remote_and_local">Vzdialene aj lokálne</string>
<string name="remove_success_msg">Úspešne odstránené</string>
<string name="remove_fail_msg">Odstránenie zlyhalo</string>
<string name="unfavorite">Odstrani priljubljeno</string>
<string name="common_rename">Preimenuj</string>
<string name="common_remove">Odstrani</string>
- <string name="confirmation_remove_alert">Ali res želite odstraniti %1$s?</string>
+ <string name="confirmation_remove_file_alert">Ali res želite odstraniti %1$s?</string>
<string name="confirmation_remove_folder_alert">Ali res želite odstraniti %1$s skupaj s celotno vsebino?</string>
<string name="confirmation_remove_local">Le krajevno</string>
<string name="confirmation_remove_folder_local">Le krajevno</string>
- <string name="confirmation_remove_remote">S strežnika</string>
+ <string name="confirmation_remove_file_remote">S strežnika</string>
<string name="confirmation_remove_remote_and_local">Oddaljeno & krajevno</string>
<string name="remove_success_msg">Odstranitev je uspešno končana</string>
<string name="remove_fail_msg">Odstranjevanje je spodletelo</string>
<string name="unfavorite">Неомиљени</string>
<string name="common_rename">Преименуј</string>
<string name="common_remove">Уклони</string>
- <string name="confirmation_remove_alert">Желите да уклоните %1$s?</string>
+ <string name="confirmation_remove_file_alert">Желите да уклоните %1$s?</string>
<string name="confirmation_remove_folder_alert">Желите да уклоните %1$s и њен садржај?</string>
<string name="confirmation_remove_local">Само локално</string>
<string name="confirmation_remove_folder_local">Само локално</string>
<string name="unfavorite">Avfavoritisera</string>
<string name="common_rename">Byt namn</string>
<string name="common_remove">Radera</string>
- <string name="confirmation_remove_alert">Vill du verkligen ta bort %1$s?</string>
+ <string name="confirmation_remove_file_alert">Vill du verkligen ta bort %1$s?</string>
<string name="confirmation_remove_folder_alert">Vill du verkligen ta bort %1$s och dess innehåll?</string>
<string name="confirmation_remove_local">Endast lokalt</string>
<string name="confirmation_remove_folder_local">Endast lokalt</string>
<string name="unfavorite">ออกจากรายการโปรด</string>
<string name="common_rename">เปลี่ยนชื่อ</string>
<string name="common_remove">ลบออก</string>
- <string name="confirmation_remove_alert">คุณต้องการที่จะลบ %1$s?</string>
+ <string name="confirmation_remove_file_alert">คุณต้องการที่จะลบ %1$s?</string>
<string name="confirmation_remove_folder_alert">คุณต้องการที่จะลบ %1$s และเนื้อหาของมัน?</string>
<string name="confirmation_remove_local">เฉพาะต้นทางเท่านั้น</string>
<string name="confirmation_remove_folder_local">เฉพาะต้นทางเท่านั้น</string>
- <string name="confirmation_remove_remote">จากเซิฟเวอร์</string>
+ <string name="confirmation_remove_file_remote">จากเซิฟเวอร์</string>
<string name="confirmation_remove_remote_and_local">รีโมท & ต้นทาง</string>
<string name="remove_success_msg">ลบเรียบร้อยแล้ว</string>
<string name="remove_fail_msg">ไม่สามารถลบได้</string>
<string name="unfavorite">Favoriden kaldır</string>
<string name="common_rename">Yeniden adlandır</string>
<string name="common_remove">Kaldır</string>
- <string name="confirmation_remove_alert">Gerçekten %1$s dosyasını kaldırmak istiyor musunuz?</string>
+ <string name="confirmation_remove_file_alert">Gerçekten %1$s dosyasını kaldırmak istiyor musunuz?</string>
<string name="confirmation_remove_folder_alert">Gerçekten %1$s ve içeriğini kaldırmak istediğinizden emin misiniz?</string>
<string name="confirmation_remove_local">Sadece yerel</string>
<string name="confirmation_remove_folder_local">Sadece yerel</string>
- <string name="confirmation_remove_remote">Sunucudan</string>
+ <string name="confirmation_remove_file_remote">Sunucudan</string>
<string name="confirmation_remove_remote_and_local">Uzak ve yerel</string>
<string name="remove_success_msg">Kaldırma başarılı</string>
<string name="remove_fail_msg">Kaldırma başarısız</string>
<string name="unfavorite">Прибрати з вибраного</string>
<string name="common_rename">Перейменувати</string>
<string name="common_remove">Видалити</string>
- <string name="confirmation_remove_alert">Ви дійсно бажаєте видалити %1$s?</string>
+ <string name="confirmation_remove_file_alert">Ви дійсно бажаєте видалити %1$s?</string>
<string name="confirmation_remove_folder_alert">Ви дійсно бажаєте видалити %1$s та весь вміст?</string>
<string name="confirmation_remove_local">Лише локально</string>
<string name="confirmation_remove_folder_local">Лише локально</string>
<string name="unfavorite">取消收藏</string>
<string name="common_rename">重命名</string>
<string name="common_remove">删除</string>
- <string name="confirmation_remove_alert">你确定要删除 %1$s 吗?</string>
+ <string name="confirmation_remove_file_alert">你确定要删除 %1$s 吗?</string>
<string name="confirmation_remove_folder_alert">您确定要删除 %1$s 及其内容吗?</string>
<string name="confirmation_remove_local">仅本地</string>
<string name="confirmation_remove_folder_local">仅本地</string>
- <string name="confirmation_remove_remote">来自服务器</string>
+ <string name="confirmation_remove_file_remote">来自服务器</string>
<string name="confirmation_remove_remote_and_local">远程 & 本地</string>
<string name="remove_success_msg">成功删除</string>
<string name="remove_fail_msg">无法完成删除</string>
<string name="unfavorite">不喜愛的</string>
<string name="common_rename">重新命名</string>
<string name="common_remove">移除</string>
- <string name="confirmation_remove_alert">您真的要移除 %1$s ?</string>
+ <string name="confirmation_remove_file_alert">您真的要移除 %1$s ?</string>
<string name="confirmation_remove_folder_alert">您真的要移除 %1$s 與裡頭的檔案?</string>
<string name="confirmation_remove_local">只有本地</string>
<string name="confirmation_remove_folder_local">只有本地</string>
- <string name="confirmation_remove_remote">來自伺服器</string>
+ <string name="confirmation_remove_file_remote">來自伺服器</string>
<string name="confirmation_remove_remote_and_local">遠端 & 本地</string>
<string name="remove_success_msg">成功地移除</string>
<string name="remove_fail_msg">刪除失敗</string>
<!-- Colors -->
<color name="login_background_color">#FFFFFF</color>
<color name="login_logo_background_color">#FFFFFF</color>
- <color name="background_color">#F7F7F7</color>
+ <color name="background_color">#FFFFFF</color>
<color name="actionbar_start_color">#1D2D44</color>
<color name="actionbar_end_color">#1D2D44</color>
<string name="unfavorite">Unfavorite</string>
<string name="common_rename">Rename</string>
<string name="common_remove">Remove</string>
- <string name="confirmation_remove_alert">"Do you really want to remove %1$s?"</string>
+ <string name="confirmation_remove_file_alert">"Do you really want to remove %1$s?"</string>
<string name="confirmation_remove_folder_alert">"Do you really want to remove %1$s and its contents?"</string>
<string name="confirmation_remove_local">Local only</string>
<string name="confirmation_remove_folder_local">Local only</string>
- <string name="confirmation_remove_remote">From server</string>
+ <string name="confirmation_remove_file_remote">From server</string>
<string name="confirmation_remove_remote_and_local">Remote & local</string>
<string name="remove_success_msg">"Removal succeeded"</string>
<string name="remove_fail_msg">"Removal failed"</string>
<string name="pref_behaviour_entries_copy">copy file to OC folder</string>
<string name="pref_behaviour_entries_move">move file to OC folder</string>
<string name="pref_behaviour_entries_delete">delete origin file</string>
+ <string name="confirmation_remove_files_alert">Do you really want to remove selected items?</string>
+ <string name="confirmation_remove_folders_alert">Do you really want to remove a folder and its content?</string>
+ <string name="confirmation_remove_files">selected items</string>
</resources>
import com.owncloud.android.lib.common.utils.Log_OC;
import java.io.File;
-import java.util.Enumeration;
import third_parties.daveKoeller.AlphanumComparator;
public class OCFile implements Parcelable, Comparable<OCFile> {
- public static final Parcelable.Creator<OCFile> CREATOR = new Parcelable.Creator<OCFile>() {
- @Override
+ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public OCFile createFromParcel(Parcel source) {
return new OCFile(source);
}
- @Override
public OCFile[] newArray(int size) {
return new OCFile[size];
}
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.ArrayList;
+
/**
*
*/
}
}
+ public void syncFiles(ArrayList<OCFile> files) {
+ for (OCFile file: files) {
+ syncFile(file);
+ }
+ }
public void syncFile(OCFile file) {
-
- if (!file.isFolder()){
+ if (!file.isFolder()) {
Intent intent = new Intent(mFileActivity, OperationsService.class);
intent.setAction(OperationsService.ACTION_SYNC_FILE);
intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
intent.putExtra(OperationsService.EXTRA_SYNC_FILE_CONTENTS, true);
mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(intent);
mFileActivity.showLoadingDialog();
-
+
} else {
Intent intent = new Intent(mFileActivity, OperationsService.class);
intent.setAction(OperationsService.ACTION_SYNC_FOLDER);
}
}
+ public void toggleFavorites(ArrayList<OCFile> files, boolean isFavorite){
+ for (OCFile file: files) {
+ toggleFavorite(file, isFavorite);
+ }
+ }
+
public void toggleFavorite(OCFile file, boolean isFavorite) {
file.setFavorite(isFavorite);
mFileActivity.getStorageManager().saveFile(file);
service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service);
- mFileActivity.showLoadingDialog();
+ // TODO Tobi loading dialog?
+ // mFileActivity.showLoadingDialog();
}
/**
*/
public void showLoadingDialog() {
// Construct dialog
- LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment));
- FragmentManager fm = getSupportFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- loading.show(ft, DIALOG_WAIT_TAG);
-
+ Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG);
+ if (frag == null) {
+ Log_OC.d(TAG, "show loading dialog");
+ LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment));
+ FragmentManager fm = getSupportFragmentManager();
+ FragmentTransaction ft = fm.beginTransaction();
+ loading.show(ft, DIALOG_WAIT_TAG);
+ fm.executePendingTransactions();
+ }
}
public void dismissLoadingDialog() {
Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG);
if (frag != null) {
+ Log_OC.d(TAG, "dismiss loading dialog");
LoadingDialog loading = (LoadingDialog) frag;
loading.dismiss();
}
import android.accounts.AccountManager;
import android.accounts.AuthenticatorException;
import android.annotation.TargetApi;
+import android.os.Parcelable;
import android.support.v7.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import com.owncloud.android.utils.UriUtils;
import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
/**
* Displays, what files the user has available in his ownCloud.
*/
private void requestMoveOperation(Intent data, int resultCode) {
OCFile folderToMoveAt = (OCFile) data.getParcelableExtra(FolderPickerActivity.EXTRA_FOLDER);
- OCFile targetFile = (OCFile) data.getParcelableExtra(FolderPickerActivity.EXTRA_FILE);
- getFileOperationsHelper().moveFile(folderToMoveAt, targetFile);
+
+ ArrayList<OCFile> files = data.getParcelableArrayListExtra(FolderPickerActivity.EXTRA_FILES);
+
+ for (Parcelable file : files) {
+ getFileOperationsHelper().moveFile(folderToMoveAt, (OCFile) file);
+ }
}
/**
*/
private void requestCopyOperation(Intent data, int resultCode) {
OCFile folderToMoveAt = data.getParcelableExtra(FolderPickerActivity.EXTRA_FOLDER);
- OCFile targetFile = data.getParcelableExtra(FolderPickerActivity.EXTRA_FILE);
- getFileOperationsHelper().copyFile(folderToMoveAt, targetFile);
+
+ ArrayList<OCFile> files = data.getParcelableArrayListExtra(FolderPickerActivity.EXTRA_FILES);
+
+ for (Parcelable file : files) {
+ getFileOperationsHelper().copyFile(folderToMoveAt, (OCFile) file);
+ }
}
@Override
import com.owncloud.android.ui.fragment.OCFileListFragment;
import com.owncloud.android.utils.ErrorMessageAdapter;
+import java.util.ArrayList;
+
public class FolderPickerActivity extends FileActivity implements FileFragment.ContainerActivity,
OnClickListener, OnEnforceableRefreshListener {
+ ".EXTRA_FOLDER";
public static final String EXTRA_FILE = UploadFilesActivity.class.getCanonicalName()
+ ".EXTRA_FILE";
+ public static final String EXTRA_FILES = UploadFilesActivity.class.getCanonicalName()
+ + ".EXTRA_FILES";
//TODO: Think something better
private SyncBroadcastReceiver mSyncBroadcastReceiver;
} else if (v == mChooseBtn) {
Intent i = getIntent();
Parcelable targetFile = i.getParcelableExtra(FolderPickerActivity.EXTRA_FILE);
+ ArrayList<Parcelable> targetFiles = i.getParcelableArrayListExtra(FolderPickerActivity.EXTRA_FILES);
Intent data = new Intent();
data.putExtra(EXTRA_FOLDER, getCurrentFolder());
if (targetFile != null) {
data.putExtra(EXTRA_FILE, targetFile);
}
+ if (targetFiles != null){
+ data.putParcelableArrayListExtra(EXTRA_FILES, targetFiles);
+ }
setResult(RESULT_OK, data);
finish();
}
\r
\r
import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
import java.util.Vector;\r
\r
import android.accounts.Account;\r
import android.content.Context;\r
import android.content.SharedPreferences;\r
import android.graphics.Bitmap;\r
+import android.graphics.Color;\r
import android.os.Build;\r
import android.preference.PreferenceManager;\r
import android.text.format.DateUtils;\r
private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM };\r
\r
private SharedPreferences mAppPreferences;\r
+\r
+ private HashMap<Integer, Boolean> mSelection = new HashMap<Integer, Boolean>();\r
\r
public FileListListAdapter(\r
boolean justFolders, \r
TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
TextView fileSizeSeparatorV = (TextView) view.findViewById(R.id.file_separator);\r
TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
- ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
+\r
\r
lastModV.setVisibility(View.VISIBLE);\r
lastModV.setText(showRelativeTimestamp(file));\r
\r
- checkBoxV.setVisibility(View.GONE);\r
\r
fileSizeSeparatorV.setVisibility(View.VISIBLE);\r
fileSizeV.setVisibility(View.VISIBLE);\r
\r
break;\r
}\r
+\r
+ ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
+ checkBoxV.setVisibility(View.GONE);\r
+\r
+ AbsListView parentList = (AbsListView)parent;\r
+ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
+ if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
+ checkBoxV.setVisibility(View.GONE);\r
+ } else if (parentList.getCheckedItemCount() > 0){\r
+ if (parentList.isItemChecked(position)) {\r
+ checkBoxV.setImageResource(\r
+ android.R.drawable.checkbox_on_background);\r
+ } else {\r
+ checkBoxV.setImageResource(\r
+ android.R.drawable.checkbox_off_background);\r
+ }\r
+ checkBoxV.setVisibility(View.VISIBLE);\r
+ }\r
+ }\r
\r
// For all Views\r
\r
}\r
}\r
\r
+ if (mSelection.get(position) != null) {\r
+ view.setBackgroundColor(Color.rgb(248, 248, 248));\r
+ } else {\r
+ view.setBackgroundColor(Color.WHITE);\r
+ }\r
+\r
return view;\r
}\r
\r
public boolean isGridMode() {\r
return mGridMode;\r
}\r
+\r
+ public void setNewSelection(int position, boolean checked) {\r
+ mSelection.put(position, checked);\r
+ notifyDataSetChanged();\r
+ }\r
+\r
+ public void removeSelection(int position) {\r
+ mSelection.remove(position);\r
+ notifyDataSetChanged();\r
+ }\r
+\r
+ public void removeSelection(){\r
+ mSelection.clear();\r
+ notifyDataSetChanged();\r
+ }\r
+\r
+ public ArrayList<Integer> getCheckedItemPositions() {\r
+ ArrayList<Integer> ids = new ArrayList<Integer>();\r
+\r
+ for (Map.Entry<Integer, Boolean> entry : mSelection.entrySet()){\r
+ if (entry.getValue()){\r
+ ids.add(entry.getKey());\r
+ }\r
+ }\r
+ return ids;\r
+ }\r
+\r
+ public ArrayList<OCFile> getCheckedItems() {\r
+ ArrayList<OCFile> files = new ArrayList<OCFile>();\r
+\r
+ for (Map.Entry<Integer, Boolean> entry : mSelection.entrySet()){\r
+ if (entry.getValue()){\r
+ files.add((OCFile) getItem(entry.getKey()));\r
+ }\r
+ }\r
+ return files;\r
+ }\r
}\r
* Listener interface for the file action fragment.
*/
public interface FileActionsDialogFragmentListener {
+ // TODO Tobi change to int array?
public boolean onFileActionChosen(int menuId, int filePosition);
}
RemoveFileDialogFragment frag = new RemoveFileDialogFragment();
Bundle args = new Bundle();
- int messageStringId = R.string.confirmation_remove_alert;
+ int messageStringId = R.string.confirmation_remove_file_alert;
- int posBtn = R.string.confirmation_remove_remote;
+ int posBtn = R.string.confirmation_remove_file_remote;
int negBtn = -1;
if (file.isFolder()) {
messageStringId = R.string.confirmation_remove_folder_alert;
--- /dev/null
+/**
+ * ownCloud Android client application
+ *
+ * @author David A. Velasco
+ * Copyright (C) 2015 ownCloud Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package com.owncloud.android.ui.dialog;
+
+/**
+ * Dialog requiring confirmation before removing a given OCFile.
+ *
+ * Triggers the removal according to the user response.
+ */
+
+import android.app.Dialog;
+import android.content.res.Resources;
+import android.os.Bundle;
+
+import com.owncloud.android.MainApp;
+import com.owncloud.android.R;
+import com.owncloud.android.datamodel.FileDataStorageManager;
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.ui.activity.ComponentsGetter;
+import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
+
+import java.util.ArrayList;
+import java.util.Vector;
+
+public class RemoveFilesDialogFragment extends ConfirmationDialogFragment
+implements ConfirmationDialogFragmentListener {
+
+ private ArrayList<OCFile> mTargetFiles;
+
+ private static final String ARG_TARGET_FILES = "TARGET_FILES";
+
+ /**
+ * Public factory method to create new RemoveFileDialogFragment instances.
+ *
+ * @param files Files to remove.
+ * @return Dialog ready to show.
+ */
+ public static RemoveFilesDialogFragment newInstance(ArrayList<OCFile> files) {
+ RemoveFilesDialogFragment frag = new RemoveFilesDialogFragment();
+ Bundle args = new Bundle();
+
+ int messageStringId = R.string.confirmation_remove_files_alert;
+
+ int posBtn = R.string.confirmation_remove_file_remote;
+ int negBtn = -1;
+
+ boolean containsFolder = false;
+ boolean containsDown = false;
+ for (OCFile file: files) {
+ if (file.isFolder()) containsFolder = true;
+ if (file.isDown()) containsDown = true;
+ }
+
+ if (containsFolder) {
+ messageStringId = R.string.confirmation_remove_folders_alert;
+ posBtn = R.string.confirmation_remove_remote_and_local;
+ negBtn = R.string.confirmation_remove_local;
+ } else if (containsDown) {
+ posBtn = R.string.confirmation_remove_remote_and_local;
+ negBtn = R.string.confirmation_remove_local;
+ }
+
+ args.putInt(ARG_CONF_RESOURCE_ID, messageStringId);
+ args.putStringArray(ARG_CONF_ARGUMENTS, new String[]{MainApp.getAppContext().getString(R.string.confirmation_remove_files)});
+ args.putInt(ARG_POSITIVE_BTN_RES, posBtn);
+ args.putInt(ARG_NEUTRAL_BTN_RES, R.string.common_no);
+ args.putInt(ARG_NEGATIVE_BTN_RES, negBtn);
+ args.putParcelableArrayList(ARG_TARGET_FILES, files);
+ frag.setArguments(args);
+
+ return frag;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ Dialog dialog = super.onCreateDialog(savedInstanceState);
+ mTargetFiles = getArguments().getParcelableArrayList(ARG_TARGET_FILES);
+
+ setOnConfirmationListener(this);
+
+ return dialog;
+ }
+
+ /**
+ * Performs the removal of the target file, both locally and in the server.
+ */
+ @Override
+ public void onConfirmation(String callerTag) {
+ ComponentsGetter cg = (ComponentsGetter) getActivity();
+ FileDataStorageManager storageManager = cg.getStorageManager();
+ for (OCFile targetFile : mTargetFiles) {
+ if (storageManager.getFileById(targetFile.getFileId()) != null) {
+ cg.getFileOperationsHelper().removeFile(targetFile, false);
+ }
+ }
+ }
+
+ /**
+ * Performs the removal of the local copy of the target file
+ */
+ @Override
+ public void onCancel(String callerTag) {
+ ComponentsGetter cg = (ComponentsGetter) getActivity();
+
+ for (OCFile targetFile : mTargetFiles) {
+ cg.getFileOperationsHelper().removeFile(targetFile, true);
+
+ FileDataStorageManager storageManager = cg.getStorageManager();
+
+ boolean containsFavorite = false;
+ if (targetFile.isFolder()) {
+ // TODO Enable when "On Device" is recovered ?
+ Vector<OCFile> files = storageManager.getFolderContent(targetFile/*, false*/);
+ for (OCFile file : files) {
+ containsFavorite = file.isFavorite() || containsFavorite;
+
+ if (containsFavorite)
+ break;
+ }
+ }
+
+ // Remove etag for parent, if file is a favorite
+ // or is a folder and contains favorite
+ if (targetFile.isFavorite() || containsFavorite) {
+ OCFile folder = null;
+ if (targetFile.isFolder()) {
+ folder = targetFile;
+ } else {
+ folder = storageManager.getFileById(targetFile.getParentId());
+ }
+
+ folder.setEtag("");
+ storageManager.saveFile(folder);
+ }
+ }
+ }
+
+ @Override
+ public void onNeutral(String callerTag) {
+ // nothing to do here
+ }
+}
\ No newline at end of file
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
+import android.view.ActionMode;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
Bundle savedInstanceState) {
Log_OC.d(TAG, "onCreateView");
+ // TODO Tobi remove
+// AbsListView.MultiChoiceModeListener listener = new AbsListView.MultiChoiceModeListener() {
+// @Override
+// public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
+// // Capture total checked items
+// final int checkedCount = mListView.getCheckedItemCount();
+// // Set the CAB title according to total checked items
+// mode.setTitle(checkedCount + " Selected");
+// // Calls toggleSelection method from ListViewAdapter Class
+// // mAdapter.toggleSelection(position);
+//
+// if (checked){
+// mAdapter.setNewSelection(position,checked);
+// } else {
+// mAdapter.removeSelection(position);
+// }
+// }
+//
+// @Override
+// public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+// mode.getMenuInflater().inflate(R.menu.context, menu);
+// return true;
+// }
+//
+// @Override
+// public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+// return false;
+// }
+//
+// @Override
+// public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+// return false;
+// }
+//
+// @Override
+// public void onDestroyActionMode(ActionMode mode) {
+// // mAdapter.removeSelection();
+// }
+// };
+
View v = inflater.inflate(R.layout.list_fragment, null);
mListView = (ExtendedListView)(v.findViewById(R.id.list_root));
mListView.setOnItemClickListener(this);
+ mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+ // mListView.setMultiChoiceModeListener(listener);
mListFooterView = inflater.inflate(R.layout.list_footer, null, false);
mGridView = (GridViewWithHeaderAndFooter) (v.findViewById(R.id.grid_root));
mGridView.setNumColumns(GridView.AUTO_FIT);
mGridView.setOnItemClickListener(this);
+ mGridView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+
+ // mGridView.setMultiChoiceModeListener(listener);
+
mGridFooterView = inflater.inflate(R.layout.list_footer, null, false);
if (savedInstanceState != null) {
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.widget.SwipeRefreshLayout;
-import android.view.ContextMenu;
+import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
+import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.PopupMenu;
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
import com.owncloud.android.ui.dialog.FileActionsDialogFragment;
import com.owncloud.android.ui.dialog.RemoveFileDialogFragment;
+import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
import com.owncloud.android.ui.dialog.UploadSourceDialogFragment;
import com.owncloud.android.ui.preview.PreviewImageFragment;
import com.owncloud.android.ui.preview.PreviewTextFragment;
import java.io.File;
+import java.util.ArrayList;
/**
* A Fragment that lists all files and folders in a given path.
*
* TODO refactor to get rid of direct dependency on FileDisplayActivity
*/
-public class OCFileListFragment extends ExtendedListFragment implements FileActionsDialogFragment.FileActionsDialogFragmentListener {
+public class OCFileListFragment extends ExtendedListFragment {
private static final String TAG = OCFileListFragment.class.getSimpleName();
}
private void registerLongClickListener() {
- getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
- public boolean onItemLongClick(AdapterView<?> arg0, View v,
- int index, long arg3) {
- showFileAction(index);
+ getListView().setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
+ private Menu menu;
+
+ @Override
+ public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
+ final int checkedCount = getListView().getCheckedItemCount();
+ // TODO Tobi extract to values
+ mode.setTitle(checkedCount + " selected");
+
+ if (checked) {
+ mAdapter.setNewSelection(position, checked);
+ } else {
+ mAdapter.removeSelection(position);
+ }
+
+ // TODO maybe change: only recreate menu if count changes
+ menu.clear();
+ if (checkedCount == 1) {
+ createContextMenu(menu);
+ } else {
+ // download, move, copy, delete
+ getActivity().getMenuInflater().inflate(R.menu.multiple_file_actions_menu, menu);
+ }
+
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ this.menu = menu;
return true;
}
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ return false;
+ }
+
+ @Override
+ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ return onFileActionChosen(item.getItemId());
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {
+ mAdapter.removeSelection();
+ }
});
}
+
private void showFileAction(int fileIndex) {
Bundle args = getArguments();
PopupMenu pm = new PopupMenu(getActivity(),null);
/**
* {@inheritDoc}
*/
- @Override
- public void onCreateContextMenu(
- ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+ // TODO Tobi needed?
+ public void createContextMenu(Menu menu) {
Bundle args = getArguments();
boolean allowContextualActions =
(args == null) ? true : args.getBoolean(ARG_ALLOW_CONTEXTUAL_ACTIONS, true);
if (allowContextualActions) {
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.file_actions_menu, menu);
- AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
- OCFile targetFile = (OCFile) mAdapter.getItem(info.position);
+ OCFile targetFile = null;
+ if (mAdapter.getCheckedItems().size() == 1){
+ targetFile = mAdapter.getCheckedItems().get(0);
+ }
if (mContainerActivity.getStorageManager() != null) {
FileMenuFilter mf = new FileMenuFilter(
}
}
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean onFileActionChosen(int menuId, int filePosition) {
- mTargetFile = (OCFile) mAdapter.getItem(filePosition);
- switch (menuId) {
- case R.id.action_share_file: {
- mContainerActivity.getFileOperationsHelper().shareFileWithLink(mTargetFile);
- return true;
- }
- case R.id.action_open_file_with: {
- mContainerActivity.getFileOperationsHelper().openFile(mTargetFile);
- return true;
- }
- case R.id.action_unshare_file: {
- mContainerActivity.getFileOperationsHelper().unshareFileWithLink(mTargetFile);
- return true;
- }
- case R.id.action_rename_file: {
- RenameFileDialogFragment dialog = RenameFileDialogFragment.newInstance(mTargetFile);
- dialog.show(getFragmentManager(), FileDetailFragment.FTAG_RENAME_FILE);
- return true;
- }
- case R.id.action_remove_file: {
- RemoveFileDialogFragment dialog = RemoveFileDialogFragment.newInstance(mTargetFile);
- dialog.show(getFragmentManager(), ConfirmationDialogFragment.FTAG_CONFIRMATION);
- return true;
- }
- case R.id.action_download_file:
- case R.id.action_sync_file: {
- mContainerActivity.getFileOperationsHelper().syncFile(mTargetFile);
- return true;
- }
- case R.id.action_cancel_download:
- case R.id.action_cancel_upload: {
- ((FileDisplayActivity) mContainerActivity).cancelTransference(mTargetFile);
- return true;
- }
- case R.id.action_see_details: {
- mContainerActivity.showDetails(mTargetFile);
- return true;
- }
- case R.id.action_send_file: {
- // Obtain the file
- if (!mTargetFile.isDown()) { // Download the file
- Log_OC.d(TAG, mTargetFile.getRemotePath() + " : File must be downloaded");
- ((FileDisplayActivity) mContainerActivity).startDownloadForSending(mTargetFile);
+ public boolean onFileActionChosen(int menuId) {
+ if (mAdapter.getCheckedItems().size() == 1){
+ OCFile mTargetFile = mAdapter.getCheckedItems().get(0);
- } else {
- mContainerActivity.getFileOperationsHelper().sendDownloadedFile(mTargetFile);
+ switch (menuId) {
+ case R.id.action_share_file: {
+ mContainerActivity.getFileOperationsHelper().shareFileWithLink(mTargetFile);
+ return true;
}
- return true;
- }
- case R.id.action_move: {
- Intent action = new Intent(getActivity(), FolderPickerActivity.class);
+ case R.id.action_open_file_with: {
+ mContainerActivity.getFileOperationsHelper().openFile(mTargetFile);
+ return true;
+ }
+ case R.id.action_unshare_file: {
+ mContainerActivity.getFileOperationsHelper().unshareFileWithLink(mTargetFile);
+ return true;
+ }
+ case R.id.action_rename_file: {
+ RenameFileDialogFragment dialog = RenameFileDialogFragment.newInstance(mTargetFile);
+ dialog.show(getFragmentManager(), FileDetailFragment.FTAG_RENAME_FILE);
+ return true;
+ }
+ case R.id.action_remove_file: {
+ RemoveFileDialogFragment dialog = RemoveFileDialogFragment.newInstance(mTargetFile);
+ dialog.show(getFragmentManager(), ConfirmationDialogFragment.FTAG_CONFIRMATION);
+ return true;
+ }
+ case R.id.action_download_file:
+ case R.id.action_sync_file: {
+ mContainerActivity.getFileOperationsHelper().syncFile(mTargetFile);
+ return true;
+ }
+ case R.id.action_cancel_download:
+ case R.id.action_cancel_upload: {
+ ((FileDisplayActivity) mContainerActivity).cancelTransference(mTargetFile);
+ return true;
+ }
+ case R.id.action_see_details: {
+ mContainerActivity.showDetails(mTargetFile);
+ return true;
+ }
+ case R.id.action_send_file: {
+ // Obtain the file
+ if (!mTargetFile.isDown()) { // Download the file
+ Log_OC.d(TAG, mTargetFile.getRemotePath() + " : File must be downloaded");
+ ((FileDisplayActivity) mContainerActivity).startDownloadForSending(mTargetFile);
- // Pass mTargetFile that contains info of selected file/folder
- action.putExtra(FolderPickerActivity.EXTRA_FILE, mTargetFile);
- getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES);
- return true;
- }
- case R.id.action_favorite_file: {
- mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, true);
- return true;
- }
- case R.id.action_unfavorite_file: {
- mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, false);
- return true;
+ } else {
+ mContainerActivity.getFileOperationsHelper().sendDownloadedFile(mTargetFile);
+ }
+ return true;
+ }
+ case R.id.action_move: {
+ Intent action = new Intent(getActivity(), FolderPickerActivity.class);
+ ArrayList files = new ArrayList();
+ files.add(mTargetFile);
+ action.putParcelableArrayListExtra(FolderPickerActivity.EXTRA_FILES, files);
+ getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES);
+ return true;
+ }
+ case R.id.action_favorite_file: {
+ mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, true);
+ return true;
+ }
+ case R.id.action_unfavorite_file: {
+ mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, false);
+ return true;
+ }
+ case R.id.action_copy:
+ Intent action = new Intent(getActivity(), FolderPickerActivity.class);
+
+ // Pass mTargetFile that contains info of selected file/folder
+ action.putExtra(FolderPickerActivity.EXTRA_FILE, mTargetFile);
+ getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_COPY_FILES);
+ return true;
+ default:
+ return false;
}
- case R.id.action_copy:
- Intent action = new Intent(getActivity(), FolderPickerActivity.class);
+ } else {
+ ArrayList<OCFile> mTargetFiles = mAdapter.getCheckedItems();
- // Pass mTargetFile that contains info of selected file/folder
- action.putExtra(FolderPickerActivity.EXTRA_FILE, mTargetFile);
- getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_COPY_FILES);
- return true;
- default:
- return false;
+ switch (menuId) {
+ case R.id.action_remove_file: {
+ RemoveFilesDialogFragment dialog = RemoveFilesDialogFragment.newInstance(mTargetFiles);
+ dialog.show(getFragmentManager(), ConfirmationDialogFragment.FTAG_CONFIRMATION);
+ return true;
+ }
+ case R.id.action_download_file:
+ case R.id.action_sync_file: {
+ mContainerActivity.getFileOperationsHelper().syncFiles(mTargetFiles);
+ return true;
+ }
+ case R.id.action_move: {
+ Intent action = new Intent(getActivity(), FolderPickerActivity.class);
+ action.putParcelableArrayListExtra(FolderPickerActivity.EXTRA_FILES, mTargetFiles);
+ getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES);
+ return true;
+ }
+ case R.id.action_favorite_file: {
+ mContainerActivity.getFileOperationsHelper().toggleFavorites(mTargetFiles, true);
+ return true;
+ }
+ case R.id.action_unfavorite_file: {
+ mContainerActivity.getFileOperationsHelper().toggleFavorites(mTargetFiles, false);
+ return true;
+ }
+ case R.id.action_copy:
+ Intent action = new Intent(getActivity(), FolderPickerActivity.class);
+ action.putParcelableArrayListExtra(FolderPickerActivity.EXTRA_FILES, mTargetFiles);
+ getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_COPY_FILES);
+ return true;
+ default:
+ return false;
+ }
}
+
}
/**
@Override
public boolean onContextItemSelected (MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
- boolean matched = onFileActionChosen(item.getItemId(), ((AdapterContextMenuInfo) item.getMenuInfo()).position);
+ boolean matched = onFileActionChosen(item.getItemId());
if(!matched) {
return super.onContextItemSelected(item);
} else {