From: jabarros Date: Mon, 12 Jan 2015 13:30:06 +0000 (+0100) Subject: Merge branch 'develop' into thumbnailForUpload X-Git-Tag: oc-android-1.7.0_signed~42^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/6c70154a506b0963ed5aa0a402dc80a2933f1087?hp=b7e80e6ace7078f14dfae71b60e76f763b17983d Merge branch 'develop' into thumbnailForUpload --- diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 4c2f8692..9ab386ca 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -1,7 +1,34 @@ + Učitaj + Datoteke Nova fascikla + Postavke + Pošalji + Više + Pomoć + Korisničko ime + Lozinka + Datoteke + Učitaj + Preuzmite + Podijelite vezu + Da + Ne + Ok + Prekini učitavanje + Odustani + Greška + Nepoznata greška + Promijeni lozinku + Kreiraj račun + Preimenuj + Pošalji + Potrebna autentifikacija + Pogrešna lozinka + Izaberite + Sigurnost diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml index 2bc66d63..d7b4abc7 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/res/values-cs-rCZ/strings.xml @@ -281,7 +281,7 @@ správce systému. Bezpečné spojení je přesměrováno na nezabezpečenou trasu. Logy Odeslat historii - Nebyla nalezena žádná aplikace pro zasílání logů. Nainstalujte poštovní aplikaci! + Nebyla nalezena žádná aplikace pro odesílání logů. Nainstalujte poštovní aplikaci! %1$s logy aplikace pro Android Načítání dat… Vyžadováno přihlášení @@ -298,4 +298,6 @@ správce systému. Zabezpečení Cesta pro nahrávání videí sdílené + s vámi + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index f393e6b4..c365dff9 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -299,4 +299,5 @@ Ασφάλεια Διαδρομή Μεταφόρτωσης Βίντεο μοιρασμένο + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 8698a40e..6540be19 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -299,4 +299,6 @@ Security Upload Video Path shared + with you + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 67f5b3c5..3f9b74b7 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -299,4 +299,6 @@ Seguridad Ruta de vídeo de subida compartido + contigo + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 951241be..46d14ca2 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -173,7 +173,7 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Impossible de trouver l\'hôte Aucune instance du serveur n\'a été trouvée Le serveur met trop longtemps à répondre - Adresse invalide + Adresse non valide Échec de l\'initialisation SSL Impossible de vérifier l\'identité du serveur SSL La version du serveur n\'est pas reconnue @@ -198,23 +198,23 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Voulez-vous vraiment supprimer %1$s ? Voulez-vous vraiment supprimer %1$s et son contenu ? Local seulement - Le contenu local uniquement + Contenu local uniquement Effacer du serveur - Les deux distant et local + Distant et local Suppression effectuée avec succès Suppression impossible Entrez un nouveau nom La version locale ne peut être renommée, veuillez réessayer avec un nom différent Renommage impossible Le fichier distant n\'a pu être vérifié - Le contenu des fichiers est déjà synchronisé + Le contenu du fichier est déjà synchronisé Le dossier n\'a pas pu être créé Caractères interdits : / \\ < > : \" | ? * Le nom du fichier ne peut pas être vide Veuillez patienter Problème inattendu. Veuillez essayer une autre application pour la sélection du fichier Aucun fichier sélectionné - Envoyer un lien à… + Envoyer le lien vers… Connexion avec oAuth2 Connexion au serveur oAuth2… L\'identité du site ne peut être vérifiée diff --git a/res/values-ja-rJP/strings.xml b/res/values-ja-rJP/strings.xml index 2a73d253..d803d8dd 100644 --- a/res/values-ja-rJP/strings.xml +++ b/res/values-ja-rJP/strings.xml @@ -64,8 +64,8 @@ ここには何もありません。何かアップロードしてください。 読込中 ... このフォルダーにはファイルがありません。 - フォルダ - フォルダ + フォルダー + フォルダー ファイル ファイル ファイルをタップすると追加情報が表示されます。 @@ -283,18 +283,23 @@ 暗号化接続は非暗号化接続にリダイレクトされました。 ログ ログを送信 + ログを送るアプリが見つかりませんでした。メールアプリをインストールして下さい。 + %1$s アンドロイドアプリログ + 読込中 ... 認証を必要とする 無効なパスワード 移動 - ファイルが有りません。フォルダを追加してください。 + 何もありません。フォルダーを追加してください。 選択 移動できません。ファイルがあるか確認してください。 - フォルダを子フォルダへ移動することはできません。 - そのファイルは、宛先フォルダに既に存在しています。 + フォルダーを子フォルダーへ移動することはできません。 + そのファイルは宛先フォルダーにすでに存在します。 このファイルまたはフォルダーを移動する際にエラーが発生しました このファイルを移動 自動アップロード セキュリティ 動画のアップロードパス 共有中 + あなたと + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index c185f73f..0895ca91 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -149,6 +149,7 @@ Sūtīt Konti + Nepareiza parole Izvēlieties Drošība diff --git a/res/values-nb-rNO/strings.xml b/res/values-nb-rNO/strings.xml index 326d5f31..859c7c99 100644 --- a/res/values-nb-rNO/strings.xml +++ b/res/values-nb-rNO/strings.xml @@ -11,6 +11,12 @@ Innstillinger Detaljer Send + Sorter + Sorter på + + A-Z + Nyeste - Eldste + Generelt @@ -32,6 +38,8 @@ Anbefal til en venn Tilbakemelding Avtrykk + Husk delt plassering + Husk sist delt plassering for opplasting Prøv %1$s på smarttelefonen din! Jeg ønsker å invitere deg til å bruke %1$s på smarttelefonen din!\nLast ned her: %2$s Sjekk server @@ -245,6 +253,7 @@ Bildeforhåndsvisning Dette bildet kan ikke vises %1$s kunne ikke kopieres til lokal mappe %2$s + Sti til opplasting Beklager, deling er ikke skrudd på for din tjener. Ta kontakt med administratoren. Kan ikke dele. Sjekk om filen eksisterer. @@ -270,8 +279,12 @@ Filen finnes ikke på serveren lenger Kontoer Legg til en konto + Sikker forbindelse er omdirigert til en usikker rute. Logger Send historikk + Ingen app for sending av logger funnet. Installer epost-app! + %1$s Android app logger + Laster data... Autentisering kreves Feil passord Flytt @@ -282,6 +295,10 @@ Filen finnes allerede i målmappen En feil oppstod ved flytting av denne filen eller mappen å flytte denne filen + Umiddelbare opplastinger Sikkerhet + Sti til video-opplasting delt + med deg + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index bb03b024..74c1b55c 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -21,10 +21,10 @@ Administrare conturi PIN-ul aplicaţiei Protejaţi-vă clientul - Încărcare instanta de imagine - Încărca instantaneu imagini luate de camera + Încărcare instantă de imagini + Încarcă instantant imagini luate cu camera Încărcare instantă de videoclipuri. - Încarcă videoclipuri instant, filmate cu camera. + Încarcă instant videoclipuri înregistrate cu camera Permite logarea Acesta este folosit pentru a înregistra problemele Istoria logarilor @@ -236,7 +236,7 @@ 12:23:45 Incarca poze doar via WiFi Încarcă videoclipuri doar via WiFi - /Încărcare instanta + /Încărcare instantă Actualizați conflictul Fișierul de la distanță %s nu este sincronizat cu fișierul local. Continuand, se va înlocui conținutul fișierului de pe server. Pastreaza amandoua @@ -273,5 +273,6 @@ Nu este nimic aici. Poți adăuga un director! Alege pentru a muta acest fișier + Încărcări instante Securitate diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index aeb35c3b..bf3c9757 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -1,13 +1,13 @@ - %1$s Приложение для Андроида + %1$s Приложение для Андроид Версия %1$s Обновить учетную запись Загрузить Содержимое из других приложений Файлы Открыть с помощью - Новая папка + Новый каталог Настройки Подробно Отправить @@ -15,7 +15,7 @@ Упорядочить по А-Я - Новые - Старые + По новизне @@ -25,10 +25,10 @@ Управление учётными записями App PIN Защитить ваш клиент - Быстрая загрузка фотографий + Мгновенная загрузка фотографий Немедленно загружать фотографии сделанные камерой - Быстрая загрузка видео - Быстрая загрузка видео с камеры + Мгновенная загрузка видео + Немедленно загружать видео сделанные камерой Включить журналирование Используется для регистрации ошибок Журнал @@ -38,7 +38,7 @@ Рекомендовать другу Обратная связь Штамп - Запомнить расположение публикации + Запомнить расположение общего ресурса Запомнить расположение загрузки последней публикации Попробуйте %1$s на вашем смартфоне! Хочу предложить вам использовать %1$s на смартфоне!\nЗагрузить можно здесь: %2$s @@ -51,21 +51,21 @@ Файлы Подключиться Загрузить - Выберете папку для загрузки + Выберете каталог для загрузки Учётная запись не найдена - На вашем устройстве нет учётных записей %1$s. Сначала нужно настроить учётную запись. + На вашем устройстве нет учётных записей %1$s. Сначала, необходимо настроить учётную запись. Установка Выход Нет содержимого для загрузки Содержимое не получено. Нечего загружать. - %1$s не имеет доступа к опубликованным данным + Доступ к общему ресурсу для %1$s запрещен Загрузка - только что + менее минуты Здесь ничего нет. Загрузите что-нибудь! Загрузка... - В данной папке нет файлов. - папка - папки + В этом каталоге нет файлов. + каталог + каталоги файл файлы Нажмите на файл для отображения дополнительной информации. @@ -93,14 +93,14 @@ Удалить учётную запись Создать учётную запись Загрузить из... - Имя папки + Имя каталога Загрузка... %1$d%% загрузки %2$s Загрузка завершена %1$s был успешно загружен Ошибка загрузки Загрузка %1$s не может быть завершена - Загрузка не удалась, Вам необходимо переподключиться + Загрузка не удалась, необходимо переподключиться Скачивание... %1$d%% скачивания %2$s Скачивание завершено @@ -108,27 +108,27 @@ Скачивание не удалось Скачивание %1$s не может быть завершено Ещё не скачано - Скачивание не удалось, Вам необходимо переподключиться + Скачивание не удалось, необходимо переподключиться Выберите учётную запись Синхронизация прошла неудачно - Синхронизация не удалась, Вам необходимо переподключиться + Синхронизация не удалась, необходимо переподключиться Синхронизация %1$s не может быть завершена Неверный пароль для %1$s Обнаружены конфликты %1$d файлы не могут быть синхронизированы Не удалось синхронизировать файлы Содержимое %1$d файлов не может быть синхронизировано (конфликтов: %2$d) - Несколько локальных файлов были забыты + Некоторые локальные файлы были проигнорированы Не возможно скопировать %1$d файлы из %2$s папки - Начиная с версии 1.3.16, файлы, загружаемые с этого устройства, копируются в локальную директорию %1$s, чтобы предотвратить потерю данных при синхронизации файла с несколькими учётными записями.\n\nПоэтому все файлы, загруженные предыдущими версиями данного приложения, были скопированы в директорию %2$s. Однако, во время синхронизации что-то помешало завершить эту операцию. Теперь можно либо оставить файлы как есть и удалить ссылку на %3$s, либо переместить их в %1$s и сохранить ссылку на %4$s.\n\nНиже перечислены локальные файлы, и соответствующие им удалённые файлы в %5$s, к которым они привязаны. + Начиная с версии 1.3.16, файлы, загружаемые с этого устройства, копируются в локальный каталог %1$s, чтобы предотвратить потерю данных при синхронизации файла с несколькими учётными записями.\n\nПоэтому все файлы, загруженные предыдущими версиями данного приложения, были скопированы в каталог %2$s. Однако, во время синхронизации что-то помешало завершить эту операцию. Можете оставить файлы как есть и удалить ссылку на %3$s, либо переместить их в %1$s и сохранить ссылку на %4$s.\n\nНиже перечислены локальные файлы, и соответствующие им удалённые файлы в %5$s, к которым они привязаны. Каталог %1$s больше не существует Переместить всё Все файлы были перемещены Некоторые файлы не могут быть перемещены Локально: %1$s Удаленно: %1$s - Для копирования выбранных файлов в папку %1$s недостаточно свободного места. Скопировать в другое место? - Вставьте App PIN + Для копирования выбранных файлов в каталог %1$s недостаточно свободного места. Скопировать в другое место? + Укажите App PIN Введите App PIN PIN-код будет запрашиваться при каждом запуске приложения. Повторите ввод App PIN @@ -185,9 +185,9 @@ Подключение к серверу аутентификации... Сервер не поддерживает выбранный метод аутентификации %1$s не поддерживает сразу несколько учётных записей - Ваш сервер не возвращает корректный пользовательский идентификатор, пожалуйста свяжитесь с администратором + Cервер не возвращает корректный пользовательский идентификатор. Пожалуйста, свяжитесь с вашим администратором ⇥ - Невозможно аутентифицироваться на этом сервере + Невозможно авторизоваться на этом сервере Обновлять файл Переименовать Удалить @@ -204,7 +204,7 @@ Переименование не может быть завершено Удаленный файл не может быть проверен Содержимое файла уже синхронизировано - Не возможно создать папку + Не возможно создать каталог Недопустимые символы: / \\ < > : \" | ? * Имя файла не может быть пустым Подождите немного @@ -253,33 +253,34 @@ Не загружать Предпросмотр Это изображение не может быть отображено - %1$s не возможно скопировать в локальною папку %2$s + %1$s невозможно скопировать в локальный каталог %2$s Путь для загрузки - К сожалению, на вашем сервере отключен совместный доступ. Пожалуйста, свяжитесь с вашим администратором. - Невозможно добавить в общий доступ. Пожалуйста, проверьте, существует ли файл - Ошибка предоставления общего доступа к этому файлу или каталогу - Невозможно убрать из общего доступа. Пожалуйста, проверьте, существует ли файл - Ошибка удаления общего доступа к этому файлу или каталогу + Механизм общего доступа не включен на данном сервере. Пожалуйста, свяжитесь с вашим +⇥⇥администратором. + Невозможно поделиться. Убедитесь, что файл существует + При попытке поделиться этим файлом или каталогом произошла ошибка + Невозможно закрыть доступ. Убедитесь что файл существует + При попытке закрыть доступ к этому файлу или каталогу произошла ошибка Отправить Копировать ссылку Скопировано в буфер обмена - Критическая ошибка: невозможно выполнить операции + Критическая ошибка: невозможно выполнить действия При подключении к серверу возникла ошибка - Во время ожидания сервера возникла ошибка, операция не может быть завершена - Во время ожидания сервера возникла ошибка, операция не может быть завершена - Операция не может быть завершена, сервер недоступен + Во время ожидания сервера произошла ошибка, действие не может быть выполнено + Во время ожидания сервера произошла ошибка, действие не может быть выполнено + Действие не может быть выполнено, сервер недоступен - У вас нет доступа %s - переименовать этот файл - удалить этот файл - опубликовать этот файл - отменить публикацию этого файла - создать файл - загрузить в эту папку + Недостаточно прав в %s + что-бы переименовать этот файл + что-бы удалить этот файл + что-бы поделиться этим файлом + что-бы закрыть доступ к этому файлу + что-бы создать файл + что-бы загрузить в этот каталог Этот файл больше недоступен на сервере Учётные записи Добавить учетную запись - Защищённое соединение перенаправлено по незащищённому маршруту + Защищённое соединение перенаправлено по небезопасному маршруту Журналы История Отправлений Приложение для отправки журнала не найдено. Установите почтовое приложение! @@ -288,15 +289,17 @@ Требуется аутентификация Неправильный пароль Переместить - Здесь ничего нет. Вы можете добавить папку! + Здесь ничего нет. Вы можете добавить каталог! Выбрать - Невозможно переместить. Пожалуйста, проверьте, существует ли файл - Невозможно переместить папку в папку-потомок - Файл уже существует в папке назначения - Произошла ошибка при попытке перемещения этого файла или папки + Невозможно переместить. Убедитесь, что файл существует + Невозможно переместить каталог в его подкаталог + Файл уже существует в каталоге назначения + Произошла ошибка при попытке перемещения этого файла или каталога переместить этот файл Мгновенные загрузки Безопасность Путь для загрузки Видео Общие + с вами + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-sr-rSP/strings.xml b/res/values-sr-rSP/strings.xml index b5d14f16..ada7c59e 100644 --- a/res/values-sr-rSP/strings.xml +++ b/res/values-sr-rSP/strings.xml @@ -22,6 +22,7 @@ Veličina: Tip: Preuzmi + Podeli prečicu Da Ne Ok @@ -30,6 +31,7 @@ Izmeni lozinku Ukloni nalog Novi nalog + Ime fascikle Otpremanje... Uspešno otpremljeno Otpremanje nije uspelo diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 4b690aff..254ed65e 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -11,6 +11,12 @@ Inställningar Detaljer Skicka + Sortera + Sortera efter + + A-Ö + Nyast - Äldst + Allmänt @@ -32,6 +38,8 @@ Rekommendera till en vän Feedback Imprint + Kom ihåg plats för delat + Kom ihåg senaste uppladdningsplats vid dela Prova %1$s på din smartphone! Jag skullje vilja bjuda in dig till att prova %1$s på din smartphone!\nLadda ner appen från Google Play här: %2$s Kontrollera Server @@ -111,6 +119,7 @@ Innehållet i %1$d filer kunde inte synkas (%2$d konflikter) Vissa lokala filer glömdes %1$d filer från %2$s mappar kunde inte kopieras till + Från och med version 1.3.16 kommer filer uppladdade från denna enhet kopieras in till lokal %1$s mapp för att förhindra dataförlust när en enskild fil synkroniseras med flera konton.\n\nPå grund av denna ändring kommer alla filer uppladdade i tidigare versioner av denna applikation kopieras in till %2$s mapp. Dock förhindrade ett fel slutförandet av denna operation under konto-synkronisering. Du kan antingen lämna filerna som de är och ta bort länken till %3$s, eller flytta filerna in till %1$s mapp och behålla länken till %4$s.\n\nNedan listas de lokala filerna och de fjrran filerna i %5$s som de länkades till. Mappen %1$s existerar inte längre Flytta allt Alla filer flyttades @@ -244,9 +253,12 @@ Förhandsvisa bild Denna bild kan inte visas %1$s kunde inte kopieras till %2$s lokal mapp + Uppladdnings-sökväg Ledsen, delning är inte aktiverat på din server. Vänligen kontakta din administratör. + Lyckades ej dela. Vänligen kontrollera om filen eisterar Ett fel uppstod vid försök att dela denna fil eller mapp + Lyckades ej sluta dela. Vänligen kontrollera om filen existerar Ett fel uppstod vid försök att sluta dela denna fil eller mapp Skicka Kopiera länk @@ -267,13 +279,26 @@ Filen är inte längre tillgänglig på servern Konton Lägg till konto + Säker anslutning är omdirigerad till en osäker väg. + Loggar + Skickat historik + Ingen app för att skicka loggar hittades. Installera mail appen! + %1$s Android app logs + Laddar data... Autentisering krävs Fel lösenord Flytta Ingenting här. Du kan skapa en mapp! Välj Gick inte att flytta. Vänligen kontrollera att filen existerar + Det är inte möjligt att flytta mappen in i underliggande struktur + Filen existerar redan i destinationsmappen + Ett fel uppstod vid försök att flytta denna fil eller mapp att flytta den här filen + Direktuppladning Säkerhet + Uppladdnings-sökväg för video delad + med dig + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 56ec0389..a24876d4 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -282,9 +282,9 @@ Güvenli bağlantı, güvenli olmayan bir rotaya yönlendirildi. Günlükler Geçmişi Gönder - Günlükleri göndermek için uygulama bulunamadı. E-posta uygulamasını yükleyin! + Kayıtları göndermek için uygulama bulunamadı. E-posta uygulamasını yükleyin! %1$s Android uygulama kayıtları - Yükleniyor... + Veri yükleniyor... Kimlik doğrulama gerekli Hatalı parola Taşı @@ -299,4 +299,6 @@ Güvenlik Video Yükleme Yolu paylaşılan + sizinle + %1$s %2$s >>%3$s<< %4$s diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index b2731798..892944eb 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -71,4 +71,5 @@ 帳號 密碼錯誤 + 安全 diff --git a/src/com/owncloud/android/operations/RenameFileOperation.java b/src/com/owncloud/android/operations/RenameFileOperation.java index bd60e1fb..2fdc8f18 100644 --- a/src/com/owncloud/android/operations/RenameFileOperation.java +++ b/src/com/owncloud/android/operations/RenameFileOperation.java @@ -158,7 +158,7 @@ public class RenameFileOperation extends SyncOperation { */ private boolean isValidNewName() throws IOException { // check tricky names - if (mNewName == null || mNewName.length() <= 0 || mNewName.contains(File.separator) || mNewName.contains("%")) { + if (mNewName == null || mNewName.length() <= 0 || mNewName.contains(File.separator)) { return false; } // create a test file diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index f5837493..3bec9167 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -109,6 +109,7 @@ import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ErrorMessageAdapter; +import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.UriUtils; @@ -519,7 +520,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { // Read sorting order, default to sort by name ascending Integer sortOrder = appPreferences - .getInt("sortOrder", FileListListAdapter.SORT_NAME); + .getInt("sortOrder", FileStorageUtils.SORT_NAME); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.actionbar_sort_title) diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 90f592fa..9c8c8e1f 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -70,11 +70,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { private FileDataStorageManager mStorageManager; private Account mAccount; private ComponentsGetter mTransferServiceGetter; - private Integer mSortOrder; - public static final Integer SORT_NAME = 0; - public static final Integer SORT_DATE = 1; - public static final Integer SORT_SIZE = 2; - private Boolean mSortAscending; + private SharedPreferences mAppPreferences; public FileListListAdapter( @@ -93,9 +89,9 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { .getDefaultSharedPreferences(mContext); // Read sorting order, default to sort by name ascending - mSortOrder = mAppPreferences - .getInt("sortOrder", 0); - mSortAscending = mAppPreferences.getBoolean("sortAscending", true); + FileStorageUtils.mSortOrder = mAppPreferences.getInt("sortOrder", 0); + FileStorageUtils.mSortAscending = mAppPreferences.getBoolean("sortAscending", true); + // initialise thumbnails cache on background thread new ThumbnailsCacheManager.InitDiskCacheTask().execute(); @@ -293,7 +289,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { File dir = new File(path); if (dir.exists()) { - long bytes = getFolderSize(dir); + long bytes = FileStorageUtils.getFolderSize(dir); return DisplayUtils.bytesToHumanReadable(bytes); } @@ -358,29 +354,11 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { mFiles = null; } - sortDirectory(); - } - - /** - * Sorts all filenames, regarding last user decision - */ - private void sortDirectory(){ - switch (mSortOrder){ - case 0: - sortByName(mSortAscending); - break; - case 1: - sortByDate(mSortAscending); - break; - case 2: - sortBySize(mSortAscending); - break; - } - + mFiles = FileStorageUtils.sortFolder(mFiles); notifyDataSetChanged(); } - + /** * Filter for getting only the folders * @param files @@ -413,106 +391,19 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME)); } - /** - * Sorts list by Date - * @param sortAscending true: ascending, false: descending - */ - private void sortByDate(boolean sortAscending){ - final Integer val; - if (sortAscending){ - val = 1; - } else { - val = -1; - } - - Collections.sort(mFiles, new Comparator() { - public int compare(OCFile o1, OCFile o2) { - if (o1.isFolder() && o2.isFolder()) { - Long obj1 = o1.getModificationTimestamp(); - return val * obj1.compareTo(o2.getModificationTimestamp()); - } - else if (o1.isFolder()) { - return -1; - } else if (o2.isFolder()) { - return 1; - } else if (o1.getModificationTimestamp() == 0 || o2.getModificationTimestamp() == 0){ - return 0; - } else { - Long obj1 = o1.getModificationTimestamp(); - return val * obj1.compareTo(o2.getModificationTimestamp()); - } - } - }); - } - - /** - * Sorts list by Size - * @param sortAscending true: ascending, false: descending - */ - private void sortBySize(boolean sortAscending){ - final Integer val; - if (sortAscending){ - val = 1; - } else { - val = -1; - } - - Collections.sort(mFiles, new Comparator() { - public int compare(OCFile o1, OCFile o2) { - if (o1.isFolder() && o2.isFolder()) { - Long obj1 = getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o1))); - return val * obj1.compareTo(getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o2)))); - } - else if (o1.isFolder()) { - return -1; - } else if (o2.isFolder()) { - return 1; - } else if (o1.getFileLength() == 0 || o2.getFileLength() == 0){ - return 0; - } else { - Long obj1 = o1.getFileLength(); - return val * obj1.compareTo(o2.getFileLength()); - } - } - }); - } - - /** - * Sorts list by Name - * @param sortAscending true: ascending, false: descending - */ - private void sortByName(boolean sortAscending){ - final Integer val; - if (sortAscending){ - val = 1; - } else { - val = -1; - } - - Collections.sort(mFiles, new Comparator() { - public int compare(OCFile o1, OCFile o2) { - if (o1.isFolder() && o2.isFolder()) { - return val * o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase()); - } else if (o1.isFolder()) { - return -1; - } else if (o2.isFolder()) { - return 1; - } - return val * new AlphanumComparator().compare(o1, o2); - } - }); - } - public void setSortOrder(Integer order, boolean ascending) { SharedPreferences.Editor editor = mAppPreferences.edit(); editor.putInt("sortOrder", order); editor.putBoolean("sortAscending", ascending); editor.commit(); - mSortOrder = order; - mSortAscending = ascending; + FileStorageUtils.mSortOrder = order; + FileStorageUtils.mSortAscending = ascending; - sortDirectory(); + + mFiles = FileStorageUtils.sortFolder(mFiles); + notifyDataSetChanged(); + } private CharSequence showRelativeTimestamp(OCFile file){ diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 73ae5dc2..9c85dd98 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -48,6 +48,7 @@ import com.owncloud.android.ui.dialog.RemoveFileDialogFragment; import com.owncloud.android.ui.dialog.RenameFileDialogFragment; import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.ui.preview.PreviewMediaFragment; +import com.owncloud.android.utils.FileStorageUtils; /** * A Fragment that lists all files and folders in a given path. @@ -437,15 +438,15 @@ public class OCFileListFragment extends ExtendedListFragment { } public void sortByName(boolean descending) { - mAdapter.setSortOrder(FileListListAdapter.SORT_NAME, descending); + mAdapter.setSortOrder(FileStorageUtils.SORT_NAME, descending); } public void sortByDate(boolean descending) { - mAdapter.setSortOrder(FileListListAdapter.SORT_DATE, descending); + mAdapter.setSortOrder(FileStorageUtils.SORT_DATE, descending); } public void sortBySize(boolean descending) { - mAdapter.setSortOrder(FileListListAdapter.SORT_SIZE, descending); + mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending); } } diff --git a/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java b/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java index f2a9a9b2..3c15de71 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java +++ b/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java @@ -16,6 +16,8 @@ */ package com.owncloud.android.ui.preview; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -31,7 +33,9 @@ import android.view.ViewGroup; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.ui.adapter.FileListListAdapter; import com.owncloud.android.ui.fragment.FileFragment; +import com.owncloud.android.utils.FileStorageUtils; /** * Adapter class that provides Fragment instances @@ -73,13 +77,15 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter { mAccount = account; mStorageManager = storageManager; mImageFiles = mStorageManager.getFolderImages(parentFolder); + + mImageFiles = FileStorageUtils.sortFolder(mImageFiles); + mObsoleteFragments = new HashSet(); mObsoletePositions = new HashSet(); mDownloadErrors = new HashSet(); //mFragmentManager = fragmentManager; mCachedFragments = new HashMap(); } - /** * Returns the image files handled by the adapter. diff --git a/src/com/owncloud/android/utils/FileStorageUtils.java b/src/com/owncloud/android/utils/FileStorageUtils.java index 892a1ca8..b462cd95 100644 --- a/src/com/owncloud/android/utils/FileStorageUtils.java +++ b/src/com/owncloud/android/utils/FileStorageUtils.java @@ -18,6 +18,11 @@ package com.owncloud.android.utils; import java.io.File; +import java.util.Collections; +import java.util.Comparator; +import java.util.Vector; + +import third_parties.daveKoeller.AlphanumComparator; import com.owncloud.android.MainApp; import com.owncloud.android.R; @@ -39,6 +44,13 @@ import android.os.StatFs; * @author David A. Velasco */ public class FileStorageUtils { + public static Integer mSortOrder; + public static Boolean mSortAscending; + public static final Integer SORT_NAME = 0; + public static final Integer SORT_DATE = 1; + public static final Integer SORT_SIZE = 2; + + //private static final String LOG_TAG = "FileStorageUtils"; public static final String getSavePath(String accountName) { @@ -137,5 +149,141 @@ public class FileStorageUtils { file.setRemoteId(ocFile.getRemoteId()); return file; } + + /** + * Sorts all filenames, regarding last user decision + */ + public static Vector sortFolder(Vector files){ + switch (mSortOrder){ + case 0: + files = FileStorageUtils.sortByName(files); + break; + case 1: + files = FileStorageUtils.sortByDate(files); + break; + case 2: + // mFiles = FileStorageUtils.sortBySize(mSortAscending); + break; + } + + return files; + } + + /** + * Sorts list by Date + * @param sortAscending true: ascending, false: descending + */ + public static Vector sortByDate(Vector files){ + final Integer val; + if (mSortAscending){ + val = 1; + } else { + val = -1; + } + + Collections.sort(files, new Comparator() { + public int compare(OCFile o1, OCFile o2) { + if (o1.isFolder() && o2.isFolder()) { + Long obj1 = o1.getModificationTimestamp(); + return val * obj1.compareTo(o2.getModificationTimestamp()); + } + else if (o1.isFolder()) { + return -1; + } else if (o2.isFolder()) { + return 1; + } else if (o1.getModificationTimestamp() == 0 || o2.getModificationTimestamp() == 0){ + return 0; + } else { + Long obj1 = o1.getModificationTimestamp(); + return val * obj1.compareTo(o2.getModificationTimestamp()); + } + } + }); + + return files; + } + +// /** +// * Sorts list by Size +// * @param sortAscending true: ascending, false: descending +// */ +// public static Vector sortBySize(Vector files){ +// final Integer val; +// if (mSortAscending){ +// val = 1; +// } else { +// val = -1; +// } +// +// Collections.sort(files, new Comparator() { +// public int compare(OCFile o1, OCFile o2) { +// if (o1.isFolder() && o2.isFolder()) { +// Long obj1 = getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o1))); +// return val * obj1.compareTo(getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o2)))); +// } +// else if (o1.isFolder()) { +// return -1; +// } else if (o2.isFolder()) { +// return 1; +// } else if (o1.getFileLength() == 0 || o2.getFileLength() == 0){ +// return 0; +// } else { +// Long obj1 = o1.getFileLength(); +// return val * obj1.compareTo(o2.getFileLength()); +// } +// } +// }); +// +// return files; +// } + + /** + * Sorts list by Name + * @param sortAscending true: ascending, false: descending + */ + public static Vector sortByName(Vector files){ + final Integer val; + if (mSortAscending){ + val = 1; + } else { + val = -1; + } + + Collections.sort(files, new Comparator() { + public int compare(OCFile o1, OCFile o2) { + if (o1.isFolder() && o2.isFolder()) { + return val * o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase()); + } else if (o1.isFolder()) { + return -1; + } else if (o2.isFolder()) { + return 1; + } + return val * new AlphanumComparator().compare(o1, o2); + } + }); + + return files; + } + + /** + * Local Folder size + * @param dir File + * @return Size in bytes + */ + public static long getFolderSize(File dir) { + if (dir.exists()) { + long result = 0; + File[] fileList = dir.listFiles(); + for(int i = 0; i < fileList.length; i++) { + if(fileList[i].isDirectory()) { + result += getFolderSize(fileList[i]); + } else { + result += fileList[i].length(); + } + } + return result; + } + return 0; + } }