소스 검색

Merge branch 'master' into reliable_uploads_actions_uploads_view

David A. Velasco 9 년 전
부모
커밋
259c94a45b
84개의 변경된 파일1430개의 추가작업 그리고 230개의 파일을 삭제
  1. 10 9
      CONTRIBUTING.md
  2. 2 0
      SETUP.md
  3. 5 1
      THIRD_PARTY.txt
  4. 1 0
      build.gradle
  5. 9 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/.classpath
  6. 14 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/AndroidManifest.xml
  7. 55 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/R.txt
  8. 14 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/aapt/AndroidManifest.xml
  9. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/annotations.zip
  10. 92 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/build.xml
  11. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/jars/classes.jar
  12. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/libs/classes.jar
  13. 5 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/proguard.txt
  14. 15 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/project.properties
  15. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-hdpi-v4/fab_bg_mini.png
  16. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-hdpi-v4/fab_bg_normal.png
  17. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-mdpi-v4/fab_bg_mini.png
  18. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-mdpi-v4/fab_bg_normal.png
  19. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xhdpi-v4/fab_bg_mini.png
  20. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xhdpi-v4/fab_bg_normal.png
  21. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxhdpi-v4/fab_bg_mini.png
  22. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxhdpi-v4/fab_bg_normal.png
  23. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxxhdpi-v4/fab_bg_mini.png
  24. BIN
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxxhdpi-v4/fab_bg_normal.png
  25. 22 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/values/values.xml
  26. 2 0
      libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/src/.readme
  27. 1 0
      project.properties
  28. BIN
      res/drawable-hdpi-v9/ic_action_download.png
  29. BIN
      res/drawable-hdpi-v9/ic_action_refresh.png
  30. BIN
      res/drawable-hdpi-v9/ic_action_settings.png
  31. BIN
      res/drawable-hdpi/ic_checkbox_blank_outline.png
  32. BIN
      res/drawable-hdpi/ic_checkbox_marked.png
  33. BIN
      res/drawable-hdpi/ic_import.png
  34. BIN
      res/drawable-mdpi-v9/ic_action_download.png
  35. BIN
      res/drawable-mdpi-v9/ic_action_refresh.png
  36. BIN
      res/drawable-mdpi-v9/ic_action_settings.png
  37. BIN
      res/drawable-mdpi/ic_checkbox_blank_outline.png
  38. BIN
      res/drawable-mdpi/ic_checkbox_marked.png
  39. BIN
      res/drawable-mdpi/ic_import.png
  40. BIN
      res/drawable-xhdpi/ic_import.png
  41. BIN
      res/drawable-xxhdpi/ic_import.png
  42. BIN
      res/drawable-xxhdpi/ic_sort_variant.png
  43. 11 0
      res/drawable/fab_label_background.xml
  44. 0 1
      res/layout-land/account_setup.xml
  45. 2 2
      res/layout/drawer.xml
  46. 3 2
      res/layout/list_footer.xml
  47. 57 5
      res/layout/list_fragment.xml
  48. 3 4
      res/layout/uploader_list_item_layout.xml
  49. 5 12
      res/menu/main_menu.xml
  50. 1 0
      res/values-da/strings.xml
  51. 19 0
      res/values-el/strings.xml
  52. 1 0
      res/values-en-rGB/strings.xml
  53. 2 0
      res/values-es/strings.xml
  54. 1 0
      res/values-et-rEE/strings.xml
  55. 1 1
      res/values-fr/strings.xml
  56. 1 0
      res/values-he/strings.xml
  57. 49 0
      res/values-hy/strings.xml
  58. 38 0
      res/values-is/strings.xml
  59. 1 0
      res/values-mk/strings.xml
  60. 1 0
      res/values-nb-rNO/strings.xml
  61. 1 1
      res/values-nl/strings.xml
  62. 92 13
      res/values-pl/strings.xml
  63. 1 1
      res/values-pt-rPT/strings.xml
  64. 1 0
      res/values-ru/strings.xml
  65. 66 18
      res/values-sl/strings.xml
  66. 72 0
      res/values-sr/strings.xml
  67. 1 0
      res/values-sv/strings.xml
  68. 1 0
      res/values-tr/strings.xml
  69. 21 0
      res/values-uk/strings.xml
  70. 67 0
      res/values-zh-rCN/strings.xml
  71. 9 2
      res/values/colors.xml
  72. 9 1
      res/values/styles.xml
  73. 1 0
      setup_env.bat
  74. 1 0
      setup_env.sh
  75. 8 0
      src/com/owncloud/android/datamodel/OCFile.java
  76. 31 23
      src/com/owncloud/android/ui/activity/FileDisplayActivity.java
  77. 1 1
      src/com/owncloud/android/ui/activity/FolderPickerActivity.java
  78. 14 0
      src/com/owncloud/android/ui/activity/UploadFilesActivity.java
  79. 251 130
      src/com/owncloud/android/ui/activity/Uploader.java
  80. 116 0
      src/com/owncloud/android/ui/adapter/UploaderAdapter.java
  81. 43 1
      src/com/owncloud/android/ui/fragment/ExtendedListFragment.java
  82. 1 1
      src/com/owncloud/android/ui/fragment/LocalFileListFragment.java
  83. 178 0
      src/com/owncloud/android/ui/fragment/OCFileListFragment.java
  84. 1 1
      tests/project.properties

+ 10 - 9
CONTRIBUTING.md

@@ -5,11 +5,11 @@ If you have questions about how to use ownCloud, please direct these to the [mai
 ### Guidelines
 * [Report the issue](https://github.com/owncloud/android/issues/new) using our [template][template], it includes all the informations we need to track down the issue.
 * This repository is *only* for issues within the ownCloud Android app code. Issues in other compontents should be reported in their own repositores: 
-  - [ownCloud code](https://github.com/owncloud/core/issues)
+  - [ownCloud core](https://github.com/owncloud/core/issues)
   - [iOS client](https://github.com/owncloud/ios-issues/issues)
   - [Desktop client](https://github.com/owncloud/mirall/issues)
   - [ownCloud apps](https://github.com/owncloud/apps/issues) (e.g. Calendar, Contacts...)
-* Search the existing issues first, it's likely that your issue was already reported.
+* Search the [existing issues](https://github.com/owncloud/android/issues) first, it's likely that your issue was already reported.
 
 If your issue appears to be a bug, and hasn't been reported, open a new issue.
 
@@ -44,14 +44,15 @@ NOTE: You must have the git installation folder in your environment variable PAT
 * Pull any changes from your remote branch 'master': ```git pull origin master```
 * Make official ownCloud repo known as upstream: ```git remote add upstream git@github.com:owncloud/android.git```
 * Make sure to get the latest changes from official android/master branch: ```git pull upstream master```
+* Make sure you read [SETUP.md](https://github.com/owncloud/android/blob/master/SETUP.md) when you start working on this project.
 
 
 ### 7. Create pull request:
 
-NOTE: You must sign the [Contributor Agreement][1] before your changes can be accepted!
+NOTE: You must sign the [Contributor Agreement][agreement] before your changes can be accepted!
 
-* Commit your changes locally: "git commit -a"
-* Push your changes to your GitHub repo: "git push"
+* Commit your changes locally: ```git commit -a```
+* Push your changes to your GitHub repo: ```git push```
 * Browse to https://github.com/YOURGITHUBNAME/android/pulls and issue pull request
 * Enter description and send pull request.
 
@@ -59,10 +60,10 @@ NOTE: You must sign the [Contributor Agreement][1] before your changes can be ac
 
 To make sure your new pull request does not contain commits which are already contained in previous PRs, create a new branch which is a clone of upstream/master.
 
-* git fetch upstream
-* git checkout -b my_new_master_branch upstream/master
-* If you want to rename that branch later: "git checkout -b my_new_master_branch_with_new_name"
-* Push branch to server: "git push -u origin name_of_local_master_branch"
+* ```git fetch upstream```
+* ```git checkout -b my_new_master_branch upstream/master```
+* If you want to rename that branch later: ```git checkout -b my_new_master_branch_with_new_name```
+* Push branch to server: ```git push -u origin name_of_local_master_branch```
 * Use GitHub to issue PR
 
 

+ 2 - 0
SETUP.md

@@ -91,6 +91,7 @@ The generated APK file is saved in android/build/outputs/apk as android-debug.ap
   - owncloud-android 
   - android-support-appcompat-v7-exploded-aar
   - android-support-design-exploded-aar
+  - com-getbase-floatingactionbutton-1-10-0-exploded-aar
   - owncloud-android-workaround-accounts (optional)
   - ownCloud Android Library
   - ownCloud Sample Client (optional)
@@ -104,6 +105,7 @@ The generated APK file is saved in android/build/outputs/apk as android-debug.ap
   - ownCloud Android Library
   - android-support-appcompat-v7-exploded-aar
   - android-support-design-exploded-aar
+  - com-getbase-floatingactionbutton-1-10-0-exploded-aar
   - owncloud-android
 * If any error on those projects persists, check the project properties. In the 'Android' section, API Level should be
   - ownCloud Android Library	-> API level 19

+ 5 - 1
THIRD_PARTY.txt

@@ -59,4 +59,8 @@ The third party software included and used by this project is:
    modifications com.ortiz.touch.ExtendedViewPager and com.ortiz.touch.TouchImageView classes. 
    See https://github.com/MikeOrtiz/TouchImageView
  
- 
+ * floatingactionbutton 1.10.1.
+   Copyright (c) 2014 Jerzy Chalupski
+   Licensed under Apache License, Version 2.0.
+   placed at libs/com-getbase-floatingactionbutton-1-10-0-exploded-aar has been exploded by ownCloud Inc.
+   See https://github.com/futuresimple/android-floating-action-button 

+ 1 - 0
build.gradle

@@ -25,6 +25,7 @@ dependencies {
     compile 'com.android.support:design:23.1.1'
     compile 'com.jakewharton:disklrucache:2.0.2'
     compile 'com.android.support:appcompat-v7:23.1.1'
+    compile 'com.getbase:floatingactionbutton:1.10.1'
 }
 
 android {

+ 9 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>

+ 14 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/AndroidManifest.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest
+    package="com.getbase.floatingactionbutton"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:versionCode="15"
+    android:versionName="1.10.1" >
+
+    <uses-sdk
+        android:minSdkVersion="14"
+        android:targetSdkVersion="22" />
+
+    <application />
+
+</manifest>

+ 55 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/R.txt

@@ -0,0 +1,55 @@
+int attr fab_addButtonColorNormal 0x7f010009
+int attr fab_addButtonColorPressed 0x7f010008
+int attr fab_addButtonPlusIconColor 0x7f01000b
+int attr fab_addButtonSize 0x7f01000a
+int attr fab_addButtonStrokeVisible 0x7f01000c
+int attr fab_colorDisabled 0x7f010002
+int attr fab_colorNormal 0x7f010003
+int attr fab_colorPressed 0x7f010001
+int attr fab_expandDirection 0x7f01000f
+int attr fab_icon 0x7f010004
+int attr fab_labelStyle 0x7f01000d
+int attr fab_labelsPosition 0x7f01000e
+int attr fab_plusIconColor 0x7f010000
+int attr fab_size 0x7f010005
+int attr fab_stroke_visible 0x7f010007
+int attr fab_title 0x7f010006
+int dimen fab_actions_spacing 0x7f030000
+int dimen fab_icon_size 0x7f030001
+int dimen fab_labels_margin 0x7f030002
+int dimen fab_plus_icon_size 0x7f030003
+int dimen fab_plus_icon_stroke 0x7f030004
+int dimen fab_shadow_offset 0x7f030005
+int dimen fab_shadow_radius 0x7f030006
+int dimen fab_size_mini 0x7f030007
+int dimen fab_size_normal 0x7f030008
+int dimen fab_stroke_width 0x7f030009
+int drawable fab_bg_mini 0x7f020000
+int drawable fab_bg_normal 0x7f020001
+int id down 0x7f040006
+int id fab_expand_menu_button 0x7f040000
+int id fab_label 0x7f040001
+int id left 0x7f040004
+int id mini 0x7f040002
+int id normal 0x7f040003
+int id right 0x7f040005
+int id up 0x7f040007
+int[] styleable AddFloatingActionButton { 0x7f010000 }
+int styleable AddFloatingActionButton_fab_plusIconColor 0
+int[] styleable FloatingActionButton { 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007 }
+int styleable FloatingActionButton_fab_colorDisabled 1
+int styleable FloatingActionButton_fab_colorNormal 2
+int styleable FloatingActionButton_fab_colorPressed 0
+int styleable FloatingActionButton_fab_icon 3
+int styleable FloatingActionButton_fab_size 4
+int styleable FloatingActionButton_fab_stroke_visible 6
+int styleable FloatingActionButton_fab_title 5
+int[] styleable FloatingActionsMenu { 0x7f010008, 0x7f010009, 0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f }
+int styleable FloatingActionsMenu_fab_addButtonColorNormal 1
+int styleable FloatingActionsMenu_fab_addButtonColorPressed 0
+int styleable FloatingActionsMenu_fab_addButtonPlusIconColor 3
+int styleable FloatingActionsMenu_fab_addButtonSize 2
+int styleable FloatingActionsMenu_fab_addButtonStrokeVisible 4
+int styleable FloatingActionsMenu_fab_expandDirection 7
+int styleable FloatingActionsMenu_fab_labelStyle 5
+int styleable FloatingActionsMenu_fab_labelsPosition 6

+ 14 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/aapt/AndroidManifest.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest
+    package="com.getbase.floatingactionbutton"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:versionCode="15"
+    android:versionName="1.10.1" >
+
+    <uses-sdk
+        android:minSdkVersion="14"
+        android:targetSdkVersion="22" />
+
+    <application />
+
+</manifest>

BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/annotations.zip


+ 92 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/build.xml

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="com-getbase-floatingactionbutton-1-10-0-exploded-aar" default="help">
+
+    <!-- The local.properties file is created and updated by the 'android' tool.
+         It contains the path to the SDK. It should *NOT* be checked into
+         Version Control Systems. -->
+    <property file="local.properties" />
+
+    <!-- The ant.properties file can be created by you. It is only edited by the
+         'android' tool to add properties to it.
+         This is the place to change some Ant specific build properties.
+         Here are some properties you may want to change/update:
+
+         source.dir
+             The name of the source directory. Default is 'src'.
+         out.dir
+             The name of the output directory. Default is 'bin'.
+
+         For other overridable properties, look at the beginning of the rules
+         files in the SDK, at tools/ant/build.xml
+
+         Properties related to the SDK location or the project target should
+         be updated using the 'android' tool with the 'update' action.
+
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems.
+
+         -->
+    <property file="ant.properties" />
+
+    <!-- if sdk.dir was not set from one of the property file, then
+         get it from the ANDROID_HOME env var.
+         This must be done before we load project.properties since
+         the proguard config can use sdk.dir -->
+    <property environment="env" />
+    <condition property="sdk.dir" value="${env.ANDROID_HOME}">
+        <isset property="env.ANDROID_HOME" />
+    </condition>
+
+    <!-- The project.properties file is created and updated by the 'android'
+         tool, as well as ADT.
+
+         This contains project specific properties such as project target, and library
+         dependencies. Lower level build properties are stored in ant.properties
+         (or in .classpath for Eclipse projects).
+
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems. -->
+    <loadproperties srcFile="project.properties" />
+
+    <!-- quick check on sdk.dir -->
+    <fail
+            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
+            unless="sdk.dir"
+    />
+
+    <!--
+        Import per project custom build rules if present at the root of the project.
+        This is the place to put custom intermediary targets such as:
+            -pre-build
+            -pre-compile
+            -post-compile (This is typically used for code obfuscation.
+                           Compiled code location: ${out.classes.absolute.dir}
+                           If this is not done in place, override ${out.dex.input.absolute.dir})
+            -post-package
+            -post-build
+            -pre-clean
+    -->
+    <import file="custom_rules.xml" optional="true" />
+
+    <!-- Import the actual build file.
+
+         To customize existing targets, there are two options:
+         - Customize only one target:
+             - copy/paste the target into this file, *before* the
+               <import> task.
+             - customize it to your needs.
+         - Customize the whole content of build.xml
+             - copy/paste the content of the rules files (minus the top node)
+               into this file, replacing the <import> task.
+             - customize to your needs.
+
+         ***********************
+         ****** IMPORTANT ******
+         ***********************
+         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+         in order to avoid having your file be overridden by tools such as "android update project"
+    -->
+    <!-- version-tag: 1 -->
+    <import file="${sdk.dir}/tools/ant/build.xml" />
+
+</project>

BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/jars/classes.jar


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/libs/classes.jar


+ 5 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/proguard.txt

@@ -0,0 +1,5 @@
+# keep getters/setters in RotatingDrawable so that animations can still work.
+-keepclassmembers class com.getbase.floatingactionbutton.FloatingActionsMenu$RotatingDrawable {
+   void set*(***);
+   *** get*();
+}

+ 15 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/project.properties

@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-22
+android.library=true

BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-hdpi-v4/fab_bg_mini.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-hdpi-v4/fab_bg_normal.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-mdpi-v4/fab_bg_mini.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-mdpi-v4/fab_bg_normal.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xhdpi-v4/fab_bg_mini.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xhdpi-v4/fab_bg_normal.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxhdpi-v4/fab_bg_mini.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxhdpi-v4/fab_bg_normal.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxxhdpi-v4/fab_bg_mini.png


BIN
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/drawable-xxxhdpi-v4/fab_bg_normal.png


+ 22 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/res/values/values.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <declare-styleable name="AddFloatingActionButton"><attr format="color" name="fab_plusIconColor"/></declare-styleable>
+    <declare-styleable name="FloatingActionButton"><attr format="color" name="fab_colorPressed"/><attr format="color" name="fab_colorDisabled"/><attr format="color" name="fab_colorNormal"/><attr format="reference" name="fab_icon"/><attr format="enum" name="fab_size"><enum name="normal" value="0"/><enum name="mini" value="1"/></attr><attr format="string" name="fab_title"/><attr format="boolean" name="fab_stroke_visible"/></declare-styleable>
+    <declare-styleable name="FloatingActionsMenu"><attr format="color" name="fab_addButtonColorPressed"/><attr format="color" name="fab_addButtonColorNormal"/><attr format="enum" name="fab_addButtonSize"><enum name="normal" value="0"/><enum name="mini" value="1"/></attr><attr format="color" name="fab_addButtonPlusIconColor"/><attr format="boolean" name="fab_addButtonStrokeVisible"/><attr format="reference" name="fab_labelStyle"/><attr format="enum" name="fab_labelsPosition"><enum name="left" value="0"/><enum name="right" value="1"/></attr><attr format="enum" name="fab_expandDirection"><enum name="up" value="0"/><enum name="down" value="1"/><enum name="left" value="2"/><enum name="right" value="3"/></attr></declare-styleable>
+    <!-- From: file:/Users/chalup/src/android-floating-action-button/library/src/main/res/values/dimens.xml -->
+    <eat-comment/>
+    <dimen name="fab_actions_spacing">16dp</dimen>
+    <dimen name="fab_icon_size">24dp</dimen>
+    <dimen name="fab_labels_margin">8dp</dimen>
+    <dimen name="fab_plus_icon_size">14dp</dimen>
+    <dimen name="fab_plus_icon_stroke">2dp</dimen>
+    <dimen name="fab_shadow_offset">3dp</dimen>
+    <dimen name="fab_shadow_radius">9dp</dimen>
+    <dimen name="fab_size_mini">40dp</dimen>
+    <dimen name="fab_size_normal">56dp</dimen>
+    <dimen name="fab_stroke_width">1dp</dimen>
+    <!-- From: file:/Users/chalup/src/android-floating-action-button/library/src/main/res/values/ids.xml -->
+    <eat-comment/>
+    <item name="fab_expand_menu_button" type="id"/>
+    <item name="fab_label" type="id"/>
+</resources>

+ 2 - 0
libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar/src/.readme

@@ -0,0 +1,2 @@
+This hidden file is there to ensure there is an src folder.
+Once we support binary library this will go away.

+ 1 - 0
project.properties

@@ -12,5 +12,6 @@ target=android-23
 android.library.reference.1=owncloud-android-library
 android.library.reference.2=libs/android-support-appcompat-v7-exploded-aar
 android.library.reference.3=libs/android-support-design-exploded-aar
+android.library.reference.4=libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar
 java.source=7
 java.target=7

BIN
res/drawable-hdpi-v9/ic_action_download.png


BIN
res/drawable-hdpi-v9/ic_action_refresh.png


BIN
res/drawable-hdpi-v9/ic_action_settings.png


BIN
res/drawable-hdpi/ic_checkbox_blank_outline.png


BIN
res/drawable-hdpi/ic_checkbox_marked.png


BIN
res/drawable-hdpi/ic_import.png


BIN
res/drawable-mdpi-v9/ic_action_download.png


BIN
res/drawable-mdpi-v9/ic_action_refresh.png


BIN
res/drawable-mdpi-v9/ic_action_settings.png


BIN
res/drawable-mdpi/ic_checkbox_blank_outline.png


BIN
res/drawable-mdpi/ic_checkbox_marked.png


BIN
res/drawable-mdpi/ic_import.png


BIN
res/drawable-xhdpi/ic_import.png


BIN
res/drawable-xxhdpi/ic_import.png


BIN
res/drawable-xxhdpi/ic_sort_variant.png


+ 11 - 0
res/drawable/fab_label_background.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/black_semi_transparent"/>
+    <padding
+        android:left="@dimen/standard_padding"
+        android:top="4dp"
+        android:right="@dimen/standard_padding"
+        android:bottom="4dp"/>
+    <corners
+        android:radius="2dp"/>
+</shape>

+ 0 - 1
res/layout-land/account_setup.xml

@@ -110,7 +110,6 @@
 					    android:padding="0dp"
 					    android:scaleType="fitCenter"
 					    android:src="@drawable/ic_action_refresh_grey"
-            			android:onClick="onRefreshClick"
 					    android:visibility="gone"
 						android:background="@android:color/transparent"
                         android:contentDescription="@string/auth_refresh_button"

+ 2 - 2
res/layout/drawer.xml

@@ -62,8 +62,8 @@
             android:layout_width="fill_parent"
             android:layout_height="match_parent"
             android:background="@color/background_color"
-            android:divider="@color/list_divider_background"
-            android:dividerHeight="1dp"
+            android:divider="@null"
+            android:dividerHeight="0dp"
             android:paddingTop="100dp" />
 
         <LinearLayout

+ 3 - 2
res/layout/list_footer.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="56dp"
+    android:layout_height="112dp"
     android:layout_gravity="center_horizontal"
     android:gravity="center_horizontal"
     android:orientation="vertical"
@@ -14,7 +14,8 @@
         android:padding="@dimen/standard_padding"
         android:layout_gravity="center"
         android:gravity="center"
-        android:textColor="@color/setup_text_hint"
+        android:textColor="@color/secondaryTextColor"
+        android:layout_marginBottom="56dp"
         />
 
 </LinearLayout> 

+ 57 - 5
res/layout/list_fragment.xml

@@ -17,17 +17,21 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:fab="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
+    xmlns:fab="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_weight="1" >
+    android:layout_height="match_parent">
 
     <android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/swipe_containing_list"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" 
-        android:layout_weight="1"
+        android:layout_height="match_parent"
         android:footerDividersEnabled="false"
         android:visibility="visible" >
         
@@ -81,4 +85,52 @@
             </ScrollView>
     </android.support.v4.widget.SwipeRefreshLayout>
 
-</FrameLayout>
+</FrameLayout>
+    <com.getbase.floatingactionbutton.FloatingActionsMenu
+        android:id="@+id/fab_main"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true"
+        fab:fab_addButtonColorNormal="@color/primary_button_background_color"
+        fab:fab_addButtonColorPressed="@color/owncloud_blue"
+        fab:fab_addButtonPlusIconColor="@color/white"
+        fab:fab_labelStyle="@style/menu_labels_style"
+        android:layout_marginBottom="@dimen/standard_margin"
+        android:layout_marginRight="@dimen/standard_margin"
+        android:layout_marginEnd="@dimen/standard_margin"
+        android:visibility="gone">
+
+        <com.getbase.floatingactionbutton.FloatingActionButton
+            android:id="@+id/fab_upload"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            fab:fab_size="mini"
+            fab:fab_icon="@drawable/ic_action_upload"
+            fab:fab_colorNormal="@color/primary_button_background_color"
+            fab:fab_colorPressed="@color/owncloud_blue"
+            fab:fab_title=""/>
+
+        <com.getbase.floatingactionbutton.FloatingActionButton
+            android:id="@+id/fab_mkdir"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            fab:fab_size="mini"
+            fab:fab_icon="@drawable/ic_action_create_dir"
+            fab:fab_colorNormal="@color/primary_button_background_color"
+            fab:fab_colorPressed="@color/owncloud_blue"
+            fab:fab_title=""/>
+
+        <com.getbase.floatingactionbutton.FloatingActionButton
+            android:id="@+id/fab_upload_from_app"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            fab:fab_size="mini"
+            fab:fab_icon="@drawable/ic_import"
+            fab:fab_colorNormal="@color/primary_button_background_color"
+            fab:fab_colorPressed="@color/owncloud_blue"
+            fab:fab_title=""/>
+
+    </com.getbase.floatingactionbutton.FloatingActionsMenu>
+</RelativeLayout>

+ 3 - 4
res/layout/uploader_list_item_layout.xml

@@ -29,7 +29,7 @@
         android:layout_width="@dimen/file_icon_size"
         android:layout_height="@dimen/file_icon_size"
         android:layout_gravity="center_vertical|center"
-        android:src="@drawable/ic_menu_archive" 
+        android:src="@drawable/ic_menu_archive"
         android:id="@+id/thumbnail"
         android:layout_marginRight="@dimen/standard_padding"/>
     
@@ -37,9 +37,8 @@
         android:text="TextView" 
         android:layout_width="fill_parent" 
         android:id="@+id/filename"
-        android:layout_height="wrap_content" 
+        android:layout_height="wrap_content"
         android:textColor="@android:color/black"
-		android:layout_gravity="center_vertical"
-        android:textSize="20dip"/>
+        android:textSize="16sp" />
     
 </LinearLayout>

+ 5 - 12
res/menu/main_menu.xml

@@ -20,18 +20,11 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
-    <item
-        android:id="@+id/action_upload"
-        android:icon="@drawable/ic_action_upload"
-        android:orderInCategory="2"
-        app:showAsAction="always"
-        android:title="@string/actionbar_upload"
-        android:contentDescription="@string/actionbar_upload"/>
     <item
         android:id="@+id/action_create_dir"
         android:icon="@drawable/ic_action_create_dir"
-        android:orderInCategory="2"
-        app:showAsAction="always"
+        android:orderInCategory="1"
+        app:showAsAction="never"
         android:title="@string/actionbar_mkdir"
         android:contentDescription="@string/actionbar_mkdir"/>
     <item
@@ -43,14 +36,14 @@
     <item
         android:id="@+id/action_sync_account"
         android:icon="@drawable/ic_action_refresh"
-        android:orderInCategory="2"
+        android:orderInCategory="1"
         app:showAsAction="never"
         android:title="@string/actionbar_sync"
         android:contentDescription="@string/actionbar_sync"/>
 	<item
         android:id="@+id/action_sort"
-        android:icon="@android:drawable/ic_menu_sort_by_size"
-        android:orderInCategory="2"
+        android:icon="@drawable/ic_sort_variant"
+        android:orderInCategory="1"
         app:showAsAction="never"
         android:title="@string/actionbar_sort"
         android:contentDescription="@string/actionbar_sort"/>

+ 1 - 0
res/values-da/strings.xml

@@ -293,6 +293,7 @@
   <string name="share_via_link_section_title">Del link</string>
   <string name="share_via_link_expiration_date_label">Vælg udløbsdato</string>
   <string name="share_via_link_password_label">Beskyt med adgangskode</string>
+  <string name="share_via_link_password_title">Sikret</string>
   <string name="share_search">Søg</string>
   <string name="share_privilege_can_share">kan dele</string>
   <string name="share_privilege_can_edit">kan redigere</string>

+ 19 - 0
res/values-el/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">Εφαρμογή %1$s Android</string>
   <string name="about_version">έκδοση %1$s</string>
   <string name="actionbar_sync">Ανανέωση λογαριασμού</string>
   <string name="actionbar_upload">Μεταφόρτωση</string>
@@ -38,6 +39,7 @@
   <string name="prefs_instant_video_upload_summary">Άμεση μεταφόρτωση των βίντεο από την φωτογραφική μηχανή</string>
   <string name="prefs_log_summary">Χρησιμοποιείται για την καταγραφή προβλημάτων</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>
@@ -46,6 +48,7 @@
   <string name="prefs_remember_last_upload_location_summary">Αποθήκευση τελευταίου σημείου διαμοιρασμού μεταφόρτωσης</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>
@@ -78,12 +81,15 @@
   <string name="common_yes">Ναι</string>
   <string name="common_no">Όχι</string>
   <string name="common_ok">ΟΚ</string>
+  <string name="common_cancel_sync">Ακύρωση συγχρονισμού</string>
   <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>
+  <string name="delete_account">Αφαίρεση λογαριασμού</string>
   <string name="create_account">Δημιουργία λογαριασμού</string>
   <string name="upload_chooser_title">Μεταφόρτωση από ...</string>
   <string name="uploader_info_dirname">Όνομα φακέλου</string>
@@ -95,10 +101,13 @@
   <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_content_unauthorized">Λάθος κωδικός για %1$s</string>
   <string name="sync_conflicts_in_favourites_ticker">Βρέθηκαν συγκρούσεις</string>
   <string name="sync_conflicts_in_favourites_content">%1$d αρχεία σε αναμονή συγχρονισμού δεν μπόρεσαν να συγχρονιστούν</string>
@@ -150,6 +159,7 @@
   <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">Εσφαλμένη μορφή διεύθυνσης διακομιστή</string>
   <string name="auth_ssl_general_error_title">Η αρχικοποίηση του SLL απέτυχε</string>
   <string name="auth_ssl_unverified_server_title">Αδυναμία επιβεβαίωσης της ταυτότητας του διακομιστή SSL </string>
   <string name="auth_bad_oc_version_title">Μη-αναγνωρίσιμη έκδοση διακομιστή</string>
@@ -223,6 +233,8 @@
   <string name="placeholder_filesize">389 KB</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">Ποια αρχεία θέλετε να κρατήσετε; Αν επιλέξετε και τις δύο εκδοχές, στο τοπικό αρχείο θα προστεθεί ένας αριθμός στο όνομά του.</string>
@@ -261,6 +273,7 @@
   <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_send_mail_subject">%1$s αναφορές της εφαρμογής Android</string>
   <string name="saml_authentication_required_text">Απαιτείται πιστοποίηση</string>
   <string name="saml_authentication_wrong_pass">Εσφαλμένος κωδικός πρόσβασης</string>
@@ -296,8 +309,11 @@
   <string name="file_list__footer__files_and_folder">%1$d αρχεία, 1 φάκελος</string>
   <string name="file_list__footer__files_and_folders">%1$d αρχεία, %2$d φάκελοι</string>
   <string name="upload_copy_files">Αντιγραφή αρχείου</string>
+  <string name="upload_move_files">Μετακίνηση αρχείου</string>
   <string name="share_dialog_title">Διαμοιρασμός</string>
+  <string name="share_with_user_section_title">Διαμοιρασμός με χρήστες και ομάδες</string>
   <string name="share_no_users">Δεν έχουν διαμοιραστεί ακόμα δεδομένα με τους χρήστες</string>
+  <string name="share_add_user_or_group">Προσθήκη χρήστη ή ομάδας</string>
   <string name="share_via_link_section_title">Διαμοιρασμός συνδέσμου</string>
   <string name="share_via_link_expiration_date_label">Ορισμός ημ. λήξης</string>
   <string name="share_via_link_password_label">Προστασία συνθηματικού</string>
@@ -312,4 +328,7 @@
   <string name="share_privilege_can_edit_create">δημιουργία</string>
   <string name="share_privilege_can_edit_change">αλλαγή</string>
   <string name="share_privilege_can_edit_delete">διαγραφή</string>
+  <string name="edit_share_unshare">Διακοπή διαμοιρασμού</string>
+  <string name="manage_space_clear_data">Εκκαθάριση δεδομένων</string>
+  <string name="manage_space_error">Μερικά αρχεία δεν μπορούν να διαγραφούν.</string>
 </resources>

+ 1 - 0
res/values-en-rGB/strings.xml

@@ -367,4 +367,5 @@
   <string name="manage_space_description">Settings, database and server certificates from %1$s\'s data will be deleted permanentlty. \n\nDownloaded files will be kept untouched.\n\nThis process can take some time.</string>
   <string name="manage_space_clear_data">Clear data</string>
   <string name="manage_space_error">Some files could not be deleted.</string>
+  <string name="permission_storage_access">Additional permissions required to upload &amp; download files.</string>
 </resources>

+ 2 - 0
res/values-es/strings.xml

@@ -94,6 +94,7 @@
   <string name="common_error_unknown">Error desconocido</string>
   <string name="about_title">Acerca de</string>
   <string name="change_password">Cambiar contraseña</string>
+  <string name="delete_account">Eliminar cuenta</string>
   <string name="create_account">Crear cuenta</string>
   <string name="upload_chooser_title">Subir desde...</string>
   <string name="uploader_info_dirname">Nombre de la carpeta</string>
@@ -365,4 +366,5 @@
   <string name="manage_space_description">Los ajustes, bases de datos y certificados del servidor %1$s incluidos sus datos serán borrados permanentemente. \n\nLos archivos descargados permanecerán sin tocarse.\n\nEste proceso puede tomar algún tiempo.</string>
   <string name="manage_space_clear_data">Limpiar datos</string>
   <string name="manage_space_error">No se han podido eliminar algunos archivos</string>
+  <string name="permission_storage_access">Se requieren permisos adicionales para subir &amp; y descargar archivos.</string>
 </resources>

+ 1 - 0
res/values-et-rEE/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Androidi rakendus</string>
   <string name="about_version">versioon %1$s</string>
   <string name="actionbar_sync">Värskenda kontot</string>
   <string name="actionbar_upload">Lae fail üles</string>

+ 1 - 1
res/values-fr/strings.xml

@@ -31,7 +31,7 @@
   <string name="prefs_category_general">Général</string>
   <string name="prefs_category_more">Plus</string>
   <string name="prefs_accounts">Comptes</string>
-  <string name="prefs_manage_accounts">Gestion des comptes</string>
+  <string name="prefs_manage_accounts">Gestion des comptes utilisateur</string>
   <string name="prefs_passcode">Code de sécurité</string>
   <string name="prefs_instant_upload">Téléversement immédiat des photos</string>
   <string name="prefs_instant_upload_summary">Téléverser immédiatement les photos prises par la caméra</string>

+ 1 - 0
res/values-he/strings.xml

@@ -367,4 +367,5 @@
   <string name="manage_space_description">הגדרות, מסד נתונים ואישורי אימות לשרת ממידע %1$s\'s ימחקו לצמיתות. \n\nקבצים שהורדו ישארו ללא פגע .\n\nתהליך זה יכול להמשך זמן מה.</string>
   <string name="manage_space_clear_data">ניקוי מידע</string>
   <string name="manage_space_error">לא ניתן היה למחוק מספר קבצים.</string>
+  <string name="permission_storage_access">נדרשות הרשאות נוספות להעלאה והורדת קבצים.</string>
 </resources>

+ 49 - 0
res/values-hy/strings.xml

@@ -1,9 +1,12 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
   <string name="about_version">տարբերակ %1$s</string>
+  <string name="actionbar_upload">Բեռնել</string>
   <string name="actionbar_upload_files">Ֆայլեր</string>
   <string name="actionbar_mkdir">Նոր պանակ</string>
   <string name="actionbar_send_file">Ուղարկել</string>
+  <string name="actionbar_sort">Դասակարգել</string>
+  <string name="actionbar_sort_title">Դասակարգել ըստ</string>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
@@ -13,26 +16,66 @@
     <string name="drawer_item_on_device">On device</string>-->
   <string name="drawer_close">Փակել</string>
   <string name="drawer_open">Բացել</string>
+  <string name="prefs_category_general">Ընդհանուր</string>
+  <string name="prefs_accounts">Հաշիվներ</string>
+  <string name="prefs_help">Օգնություն</string>
   <string name="auth_username">Օգտանուն</string>
   <string name="auth_password">Գաղտնաբառ</string>
   <string name="sync_string_files">Ֆայլեր</string>
+  <string name="uploader_btn_upload_text">Բեռնել</string>
   <string name="uploader_btn_new_folder_text">Նոր պանակ</string>
   <string name="file_list_seconds_ago">վրկ. առաջ</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="action_share">Կիսվել</string>
   <string name="common_yes">Այո</string>
   <string name="common_no">Ոչ</string>
+  <string name="common_ok">Լավ</string>
   <string name="common_cancel">Չեղարկել</string>
   <string name="common_error">Սխալ</string>
+  <string name="about_title">Մասին</string>
+  <string name="change_password">Փոխել գաղտնաբառը</string>
+  <string name="create_account">Ստեղծել հաշիվ</string>
+  <string name="upload_chooser_title">Բեռնել...</string>
   <string name="uploader_info_dirname">Պանակի անուն</string>
+  <string name="uploader_upload_in_progress_ticker">Բեռնում եմ...</string>
+  <string name="uploader_upload_in_progress_content">%1$d%% Բեռնում եմ %2$s</string>
+  <string name="uploader_upload_succeeded_ticker">Բեռնումը հաջողվեց</string>
+  <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="pass_code_configure_your_pass_code">Ներմուծիր քո անցաբառը</string>
   <string name="common_rename">Վերանվանել</string>
+  <string name="rename_dialog_title">Ներմուծիր նոր անուն</string>
+  <string name="rename_server_fail_msg">Վերանվանումը չի կարող ավարտվել</string>
+  <string name="filename_forbidden_characters">Արգելված նիշեր. / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Ֆայլի անունը առնվազն մի անվավեր նիշ է պարունակում</string>
+  <string name="filename_empty">Ֆայլի անունը դատարկ լինել չի կարող</string>
+  <string name="activity_chooser_title">Ուղարկել հղումը…</string>
   <string name="ssl_validator_label_C">Երկիր.</string>
   <string name="ssl_validator_label_validity_from">Ումից.</string>
   <string name="ssl_validator_label_validity_to">Ում.</string>
   <string name="placeholder_filesize">389 ԿԲ</string>
+  <string name="placeholder_timestamp">2012/05/18 12:23 PM</string>
   <string name="activity_chooser_send_file_title">Ուղարկել</string>
+  <string name="copy_link">Պատճենել հղումը</string>
   <string name="empty"></string>
+  <string name="prefs_category_accounts">Հաշիվներ</string>
+  <string name="saml_authentication_wrong_pass">Սխալ գաղտնաբառ</string>
+  <string name="folder_picker_choose_button_text">Ընտրել</string>
   <string name="username">Օգտանուն</string>
   <string name="file_list__footer__folder">1 պանակ</string>
   <string name="file_list__footer__folders">%1$d պանակ</string>
@@ -43,5 +86,11 @@
   <string name="file_list__footer__files_and_folder">%1$d ֆայլ, 1 պանակ</string>
   <string name="file_list__footer__files_and_folders">%1$d ֆայլ, %2$d պանակ</string>
   <string name="share_via_link_section_title">Կիսվել հղմամբ</string>
+  <string name="share_get_public_link_button">Ստանալ հղում</string>
+  <string name="share_search">Փնտրել</string>
+  <string name="share_privilege_can_share">կարող է տարածել</string>
+  <string name="share_privilege_can_edit">կարող է խմբագրել</string>
+  <string name="share_privilege_can_edit_create">ստեղծել</string>
+  <string name="share_privilege_can_edit_change">փոխել</string>
   <string name="share_privilege_can_edit_delete">ջնջել</string>
 </resources>

+ 38 - 0
res/values-is/strings.xml

@@ -1,7 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Android-forrit</string>
   <string name="about_version">útgáfa %1$s</string>
+  <string name="actionbar_sync">Endurlesa aðgang</string>
   <string name="actionbar_upload">Senda inn</string>
+  <string name="actionbar_upload_from_apps">Efni frá öðrum forritum</string>
   <string name="actionbar_upload_files">Skrár</string>
   <string name="actionbar_open_with">Opna með</string>
   <string name="actionbar_mkdir">Ný mappa</string>
@@ -21,29 +24,46 @@
   <string name="drawer_item_all_files">Allar skrár</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_item_settings">Stillingar</string>
   <string name="drawer_close">Loka</string>
   <string name="drawer_open">Opna</string>
+  <string name="prefs_category_general">Almennt</string>
   <string name="prefs_category_more">Meira</string>
+  <string name="prefs_accounts">Notandaaðgangar</string>
+  <string name="prefs_log_delete_history_button">Eyða ferli</string>
   <string name="prefs_help">Hjálp</string>
+  <string name="auth_check_server">Athuga með þjón</string>
+  <string name="auth_host_url">Vistfang þjóns https://…</string>
   <string name="auth_username">Notendanafn</string>
   <string name="auth_password">Lykilorð</string>
+  <string name="auth_register">Nýr í %1$s?</string>
   <string name="sync_string_files">Skrár</string>
   <string name="setup_btn_connect">Tengjast</string>
   <string name="uploader_btn_upload_text">Senda inn</string>
   <string name="uploader_btn_new_folder_text">Ný mappa</string>
+  <string name="uploader_wrn_no_account_setup_btn_text">Uppsetning</string>
   <string name="uploader_wrn_no_account_quit_btn_text">Hætta</string>
+  <string name="uploader_info_uploading">Sendi inn</string>
   <string name="file_list_seconds_ago">sek.</string>
   <string name="file_list_empty">Ekkert hér. Settu eitthvað inn!</string>
+  <string name="file_list_loading">Hleð inn…</string>
+  <string name="filedetails_size">Stærð:</string>
+  <string name="filedetails_type">Tegund:</string>
+  <string name="filedetails_created">Búið til:</string>
+  <string name="filedetails_modified">Breytt:</string>
   <string name="filedetails_download">Niðurhal</string>
+  <string name="filedetails_sync_file">Samstilla</string>
   <string name="action_share">Deila</string>
   <string name="common_yes">Já</string>
   <string name="common_no">Nei</string>
   <string name="common_ok">Í lagi</string>
   <string name="common_cancel">Hætta við</string>
   <string name="common_error"><strong>Villa</strong></string>
+  <string name="common_loading">Hleð inn …</string>
   <string name="common_error_unknown">Óþekkt villa</string>
   <string name="about_title">Um</string>
   <string name="change_password">Breyta lykilorði</string>
+  <string name="create_account">Stofna aðgang</string>
   <string name="uploader_info_dirname">Nafn möppu</string>
   <string name="foreign_files_move">Færa allt</string>
   <string name="favorite">Uppáhalds</string>
@@ -55,12 +75,21 @@
   <string name="ssl_validator_label_ST">Sýsla:</string>
   <string name="ssl_validator_label_validity_from">Frá:</string>
   <string name="ssl_validator_label_validity_to">Til:</string>
+  <string name="placeholder_filename">staðgengi.txt</string>
   <string name="placeholder_filetype">PNG mynd</string>
   <string name="placeholder_filesize">389 KB</string>
   <string name="placeholder_timestamp">2012/05/18 12:23 PM</string>
   <string name="placeholder_media_time">12:23:45</string>
+  <string name="conflict_title">Árekstur skráa</string>
+  <string name="conflict_message">Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti skrárinnar á tölvunni.</string>
+  <string name="conflict_keep_both">Halda báðum</string>
+  <string name="conflict_use_local_version">útgáfu á tölvu</string>
+  <string name="conflict_use_server_version">útgáfu á þjóni</string>
   <string name="activity_chooser_send_file_title">Senda</string>
   <string name="empty"></string>
+  <string name="prefs_category_accounts">Notandaaðgangar</string>
+  <string name="saml_authentication_required_text">Auðkenningar krafist</string>
+  <string name="saml_authentication_wrong_pass">Rangt lykilorð</string>
   <string name="actionbar_move">Færa</string>
   <string name="folder_picker_choose_button_text">Veldu</string>
   <string name="prefs_category_details">Nánar</string>
@@ -70,13 +99,22 @@
   <string name="username">Notendanafn</string>
   <string name="file_list__footer__folder">1 mappa</string>
   <string name="file_list__footer__file">1 skrá</string>
+  <string name="share_dialog_title">Deiling</string>
   <string name="share_via_link_section_title">Deila hlekk</string>
   <string name="share_via_link_expiration_date_label">Setja gildistíma</string>
   <string name="share_via_link_password_label">Verja með lykilorði</string>
   <string name="share_search">Leita</string>
+  <string name="search_users_and_groups_hint">Leita að notendum eða hópum</string>
+  <string name="share_group_clarification">%1$s (hópur)</string>
   <string name="share_privilege_can_share">getur deilt</string>
   <string name="share_privilege_can_edit">getur breytt</string>
   <string name="share_privilege_can_edit_create">mynda</string>
   <string name="share_privilege_can_edit_change">breyta</string>
   <string name="share_privilege_can_edit_delete">eyða</string>
+  <string name="edit_share_unshare">Hætta deilingu</string>
+  <string name="edit_share_done">lokið</string>
+  <string name="action_switch_grid_view">Reitir</string>
+  <string name="action_switch_list_view">Listi</string>
+  <string name="manage_space_clear_data">Hreinsa gögn</string>
+  <string name="manage_space_error">Ekki tókst að eyða öllum skrám.</string>
 </resources>

+ 1 - 0
res/values-mk/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Андроид апп</string>
   <string name="about_version">верзија %1$s</string>
   <string name="actionbar_sync">Освежи сметка</string>
   <string name="actionbar_upload">Подигни</string>

+ 1 - 0
res/values-nb-rNO/strings.xml

@@ -367,4 +367,5 @@
   <string name="manage_space_description">Innstillinger, database og server-sertifikater fra %1$s sine data vil bli slettet permanent. \n\nNedlastede filer forblir urørt.\n\nDenne prosessen kan ta litt tid.</string>
   <string name="manage_space_clear_data">Nullstill data</string>
   <string name="manage_space_error">Noen filer kunne ikke fjernes.</string>
+  <string name="permission_storage_access">Flere tillatelser trengs for å laste opp &amp; ned filer.</string>
 </resources>

+ 1 - 1
res/values-nl/strings.xml

@@ -31,7 +31,7 @@
   <string name="prefs_category_general">Algemeen</string>
   <string name="prefs_category_more">Meer</string>
   <string name="prefs_accounts">Accounts</string>
-  <string name="prefs_manage_accounts">Beheer accounts</string>
+  <string name="prefs_manage_accounts">Accounts beheren</string>
   <string name="prefs_passcode">Pincode slot</string>
   <string name="prefs_instant_upload">Directe uploads van afbeeldingen</string>
   <string name="prefs_instant_upload_summary">Direct uploaden van foto\'s genomen met de camera</string>

+ 92 - 13
res/values-pl/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s na Android</string>
   <string name="about_version">wersja %1$s</string>
   <string name="actionbar_sync">Odśwież konto</string>
   <string name="actionbar_upload">Wyślij plik</string>
@@ -31,13 +32,16 @@
   <string name="prefs_category_more">Więcej</string>
   <string name="prefs_accounts">Konta</string>
   <string name="prefs_manage_accounts">Zarządzaj kontami</string>
-  <string name="prefs_passcode">Blokowanie hasła</string>
+  <string name="prefs_passcode">Blokada hasłem</string>
   <string name="prefs_instant_upload">natychmiastowa wysyłka obrazków</string>
   <string name="prefs_instant_upload_summary">Wysyłaj od razu zdjęcia zrobione aparatem</string>
   <string name="prefs_instant_video_upload">Natychmiastowa wysyłka wideo</string>
   <string name="prefs_instant_video_upload_summary">Wysyłaj od razu filmy nakręcone aparatem</string>
+  <string name="prefs_log_title">Włącz historię logowania</string>
   <string name="prefs_log_summary">To jest używane do logowania problemów</string>
+  <string name="prefs_log_title_history">Historia logowania</string>
   <string name="prefs_log_summary_history">To pokazuje zapisane logi</string>
+  <string name="prefs_log_delete_history_button">Wyczyść historię</string>
   <string name="prefs_help">Pomoc</string>
   <string name="prefs_recommend">Poleć znajomemu</string>
   <string name="prefs_feedback">Wsparcie</string>
@@ -46,6 +50,7 @@
   <string name="prefs_remember_last_upload_location_summary">Zapamiętaj ostatnią lokalizację wgrywania</string>
   <string name="recommend_subject">Wypróbuj %1$s na swoim smartphonie!</string>
   <string name="recommend_text">Chciałbym zaprosić Cię do używania %1$s na swoim smartfonie!\nŚciągnij tutaj: %2$s</string>
+  <string name="auth_check_server">Sprawdź serwer</string>
   <string name="auth_host_url">Adres serwera https://...</string>
   <string name="auth_username">Nazwa użytkownika</string>
   <string name="auth_password">Hasło</string>
@@ -56,6 +61,7 @@
   <string name="uploader_btn_new_folder_text">Nowy folder</string>
   <string name="uploader_top_message">Wybierz folder do wysłania:</string>
   <string name="uploader_wrn_no_account_title">Nie znaleziono konta</string>
+  <string name="uploader_wrn_no_account_text">Brak kont %1$s na Twoim urządzeniu. Załóż konto.</string>
   <string name="uploader_wrn_no_account_setup_btn_text">Ustawienia</string>
   <string name="uploader_wrn_no_account_quit_btn_text">Wyjdź</string>
   <string name="uploader_wrn_no_content_title">Brak danych do wysłania</string>
@@ -65,6 +71,7 @@
   <string name="file_list_seconds_ago">sekund temu</string>
   <string name="file_list_empty">Pusto. Wyślij coś!</string>
   <string name="file_list_loading">Wczytywanie...</string>
+  <string name="file_list_no_app_for_file_type">Brak aplikacji dla tego typu plików!</string>
   <string name="local_file_list_empty">Nie ma plików w tym folderze.</string>
   <string name="filedetails_select_file">Dotknij plik aby wyświetlić dodatkowe informacje</string>
   <string name="filedetails_size">Rozmiar:</string>
@@ -72,32 +79,44 @@
   <string name="filedetails_created">Utworzono:</string>
   <string name="filedetails_modified">Zmodyfikowano:</string>
   <string name="filedetails_download">Pobierz</string>
+  <string name="filedetails_sync_file">Synchronizuj</string>
   <string name="filedetails_renamed_in_upload_msg">Podczas wysyłania nazwa pliku została zmieniona na %1$s</string>
+  <string name="list_layout">Wygląd listy</string>
   <string name="action_share">Udostępnij</string>
   <string name="common_yes">Tak</string>
   <string name="common_no">Nie</string>
   <string name="common_ok">OK</string>
+  <string name="common_cancel_sync">Anuluj synchronizację</string>
   <string name="common_cancel">Anuluj</string>
+  <string name="common_save_exit">Zapisz i wyjdź</string>
   <string name="common_error">Błąd</string>
   <string name="common_loading">Wczytuję ...</string>
   <string name="common_error_unknown">Nieznany błąd</string>
   <string name="about_title">O aplikacji</string>
   <string name="change_password">Zmień hasło</string>
+  <string name="delete_account">Usuń konto</string>
   <string name="create_account">Utwórz konto</string>
   <string name="upload_chooser_title">Wyślij plik z …</string>
   <string name="uploader_info_dirname">Nazwa folderu</string>
   <string name="uploader_upload_in_progress_ticker">Wysyłam…</string>
   <string name="uploader_upload_in_progress_content">%1$d%% Wysyłanie %2$s</string>
   <string name="uploader_upload_succeeded_ticker">Wysyłanie zakończone powodzeniem</string>
+  <string name="uploader_upload_succeeded_content_single">Wysłano %1$s</string>
   <string name="uploader_upload_failed_ticker">Wysyłanie nie powiodło się</string>
   <string name="uploader_upload_failed_content_single">Wysyłanie %1$s nie powiodło się</string>
+  <string name="uploader_upload_failed_credentials_error">Błąd przy wysyłaniu zaloguj się ponownie</string>
   <string name="downloader_download_in_progress_ticker">Pobieranie …</string>
   <string name="downloader_download_in_progress_content">%1$d%% Pobieranie %2$s</string>
   <string name="downloader_download_succeeded_ticker">Pobieranie zakończone</string>
+  <string name="downloader_download_succeeded_content">%1$s pobrano</string>
   <string name="downloader_download_failed_ticker">Pobieranie nieudane</string>
   <string name="downloader_download_failed_content">Pobieranie %1$s nie powiodło się</string>
   <string name="downloader_not_downloaded_yet">Jeszcze nie pobrane</string>
+  <string name="downloader_download_failed_credentials_error">Błąd podczas pobierania, zaloguj się ponownie</string>
   <string name="common_choose_account">Wybierz konto</string>
+  <string name="sync_fail_ticker">Nieudana synchronizacja </string>
+  <string name="sync_fail_ticker_unauthorized">Nieudana synchronizacja, zaloguj się ponownie</string>
+  <string name="sync_fail_content">Nie udało się zakończyć synchronizacji %1$s</string>
   <string name="sync_fail_content_unauthorized">Niepoprawne hasło dla %1$s</string>
   <string name="sync_conflicts_in_favourites_ticker">Znaleziono konflikty</string>
   <string name="sync_conflicts_in_favourites_content">%1$d synchronizowanych plików nie może zostać zsynchronizowanych</string>
@@ -112,13 +131,16 @@
   <string name="foreign_files_fail">Niektóre pliki nie mogły być przeniesione</string>
   <string name="foreign_files_local_text">Lokalnie: %1$s</string>
   <string name="foreign_files_remote_text">Zdalnie: %1$s</string>
-  <string name="pass_code_configure_your_pass_code">Wpisz swoje hasło</string>
-  <string name="pass_code_configure_your_pass_code_explanation">Hasło będzie wymagane przy każdym uruchomieniu aplikacji</string>
-  <string name="pass_code_remove_your_pass_code">Usuń swoje hasło</string>
-  <string name="pass_code_mismatch">Podane hasła nie są takie same</string>
-  <string name="pass_code_wrong">Nieprawidłowe hasło</string>
-  <string name="pass_code_removed">Hasło zostało usunięte</string>
-  <string name="pass_code_stored">Hasło zostało zapisane</string>
+  <string name="upload_query_move_foreign_files">Nie ma wystarczającej ilości wolnej przestrzeni by skopiować zaznaczone pliki do folderu %1$s. Chcesz je przenieść?</string>
+  <string name="pass_code_enter_pass_code">Wymyśl kod PIN.</string>
+  <string name="pass_code_configure_your_pass_code">Wpisz kod PIN.</string>
+  <string name="pass_code_configure_your_pass_code_explanation">Kod PIN będzie wymagany przy każdym uruchomieniu aplikacji.</string>
+  <string name="pass_code_reenter_your_pass_code">Wpisz kod PIN ponownie.</string>
+  <string name="pass_code_remove_your_pass_code">Usuń swój kod PIN.</string>
+  <string name="pass_code_mismatch">Podane hasła nie są takie same.</string>
+  <string name="pass_code_wrong">Kod PIN nieprawidłowy.</string>
+  <string name="pass_code_removed">Kod PIN został usunięty.</string>
+  <string name="pass_code_stored">Kod PIN został zapisany.</string>
   <string name="media_notif_ticker">%1$s odtwarzacz muzyki</string>
   <string name="media_state_playing">%1$s (odtwarzany)</string>
   <string name="media_state_loading">%1$s (wczytywany)</string>
@@ -138,10 +160,12 @@
   <string name="media_rewind_description">Przycisk przewijania</string>
   <string name="media_play_pause_description">Przycisk odtwarzania / pauzowania</string>
   <string name="media_forward_description">Przycisk przewijania do przodu</string>
+  <string name="auth_getting_authorization">Autoryzowanie...</string>
+  <string name="auth_trying_to_login">Próba logowania</string>
   <string name="auth_no_net_conn_title">Brak połączenia sieciowego</string>
   <string name="auth_nossl_plain_ok_title">Nie można nawiązać bezpiecznego połączenia.</string>
   <string name="auth_connection_established">Połączenie nawiązane</string>
-  <string name="auth_testing_connection">Sprawdzanie połączenia</string>
+  <string name="auth_testing_connection">Testowanie połączenia</string>
   <string name="auth_not_configured_title">Uszkodzona konfiguracja serwera</string>
   <string name="auth_account_not_new">Konto tego samego użytkownika i serwera już istnieje na tym urządzeniu</string>
   <string name="auth_account_not_the_same">Podany login nie pasuje do użytkowników </string>
@@ -149,6 +173,7 @@
   <string name="auth_unknown_host_title">Nie mogę znaleźć hosta</string>
   <string name="auth_incorrect_path_title">Nie znaleziono instancji serwer</string>
   <string name="auth_timeout_title">Serwer zbyt długo nie odpowiadał</string>
+  <string name="auth_incorrect_address_title">Nieprawidłowy format adresu serwera</string>
   <string name="auth_ssl_general_error_title">Inicjowanie SSL nie powiodło się</string>
   <string name="auth_ssl_unverified_server_title">Nie można zweryfikować tożsamości SSl serwera</string>
   <string name="auth_bad_oc_version_title">Nie rozpoznano wersji serwera</string>
@@ -157,13 +182,17 @@
   <string name="auth_unauthorized">Zła nazwa użytkownika lub hasło</string>
   <string name="auth_oauth_error">Nieudana autoryzacja</string>
   <string name="auth_oauth_error_access_denied">Dostęp zabroniony przez serwer autoryzacji</string>
+  <string name="auth_wtf_reenter_URL">Nieoczekiwany stan. Podaj ponownie adres serwera</string>
   <string name="auth_expired_oauth_token_toast">Twoja sesja wygasła. Proszę zaloguj się ponownie</string>
+  <string name="auth_expired_basic_auth_toast">Podaj aktualne hasło</string>
   <string name="auth_expired_saml_sso_token_toast">Twoja sesja wygasła. Proszę zaloguj się ponownie</string>
+  <string name="auth_connecting_auth_server">Łączenie z serwerem poświadczeń...</string>
   <string name="auth_unsupported_auth_method">Serwer nie obsługuje tej metody autoryzacji</string>
   <string name="auth_unsupported_multiaccount">%1$s nie wspiera wielu kont</string>
   <string name="auth_fail_get_user_name">Twój serwer nie zwraca prawidłowego id użytkownika, proszę skontaktuj się z administratorem
 	</string>
-  <string name="auth_account_does_not_exist">Konto nie istnieje jeszcze na tym urządzeniu</string>
+  <string name="auth_can_not_auth_against_server">Błąd autoryzacji na tym serwerze</string>
+  <string name="auth_account_does_not_exist">Konto jeszcze nie istnieje na tym urządzeniu.</string>
   <string name="favorite">Ulubione</string>
   <string name="unfavorite">Usuń z ulubionych</string>
   <string name="common_rename">Zmień nazwę</string>
@@ -180,6 +209,7 @@
   <string name="sync_file_nothing_to_do_msg">Zawartość pliku została już synchronizowana</string>
   <string name="create_dir_fail_msg">Folder nie może zostać utworzony</string>
   <string name="filename_forbidden_characters">Znaki zabronione: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak</string>
   <string name="filename_empty">Nazwa pliku nie może być pusta.</string>
   <string name="wait_a_moment">Poczekaj chwilę</string>
   <string name="filedisplay_unexpected_bad_get_content">Nieoczekiwany problem; spróbuj wybrać plik z innej aplikacji</string>
@@ -210,6 +240,9 @@
   <string name="ssl_validator_label_validity_to">Do:</string>
   <string name="ssl_validator_label_signature">Sygnatura:</string>
   <string name="ssl_validator_label_signature_algorithm">Algorytm:</string>
+  <string name="digest_algorithm_not_available">Algorytm digest nie jest dostępny na Twoim urządzeniu</string>
+  <string name="ssl_validator_label_certificate_fingerprint">Odcisk palca:</string>
+  <string name="certificate_load_problem">Problem podczas ładowania certyfikatu.</string>
   <string name="ssl_validator_null_cert">Nie można wyświetlić certyfikatu.</string>
   <string name="ssl_validator_no_info_about_error">- Brak informacji o błędzie</string>
   <string name="placeholder_sentence">Tekst zastępczy</string>
@@ -218,20 +251,26 @@
   <string name="placeholder_filesize">389 KB</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">Wysyłaj zdjęcia tylko przez WiFi</string>
+  <string name="instant_video_upload_on_wifi">Wysyłaj filmy tylko przez WiFi</string>
   <string name="instant_upload_path">/InstantUpload</string>
   <string name="conflict_title">Konflikt pliku</string>
+  <string name="conflict_message">Które pliki chcesz zachować? Jeśli wybierzesz obie wersje, do nazwy pliku lokalnego zostanie dodana liczba.</string>
   <string name="conflict_keep_both">Zatrzymaj oba</string>
-  <string name="conflict_use_local_version">lokalna wersja</string>
+  <string name="conflict_use_local_version">wersja lokalna</string>
   <string name="conflict_use_server_version">wersja zdalna</string>
   <string name="preview_image_description">Podgląd</string>
   <string name="preview_image_error_unknown_format">Ten obrazek nie może zostać wyświetlony</string>
   <string name="error__upload__local_file_not_copied">%1$s nie może zostać skopiowany do lokalnego folderu %2$s</string>
+  <string name="prefs_instant_upload_path_title">Ścieżka wysyłania</string>
   <string name="share_link_no_support_share_api">Przepraszamy, ale współdzielenie nie jest włączone na Twoim serwerze. Proszę skontaktuj się z
 		administratorem.</string>
   <string name="share_link_file_no_exist">Nie można udostępnić. Proszę sprawdzić, czy plik istnieje</string>
   <string name="share_link_file_error">Wystąpił błąd podczas udostępniania tego pliku lub folderu.</string>
   <string name="unshare_link_file_no_exist">Nie można wyłączyć udostępniania. Proszę sprawdzić, czy plik istnieje</string>
   <string name="unshare_link_file_error">Wystąpił błąd podczas anulowania udostępniania tego pliku lub folderu.</string>
+  <string name="update_link_file_no_exist">Błąd aktualizacji. Upewnij się, że plik istnieje.</string>
+  <string name="update_link_file_error">Wystąpił błąd podczas aktualizacji udziału</string>
   <string name="share_link_password_title">Wprowadź hasło</string>
   <string name="share_link_empty_password">Musisz wprowadzić hasło</string>
   <string name="activity_chooser_send_file_title">Wyślij</string>
@@ -248,6 +287,7 @@
   <string name="forbidden_permissions_delete">do usuwania tego pliku</string>
   <string name="share_link_forbidden_permissions">do współdzielenia tego pliku</string>
   <string name="unshare_link_forbidden_permissions">do zniesienia współdzielenia tego pliku</string>
+  <string name="update_link_forbidden_permissions">aby uaktualnić ten udział</string>
   <string name="forbidden_permissions_create">do utworzenia tego pliku</string>
   <string name="uploader_upload_forbidden_permissions">do wgrania tego folderu</string>
   <string name="downloader_download_file_not_found">Ten plik nie jest już dostępny na serwerze</string>
@@ -255,7 +295,10 @@
   <string name="prefs_add_account">Dodaj konto</string>
   <string name="auth_redirect_non_secure_connection_title">Bezpieczne połączenie jest przekierowywane przez niezabezpieczone trasy.</string>
   <string name="actionbar_logger">Logi</string>
+  <string name="log_send_history_button">Wyślij historię</string>
+  <string name="log_send_no_mail_app">Brak aplikacji do wysyłania logów. Zainstaluj klienta poczty.</string>
   <string name="log_send_mail_subject">%1$s Logi aplikacji Android</string>
+  <string name="log_progress_dialog_text">Ładowanie danych...</string>
   <string name="saml_authentication_required_text">Wymagana autoryzacja</string>
   <string name="saml_authentication_wrong_pass">Złe hasło</string>
   <string name="actionbar_move">Przenieś</string>
@@ -266,11 +309,19 @@
   <string name="move_file_invalid_overwrite">Plik istnieje już w folderze docelowym</string>
   <string name="move_file_error">Pojawił się błąd podczas próby przeniesienia tego pliku lub folderu</string>
   <string name="forbidden_permissions_move">aby przenieść ten plik</string>
+  <string name="copy_file_not_found">Nie można skopiować. Sprawdź, czy plik istnieje</string>
+  <string name="copy_file_invalid_into_descendent">Nie można skopiować katalogu do jego podkatalogu</string>
   <string name="copy_file_invalid_overwrite">Plik istnieje już w folderze docelowym</string>
+  <string name="copy_file_error">Wystąpił błąd podczas próby kopiowania tego pliku lub folderu</string>
+  <string name="forbidden_permissions_copy">by skopiować ten plik</string>
+  <string name="prefs_category_instant_uploading">Automatyczne wysyłanie</string>
   <string name="prefs_category_details">Szczegóły</string>
+  <string name="prefs_instant_video_upload_path_title">Katalog wysyłania dla wideo</string>
+  <string name="sync_folder_failed_content">Synchronizacja folderu %1$s nie może zostać zakończona</string>
   <string name="shared_subject_header">udostępniony</string>
   <string name="with_you_subject_header">z tobą</string>
   <string name="subject_user_shared_with_you">%1$s wspólne \"%2$s\" z tobą</string>
+  <string name="subject_shared_with_you">Udostępniono Ci \"%1$s\"</string>
   <string name="auth_refresh_button">Odśwież połączenie</string>
   <string name="auth_host_address">Adres Serwera</string>
   <string name="common_error_out_memory">Brak wystarczającej pamięci</string>
@@ -279,14 +330,42 @@
   <string name="file_list__footer__folders">%1$d folderów</string>
   <string name="file_list__footer__file">1 plik</string>
   <string name="file_list__footer__file_and_folder">1 plik , 1 folder</string>
+  <string name="file_list__footer__file_and_folders">1 plik, %1$d folderów</string>
+  <string name="file_list__footer__files">%1$d plików</string>
+  <string name="file_list__footer__files_and_folder">%1$d plików, 1 folder</string>
+  <string name="file_list__footer__files_and_folders">%1$d plików, %2$d folderów</string>
+  <string name="prefs_instant_behaviour_dialogTitle">Oryginalny plik zostanie...</string>
+  <string name="prefs_instant_behaviour_title">Oryginalny plik zostanie...</string>
+  <string name="upload_copy_files">Kopiuj plik</string>
+  <string name="upload_move_files">Przenieś plik</string>
+  <string name="pref_behaviour_entries_keep_file">zachowany w oryginalnym folderze</string>
+  <string name="pref_behaviour_entries_move">przeniesiony do folderu aplikacji</string>
   <string name="share_dialog_title">Udostępnianie</string>
+  <string name="share_with_user_section_title">Współdziel z użytkownikami i grupami</string>
+  <string name="share_no_users">Brak danych współdzielonych z użytkownikami</string>
+  <string name="share_add_user_or_group">Dodaj użytkownika lub grupę</string>
   <string name="share_via_link_section_title">Udostępnij link</string>
   <string name="share_via_link_expiration_date_label">Ustaw datę wygaśnięcia</string>
-  <string name="share_via_link_password_label">Zabezpiecz hasłem</string>
+  <string name="share_via_link_password_label">Zabezpieczone hasłem</string>
+  <string name="share_via_link_password_title">Zabezpieczone</string>
+  <string name="share_get_public_link_button">Pobierz link</string>
   <string name="share_search">Wyszukaj</string>
+  <string name="search_users_and_groups_hint">Szukaj użytkowników i grup</string>
+  <string name="share_group_clarification">%1$s (grupa)</string>
+  <string name="share_sharee_unavailable">Niestety Twój serwer nie umożliwia współdzielenia z użytkownikami z poziomu aplikacji.
+\nSkontaktuj się z administratorem.</string>
   <string name="share_privilege_can_share">może współdzielić</string>
   <string name="share_privilege_can_edit">może edytować</string>
   <string name="share_privilege_can_edit_create">utwórz</string>
   <string name="share_privilege_can_edit_change">zmiany</string>
-  <string name="share_privilege_can_edit_delete">skasuj</string>
+  <string name="share_privilege_can_edit_delete">usuń</string>
+  <string name="edit_share_unshare">Cofnij udostępnianie</string>
+  <string name="edit_share_done">zakończono</string>
+  <string name="action_switch_grid_view">Widok siatki</string>
+  <string name="action_switch_list_view">Widok listy</string>
+  <string name="manage_space_title">Zarządzaj przestrzenią</string>
+  <string name="manage_space_description">Ustawienia, baza danych i certyfikaty serwera z danych %1$s zostaną trwale usunięte. \n\nŚciągnięte pliki zostaną zachowane.\n\nTen proces może zająć trochę czasu.</string>
+  <string name="manage_space_clear_data">Wyczyść dane</string>
+  <string name="manage_space_error">Nie udało się usunąć niektórych plików.</string>
+  <string name="permission_storage_access">Dodatkowe uprawnienia do wysyłania i ściągania plików.</string>
 </resources>

+ 1 - 1
res/values-pt-rPT/strings.xml

@@ -3,7 +3,7 @@
   <string name="about_android">%1$s Aplicação Android</string>
   <string name="about_version">versão %1$s</string>
   <string name="actionbar_sync">Atualizar conta</string>
-  <string name="actionbar_upload">Enviar</string>
+  <string name="actionbar_upload">Carregar</string>
   <string name="actionbar_upload_from_apps">Conteúdo de outras apps</string>
   <string name="actionbar_upload_files">Ficheiros</string>
   <string name="actionbar_open_with">Abrir com</string>

+ 1 - 0
res/values-ru/strings.xml

@@ -367,4 +367,5 @@
   <string name="manage_space_description">Настройки, база данных и сертификат сервера от %1$s будут удалены навсегда.\n\nСкачанные файлы не будут изменены.\n\nЭто действие может занять некоторое время.</string>
   <string name="manage_space_clear_data">Очистить данные</string>
   <string name="manage_space_error">Некоторые файлы не могут быть удалены.</string>
+  <string name="permission_storage_access">Для загрузки и скачивания файлов требуются дополнительные права.</string>
 </resources>

+ 66 - 18
res/values-sl/strings.xml

@@ -1,9 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s za Android</string>
   <string name="about_version">različica %1$s</string>
   <string name="actionbar_sync">Osveži račun</string>
-  <string name="actionbar_upload">Pošlji datoteko</string>
-  <string name="actionbar_upload_from_apps">Vsebina iz drugih programov</string>
+  <string name="actionbar_upload">Pošiljanje</string>
+  <string name="actionbar_upload_from_apps">Vsebino, vezano na druge programe</string>
   <string name="actionbar_upload_files">Datoteke</string>
   <string name="actionbar_open_with">Odpri z</string>
   <string name="actionbar_mkdir">Nova mapa</string>
@@ -11,10 +12,10 @@
   <string name="actionbar_see_details">Podrobnosti</string>
   <string name="actionbar_send_file">Pošlji</string>
   <string name="actionbar_sort">Razvrsti</string>
-  <string name="actionbar_sort_title">Razvrsti po</string>
+  <string name="actionbar_sort_title">Razvrsti ...</string>
   <string-array name="actionbar_sortby">
-    <item>Naraščajoče A – Z</item>
-    <item>Novejše – Starejše</item>
+    <item>naraščajoče od A – Z</item>
+    <item>najprej novejše nato starejše</item>
   </string-array>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
@@ -31,21 +32,25 @@
   <string name="prefs_category_more">Več</string>
   <string name="prefs_accounts">Računi</string>
   <string name="prefs_manage_accounts">Upravljanje z računi</string>
-  <string name="prefs_passcode">Zaklep s kodo PIN</string>
-  <string name="prefs_instant_upload">Takojšnje pošiljanje slik</string>
-  <string name="prefs_instant_upload_summary">Takojšnje pošiljanje slik, zajetih s fotoaparatom, na strežnik</string>
-  <string name="prefs_instant_video_upload">Takojšnje pošiljanje posnetkov</string>
-  <string name="prefs_instant_video_upload_summary">Takojšnje pošiljanje posnetkov, zajetih s fotoaparatom, na strežnik</string>
+  <string name="prefs_passcode">Zakleni dostop s kodo PIN</string>
+  <string name="prefs_instant_upload">Hipno pošiljanje slik</string>
+  <string name="prefs_instant_upload_summary">Hipno pošiljanje slik, ki so bile zajete s kamero, na strežnik</string>
+  <string name="prefs_instant_video_upload">Hipno pošiljanje posnetkov</string>
+  <string name="prefs_instant_video_upload_summary">Hipno pošiljanje posnetkov, ki so bili zajeti s kamero, na strežnik</string>
+  <string name="prefs_log_title">Omogoči beleženje</string>
   <string name="prefs_log_summary">Uporablja se za beleženje težav in napak</string>
+  <string name="prefs_log_title_history">Zgodovina beleženja</string>
   <string name="prefs_log_summary_history">Pokaže shranjene dnevnike</string>
+  <string name="prefs_log_delete_history_button">Izbriši zgodovino</string>
   <string name="prefs_help">Pomoč</string>
   <string name="prefs_recommend">Priporoči prijateljem</string>
-  <string name="prefs_feedback">Odziv</string>
+  <string name="prefs_feedback">Pošlji sporočilo razvijalcem programa</string>
   <string name="prefs_imprint">Natis</string>
   <string name="prefs_remember_last_share_location">Zapomni si mesto souporabe</string>
   <string name="prefs_remember_last_upload_location_summary">Zapomni si zadnje mesto za pošiljanje v oblak</string>
   <string name="recommend_subject">Preizkusi %1$s na pametnem telefonu!</string>
   <string name="recommend_text">Želim ti predstaviti %1$s na pametnem telefonu!\nPrejmeš ga lahko na: %2$s</string>
+  <string name="auth_check_server">Preveri strežnik</string>
   <string name="auth_host_url">Naslov strežnika https://…</string>
   <string name="auth_username">Uporabniško ime</string>
   <string name="auth_password">Geslo</string>
@@ -56,6 +61,7 @@
   <string name="uploader_btn_new_folder_text">Nova mapa</string>
   <string name="uploader_top_message">Izbor mape za pošiljanje:</string>
   <string name="uploader_wrn_no_account_title">Uporabniškega računa ni mogoče najti</string>
+  <string name="uploader_wrn_no_account_text">Za %1$s ni določenega računa. Pred nadaljevanjem ga je treba ustvariti.</string>
   <string name="uploader_wrn_no_account_setup_btn_text">Nastavi</string>
   <string name="uploader_wrn_no_account_quit_btn_text">Končaj</string>
   <string name="uploader_wrn_no_content_title">Ni vsebine za pošiljanje</string>
@@ -65,6 +71,7 @@
   <string name="file_list_seconds_ago">pred nekaj sekundami</string>
   <string name="file_list_empty">Tukaj še ni ničesar. Najprej je treba datoteke poslati v oblak!</string>
   <string name="file_list_loading">Poteka nalaganje ...</string>
+  <string name="file_list_no_app_for_file_type">Ni programa za prikaz te vrste datoteke!</string>
   <string name="local_file_list_empty">V tej mapi ni datotek.</string>
   <string name="filedetails_select_file">Pritisnite na datoteko za prikaz dodatnih podrobnosti.</string>
   <string name="filedetails_size">Velikost:</string>
@@ -74,31 +81,42 @@
   <string name="filedetails_download">Prejmi</string>
   <string name="filedetails_sync_file">Uskladi</string>
   <string name="filedetails_renamed_in_upload_msg">Datoteka je bila med nalaganjem preimenovana v %1$s</string>
+  <string name="list_layout">Seznamska razporeditev</string>
   <string name="action_share">Souporaba</string>
   <string name="common_yes">Da</string>
   <string name="common_no">Ne</string>
   <string name="common_ok">V redu</string>
+  <string name="common_cancel_sync">Prekliči usklajevanje</string>
   <string name="common_cancel">Prekliči</string>
+  <string name="common_save_exit">Shrani in končaj</string>
   <string name="common_error">Napaka</string>
   <string name="common_loading">Nalaganje ...</string>
   <string name="common_error_unknown">Neznana napaka</string>
   <string name="about_title">O oblaku %1$s</string>
   <string name="change_password">Spremeni geslo</string>
+  <string name="delete_account">Odstrani račun</string>
   <string name="create_account">Ustvari račun</string>
   <string name="upload_chooser_title">Pošlji datoteko iz …</string>
   <string name="uploader_info_dirname">Ime mape</string>
   <string name="uploader_upload_in_progress_ticker">Pošiljanje …</string>
   <string name="uploader_upload_in_progress_content">%1$d%% Pošiljanje %2$s</string>
   <string name="uploader_upload_succeeded_ticker">Pošiljanje je uspešno končano</string>
+  <string name="uploader_upload_succeeded_content_single">%1$s: poslano v oblak</string>
   <string name="uploader_upload_failed_ticker">Pošiljanje je spodletelo</string>
   <string name="uploader_upload_failed_content_single">Pošiljanja %1$s ni mogoče dokončati</string>
+  <string name="uploader_upload_failed_credentials_error">Pošiljanje je spodletelo. Zahtevana je ponovna prijava.</string>
   <string name="downloader_download_in_progress_ticker">Prejemanje …</string>
   <string name="downloader_download_in_progress_content">%1$d%% Prejemanje %2$s</string>
   <string name="downloader_download_succeeded_ticker">Prejemanje je uspešno končano</string>
+  <string name="downloader_download_succeeded_content">%1$s: prejeto iz oblaka</string>
   <string name="downloader_download_failed_ticker">Prejemanje je spodletelo</string>
   <string name="downloader_download_failed_content">Prejemanja %1$s ni mogoče dokončati</string>
   <string name="downloader_not_downloaded_yet">Prejem še ni zaključen</string>
+  <string name="downloader_download_failed_credentials_error">Prejemanje je spodletelo. Zahtevana je ponovna prijava.</string>
   <string name="common_choose_account">Izbor računa</string>
+  <string name="sync_fail_ticker">Usklajevanje je spodletelo</string>
+  <string name="sync_fail_ticker_unauthorized">Usklajevanje je spodletelo. Zahtevana je ponovna prijava.</string>
+  <string name="sync_fail_content">Usklajevanja %1$s ni mogoče končati</string>
   <string name="sync_fail_content_unauthorized">Neveljavno geslo za %1$s</string>
   <string name="sync_conflicts_in_favourites_ticker">Zaznani spori</string>
   <string name="sync_conflicts_in_favourites_content">%1$d stalno usklajenih datotek ni bilo mogoče uskladiti</string>
@@ -106,15 +124,18 @@
   <string name="sync_fail_in_favourites_content">Vsebine %1$d datotek ni bilo mogoče uskladiti (zaznanih je %2$d sporov)</string>
   <string name="sync_foreign_files_forgotten_ticker">Nekatere krajevne datoteke so spregledane</string>
   <string name="sync_foreign_files_forgotten_content">Skupno %1$d datotek iz mape %2$s ni mogoče kopirati v</string>
-  <string name="sync_foreign_files_forgotten_explanation">Od različice 1.3.16 so datoteke, poslane iz te naprave, varnostno kopirane v krajevno mapo %1$s. S tem je preprečena možnost izgube podatkov, ko se ena datoteka usklajuje z več računi.\n\nZaradi te spremembe so vse datoteke, ki so bile kopirane v prejšnjih različicah, kopirane v mapo %2$s. Zaradi napake ni mogoče končati usklajevanja. Datoteke lahko ali pustite kjer so, in odstranite povezavo na %3$s, ali pa premaknete datoteke v mapo %1$s in ohranite povezavo do %4$s.\n\nSpodaj so izpisane krajevne datoteke in oddaljene povezane datoteke v mapi %5$s.</string>
+  <string name="sync_foreign_files_forgotten_explanation">Od različice 1.3.16 so datoteke, poslane iz te naprave, varnostno kopirane v krajevno mapo %1$s. S tem je preprečena možnost izgube podatkov, ko se ena datoteka usklajuje z več računi.\n\nZaradi te spremembe so vse datoteke, ki so bile kopirane v prejšnjih različicah, kopirane v mapo %2$s. Zaradi napake ni mogoče končati usklajevanja. Datoteke lahko ali pustite kjer so, in odstranite povezavo na %3$s ali pa premaknete datoteke v mapo %1$s in ohranite povezavo do %4$s.\n\nSpodaj so izpisane krajevne datoteke in oddaljene povezane datoteke v mapi %5$s.</string>
   <string name="sync_current_folder_was_removed">Mapa %1$s ne obstaja več</string>
   <string name="foreign_files_move">Premakni vse</string>
   <string name="foreign_files_success">Vse datoteke so uspešno premaknjene na novo mesto</string>
   <string name="foreign_files_fail">Nekaterih datotek ni mogoče premakniti</string>
   <string name="foreign_files_local_text">Krajevno: %1$s</string>
   <string name="foreign_files_remote_text">Oddaljeno: %1$s</string>
+  <string name="upload_query_move_foreign_files">Ni dovolj prostora za kopiranje izbranih datotek v mapo %1$s. Ali želite datoteke premakniti na novo mesto?</string>
+  <string name="pass_code_enter_pass_code">Vnesite kodo PIN</string>
   <string name="pass_code_configure_your_pass_code">Vnesite kodo PIN programa</string>
   <string name="pass_code_configure_your_pass_code_explanation">Koda bo zahtevana vsakič pred zagonom programa.</string>
+  <string name="pass_code_reenter_your_pass_code">Ponovno vnesite kodo PIN</string>
   <string name="pass_code_remove_your_pass_code">Odstrani kodo PIN programa</string>
   <string name="pass_code_mismatch">Vpisani kodi PIN nista enaki</string>
   <string name="pass_code_wrong">Napačna koda PIN</string>
@@ -139,6 +160,8 @@
   <string name="media_rewind_description">Vrni nazaj</string>
   <string name="media_play_pause_description">Gumb za predvajanje in premor</string>
   <string name="media_forward_description">Gumb za hitro predvajanje naprej</string>
+  <string name="auth_getting_authorization">Pridobivanje podatkov overitve ...</string>
+  <string name="auth_trying_to_login">Poteka povezovanje v oblak ...</string>
   <string name="auth_no_net_conn_title">Ni omrežne povezave</string>
   <string name="auth_nossl_plain_ok_title">Varna povezava ni na voljo.</string>
   <string name="auth_connection_established">Povezava je vzpostavljena</string>
@@ -150,6 +173,7 @@
   <string name="auth_unknown_host_title">Gostitelja ni mogoče najti</string>
   <string name="auth_incorrect_path_title">Primerka strežnika ni mogoče najti</string>
   <string name="auth_timeout_title">Odziv s strežnika je časovno pretekel</string>
+  <string name="auth_incorrect_address_title">Napačen zapis naslova strežnika</string>
   <string name="auth_ssl_general_error_title">Začenjanje SSL je spodletelo</string>
   <string name="auth_ssl_unverified_server_title">Ni mogoče overiti istovetnosti strežnika SSL</string>
   <string name="auth_bad_oc_version_title">Nepoznana različica strežnika</string>
@@ -158,14 +182,18 @@
   <string name="auth_unauthorized">Napačno uporabniško ime ali geslo</string>
   <string name="auth_oauth_error">Overitev ni uspešno končana</string>
   <string name="auth_oauth_error_access_denied">Dostop je zavrnjen s strani overitvenega strežnika</string>
+  <string name="auth_wtf_reenter_URL">Nepričakovano stanje. Znova vpišite podatke strežnika.</string>
   <string name="auth_expired_oauth_token_toast">Overitev računa je potekla. Pred nadaljevanjem je treba prijavo ponovno overiti.</string>
+  <string name="auth_expired_basic_auth_toast">Vpišite trenutno geslo</string>
   <string name="auth_expired_saml_sso_token_toast">Seja je potekla. Ponovno je treba vzpostaviti povezavo.</string>
+  <string name="auth_connecting_auth_server">Povezovanje s overitvenim strežnikom</string>
   <string name="auth_unsupported_auth_method">Strežnik ne podpira tega načina overitve</string>
   <string name="auth_unsupported_multiaccount">%1$s ne omogoča podpore več računom</string>
   <string name="auth_fail_get_user_name">Strežnik ne vrača ustreznega ID uporabnika. Stopite v stik s skrbnikom sistema.
 	</string>
+  <string name="auth_can_not_auth_against_server">Povezave s strežnikom ni mogoče overiti</string>
   <string name="auth_account_does_not_exist">Račun na napravi še ne obstaja.</string>
-  <string name="favorite">Priljubljene</string>
+  <string name="favorite">Priljubljeno</string>
   <string name="unfavorite">Odstrani priljubljeno</string>
   <string name="common_rename">Preimenuj</string>
   <string name="common_remove">Odstrani</string>
@@ -223,6 +251,8 @@
   <string name="placeholder_filesize">389 KB</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">Pošiljaj slike le prek WiFi</string>
+  <string name="instant_video_upload_on_wifi">Pošiljaj posnetke le prek Wifi</string>
   <string name="instant_upload_path">/Poslano</string>
   <string name="conflict_title">Neskladje datotek</string>
   <string name="conflict_message">Katere datoteke želite ohraniti? Če izberete obe različici, bo krajevni datoteki dodatna k imenu še številka.</string>
@@ -232,6 +262,7 @@
   <string name="preview_image_description">Predogled slike</string>
   <string name="preview_image_error_unknown_format">Te slike ni mogoče prikazati</string>
   <string name="error__upload__local_file_not_copied">Datoteke %1$s ni mogoče kopirati v krajevno mapo %2$s</string>
+  <string name="prefs_instant_upload_path_title">Mapa za odlaganje slik v oblaku</string>
   <string name="share_link_no_support_share_api">Souporaba je na strežniku onemogočena. Možnost lahko spreminjajo le
 		uporabniki s skrbniškimi dovoljenji.</string>
   <string name="share_link_file_no_exist">Souporaba ni mogoča. Preverite, ali datoteka obstaja.</string>
@@ -239,6 +270,7 @@
   <string name="unshare_link_file_no_exist">Ni mogoče prekiniti souporabe. Preverite, ali datoteka obstaja.</string>
   <string name="unshare_link_file_error">Prišlo je do napake med poskusom odstranjevanja souporabe te datoteke ali mape</string>
   <string name="update_link_file_no_exist">Posodobitev ni mogoča. Preverite, ali datoteka obstaja.</string>
+  <string name="update_link_file_error">Prišlo je do napake med posodabljanjem mesta souporabe</string>
   <string name="share_link_password_title">Vpis gesla</string>
   <string name="share_link_empty_password">Vpisati je treba geslo.</string>
   <string name="activity_chooser_send_file_title">Pošlji</string>
@@ -255,6 +287,7 @@
   <string name="forbidden_permissions_delete">za izbris datoteke.</string>
   <string name="share_link_forbidden_permissions">za omogočanje souporabe datoteke.</string>
   <string name="unshare_link_forbidden_permissions">za preklic souporabe datoteke.</string>
+  <string name="update_link_forbidden_permissions">za posodobitev mesta souporabe</string>
   <string name="forbidden_permissions_create">za ustvarjanje datoteke.</string>
   <string name="uploader_upload_forbidden_permissions">za pošiljanje datoteke v oblak.</string>
   <string name="downloader_download_file_not_found">Datoteka na strežniku ni več na voljo.</string>
@@ -262,7 +295,10 @@
   <string name="prefs_add_account">Dodaj račun</string>
   <string name="auth_redirect_non_secure_connection_title">Varna povezava je preusmerjena prek nevarovane poti.</string>
   <string name="actionbar_logger">Dnevnik</string>
+  <string name="log_send_history_button">Pošlji zgodovino</string>
+  <string name="log_send_no_mail_app">Ni programa za pošiljanje dnevniških datotek. Namestite vsaj poštni program.</string>
   <string name="log_send_mail_subject">%1$s dnevniki programa</string>
+  <string name="log_progress_dialog_text">Poteka nalaganje podatkov ...</string>
   <string name="saml_authentication_required_text">Zahtevana je overitev</string>
   <string name="saml_authentication_wrong_pass">Napačno geslo</string>
   <string name="actionbar_move">Premakni</string>
@@ -278,7 +314,9 @@
   <string name="copy_file_invalid_overwrite">Datoteka v ciljni mapi že obstaja.</string>
   <string name="copy_file_error">Prišlo je do napake med kopiranjem datoteke v mapo</string>
   <string name="forbidden_permissions_copy">za kopiranje te datoteke</string>
+  <string name="prefs_category_instant_uploading">Hipno pošiljanje</string>
   <string name="prefs_category_details">Podrobnosti</string>
+  <string name="prefs_instant_video_upload_path_title">Mapa za odlaganje videa v oblaku</string>
   <string name="sync_folder_failed_content">Usklajevanja mape %1$s ni mogoče zaključiti</string>
   <string name="shared_subject_header">v souporabi</string>
   <string name="with_you_subject_header">z vami</string>
@@ -296,16 +334,17 @@
   <string name="file_list__footer__files">%1$d datotek</string>
   <string name="file_list__footer__files_and_folder">%1$d datotek, 1 mapa</string>
   <string name="file_list__footer__files_and_folders">%1$d datotek, %2$d map</string>
-  <string name="prefs_instant_behaviour_dialogTitle">Izvorna datoteka bo ...</string>
-  <string name="prefs_instant_behaviour_title">Izvorna datoteka bo ...</string>
+  <string name="prefs_instant_behaviour_dialogTitle">Izvorno datoteko ...</string>
+  <string name="prefs_instant_behaviour_title">Izvorno datoteko ...</string>
   <string name="upload_copy_files">Kopiraj datoteko</string>
   <string name="upload_move_files">Premakni datoteko</string>
-  <string name="pref_behaviour_entries_keep_file">ohranjeno v izvorni mapi</string>
-  <string name="pref_behaviour_entries_move">premaknjeno v mapo programa</string>
+  <string name="pref_behaviour_entries_keep_file">ohrani v izvorni mapi</string>
+  <string name="pref_behaviour_entries_move">premakni v mapo programa</string>
   <string name="share_dialog_title">Souporaba</string>
   <string name="share_with_user_section_title">Omogoči souporabo s skupino ali z uporabnikom</string>
   <string name="share_no_users">Ni datotek, ki bi jih omogočili za souporabo z drugimi</string>
-  <string name="share_via_link_section_title">Povezava za souporabo</string>
+  <string name="share_add_user_or_group">Dodaj uporabnika ali skupino</string>
+  <string name="share_via_link_section_title">Omogoči souporabo prek povezave</string>
   <string name="share_via_link_expiration_date_label">Nastavi datum preteka</string>
   <string name="share_via_link_password_label">Zaščiti z geslom</string>
   <string name="share_via_link_password_title">Varovano</string>
@@ -320,4 +359,13 @@
   <string name="share_privilege_can_edit_create">ustvari</string>
   <string name="share_privilege_can_edit_change">spremeni</string>
   <string name="share_privilege_can_edit_delete">izbriši</string>
+  <string name="edit_share_unshare">Prekini souporabo</string>
+  <string name="edit_share_done">končano</string>
+  <string name="action_switch_grid_view">Mrežni pogled</string>
+  <string name="action_switch_list_view">Seznamski pogled</string>
+  <string name="manage_space_title">Upravljanje s prostorom</string>
+  <string name="manage_space_description">Nastavitve, podatkovna zbirka in potrdila strežnika %1$s bodo trajno izgubljena. \n\nPrejete datoteke bodo ostale nespremenjene.\n\nOpravilo je lahko dolgotrajno.</string>
+  <string name="manage_space_clear_data">Počisti podatke</string>
+  <string name="manage_space_error">Nekaterih datotek ni mogoče izbrisati.</string>
+  <string name="permission_storage_access">Za prejemanje oziroma pošiljanje datotek v oblak so zahtevana dodatna dovoljenja.</string>
 </resources>

+ 72 - 0
res/values-sr/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Андроид апликација</string>
   <string name="about_version">верзија %1$s</string>
   <string name="actionbar_sync">Освежи налог</string>
   <string name="actionbar_upload">Отпреми</string>
@@ -30,13 +31,17 @@
   <string name="prefs_category_general">Опште</string>
   <string name="prefs_category_more">Остало</string>
   <string name="prefs_accounts">Налози</string>
+  <string name="prefs_manage_accounts">Управљање налозима</string>
   <string name="prefs_passcode">Закључавање кодом</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>
@@ -45,6 +50,7 @@
   <string name="prefs_remember_last_upload_location_summary">памти последњу локацију отпремања дељења</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>
@@ -55,6 +61,7 @@
   <string name="uploader_btn_new_folder_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>
   <string name="uploader_wrn_no_account_quit_btn_text">Напусти</string>
   <string name="uploader_wrn_no_content_title">Нема садржаја за отпремање</string>
@@ -64,6 +71,7 @@
   <string name="file_list_seconds_ago">пре пар секунди</string>
   <string name="file_list_empty">Овде нема ничег. Отпремите нешто!</string>
   <string name="file_list_loading">Учитавам…</string>
+  <string name="file_list_no_app_for_file_type">Нема апликације за тип фајла!</string>
   <string name="local_file_list_empty">Нема фајлова у овој фасцикли.</string>
   <string name="filedetails_select_file">Тапните на фајл ради приказа додатних информација.</string>
   <string name="filedetails_size">Величина:</string>
@@ -71,32 +79,44 @@
   <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="list_layout">Распоред листе</string>
   <string name="action_share">Дељење</string>
   <string name="common_yes">Да</string>
   <string name="common_no">Не</string>
   <string name="common_ok">У реду</string>
+  <string name="common_cancel_sync">Откажи синхронизацију</string>
   <string name="common_cancel">Откажи</string>
+  <string name="common_save_exit">Сачувај и изађи</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>
+  <string name="delete_account">Уклони налог</string>
   <string name="create_account">Отвори налог</string>
   <string name="upload_chooser_title">Отпреми из…</string>
   <string name="uploader_info_dirname">Назив фасцикле</string>
   <string name="uploader_upload_in_progress_ticker">Отпремам…</string>
   <string name="uploader_upload_in_progress_content">%1$d%% oтпремам %2$s</string>
   <string name="uploader_upload_succeeded_ticker">Отпремање је успело</string>
+  <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 фајловa ниje синхронизованo</string>
@@ -111,8 +131,11 @@
   <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="pass_code_enter_pass_code">Унесите кôд за закључавање</string>
   <string name="pass_code_configure_your_pass_code">Унесите код за закључавање</string>
   <string name="pass_code_configure_your_pass_code_explanation">Код ће бити затражен сваки пут кад се апликација покрене</string>
+  <string name="pass_code_reenter_your_pass_code">Поново унесите кôд за закључавање</string>
   <string name="pass_code_remove_your_pass_code">Уклоните код за закључавање</string>
   <string name="pass_code_mismatch">Кодови се не поклапају</string>
   <string name="pass_code_wrong">Неисправан код</string>
@@ -137,6 +160,8 @@
   <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>
@@ -148,6 +173,7 @@
   <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">Погрешан формат адресе сервера</string>
   <string name="auth_ssl_general_error_title">ССЛ иницијализација није успела</string>
   <string name="auth_ssl_unverified_server_title">Не могу да проверим ССЛ идентитет сервера</string>
   <string name="auth_bad_oc_version_title">Непозната верзија сервера</string>
@@ -156,12 +182,16 @@
   <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="auth_account_does_not_exist">Не постоји налог на уређају</string>
   <string name="favorite">Омиљени</string>
   <string name="unfavorite">Неомиљени</string>
@@ -210,6 +240,8 @@
   <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="digest_algorithm_not_available">Дигест алгоритам није доступан на вашем уређају.</string>
+  <string name="ssl_validator_label_certificate_fingerprint">Отисак:</string>
   <string name="ssl_validator_null_cert">Сертификат се не може приказати.</string>
   <string name="ssl_validator_no_info_about_error">- Нема података о грешци</string>
   <string name="placeholder_sentence">Ово је местодржач</string>
@@ -218,17 +250,26 @@
   <string name="placeholder_filesize">389 KB</string>
   <string name="placeholder_timestamp">2012/05/18 12:23 ПоП</string>
   <string name="placeholder_media_time">12:23:45</string>
+  <string name="instant_upload_on_wifi">Отпремај слике само на бежичној мрежи</string>
+  <string name="instant_video_upload_on_wifi">Отпремај видео само на бежичној мрежи</string>
   <string name="instant_upload_path">/InstantUpload</string>
+  <string name="conflict_title">Сукоб фајлова</string>
+  <string name="conflict_message">Које фајлове желите да задржите? Ако изаберете обе верзије, локалном фајлу ће бити додат број у назив.</string>
   <string name="conflict_keep_both">Задржи оба</string>
+  <string name="conflict_use_local_version">локална верзија</string>
+  <string name="conflict_use_server_version">верзија сервера</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="prefs_instant_upload_path_title">Путања отпремања</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="update_link_file_no_exist">Не могу да ажурирам. Проверите да ли фајл постоји</string>
+  <string name="update_link_file_error">Дошло је до грешке при покушају ажурирања дељења</string>
   <string name="share_link_password_title">Унесите лозинку</string>
   <string name="share_link_empty_password">Морате унети лозинку</string>
   <string name="activity_chooser_send_file_title">Пошаљи</string>
@@ -245,13 +286,18 @@
   <string name="forbidden_permissions_delete">да обришете овај фајл</string>
   <string name="share_link_forbidden_permissions">да делите овај фајл</string>
   <string name="unshare_link_forbidden_permissions">да укинете дељење овог фајла</string>
+  <string name="update_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_send_no_mail_app">Нема апликације за слање записника. Инсталирајте апликацију е-поште.</string>
   <string name="log_send_mail_subject">Записници %1$s Андроид апликације</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>
@@ -262,12 +308,18 @@
   <string name="move_file_invalid_overwrite">Фајл већ постоји у одредишној фасцикли</string>
   <string name="move_file_error">Дошло је до грешке при премештању фајла или фасцикле</string>
   <string name="forbidden_permissions_move">да преместите овај фајл</string>
+  <string name="copy_file_not_found">Не могу да копирам. Проверите да ли фајл постоји</string>
+  <string name="copy_file_invalid_into_descendent">Није могуће копирати фасциклу у њену потфасциклу</string>
   <string name="copy_file_invalid_overwrite">Фајл већ постоји у одредишној фасцикли</string>
   <string name="forbidden_permissions_copy">да копирате овај фајл</string>
+  <string name="prefs_category_instant_uploading">Брза отпремања</string>
   <string name="prefs_category_details">Подаци</string>
+  <string name="prefs_instant_video_upload_path_title">Путања отпремања видеа</string>
+  <string name="sync_folder_failed_content">Не могу да довршим синхронизацију фасцикле %1$s</string>
   <string name="shared_subject_header">дељено</string>
   <string name="with_you_subject_header">са вама</string>
   <string name="subject_user_shared_with_you">%1$s подели „%2$s“ са вама</string>
+  <string name="subject_shared_with_you">„%1$s“ је подељен са вама</string>
   <string name="auth_refresh_button">Освежи везу</string>
   <string name="auth_host_address">Адреса сервера</string>
   <string name="common_error_out_memory">Нема довољно меморије</string>
@@ -280,14 +332,34 @@
   <string name="file_list__footer__files">%1$d фајлова</string>
   <string name="file_list__footer__files_and_folder">%1$d фајлова, 1 фасцикла</string>
   <string name="file_list__footer__files_and_folders">%1$d фајлова, %2$d фасцикли</string>
+  <string name="prefs_instant_behaviour_dialogTitle">Оригинални фајл ће бити...</string>
+  <string name="prefs_instant_behaviour_title">Оригинални фајл ће бити...</string>
+  <string name="upload_copy_files">Копирај фајл</string>
+  <string name="upload_move_files">Премести фајл</string>
+  <string name="pref_behaviour_entries_keep_file">остављен у изворној фасцикли</string>
+  <string name="pref_behaviour_entries_move">премештен у фасциклу апликације</string>
   <string name="share_dialog_title">Дељење</string>
+  <string name="share_with_user_section_title">Дељење са корисницима и групама</string>
+  <string name="share_add_user_or_group">Додај корисника или групу</string>
   <string name="share_via_link_section_title">Веза дељења</string>
   <string name="share_via_link_expiration_date_label">Постави датум истека</string>
   <string name="share_via_link_password_label">Заштићено лозинком</string>
+  <string name="share_via_link_password_title">Обезбеђен</string>
+  <string name="share_get_public_link_button">Добави везу</string>
   <string name="share_search">Тражи</string>
+  <string name="search_users_and_groups_hint">Претражи кориснике и групе</string>
+  <string name="share_group_clarification">%1$s (група)</string>
   <string name="share_privilege_can_share">може да дели</string>
   <string name="share_privilege_can_edit">може да мења</string>
   <string name="share_privilege_can_edit_create">направи</string>
   <string name="share_privilege_can_edit_change">измени</string>
   <string name="share_privilege_can_edit_delete">обриши</string>
+  <string name="edit_share_unshare">Заустави дељење</string>
+  <string name="edit_share_done">завршено</string>
+  <string name="action_switch_grid_view">Приказ мреже</string>
+  <string name="action_switch_list_view">Приказ листе</string>
+  <string name="manage_space_title">Управљање простором</string>
+  <string name="manage_space_clear_data">Очисти податке</string>
+  <string name="manage_space_error">Неки фајлови нису могли бити обрисани.</string>
+  <string name="permission_storage_access">Додатне дозволе су потребне за отпремање и преузимање фајлова.</string>
 </resources>

+ 1 - 0
res/values-sv/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Android-app</string>
   <string name="about_version">version %1$s</string>
   <string name="actionbar_sync">Uppdatera konto</string>
   <string name="actionbar_upload">Ladda upp</string>

+ 1 - 0
res/values-tr/strings.xml

@@ -1,5 +1,6 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Android uygulaması</string>
   <string name="about_version">sürüm %1$s</string>
   <string name="actionbar_sync">Hesabı yenile</string>
   <string name="actionbar_upload">Yükle</string>

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

@@ -38,6 +38,7 @@
   <string name="prefs_instant_video_upload_summary">Миттєві відео з камери</string>
   <string name="prefs_log_summary">Використовується для реєстрації помилок</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>
@@ -46,6 +47,7 @@
   <string name="prefs_remember_last_upload_location_summary">Запам\'ятати останній опублікований шлях завантаження</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>
@@ -72,32 +74,39 @@
   <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">Поділитися</string>
   <string name="common_yes">Так</string>
   <string name="common_no">Ні</string>
   <string name="common_ok">OK</string>
+  <string name="common_cancel_sync">Відмінити синхронізацію</string>
   <string name="common_cancel">Відмінити</string>
+  <string name="common_save_exit">Зберегти та вийти</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>
+  <string name="delete_account">Видалити обліковий запис</string>
   <string name="create_account">Створити запис</string>
   <string name="upload_chooser_title">Завантажити з …</string>
   <string name="uploader_info_dirname">Ім\'я теки</string>
   <string name="uploader_upload_in_progress_ticker">Завантаження …</string>
   <string name="uploader_upload_in_progress_content">%1$d%% Завантаження %2$s</string>
   <string name="uploader_upload_succeeded_ticker">Успішно завантажено</string>
+  <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="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="common_choose_account">Оберіть обліковий запис</string>
+  <string name="sync_fail_ticker">Помилка синхронізації</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>
@@ -149,6 +158,7 @@
   <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">Хибний формат адреси сервера</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>
@@ -158,6 +168,7 @@
   <string name="auth_oauth_error">Невдала авторизація</string>
   <string name="auth_oauth_error_access_denied">Доступ заборонений сервером авторизації</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_unsupported_auth_method">Сервер не підтримує обраний метод аутентифікації</string>
   <string name="auth_unsupported_multiaccount">%1$s не підтримує одночасно декілька облікових записів</string>
@@ -219,6 +230,8 @@
   <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">Які файли Ви хочете зберегти? Якщо Ви оберете обидві версії, локальний файл матиме номер, що додається до його імені.</string>
@@ -228,11 +241,13 @@
   <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="prefs_instant_upload_path_title">Шлях завантаження</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="update_link_file_no_exist">Неможливо оновити. Будь ласка, перевірте, чи існує файл</string>
   <string name="share_link_password_title">Ввести пароль</string>
   <string name="share_link_empty_password">Ви повинні ввести пароль</string>
   <string name="activity_chooser_send_file_title">Надіслати</string>
@@ -256,7 +271,9 @@
   <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_send_mail_subject">%1$s Android лог додатку</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>
@@ -289,7 +306,10 @@
   <string name="file_list__footer__files">%1$d файлів</string>
   <string name="file_list__footer__files_and_folder">%1$d файлів, 1 тека</string>
   <string name="file_list__footer__files_and_folders">%1$d файлів, %2$d тек</string>
+  <string name="upload_copy_files">Копіювати файл</string>
+  <string name="upload_move_files">Перемістити файл</string>
   <string name="share_dialog_title">Спільний доступ</string>
+  <string name="share_add_user_or_group">Додати користувача або групу</string>
   <string name="share_via_link_section_title">Поділитись посиланням</string>
   <string name="share_via_link_expiration_date_label">Встановити термін дії</string>
   <string name="share_via_link_password_label">Захистити паролем</string>
@@ -299,4 +319,5 @@
   <string name="share_privilege_can_edit_create">створити</string>
   <string name="share_privilege_can_edit_change">змінити</string>
   <string name="share_privilege_can_edit_delete">видалити</string>
+  <string name="manage_space_clear_data">Очистити дані</string>
 </resources>

+ 67 - 0
res/values-zh-rCN/strings.xml

@@ -1,5 +1,6 @@
 <?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">刷新帐户</string>
   <string name="actionbar_upload">上传</string>
@@ -36,8 +37,11 @@
   <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>
@@ -46,6 +50,7 @@
   <string name="prefs_remember_last_upload_location_summary">记住上次共享上传的位置</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>
@@ -56,6 +61,7 @@
   <string name="uploader_btn_new_folder_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>
   <string name="uploader_wrn_no_account_quit_btn_text">退出</string>
   <string name="uploader_wrn_no_content_title">没有需要上传的内容</string>
@@ -65,6 +71,7 @@
   <string name="file_list_seconds_ago">几秒前</string>
   <string name="file_list_empty">这里还什么都没有。上传些东西吧!</string>
   <string name="file_list_loading">加载中...</string>
+  <string name="file_list_no_app_for_file_type">没有找到程序打开文件格式!</string>
   <string name="local_file_list_empty">在该文件夹中不存在文件。</string>
   <string name="filedetails_select_file">点击一个文件可以显示额外的信息。</string>
   <string name="filedetails_size">大小:</string>
@@ -72,32 +79,44 @@
   <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="list_layout">列表布局</string>
   <string name="action_share">共享</string>
   <string name="common_yes">是</string>
   <string name="common_no">否</string>
   <string name="common_ok">确定</string>
+  <string name="common_cancel_sync">取消同步</string>
   <string name="common_cancel">取消</string>
+  <string name="common_save_exit">保存并退出</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>
+  <string name="delete_account">删除账号</string>
   <string name="create_account">创建账号</string>
   <string name="upload_chooser_title">上传自...</string>
   <string name="uploader_info_dirname">文件夹名称</string>
   <string name="uploader_upload_in_progress_ticker">上传...</string>
   <string name="uploader_upload_in_progress_content">%1$d%% 上传 %2$s</string>
   <string name="uploader_upload_succeeded_ticker">上传成功</string>
+  <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>
@@ -112,8 +131,11 @@
   <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="pass_code_enter_pass_code">请输入你的密码</string>
   <string name="pass_code_configure_your_pass_code">输入您的密码</string>
   <string name="pass_code_configure_your_pass_code_explanation">每次应用启动将会请求密码</string>
+  <string name="pass_code_reenter_your_pass_code">请再次输入你的密码</string>
   <string name="pass_code_remove_your_pass_code">移除您的密码</string>
   <string name="pass_code_mismatch">密码不一致</string>
   <string name="pass_code_wrong">错误的密码</string>
@@ -138,6 +160,8 @@
   <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>
@@ -149,6 +173,7 @@
   <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">错误的服务器地址</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>
@@ -157,12 +182,16 @@
   <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">您的服务器没有返回一个正确的用户 id,请联系管理员
 	</string>
+  <string name="auth_can_not_auth_against_server">无法连接认证服务器</string>
   <string name="auth_account_does_not_exist">设备中还未存在该帐号</string>
   <string name="favorite">收藏</string>
   <string name="unfavorite">取消收藏</string>
@@ -211,6 +240,9 @@
   <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="digest_algorithm_not_available">算法不可用。</string>
+  <string name="ssl_validator_label_certificate_fingerprint">证书指纹:</string>
+  <string name="certificate_load_problem">加载证书失败。</string>
   <string name="ssl_validator_null_cert">无法显示证书。</string>
   <string name="ssl_validator_no_info_about_error">- 没有关于该错误的有效信息</string>
   <string name="placeholder_sentence">占位符</string>
@@ -219,6 +251,8 @@
   <string name="placeholder_filesize">389字节</string>
   <string name="placeholder_timestamp">2012/05/18 下午12:23 </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">您想要保留哪个文件?如果您同时选中了两个版本,本地的文件的文件名将被加上一个数字</string>
@@ -228,11 +262,14 @@
   <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="prefs_instant_upload_path_title">上传路径</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="update_link_file_no_exist">无法上传,请检查文件是否存在</string>
+  <string name="update_link_file_error">更新共享时发生错误</string>
   <string name="share_link_password_title">输入密码</string>
   <string name="share_link_empty_password">您必须输入密码</string>
   <string name="activity_chooser_send_file_title">发送</string>
@@ -249,6 +286,7 @@
   <string name="forbidden_permissions_delete">删除该文件</string>
   <string name="share_link_forbidden_permissions">共享该文件</string>
   <string name="unshare_link_forbidden_permissions">取消共享该文件</string>
+  <string name="update_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>
@@ -256,7 +294,10 @@
   <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_send_no_mail_app">无法发送日志,请安装邮箱应用。</string>
   <string name="log_send_mail_subject">%1$s Android 程序日志</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>
@@ -272,7 +313,10 @@
   <string name="copy_file_invalid_overwrite">该文件已经存在在目标文件夹</string>
   <string name="copy_file_error">尝试复制这个文件或文件夹时发生了错误</string>
   <string name="forbidden_permissions_copy">复制这个文件</string>
+  <string name="prefs_category_instant_uploading">即时上传</string>
   <string name="prefs_category_details">详细信息</string>
+  <string name="prefs_instant_video_upload_path_title">上传视频路径</string>
+  <string name="sync_folder_failed_content"> %1$s同步未完成。</string>
   <string name="shared_subject_header">已共享</string>
   <string name="with_you_subject_header">与你</string>
   <string name="subject_user_shared_with_you">%1$s和你分享了“%2$s”</string>
@@ -289,15 +333,38 @@
   <string name="file_list__footer__files">%1$d 个文件</string>
   <string name="file_list__footer__files_and_folder">%1$d 个文件,1 个文件夹</string>
   <string name="file_list__footer__files_and_folders">%1$d 个文件,%2$d 个文件夹</string>
+  <string name="prefs_instant_behaviour_dialogTitle">原始文件将会...</string>
+  <string name="prefs_instant_behaviour_title">原始文件将会...</string>
+  <string name="upload_copy_files">复制文件</string>
+  <string name="upload_move_files">移动文件</string>
+  <string name="pref_behaviour_entries_keep_file">保留在原始文件夹</string>
+  <string name="pref_behaviour_entries_move">移动到应用文件夹</string>
   <string name="share_dialog_title">共享</string>
+  <string name="share_with_user_section_title">分享给其他用户或组</string>
+  <string name="share_no_users">目前没有文件向您分享。</string>
+  <string name="share_add_user_or_group">添加用户或组</string>
   <string name="share_via_link_section_title">分享链接</string>
   <string name="share_via_link_expiration_date_label">设置过期日期</string>
   <string name="share_via_link_password_label">密码保护</string>
   <string name="share_via_link_password_title">安全</string>
+  <string name="share_get_public_link_button">获取链接</string>
   <string name="share_search">搜索</string>
+  <string name="search_users_and_groups_hint">搜索用户和组</string>
+  <string name="share_group_clarification">%1$s (组)</string>
+  <string name="share_sharee_unavailable">对不起,共享服务功能未开启,请联系管理员</string>
   <string name="share_privilege_can_share">可共享</string>
   <string name="share_privilege_can_edit">可编辑</string>
   <string name="share_privilege_can_edit_create">创建</string>
   <string name="share_privilege_can_edit_change">更改</string>
   <string name="share_privilege_can_edit_delete">删除</string>
+  <string name="edit_share_unshare">停止共享</string>
+  <string name="edit_share_done">完成</string>
+  <string name="action_switch_grid_view">网格视图</string>
+  <string name="action_switch_list_view">列表视图</string>
+  <string name="manage_space_title">管理空间</string>
+  <string name="manage_space_description">设置,数据库以及 %1$s 的服务器证书将会被永久删除。
+\n\n 已经下载的文件将会保留。\n\n完成此操作将会消耗一些时间。</string>
+  <string name="manage_space_clear_data">清除数据</string>
+  <string name="manage_space_error">某些文件无法删除。</string>
+  <string name="permission_storage_access">没有权限上传和下载文件。</string>
 </resources>

+ 9 - 2
res/values/colors.xml

@@ -23,10 +23,14 @@
     <color name="owncloud_blue_accent">#35537A</color>
     <color name="owncloud_blue_bright">#00ddff</color>
 
-    <color name="list_item_lastmod_and_filesize_text">#989898</color>
+    <color name="list_item_lastmod_and_filesize_text">@color/secondaryTextColor</color>
     <color name="black">#000000</color>
     <color name="white">#FFFFFF</color>
-    <color name="textColor">#303030</color>
+    <color name="fab_white">#fafafa</color>
+    <color name="white_pressed">#f1f1f1</color>
+    <color name="half_black">#808080</color>
+    <color name="black_semi_transparent">#B2000000</color>
+    <color name="textColor">@color/black</color>
     <color name="drawerMenuTextColor">#000000</color>
     <color name="list_divider_background">#eee</color>
     <color name="filelist_icon_backgorund">#DDDDDD</color>
@@ -35,6 +39,9 @@
     <color name="login_text_hint_color">#757575</color>
     <color name="secondary_button_color">#D6D7D7</color>
     <color name="transparent">#00000000</color>
+    <color name="secondaryTextColor">#a0a0a0</color>
+    <color name="listItemHighlighted">#f8f8f8</color>
+    <color name="highlightTextColor">#55739a</color>
 
     <!-- Colors -->
     <color name="color_accent">@color/owncloud_blue_accent</color>

+ 9 - 1
res/values/styles.xml

@@ -53,7 +53,9 @@
 		<item name="android:textColorPrimary">@color/primary</item>
 	</style>
 
-	<style name="ownCloud.Dialog" parent="Theme.AppCompat.Light.Dialog" />
+	<style name="ownCloud.Dialog" parent="Theme.AppCompat.Light.Dialog">
+		<item name="colorAccent">@color/color_accent</item>
+	</style>
 
 	<style name="ProgressDialogTheme" parent="ownCloud.Dialog">
 		<item name="colorAccent">@color/color_accent</item>
@@ -107,6 +109,7 @@
 
 	<style name="Theme.ownCloud.Fullscreen" parent="style/Theme.AppCompat">
         <item name="android:windowFullscreen">true</item>
+		<item name="colorAccent">@color/color_accent</item>
     </style>
 	
 	
@@ -129,6 +132,11 @@
 		<item name="buttonBarStyle">@style/Theme.ownCloud.Dialog.ButtonBar</item>
 	</style>
 
+	<style name="menu_labels_style">
+		<item name="android:background">@drawable/fab_label_background</item>
+		<item name="android:textColor">@color/fab_white</item>
+	</style>
+
 	<!-- Button Bar hack due to Lollipop bug:
 		https://code.google.com/p/android/issues/detail?id=78302
 	fix see:

+ 1 - 0
setup_env.bat

@@ -24,6 +24,7 @@ call git submodule update
 
 call android.bat update project -p libs/android-support-appcompat-v7-exploded-aar --target android-23
 call android.bat update project -p libs/android-support-design-exploded-aar --target android-23
+call android.bat update project -p libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar --target android-22
 call android.bat update lib-project -p owncloud-android-library
 call android.bat update project -p .
 call android.bat update project -p oc_jb_workaround

+ 1 - 0
setup_env.sh

@@ -19,6 +19,7 @@ function initForAnt {
 	#Prepare project android-support-appcompat-v7 ; JAR file is not enough, includes resources
 	android update lib-project -p libs/android-support-appcompat-v7-exploded-aar --target android-23
 	android update lib-project -p libs/android-support-design-exploded-aar --target android-23
+	android update lib-project -p libs/com-getbase-floatingactionbutton-1-10-1-exploded-aar --target android-22
 
 	#As default it updates the ant scripts
 	android update lib-project -p owncloud-android-library

+ 8 - 0
src/com/owncloud/android/datamodel/OCFile.java

@@ -438,6 +438,14 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         return mParentId;
     }
 
+    /**
+     * get remote path of parent file
+     * @return remote path
+     */
+    public String getParentRemotePath() {
+        return new File(getRemotePath()).getParent();
+    }
+
     /**
      * Check, if this file needs updating
      *

+ 31 - 23
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -86,7 +86,6 @@ import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
 import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;
-import com.owncloud.android.ui.dialog.UploadSourceDialogFragment;
 import com.owncloud.android.ui.fragment.FileDetailFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
@@ -145,7 +144,6 @@ public class FileDisplayActivity extends HookActivity implements
     private boolean mSyncInProgress = false;
 
     private static String DIALOG_UNTRUSTED_CERT = "DIALOG_UNTRUSTED_CERT";
-    private static String DIALOG_CREATE_FOLDER = "DIALOG_CREATE_FOLDER";
     private static String DIALOG_UPLOAD_SOURCE = "DIALOG_UPLOAD_SOURCE";
     private static String DIALOG_CERT_NOT_SAVED = "DIALOG_CERT_NOT_SAVED";
 
@@ -530,8 +528,6 @@ public class FileDisplayActivity extends HookActivity implements
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         boolean drawerOpen = mDrawerLayout.isDrawerOpen(GravityCompat.START);
-        menu.findItem(R.id.action_upload).setVisible(!drawerOpen);
-        menu.findItem(R.id.action_create_dir).setVisible(!drawerOpen);
         menu.findItem(R.id.action_sort).setVisible(!drawerOpen);
         menu.findItem(R.id.action_sync_account).setVisible(!drawerOpen);
         menu.findItem(R.id.action_switch_view).setVisible(!drawerOpen);
@@ -543,6 +539,7 @@ public class FileDisplayActivity extends HookActivity implements
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.main_menu, menu);
+        menu.findItem(R.id.action_create_dir).setVisible(false);
         return true;
     }
 
@@ -551,23 +548,10 @@ public class FileDisplayActivity extends HookActivity implements
     public boolean onOptionsItemSelected(MenuItem item) {
         boolean retval = true;
         switch (item.getItemId()) {
-            case R.id.action_create_dir: {
-                CreateFolderDialogFragment dialog =
-                        CreateFolderDialogFragment.newInstance(getCurrentDir());
-                dialog.show(getSupportFragmentManager(), DIALOG_CREATE_FOLDER);
-                break;
-            }
-
             case R.id.action_sync_account: {
                 startSynchronization();
                 break;
             }
-            case R.id.action_upload: {
-                UploadSourceDialogFragment dialog =
-                        UploadSourceDialogFragment.newInstance(getAccount());
-                dialog.show(getSupportFragmentManager(), DIALOG_UPLOAD_SOURCE);
-                break;
-            }
             case android.R.id.home: {
                 FileFragment second = getSecondFragment();
                 OCFile currentDir = getCurrentDir();
@@ -859,7 +843,26 @@ public class FileDisplayActivity extends HookActivity implements
 
     @Override
     public void onBackPressed() {
-        if (!isDrawerOpen()) {
+        boolean isFabOpen = isFabOpen();
+        boolean isDrawerOpen = isDrawerOpen();
+
+        /*
+         * BackPressed priority/hierarchy:
+         *    1. close drawer if opened
+         *    2. close FAB if open (only if drawer isn't open)
+         *    3. navigate up (only if drawer and FAB aren't open)
+         */
+        if(isDrawerOpen && isFabOpen) {
+            // close drawer first
+            super.onBackPressed();
+        } else if(isDrawerOpen && !isFabOpen) {
+            // close drawer
+            super.onBackPressed();
+        } else if (!isDrawerOpen && isFabOpen) {
+            // close fab
+            getListOfFilesFragment().getFabMain().collapse();
+        } else {
+            // all closed
             OCFileListFragment listOfFiles = getListOfFilesFragment();
             if (mDualPane || getSecondFragment() == null) {
                 OCFile currentDir = getCurrentDir();
@@ -875,8 +878,6 @@ public class FileDisplayActivity extends HookActivity implements
                 setFile(listOfFiles.getCurrentFile());
             }
             cleanSecondFragment();
-        } else {
-            super.onBackPressed();
         }
     }
 
@@ -954,6 +955,16 @@ public class FileDisplayActivity extends HookActivity implements
         Log_OC.v(TAG, "onPause() end");
     }
 
+    public boolean isFabOpen() {
+        if(getListOfFilesFragment() != null
+                && getListOfFilesFragment().getFabMain() != null
+                && getListOfFilesFragment().getFabMain().isExpanded()) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
 
     private class SyncBroadcastReceiver extends BroadcastReceiver {
 
@@ -1040,9 +1051,6 @@ public class FileDisplayActivity extends HookActivity implements
                     removeStickyBroadcast(intent);
                     Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
                     mProgressBar.setIndeterminate(mSyncInProgress);
-                    //mProgressBar.setVisibility((mSyncInProgress) ? View.VISIBLE : View.INVISIBLE);
-                    //setSupportProgressBarIndeterminateVisibility(mSyncInProgress
-                    /*|| mRefreshSharesInProgress*/ //);
 
                     setBackgroundText();
 

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

@@ -148,6 +148,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
         Bundle args = new Bundle();
         args.putBoolean(OCFileListFragment.ARG_JUST_FOLDERS, true);
         args.putBoolean(OCFileListFragment.ARG_ALLOW_CONTEXTUAL_ACTIONS, false);
+        args.putBoolean(OCFileListFragment.ARG_HIDE_FAB, true);
         listOfFiles.setArguments(args);
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.add(R.id.fragment_container, listOfFiles, TAG_LIST_OF_FOLDERS);
@@ -256,7 +257,6 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.main_menu, menu);
-        menu.findItem(R.id.action_upload).setVisible(false);
         menu.findItem(R.id.action_sort).setVisible(false);
         return true;
     }

+ 14 - 0
src/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -21,6 +21,7 @@
 package com.owncloud.android.ui.activity;
 
 import android.accounts.Account;
+import android.app.Activity;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.AsyncTask;
@@ -153,6 +154,19 @@ public class UploadFilesActivity extends FileActivity implements
         Log_OC.d(TAG, "onCreate() end");
     }
 
+    /**
+     * Helper to launch the UploadFilesActivity for which you would like a result when it finished.
+     * Your onActivityResult() method will be called with the given requestCode.
+     *
+     * @param activity    the activity which should call the upload activity for a result
+     * @param account     the account for which the upload activity is called
+     * @param requestCode If >= 0, this code will be returned in onActivityResult()
+     */
+    public static void startUploadActivityForResult(Activity activity, Account account, int requestCode) {
+        Intent action = new Intent(activity, UploadFilesActivity.class);
+        action.putExtra(EXTRA_ACCOUNT, (account));
+        activity.startActivityForResult(action, requestCode);
+    }
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {

+ 251 - 130
src/com/owncloud/android/ui/activity/Uploader.java

@@ -23,11 +23,14 @@ package com.owncloud.android.ui.activity;
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
+import android.accounts.AuthenticatorException;
 import android.annotation.SuppressLint;
 import android.app.Dialog;
 import android.app.ProgressDialog;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.IntentFilter;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
@@ -58,7 +61,6 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ListView;
 import android.widget.ProgressBar;
-import android.widget.SimpleAdapter;
 import android.widget.Toast;
 
 import com.owncloud.android.MainApp;
@@ -68,9 +70,13 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.CreateFolderOperation;
+import com.owncloud.android.operations.RefreshFolderOperation;
 import com.owncloud.android.operations.UploadFileOperation;
+import com.owncloud.android.syncadapter.FileSyncAdapter;
+import com.owncloud.android.ui.adapter.UploaderAdapter;
 import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.utils.CopyTmpFileAsyncTask;
@@ -101,6 +107,9 @@ public class Uploader extends FileActivity
     private boolean mCreateDir;
     private String mUploadPath;
     private OCFile mFile;
+
+    private SyncBroadcastReceiver mSyncBroadcastReceiver;
+    private boolean mSyncInProgress = false;
     private boolean mAccountSelected;
     private boolean mAccountSelectionShowing;
 
@@ -149,6 +158,13 @@ public class Uploader extends FileActivity
         if (mAccountSelected) {
             setAccount((Account) savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT));
         }
+
+        // Listen for sync messages
+        IntentFilter syncIntentFilter = new IntentFilter(RefreshFolderOperation.
+                EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
+        syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
+        mSyncBroadcastReceiver = new SyncBroadcastReceiver();
+        registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
     }
 
     @Override
@@ -199,105 +215,113 @@ public class Uploader extends FileActivity
         Log_OC.d(TAG, "onSaveInstanceState() end");
     }
 
+    @Override
+    protected void onDestroy(){
+        if (mSyncBroadcastReceiver != null) {
+            unregisterReceiver(mSyncBroadcastReceiver);
+        }
+        super.onDestroy();
+    }
+
     @Override
     protected Dialog onCreateDialog(final int id) {
         final AlertDialog.Builder builder = new Builder(this);
         switch (id) {
-            case DIALOG_WAITING:
-                final ProgressDialog pDialog = new ProgressDialog(this, R.style.ProgressDialogTheme);
-                pDialog.setIndeterminate(false);
-                pDialog.setCancelable(false);
-                pDialog.setMessage(getResources().getString(R.string.uploader_info_uploading));
-                pDialog.setOnShowListener(new DialogInterface.OnShowListener() {
-                    @Override
-                    public void onShow(DialogInterface dialog) {
-                        ProgressBar v = (ProgressBar) pDialog.findViewById(android.R.id.progress);
-                        v.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.color_accent),
-                                android.graphics.PorterDuff.Mode.MULTIPLY);
+        case DIALOG_WAITING:
+            final ProgressDialog pDialog = new ProgressDialog(this, R.style.ProgressDialogTheme);
+            pDialog.setIndeterminate(false);
+            pDialog.setCancelable(false);
+            pDialog.setMessage(getResources().getString(R.string.uploader_info_uploading));
+            pDialog.setOnShowListener(new DialogInterface.OnShowListener() {
+                @Override
+                public void onShow(DialogInterface dialog) {
+                    ProgressBar v = (ProgressBar) pDialog.findViewById(android.R.id.progress);
+                    v.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.color_accent),
+                            android.graphics.PorterDuff.Mode.MULTIPLY);
 
-                    }
-                });
-                return pDialog;
-            case DIALOG_NO_ACCOUNT:
-                builder.setIcon(android.R.drawable.ic_dialog_alert);
-                builder.setTitle(R.string.uploader_wrn_no_account_title);
-                builder.setMessage(String.format(
-                        getString(R.string.uploader_wrn_no_account_text),
-                        getString(R.string.app_name)));
-                builder.setCancelable(false);
-                builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        if (android.os.Build.VERSION.SDK_INT >
-                                android.os.Build.VERSION_CODES.ECLAIR_MR1) {
-                            // using string value since in API7 this
-                            // constatn is not defined
-                            // in API7 < this constatant is defined in
-                            // Settings.ADD_ACCOUNT_SETTINGS
-                            // and Settings.EXTRA_AUTHORITIES
-                            Intent intent = new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT);
-                            intent.putExtra("authorities", new String[]{MainApp.getAuthTokenType()});
-                            startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);
-                        } else {
-                            // since in API7 there is no direct call for
-                            // account setup, so we need to
-                            // show our own AccountSetupAcricity, get
-                            // desired results and setup
-                            // everything for ourself
-                            Intent intent = new Intent(getBaseContext(), AccountAuthenticator.class);
-                            startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);
-                        }
-                    }
-                });
-                builder.setNegativeButton(R.string.uploader_wrn_no_account_quit_btn_text, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        finish();
-                    }
-                });
-                return builder.create();
-            case DIALOG_MULTIPLE_ACCOUNT:
-                CharSequence ac[] = new CharSequence[
-                        mAccountManager.getAccountsByType(MainApp.getAccountType()).length];
-                for (int i = 0; i < ac.length; ++i) {
-                    ac[i] = DisplayUtils.convertIdn(
-                            mAccountManager.getAccountsByType(MainApp.getAccountType())[i].name, false);
                 }
-                builder.setTitle(R.string.common_choose_account);
-                builder.setItems(ac, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        setAccount(mAccountManager.getAccountsByType(MainApp.getAccountType())[which]);
-                        onAccountSet(mAccountWasRestored);
-                        dialog.dismiss();
-                        mAccountSelected = true;
-                        mAccountSelectionShowing = false;
-                    }
-                });
-                builder.setCancelable(true);
-                builder.setOnCancelListener(new OnCancelListener() {
-                    @Override
-                    public void onCancel(DialogInterface dialog) {
-                        mAccountSelectionShowing = false;
-                        dialog.cancel();
-                        finish();
-                    }
-                });
-                return builder.create();
-            case DIALOG_NO_STREAM:
-                builder.setIcon(android.R.drawable.ic_dialog_alert);
-                builder.setTitle(R.string.uploader_wrn_no_content_title);
-                builder.setMessage(R.string.uploader_wrn_no_content_text);
-                builder.setCancelable(false);
-                builder.setNegativeButton(R.string.common_cancel, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        finish();
+            });
+            return pDialog;
+        case DIALOG_NO_ACCOUNT:
+            builder.setIcon(android.R.drawable.ic_dialog_alert);
+            builder.setTitle(R.string.uploader_wrn_no_account_title);
+            builder.setMessage(String.format(
+                    getString(R.string.uploader_wrn_no_account_text),
+                    getString(R.string.app_name)));
+            builder.setCancelable(false);
+            builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    if (android.os.Build.VERSION.SDK_INT >
+                            android.os.Build.VERSION_CODES.ECLAIR_MR1) {
+                        // using string value since in API7 this
+                        // constatn is not defined
+                        // in API7 < this constatant is defined in
+                        // Settings.ADD_ACCOUNT_SETTINGS
+                        // and Settings.EXTRA_AUTHORITIES
+                        Intent intent = new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT);
+                        intent.putExtra("authorities", new String[]{MainApp.getAuthTokenType()});
+                        startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);
+                    } else {
+                        // since in API7 there is no direct call for
+                        // account setup, so we need to
+                        // show our own AccountSetupAcricity, get
+                        // desired results and setup
+                        // everything for ourself
+                        Intent intent = new Intent(getBaseContext(), AccountAuthenticator.class);
+                        startActivityForResult(intent, REQUEST_CODE_SETUP_ACCOUNT);
                     }
-                });
-                return builder.create();
-            default:
-                throw new IllegalArgumentException("Unknown dialog id: " + id);
+                }
+            });
+            builder.setNegativeButton(R.string.uploader_wrn_no_account_quit_btn_text, new OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    finish();
+                }
+            });
+            return builder.create();
+        case DIALOG_MULTIPLE_ACCOUNT:
+            CharSequence ac[] = new CharSequence[
+                    mAccountManager.getAccountsByType(MainApp.getAccountType()).length];
+            for (int i = 0; i < ac.length; ++i) {
+                ac[i] = DisplayUtils.convertIdn(
+                        mAccountManager.getAccountsByType(MainApp.getAccountType())[i].name, false);
+            }
+            builder.setTitle(R.string.common_choose_account);
+            builder.setItems(ac, new OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    setAccount(mAccountManager.getAccountsByType(MainApp.getAccountType())[which]);
+                    onAccountSet(mAccountWasRestored);
+                    dialog.dismiss();
+                    mAccountSelected = true;
+                    mAccountSelectionShowing = false;
+                }
+            });
+            builder.setCancelable(true);
+            builder.setOnCancelListener(new OnCancelListener() {
+                @Override
+                public void onCancel(DialogInterface dialog) {
+                    mAccountSelectionShowing = false;
+                    dialog.cancel();
+                    finish();
+                }
+            });
+            return builder.create();
+        case DIALOG_NO_STREAM:
+            builder.setIcon(android.R.drawable.ic_dialog_alert);
+            builder.setTitle(R.string.uploader_wrn_no_content_title);
+            builder.setMessage(R.string.uploader_wrn_no_content_text);
+            builder.setCancelable(false);
+            builder.setNegativeButton(R.string.common_cancel, new OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialog, int which) {
+                    finish();
+                }
+            });
+            return builder.create();
+        default:
+            throw new IllegalArgumentException("Unknown dialog id: " + id);
         }
     }
 
@@ -320,12 +344,13 @@ public class Uploader extends FileActivity
 
     @Override
     public void onBackPressed() {
-
         if (mParents.size() <= 1) {
             super.onBackPressed();
             return;
         } else {
             mParents.pop();
+            String full_path = generatePath(mParents);
+            startSyncFolderOperation(getStorageManager().getFileByPath(full_path));
             populateDirectoryList();
         }
     }
@@ -340,13 +365,16 @@ public class Uploader extends FileActivity
         // filter on dirtype
         Vector<OCFile> files = new Vector<OCFile>();
         for (OCFile f : tmpfiles)
-            if (f.isFolder())
                 files.add(f);
         if (files.size() < position) {
             throw new IndexOutOfBoundsException("Incorrect item selected");
         }
-        mParents.push(files.get(position).getFileName());
-        populateDirectoryList();
+        if (files.get(position).isFolder()){
+            OCFile folderToEnter = files.get(position);
+            startSyncFolderOperation(folderToEnter);
+            mParents.push(folderToEnter.getFileName());
+            populateDirectoryList();
+        }
     }
 
     @Override
@@ -420,20 +448,20 @@ public class Uploader extends FileActivity
         if (mFile != null) {
             // TODO Enable when "On Device" is recovered ?
             Vector<OCFile> files = getStorageManager().getFolderContent(mFile/*, false*/);
-            List<HashMap<String, Object>> data = new LinkedList<HashMap<String, Object>>();
+            List<HashMap<String, OCFile>> data = new LinkedList<HashMap<String,OCFile>>();
             for (OCFile f : files) {
-                HashMap<String, Object> h = new HashMap<String, Object>();
-                if (f.isFolder()) {
-                    h.put("dirname", f.getFileName());
+                HashMap<String, OCFile> h = new HashMap<String, OCFile>();
+                    h.put("dirname", f);
                     data.add(h);
-                }
             }
-            SimpleAdapter sa = new SimpleAdapter(this,
-                    data,
-                    R.layout.uploader_list_item_layout,
-                    new String[]{"dirname"},
-                    new int[]{R.id.filename});
 
+            UploaderAdapter sa = new UploaderAdapter(this,
+                                                data,
+                                                R.layout.uploader_list_item_layout,
+                                                new String[] {"dirname"},
+                                                new int[] {R.id.filename},
+                                                getStorageManager(), getAccount());
+            
             mListView.setAdapter(sa);
             Button btnChooseFolder = (Button) findViewById(R.id.uploader_choose_folder);
             btnChooseFolder.setOnClickListener(this);
@@ -444,6 +472,25 @@ public class Uploader extends FileActivity
             mListView.setOnItemClickListener(this);
         }
     }
+    
+    private void startSyncFolderOperation(OCFile folder) {
+        long currentSyncTime = System.currentTimeMillis(); 
+        
+        mSyncInProgress = true;
+        
+        // perform folder synchronization
+        RemoteOperation synchFolderOp = new RefreshFolderOperation( folder,
+                                                                        currentSyncTime, 
+                                                                        false,
+                                                                        false,
+                                                                        false,
+                                                                        getStorageManager(),
+                                                                        getAccount(),
+                                                                        getApplicationContext()
+                                                                      );
+        synchFolderOp.execute(getAccount(), this, null, null);
+    }
+
 
     private String generatePath(Stack<String> dirs) {
         String full_path = "";
@@ -469,12 +516,7 @@ public class Uploader extends FileActivity
     @SuppressLint("NewApi")
     public void uploadFiles() {
         try {
-
-            // ArrayList for files with path in external storage
-            ArrayList<String> local = new ArrayList<String>();
-            ArrayList<String> remote = new ArrayList<String>();
-
-            // this checks the mimeType 
+            // this checks the mimeType
             for (Parcelable mStream : mStreamsToUpload) {
 
                 Uri uri = (Uri) mStream;
@@ -553,26 +595,11 @@ public class Uploader extends FileActivity
                         mNumCacheFile++;
                         showWaitingCopyDialog();
                         copyTask.execute(params);
-                    } else {
-                        remote.add(filePath);
-                        local.add(data);
                     }
                 } else {
                     throw new SecurityException();
                 }
 
-                FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
-                requester.uploadNewFile(
-                        this,
-                        getAccount(),
-                        local.toArray(new String[local.size()]),
-                        remote.toArray(new String[remote.size()]),
-                        null,       // MIME type will be detected from file name
-                        FileUploader.LOCAL_BEHAVIOUR_FORGET,
-                        false,      // do not create parent folder if not existent
-                        UploadFileOperation.CREATED_BY_USER
-                );
-
                 //Save the path to shared preferences
                 SharedPreferences.Editor appPrefs = PreferenceManager
                         .getDefaultSharedPreferences(getApplicationContext()).edit();
@@ -659,7 +686,6 @@ public class Uploader extends FileActivity
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.main_menu, menu);
-        menu.findItem(R.id.action_upload).setVisible(false);
         menu.findItem(R.id.action_sort).setVisible(false);
         menu.findItem(R.id.action_sync_account).setVisible(false);
         return true;
@@ -686,8 +712,104 @@ public class Uploader extends FileActivity
         }
         return retval;
     }
+    
+    private OCFile getCurrentFolder(){
+        OCFile file = mFile;
+        if (file != null) {
+            if (file.isFolder()) {
+                return file;
+            } else if (getStorageManager() != null) {
+                return getStorageManager().getFileByPath(file.getParentRemotePath());
+            }
+        }
+        return null;
+    }
+    
+    private void browseToRoot() {
+        OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
+        mFile = root;
+        startSyncFolderOperation(root);
+    }
+    
+    private class SyncBroadcastReceiver extends BroadcastReceiver {
+
+        /**
+         * {@link BroadcastReceiver} to enable syncing feedback in UI
+         */
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            try {
+                String event = intent.getAction();
+                Log_OC.d(TAG, "Received broadcast " + event);
+                String accountName = intent.getStringExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME);
+                String synchFolderRemotePath =
+                        intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH);
+                RemoteOperationResult synchResult =
+                        (RemoteOperationResult) intent.getSerializableExtra(
+                                FileSyncAdapter.EXTRA_RESULT);
+                boolean sameAccount = (getAccount() != null &&
+                        accountName.equals(getAccount().name) && getStorageManager() != null);
+
+                if (sameAccount) {
+
+                    if (FileSyncAdapter.EVENT_FULL_SYNC_START.equals(event)) {
+                        mSyncInProgress = true;
+
+                    } else {
+                        OCFile currentFile = (mFile == null) ? null :
+                                getStorageManager().getFileByPath(mFile.getRemotePath());
+                        OCFile currentDir = (getCurrentFolder() == null) ? null :
+                                getStorageManager().getFileByPath(getCurrentFolder().getRemotePath());
+
+                        if (currentDir == null) {
+                            // current folder was removed from the server 
+                            Toast.makeText(context,
+                                    String.format(
+                                            getString(R.string.sync_current_folder_was_removed),
+                                            getCurrentFolder().getFileName()),
+                                    Toast.LENGTH_LONG)
+                                    .show();
+                            browseToRoot();
+
+                        } else {
+                            if (currentFile == null && !mFile.isFolder()) {
+                                // currently selected file was removed in the server, and now we know it
+                                currentFile = currentDir;
+                            }
+
+                            if (synchFolderRemotePath != null &&
+                                    currentDir.getRemotePath().equals(synchFolderRemotePath)) {
+                                populateDirectoryList();
+                            }
+                            mFile = currentFile;
+                        }
+
+                        mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) &&
+                                !RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event));
+
+                        if (RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED.
+                                equals(event) &&
+                                /// TODO refactor and make common
+                                synchResult != null && !synchResult.isSuccess() &&
+                                (synchResult.getCode() == ResultCode.UNAUTHORIZED ||
+                                        synchResult.isIdPRedirection() ||
+                                        (synchResult.isException() && synchResult.getException()
+                                                instanceof AuthenticatorException))) {
 
+                            requestCredentialsUpdate(context);
+                        }
+                    }
+                    removeStickyBroadcast(intent);
+                    Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
 
+                }
+            } catch (RuntimeException e) {
+                // avoid app crashes after changing the serial id of RemoteOperationResult 
+                // in owncloud library with broadcast notifications pending to process
+                removeStickyBroadcast(intent);
+            }
+        }
+    }
     /**
      * Process the result of CopyTmpFileAsyncTask
      *
@@ -717,7 +839,6 @@ public class Uploader extends FileActivity
             Toast.makeText(this, message, Toast.LENGTH_LONG).show();
             Log_OC.d(TAG, message);
         }
-
     }
 
     /**

+ 116 - 0
src/com/owncloud/android/ui/adapter/UploaderAdapter.java

@@ -0,0 +1,116 @@
+/**
+ *   ownCloud Android client application
+ *
+ *   @author Tobias Kaminsky
+ *   Copyright (C) 2016 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.adapter;
+
+import android.accounts.Account;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.SimpleAdapter;
+import android.widget.TextView;
+
+import com.owncloud.android.R;
+import com.owncloud.android.datamodel.FileDataStorageManager;
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.datamodel.ThumbnailsCacheManager;
+import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable;
+import com.owncloud.android.utils.MimetypeIconUtil;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class UploaderAdapter extends SimpleAdapter {
+    
+    private Context mContext;
+    private Account mAccount;
+    private FileDataStorageManager mStorageManager;
+    private LayoutInflater inflater;
+
+    public UploaderAdapter(Context context,
+                           List<? extends Map<String, ?>> data, int resource, String[] from,
+                           int[] to, FileDataStorageManager storageManager, Account account) {
+        super(context, data, resource, from, to);
+        mAccount = account;
+        mStorageManager = storageManager;
+        mContext = context;
+        inflater = (LayoutInflater) mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        View vi = convertView;
+        if (convertView == null)
+            vi = inflater.inflate(R.layout.uploader_list_item_layout, null);
+
+        HashMap<String, OCFile> data = (HashMap<String, OCFile>) getItem(position);
+        OCFile file = data.get("dirname");
+
+        TextView filename = (TextView) vi.findViewById(R.id.filename);
+        filename.setText(file.getFileName());
+        
+        ImageView fileIcon = (ImageView) vi.findViewById(R.id.thumbnail);
+        fileIcon.setTag(file.getFileId());
+
+        // TODO enable after #1277 is merged
+//        TextView lastModV = (TextView) vi.findViewById(R.id.last_mod);
+//        lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file));
+        
+        // get Thumbnail if file is image
+        if (file.isImage() && file.getRemoteId() != null){
+             // Thumbnail in Cache?
+            Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
+                    String.valueOf(file.getRemoteId())
+            );
+            if (thumbnail != null && !file.needsUpdateThumbnail()){
+                fileIcon.setImageBitmap(thumbnail);
+            } else {
+                // generate new Thumbnail
+                if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {
+                    final ThumbnailsCacheManager.ThumbnailGenerationTask task = 
+                            new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon, mStorageManager, 
+                                    mAccount);
+                    if (thumbnail == null) {
+                        thumbnail = ThumbnailsCacheManager.mDefaultImg;
+                    }
+                    final AsyncDrawable asyncDrawable = new AsyncDrawable(
+                            mContext.getResources(), 
+                            thumbnail, 
+                            task
+                    );
+                    fileIcon.setImageDrawable(asyncDrawable);
+                    task.execute(file);
+                }
+            }
+        } else {
+            fileIcon.setImageResource(
+                    MimetypeIconUtil.getFileTypeIconId(file.getMimetype(), file.getFileName())
+            );
+        }
+        return vi;
+    }
+
+
+}

+ 43 - 1
src/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -35,6 +35,8 @@ import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import com.getbase.floatingactionbutton.FloatingActionButton;
+import com.getbase.floatingactionbutton.FloatingActionsMenu;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.ExtendedListView;
@@ -62,7 +64,12 @@ public class ExtendedListFragment extends Fragment
     private SwipeRefreshLayout mRefreshGridLayout;
     protected SwipeRefreshLayout mRefreshEmptyLayout;
     protected TextView mEmptyListMessage;
-    
+
+    private FloatingActionsMenu mFabMain;
+    private FloatingActionButton mFabUpload;
+    private FloatingActionButton mFabMkdir;
+    private FloatingActionButton mFabUploadFromApp;
+
     // Save the state of the scroll in browsing
     private ArrayList<Integer> mIndexes;
     private ArrayList<Integer> mFirstPositions;
@@ -94,6 +101,21 @@ public class ExtendedListFragment extends Fragment
         return mCurrentListView;
     }
 
+    public FloatingActionButton getFabUpload() {
+        return mFabUpload;
+    }
+
+    public FloatingActionButton getFabUploadFromApp() {
+        return mFabUploadFromApp;
+    }
+
+    public FloatingActionButton getFabMkdir() {
+        return mFabMkdir;
+    }
+
+    public FloatingActionsMenu getFabMain() {
+        return mFabMain;
+    }
 
     public void switchToGridView() {
         if ((mCurrentListView == mListView)) {
@@ -176,6 +198,11 @@ public class ExtendedListFragment extends Fragment
 
         mCurrentListView = mListView;   // list as default
 
+        mFabMain = (FloatingActionsMenu) v.findViewById(R.id.fab_main);
+        mFabUpload = (FloatingActionButton) v.findViewById(R.id.fab_upload);
+        mFabMkdir = (FloatingActionButton) v.findViewById(R.id.fab_mkdir);
+        mFabUploadFromApp = (FloatingActionButton) v.findViewById(R.id.fab_upload_from_app);
+
         return v;
     }
 
@@ -324,6 +351,21 @@ public class ExtendedListFragment extends Fragment
         mRefreshEmptyLayout.setEnabled(enabled);
     }
 
+    /**
+     * Sets the 'visibility' state of the FAB contained in the fragment.
+     *
+     * When 'false' is set, FAB visibility is set to View.GONE programatically,
+     *
+     * @param   enabled     Desired visibility for the FAB.
+     */
+    public void setFabEnabled(boolean enabled) {
+        if(enabled) {
+            mFabMain.setVisibility(View.VISIBLE);
+        } else {
+            mFabMain.setVisibility(View.GONE);
+        }
+    }
+
     /**
      * Set message for empty list view
      */

+ 1 - 1
src/com/owncloud/android/ui/fragment/LocalFileListFragment.java

@@ -54,7 +54,6 @@ public class LocalFileListFragment extends ExtendedListFragment {
     /** Adapter to connect the data from the directory with the View object */
     private LocalFileListAdapter mAdapter = null;
 
-    
     /**
      * {@inheritDoc}
      */
@@ -79,6 +78,7 @@ public class LocalFileListFragment extends ExtendedListFragment {
         View v = super.onCreateView(inflater, container, savedInstanceState);
         setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
         setSwipeEnabled(false); // Disable pull-to-refresh
+        setFabEnabled(false); // Disable FAB
         setMessageForEmptyList(getString(R.string.local_file_list_empty));
         Log_OC.i(TAG, "onCreateView() end");
         return v;

+ 178 - 0
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -26,16 +26,22 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.os.Build;
 import android.os.Bundle;
+import android.preference.PreferenceManager;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.view.ContextMenu;
+import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.AdapterView.AdapterContextMenuInfo;
 import android.widget.PopupMenu;
+import android.widget.TextView;
+import android.widget.Toast;
 
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
@@ -48,8 +54,10 @@ import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.FolderPickerActivity;
 import com.owncloud.android.ui.activity.OnEnforceableRefreshListener;
+import com.owncloud.android.ui.activity.UploadFilesActivity;
 import com.owncloud.android.ui.adapter.FileListListAdapter;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
+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.RenameFileDialogFragment;
@@ -75,11 +83,15 @@ public class OCFileListFragment extends ExtendedListFragment
 
     public final static String ARG_JUST_FOLDERS = MY_PACKAGE + ".JUST_FOLDERS";
     public final static String ARG_ALLOW_CONTEXTUAL_ACTIONS = MY_PACKAGE + ".ALLOW_CONTEXTUAL";
+    public final static String ARG_HIDE_FAB = MY_PACKAGE + ".HIDE_FAB";
 
     private static final String KEY_FILE = MY_PACKAGE + ".extra.FILE";
+    private static final String KEY_FAB_EVER_CLICKED = "FAB_EVER_CLICKED";
 
     private static final String GRID_IS_PREFERED_PREFERENCE = "gridIsPrefered";
 
+    private static String DIALOG_CREATE_FOLDER = "DIALOG_CREATE_FOLDER";
+
     private FileFragment.ContainerActivity mContainerActivity;
 
     private OCFile mFile = null;
@@ -88,6 +100,7 @@ public class OCFileListFragment extends ExtendedListFragment
 
     private OCFile mTargetFile;
 
+    private boolean miniFabClicked = false;
    
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -118,7 +131,19 @@ public class OCFileListFragment extends ExtendedListFragment
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        Log_OC.i(TAG, "onCreateView() start");
+        View v = super.onCreateView(inflater, container, savedInstanceState);
+
+        Log_OC.i(TAG, "onCreateView() end");
+        return v;
+    }
 
+    
     @Override
     public void onDetach() {
         setOnRefreshListener(null);
@@ -154,8 +179,161 @@ public class OCFileListFragment extends ExtendedListFragment
         setListAdapter(mAdapter);
 
         registerLongClickListener();
+
+        boolean hideFab = (args != null) && args.getBoolean(ARG_HIDE_FAB, false);
+        if (hideFab) {
+            setFabEnabled(false);
+        } else {
+            setFabEnabled(true);
+            registerFabListeners();
+
+            // detect if a mini FAB has ever been clicked
+            final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
+            if(prefs.getLong(KEY_FAB_EVER_CLICKED, 0) > 0) {
+                miniFabClicked = true;
+            }
+
+            // add labels to the min FABs when none of them has ever been clicked on
+            if(!miniFabClicked) {
+                setFabLabels();
+            } else {
+                removeFabLabels();
+            }
+        }
   }
 
+    /**
+     * adds labels to all mini FABs.
+     */
+    private void setFabLabels() {
+        getFabUpload().setTitle(getResources().getString(R.string.actionbar_upload));
+        getFabMkdir().setTitle(getResources().getString(R.string.actionbar_mkdir));
+        getFabUploadFromApp().setTitle(getResources().getString(R.string.actionbar_upload_from_apps));
+    }
+
+    /**
+     * registers all listeners on all mini FABs.
+     */
+    private void registerFabListeners() {
+        registerFabUploadListeners();
+        registerFabMkDirListeners();
+        registerFabUploadFromAppListeners();
+    }
+
+    /**
+     * registers {@link android.view.View.OnClickListener} and {@link android.view.View.OnLongClickListener}
+     * on the Upload mini FAB for the linked action and {@link Toast} showing the underlying action.
+     */
+    private void registerFabUploadListeners() {
+        getFabUpload().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                UploadFilesActivity.startUploadActivityForResult(getActivity(), ((FileActivity)getActivity())
+                        .getAccount(), FileDisplayActivity.ACTION_SELECT_MULTIPLE_FILES);
+                getFabMain().collapse();
+                recordMiniFabClick();
+            }
+        });
+
+        getFabUpload().setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                Toast.makeText(getActivity(), R.string.actionbar_upload, Toast.LENGTH_SHORT).show();
+                return true;
+            }
+        });
+    }
+
+    /**
+     * registers {@link android.view.View.OnClickListener} and {@link android.view.View.OnLongClickListener}
+     * on the 'Create Dir' mini FAB for the linked action and {@link Toast} showing the underlying action.
+     */
+    private void registerFabMkDirListeners() {
+        getFabMkdir().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                CreateFolderDialogFragment dialog =
+                        CreateFolderDialogFragment.newInstance(mFile);
+                dialog.show(getActivity().getSupportFragmentManager(), DIALOG_CREATE_FOLDER);
+                getFabMain().collapse();
+                recordMiniFabClick();
+            }
+        });
+
+        getFabMkdir().setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                Toast.makeText(getActivity(), R.string.actionbar_mkdir, Toast.LENGTH_SHORT).show();
+                return true;
+            }
+        });
+    }
+
+    /**
+     * registers {@link android.view.View.OnClickListener} and {@link android.view.View.OnLongClickListener}
+     * on the Upload from App mini FAB for the linked action and {@link Toast} showing the underlying action.
+     */
+    private void registerFabUploadFromAppListeners() {
+        getFabUploadFromApp().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent action = new Intent(Intent.ACTION_GET_CONTENT);
+                action = action.setType("*/*").addCategory(Intent.CATEGORY_OPENABLE);
+                //Intent.EXTRA_ALLOW_MULTIPLE is only supported on api level 18+, Jelly Bean
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+                    action.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
+                }
+                getActivity().startActivityForResult(
+                        Intent.createChooser(action, getString(R.string.upload_chooser_title)),
+                        FileDisplayActivity.ACTION_SELECT_CONTENT_FROM_APPS
+                );
+                getFabMain().collapse();
+                recordMiniFabClick();
+            }
+        });
+
+        getFabUploadFromApp().setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                Toast.makeText(getActivity(),
+                        R.string.actionbar_upload_from_apps,
+                        Toast.LENGTH_SHORT).show();
+                return true;
+            }
+        });
+    }
+
+    /**
+     * records a click on a mini FAB and thus:
+     * <ol>
+     *     <li>persists the click fact</li>
+     *     <li>removes the mini FAB labels</li>
+     * </ol>
+     */
+    private void recordMiniFabClick() {
+        // only record if it hasn't been done already at some other time
+        if(!miniFabClicked) {
+            final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
+            sp.edit().putLong(KEY_FAB_EVER_CLICKED, 1).commit();
+            miniFabClicked = true;
+        }
+    }
+
+    /**
+     * removes the labels on all known min FABs.
+     */
+    private void removeFabLabels() {
+        getFabUpload().setTitle(null);
+        getFabMkdir().setTitle(null);
+        getFabUploadFromApp().setTitle(null);
+        ((TextView) getFabUpload().getTag(
+                com.getbase.floatingactionbutton.R.id.fab_label)).setVisibility(View.GONE);
+        ((TextView) getFabMkdir().getTag(
+                com.getbase.floatingactionbutton.R.id.fab_label)).setVisibility(View.GONE);
+        ((TextView) getFabUploadFromApp().getTag(
+                com.getbase.floatingactionbutton.R.id.fab_label)).setVisibility(View.GONE);
+    }
+
     private void registerLongClickListener() {
         getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
             public boolean onItemLongClick(AdapterView<?> arg0, View v,

+ 1 - 1
tests/project.properties

@@ -11,4 +11,4 @@
 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
 
 # Project target.
-target=android-22
+target=android-23