浏览代码

Merge with develop

Magnus Sjoqvist 10 年之前
父节点
当前提交
844790057b

+ 15 - 10
.travis.yml

@@ -1,15 +1,20 @@
-language: java
+language: android
+android:
+  components:
+    - build-tools-20.0.0
+    - android-19
+    - android-17
+    - android-14
+    - extra-android-support
+  licenses:
+    - 'android-sdk-license-5be876d5'
+    - 'android-sdk-license-598b93a6'
+  
 jdk: oraclejdk7
+
 before_install:
-  # Install base Android SDK
-    - sudo apt-get update -qq
-    - sudo apt-get install -qq libstdc++6:i386 lib32z1 expect
-    - export COMPONENTS="build-tools-20.0.0,android-14,android-17,android-19,sysimg-19,extra-android-support"
-    - export LICENSES="android-sdk-license-5be876d5|android-sdk-license-598b93a6"
-    - curl -3L https://raw.github.com/embarkmobile/android-sdk-installer/version-2/android-sdk-installer | bash /dev/stdin --install=$COMPONENTS --accept=$LICENSES
-    - source ~/.android-sdk-installer/env
-    - rm pom.xml
-    - ./setup_env.sh
+  - rm pom.xml
+  - ./setup_env.sh
 
 script:
   - ant clean

+ 123 - 0
res/values-uk/strings.xml

@@ -1,8 +1,12 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Android App</string>
+  <string name="about_version">версія %1$s</string>
+  <string name="actionbar_sync">Оновити account</string>
   <string name="actionbar_upload">Відвантажити</string>
   <string name="actionbar_upload_from_apps">Вміст із інших програм</string>
   <string name="actionbar_upload_files">Файли</string>
+  <string name="actionbar_open_with">Відкрити за допомогою</string>
   <string name="actionbar_mkdir">Нова тека</string>
   <string name="actionbar_settings">Налаштування</string>
   <string name="actionbar_see_details">Деталі</string>
@@ -13,14 +17,30 @@
   <string name="prefs_manage_accounts">Управління обліковими записами</string>
   <string name="prefs_pincode">App програмний PIN</string>
   <string name="prefs_pincode_summary">Захист Вашог App клієнта</string>
+  <string name="prefs_instant_upload">Миттєві зображення</string>
+  <string name="prefs_instant_upload_summary">Миттєві зображення з камери</string>
+  <string name="prefs_instant_video_upload">Миттєві відео</string>
+  <string name="prefs_instant_video_upload_summary">Миттєві відео з камери</string>
+  <string name="prefs_log_title">Ввімкнути журнал</string>
+  <string name="prefs_log_summary">Використовується для реєстрації помилок</string>
+  <string name="prefs_log_title_history">Журнал</string>
+  <string name="prefs_log_summary_history">Тут показані записи журналу</string>
+  <string name="prefs_log_delete_history_button">Видалити історію записів</string>
   <string name="prefs_help">Допомога</string>
+  <string name="prefs_recommend">Порадити товаришу</string>
   <string name="prefs_feedback">Зворотній зв\'язок</string>
   <string name="prefs_imprint">Відбиток</string>
+  <string name="recommend_subject">Спробуйте %1$s на своєму смартфоні!</string>
+  <string name="recommend_text">Пропоную вам користуватися %1$s на вашому смартфоні!\nЗавантажити можна за посиланням: %2$s</string>
+  <string name="auth_check_server">Перевірити сервер</string>
+  <string name="auth_host_url">Адреса серверу https://…</string>
   <string name="auth_username">Ім\'я користувача</string>
   <string name="auth_password">Пароль</string>
+  <string name="auth_register">Вперше в %1$s?</string>
   <string name="sync_string_files">Файли</string>
   <string name="setup_btn_connect">З\'єднати</string>
   <string name="uploader_btn_upload_text">Відвантажити</string>
+  <string name="uploader_top_message">Оберіть теку для завантаження:</string>
   <string name="uploader_wrn_no_account_title">Не знайдено облікового запису</string>
   <string name="uploader_wrn_no_account_text">На Вашому пристрої відсутні облікові записи %1$s. Будь ласка, спочатку створіть запис.</string>
   <string name="uploader_wrn_no_account_setup_btn_text">Налаштування</string>
@@ -30,14 +50,18 @@
   <string name="uploader_error_forbidden_content">%1$s не може отримати доступ до спільного контенту</string>
   <string name="uploader_info_uploading">Завантаження</string>
   <string name="file_list_empty">Тут нічого немає. Відвантажте що-небудь!</string>
+  <string name="file_list_loading">Завантаження...</string>
+  <string name="local_file_list_empty">В цій теці немає файлів.</string>
   <string name="filedetails_select_file">Натисніть на файлі для відображення додаткової інформації</string>
   <string name="filedetails_size">Розмір:</string>
   <string name="filedetails_type">Тип:</string>
   <string name="filedetails_created">Створено:</string>
   <string name="filedetails_modified">Змінено:</string>
   <string name="filedetails_download">Завантажити</string>
+  <string name="filedetails_sync_file">Оновити файл</string>
   <string name="filedetails_renamed_in_upload_msg">Файл був переіменований в %1$s протягом вивантаження</string>
   <string name="action_share_file">Опублікувати посилання</string>
+  <string name="action_unshare_file">Видалити посилання</string>
   <string name="common_yes">Так</string>
   <string name="common_no">Ні</string>
   <string name="common_ok">OK</string>
@@ -46,6 +70,7 @@
   <string name="common_cancel">Відмінити</string>
   <string name="common_save_exit">Зберегти &amp; Вихід</string>
   <string name="common_error">Помилка</string>
+  <string name="common_loading">Завантаження...</string>
   <string name="common_error_unknown">Невідома помилка</string>
   <string name="about_title">Про</string>
   <string name="change_password">Змінити пароль</string>
@@ -59,25 +84,34 @@
   <string name="uploader_upload_succeeded_content_single">%1$s було успішно завантажено</string>
   <string name="uploader_upload_failed_ticker">Помилка завантаження</string>
   <string name="uploader_upload_failed_content_single">Завантаження %1$s не може завершитись</string>
+  <string name="uploader_upload_failed_credentials_error">Завантажити не вдалося, необхідно повторити вхід</string>
   <string name="downloader_download_in_progress_ticker">Зкачування …</string>
   <string name="downloader_download_in_progress_content">%1$d%% Зкачування %2$s</string>
   <string name="downloader_download_succeeded_ticker">Успішно зкачано</string>
   <string name="downloader_download_succeeded_content">%1$s успішно завантажено</string>
   <string name="downloader_download_failed_ticker">Завантаження не вдалося</string>
   <string name="downloader_download_failed_content">Завантаження %1$s не вдається завершити</string>
+  <string name="downloader_not_downloaded_yet">Ще не завантажене</string>
+  <string name="downloader_download_failed_credentials_error">Зберегти не вдалося, необхідно повторити вхід</string>
   <string name="common_choose_account">Оберіть обліковий запис</string>
   <string name="sync_fail_ticker">Помилка синхронізації</string>
+  <string name="sync_fail_ticker_unauthorized">Синхронізація не вдалася, необхідно повторити вхід</string>
   <string name="sync_fail_content">Синхронізація %1$s не вдалась</string>
+  <string name="sync_fail_content_unauthorized">Невірний пароль для %1$s</string>
   <string name="sync_conflicts_in_favourites_ticker">Конфліктів знайдено</string>
   <string name="sync_conflicts_in_favourites_content">%1$d файли, які мають бути синхронізованими не можуть синхронізуватися</string>
   <string name="sync_fail_in_favourites_ticker">Синхронізувати файли не вдалося</string>
   <string name="sync_fail_in_favourites_content">Зміст %1$d файлів не може бути синхронізований (%2$d конфліктів)</string>
   <string name="sync_foreign_files_forgotten_ticker">Деякі локальні файли були забуті</string>
+  <string name="sync_foreign_files_forgotten_content">Неможливо скопіювати %1$d файли з теки %2$s</string>
+  <string name="sync_foreign_files_forgotten_explanation">\"Починаючи з версії 1.3.16, файли, завантажені з цього пристрою копіюються в локальну теку %1$s для запобігання втрати даних під час синхронізації одного файлу з кількома обліковими записами.\n\nТому всі файли, завантажені в попередніх версіях цього додатку були скопійовані в теку %2$s. Однак, під час синхронізації сталася помилка. Ви можете залишити файл(и) як є та видалити посилання на %3$s, або перемістити файл(и) в директорію %1$s і зберегти посилання на %4$s.\n\nНижче наведені локальні та віддалені файли у %5$s з якою вони були пов\'язані.</string>
+  <string name="sync_current_folder_was_removed">Тека %1$s білше не існує</string>
   <string name="foreign_files_move">Перемістити все</string>
   <string name="foreign_files_success">Всі файли були переміщені</string>
   <string name="foreign_files_fail">Деякі файли не можуть бути переміщені</string>
   <string name="foreign_files_local_text">Локально: %1$s</string>
   <string name="foreign_files_remote_text">Віддалено: %1$s</string>
+  <string name="upload_query_move_foreign_files">Недостатньо місця для копіювання обраних файлів у теку %1$s. Чи бажаєте ви перемістити їх замість копіювання?</string>
   <string name="pincode_enter_pin_code">Будь ласка, введіть свій програмний PIN</string>
   <string name="pincode_configure_your_pin">Введіть програмний PIN</string>
   <string name="pincode_configure_your_pin_explanation">PIN необхідно буде вводити щоразу при запуску цієї програми</string>
@@ -87,24 +121,62 @@
   <string name="pincode_wrong">Не вірний App програмний PIN</string>
   <string name="pincode_removed">App програмний PIN видалено</string>
   <string name="pincode_stored">App програмний PIN збережено</string>
+  <string name="media_notif_ticker">%1$s музичний плеєр</string>
+  <string name="media_state_playing">%1$s (відтворення)</string>
+  <string name="media_state_loading">%1$s (завантаження)</string>
+  <string name="media_event_done">%1$s відтворення завершене</string>
+  <string name="media_err_nothing_to_play">Медіа-файлів не знайдено</string>
+  <string name="media_err_no_account">Обліковий запис не налаштований</string>
+  <string name="media_err_not_in_owncloud">Файл в невірному обліковому записі</string>
+  <string name="media_err_unsupported">Кодек не підтримується</string>
+  <string name="media_err_io">Медіа-файл не читається</string>
+  <string name="media_err_malformed">Медіа-файл невірно закодований</string>
+  <string name="media_err_timeout">Вийшов час на спробу відтворення</string>
+  <string name="media_err_invalid_progressive_playback">Неможливо потоком відтворити файл</string>
+  <string name="media_err_unknown">Медіа-файл неможливо відтворити вбудованим програвачем</string>
+  <string name="media_err_security_ex">Помилка безпеки при відтворені %1$s</string>
+  <string name="media_err_io_ex">Помилка вводу при відтворені %1$s</string>
+  <string name="media_err_unexpected">Несподівана помилка при відтворені %1$s</string>
+  <string name="media_rewind_description">Перемтка назад</string>
+  <string name="media_play_pause_description">Відтворення або пауза</string>
+  <string name="media_forward_description">Перемотка вперед</string>
+  <string name="auth_getting_authorization">Виконується вхід...</string>
   <string name="auth_trying_to_login">Спроба входу…</string>
   <string name="auth_no_net_conn_title">Відсутнє підключення до мережі</string>
   <string name="auth_nossl_plain_ok_title">Безпечне з\'єднання не доступне.</string>
   <string name="auth_connection_established">З\'єднання встановлено</string>
   <string name="auth_testing_connection">Перевірка з\'єднання…</string>
   <string name="auth_not_configured_title">Не вірні налаштування сервер </string>
+  <string name="auth_account_not_new">Такий обліковий запис вже існує на пристрої</string>
+  <string name="auth_account_not_the_same">Введений користувач не відповідає обліковому запису</string>
   <string name="auth_unknown_error_title">Виникла невідома помилка!</string>
   <string name="auth_unknown_host_title">Не вдалося знайти хост</string>
   <string name="auth_incorrect_path_title">Не знайдено примірник сервер</string>
   <string name="auth_timeout_title">Сервер занадто довго не відповідає</string>
   <string name="auth_incorrect_address_title">Пошкоджений URL</string>
   <string name="auth_ssl_general_error_title">Помилка SSL ініціалізації</string>
+  <string name="auth_ssl_unverified_server_title">Неможливо перевірити SSL-сертифікат сервера</string>
   <string name="auth_bad_oc_version_title">Не вдалося визначити версію сервер серверу</string>
   <string name="auth_wrong_connection_title">Не вдалося встановити з\'єднання</string>
   <string name="auth_secure_connection">Встановлено захищене з\'єднання</string>
+  <string name="auth_unauthorized">Невірне ім\'я користувача або пароль</string>
+  <string name="auth_oauth_error">Невдала авторизація</string>
+  <string name="auth_oauth_error_access_denied">Доступ заборонений сервером авторизації</string>
+  <string name="auth_wtf_reenter_URL">Несподівана відповідь; будь ласка, введіть адресу сервера знову</string>
+  <string name="auth_expired_oauth_token_toast">Час авторизації минув. Будь ласка, увійдіть знову</string>
+  <string name="auth_expired_basic_auth_toast">Будь ласка, введіть пароль</string>
+  <string name="auth_expired_saml_sso_token_toast">Час сесії минув. Будь ласка, підключіться знов</string>
+  <string name="auth_connecting_auth_server">Підключення до серверу аутентифікації...</string>
+  <string name="auth_unsupported_auth_method">Сервер не підтримує обраний метод аутентифікації</string>
+  <string name="auth_unsupported_multiaccount">%1$s не підтримує одночасно декілька облікових записів</string>
+  <string name="auth_fail_get_user_name">Ваш сервер не повертає коректний ідентифікатор користувача, будь ласка зверніться до адміністратора
+⇥</string>
+  <string name="auth_can_not_auth_against_server">Аутентифікація на цьому сервері неможлива</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_folder_alert">Ви дійсно бажаєте видалити %1$s та весь вміст?</string>
   <string name="confirmation_remove_local">Лише локально</string>
   <string name="confirmation_remove_folder_local">Лише локальний зміст</string>
   <string name="confirmation_remove_remote">Видалити із серверу</string>
@@ -116,9 +188,15 @@
   <string name="rename_server_fail_msg">Перейменування не вдалося</string>
   <string name="sync_file_fail_msg">Неможливо перевірити віддалений файл</string>
   <string name="sync_file_nothing_to_do_msg">Зміст файлу вже синхронізовано</string>
+  <string name="create_dir_fail_msg">Не вдалося створити теку</string>
+  <string name="filename_forbidden_characters">Заборонені символи: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_empty"> Ім\'я файлу не може бути порожнім.</string>
   <string name="wait_a_moment">Зачекайте хвилинку</string>
   <string name="filedisplay_unexpected_bad_get_content">Несподівані проблеми ; будь ласка, спробуйте використати іншу програму для вибору файлу</string>
   <string name="filedisplay_no_file_selected">Не обрано файл</string>
+  <string name="activity_chooser_title">Надіслати посилання...</string>
+  <string name="oauth_check_onoff">Увійти через oAuth2</string>
+  <string name="oauth_login_connection">Підключення до серверу oAuth2...</string>
   <string name="ssl_validator_header">Не вдалося перевірити ідентифікацію сайта</string>
   <string name="ssl_validator_reason_cert_not_trusted">- Не довірений сертифікат серверу</string>
   <string name="ssl_validator_reason_cert_expired">- Сертифікат серверу втратив чинність</string>
@@ -141,17 +219,62 @@
   <string name="ssl_validator_label_validity_to">До:</string>
   <string name="ssl_validator_label_signature">Підпис:</string>
   <string name="ssl_validator_label_signature_algorithm">Алгоритм:</string>
+  <string name="ssl_validator_null_cert">Не вдалося показати сертифікат.</string>
+  <string name="ssl_validator_no_info_about_error">- Інформація про помилку відсутня</string>
   <string name="placeholder_sentence">Це заповнювач</string>
+  <string name="placeholder_filename">placeholder.txt</string>
+  <string name="placeholder_filetype">PNG зображення</string>
+  <string name="placeholder_filesize">389 КБ</string>
+  <string name="placeholder_timestamp">2012/05/18 12:23 PM</string>
+  <string name="placeholder_media_time">12:23:45</string>
   <string name="instant_upload_on_wifi">Завантажувати зображення тільки через WiFi</string>
+  <string name="instant_video_upload_on_wifi">Завантажувати відео тільки через WiFi</string>
   <string name="instant_upload_path">/InstantUpload</string>
   <string name="conflict_title">Конфлікт оновлення</string>
   <string name="conflict_message">Віддалений файл %s не синхронізовано з локальним. Продовження процедури замінить вміст файлу на сервері.</string>
   <string name="conflict_keep_both">Залишити обидва</string>
   <string name="conflict_overwrite">Замінити</string>
   <string name="conflict_dont_upload">Не завантажувати</string>
+  <string name="preview_image_description">Попередній перегляд зображення</string>
+  <string name="preview_image_error_unknown_format">Не вдалося показати зображення</string>
+  <string name="error__upload__local_file_not_copied">%1$s неможливо скопіювати до %2$s</string>
+  <string name="share_link_no_support_share_api">На жаль, обмін не включений на вашому сервері. Будь ласка, зв\'яжіться з вашим адмінистратором.</string>
+  <string name="share_link_file_no_exist">Неможливо поділитися. Будь ласка, перевірте, чи існує файл</string>
+  <string name="share_link_file_error">Виникла помилка при спробі поділитися файлом або текою</string>
+  <string name="unshare_link_file_no_exist">Неможливо заборонити доступ. Будь ласка, перевірте, чи існує файл</string>
+  <string name="unshare_link_file_error">Виникла помилка при спробі заборонити доступ до файлу або теки</string>
   <string name="activity_chooser_send_file_title">Надіслати</string>
+  <string name="copy_link">Копіювати посилання</string>
   <string name="clipboard_text_copied">Скопійовано в буфер обміну</string>
+  <string name="error_cant_bind_to_operations_service">Критична помилка: виконання операції неможливе</string>
+  <string name="network_error_socket_exception">Виникла помилка при підключені до сервера.</string>
+  <string name="network_error_socket_timeout_exception">Під час очікування на сервер виникла помилка, операцію неможливо завершити</string>
+  <string name="network_error_connect_timeout_exception">Під час очікування на сервер виникла помилка, операцію неможливо завершити</string>
+  <string name="network_host_not_available">Неможливо завершити операцію, сервер недоступний</string>
   <string name="empty"></string>
+  <string name="forbidden_permissions">У вас немає повноважень %s</string>
+  <string name="forbidden_permissions_rename">на перейменування цього файла</string>
+  <string name="forbidden_permissions_delete">на видалення цього файла</string>
+  <string name="share_link_forbidden_permissions">для надання доступу до файла</string>
+  <string name="unshare_link_forbidden_permissions">для закриття доступу до файла</string>
+  <string name="forbidden_permissions_create">для створення файла</string>
+  <string name="uploader_upload_forbidden_permissions">для завантаження в цю теку</string>
+  <string name="downloader_download_file_not_found">Файл більше не доступний на сервері</string>
   <string name="prefs_category_accounts">Облікові записи</string>
+  <string name="prefs_add_account">Додати обліковий запис</string>
+  <string name="auth_redirect_non_secure_connection_title">Безпечне підключення перенаправляється через незабезпечений маршрут.</string>
+  <string name="actionbar_logger">Журнали</string>
+  <string name="log_send_history_button">Надіслати історію</string>
+  <string name="log_mail_subject">Журнали Android-додатка ownCloud</string>
+  <string name="log_progress_dialog_text">Завантаження даних...</string>
+  <string name="saml_authentication_required_text">Потрібна аутентифікація</string>
+  <string name="saml_authentication_wrong_pass">Невірний пароль</string>
+  <string name="actionbar_move">Перемістити</string>
+  <string name="file_list_empty_moving">Тут нічого немає. Ви можете додати теку!</string>
   <string name="move_choose_button_text">Обрати</string>
+  <string name="move_file_not_found">Неможливо перемістити. Будь ласка, перевірте, чи існує файл</string>
+  <string name="move_file_invalid_into_descendent">Неможливо перемістити теку до теки-нащадка</string>
+  <string name="move_file_invalid_overwrite">Файл вже існує в теці призначення</string>
+  <string name="move_file_error">Виникла помилка при спробі перемістити файл або теку</string>
+  <string name="forbidden_permissions_move">перемістити цей файл</string>
 </resources>

+ 4 - 0
res/values/strings.xml

@@ -253,6 +253,7 @@
     <string name="preview_image_error_unknown_format">This image cannot be shown</string>
     
     <string name="error__upload__local_file_not_copied">%1$s could not be copied to %2$s local folder</string>
+    <string name="prefs_instant_upload_path_title">Upload Path</string>
 
 	<string name="share_link_no_support_share_api">Sorry, sharing is not enabled on your server. Please contact your
 		administrator.</string>
@@ -304,4 +305,7 @@
 	<string name="move_file_invalid_overwrite">The file exists already in the destination folder</string>
 	<string name="move_file_error">An error occurred while trying to move this file or folder</string>
 	<string name="forbidden_permissions_move">to move this file</string>
+
+	<string name="prefs_category_instant_uploading">Instant Uploads</string>
+	<string name="prefs_category_security">Security</string>
 </resources>

+ 36 - 30
res/xml/preferences.xml

@@ -21,39 +21,45 @@
     <PreferenceCategory android:title="@string/prefs_category_accounts" android:key="accounts_category">
     </PreferenceCategory>
     
-	<PreferenceCategory android:title="@string/prefs_category_general">
-    <!-- ListPreference
-        android:key="select_oc_account"
-        android:title="@string/prefs_select_oc_account"
-        android:summary="@string/prefs_summary_select_oc_account" 
-        / -->
-    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:title="@string/prefs_pincode" android:key="set_pincode" 
+	<PreferenceCategory android:title="@string/prefs_category_security">
+	    <!-- ListPreference
+	        android:key="select_oc_account"
+	        android:title="@string/prefs_select_oc_account"
+	        android:summary="@string/prefs_summary_select_oc_account"
+	        / -->
+	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:title="@string/prefs_pincode" android:key="set_pincode" 
                         android:summary="@string/prefs_pincode_summary"/>
-    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_uploading" 
-                        android:title="@string/prefs_instant_upload"  
-                        android:summary="@string/prefs_instant_upload_summary"/>
+
     <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="save_last_upload_location"
         android:title="@string/prefs_remember_last_share_location"
         android:summary="@string/prefs_remember_last_upload_location_summary"/>
-    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:dependency="instant_uploading" 
-        				android:disableDependentsState="true" 
-        				android:title="@string/instant_upload_on_wifi" 
-        				android:key="instant_upload_on_wifi"/>
-    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_video_uploading" 
-                        android:title="@string/prefs_instant_video_upload"  
-                        android:summary="@string/prefs_instant_video_upload_summary"/>
-    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:dependency="instant_video_uploading" 
-        				android:disableDependentsState="true" 
-        				android:title="@string/instant_video_upload_on_wifi" 
-        				android:key="instant_video_upload_on_wifi"/>
-    <!-- DISABLED FOR RELEASE UNTIL FIXED 
-    CheckBoxPreference android:key="log_to_file" 
-                        android:title="@string/prefs_log_title"  
-                        android:summary="@string/prefs_log_summary"/>
-	<Preference 		android:key="log_history" 
-                        android:title="@string/prefs_log_title_history"  
-                        android:summary="@string/prefs_log_summary_history"/ -->
-                        
+	</PreferenceCategory>
+
+    <PreferenceCategory android:title="@string/prefs_category_instant_uploading">
+	    <EditTextPreference android:title="@string/prefs_instant_upload_path_title"
+	        				android:defaultValue="@string/instant_upload_path"
+	        				android:key="instant_upload_path"/>
+	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_uploading"
+	                        android:title="@string/prefs_instant_upload"
+	                        android:summary="@string/prefs_instant_upload_summary"/>
+	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:dependency="instant_uploading"
+	        				android:disableDependentsState="true"
+	        				android:title="@string/instant_upload_on_wifi"
+	        				android:key="instant_upload_on_wifi"/>
+	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_video_uploading"
+	                        android:title="@string/prefs_instant_video_upload"
+	                        android:summary="@string/prefs_instant_video_upload_summary"/>
+	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:dependency="instant_video_uploading"
+	        				android:disableDependentsState="true"
+	        				android:title="@string/instant_video_upload_on_wifi"
+	        				android:key="instant_video_upload_on_wifi"/>
+	    <!-- DISABLED FOR RELEASE UNTIL FIXED
+	    CheckBoxPreference android:key="log_to_file"
+	                        android:title="@string/prefs_log_title"
+	                        android:summary="@string/prefs_log_summary"/>
+		<Preference 		android:key="log_history"
+	                        android:title="@string/prefs_log_title_history"
+	                        android:summary="@string/prefs_log_summary_history"/ -->
     </PreferenceCategory>
 	
 	<PreferenceCategory android:title="@string/prefs_category_more" android:key="more">
@@ -68,4 +74,4 @@
 	</PreferenceCategory>
     
 
-</PreferenceScreen>
+</PreferenceScreen>

+ 25 - 10
src/com/owncloud/android/operations/CreateFolderOperation.java

@@ -84,21 +84,36 @@ public class CreateFolderOperation extends SyncOperation implements OnRemoteOper
        }
     }
 
-    
     /**
      * Save new directory in local database
      */
     public void saveFolderInDB() {
-        OCFile newDir = new OCFile(mRemotePath);
-        newDir.setMimetype("DIR");
-        long parentId = getStorageManager().getFileByPath(FileStorageUtils.getParentPath(mRemotePath)).getFileId();
-        newDir.setParentId(parentId);
-        newDir.setModificationTimestamp(System.currentTimeMillis());
-        getStorageManager().saveFile(newDir);
+        if (mCreateFullPath && getStorageManager().
+                getFileByPath(FileStorageUtils.getParentPath(mRemotePath)) == null){// When parent
+                                                                                    // of remote path
+                                                                                    // is not created 
+            String[] subFolders = mRemotePath.split("/");
+            String composedRemotePath = "/";
 
-        Log_OC.d(TAG, "Create directory " + mRemotePath + " in Database");
+            // For each antecesor folders create them recursively
+            for (int i=0; i<subFolders.length; i++) {
+                String subFolder =  subFolders[i];
+                if (!subFolder.isEmpty()) {
+                    composedRemotePath = composedRemotePath + subFolder + "/";
+                    mRemotePath = composedRemotePath;
+                    saveFolderInDB();
+                }
+            }
+        } else { // Create directory on DB
+            OCFile newDir = new OCFile(mRemotePath);
+            newDir.setMimetype("DIR");
+            long parentId = getStorageManager().
+                    getFileByPath(FileStorageUtils.getParentPath(mRemotePath)).getFileId();
+            newDir.setParentId(parentId);
+            newDir.setModificationTimestamp(System.currentTimeMillis());
+            getStorageManager().saveFile(newDir);
 
+            Log_OC.d(TAG, "Create directory " + mRemotePath + " in Database");
+        }
     }
-
-
 }

+ 63 - 1
src/com/owncloud/android/ui/activity/Preferences.java

@@ -76,6 +76,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
     private final Handler mHandler = new Handler();
     private String mAccountName;
     private boolean mShowContextMenu = false;
+    private String mUploadPath;
 
 
     @SuppressWarnings("deprecation")
@@ -89,7 +90,9 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
         actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setTitle(R.string.actionbar_settings);
-        
+
+        loadInstantUploadPath();
+
         // Load the accounts category for adding the list of accounts
         mAccountsPrefCategory = (PreferenceCategory) findPreference("accounts_category");
 
@@ -259,6 +262,16 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
                 preferenceCategory.removePreference(pImprint);
             }
         }
+
+        Preference pInstantUploadPathApp = (Preference) findPreference("instant_upload_path");
+
+        pInstantUploadPathApp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                mUploadPath = updateInstantUploadPath(newValue.toString());
+                return true;
+            }
+        });
             
         /* About App */
        pAboutApp = (Preference) findPreference("about_app");
@@ -274,6 +287,12 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
        }
     }
 
+    @Override
+    protected void onPause() {
+        saveInstantUploadPathOnPreferences();
+        super.onPause();
+    }
+
     @Override
     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
 
@@ -482,4 +501,47 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
 
     }
 
+    /**
+     * Update the upload path checking that it is a correct path
+     * @param uploadPath: path write by user
+     * @return String: uploadPath
+     */
+    private String updateInstantUploadPath(String uploadPath) {
+        String slashString = "/";
+
+        // If slashes are duplicated, replace them for only one slash
+        uploadPath = uploadPath.replaceAll("/+", slashString);
+
+        // Remove last slash from path
+        if (uploadPath.length() > 0 && uploadPath.charAt(uploadPath.length()-1) == slashString.charAt(0)) {
+            uploadPath = uploadPath.substring(0, uploadPath.length()-1);
+        }
+
+        if (uploadPath.isEmpty()) { // Set default instant upload path
+            uploadPath = getString(R.string.instant_upload_path);
+        }else {
+            if (!uploadPath.startsWith(slashString)) { // Add initial slash on path if necessary
+                uploadPath = slashString.concat(uploadPath);
+            }
+        }
+        return uploadPath;
+    }
+
+    /**
+     * Load upload path set on preferences
+     */
+    private void loadInstantUploadPath() {
+        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+        mUploadPath = appPrefs.getString("instant_upload_path", getString(R.string.instant_upload_path));
+    }
+
+    /**
+     * Save the "Instant Upload Path" on preferences
+     */
+    private void saveInstantUploadPathOnPreferences() {
+        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());        
+        SharedPreferences.Editor editor = appPrefs.edit();
+        editor.putString("instant_upload_path", mUploadPath);
+        editor.commit();
+    }
 }

+ 6 - 2
src/com/owncloud/android/utils/FileStorageUtils.java

@@ -26,6 +26,8 @@ import com.owncloud.android.lib.resources.files.RemoteFile;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
 import android.net.Uri;
 import android.os.Environment;
 import android.os.StatFs;
@@ -73,7 +75,9 @@ public class FileStorageUtils {
     }
 
     public static String getInstantUploadFilePath(Context context, String fileName) {
-        String uploadPath = context.getString(R.string.instant_upload_path);
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+        String uploadPathdef = context.getString(R.string.instant_upload_path);
+        String uploadPath = pref.getString("instant_upload_path", uploadPathdef);
         String value = uploadPath + OCFile.PATH_SEPARATOR +  (fileName == null ? "" : fileName);
         return value;
     }
@@ -120,4 +124,4 @@ public class FileStorageUtils {
         return file;
     }
   
-}
+}