From: masensio Date: Mon, 15 Jun 2015 12:30:57 +0000 (+0200) Subject: Merge pull request #995 from owncloud/navigationDrawer_basic X-Git-Tag: oc-android-1.7.2~1^2~23 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/1ef9c86b59575ece900b9770c39184e5e2011918?hp=0b567b9713475d19fe586799a2e068f072c25da0 Merge pull request #995 from owncloud/navigationDrawer_basic Navigation drawer basic --- diff --git a/.travis.yml b/.travis.yml index 2f5f171f..b72625c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,13 @@ language: android android: components: - - build-tools-20.0.0 + - build-tools-22.0.1 - android-19 + - android-16 before_install: - rm pom.xml script: - ./setup_env.sh ant - ant clean - ant debug - + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5d0c02f2..63bfd7ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,7 +33,44 @@ Before we're able to merge your code into the ownCloud app for Android, you need [agreement]: http://owncloud.org/about/contributor-agreement/ +### 1. Fork and download android/develop repository: + +NOTE: You must have the git installation folder in your environment variable PATH to perform the next operations. + +* In a web browser, go to https://github.com/owncloud/android, and click the 'Fork' button near the top right corner. +* In a command line prompt, clone your new repo: ```git clone git@github.com:YOURGITHUBNAME/android.git```. +* Move to the project folder with ```cd android```. +* Checkout the remote branch 'develop' in your own local branch: ```git checkout -b develop remotes/origin/develop```. +* Pull any changes from your remote branch 'develop': ```git pull origin develop``` +* 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/develop branch: ```git pull upstream develop``` + + +### 7. Create pull request: + +NOTE: You must sign the [Contributor Agreement][1] before your changes can be accepted! + +* 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 +* Click "Edit" and set "base:develop" +* Again, click "Edit" and set "compare:develop" +* Enter description and send pull request. + +### 8. Create another pull request: + +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/develop. + +* git fetch upstream +* git checkout -b my_new_develop_branch upstream/develop +* If you want to rename that branch later: "git checkout -b my_new_develop_branch_with_new_name" +* Push branch to server: "git push -u origin name_of_local_develop_branch" +* Use GitHub to issue PR + + + ## Translations Please submit translations via [Transifex][transifex]. [transifex]: https://www.transifex.com/projects/p/owncloud/ + diff --git a/SETUP.md b/SETUP.md index a9e2a93b..e1148167 100644 --- a/SETUP.md +++ b/SETUP.md @@ -1,118 +1,160 @@ -If you want to start help developing ownCloud please follow the [contribution guidelines][0] and observe these instructions. +These instructions will help you to set up your development environment, get the source code of the ownCloud for Android app and build it by yourself. If you want to help developing the app take a look to the [contribution guidelines][0]. -If you have any problems, start again with 1) and work your way down. If something still does not work as described here, please open a new issue describing exactly what you did, what happened, and what should have happened. +Sections 1) and 2) are common for any environment. The rest of the sections describe how to set up a project in different tool environments. Choose the build tool or IDE you prefer and follow the instructions in its specific section. Nowadays we recommend to use Android Studio (section 2), but the decision is up to you. -### 1. Fork and download android/develop repository: +If you have any problem, remove the 'android' folder, start again from 1) and work your way down. If something still does not work as described here, please open a new issue describing exactly what you did, what happened, and what should have happened. -NOTE: You must have git in your environment path variable to perform the next operations. -* Navigate to https://github.com/owncloud/android, click fork. -* Clone your new repo: "git clone git@github.com:YOURGITHUBNAME/android.git" -* Move to the project folder with "cd android" -* Checkout remote develop branch: "git checkout -b develop remotes/origin/develop" -* Pull changes from your develop branch: "git pull origin develop" -* 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/develop branch: "git pull upstream develop" +### 0. Common software dependencies. -At this point you can continue using different tools to build the project. Section 2, 3, 4, 5 and 6 describe some of the existing alternatives. +There are some tools needed, no matter what is your specific IDE or build tool of preference. -### 2. Building with Ant: +[git][1] is used to access to the different versions of the ownCloud's source code. Download and install the version appropiate for your operating system from [here][2]. Add the full path to the 'bin/' directory from your git installation into the PATH variable of your environment so that it can be used from any location. -NOTE: You must have the Android SDK 'tools/', and 'platforms-tools/' folders in your environment path variable. +The [Android SDK][3] is necessary to build the app. There are different options to install it in your system, depending of the IDE you decide to use. Check Google documentation about [installation][4] for more details on these options. After installing it, add the full path to the directories 'tools/' and 'platform-tools/' from your Android SDK installation into the PATH variable of your environment. -* Resolve necessary dependencies running: - - Windows: "setup_env.bat ant" - - Mac OS/Linux: "./setup_env.sh ant" -* Run "ant clean". -* Run "ant debug" to generate a debuggable version of the ownCloud app. +Open a terminal and type 'android' to start the Android SDK Manager. To build the ownCloud for Android app you will need to install at least the next SDK packages: -### 3. Building with console/maven: +* Android SDK Tools and Android SDK Platform-tools (already installed); upgrade to their last versions is usually a good idea. +* Android SDK Build-Tools; any version from 20 or later should work fine; avoid preview versions, if any available. +* Android 4.4.2 (API 19), SDK Platform; needed to build the ownCloud app. +* Android 4.1.2 (API 16), SDK Platform; needed to build the Android Support Library (not neeeded if working with Android Studio or gradle). -NOTE: You must have mvn (version >= 3.1.1) in your environment path. Current Android 'platforms-tools' need to be installed. +Install any other package you consider interesting, such as emulators. -Download/install Android plugin for Maven, then build ownCloud with mvn: +For other software dependencies check the details in the section corresponding to your preferred IDE or build system. -* Resolve necessary dependencies running: - - Windows: "setup_env.bat maven" - - Mac OS/Linux: "./setup_env.sh maven" -* cd .. -* git clone https://github.com/mosabua/maven-android-sdk-deployer.git -* cd maven-android-sdk-deployer -* mvn -pl com.simpligility.android.sdk-deployer:android-19 -am install -* cd ../android/owncloud-android-library -* mvn install -* cd .. -Now you can create ownCloud APK using "mvn package" and find it as ownCloud.apk under the target +### 1. Fork and download the owncloud/android repository. + +You will need [git][1] to access to the different versions of the ownCloud's source code. The source code is hosted in Github and may be read by anybody without needing a Github account. You will need a Github account if you want to contribute to the development of the app with your own code. + +Next steps will assume you have a Github account and that you will get the code from your own fork. + +* In a web browser, go to https://github.com/owncloud/android, and click the 'Fork' button near the top right corner. +* Open a terminal and go on with the next steps in it. +* Clone your forked repository: ```git clone git@github.com:YOURGITHUBNAME/android.git```. +* Move to the project folder with ```cd android```. +* Checkout the remote branch 'develop' in your own local branch 'develop': ```git checkout -b develop remotes/origin/develop```. +* Pull any changes from your remote branch 'develop': ```git pull origin develop``` +* 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/develop branch: ```git pull upstream develop``` + +At this point you can continue using different tools to build the project. Section 2, 3, 4, 5 and 6 describe the existing alternatives. + + +### 2. Working with Android Studio. + +[Android Studio][5] is currently the official Android IDE. Due to this, we recommend it as the IDE to use in your development environment. Follow the installation instructions [here][6]. + +We recommend to use the last version available in the stable channel of Android Studio updates. See what update channel is your Android Studio checking for updates in the menu path 'Help'/'Check for Update...'/link 'Updates' in the dialog. + +To set up the project in Android Studio follow the next steps: -### 4. Building with Gradle: +* Complete the setup of project properties running: + - Windows: ```setup_env.bat gradle``` + - Mac OS/Linux: ```./setup_env.sh gradle``` +* Open Android Studio and select 'Import Project (Eclipse ADT, Gradle, etc)'. Browse through your file system to the folder 'android' where the project is located. Android Studio will then create the '.iml' files it needs. If you ever close the project but the files are still there, you just select 'Open Project...'. The file chooser will show an Android face as the folder icon, which you can select to reopen the project. +* Android Studio will try to build the project directly after importing it. To build it manually, follow the menu path 'Build'/'Make Project', or just click the 'Play' button in the tool bar to build and run it in a mobile device or an emulator. The resulting APK file will be saved in the 'build/outputs/apk/' subdirectory in the project folder. + + +### 3. Working in a terminal with Gradle: +[Gradle][7] is the build system used by Android Studio to manage the building operations on Android apps. You do not need to install Gradle in your system, and Google recommends not to do it, but instead trusting on the Graddle wrapper included in the project [8]. + +* Open a terminal and go to the 'android' directory that contains the repository. * Complete the setup of project properties running: - - Windows: "setup_env.bat gradle" - - Mac OS/Linux: "./setup_env.sh gradle" -* Open a terminal and go to the "android" directory that contains the repository. -* Run the 'clean' and 'build' tasks using the Gradle wrapper provided: - - Windows: gradlew.bat clean build - - Mac OS/Linux: ./gradlew clean build -* You can find the generated apk file in android/build/outputs/apk + - Windows: ```setup_env.bat gradle``` + - Mac OS/Linux: ```./setup_env.sh gradle``` +* Run the 'clean' and 'build' tasks using the Gradle wrapper provided + - Windows: ```gradlew.bat clean build``` + - Mac OS/Linux: ```./gradlew clean build``` + +The first time the Gradle wrapper is called, the correct Gradle version will be downloaded automatically. An Internet connection is needed for it works. + +The generated APK file is saved in android/build/outputs/apk as android-debug.apk + -### 5. Building with Eclipse: +### 4. Building with Eclipse: -NOTE: You must have the Android SDK 'tools/', and 'platforms-tools/' folders in your environment path variable. +[Eclipse][9] is still an option to work with Android apps, although the [ADT Plugin][10] needed is not in active development anymore. Next steps have been tested in Eclipse Luna. +* Open a terminal and go to the 'android' directory that contains the repository. * Resolve necessary dependencies running: - - Windows: "setup_env.bat ant" - - Mac OS/Linux: "./setup_env.sh ant" - * Open Eclipse and create new "Android Project from Existing Code". Choose android/actionbarsherlock/library as root. -* Clean project and compile. -* If any error appears, check the project properties; in the 'Android' section, API Level should be greater or equal than 14. -* Make sure android/actionbarsherlock/library/bin/library.jar was created. -* Create a new "Android Project from Existing Code". Choose android/owncloud-android-library as root. -* Clean project and compile. -* If any error appears, check the project properties; in the 'Android' section, API Level should be 19 or greater. -* Make sure android/owncloud-android-library/bin/classes.jar was created. -* Import ownCloud Android project. -* Clean project and compile. -* If any error appears, check the project properties of owncloud-android project; in the 'Android' section: - - API Level should be 19 or greater. - - Two library projects should appear referred in the bottom square: actionbarsherlock/library and owncloud-android-library. Add them if needed. + - Windows: ```setup_env.bat ant``` + - Mac OS/Linux: ```./setup_env.sh ant``` +* Open Eclipse and follow the menu path 'File'/'New'/'Project' +* Choose the option 'Android'/'Android Project from Existing Code' and click 'Next' +* Choose 'android/' folder as root +* Choose the projects with the next names under the 'New Project Name' column: +** owncloud-android +** android-support-appcompat-v7-exploded-aar +** owncloud-android-workaround-accounts (optional) +** ownCloud Android Library +** ownCloud Sample Client (optional) +** ownCloud Android library test project (optional) +** ownCloud Android library test cases (optional) +* Do not choose the project owncloud-android-tests; it's obsolete. +* Do not enable 'Copy projects into workspace'. +* Click the 'Finish' button. +* Wait for a while; if 'Build automatically' is enabled in Eclipse, some errors could appear during the creation of the projects, but all of them should finally disappear. +* If any error persists, clean and build manually the next projects in order: +** ownCloud Android Library +** android-support-appcompat-v7-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 +** android-support-appcompat-v7-exploded-aa -> API level 16 +** owncloud-android -> API level 19 ; in this project, two library projects should appear referred in the bottom of the dialog: libs\android-support-appcompat-v7-exploded-aar and owncloud-android-library. Add them if needed. * After those actions you should be good to go. HAVE FUN! -NOTE: Even though API level is set to 19, APK also runs on older devices because in AndroidManifest.xml minSdkVersion is set to 8. -### 6. Building with Android Studio: +### 5. Building in command line with Ant: -* Complete the setup of project properties running: - - Windows: "setup_env.bat gradle" - - Mac OS/Linux: "./setup_env.sh gradle" -* The first time you want to open the project in Android Studio, select 'Import Project...' and choose the file "android/settings.gradle". - Android Studio will then create the '.iml' files it needs. If you ever close the project but the files are still there, you just select - 'Open Project...'. The file chooser will show an Android face as the folder icon, which you can select to reopen the project. -* To build the project, follow the guidelines shown on [4. Building with Gradle][2]. +[Ant][10] can be used to build the ownCloud for Android app in a terminal. Be sure that the PATH variable in your environment contains the full path to the 'bin/' subdirectory in your Ant installation. Define also an ANDROID_HOME variable in your environment with the full path to your Android SDK (see section 1). Then follow the next steps: + +* Open a terminal and go to the 'android' directory that contains the repository. +* Resolve necessary dependencies running: + - Windows: ```setup_env.bat ant``` + - Mac OS/Linux: ```./setup_env.sh ant``` +* Run ```ant clean```. +* Run ```ant debug``` to generate a debuggable version of the ownCloud app. + +The resulting APKs will be saved in the 'bin/' subdirectory of the project. -### 7. Create pull request: -NOTE: You must sign the [Contributor Agreement][1] before your changes can be accepted! +### 6. Building in command line with maven: -* 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 -* Click "Edit" and set "base:develop" -* Again, click "Edit" and set "compare:develop" -* Enter description and send pull request. +** Currently these build instructions DO NOT WORK. There is no estimation time to fix it. Unless some volunteer contributor fixes this build option, and given that Maven is a minority option in Android environments, we will probably remove this option. -### 8. Create another pull request: +NOTE: You must have mvn (version >= 3.1.1) in your environment path. Current Android 'platforms-tools' need to be installed. -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/develop. +Download/install Android plugin for Maven, then build ownCloud with mvn: -* git fetch upstream -* git checkout -b my_new_develop_branch upstream/develop -* If you want to rename that branch later: "git checkout -b my_new_develop_branch_with_new_name" -* Push branch to server: "git push -u origin name_of_local_develop_branch" -* Use GitHub to issue PR +* Resolve necessary dependencies running: + - Windows: "setup_env.bat maven" + - Mac OS/Linux: "./setup_env.sh maven" + +* cd .. +* git clone https://github.com/mosabua/maven-android-sdk-deployer.git +* cd maven-android-sdk-deployer +* mvn -pl com.simpligility.android.sdk-deployer:android-19 -am install +* cd ../android/owncloud-android-library +* mvn install +* cd .. + +Now you can create ownCloud APK using "mvn package" and find it as ownCloud.apk under the target [0]: https://github.com/owncloud/android/blob/master/CONTRIBUTING.md -[1]: http://owncloud.org/about/contributor-agreement/ -[2]: https://github.com/owncloud/android/blob/master/SETUP.md#4-building-with-gradle +[1]: https://git-scm.com/ +[2]: https://git-scm.com/downloads +[3]: https://developer.android.com/sdk/index.html +[4]: https://developer.android.com/sdk/installing/index.html +[5]: https://developer.android.com/tools/studio/index.html +[6]: https://developer.android.com/sdk/installing/index.html?pkg=studio +[7]: https://gradle.org/ +[8]: https://docs.gradle.org/current/userguide/gradle_wrapper.html +[9]: https://eclipse.org/ +[10]: http://developer.android.com/sdk/installing/installing-adt.html diff --git a/THIRD_PARTY.txt b/THIRD_PARTY.txt index 6df2e9aa..6fd3e5b3 100644 --- a/THIRD_PARTY.txt +++ b/THIRD_PARTY.txt @@ -51,15 +51,6 @@ The third party software included and used by this project is: Used as a helper tool, not included in the ownCloud client APK. Original license document included at third_party/transifex-client/LICENSE. See http://help.transifex.com/features/client/ - - * ActionBarSherlock, master branch. - Copyright (C) 2012 Jake Wharton. - Licensed under Apache License, Version 2.0. - The official repository is linked as a submodule in the - ownCloud/android repository. - A binary JAR file must be generated from this linked project - and included in the ownCloud client APK. - See http://http://actionbarsherlock.com/ * TouchImageView, commit 6dbeac4f11936185ba374c73144ac431c23c9aab Copyright (c) 2012 Michael Ortiz diff --git a/build.gradle b/build.gradle index 57ec86e5..209b7ee9 100644 --- a/build.gradle +++ b/build.gradle @@ -18,14 +18,12 @@ repositories { } } -artifacts.add("default", file('libs/actionbarsherlock.aar')) - dependencies { compile name: 'touch-image-view' compile 'com.android.support:support-v4:19.1.0' - compile project('libs/actionbarsherlock_lib') compile project(':owncloud-android-library') compile 'com.jakewharton:disklrucache:2.0.2' + compile 'com.android.support:appcompat-v7:19.1.0' } android { diff --git a/libs/actionbarsherlock_lib/build.gradle b/libs/actionbarsherlock_lib/build.gradle deleted file mode 100644 index 58172e2c..00000000 --- a/libs/actionbarsherlock_lib/build.gradle +++ /dev/null @@ -1,2 +0,0 @@ -configurations.create("default") -artifacts.add("default", file('library-4.1.0.aar')) diff --git a/libs/actionbarsherlock_lib/library-4.1.0.aar b/libs/actionbarsherlock_lib/library-4.1.0.aar deleted file mode 100644 index f340e011..00000000 Binary files a/libs/actionbarsherlock_lib/library-4.1.0.aar and /dev/null differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/.classpath b/libs/android-support-appcompat-v7-exploded-aar/.classpath new file mode 100644 index 00000000..5cc5eb90 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/.project b/libs/android-support-appcompat-v7-exploded-aar/.project new file mode 100644 index 00000000..7e756016 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/.project @@ -0,0 +1,33 @@ + + + android-support-appcompat-v7-exploded-aar + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/AndroidManifest.xml b/libs/android-support-appcompat-v7-exploded-aar/AndroidManifest.xml new file mode 100644 index 00000000..6939d32c --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/AndroidManifest.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/R.txt b/libs/android-support-appcompat-v7-exploded-aar/R.txt new file mode 100644 index 00000000..ff1eab06 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/R.txt @@ -0,0 +1,582 @@ +int anim abc_fade_in 0x7f040000 +int anim abc_fade_out 0x7f040001 +int anim abc_slide_in_bottom 0x7f040002 +int anim abc_slide_in_top 0x7f040003 +int anim abc_slide_out_bottom 0x7f040004 +int anim abc_slide_out_top 0x7f040005 +int attr actionBarDivider 0x7f010000 +int attr actionBarItemBackground 0x7f010001 +int attr actionBarSize 0x7f010002 +int attr actionBarSplitStyle 0x7f010003 +int attr actionBarStyle 0x7f010004 +int attr actionBarTabBarStyle 0x7f010005 +int attr actionBarTabStyle 0x7f010006 +int attr actionBarTabTextStyle 0x7f010007 +int attr actionBarWidgetTheme 0x7f010008 +int attr actionButtonStyle 0x7f010009 +int attr actionDropDownStyle 0x7f010066 +int attr actionLayout 0x7f01005d +int attr actionMenuTextAppearance 0x7f01000a +int attr actionMenuTextColor 0x7f01000b +int attr actionModeBackground 0x7f01000c +int attr actionModeCloseButtonStyle 0x7f01000d +int attr actionModeCloseDrawable 0x7f01000e +int attr actionModeCopyDrawable 0x7f01000f +int attr actionModeCutDrawable 0x7f010010 +int attr actionModeFindDrawable 0x7f010011 +int attr actionModePasteDrawable 0x7f010012 +int attr actionModePopupWindowStyle 0x7f010013 +int attr actionModeSelectAllDrawable 0x7f010014 +int attr actionModeShareDrawable 0x7f010015 +int attr actionModeSplitBackground 0x7f010016 +int attr actionModeStyle 0x7f010017 +int attr actionModeWebSearchDrawable 0x7f010018 +int attr actionOverflowButtonStyle 0x7f010019 +int attr actionProviderClass 0x7f01005f +int attr actionViewClass 0x7f01005e +int attr activityChooserViewStyle 0x7f01001a +int attr background 0x7f010047 +int attr backgroundSplit 0x7f010049 +int attr backgroundStacked 0x7f010048 +int attr buttonBarButtonStyle 0x7f01001b +int attr buttonBarStyle 0x7f01001c +int attr customNavigationLayout 0x7f01004a +int attr disableChildrenWhenDisabled 0x7f010065 +int attr displayOptions 0x7f010040 +int attr divider 0x7f010046 +int attr dividerHorizontal 0x7f01001d +int attr dividerPadding 0x7f01005b +int attr dividerVertical 0x7f01001e +int attr dropDownListViewStyle 0x7f01001f +int attr dropdownListPreferredItemHeight 0x7f010067 +int attr expandActivityOverflowButtonDrawable 0x7f010058 +int attr height 0x7f010020 +int attr homeAsUpIndicator 0x7f010021 +int attr homeLayout 0x7f01004b +int attr icon 0x7f010044 +int attr iconifiedByDefault 0x7f010060 +int attr indeterminateProgressStyle 0x7f01004d +int attr initialActivityCount 0x7f010057 +int attr isLightTheme 0x7f010022 +int attr itemPadding 0x7f01004f +int attr listChoiceBackgroundIndicator 0x7f01006b +int attr listPopupWindowStyle 0x7f010023 +int attr listPreferredItemHeight 0x7f010024 +int attr listPreferredItemHeightLarge 0x7f010025 +int attr listPreferredItemHeightSmall 0x7f010026 +int attr listPreferredItemPaddingLeft 0x7f010027 +int attr listPreferredItemPaddingRight 0x7f010028 +int attr logo 0x7f010045 +int attr navigationMode 0x7f01003f +int attr paddingEnd 0x7f01006d +int attr paddingStart 0x7f01006c +int attr panelMenuListTheme 0x7f01006a +int attr panelMenuListWidth 0x7f010069 +int attr popupMenuStyle 0x7f010068 +int attr popupPromptView 0x7f010064 +int attr progressBarPadding 0x7f01004e +int attr progressBarStyle 0x7f01004c +int attr prompt 0x7f010062 +int attr queryHint 0x7f010061 +int attr searchDropdownBackground 0x7f010029 +int attr searchResultListItemHeight 0x7f01002a +int attr searchViewAutoCompleteTextView 0x7f01002b +int attr searchViewCloseIcon 0x7f01002c +int attr searchViewEditQuery 0x7f01002d +int attr searchViewEditQueryBackground 0x7f01002e +int attr searchViewGoIcon 0x7f01002f +int attr searchViewSearchIcon 0x7f010030 +int attr searchViewTextField 0x7f010031 +int attr searchViewTextFieldRight 0x7f010032 +int attr searchViewVoiceIcon 0x7f010033 +int attr selectableItemBackground 0x7f010034 +int attr showAsAction 0x7f01005c +int attr showDividers 0x7f01005a +int attr spinnerDropDownItemStyle 0x7f010035 +int attr spinnerMode 0x7f010063 +int attr spinnerStyle 0x7f010036 +int attr subtitle 0x7f010041 +int attr subtitleTextStyle 0x7f010043 +int attr textAllCaps 0x7f010059 +int attr textAppearanceLargePopupMenu 0x7f010037 +int attr textAppearanceListItem 0x7f010038 +int attr textAppearanceListItemSmall 0x7f010039 +int attr textAppearanceSearchResultSubtitle 0x7f01003a +int attr textAppearanceSearchResultTitle 0x7f01003b +int attr textAppearanceSmallPopupMenu 0x7f01003c +int attr textColorSearchUrl 0x7f01003d +int attr title 0x7f01003e +int attr titleTextStyle 0x7f010042 +int attr windowActionBar 0x7f010050 +int attr windowActionBarOverlay 0x7f010051 +int attr windowFixedHeightMajor 0x7f010056 +int attr windowFixedHeightMinor 0x7f010054 +int attr windowFixedWidthMajor 0x7f010053 +int attr windowFixedWidthMinor 0x7f010055 +int attr windowSplitActionBar 0x7f010052 +int bool abc_action_bar_embed_tabs_pre_jb 0x7f050000 +int bool abc_action_bar_expanded_action_views_exclusive 0x7f050001 +int bool abc_config_actionMenuItemAllCaps 0x7f050002 +int bool abc_config_allowActionMenuItemTextWithIcon 0x7f050003 +int bool abc_config_showMenuShortcutsWhenKeyboardPresent 0x7f050004 +int bool abc_split_action_bar_is_narrow 0x7f050005 +int color abc_search_url_text_holo 0x7f060003 +int color abc_search_url_text_normal 0x7f060000 +int color abc_search_url_text_pressed 0x7f060001 +int color abc_search_url_text_selected 0x7f060002 +int dimen abc_action_bar_default_height 0x7f080000 +int dimen abc_action_bar_icon_vertical_padding 0x7f080001 +int dimen abc_action_bar_progress_bar_size 0x7f080002 +int dimen abc_action_bar_stacked_max_height 0x7f080003 +int dimen abc_action_bar_stacked_tab_max_width 0x7f080004 +int dimen abc_action_bar_subtitle_bottom_margin 0x7f080005 +int dimen abc_action_bar_subtitle_text_size 0x7f080006 +int dimen abc_action_bar_subtitle_top_margin 0x7f080007 +int dimen abc_action_bar_title_text_size 0x7f080008 +int dimen abc_action_button_min_width 0x7f080009 +int dimen abc_config_prefDialogWidth 0x7f08000a +int dimen abc_dropdownitem_icon_width 0x7f08000b +int dimen abc_dropdownitem_text_padding_left 0x7f08000c +int dimen abc_dropdownitem_text_padding_right 0x7f08000d +int dimen abc_panel_menu_list_width 0x7f08000e +int dimen abc_search_view_preferred_width 0x7f08000f +int dimen abc_search_view_text_min_width 0x7f080010 +int dimen dialog_fixed_height_major 0x7f080011 +int dimen dialog_fixed_height_minor 0x7f080012 +int dimen dialog_fixed_width_major 0x7f080013 +int dimen dialog_fixed_width_minor 0x7f080014 +int drawable abc_ab_bottom_solid_dark_holo 0x7f020000 +int drawable abc_ab_bottom_solid_light_holo 0x7f020001 +int drawable abc_ab_bottom_transparent_dark_holo 0x7f020002 +int drawable abc_ab_bottom_transparent_light_holo 0x7f020003 +int drawable abc_ab_share_pack_holo_dark 0x7f020004 +int drawable abc_ab_share_pack_holo_light 0x7f020005 +int drawable abc_ab_solid_dark_holo 0x7f020006 +int drawable abc_ab_solid_light_holo 0x7f020007 +int drawable abc_ab_stacked_solid_dark_holo 0x7f020008 +int drawable abc_ab_stacked_solid_light_holo 0x7f020009 +int drawable abc_ab_stacked_transparent_dark_holo 0x7f02000a +int drawable abc_ab_stacked_transparent_light_holo 0x7f02000b +int drawable abc_ab_transparent_dark_holo 0x7f02000c +int drawable abc_ab_transparent_light_holo 0x7f02000d +int drawable abc_cab_background_bottom_holo_dark 0x7f02000e +int drawable abc_cab_background_bottom_holo_light 0x7f02000f +int drawable abc_cab_background_top_holo_dark 0x7f020010 +int drawable abc_cab_background_top_holo_light 0x7f020011 +int drawable abc_ic_ab_back_holo_dark 0x7f020012 +int drawable abc_ic_ab_back_holo_light 0x7f020013 +int drawable abc_ic_cab_done_holo_dark 0x7f020014 +int drawable abc_ic_cab_done_holo_light 0x7f020015 +int drawable abc_ic_clear 0x7f020016 +int drawable abc_ic_clear_disabled 0x7f020017 +int drawable abc_ic_clear_holo_light 0x7f020018 +int drawable abc_ic_clear_normal 0x7f020019 +int drawable abc_ic_clear_search_api_disabled_holo_light 0x7f02001a +int drawable abc_ic_clear_search_api_holo_light 0x7f02001b +int drawable abc_ic_commit_search_api_holo_dark 0x7f02001c +int drawable abc_ic_commit_search_api_holo_light 0x7f02001d +int drawable abc_ic_go 0x7f02001e +int drawable abc_ic_go_search_api_holo_light 0x7f02001f +int drawable abc_ic_menu_moreoverflow_normal_holo_dark 0x7f020020 +int drawable abc_ic_menu_moreoverflow_normal_holo_light 0x7f020021 +int drawable abc_ic_menu_share_holo_dark 0x7f020022 +int drawable abc_ic_menu_share_holo_light 0x7f020023 +int drawable abc_ic_search 0x7f020024 +int drawable abc_ic_search_api_holo_light 0x7f020025 +int drawable abc_ic_voice_search 0x7f020026 +int drawable abc_ic_voice_search_api_holo_light 0x7f020027 +int drawable abc_item_background_holo_dark 0x7f020028 +int drawable abc_item_background_holo_light 0x7f020029 +int drawable abc_list_divider_holo_dark 0x7f02002a +int drawable abc_list_divider_holo_light 0x7f02002b +int drawable abc_list_focused_holo 0x7f02002c +int drawable abc_list_longpressed_holo 0x7f02002d +int drawable abc_list_pressed_holo_dark 0x7f02002e +int drawable abc_list_pressed_holo_light 0x7f02002f +int drawable abc_list_selector_background_transition_holo_dark 0x7f020030 +int drawable abc_list_selector_background_transition_holo_light 0x7f020031 +int drawable abc_list_selector_disabled_holo_dark 0x7f020032 +int drawable abc_list_selector_disabled_holo_light 0x7f020033 +int drawable abc_list_selector_holo_dark 0x7f020034 +int drawable abc_list_selector_holo_light 0x7f020035 +int drawable abc_menu_dropdown_panel_holo_dark 0x7f020036 +int drawable abc_menu_dropdown_panel_holo_light 0x7f020037 +int drawable abc_menu_hardkey_panel_holo_dark 0x7f020038 +int drawable abc_menu_hardkey_panel_holo_light 0x7f020039 +int drawable abc_search_dropdown_dark 0x7f02003a +int drawable abc_search_dropdown_light 0x7f02003b +int drawable abc_spinner_ab_default_holo_dark 0x7f02003c +int drawable abc_spinner_ab_default_holo_light 0x7f02003d +int drawable abc_spinner_ab_disabled_holo_dark 0x7f02003e +int drawable abc_spinner_ab_disabled_holo_light 0x7f02003f +int drawable abc_spinner_ab_focused_holo_dark 0x7f020040 +int drawable abc_spinner_ab_focused_holo_light 0x7f020041 +int drawable abc_spinner_ab_holo_dark 0x7f020042 +int drawable abc_spinner_ab_holo_light 0x7f020043 +int drawable abc_spinner_ab_pressed_holo_dark 0x7f020044 +int drawable abc_spinner_ab_pressed_holo_light 0x7f020045 +int drawable abc_tab_indicator_ab_holo 0x7f020046 +int drawable abc_tab_selected_focused_holo 0x7f020047 +int drawable abc_tab_selected_holo 0x7f020048 +int drawable abc_tab_selected_pressed_holo 0x7f020049 +int drawable abc_tab_unselected_pressed_holo 0x7f02004a +int drawable abc_textfield_search_default_holo_dark 0x7f02004b +int drawable abc_textfield_search_default_holo_light 0x7f02004c +int drawable abc_textfield_search_right_default_holo_dark 0x7f02004d +int drawable abc_textfield_search_right_default_holo_light 0x7f02004e +int drawable abc_textfield_search_right_selected_holo_dark 0x7f02004f +int drawable abc_textfield_search_right_selected_holo_light 0x7f020050 +int drawable abc_textfield_search_selected_holo_dark 0x7f020051 +int drawable abc_textfield_search_selected_holo_light 0x7f020052 +int drawable abc_textfield_searchview_holo_dark 0x7f020053 +int drawable abc_textfield_searchview_holo_light 0x7f020054 +int drawable abc_textfield_searchview_right_holo_dark 0x7f020055 +int drawable abc_textfield_searchview_right_holo_light 0x7f020056 +int id action_bar 0x7f07001c +int id action_bar_activity_content 0x7f070014 +int id action_bar_container 0x7f07001b +int id action_bar_overlay_layout 0x7f07001f +int id action_bar_root 0x7f07001a +int id action_bar_subtitle 0x7f070023 +int id action_bar_title 0x7f070022 +int id action_context_bar 0x7f07001d +int id action_menu_divider 0x7f070015 +int id action_menu_presenter 0x7f070016 +int id action_mode_close_button 0x7f070024 +int id activity_chooser_view_content 0x7f070025 +int id always 0x7f07000f +int id beginning 0x7f07000a +int id checkbox 0x7f07002d +int id collapseActionView 0x7f070011 +int id default_activity_button 0x7f070028 +int id dialog 0x7f070012 +int id disableHome 0x7f070008 +int id dropdown 0x7f070013 +int id edit_query 0x7f070030 +int id end 0x7f07000c +int id expand_activities_button 0x7f070026 +int id expanded_menu 0x7f07002c +int id home 0x7f070017 +int id homeAsUp 0x7f070005 +int id icon 0x7f07002a +int id ifRoom 0x7f07000e +int id image 0x7f070027 +int id listMode 0x7f070001 +int id list_item 0x7f070029 +int id middle 0x7f07000b +int id never 0x7f07000d +int id none 0x7f070009 +int id normal 0x7f070000 +int id progress_circular 0x7f070018 +int id progress_horizontal 0x7f070019 +int id radio 0x7f07002f +int id search_badge 0x7f070032 +int id search_bar 0x7f070031 +int id search_button 0x7f070033 +int id search_close_btn 0x7f070038 +int id search_edit_frame 0x7f070034 +int id search_go_btn 0x7f07003a +int id search_mag_icon 0x7f070035 +int id search_plate 0x7f070036 +int id search_src_text 0x7f070037 +int id search_voice_btn 0x7f07003b +int id shortcut 0x7f07002e +int id showCustom 0x7f070007 +int id showHome 0x7f070004 +int id showTitle 0x7f070006 +int id split_action_bar 0x7f07001e +int id submit_area 0x7f070039 +int id tabMode 0x7f070002 +int id title 0x7f07002b +int id top_action_bar 0x7f070020 +int id up 0x7f070021 +int id useLogo 0x7f070003 +int id withText 0x7f070010 +int integer abc_max_action_buttons 0x7f090000 +int layout abc_action_bar_decor 0x7f030000 +int layout abc_action_bar_decor_include 0x7f030001 +int layout abc_action_bar_decor_overlay 0x7f030002 +int layout abc_action_bar_home 0x7f030003 +int layout abc_action_bar_tab 0x7f030004 +int layout abc_action_bar_tabbar 0x7f030005 +int layout abc_action_bar_title_item 0x7f030006 +int layout abc_action_bar_view_list_nav_layout 0x7f030007 +int layout abc_action_menu_item_layout 0x7f030008 +int layout abc_action_menu_layout 0x7f030009 +int layout abc_action_mode_bar 0x7f03000a +int layout abc_action_mode_close_item 0x7f03000b +int layout abc_activity_chooser_view 0x7f03000c +int layout abc_activity_chooser_view_include 0x7f03000d +int layout abc_activity_chooser_view_list_item 0x7f03000e +int layout abc_expanded_menu_layout 0x7f03000f +int layout abc_list_menu_item_checkbox 0x7f030010 +int layout abc_list_menu_item_icon 0x7f030011 +int layout abc_list_menu_item_layout 0x7f030012 +int layout abc_list_menu_item_radio 0x7f030013 +int layout abc_popup_menu_item_layout 0x7f030014 +int layout abc_search_dropdown_item_icons_2line 0x7f030015 +int layout abc_search_view 0x7f030016 +int layout abc_simple_decor 0x7f030017 +int layout support_simple_spinner_dropdown_item 0x7f030018 +int string abc_action_bar_home_description 0x7f0a0000 +int string abc_action_bar_up_description 0x7f0a0001 +int string abc_action_menu_overflow_description 0x7f0a0002 +int string abc_action_mode_done 0x7f0a0003 +int string abc_activity_chooser_view_see_all 0x7f0a0004 +int string abc_activitychooserview_choose_application 0x7f0a0005 +int string abc_searchview_description_clear 0x7f0a0006 +int string abc_searchview_description_query 0x7f0a0007 +int string abc_searchview_description_search 0x7f0a0008 +int string abc_searchview_description_submit 0x7f0a0009 +int string abc_searchview_description_voice 0x7f0a000a +int string abc_shareactionprovider_share_with 0x7f0a000b +int string abc_shareactionprovider_share_with_application 0x7f0a000c +int style TextAppearance_AppCompat_Base_CompactMenu_Dialog 0x7f0b0000 +int style TextAppearance_AppCompat_Base_SearchResult 0x7f0b0001 +int style TextAppearance_AppCompat_Base_SearchResult_Subtitle 0x7f0b0002 +int style TextAppearance_AppCompat_Base_SearchResult_Title 0x7f0b0003 +int style TextAppearance_AppCompat_Base_Widget_PopupMenu_Large 0x7f0b0004 +int style TextAppearance_AppCompat_Base_Widget_PopupMenu_Small 0x7f0b0005 +int style TextAppearance_AppCompat_Light_Base_SearchResult 0x7f0b0006 +int style TextAppearance_AppCompat_Light_Base_SearchResult_Subtitle 0x7f0b0007 +int style TextAppearance_AppCompat_Light_Base_SearchResult_Title 0x7f0b0008 +int style TextAppearance_AppCompat_Light_Base_Widget_PopupMenu_Large 0x7f0b0009 +int style TextAppearance_AppCompat_Light_Base_Widget_PopupMenu_Small 0x7f0b000a +int style TextAppearance_AppCompat_Light_SearchResult_Subtitle 0x7f0b000b +int style TextAppearance_AppCompat_Light_SearchResult_Title 0x7f0b000c +int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x7f0b000d +int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x7f0b000e +int style TextAppearance_AppCompat_SearchResult_Subtitle 0x7f0b000f +int style TextAppearance_AppCompat_SearchResult_Title 0x7f0b0010 +int style TextAppearance_AppCompat_Widget_ActionBar_Menu 0x7f0b0011 +int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x7f0b0012 +int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x7f0b0013 +int style TextAppearance_AppCompat_Widget_ActionBar_Title 0x7f0b0014 +int style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x7f0b0015 +int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x7f0b0016 +int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse 0x7f0b0017 +int style TextAppearance_AppCompat_Widget_ActionMode_Title 0x7f0b0018 +int style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse 0x7f0b0019 +int style TextAppearance_AppCompat_Widget_Base_ActionBar_Menu 0x7f0b001a +int style TextAppearance_AppCompat_Widget_Base_ActionBar_Subtitle 0x7f0b001b +int style TextAppearance_AppCompat_Widget_Base_ActionBar_Subtitle_Inverse 0x7f0b001c +int style TextAppearance_AppCompat_Widget_Base_ActionBar_Title 0x7f0b001d +int style TextAppearance_AppCompat_Widget_Base_ActionBar_Title_Inverse 0x7f0b001e +int style TextAppearance_AppCompat_Widget_Base_ActionMode_Subtitle 0x7f0b001f +int style TextAppearance_AppCompat_Widget_Base_ActionMode_Subtitle_Inverse 0x7f0b0020 +int style TextAppearance_AppCompat_Widget_Base_ActionMode_Title 0x7f0b0021 +int style TextAppearance_AppCompat_Widget_Base_ActionMode_Title_Inverse 0x7f0b0022 +int style TextAppearance_AppCompat_Widget_Base_DropDownItem 0x7f0b0023 +int style TextAppearance_AppCompat_Widget_DropDownItem 0x7f0b0024 +int style TextAppearance_AppCompat_Widget_PopupMenu_Large 0x7f0b0025 +int style TextAppearance_AppCompat_Widget_PopupMenu_Small 0x7f0b0026 +int style TextAppearance_Widget_AppCompat_Base_ExpandedMenu_Item 0x7f0b0027 +int style TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x7f0b0028 +int style Theme_AppCompat 0x7f0b0029 +int style Theme_AppCompat_Base_CompactMenu 0x7f0b002a +int style Theme_AppCompat_Base_CompactMenu_Dialog 0x7f0b002b +int style Theme_AppCompat_CompactMenu 0x7f0b002c +int style Theme_AppCompat_CompactMenu_Dialog 0x7f0b002d +int style Theme_AppCompat_DialogWhenLarge 0x7f0b002e +int style Theme_AppCompat_Light 0x7f0b002f +int style Theme_AppCompat_Light_DarkActionBar 0x7f0b0030 +int style Theme_AppCompat_Light_DialogWhenLarge 0x7f0b0031 +int style Theme_Base 0x7f0b0032 +int style Theme_Base_AppCompat 0x7f0b0033 +int style Theme_Base_AppCompat_Dialog_FixedSize 0x7f0b0034 +int style Theme_Base_AppCompat_Dialog_Light_FixedSize 0x7f0b0035 +int style Theme_Base_AppCompat_DialogWhenLarge 0x7f0b0036 +int style Theme_Base_AppCompat_DialogWhenLarge_Base 0x7f0b0089 +int style Theme_Base_AppCompat_Light 0x7f0b0037 +int style Theme_Base_AppCompat_Light_DarkActionBar 0x7f0b0038 +int style Theme_Base_AppCompat_Light_DialogWhenLarge 0x7f0b0039 +int style Theme_Base_AppCompat_Light_DialogWhenLarge_Base 0x7f0b008a +int style Theme_Base_Light 0x7f0b003a +int style Widget_AppCompat_ActionBar 0x7f0b003b +int style Widget_AppCompat_ActionBar_Solid 0x7f0b003c +int style Widget_AppCompat_ActionBar_TabBar 0x7f0b003d +int style Widget_AppCompat_ActionBar_TabText 0x7f0b003e +int style Widget_AppCompat_ActionBar_TabView 0x7f0b003f +int style Widget_AppCompat_ActionButton 0x7f0b0040 +int style Widget_AppCompat_ActionButton_CloseMode 0x7f0b0041 +int style Widget_AppCompat_ActionButton_Overflow 0x7f0b0042 +int style Widget_AppCompat_ActionMode 0x7f0b0043 +int style Widget_AppCompat_ActivityChooserView 0x7f0b0044 +int style Widget_AppCompat_AutoCompleteTextView 0x7f0b0045 +int style Widget_AppCompat_Base_ActionBar 0x7f0b0046 +int style Widget_AppCompat_Base_ActionBar_Solid 0x7f0b0047 +int style Widget_AppCompat_Base_ActionBar_TabBar 0x7f0b0048 +int style Widget_AppCompat_Base_ActionBar_TabText 0x7f0b0049 +int style Widget_AppCompat_Base_ActionBar_TabView 0x7f0b004a +int style Widget_AppCompat_Base_ActionButton 0x7f0b004b +int style Widget_AppCompat_Base_ActionButton_CloseMode 0x7f0b004c +int style Widget_AppCompat_Base_ActionButton_Overflow 0x7f0b004d +int style Widget_AppCompat_Base_ActionMode 0x7f0b004e +int style Widget_AppCompat_Base_ActivityChooserView 0x7f0b004f +int style Widget_AppCompat_Base_AutoCompleteTextView 0x7f0b0050 +int style Widget_AppCompat_Base_DropDownItem_Spinner 0x7f0b0051 +int style Widget_AppCompat_Base_ListPopupWindow 0x7f0b0052 +int style Widget_AppCompat_Base_ListView_DropDown 0x7f0b0053 +int style Widget_AppCompat_Base_ListView_Menu 0x7f0b0054 +int style Widget_AppCompat_Base_PopupMenu 0x7f0b0055 +int style Widget_AppCompat_Base_ProgressBar 0x7f0b0056 +int style Widget_AppCompat_Base_ProgressBar_Horizontal 0x7f0b0057 +int style Widget_AppCompat_Base_Spinner 0x7f0b0058 +int style Widget_AppCompat_DropDownItem_Spinner 0x7f0b0059 +int style Widget_AppCompat_Light_ActionBar 0x7f0b005a +int style Widget_AppCompat_Light_ActionBar_Solid 0x7f0b005b +int style Widget_AppCompat_Light_ActionBar_Solid_Inverse 0x7f0b005c +int style Widget_AppCompat_Light_ActionBar_TabBar 0x7f0b005d +int style Widget_AppCompat_Light_ActionBar_TabBar_Inverse 0x7f0b005e +int style Widget_AppCompat_Light_ActionBar_TabText 0x7f0b005f +int style Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x7f0b0060 +int style Widget_AppCompat_Light_ActionBar_TabView 0x7f0b0061 +int style Widget_AppCompat_Light_ActionBar_TabView_Inverse 0x7f0b0062 +int style Widget_AppCompat_Light_ActionButton 0x7f0b0063 +int style Widget_AppCompat_Light_ActionButton_CloseMode 0x7f0b0064 +int style Widget_AppCompat_Light_ActionButton_Overflow 0x7f0b0065 +int style Widget_AppCompat_Light_ActionMode_Inverse 0x7f0b0066 +int style Widget_AppCompat_Light_ActivityChooserView 0x7f0b0067 +int style Widget_AppCompat_Light_AutoCompleteTextView 0x7f0b0068 +int style Widget_AppCompat_Light_Base_ActionBar 0x7f0b0069 +int style Widget_AppCompat_Light_Base_ActionBar_Solid 0x7f0b006a +int style Widget_AppCompat_Light_Base_ActionBar_Solid_Inverse 0x7f0b006b +int style Widget_AppCompat_Light_Base_ActionBar_TabBar 0x7f0b006c +int style Widget_AppCompat_Light_Base_ActionBar_TabBar_Inverse 0x7f0b006d +int style Widget_AppCompat_Light_Base_ActionBar_TabText 0x7f0b006e +int style Widget_AppCompat_Light_Base_ActionBar_TabText_Inverse 0x7f0b006f +int style Widget_AppCompat_Light_Base_ActionBar_TabView 0x7f0b0070 +int style Widget_AppCompat_Light_Base_ActionBar_TabView_Inverse 0x7f0b0071 +int style Widget_AppCompat_Light_Base_ActionButton 0x7f0b0072 +int style Widget_AppCompat_Light_Base_ActionButton_CloseMode 0x7f0b0073 +int style Widget_AppCompat_Light_Base_ActionButton_Overflow 0x7f0b0074 +int style Widget_AppCompat_Light_Base_ActionMode_Inverse 0x7f0b0075 +int style Widget_AppCompat_Light_Base_ActivityChooserView 0x7f0b0076 +int style Widget_AppCompat_Light_Base_AutoCompleteTextView 0x7f0b0077 +int style Widget_AppCompat_Light_Base_DropDownItem_Spinner 0x7f0b0078 +int style Widget_AppCompat_Light_Base_ListPopupWindow 0x7f0b0079 +int style Widget_AppCompat_Light_Base_ListView_DropDown 0x7f0b007a +int style Widget_AppCompat_Light_Base_PopupMenu 0x7f0b007b +int style Widget_AppCompat_Light_Base_Spinner 0x7f0b007c +int style Widget_AppCompat_Light_DropDownItem_Spinner 0x7f0b007d +int style Widget_AppCompat_Light_ListPopupWindow 0x7f0b007e +int style Widget_AppCompat_Light_ListView_DropDown 0x7f0b007f +int style Widget_AppCompat_Light_PopupMenu 0x7f0b0080 +int style Widget_AppCompat_Light_Spinner_DropDown_ActionBar 0x7f0b0081 +int style Widget_AppCompat_ListPopupWindow 0x7f0b0082 +int style Widget_AppCompat_ListView_DropDown 0x7f0b0083 +int style Widget_AppCompat_ListView_Menu 0x7f0b0084 +int style Widget_AppCompat_PopupMenu 0x7f0b0085 +int style Widget_AppCompat_ProgressBar 0x7f0b0086 +int style Widget_AppCompat_ProgressBar_Horizontal 0x7f0b0087 +int style Widget_AppCompat_Spinner_DropDown_ActionBar 0x7f0b0088 +int[] styleable ActionBar { 0x7f010020, 0x7f01003e, 0x7f01003f, 0x7f010040, 0x7f010041, 0x7f010042, 0x7f010043, 0x7f010044, 0x7f010045, 0x7f010046, 0x7f010047, 0x7f010048, 0x7f010049, 0x7f01004a, 0x7f01004b, 0x7f01004c, 0x7f01004d, 0x7f01004e, 0x7f01004f } +int styleable ActionBar_background 10 +int styleable ActionBar_backgroundSplit 12 +int styleable ActionBar_backgroundStacked 11 +int styleable ActionBar_customNavigationLayout 13 +int styleable ActionBar_displayOptions 3 +int styleable ActionBar_divider 9 +int styleable ActionBar_height 0 +int styleable ActionBar_homeLayout 14 +int styleable ActionBar_icon 7 +int styleable ActionBar_indeterminateProgressStyle 16 +int styleable ActionBar_itemPadding 18 +int styleable ActionBar_logo 8 +int styleable ActionBar_navigationMode 2 +int styleable ActionBar_progressBarPadding 17 +int styleable ActionBar_progressBarStyle 15 +int styleable ActionBar_subtitle 4 +int styleable ActionBar_subtitleTextStyle 6 +int styleable ActionBar_title 1 +int styleable ActionBar_titleTextStyle 5 +int[] styleable ActionBarLayout { 0x010100b3 } +int styleable ActionBarLayout_android_layout_gravity 0 +int[] styleable ActionBarWindow { 0x7f010050, 0x7f010051, 0x7f010052, 0x7f010053, 0x7f010054, 0x7f010055, 0x7f010056 } +int styleable ActionBarWindow_windowActionBar 0 +int styleable ActionBarWindow_windowActionBarOverlay 1 +int styleable ActionBarWindow_windowFixedHeightMajor 6 +int styleable ActionBarWindow_windowFixedHeightMinor 4 +int styleable ActionBarWindow_windowFixedWidthMajor 3 +int styleable ActionBarWindow_windowFixedWidthMinor 5 +int styleable ActionBarWindow_windowSplitActionBar 2 +int[] styleable ActionMenuItemView { 0x0101013f } +int styleable ActionMenuItemView_android_minWidth 0 +int[] styleable ActionMenuView { } +int[] styleable ActionMode { 0x7f010020, 0x7f010042, 0x7f010043, 0x7f010047, 0x7f010049 } +int styleable ActionMode_background 3 +int styleable ActionMode_backgroundSplit 4 +int styleable ActionMode_height 0 +int styleable ActionMode_subtitleTextStyle 2 +int styleable ActionMode_titleTextStyle 1 +int[] styleable ActivityChooserView { 0x7f010057, 0x7f010058 } +int styleable ActivityChooserView_expandActivityOverflowButtonDrawable 1 +int styleable ActivityChooserView_initialActivityCount 0 +int[] styleable CompatTextView { 0x7f010059 } +int styleable CompatTextView_textAllCaps 0 +int[] styleable LinearLayoutICS { 0x7f010046, 0x7f01005a, 0x7f01005b } +int styleable LinearLayoutICS_divider 0 +int styleable LinearLayoutICS_dividerPadding 2 +int styleable LinearLayoutICS_showDividers 1 +int[] styleable MenuGroup { 0x0101000e, 0x010100d0, 0x01010194, 0x010101de, 0x010101df, 0x010101e0 } +int styleable MenuGroup_android_checkableBehavior 5 +int styleable MenuGroup_android_enabled 0 +int styleable MenuGroup_android_id 1 +int styleable MenuGroup_android_menuCategory 3 +int styleable MenuGroup_android_orderInCategory 4 +int styleable MenuGroup_android_visible 2 +int[] styleable MenuItem { 0x01010002, 0x0101000e, 0x010100d0, 0x01010106, 0x01010194, 0x010101de, 0x010101df, 0x010101e1, 0x010101e2, 0x010101e3, 0x010101e4, 0x010101e5, 0x0101026f, 0x7f01005c, 0x7f01005d, 0x7f01005e, 0x7f01005f } +int styleable MenuItem_actionLayout 14 +int styleable MenuItem_actionProviderClass 16 +int styleable MenuItem_actionViewClass 15 +int styleable MenuItem_android_alphabeticShortcut 9 +int styleable MenuItem_android_checkable 11 +int styleable MenuItem_android_checked 3 +int styleable MenuItem_android_enabled 1 +int styleable MenuItem_android_icon 0 +int styleable MenuItem_android_id 2 +int styleable MenuItem_android_menuCategory 5 +int styleable MenuItem_android_numericShortcut 10 +int styleable MenuItem_android_onClick 12 +int styleable MenuItem_android_orderInCategory 6 +int styleable MenuItem_android_title 7 +int styleable MenuItem_android_titleCondensed 8 +int styleable MenuItem_android_visible 4 +int styleable MenuItem_showAsAction 13 +int[] styleable MenuView { 0x010100ae, 0x0101012c, 0x0101012d, 0x0101012e, 0x0101012f, 0x01010130, 0x01010131, 0x01010435 } +int styleable MenuView_android_headerBackground 4 +int styleable MenuView_android_horizontalDivider 2 +int styleable MenuView_android_itemBackground 5 +int styleable MenuView_android_itemIconDisabledAlpha 6 +int styleable MenuView_android_itemTextAppearance 1 +int styleable MenuView_android_preserveIconSpacing 7 +int styleable MenuView_android_verticalDivider 3 +int styleable MenuView_android_windowAnimationStyle 0 +int[] styleable SearchView { 0x0101011f, 0x01010220, 0x01010264, 0x7f010060, 0x7f010061 } +int styleable SearchView_android_imeOptions 2 +int styleable SearchView_android_inputType 1 +int styleable SearchView_android_maxWidth 0 +int styleable SearchView_iconifiedByDefault 3 +int styleable SearchView_queryHint 4 +int[] styleable Spinner { 0x010100af, 0x01010175, 0x01010176, 0x01010262, 0x010102ac, 0x010102ad, 0x7f010062, 0x7f010063, 0x7f010064, 0x7f010065 } +int styleable Spinner_android_dropDownHorizontalOffset 4 +int styleable Spinner_android_dropDownSelector 1 +int styleable Spinner_android_dropDownVerticalOffset 5 +int styleable Spinner_android_dropDownWidth 3 +int styleable Spinner_android_gravity 0 +int styleable Spinner_android_popupBackground 2 +int styleable Spinner_disableChildrenWhenDisabled 9 +int styleable Spinner_popupPromptView 8 +int styleable Spinner_prompt 6 +int styleable Spinner_spinnerMode 7 +int[] styleable Theme { 0x7f010066, 0x7f010067, 0x7f010068, 0x7f010069, 0x7f01006a, 0x7f01006b } +int styleable Theme_actionDropDownStyle 0 +int styleable Theme_dropdownListPreferredItemHeight 1 +int styleable Theme_listChoiceBackgroundIndicator 5 +int styleable Theme_panelMenuListTheme 4 +int styleable Theme_panelMenuListWidth 3 +int styleable Theme_popupMenuStyle 2 +int[] styleable View { 0x010100da, 0x7f01006c, 0x7f01006d } +int styleable View_android_focusable 0 +int styleable View_paddingEnd 2 +int styleable View_paddingStart 1 diff --git a/libs/android-support-appcompat-v7-exploded-aar/assets/.gitignore b/libs/android-support-appcompat-v7-exploded-aar/assets/.gitignore new file mode 100644 index 00000000..86d0cb27 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/assets/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/build.xml b/libs/android-support-appcompat-v7-exploded-aar/build.xml new file mode 100644 index 00000000..0e2aa70e --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/libs/appcompat-v7-19.1.0.jar b/libs/android-support-appcompat-v7-exploded-aar/libs/appcompat-v7-19.1.0.jar new file mode 100644 index 00000000..07883a34 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/libs/appcompat-v7-19.1.0.jar differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/libs/support-v4-19.1.0.jar b/libs/android-support-appcompat-v7-exploded-aar/libs/support-v4-19.1.0.jar new file mode 100644 index 00000000..d0b85355 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/libs/support-v4-19.1.0.jar differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/project.properties b/libs/android-support-appcompat-v7-exploded-aar/project.properties new file mode 100644 index 00000000..dfa4dd09 --- /dev/null +++ b/libs/android-support-appcompat-v7-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-16 +android.library=true diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_fade_in.xml b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_fade_in.xml new file mode 100644 index 00000000..8e672312 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_fade_in.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_fade_out.xml b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_fade_out.xml new file mode 100644 index 00000000..166a99bb --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_fade_out.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_in_bottom.xml b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_in_bottom.xml new file mode 100644 index 00000000..0a25ef9a --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_in_bottom.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_in_top.xml b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_in_top.xml new file mode 100644 index 00000000..b1a3ef76 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_in_top.xml @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_out_bottom.xml b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_out_bottom.xml new file mode 100644 index 00000000..0a05fd40 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_out_bottom.xml @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_out_top.xml b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_out_top.xml new file mode 100644 index 00000000..73a2cfd2 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/anim/abc_slide_out_top.xml @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/color/abc_search_url_text_holo.xml b/libs/android-support-appcompat-v7-exploded-aar/res/color/abc_search_url_text_holo.xml new file mode 100644 index 00000000..42aa346c --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/color/abc_search_url_text_holo.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_solid_dark_holo.9.png new file mode 100644 index 00000000..769463b3 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_solid_light_holo.9.png new file mode 100644 index 00000000..73050476 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_transparent_dark_holo.9.png new file mode 100644 index 00000000..712a551e Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_transparent_light_holo.9.png new file mode 100644 index 00000000..bf3b9438 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_bottom_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png new file mode 100644 index 00000000..6c141577 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png new file mode 100644 index 00000000..f4ff16be Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_solid_dark_holo.9.png new file mode 100644 index 00000000..cbbaec58 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_solid_light_holo.9.png new file mode 100644 index 00000000..af917e5b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_solid_dark_holo.9.png new file mode 100644 index 00000000..0520e5a2 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_solid_light_holo.9.png new file mode 100644 index 00000000..e3e3f93b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_transparent_dark_holo.9.png new file mode 100644 index 00000000..1e395722 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_transparent_light_holo.9.png new file mode 100644 index 00000000..a16db853 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_stacked_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_transparent_dark_holo.9.png new file mode 100644 index 00000000..0eff695d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_transparent_light_holo.9.png new file mode 100644 index 00000000..219b170f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ab_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_bottom_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_bottom_holo_dark.9.png new file mode 100644 index 00000000..1d836f65 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_bottom_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_bottom_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_bottom_holo_light.9.png new file mode 100644 index 00000000..5818666d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_bottom_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_top_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_top_holo_dark.9.png new file mode 100644 index 00000000..564fb34b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_top_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_top_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_top_holo_light.9.png new file mode 100644 index 00000000..ae21b760 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_cab_background_top_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_ab_back_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_ab_back_holo_dark.png new file mode 100644 index 00000000..897a1c11 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_ab_back_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_ab_back_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_ab_back_holo_light.png new file mode 100644 index 00000000..0c89f714 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_ab_back_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_cab_done_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_cab_done_holo_dark.png new file mode 100644 index 00000000..d8662e3f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_cab_done_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_cab_done_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_cab_done_holo_light.png new file mode 100644 index 00000000..ed03f620 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_cab_done_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_disabled.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_disabled.png new file mode 100644 index 00000000..d97c342d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_disabled.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_normal.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_normal.png new file mode 100644 index 00000000..33ad8d4b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_normal.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_search_api_disabled_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 00000000..3edbd740 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_search_api_disabled_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_search_api_holo_light.png new file mode 100644 index 00000000..90db01b5 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_clear_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_commit_search_api_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_commit_search_api_holo_dark.png new file mode 100644 index 00000000..83f36a94 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_commit_search_api_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_commit_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_commit_search_api_holo_light.png new file mode 100644 index 00000000..a3cc21e6 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_commit_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_go.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_go.png new file mode 100644 index 00000000..97b825e8 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_go.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_go_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_go_search_api_holo_light.png new file mode 100644 index 00000000..7e1ba2ad Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_go_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png new file mode 100644 index 00000000..2abc4580 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_light.png new file mode 100644 index 00000000..bb6aef1d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_share_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_share_holo_dark.png new file mode 100644 index 00000000..6f747c8f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_share_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_share_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_share_holo_light.png new file mode 100644 index 00000000..682b2fde Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_menu_share_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_search.png new file mode 100644 index 00000000..bf8bd667 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_search_api_holo_light.png new file mode 100644 index 00000000..72e207bc Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_voice_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_voice_search.png new file mode 100644 index 00000000..66d14aec Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_voice_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_voice_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_voice_search_api_holo_light.png new file mode 100644 index 00000000..3481c982 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_ic_voice_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_divider_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_divider_holo_dark.9.png new file mode 100644 index 00000000..986ab0b9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_divider_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_divider_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_divider_holo_light.9.png new file mode 100644 index 00000000..0279e17a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_divider_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_focused_holo.9.png new file mode 100644 index 00000000..55527084 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_longpressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_longpressed_holo.9.png new file mode 100644 index 00000000..4ea7afa0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_longpressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_pressed_holo_dark.9.png new file mode 100644 index 00000000..5654cd69 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_pressed_holo_light.9.png new file mode 100644 index 00000000..5654cd69 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_selector_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_selector_disabled_holo_dark.9.png new file mode 100644 index 00000000..f6fd30dc Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_selector_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_selector_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_selector_disabled_holo_light.9.png new file mode 100644 index 00000000..ca8e9a27 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_list_selector_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_dropdown_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_dropdown_panel_holo_dark.9.png new file mode 100644 index 00000000..72ee35f4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_dropdown_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_dropdown_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_dropdown_panel_holo_light.9.png new file mode 100644 index 00000000..0d1f9bf0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_dropdown_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_hardkey_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_hardkey_panel_holo_dark.9.png new file mode 100644 index 00000000..465ee6d0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_hardkey_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_hardkey_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_hardkey_panel_holo_light.9.png new file mode 100644 index 00000000..76a5c53d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_menu_hardkey_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_default_holo_dark.9.png new file mode 100644 index 00000000..88f8765c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_default_holo_light.9.png new file mode 100644 index 00000000..fa68a137 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_disabled_holo_dark.9.png new file mode 100644 index 00000000..78c63cba Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_disabled_holo_light.9.png new file mode 100644 index 00000000..e13a9f80 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_focused_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_focused_holo_dark.9.png new file mode 100644 index 00000000..26d2e168 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_focused_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_focused_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_focused_holo_light.9.png new file mode 100644 index 00000000..00ae92af Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_focused_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_pressed_holo_dark.9.png new file mode 100644 index 00000000..dc20a8d6 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_pressed_holo_light.9.png new file mode 100644 index 00000000..272a2a11 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_spinner_ab_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_focused_holo.9.png new file mode 100644 index 00000000..673e3bf1 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_holo.9.png new file mode 100644 index 00000000..d57df98b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_pressed_holo.9.png new file mode 100644 index 00000000..6278eef4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_selected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_unselected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_unselected_pressed_holo.9.png new file mode 100644 index 00000000..aadc6f87 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_tab_unselected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_default_holo_dark.9.png new file mode 100644 index 00000000..70c0e739 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_default_holo_light.9.png new file mode 100644 index 00000000..36e71d85 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_default_holo_dark.9.png new file mode 100644 index 00000000..4be4af5f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_default_holo_light.9.png new file mode 100644 index 00000000..e72193f5 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 00000000..8f20b9d2 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_selected_holo_light.9.png new file mode 100644 index 00000000..04f657e1 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_right_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_selected_holo_dark.9.png new file mode 100644 index 00000000..99309ef6 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_selected_holo_light.9.png new file mode 100644 index 00000000..9bde7fbd Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-hdpi/abc_textfield_search_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_solid_dark_holo.9.png new file mode 100644 index 00000000..b2293670 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_solid_light_holo.9.png new file mode 100644 index 00000000..0706c8af Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_transparent_dark_holo.9.png new file mode 100644 index 00000000..d814d02d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_transparent_light_holo.9.png new file mode 100644 index 00000000..b139c8e4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_bottom_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png new file mode 100644 index 00000000..ed4ba34e Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png new file mode 100644 index 00000000..8f10bd52 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_solid_dark_holo.9.png new file mode 100644 index 00000000..743d00b6 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_solid_light_holo.9.png new file mode 100644 index 00000000..17c1fb92 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_solid_dark_holo.9.png new file mode 100644 index 00000000..007a4b23 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_solid_light_holo.9.png new file mode 100644 index 00000000..ad6e1a4d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_transparent_dark_holo.9.png new file mode 100644 index 00000000..0ad6c888 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_transparent_light_holo.9.png new file mode 100644 index 00000000..19b50abc Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_stacked_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_transparent_dark_holo.9.png new file mode 100644 index 00000000..ad980b13 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_transparent_light_holo.9.png new file mode 100644 index 00000000..60e6c527 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ab_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_bottom_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_bottom_holo_dark.9.png new file mode 100644 index 00000000..d8f1c8bd Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_bottom_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_bottom_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_bottom_holo_light.9.png new file mode 100644 index 00000000..31e49894 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_bottom_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_top_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_top_holo_dark.9.png new file mode 100644 index 00000000..7c2cbe53 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_top_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_top_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_top_holo_light.9.png new file mode 100644 index 00000000..30cbdc17 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_cab_background_top_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_ab_back_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_ab_back_holo_dark.png new file mode 100644 index 00000000..df2d3d15 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_ab_back_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_ab_back_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_ab_back_holo_light.png new file mode 100644 index 00000000..b2aa9c26 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_ab_back_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_cab_done_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_cab_done_holo_dark.png new file mode 100644 index 00000000..a17b6a78 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_cab_done_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_cab_done_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_cab_done_holo_light.png new file mode 100644 index 00000000..b28b3b54 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_cab_done_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_disabled.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_disabled.png new file mode 100644 index 00000000..79228bae Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_disabled.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_normal.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_normal.png new file mode 100644 index 00000000..86944a87 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_normal.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_search_api_disabled_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 00000000..c0bdf064 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_search_api_disabled_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_search_api_holo_light.png new file mode 100644 index 00000000..15b86cbb Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_clear_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_commit_search_api_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_commit_search_api_holo_dark.png new file mode 100644 index 00000000..844c99c2 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_commit_search_api_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_commit_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_commit_search_api_holo_light.png new file mode 100644 index 00000000..86c170e9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_commit_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_go.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_go.png new file mode 100644 index 00000000..bf19833f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_go.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_go_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_go_search_api_holo_light.png new file mode 100644 index 00000000..8518498e Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_go_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png new file mode 100644 index 00000000..ba704b67 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_light.png new file mode 100644 index 00000000..01d68169 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_share_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_share_holo_dark.png new file mode 100644 index 00000000..6bf21e30 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_share_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_share_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_share_holo_light.png new file mode 100644 index 00000000..70fe31aa Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_menu_share_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_search.png new file mode 100644 index 00000000..4be72f10 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_search_api_holo_light.png new file mode 100644 index 00000000..f2e26f88 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_voice_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_voice_search.png new file mode 100644 index 00000000..73c6be65 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_voice_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_voice_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_voice_search_api_holo_light.png new file mode 100644 index 00000000..71d838e7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_ic_voice_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_divider_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_divider_holo_dark.9.png new file mode 100644 index 00000000..986ab0b9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_divider_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_divider_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_divider_holo_light.9.png new file mode 100644 index 00000000..0279e17a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_divider_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_focused_holo.9.png new file mode 100644 index 00000000..00f05d8c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_longpressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_longpressed_holo.9.png new file mode 100644 index 00000000..3bf8e036 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_longpressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_pressed_holo_dark.9.png new file mode 100644 index 00000000..6e77525d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_pressed_holo_light.9.png new file mode 100644 index 00000000..6e77525d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_selector_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_selector_disabled_holo_dark.9.png new file mode 100644 index 00000000..92da2f0d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_selector_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_selector_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_selector_disabled_holo_light.9.png new file mode 100644 index 00000000..42cb6463 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_list_selector_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_dropdown_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_dropdown_panel_holo_dark.9.png new file mode 100644 index 00000000..31dc3429 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_dropdown_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_dropdown_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_dropdown_panel_holo_light.9.png new file mode 100644 index 00000000..755c1454 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_dropdown_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_hardkey_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_hardkey_panel_holo_dark.9.png new file mode 100644 index 00000000..36779947 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_hardkey_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_hardkey_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_hardkey_panel_holo_light.9.png new file mode 100644 index 00000000..02b25f09 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_menu_hardkey_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_default_holo_dark.9.png new file mode 100644 index 00000000..8d759468 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_default_holo_light.9.png new file mode 100644 index 00000000..716560bb Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_disabled_holo_dark.9.png new file mode 100644 index 00000000..c3ba89c1 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_disabled_holo_light.9.png new file mode 100644 index 00000000..67c5358f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_focused_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_focused_holo_dark.9.png new file mode 100644 index 00000000..c015f43b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_focused_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_focused_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_focused_holo_light.9.png new file mode 100644 index 00000000..487edc22 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_focused_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_pressed_holo_dark.9.png new file mode 100644 index 00000000..2fa15e76 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_pressed_holo_light.9.png new file mode 100644 index 00000000..a964b222 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_spinner_ab_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_focused_holo.9.png new file mode 100644 index 00000000..c9972e74 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_holo.9.png new file mode 100644 index 00000000..587337ca Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_pressed_holo.9.png new file mode 100644 index 00000000..155c4fc7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_selected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_unselected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_unselected_pressed_holo.9.png new file mode 100644 index 00000000..b1223fe3 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_tab_unselected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_default_holo_dark.9.png new file mode 100644 index 00000000..081657ee Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_default_holo_light.9.png new file mode 100644 index 00000000..3f312b46 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_default_holo_dark.9.png new file mode 100644 index 00000000..b086fae8 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_default_holo_light.9.png new file mode 100644 index 00000000..73c336a7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 00000000..726e0ff4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_selected_holo_light.9.png new file mode 100644 index 00000000..726e0ff4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_right_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_selected_holo_dark.9.png new file mode 100644 index 00000000..1767c169 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_selected_holo_light.9.png new file mode 100644 index 00000000..1767c169 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-mdpi/abc_textfield_search_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_solid_dark_holo.9.png new file mode 100644 index 00000000..57533469 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_solid_light_holo.9.png new file mode 100644 index 00000000..8155fe84 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_transparent_dark_holo.9.png new file mode 100644 index 00000000..6cee9a12 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_transparent_light_holo.9.png new file mode 100644 index 00000000..fa4d76af Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_bottom_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png new file mode 100644 index 00000000..55099d49 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png new file mode 100644 index 00000000..3c4701fc Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_solid_dark_holo.9.png new file mode 100644 index 00000000..6622cbad Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_solid_light_holo.9.png new file mode 100644 index 00000000..c4272978 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_solid_dark_holo.9.png new file mode 100644 index 00000000..a0d9c1b9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_solid_light_holo.9.png new file mode 100644 index 00000000..d36f99fe Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_transparent_dark_holo.9.png new file mode 100644 index 00000000..5ad475dc Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_transparent_light_holo.9.png new file mode 100644 index 00000000..6ade5eeb Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_stacked_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_transparent_dark_holo.9.png new file mode 100644 index 00000000..719b9234 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_transparent_light_holo.9.png new file mode 100644 index 00000000..6da264db Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ab_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_bottom_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_bottom_holo_dark.9.png new file mode 100644 index 00000000..0bd09806 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_bottom_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_bottom_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_bottom_holo_light.9.png new file mode 100644 index 00000000..43ed26d4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_bottom_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_top_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_top_holo_dark.9.png new file mode 100644 index 00000000..6b315798 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_top_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_top_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_top_holo_light.9.png new file mode 100644 index 00000000..df0121bb Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_cab_background_top_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_ab_back_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_ab_back_holo_dark.png new file mode 100644 index 00000000..8ded62fb Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_ab_back_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_ab_back_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_ab_back_holo_light.png new file mode 100644 index 00000000..517e9f72 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_ab_back_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_cab_done_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_cab_done_holo_dark.png new file mode 100644 index 00000000..2e06dd01 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_cab_done_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_cab_done_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_cab_done_holo_light.png new file mode 100644 index 00000000..bb19810b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_cab_done_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_disabled.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_disabled.png new file mode 100644 index 00000000..e35c5f05 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_disabled.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_normal.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_normal.png new file mode 100644 index 00000000..f9dee98a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_normal.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_search_api_disabled_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 00000000..7fd7aeb2 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_search_api_disabled_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_search_api_holo_light.png new file mode 100644 index 00000000..53cfbd31 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_clear_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_commit_search_api_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_commit_search_api_holo_dark.png new file mode 100644 index 00000000..d8faf900 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_commit_search_api_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_commit_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_commit_search_api_holo_light.png new file mode 100644 index 00000000..e7c7280a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_commit_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_go.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_go.png new file mode 100644 index 00000000..1e2dcfa0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_go.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_go_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_go_search_api_holo_light.png new file mode 100644 index 00000000..f12eafcd Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_go_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png new file mode 100644 index 00000000..a92fb1d4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png new file mode 100644 index 00000000..930ca8d9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_share_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_share_holo_dark.png new file mode 100644 index 00000000..45a0f1da Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_share_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_share_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_share_holo_light.png new file mode 100644 index 00000000..528e554a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_menu_share_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_search.png new file mode 100644 index 00000000..998f91be Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_search_api_holo_light.png new file mode 100644 index 00000000..a4cdf1c7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_voice_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_voice_search.png new file mode 100644 index 00000000..c625a360 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_voice_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_voice_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_voice_search_api_holo_light.png new file mode 100644 index 00000000..c332ba08 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_ic_voice_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_divider_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_divider_holo_dark.9.png new file mode 100644 index 00000000..e62f011d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_divider_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_divider_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_divider_holo_light.9.png new file mode 100644 index 00000000..65061c0f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_divider_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_focused_holo.9.png new file mode 100644 index 00000000..b545f8e5 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_longpressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_longpressed_holo.9.png new file mode 100644 index 00000000..eda10e61 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_longpressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_pressed_holo_dark.9.png new file mode 100644 index 00000000..e4b33935 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_pressed_holo_light.9.png new file mode 100644 index 00000000..e4b33935 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_selector_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_selector_disabled_holo_dark.9.png new file mode 100644 index 00000000..88726b69 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_selector_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_selector_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_selector_disabled_holo_light.9.png new file mode 100644 index 00000000..c6a7d4d8 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_list_selector_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_dark.9.png new file mode 100644 index 00000000..abc48f88 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_light.9.png new file mode 100644 index 00000000..48905edf Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_dark.9.png new file mode 100644 index 00000000..c1ad023a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_light.9.png new file mode 100644 index 00000000..a1e33d67 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_default_holo_dark.9.png new file mode 100644 index 00000000..c43293d5 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_default_holo_light.9.png new file mode 100644 index 00000000..3dc481e5 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_dark.9.png new file mode 100644 index 00000000..9a7b1731 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_light.9.png new file mode 100644 index 00000000..6888fdc0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_focused_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_focused_holo_dark.9.png new file mode 100644 index 00000000..9408b474 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_focused_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_focused_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_focused_holo_light.9.png new file mode 100644 index 00000000..1cb95d16 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_focused_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_dark.9.png new file mode 100644 index 00000000..a3c77116 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_light.9.png new file mode 100644 index 00000000..2a212101 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_focused_holo.9.png new file mode 100644 index 00000000..03cfb094 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_holo.9.png new file mode 100644 index 00000000..e4229f26 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_pressed_holo.9.png new file mode 100644 index 00000000..e862cb12 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_selected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_unselected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_unselected_pressed_holo.9.png new file mode 100644 index 00000000..f1eb6732 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_tab_unselected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_default_holo_dark.9.png new file mode 100644 index 00000000..8fdbbf3a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_default_holo_light.9.png new file mode 100644 index 00000000..4e9ae43c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_default_holo_dark.9.png new file mode 100644 index 00000000..98f4871b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_default_holo_light.9.png new file mode 100644 index 00000000..733373ed Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 00000000..0c6bb036 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_light.9.png new file mode 100644 index 00000000..0c6bb036 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_selected_holo_dark.9.png new file mode 100644 index 00000000..e5bfd8ad Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_selected_holo_light.9.png new file mode 100644 index 00000000..1743da6b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xhdpi/abc_textfield_search_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_solid_dark_holo.9.png new file mode 100644 index 00000000..ba6f0058 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_solid_light_holo.9.png new file mode 100644 index 00000000..7c7eb77e Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_transparent_dark_holo.9.png new file mode 100644 index 00000000..62aa5d69 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_transparent_light_holo.9.png new file mode 100644 index 00000000..136d8b6e Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_bottom_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png new file mode 100644 index 00000000..d8cdf1ac Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png new file mode 100644 index 00000000..a49a2078 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_solid_dark_holo.9.png new file mode 100644 index 00000000..580d1222 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_solid_light_holo.9.png new file mode 100644 index 00000000..55d96e01 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_solid_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_solid_dark_holo.9.png new file mode 100644 index 00000000..1e8a9a9c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_solid_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_solid_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_solid_light_holo.9.png new file mode 100644 index 00000000..4bb233fb Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_solid_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_transparent_dark_holo.9.png new file mode 100644 index 00000000..e1768ab7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_transparent_light_holo.9.png new file mode 100644 index 00000000..83fbbc4c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_stacked_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_transparent_dark_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_transparent_dark_holo.9.png new file mode 100644 index 00000000..9f0a2e7c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_transparent_dark_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_transparent_light_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_transparent_light_holo.9.png new file mode 100644 index 00000000..b959bd95 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ab_transparent_light_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_bottom_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_bottom_holo_dark.9.png new file mode 100644 index 00000000..087a6d67 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_bottom_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_bottom_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_bottom_holo_light.9.png new file mode 100644 index 00000000..98d5d335 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_bottom_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_top_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_top_holo_dark.9.png new file mode 100644 index 00000000..30db6bf0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_top_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_top_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_top_holo_light.9.png new file mode 100644 index 00000000..ced92af7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_cab_background_top_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_ab_back_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_ab_back_holo_dark.png new file mode 100644 index 00000000..05cfc9ff Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_ab_back_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_ab_back_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_ab_back_holo_light.png new file mode 100644 index 00000000..b3a6fb46 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_ab_back_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_cab_done_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_cab_done_holo_dark.png new file mode 100644 index 00000000..f06cd48f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_cab_done_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_cab_done_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_cab_done_holo_light.png new file mode 100644 index 00000000..40a448ea Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_cab_done_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_disabled.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_disabled.png new file mode 100644 index 00000000..3c74adf5 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_disabled.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_normal.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_normal.png new file mode 100644 index 00000000..1312732a Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_normal.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_search_api_disabled_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 00000000..d9eee29d Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_search_api_disabled_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_search_api_holo_light.png new file mode 100644 index 00000000..681b9819 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_clear_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_dark.png new file mode 100644 index 00000000..33c81ce8 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_light.png new file mode 100644 index 00000000..be3c2249 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_go.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_go.png new file mode 100644 index 00000000..622712b7 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_go.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_go_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_go_search_api_holo_light.png new file mode 100644 index 00000000..def0ac44 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_go_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png new file mode 100644 index 00000000..c1aa1c23 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png new file mode 100644 index 00000000..d856d2b4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_share_holo_dark.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_share_holo_dark.png new file mode 100644 index 00000000..22ddd929 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_share_holo_dark.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_share_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_share_holo_light.png new file mode 100644 index 00000000..8148e535 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_menu_share_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_search.png new file mode 100644 index 00000000..08866a6c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_search_api_holo_light.png new file mode 100644 index 00000000..4ea3c9d6 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_voice_search.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_voice_search.png new file mode 100644 index 00000000..f8c50d91 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_voice_search.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_voice_search_api_holo_light.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_voice_search_api_holo_light.png new file mode 100644 index 00000000..0674795e Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_ic_voice_search_api_holo_light.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_divider_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_divider_holo_dark.9.png new file mode 100644 index 00000000..745e866b Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_divider_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_divider_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_divider_holo_light.9.png new file mode 100644 index 00000000..af30b862 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_divider_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_focused_holo.9.png new file mode 100644 index 00000000..147fc5d9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_longpressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_longpressed_holo.9.png new file mode 100644 index 00000000..2063d0a9 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_longpressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_pressed_holo_dark.9.png new file mode 100644 index 00000000..1399f668 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_pressed_holo_light.9.png new file mode 100644 index 00000000..1399f668 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_selector_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_selector_disabled_holo_dark.9.png new file mode 100644 index 00000000..175b82ca Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_selector_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_selector_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_selector_disabled_holo_light.9.png new file mode 100644 index 00000000..aad8a468 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_list_selector_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_dark.9.png new file mode 100644 index 00000000..bf980176 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_light.9.png new file mode 100644 index 00000000..7c72e3ec Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_dark.9.png new file mode 100644 index 00000000..31a4caad Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_light.9.png new file mode 100644 index 00000000..f5c18d08 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_default_holo_dark.9.png new file mode 100644 index 00000000..d2935894 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_default_holo_light.9.png new file mode 100644 index 00000000..a43e9fef Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_dark.9.png new file mode 100644 index 00000000..f10f0bf6 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_light.9.png new file mode 100644 index 00000000..4f9a3a6f Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_dark.9.png new file mode 100644 index 00000000..d67dcb3c Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_light.9.png new file mode 100644 index 00000000..0271d6b4 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_dark.9.png new file mode 100644 index 00000000..72a760a3 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_light.9.png new file mode 100644 index 00000000..a129aabe Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_focused_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_focused_holo.9.png new file mode 100644 index 00000000..cd15b0af Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_focused_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_holo.9.png new file mode 100644 index 00000000..05c642a8 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_pressed_holo.9.png new file mode 100644 index 00000000..f857a228 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_selected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_unselected_pressed_holo.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_unselected_pressed_holo.9.png new file mode 100644 index 00000000..bc856f90 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_tab_unselected_pressed_holo.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_default_holo_dark.9.png new file mode 100644 index 00000000..90932d60 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_default_holo_light.9.png new file mode 100644 index 00000000..ae7b3691 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_dark.9.png new file mode 100644 index 00000000..deba2d55 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_light.9.png new file mode 100644 index 00000000..ab26e8da Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_dark.9.png new file mode 100644 index 00000000..3d5ebca0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_light.9.png new file mode 100644 index 00000000..3d5ebca0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_selected_holo_dark.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_selected_holo_dark.9.png new file mode 100644 index 00000000..c8c2e6e0 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_selected_holo_dark.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_selected_holo_light.9.png b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_selected_holo_light.9.png new file mode 100644 index 00000000..ebb7c750 Binary files /dev/null and b/libs/android-support-appcompat-v7-exploded-aar/res/drawable-xxhdpi/abc_textfield_search_selected_holo_light.9.png differ diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_ic_clear.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_ic_clear.xml new file mode 100644 index 00000000..2bcd171a --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_ic_clear.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_ic_clear_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_ic_clear_holo_light.xml new file mode 100644 index 00000000..eba4fa60 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_ic_clear_holo_light.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_item_background_holo_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_item_background_holo_dark.xml new file mode 100644 index 00000000..92809b74 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_item_background_holo_dark.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_item_background_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_item_background_holo_light.xml new file mode 100644 index 00000000..b2e2495a --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_item_background_holo_light.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_background_transition_holo_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_background_transition_holo_dark.xml new file mode 100644 index 00000000..360d9074 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_background_transition_holo_dark.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_background_transition_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_background_transition_holo_light.xml new file mode 100644 index 00000000..a0cf88d4 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_background_transition_holo_light.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_holo_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_holo_dark.xml new file mode 100644 index 00000000..a3e07bd8 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_holo_dark.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_holo_light.xml new file mode 100644 index 00000000..d50d387d --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_list_selector_holo_light.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_search_dropdown_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_search_dropdown_dark.xml new file mode 100644 index 00000000..9c2ceac3 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_search_dropdown_dark.xml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_search_dropdown_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_search_dropdown_light.xml new file mode 100644 index 00000000..8605e740 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_search_dropdown_light.xml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_spinner_ab_holo_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_spinner_ab_holo_dark.xml new file mode 100644 index 00000000..395b8832 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_spinner_ab_holo_dark.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_spinner_ab_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_spinner_ab_holo_light.xml new file mode 100644 index 00000000..77b5288e --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_spinner_ab_holo_light.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_tab_indicator_ab_holo.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_tab_indicator_ab_holo.xml new file mode 100644 index 00000000..b49757c6 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_tab_indicator_ab_holo.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_holo_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_holo_dark.xml new file mode 100644 index 00000000..312742bf --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_holo_dark.xml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_holo_light.xml new file mode 100644 index 00000000..0281f80f --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_holo_light.xml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_right_holo_dark.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_right_holo_dark.xml new file mode 100644 index 00000000..f5df49e8 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_right_holo_dark.xml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_right_holo_light.xml b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_right_holo_light.xml new file mode 100644 index 00000000..2a86ad99 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/drawable/abc_textfield_searchview_right_holo_light.xml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout-v11/abc_action_bar_decor.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout-v11/abc_action_bar_decor.xml new file mode 100644 index 00000000..d8d1a568 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout-v11/abc_action_bar_decor.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout-v11/abc_simple_decor.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout-v11/abc_simple_decor.xml new file mode 100644 index 00000000..d39b70d1 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout-v11/abc_simple_decor.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout-v14/abc_activity_chooser_view.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout-v14/abc_activity_chooser_view.xml new file mode 100644 index 00000000..9240ec78 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout-v14/abc_activity_chooser_view.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor.xml new file mode 100644 index 00000000..ae317cbb --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor_include.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor_include.xml new file mode 100644 index 00000000..6b95a236 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor_include.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor_overlay.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor_overlay.xml new file mode 100644 index 00000000..d1868dc8 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_decor_overlay.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_home.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_home.xml new file mode 100644 index 00000000..2508d974 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_home.xml @@ -0,0 +1,39 @@ + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_tab.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_tab.xml new file mode 100644 index 00000000..5d0c8f2e --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_tab.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_tabbar.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_tabbar.xml new file mode 100644 index 00000000..42e36006 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_tabbar.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_title_item.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_title_item.xml new file mode 100644 index 00000000..ef62a946 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_title_item.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_view_list_nav_layout.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_view_list_nav_layout.xml new file mode 100644 index 00000000..9e6be64f --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_bar_view_list_nav_layout.xml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_menu_item_layout.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_menu_item_layout.xml new file mode 100644 index 00000000..751c2f66 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_menu_item_layout.xml @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_menu_layout.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_menu_layout.xml new file mode 100644 index 00000000..ae38e045 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_menu_layout.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_mode_bar.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_mode_bar.xml new file mode 100644 index 00000000..46271266 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_mode_bar.xml @@ -0,0 +1,25 @@ + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_mode_close_item.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_mode_close_item.xml new file mode 100644 index 00000000..25424336 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_action_mode_close_item.xml @@ -0,0 +1,33 @@ + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view.xml new file mode 100644 index 00000000..203377b6 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view_include.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view_include.xml new file mode 100644 index 00000000..63685e49 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view_include.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view_list_item.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view_list_item.xml new file mode 100644 index 00000000..cb0e7876 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_activity_chooser_view_list_item.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_expanded_menu_layout.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_expanded_menu_layout.xml new file mode 100644 index 00000000..fb855091 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_expanded_menu_layout.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_checkbox.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_checkbox.xml new file mode 100644 index 00000000..22f1e98d --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_checkbox.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_icon.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_icon.xml new file mode 100644 index 00000000..2aeae671 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_icon.xml @@ -0,0 +1,29 @@ + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_layout.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_layout.xml new file mode 100644 index 00000000..acc40ff3 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_layout.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_radio.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_radio.xml new file mode 100644 index 00000000..91248503 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_list_menu_item_radio.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_popup_menu_item_layout.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_popup_menu_item_layout.xml new file mode 100644 index 00000000..ceec5ce8 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_popup_menu_item_layout.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_search_dropdown_item_icons_2line.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_search_dropdown_item_icons_2line.xml new file mode 100644 index 00000000..4e5c3da3 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_search_dropdown_item_icons_2line.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_search_view.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_search_view.xml new file mode 100644 index 00000000..ec6a88b1 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_search_view.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_simple_decor.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_simple_decor.xml new file mode 100644 index 00000000..7d6c4904 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/abc_simple_decor.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/layout/support_simple_spinner_dropdown_item.xml b/libs/android-support-appcompat-v7-exploded-aar/res/layout/support_simple_spinner_dropdown_item.xml new file mode 100644 index 00000000..cdfa2f45 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/layout/support_simple_spinner_dropdown_item.xml @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-af/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-af/values.xml new file mode 100644 index 00000000..e13cb3a8 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-af/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navigeer tuis" + "Navigeer op" + "Nog opsies" + "Klaar" + "Sien alles" + "Kies \'n program" + "Vee navraag uit" + "Soeknavraag" + "Soek" + "Dien navraag in" + "Stemsoektog" + "Deel met" + "Deel met %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-am/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-am/values.xml new file mode 100644 index 00000000..aedf4c16 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-am/values.xml @@ -0,0 +1,21 @@ + + + + + + + "ወደ መነሻ ይዳስሱ" + "ወደ ላይ ይዳስሱ" + "ተጨማሪ አማራጮች" + "ተከናውኗል" + "ሁሉንም ይመልከቱ" + "መተግበሪያ ይምረጡ" + "መጠይቅ አጽዳ" + "የፍለጋ ጥያቄ" + "ፍለጋ" + "መጠይቅ ያስረክቡ" + "የድምፅ ፍለጋ" + "ከሚከተለው ጋር ያጋሩ" + "ከ%s ጋር ያጋሩ" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-ar/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-ar/values.xml new file mode 100644 index 00000000..d50b6252 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-ar/values.xml @@ -0,0 +1,21 @@ + + + + + + + "التنقل إلى الشاشة الرئيسية" + "التنقل إلى أعلى" + "خيارات إضافية" + "تم" + "عرض الكل" + "اختيار تطبيق" + "محو طلب البحث" + "طلب البحث" + "بحث" + "إرسال طلب البحث" + "البحث الصوتي" + "مشاركة مع" + "مشاركة مع %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-bg/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-bg/values.xml new file mode 100644 index 00000000..f778293e --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-bg/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Придвижване към „Начало“" + "Придвижване нагоре" + "Още опции" + "Готово" + "Вижте всички" + "Изберете приложение" + "Изчистване на заявката" + "Заявка за търсене" + "Търсене" + "Изпращане на заявката" + "Гласово търсене" + "Споделяне със:" + "Споделяне със: %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-ca/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-ca/values.xml new file mode 100644 index 00000000..8f581448 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-ca/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navega a la pàgina d\'inici" + "Navega cap a dalt" + "Més opcions" + "Fet" + "Mostra\'ls tots" + "Selecciona una aplicació" + "Esborra la consulta" + "Consulta de cerca" + "Cerca" + "Envia la consulta" + "Cerca per veu" + "Comparteix amb" + "Comparteix amb %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-cs/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-cs/values.xml new file mode 100644 index 00000000..e70f5360 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-cs/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Přejít na plochu" + "Přejít nahoru" + "Více možností" + "Hotovo" + "Zobrazit vše" + "Vybrat aplikaci" + "Smazat dotaz" + "Vyhledávací dotaz" + "Hledat" + "Odeslat dotaz" + "Hlasové vyhledávání" + "Sdílet pomocí" + "Sdílet pomocí %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-da/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-da/values.xml new file mode 100644 index 00000000..39d165bb --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-da/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Naviger hjem" + "Naviger op" + "Flere muligheder" + "Luk" + "Se alle" + "Vælg en app" + "Ryd forespørgslen" + "Søgeforespørgsel" + "Søg" + "Indsend forespørgslen" + "Stemmesøgning" + "Del med" + "Del med %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-de/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-de/values.xml new file mode 100644 index 00000000..8944055f --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-de/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Zur Startseite" + "Nach oben" + "Weitere Optionen" + "Fertig" + "Alle ansehen" + "App auswählen" + "Suchanfrage löschen" + "Suchanfrage" + "Suchen" + "Suchanfrage senden" + "Sprachsuche" + "Freigeben für" + "Freigeben für %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-el/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-el/values.xml new file mode 100644 index 00000000..bd3a77b9 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-el/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Πλοήγηση στην αρχική σελίδα" + "Πλοήγηση προς τα επάνω" + "Περισσότερες επιλογές" + "Τέλος" + "Προβολή όλων" + "Επιλέξτε κάποια εφαρμογή" + "Διαγραφή ερωτήματος" + "Ερώτημα αναζήτησης" + "Αναζήτηση" + "Υποβολή ερωτήματος" + "Φωνητική αναζήτηση" + "Κοινή χρήση με" + "Κοινή χρήση με %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-en-rGB/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-en-rGB/values.xml new file mode 100644 index 00000000..f972e2c3 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-en-rGB/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navigate home" + "Navigate up" + "More options" + "Finished" + "See all" + "Choose an app" + "Clear query" + "Search query" + "Search" + "Submit query" + "Voice search" + "Share with" + "Share with %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-en-rIN/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-en-rIN/values.xml new file mode 100644 index 00000000..7a7a5dc8 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-en-rIN/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navigate home" + "Navigate up" + "More options" + "Finished" + "See all" + "Choose an app" + "Clear query" + "Search query" + "Search" + "Submit query" + "Voice search" + "Share with" + "Share with %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-es-rUS/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-es-rUS/values.xml new file mode 100644 index 00000000..4169a4b2 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-es-rUS/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navegar a la página principal" + "Navegar hacia arriba" + "Más opciones" + "Listo" + "Ver todo" + "Elige una aplicación." + "Eliminar la consulta" + "Consulta de búsqueda" + "Búsqueda" + "Enviar consulta" + "Búsqueda por voz" + "Compartir con" + "Compartir con %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-es/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-es/values.xml new file mode 100644 index 00000000..aa376b69 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-es/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Ir a la pantalla de inicio" + "Desplazarse hacia arriba" + "Más opciones" + "Listo" + "Ver todo" + "Seleccionar una aplicación" + "Borrar consulta" + "Consulta" + "Buscar" + "Enviar consulta" + "Búsqueda por voz" + "Compartir con" + "Compartir con %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-et-rEE/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-et-rEE/values.xml new file mode 100644 index 00000000..f1f8e9ec --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-et-rEE/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navigeerimine avaekraanile" + "Navigeerimine üles" + "Rohkem valikuid" + "Valmis" + "Kuva kõik" + "Valige rakendus" + "Päringu tühistamine" + "Otsingupäring" + "Otsing" + "Päringu esitamine" + "Häälotsing" + "Jagamine:" + "Jagamine kasutajaga %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-fa/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-fa/values.xml new file mode 100644 index 00000000..1e163bc1 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-fa/values.xml @@ -0,0 +1,21 @@ + + + + + + + "پیمایش به صفحه اصلی" + "پیمایش به بالا" + "گزینه‌های بیشتر" + "انجام شد" + "مشاهده همه" + "انتخاب برنامه" + "پاک کردن عبارت جستجو" + "عبارت جستجو" + "جستجو" + "ارسال عبارت جستجو" + "جستجوی شفاهی" + "اشتراک‌گذاری با" + "اشتراک‌گذاری با %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-fi/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-fi/values.xml new file mode 100644 index 00000000..4b73201f --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-fi/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Siirry etusivulle" + "Siirry ylös" + "Lisää" + "Valmis" + "Näytä kaikki" + "Valitse sovellus" + "Tyhjennä kysely" + "Hakulauseke" + "Haku" + "Lähetä kysely" + "Puhehaku" + "Jakaminen:" + "Jakaminen: %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-fr-rCA/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-fr-rCA/values.xml new file mode 100644 index 00000000..758d47c6 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-fr-rCA/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Revenir à l\'accueil" + "Revenir en haut de la page" + "Plus d\'options" + "Terminé" + "Voir toutes les chaînes" + "Sélectionnez une application" + "Effacer la requête" + "Requête de recherche" + "Rechercher" + "Envoyer la requête" + "Recherche vocale" + "Partager avec" + "Partager avec %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-fr/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-fr/values.xml new file mode 100644 index 00000000..7fd03d41 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-fr/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Revenir à l\'accueil" + "Revenir en haut de la page" + "Plus d\'options" + "OK" + "Tout afficher" + "Sélectionner une application" + "Effacer la requête" + "Requête de recherche" + "Rechercher" + "Envoyer la requête" + "Recherche vocale" + "Partager avec" + "Partager avec %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-hi/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-hi/values.xml new file mode 100644 index 00000000..f82ea36d --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-hi/values.xml @@ -0,0 +1,21 @@ + + + + + + + "मुखपृष्ठ पर नेविगेट करें" + "ऊपर नेविगेट करें" + "अधिक विकल्प" + "पूर्ण" + "सभी देखें" + "कोई एप्‍लिकेशन चुनें" + "क्‍वेरी साफ़ करें" + "खोज क्वेरी" + "खोजें" + "क्वेरी सबमिट करें" + "ध्वनि खोज" + "इसके द्वारा साझा करें" + "%s के साथ साझा करें" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-hr/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-hr/values.xml new file mode 100644 index 00000000..146eb20b --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-hr/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Idi na početnu" + "Idi gore" + "Dodatne opcije" + "Gotovo" + "Prikaži sve" + "Odabir aplikacije" + "Izbriši upit" + "Upit za pretraživanje" + "Pretraživanje" + "Pošalji upit" + "Glasovno pretraživanje" + "Dijeljenje sa" + "Dijeljenje sa: %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-hu/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-hu/values.xml new file mode 100644 index 00000000..c21c4982 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-hu/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Ugrás a főoldalra" + "Felfelé mozgatás" + "További lehetőségek" + "Kész" + "Összes megtekintése" + "Válasszon ki egy alkalmazást" + "Lekérdezés törlése" + "Keresési lekérdezés" + "Keresés" + "Lekérdezés küldése" + "Hangalapú keresés" + "Megosztás a következővel:" + "Megosztás a következővel: %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-hy-rAM/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-hy-rAM/values.xml new file mode 100644 index 00000000..bd2ac0f6 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-hy-rAM/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Ուղղվել տուն" + "Ուղղվել վերև" + "Այլ ընտրանքներ" + "Կատարված է" + "Տեսնել բոլորը" + "Ընտրել ծրագիր" + "Մաքրել հարցումը" + "Որոնման հարցում" + "Որոնել" + "Ուղարկել հարցումը" + "Ձայնային որոնում" + "Տարածել" + "Տարածել ըստ %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-in/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-in/values.xml new file mode 100644 index 00000000..317fe68e --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-in/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Navigasi ke beranda" + "Navigasi naik" + "Opsi lain" + "Selesai" + "Lihat semua" + "Pilih aplikasi" + "Hapus kueri" + "Kueri penelusuran" + "Telusuri" + "Kirim kueri" + "Penelusuran suara" + "Bagikan dengan" + "Bagikan dengan %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-it/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-it/values.xml new file mode 100644 index 00000000..faaa868d --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-it/values.xml @@ -0,0 +1,21 @@ + + + + + + + "Vai alla home page" + "Vai in alto" + "Altre opzioni" + "Fine" + "Visualizza tutte" + "Scegli un\'applicazione" + "Cancella query" + "Query di ricerca" + "Cerca" + "Invia query" + "Ricerca vocale" + "Condividi con" + "Condividi con %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-iw/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-iw/values.xml new file mode 100644 index 00000000..91d945ba --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-iw/values.xml @@ -0,0 +1,21 @@ + + + + + + + "נווט לדף הבית" + "נווט למעלה" + "עוד אפשרויות" + "בוצע" + "ראה הכול" + "בחר אפליקציה" + "מחק שאילתה" + "שאילתת חיפוש" + "חפש" + "שלח שאילתה" + "חיפוש קולי" + "שתף עם" + "שתף עם %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-ja/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-ja/values.xml new file mode 100644 index 00000000..b020cde4 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-ja/values.xml @@ -0,0 +1,21 @@ + + + + + + + "ホームへ移動" + "上へ移動" + "その他のオプション" + "完了" + "すべて表示" + "アプリの選択" + "検索キーワードを削除" + "検索キーワード" + "検索" + "検索キーワードを送信" + "音声検索" + "共有" + "%sと共有" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-ka-rGE/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-ka-rGE/values.xml new file mode 100644 index 00000000..6ff2310c --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-ka-rGE/values.xml @@ -0,0 +1,21 @@ + + + + + + + "მთავარზე ნავიგაცია" + "ზემოთ ნავიგაცია" + "მეტი ვარიანტები" + "დასრულდა" + "ყველას ნახვა" + "აპის არჩევა" + "მოთხოვნის გასუფთავება" + "ძიების მოთხოვნა" + "ძიება" + "მოთხოვნის გადაგზავნა" + "ხმოვანი ძიება" + "გაზიარება:" + "%s-თან გაზიარება" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-km-rKH/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-km-rKH/values.xml new file mode 100644 index 00000000..780228cf --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-km-rKH/values.xml @@ -0,0 +1,21 @@ + + + + + + + "រកមើល​ទៅ​ដើម" + "រកមើល​ឡើងលើ" + "ជម្រើស​ច្រើន​ទៀត" + "រួចរាល់" + "មើល​ទាំងអស់" + "ជ្រើស​កម្មវិធី" + "សម្អាត​សំណួរ" + "ស្វែងរក​សំណួរ" + "ស្វែងរក" + "ដាក់​​​ស្នើ​សំណួរ" + "ការស្វែងរក​សំឡេង" + "ចែករំលែក​ជាមួយ" + "ចែករំលែក​ជាមួយ %s" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-ko/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-ko/values.xml new file mode 100644 index 00000000..5a2aef40 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-ko/values.xml @@ -0,0 +1,21 @@ + + + + + + + "홈 탐색" + "위로 탐색" + "옵션 더보기" + "완료" + "전체 보기" + "앱 선택" + "검색어 삭제" + "검색어" + "검색" + "검색어 보내기" + "음성 검색" + "공유 대상" + "%s와(과) 공유" + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-land/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-land/values.xml new file mode 100644 index 00000000..59200994 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-land/values.xml @@ -0,0 +1,27 @@ + + + + + + + true + + + + true + + + + false + + + + 40dip + 4dip + 32dp + 4dip + 12dp + -2dp + 16dp + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-large-v14/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-large-v14/values.xml new file mode 100644 index 00000000..e328f29d --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-large-v14/values.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/res/values-v14/values.xml b/libs/android-support-appcompat-v7-exploded-aar/res/values-v14/values.xml new file mode 100644 index 00000000..a0d3a48b --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/res/values-v14/values.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/android-support-appcompat-v7-exploded-aar/src/.gitignore b/libs/android-support-appcompat-v7-exploded-aar/src/.gitignore new file mode 100644 index 00000000..86d0cb27 --- /dev/null +++ b/libs/android-support-appcompat-v7-exploded-aar/src/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/project.properties b/project.properties index 28edd993..3abf7906 100644 --- a/project.properties +++ b/project.properties @@ -9,5 +9,5 @@ # Project target. target=android-19 -android.library.reference.1=actionbarsherlock/library -android.library.reference.2=owncloud-android-library +android.library.reference.1=owncloud-android-library +android.library.reference.2=libs/android-support-appcompat-v7-exploded-aar diff --git a/res/drawable-hdpi/ic_drawer.png b/res/drawable-hdpi/ic_drawer.png new file mode 100644 index 00000000..6614ea4f Binary files /dev/null and b/res/drawable-hdpi/ic_drawer.png differ diff --git a/res/drawable-mdpi/ic_drawer.png b/res/drawable-mdpi/ic_drawer.png new file mode 100644 index 00000000..fb681ba2 Binary files /dev/null and b/res/drawable-mdpi/ic_drawer.png differ diff --git a/res/drawable-xhdpi/ic_drawer.png b/res/drawable-xhdpi/ic_drawer.png new file mode 100644 index 00000000..b9bc3d70 Binary files /dev/null and b/res/drawable-xhdpi/ic_drawer.png differ diff --git a/res/layout-land/account_setup.xml b/res/layout-land/account_setup.xml index fa357c23..27873a61 100644 --- a/res/layout-land/account_setup.xml +++ b/res/layout-land/account_setup.xml @@ -166,7 +166,8 @@ android:ems="10" android:hint="@string/auth_username" android:inputType="textNoSuggestions" - android:contentDescription="@string/auth_username"/> + android:contentDescription="@string/auth_username" + /> + > + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/drawer_account_group.xml b/res/layout/drawer_account_group.xml new file mode 100644 index 00000000..85a1c753 --- /dev/null +++ b/res/layout/drawer_account_group.xml @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/res/layout/drawer_list_item.xml b/res/layout/drawer_list_item.xml new file mode 100644 index 00000000..30f3843b --- /dev/null +++ b/res/layout/drawer_list_item.xml @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/res/layout/drawer_radiobutton.xml b/res/layout/drawer_radiobutton.xml new file mode 100644 index 00000000..726d0571 --- /dev/null +++ b/res/layout/drawer_radiobutton.xml @@ -0,0 +1,27 @@ + + + \ No newline at end of file diff --git a/res/layout/files.xml b/res/layout/files.xml index 3f3617bc..649c863a 100644 --- a/res/layout/files.xml +++ b/res/layout/files.xml @@ -1,5 +1,5 @@ - - + - - - - - - \ No newline at end of file + android:clickable="true" > + + + + + + + + + + + + + diff --git a/res/layout/listrow_details.xml b/res/layout/listrow_details.xml new file mode 100644 index 00000000..7d7a3772 --- /dev/null +++ b/res/layout/listrow_details.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/listrow_group.xml b/res/layout/listrow_group.xml new file mode 100644 index 00000000..753d7386 --- /dev/null +++ b/res/layout/listrow_group.xml @@ -0,0 +1,31 @@ + + + \ No newline at end of file diff --git a/res/layout/preview_image_activity.xml b/res/layout/preview_image_activity.xml index 9baf6c24..13aff8a9 100644 --- a/res/layout/preview_image_activity.xml +++ b/res/layout/preview_image_activity.xml @@ -16,16 +16,24 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . --> - + android:clickable="true" > + + - \ No newline at end of file + \ No newline at end of file diff --git a/res/layout/uploader_layout.xml b/res/layout/uploader_layout.xml index 60a21112..a5351f04 100644 --- a/res/layout/uploader_layout.xml +++ b/res/layout/uploader_layout.xml @@ -22,11 +22,11 @@ android:layout_width="wrap_content" android:background="#fefefe" android:gravity="center"> + android:layout_below="@+id/drawer_username" android:layout_above="@+id/linearLayout1"> diff --git a/res/layout/uploader_list_item_layout.xml b/res/layout/uploader_list_item_layout.xml index e0932690..d2d0005b 100644 --- a/res/layout/uploader_list_item_layout.xml +++ b/res/layout/uploader_list_item_layout.xml @@ -35,7 +35,7 @@ . --> - + - - - + \ No newline at end of file diff --git a/res/values/colors.xml b/res/values/colors.xml index 6aeb6acf..b42538fd 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -22,6 +22,7 @@ #DDDDDD #00ddff #989898 + #000000 #303030 #fff0f0f0 diff --git a/res/values/drawer_resources.xml b/res/values/drawer_resources.xml new file mode 100644 index 00000000..287eb698 --- /dev/null +++ b/res/values/drawer_resources.xml @@ -0,0 +1,41 @@ + + + + + + + + + @string/drawer_item_all_files + + @string/actionbar_settings + @string/actionbar_logger + + + + + + + @string/drawer_item_all_files + + @string/drawer_item_settings + @string/drawer_item_logs + + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 5b19c75c..7d180be4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -20,6 +20,14 @@ + + + All files + + Settings + Logs + Close General More Accounts @@ -331,10 +339,14 @@ Upload Video Path Download of %1$s folder could not be completed - %1$s shared \"%2$s\" with you + shared + with you + + %1$s %2$s >>%3$s<< %4$s Refresh connection Server address Not enough memory + Username diff --git a/res/values/styles.xml b/res/values/styles.xml index 5996281f..0d3f14df 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -21,32 +21,23 @@ - - - - diff --git a/res/values/versioned_styles.xml b/res/values/versioned_styles.xml index 5faa6b2a..fc5c2927 100644 --- a/res/values/versioned_styles.xml +++ b/res/values/versioned_styles.xml @@ -8,12 +8,14 @@ - - diff --git a/settings.gradle b/settings.gradle index 66022f5e..b31d96ee 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,2 @@ include ':owncloud-android-library' -include 'libs/actionbarsherlock_lib' include ':' diff --git a/setup_env.bat b/setup_env.bat index 0781036c..ded68e16 100644 --- a/setup_env.bat +++ b/setup_env.bat @@ -17,25 +17,17 @@ goto initDefault :initForAnt echo "Executing Ant setup..." ::If the directory exists the script has already been executed -if not exist .\actionbarsherlock ( - - ::Gets the owncloud-android-library - call git submodule init - call git submodule update - - ::Clones the actionbarsherlock and checks-out the right release (4.2.0) - git clone "https://github.com/JakeWharton/ActionBarSherlock.git" "actionbarsherlock" - cd "actionbarsherlock" - git checkout "90939dc3925ffaaa0de269bbbe1b35e274968ea1" - cd ../ - - call android.bat update project -p actionbarsherlock/library -n ActionBarSherlock --target android-19 - 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 - copy /Y third_party\android-support-library\android-support-v4.jar actionbarsherlock\library\libs\android-support-v4.jar - call android.bat update test-project -p tests -m .. -) + +::Gets the owncloud-android-library +call git submodule init +call git submodule update + +call android.bat update project -p libs/android-support-appcompat-v7-exploded-aar --target android-16 +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 +call android.bat update test-project -p tests -m .. + goto complete :initDefault diff --git a/setup_env.sh b/setup_env.sh index 8c9af071..a38c32df 100755 --- a/setup_env.sh +++ b/setup_env.sh @@ -1,16 +1,6 @@ #!/bin/bash -e -#Repository -ActionBarSherlockRepo="https://github.com/JakeWharton/ActionBarSherlock.git" - -#Directory for actionbarsherlock -DIRECTORY="actionbarsherlock" - -#Commit for version 4.2 of actionbar sherlock -COMMIT="90939dc3925ffaaa0de269bbbe1b35e274968ea1" - - function initDefault { git submodule init git submodule update @@ -21,27 +11,19 @@ function initDefault { } function initForAnt { - #If the directory exists the script has already been executed - if [ ! -d "$DIRECTORY" ]; then - - #Gets the owncloud-android-library - git submodule init - git submodule update - - #Clones the actionbarsherlock and checks-out the right release (4.2.0) - git clone $ActionBarSherlockRepo $DIRECTORY - cd $DIRECTORY - git checkout $COMMIT - cd ../ - #As default it updates the ant scripts - android update project -p "$DIRECTORY"/library -n ActionBarSherlock --target android-19 - android update lib-project -p owncloud-android-library - android update project -p . - android update project -p oc_jb_workaround - cp third_party/android-support-library/android-support-v4.jar actionbarsherlock/library/libs/android-support-v4.jar - android update test-project -p tests -m .. - fi + #Gets the owncloud-android-library + git submodule init + git submodule update + + #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-16 + + #As default it updates the ant scripts + android update lib-project -p owncloud-android-library + android update project -p . + android update project -p oc_jb_workaround + android update test-project -p tests -m .. } #No args diff --git a/src/com/owncloud/android/MainApp.java b/src/com/owncloud/android/MainApp.java index 657469ef..c805f9f7 100644 --- a/src/com/owncloud/android/MainApp.java +++ b/src/com/owncloud/android/MainApp.java @@ -53,6 +53,11 @@ public class MainApp extends Application { private static final String POLICY_ALWAYS_NEW_CLIENT = "always new client"; private static Context mContext; + + // TODO Enable when "On Device" is recovered? + // TODO better place + // private static boolean mOnlyOnDevice = false; + public void onCreate(){ super.onCreate(); @@ -171,6 +176,15 @@ public class MainApp extends Application { return getAppContext().getResources().getString(R.string.log_name); } + // TODO Enable when "On Device" is recovered ? +// public static void showOnlyFilesOnDevice(boolean state){ +// mOnlyOnDevice = state; +// } +// +// public static boolean getOnlyOnDevice(){ +// return mOnlyOnDevice; +// } + // user agent public static String getUserAgent() { String appString = getAppContext().getResources().getString(R.string.user_agent); diff --git a/src/com/owncloud/android/authentication/AccountAuthenticatorActivity.java b/src/com/owncloud/android/authentication/AccountAuthenticatorActivity.java index 62c8825f..c44b0435 100644 --- a/src/com/owncloud/android/authentication/AccountAuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AccountAuthenticatorActivity.java @@ -19,9 +19,7 @@ package com.owncloud.android.authentication; import android.accounts.AccountAuthenticatorResponse; import android.accounts.AccountManager; import android.os.Bundle; - -import com.actionbarsherlock.app.SherlockFragmentActivity; - +import android.support.v7.app.ActionBarActivity; /* * Base class for implementing an Activity that is used to help implement an AbstractAccountAuthenticator. @@ -34,7 +32,7 @@ import com.actionbarsherlock.app.SherlockFragmentActivity; * then error AccountManager.ERROR_CODE_CANCELED will be called on the response. */ -public class AccountAuthenticatorActivity extends SherlockFragmentActivity { +public class AccountAuthenticatorActivity extends ActionBarActivity { private AccountAuthenticatorResponse mAccountAuthenticatorResponse = null; private Bundle mResultBundle = null; diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index bf1010bc..e7b33979 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -42,6 +42,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.preference.PreferenceManager; +import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; @@ -65,7 +66,6 @@ import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; @@ -189,8 +189,10 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity /// Identifier of operation in progress which result shouldn't be lost private long mWaitingForOpId = Long.MAX_VALUE; - private final String BASIC_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypePass(MainApp.getAccountType()); - private final String OAUTH_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()); + private final String BASIC_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypePass( + MainApp.getAccountType()); + private final String OAUTH_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypeAccessToken( + MainApp.getAccountType()); private final String SAML_TOKEN_TYPE = AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()); @@ -204,7 +206,16 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity protected void onCreate(Bundle savedInstanceState) { //Log_OC.wtf(TAG, "onCreate init"); super.onCreate(savedInstanceState); - getWindow().requestFeature(Window.FEATURE_NO_TITLE); + + // Workaround, for fixing a problem with Android Library Suppor v7 19 + //getWindow().requestFeature(Window.FEATURE_NO_TITLE); + if (getSupportActionBar() != null) { + getSupportActionBar().hide(); + + getSupportActionBar().setDisplayHomeAsUpEnabled(false); + getSupportActionBar().setDisplayShowHomeEnabled(false); + getSupportActionBar().setDisplayShowTitleEnabled(false); + } mIsFirstAuthAttempt = true; @@ -785,8 +796,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity Intent getServerInfoIntent = new Intent(); getServerInfoIntent.setAction(OperationsService.ACTION_GET_SERVER_INFO); getServerInfoIntent.putExtra( - OperationsService.EXTRA_SERVER_URL, - normalizeUrlSuffix(uri) + OperationsService.EXTRA_SERVER_URL, + normalizeUrlSuffix(uri) ); if (mOperationsServiceBinder != null) { mWaitingForOpId = mOperationsServiceBinder.queueNewOperation(getServerInfoIntent); @@ -908,7 +919,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity dialog.show(getSupportFragmentManager(), WAIT_DIALOG_TAG); /// validate credentials accessing the root folder - OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBasicCredentials(username, password); + OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBasicCredentials(username, + password); accessRootFolder(credentials); } @@ -1016,7 +1028,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity } catch (AccountNotFoundException e) { Log_OC.e(TAG, "Account " + mAccount + " was removed!", e); - Toast.makeText(this, R.string.auth_account_does_not_exist, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.auth_account_does_not_exist, + Toast.LENGTH_SHORT).show(); finish(); } } @@ -1102,7 +1115,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity url = "http://" + url; } } - + url = normalizeUrlSuffix(url); } return (url != null ? url : ""); @@ -1324,7 +1337,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity Log_OC.d(TAG, "Got ACCESS TOKEN: " + mAuthToken); /// validate token accessing to root folder / getting session - OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBearerCredentials(mAuthToken); + OwnCloudCredentials credentials = OwnCloudCredentialsFactory.newBearerCredentials( + mAuthToken); accessRootFolder(credentials); } else { @@ -1362,7 +1376,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity } catch (AccountNotFoundException e) { Log_OC.e(TAG, "Account " + mAccount + " was removed!", e); - Toast.makeText(this, R.string.auth_account_does_not_exist, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.auth_account_does_not_exist, + Toast.LENGTH_SHORT).show(); finish(); } } @@ -1420,7 +1435,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity response.putString(AccountManager.KEY_ACCOUNT_TYPE, mAccount.type); if (AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()). - equals(mAuthTokenType)) { + equals(mAuthTokenType)) { response.putString(AccountManager.KEY_AUTHTOKEN, mAuthToken); // the next line is necessary, notifications are calling directly to the // AuthenticatorActivity to update, without AccountManager intervention @@ -1722,8 +1737,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity mAuthToken = sessionCookie; getRemoteUserNameOperation(sessionCookie, true); Fragment fd = getSupportFragmentManager().findFragmentByTag(SAML_DIALOG_TAG); - if (fd != null && fd instanceof SherlockDialogFragment) { - Dialog d = ((SherlockDialogFragment)fd).getDialog(); + if (fd != null && fd instanceof DialogFragment) { + Dialog d = ((DialogFragment)fd).getDialog(); if (d != null && d.isShowing()) { d.dismiss(); } @@ -1825,8 +1840,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity private void dismissDialog(String dialogTag){ Fragment frag = getSupportFragmentManager().findFragmentByTag(dialogTag); - if (frag != null && frag instanceof SherlockDialogFragment) { - SherlockDialogFragment dialog = (SherlockDialogFragment) frag; + if (frag != null && frag instanceof DialogFragment) { + DialogFragment dialog = (DialogFragment) frag; dialog.dismiss(); } } @@ -1898,5 +1913,4 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity mIsFirstAuthAttempt = true; } - } diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index c32dbbce..7db0a637 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -28,14 +28,6 @@ import java.util.Iterator; import java.util.List; import java.util.Vector; -import com.owncloud.android.MainApp; -import com.owncloud.android.db.ProviderMeta.ProviderTableMeta; -import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.lib.resources.shares.OCShare; -import com.owncloud.android.lib.resources.shares.ShareType; -import com.owncloud.android.lib.resources.files.FileUtils; -import com.owncloud.android.utils.FileStorageUtils; - import android.accounts.Account; import android.content.ContentProviderClient; import android.content.ContentProviderOperation; @@ -50,6 +42,14 @@ import android.net.Uri; import android.os.RemoteException; import android.provider.MediaStore; +import com.owncloud.android.MainApp; +import com.owncloud.android.db.ProviderMeta.ProviderTableMeta; +import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.lib.resources.files.FileUtils; +import com.owncloud.android.lib.resources.shares.OCShare; +import com.owncloud.android.lib.resources.shares.ShareType; +import com.owncloud.android.utils.FileStorageUtils; + public class FileDataStorageManager { public static final int ROOT_PARENT_ID = 0; @@ -142,9 +142,10 @@ public class FileDataStorageManager { } - public Vector getFolderContent(OCFile f) { + public Vector getFolderContent(OCFile f/*, boolean onlyOnDevice*/) { if (f != null && f.isFolder() && f.getFileId() != -1) { - return getFolderContent(f.getFileId()); + // TODO Enable when "On Device" is recovered ? + return getFolderContent(f.getFileId()/*, onlyOnDevice*/); } else { return new Vector(); @@ -152,11 +153,12 @@ public class FileDataStorageManager { } - public Vector getFolderImages(OCFile folder) { + public Vector getFolderImages(OCFile folder/*, boolean onlyOnDevice*/) { Vector ret = new Vector(); if (folder != null) { - // TODO better implementation, filtering in the access to database instead of here - Vector tmp = getFolderContent(folder); + // TODO better implementation, filtering in the access to database instead of here + // TODO Enable when "On Device" is recovered ? + Vector tmp = getFolderContent(folder/*, onlyOnDevice*/); OCFile current = null; for (int i=0; i files = getFolderContent(folder.getFileId()); + // TODO Enable when "On Device" is recovered ? + Vector files = getFolderContent(folder.getFileId()/*, false*/); if (files != null) { for (OCFile file : files) { if (file.isFolder()) { @@ -731,7 +734,7 @@ public class FileDataStorageManager { } - private Vector getFolderContent(long parentId) { + private Vector getFolderContent(long parentId/*, boolean onlyOnDevice*/) { Vector ret = new Vector(); @@ -758,7 +761,10 @@ public class FileDataStorageManager { if (c.moveToFirst()) { do { OCFile child = createFileInstance(c); - ret.add(child); + // TODO Enable when "On Device" is recovered ? + // if (child.isFolder() || !onlyOnDevice || onlyOnDevice && child.isDown()){ + ret.add(child); + // } } while (c.moveToNext()); } @@ -1435,14 +1441,14 @@ public class FileDataStorageManager { } private ArrayList prepareRemoveSharesInFolder( - OCFile folder, ArrayList preparedOperations - ) { + OCFile folder, ArrayList preparedOperations) { if (folder != null) { String where = ProviderTableMeta.OCSHARES_PATH + "=?" + " AND " + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?"; String [] whereArgs = new String[]{ "", mAccount.name }; - - Vector files = getFolderContent(folder); + + // TODO Enable when "On Device" is recovered ? + Vector files = getFolderContent(folder /*, false*/); for (OCFile file : files) { whereArgs[0] = file.getRemotePath(); diff --git a/src/com/owncloud/android/files/FileMenuFilter.java b/src/com/owncloud/android/files/FileMenuFilter.java index 4b8c55d5..d6c075d6 100644 --- a/src/com/owncloud/android/files/FileMenuFilter.java +++ b/src/com/owncloud/android/files/FileMenuFilter.java @@ -96,39 +96,6 @@ public class FileMenuFilter { } } - /** - * Filters out the file actions available in the passed {@link Menu} taken into account - * the state of the {@link OCFile} held by the filter. - * - * Second method needed thanks to ActionBarSherlock. - * - * TODO Get rid of it when ActionBarSherlock is replaced for newer Android Support Library. - * - * @param menu Options or context menu to filter. - */ - public void filter(com.actionbarsherlock.view.Menu menu) { - - List toShow = new ArrayList(); - List toHide = new ArrayList(); - - filter(toShow, toHide); - - com.actionbarsherlock.view.MenuItem item = null; - for (int i : toShow) { - item = menu.findItem(i); - if (item != null) { - item.setVisible(true); - item.setEnabled(true); - } - } - for (int i : toHide) { - item = menu.findItem(i); - if (item != null) { - item.setVisible(false); - item.setEnabled(false); - } - } - } /** * Performs the real filtering, to be applied in the {@link Menu} by the caller methods. diff --git a/src/com/owncloud/android/operations/RefreshFolderOperation.java b/src/com/owncloud/android/operations/RefreshFolderOperation.java index 50a35fdb..2e3c4692 100644 --- a/src/com/owncloud/android/operations/RefreshFolderOperation.java +++ b/src/com/owncloud/android/operations/RefreshFolderOperation.java @@ -201,7 +201,8 @@ public class RefreshFolderOperation extends RemoteOperation { if (mRemoteFolderChanged) { result = fetchAndSyncRemoteFolder(client); } else { - mChildren = mStorageManager.getFolderContent(mLocalFolder); + // TODO Enable when "On Device" is recovered ? + mChildren = mStorageManager.getFolderContent(mLocalFolder/*, false*/); } } @@ -341,7 +342,8 @@ public class RefreshFolderOperation extends RemoteOperation { List filesToSyncContents = new Vector(); // get current data about local contents of the folder to synchronize - List localFiles = mStorageManager.getFolderContent(mLocalFolder); + // TODO Enable when "On Device" is recovered ? + List localFiles = mStorageManager.getFolderContent(mLocalFolder/*, false*/); Map localFilesMap = new HashMap(localFiles.size()); for (OCFile file : localFiles) { localFilesMap.put(file.getRemotePath(), file); diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 286b5ea9..6bf1ef82 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -20,12 +20,19 @@ package com.owncloud.android.operations; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + import android.accounts.Account; import android.content.Context; import android.content.Intent; import android.util.Log; -import com.owncloud.android.MainApp; + import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileDownloader; @@ -41,12 +48,6 @@ import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.utils.FileStorageUtils; -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Vector; import java.util.concurrent.atomic.AtomicBoolean; //import android.support.v4.content.LocalBroadcastManager; @@ -297,7 +298,8 @@ public class SynchronizeFolderOperation extends SyncOperation { } // get current data about local contents of the folder to synchronize - List localFiles = storageManager.getFolderContent(mLocalFolder); + // TODO Enable when "On Device" is recovered ? + List localFiles = storageManager.getFolderContent(mLocalFolder/*, false*/); Map localFilesMap = new HashMap(localFiles.size()); for (OCFile file : localFiles) { localFilesMap.put(file.getRemotePath(), file); @@ -392,7 +394,8 @@ public class SynchronizeFolderOperation extends SyncOperation { private void prepareOpsFromLocalKnowledge() throws OperationCancelledException { - List children = getStorageManager().getFolderContent(mLocalFolder); + // TODO Enable when "On Device" is recovered ? + List children = getStorageManager().getFolderContent(mLocalFolder/*, false*/); for (OCFile child : children) { /// classify file to sync/download contents later if (child.isFolder()) { diff --git a/src/com/owncloud/android/ui/NavigationDrawerItem.java b/src/com/owncloud/android/ui/NavigationDrawerItem.java new file mode 100644 index 00000000..44ed3ecc --- /dev/null +++ b/src/com/owncloud/android/ui/NavigationDrawerItem.java @@ -0,0 +1,56 @@ +/** + * ownCloud Android client application + * + * @author masensio + * Copyright (C) 2015 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.ui; + +public class NavigationDrawerItem { + + private String mTitle; + private String mContentDescription; + + // Constructors + public NavigationDrawerItem(){} + + public NavigationDrawerItem(String title){ + mTitle = title; + } + + public NavigationDrawerItem(String title, String contentDescription){ + mTitle = title; + mContentDescription = contentDescription; + } + + // Getters and Setters + public String getTitle() { + return mTitle; + } + + public void setTitle(String title) { + this.mTitle = title; + } + + public String getContentDescription() { + return mContentDescription; + } + + public void setContentDescription(String contentDescription) { + this.mContentDescription = contentDescription; + } +} diff --git a/src/com/owncloud/android/ui/TextDrawable.java b/src/com/owncloud/android/ui/TextDrawable.java new file mode 100644 index 00000000..610e7fe5 --- /dev/null +++ b/src/com/owncloud/android/ui/TextDrawable.java @@ -0,0 +1,56 @@ +package com.owncloud.android.ui; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; + +/** + * Created by tobi on 24.05.15. + */ +public class TextDrawable extends Drawable { + + private final String text; + private final Paint paint; + private final Paint bg; + + public TextDrawable(String text, int r, int g, int b) { + + this.text = text; + Integer color = Color.rgb(r, g, b); + + bg = new Paint(); + bg.setStyle(Paint.Style.FILL); + bg.setColor(color); + + paint = new Paint(); + paint.setColor(Color.WHITE); + paint.setTextSize(20); + paint.setAntiAlias(true); + paint.setFakeBoldText(true); + } + + @Override + public void draw(Canvas canvas) { + canvas.drawRect(0,-20,20,40,bg); + canvas.drawText(text, 4, 6, paint); + } + + @Override + public void setAlpha(int alpha) { + paint.setAlpha(alpha); + } + + @Override + public void setColorFilter(ColorFilter cf) { + paint.setColorFilter(cf); + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSLUCENT; + } +} diff --git a/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java b/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java index c3db9a47..fa3eea6f 100644 --- a/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java +++ b/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java @@ -22,7 +22,6 @@ package com.owncloud.android.ui.activity; -import com.actionbarsherlock.app.ActionBar; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.lib.common.utils.Log_OC; @@ -31,6 +30,7 @@ import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision; import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionMadeListener; import com.owncloud.android.utils.DisplayUtils; +import android.app.ActionBar; import android.content.Intent; import android.os.Bundle; @@ -45,7 +45,7 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ActionBar actionBar = getSupportActionBar(); + ActionBar actionBar = getActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); } diff --git a/src/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java b/src/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java index 9405ca7d..d7d96fab 100644 --- a/src/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java +++ b/src/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java @@ -30,6 +30,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.DialogFragment; +import android.support.v7.app.ActionBarActivity; import android.text.method.ScrollingMovementMethod; import android.view.LayoutInflater; import android.view.View; @@ -41,7 +42,6 @@ import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; -import com.actionbarsherlock.app.SherlockFragmentActivity; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -53,21 +53,25 @@ import com.owncloud.android.utils.FileStorageUtils; /** - * Activity reporting errors occurred when local files uploaded to an ownCloud account with an app in - * version under 1.3.16 where being copied to the ownCloud local folder. + * Activity reporting errors occurred when local files uploaded to an ownCloud account with an app + * in version under 1.3.16 where being copied to the ownCloud local folder. * * Allows the user move the files to the ownCloud local folder. let them unlinked to the remote * files. * * Shown when the error notification summarizing the list of errors is clicked by the user. */ -public class ErrorsWhileCopyingHandlerActivity extends SherlockFragmentActivity implements OnClickListener { +public class ErrorsWhileCopyingHandlerActivity extends ActionBarActivity + implements OnClickListener { private static final String TAG = ErrorsWhileCopyingHandlerActivity.class.getSimpleName(); - public static final String EXTRA_ACCOUNT = ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_ACCOUNT"; - public static final String EXTRA_LOCAL_PATHS = ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_LOCAL_PATHS"; - public static final String EXTRA_REMOTE_PATHS = ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_REMOTE_PATHS"; + public static final String EXTRA_ACCOUNT = + ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_ACCOUNT"; + public static final String EXTRA_LOCAL_PATHS = + ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_LOCAL_PATHS"; + public static final String EXTRA_REMOTE_PATHS = + ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_REMOTE_PATHS"; private static final String WAIT_DIALOG_TAG = "WAIT_DIALOG"; @@ -104,7 +108,8 @@ public class ErrorsWhileCopyingHandlerActivity extends SherlockFragmentActivity /// customize text message TextView textView = (TextView) findViewById(R.id.message); String appName = getString(R.string.app_name); - String message = String.format(getString(R.string.sync_foreign_files_forgotten_explanation), appName, appName, appName, appName, mAccount.name); + String message = String.format(getString(R.string.sync_foreign_files_forgotten_explanation), + appName, appName, appName, appName, mAccount.name); textView.setText(message); textView.setMovementMethod(new ScrollingMovementMethod()); @@ -129,13 +134,14 @@ public class ErrorsWhileCopyingHandlerActivity extends SherlockFragmentActivity /** - * Customized adapter, showing the local files as main text in two-lines list item and the remote files - * as the secondary text. + * Customized adapter, showing the local files as main text in two-lines list item and the + * remote files as the secondary text. */ public class ErrorsWhileCopyingListAdapter extends ArrayAdapter { ErrorsWhileCopyingListAdapter() { - super(ErrorsWhileCopyingHandlerActivity.this, android.R.layout.two_line_list_item, android.R.id.text1, mLocalPaths); + super(ErrorsWhileCopyingHandlerActivity.this, android.R.layout.two_line_list_item, + android.R.id.text1, mLocalPaths); } @Override @@ -150,7 +156,8 @@ public class ErrorsWhileCopyingHandlerActivity extends SherlockFragmentActivity public View getView (int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { - LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); + LayoutInflater vi = (LayoutInflater) getSystemService( + Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(android.R.layout.two_line_list_item, null); } if (view != null) { @@ -161,7 +168,8 @@ public class ErrorsWhileCopyingHandlerActivity extends SherlockFragmentActivity text1.setText(String.format(getString(R.string.foreign_files_local_text), localPath)); } } - if (mRemotePaths != null && mRemotePaths.size() > 0 && position >= 0 && position < mRemotePaths.size()) { + if (mRemotePaths != null && mRemotePaths.size() > 0 && position >= 0 && + position < mRemotePaths.size()) { TextView text2 = (TextView) view.findViewById(android.R.id.text2); String remotePath = mRemotePaths.get(position); if (text2 != null && remotePath != null) { @@ -261,12 +269,14 @@ public class ErrorsWhileCopyingHandlerActivity extends SherlockFragmentActivity if (result) { // nothing else to do in this activity - Toast t = Toast.makeText(ErrorsWhileCopyingHandlerActivity.this, getString(R.string.foreign_files_success), Toast.LENGTH_LONG); + Toast t = Toast.makeText(ErrorsWhileCopyingHandlerActivity.this, + getString(R.string.foreign_files_success), Toast.LENGTH_LONG); t.show(); finish(); } else { - Toast t = Toast.makeText(ErrorsWhileCopyingHandlerActivity.this, getString(R.string.foreign_files_fail), Toast.LENGTH_LONG); + Toast t = Toast.makeText(ErrorsWhileCopyingHandlerActivity.this, + getString(R.string.foreign_files_fail), Toast.LENGTH_LONG); t.show(); } } diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index fbb62edd..19960e3b 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -31,15 +31,25 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.content.res.Configuration; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; +import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.GravityCompat; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarActivity; +import android.view.View; +import android.widget.AdapterView; +import android.widget.LinearLayout; +import android.widget.ListView; import android.widget.Toast; -import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.owncloud.android.BuildConfig; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -48,8 +58,8 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.FileOperationsHelper; import com.owncloud.android.files.services.FileDownloader; -import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; +import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; import com.owncloud.android.lib.common.operations.RemoteOperation; @@ -61,21 +71,28 @@ import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.OperationsService; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; +import com.owncloud.android.ui.NavigationDrawerItem; +import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter; import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.dialog.SharePasswordDialogFragment; import com.owncloud.android.utils.ErrorMessageAdapter; +import java.util.ArrayList; + /** - * Activity with common behaviour for activities handling {@link OCFile}s in ownCloud {@link Account}s . + * Activity with common behaviour for activities handling {@link OCFile}s in ownCloud + * {@link Account}s . */ -public class FileActivity extends SherlockFragmentActivity +public class FileActivity extends ActionBarActivity implements OnRemoteOperationListener, ComponentsGetter { public static final String EXTRA_FILE = "com.owncloud.android.ui.activity.FILE"; public static final String EXTRA_ACCOUNT = "com.owncloud.android.ui.activity.ACCOUNT"; - public static final String EXTRA_WAITING_TO_PREVIEW = "com.owncloud.android.ui.activity.WAITING_TO_PREVIEW"; - public static final String EXTRA_FROM_NOTIFICATION = "com.owncloud.android.ui.activity.FROM_NOTIFICATION"; + public static final String EXTRA_WAITING_TO_PREVIEW = + "com.owncloud.android.ui.activity.WAITING_TO_PREVIEW"; + public static final String EXTRA_FROM_NOTIFICATION = + "com.owncloud.android.ui.activity.FROM_NOTIFICATION"; public static final String TAG = FileActivity.class.getSimpleName(); @@ -83,17 +100,19 @@ public class FileActivity extends SherlockFragmentActivity private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID"; private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD"; private static final String KEY_TRY_SHARE_AGAIN = "TRY_SHARE_AGAIN"; + private static final String KEY_ACTION_BAR_TITLE = "ACTION_BAR_TITLE"; protected static final long DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS = 200; - /** OwnCloud {@link Account} where the main {@link OCFile} handled by the activity is located. */ + /** OwnCloud {@link Account} where the main {@link OCFile} handled by the activity is located.*/ private Account mAccount; /** Main {@link OCFile} handled by the activity.*/ private OCFile mFile; - /** Flag to signal that the activity will is finishing to enforce the creation of an ownCloud {@link Account} */ + /** Flag to signal that the activity will is finishing to enforce the creation of an ownCloud + * {@link Account} */ private boolean mRedirectingToSetupAccount = false; /** Flag to signal when the value of mAccount was set */ @@ -122,7 +141,23 @@ public class FileActivity extends SherlockFragmentActivity private ServiceConnection mDownloadServiceConnection, mUploadServiceConnection = null; private boolean mTryShareAgain = false; - + + // Navigation Drawer + protected DrawerLayout mDrawerLayout; + protected ActionBarDrawerToggle mDrawerToggle; + protected ListView mDrawerList; + + // Slide menu items + protected String[] mDrawerTitles; + protected String[] mDrawerContentDescriptions; + + protected ArrayList mDrawerItems; + + protected NavigationDrawerListAdapter mNavigationDrawerAdapter = null; + + + // TODO re-enable when "Accounts" is available in Navigation Drawer +// protected boolean mShowAccounts = false; /** * Loads the ownCloud {@link Account} and main {@link OCFile} to be handled by the instance of @@ -144,26 +179,32 @@ public class FileActivity extends SherlockFragmentActivity savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID, Long.MAX_VALUE) ); mTryShareAgain = savedInstanceState.getBoolean(KEY_TRY_SHARE_AGAIN); + getSupportActionBar().setTitle(savedInstanceState.getString(KEY_ACTION_BAR_TITLE)); } else { account = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT); mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE); - mFromNotification = getIntent().getBooleanExtra(FileActivity.EXTRA_FROM_NOTIFICATION, false); + mFromNotification = getIntent().getBooleanExtra(FileActivity.EXTRA_FROM_NOTIFICATION, + false); } - AccountUtils.updateAccountVersion(this); // best place, before any access to AccountManager or database + AccountUtils.updateAccountVersion(this); // best place, before any access to AccountManager + // or database setAccount(account, savedInstanceState != null); mOperationsServiceConnection = new OperationsServiceConnection(); - bindService(new Intent(this, OperationsService.class), mOperationsServiceConnection, Context.BIND_AUTO_CREATE); + bindService(new Intent(this, OperationsService.class), mOperationsServiceConnection, + Context.BIND_AUTO_CREATE); mDownloadServiceConnection = newTransferenceServiceConnection(); if (mDownloadServiceConnection != null) { - bindService(new Intent(this, FileDownloader.class), mDownloadServiceConnection, Context.BIND_AUTO_CREATE); + bindService(new Intent(this, FileDownloader.class), mDownloadServiceConnection, + Context.BIND_AUTO_CREATE); } mUploadServiceConnection = newTransferenceServiceConnection(); if (mUploadServiceConnection != null) { - bindService(new Intent(this, FileUploader.class), mUploadServiceConnection, Context.BIND_AUTO_CREATE); + bindService(new Intent(this, FileUploader.class), mUploadServiceConnection, + Context.BIND_AUTO_CREATE); } } @@ -240,8 +281,164 @@ public class FileActivity extends SherlockFragmentActivity super.onDestroy(); } - - + + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + // Sync the toggle state after onRestoreInstanceState has occurred. + if (mDrawerToggle != null) { + mDrawerToggle.syncState(); + if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { + getSupportActionBar().setTitle(R.string.app_name); + mDrawerToggle.setDrawerIndicatorEnabled(true); + } + } + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + if (mDrawerToggle != null) { + mDrawerToggle.onConfigurationChanged(newConfig); + } + } + + protected void initDrawer(){ + // constant settings for action bar when navigation drawer is inited + getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + + + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + // Notification Drawer + LinearLayout navigationDrawerLayout = (LinearLayout) findViewById(R.id.left_drawer); + mDrawerList = (ListView) navigationDrawerLayout.findViewById(R.id.drawer_list); + + // TODO re-enable when "Accounts" is available in Navigation Drawer +// // load Account in the Drawer Title +// // User-Icon +// ImageView userIcon = (ImageView) navigationDrawerLayout.findViewById(R.id.drawer_userIcon); +// userIcon.setImageResource(DisplayUtils.getSeasonalIconId()); +// +// // Username +// TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username); +// Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext()); +// +// if (account != null) { +// int lastAtPos = account.name.lastIndexOf("@"); +// username.setText(account.name.substring(0, lastAtPos)); +// } + + // load slide menu items + mDrawerTitles = getResources().getStringArray(R.array.drawer_items); + + // nav drawer content description from resources + mDrawerContentDescriptions = getResources(). + getStringArray(R.array.drawer_content_descriptions); + + // nav drawer items + mDrawerItems = new ArrayList(); + // adding nav drawer items to array + // TODO re-enable when "Accounts" is available in Navigation Drawer + // Accounts + // mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], + // mDrawerContentDescriptions[0])); + // All Files + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0])); + + // TODO Enable when "On Device" is recovered + // On Device + //mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], + // mDrawerContentDescriptions[2])); + + // Settings + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1])); + // Logs + if (BuildConfig.DEBUG) { + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], + mDrawerContentDescriptions[2])); + } + + // setting the nav drawer list adapter + mNavigationDrawerAdapter = new NavigationDrawerListAdapter(getApplicationContext(), this, + mDrawerItems); + mDrawerList.setAdapter(mNavigationDrawerAdapter); + + mDrawerToggle = new ActionBarDrawerToggle( + this, + mDrawerLayout, + R.drawable.ic_drawer, + R.string.app_name, + R.string.drawer_close) { + + /** Called when a drawer has settled in a completely closed state. */ + public void onDrawerClosed(View view) { + super.onDrawerClosed(view); + updateActionBarTitleAndHomeButton(null); + invalidateOptionsMenu(); + } + + /** Called when a drawer has settled in a completely open state. */ + public void onDrawerOpened(View drawerView) { + super.onDrawerOpened(drawerView); + getSupportActionBar().setTitle(R.string.app_name); + mDrawerToggle.setDrawerIndicatorEnabled(true); + invalidateOptionsMenu(); + } + }; + + //mDrawerToggle.setDrawerIndicatorEnabled(true); + // Set the list's click listener + mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); + + // Set the drawer toggle as the DrawerListener + mDrawerLayout.setDrawerListener(mDrawerToggle); + } + + /** + * Updates title bar and home buttons (state and icon). + * + * Assumes that navigation drawer is NOT visible. + */ + protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) { + String title = getString(R.string.default_display_name_for_root_folder); // default + boolean inRoot; + + /// choose the appropiate title + if (chosenFile == null) { + // mFile determines the title + inRoot = (mFile == null || mFile.getParentId() == 0); + if (!inRoot) { + title = mFile.getFileName(); + } + + } else if (chosenFile.getParentId() != 0){ + // chosenFile determines the title, instead of mFile + title = chosenFile.getFileName(); + inRoot = false; + + } else{ + inRoot = true; + } + + /// set the chosen title + ActionBar actionBar = getSupportActionBar(); + actionBar.setTitle(title); + /// also as content description + View actionBarTitleView = getWindow().getDecorView().findViewById( + getResources().getIdentifier("action_bar_title", "id", "android") + ); + if (actionBarTitleView != null) { // it's null in Android 2.x + actionBarTitleView.setContentDescription(title); + } + + /// set home button properties + mDrawerToggle.setDrawerIndicatorEnabled(inRoot); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowTitleEnabled(true); + + } + + /** * Sets and validates the ownCloud {@link Account} associated to the Activity. * @@ -255,7 +452,8 @@ public class FileActivity extends SherlockFragmentActivity protected void setAccount(Account account, boolean savedAccount) { Account oldAccount = mAccount; boolean validAccount = - (account != null && AccountUtils.setCurrentOwnCloudAccount(getApplicationContext(), account.name)); + (account != null && AccountUtils.setCurrentOwnCloudAccount(getApplicationContext(), + account.name)); if (validAccount) { mAccount = account; mAccountWasSet = true; @@ -298,13 +496,13 @@ public class FileActivity extends SherlockFragmentActivity */ private void createFirstAccount() { AccountManager am = AccountManager.get(getApplicationContext()); - am.addAccount(MainApp.getAccountType(), - null, - null, - null, - this, - new AccountCreationCallback(), - null); + am.addAccount(MainApp.getAccountType(), + null, + null, + null, + this, + new AccountCreationCallback(), + null); } @@ -318,6 +516,7 @@ public class FileActivity extends SherlockFragmentActivity outState.putBoolean(FileActivity.EXTRA_FROM_NOTIFICATION, mFromNotification); outState.putLong(KEY_WAITING_FOR_OP_ID, mFileOperationsHelper.getOpIdWaitingFor()); outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain); + outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString()); } @@ -342,9 +541,11 @@ public class FileActivity extends SherlockFragmentActivity /** - * Getter for the ownCloud {@link Account} where the main {@link OCFile} handled by the activity is located. + * Getter for the ownCloud {@link Account} where the main {@link OCFile} handled by the activity + * is located. * - * @return OwnCloud {@link Account} where the main {@link OCFile} handled by the activity is located. + * @return OwnCloud {@link Account} where the main {@link OCFile} handled by the activity + * is located. */ public Account getAccount() { return mAccount; @@ -464,7 +665,8 @@ public class FileActivity extends SherlockFragmentActivity */ @Override public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) { - Log_OC.d(TAG, "Received result of operation in FileActivity - common behaviour for all the FileActivities "); + Log_OC.d(TAG, "Received result of operation in FileActivity - common behaviour for all the " + + "FileActivities "); mFileOperationsHelper.setOpIdWaitingFor(Long.MAX_VALUE); @@ -542,15 +744,16 @@ public class FileActivity extends SherlockFragmentActivity } - private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { + private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, + RemoteOperationResult result) { dismissLoadingDialog(); if (result.isSuccess()){ updateFileFromDB(); } else { - Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), - Toast.LENGTH_LONG); + Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, + operation, getResources()), Toast.LENGTH_LONG); t.show(); } } @@ -559,8 +762,8 @@ public class FileActivity extends SherlockFragmentActivity SynchronizeFolderOperation operation, RemoteOperationResult result ) { if (!result.isSuccess() && result.getCode() != ResultCode.CANCELLED){ - Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), - Toast.LENGTH_LONG); + Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, + operation, getResources()), Toast.LENGTH_LONG); t.show(); } } @@ -602,7 +805,8 @@ public class FileActivity extends SherlockFragmentActivity mOperationsServiceBinder.addOperationListener(FileActivity.this, mHandler); long waitingForOpId = mFileOperationsHelper.getOpIdWaitingFor(); if (waitingForOpId <= Integer.MAX_VALUE) { - boolean wait = mOperationsServiceBinder.dispatchResultIfFinished((int)waitingForOpId, this); + boolean wait = mOperationsServiceBinder.dispatchResultIfFinished((int)waitingForOpId, + this); if (!wait ) { dismissLoadingDialog(); } @@ -652,6 +856,63 @@ public class FileActivity extends SherlockFragmentActivity public FileUploaderBinder getFileUploaderBinder() { return mUploaderBinder; } - - + + + public void restart(){ + Intent i = new Intent(this, FileDisplayActivity.class); + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } + +// TODO re-enable when "Accounts" is available in Navigation Drawer +// public void closeDrawer() { +// mDrawerLayout.closeDrawers(); +// } + + public void allFilesOption(){ + restart(); + } + + private class DrawerItemClickListener implements ListView.OnItemClickListener { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + // TODO re-enable when "Accounts" is available in Navigation Drawer +// if (mShowAccounts && position > 0){ +// position = position - 1; +// } + switch (position){ + // TODO re-enable when "Accounts" is available in Navigation Drawer +// case 0: // Accounts +// mShowAccounts = !mShowAccounts; +// mNavigationDrawerAdapter.setShowAccounts(mShowAccounts); +// mNavigationDrawerAdapter.notifyDataSetChanged(); +// break; + + case 0: // All Files + allFilesOption(); + mDrawerLayout.closeDrawers(); + break; + + // TODO Enable when "On Device" is recovered ? +// case 2: +// MainApp.showOnlyFilesOnDevice(true); +// mDrawerLayout.closeDrawers(); +// break; + + case 1: // Settings + Intent settingsIntent = new Intent(getApplicationContext(), + Preferences.class); + startActivity(settingsIntent); + mDrawerLayout.closeDrawers(); + break; + + case 2: // Logs + Intent loggerIntent = new Intent(getApplicationContext(), + LogHistoryActivity.class); + startActivity(loggerIntent); + mDrawerLayout.closeDrawers(); + break; + } + } + } } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 3061ff44..b1c0ffbe 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -22,8 +22,6 @@ package com.owncloud.android.ui.activity; -import java.io.File; - import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; @@ -50,19 +48,15 @@ import android.provider.OpenableColumns; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.GravityCompat; +import android.support.v7.app.ActionBar; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; +import android.view.Window; import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.ActionBar.OnNavigationListener; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.Window; -import com.owncloud.android.BuildConfig; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; @@ -83,10 +77,10 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.MoveFileOperation; +import com.owncloud.android.operations.RefreshFolderOperation; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; -import com.owncloud.android.operations.RefreshFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.syncadapter.FileSyncAdapter; @@ -107,16 +101,16 @@ import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.UriUtils; +import java.io.File; + /** * Displays, what files the user has available in his ownCloud. */ -public class FileDisplayActivity extends HookActivity implements -FileFragment.ContainerActivity, OnNavigationListener, -OnSslUntrustedCertListener, OnEnforceableRefreshListener { - - private ArrayAdapter mDirectories; +public class FileDisplayActivity extends HookActivity + implements FileFragment.ContainerActivity, + OnSslUntrustedCertListener, OnEnforceableRefreshListener { private SyncBroadcastReceiver mSyncBroadcastReceiver; private UploadFinishReceiver mUploadFinishReceiver; @@ -151,15 +145,16 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private static String DIALOG_UPLOAD_SOURCE = "DIALOG_UPLOAD_SOURCE"; private static String DIALOG_CERT_NOT_SAVED = "DIALOG_CERT_NOT_SAVED"; - private OCFile mWaitingToSend; + @Override protected void onCreate(Bundle savedInstanceState) { Log_OC.v(TAG, "onCreate() start"); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); - super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid + super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account + // is valid /// grant that FileObserverService is watching favorite files if (savedInstanceState == null) { @@ -169,9 +164,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { /// Load of saved instance state if(savedInstanceState != null) { - mWaitingToPreview = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW); + mWaitingToPreview = (OCFile) savedInstanceState.getParcelable( + FileDisplayActivity.KEY_WAITING_TO_PREVIEW); mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS); - mWaitingToSend = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND); + mWaitingToSend = (OCFile) savedInstanceState.getParcelable( + FileDisplayActivity.KEY_WAITING_TO_SEND); } else { mWaitingToPreview = null; @@ -182,7 +179,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { /// USER INTERFACE // Inflate and set the layout view - setContentView(R.layout.files); + setContentView(R.layout.files); + + // Navigation Drawer + initDrawer(); + mDualPane = getResources().getBoolean(R.bool.large_land_layout); mLeftFragmentContainer = findViewById(R.id.left_fragment_container); mRightFragmentContainer = findViewById(R.id.right_fragment_container); @@ -191,15 +192,19 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } // Action bar setup - mDirectories = new CustomArrayAdapter(this, R.layout.sherlock_spinner_dropdown_item); - getSupportActionBar().setHomeButtonEnabled(true); // mandatory since Android ICS, according to the official documentation - setSupportProgressBarIndeterminateVisibility(mSyncInProgress /*|| mRefreshSharesInProgress*/); // always AFTER setContentView(...) ; to work around bug in its implementation + getSupportActionBar().setHomeButtonEnabled(true); // mandatory since Android ICS, + // according to the official + // documentation + + setSupportProgressBarIndeterminateVisibility(mSyncInProgress + /*|| mRefreshSharesInProgress*/); + // always AFTER setContentView(...) ; to work around bug in its implementation setBackgroundText(); Log_OC.v(TAG, "onCreate() end"); } - + @Override protected void onStart() { Log_OC.v(TAG, "onStart() start"); @@ -222,19 +227,22 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { protected void onAccountSet(boolean stateWasRecovered) { super.onAccountSet(stateWasRecovered); if (getAccount() != null) { - /// Check whether the 'main' OCFile handled by the Activity is contained in the current Account + /// Check whether the 'main' OCFile handled by the Activity is contained in the + // current Account OCFile file = getFile(); // get parent from path String parentPath = ""; if (file != null) { if (file.isDown() && file.getLastSyncDateForProperties() == 0) { - // upload in progress - right now, files are not inserted in the local cache until the upload is successful - // get parent from path - parentPath = file.getRemotePath().substring(0, file.getRemotePath().lastIndexOf(file.getFileName())); + // upload in progress - right now, files are not inserted in the local + // cache until the upload is successful get parent from path + parentPath = file.getRemotePath().substring(0, + file.getRemotePath().lastIndexOf(file.getFileName())); if (getStorageManager().getFileByPath(parentPath) == null) file = null; // not able to know the directory where the file is uploading } else { - file = getStorageManager().getFileByPath(file.getRemotePath()); // currentDir = null if not in the current Account + file = getStorageManager().getFileByPath(file.getRemotePath()); + // currentDir = null if not in the current Account } } if (file == null) { @@ -242,7 +250,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { file = getStorageManager().getFileByPath(OCFile.ROOT_PATH); // never returns null } setFile(file); - setNavigationListWithFolder(file); if (!stateWasRecovered) { Log_OC.d(TAG, "Initializing Fragments in onAccountChanged.."); @@ -253,28 +260,12 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } else { updateFragmentsVisibility(!file.isFolder()); - updateNavigationElementsInActionBar(file.isFolder() ? null : file); + updateActionBarTitleAndHomeButton(file.isFolder() ? null : file); } } } - private void setNavigationListWithFolder(OCFile file) { - mDirectories.clear(); - OCFile fileIt = file; - String parentPath; - while(fileIt != null && fileIt.getFileName() != OCFile.ROOT_PATH) { - if (fileIt.isFolder()) { - mDirectories.add(fileIt.getFileName()); - } - // get parent from path - parentPath = fileIt.getRemotePath().substring(0, fileIt.getRemotePath().lastIndexOf(fileIt.getFileName())); - fileIt = getStorageManager().getFileByPath(parentPath); - } - mDirectories.add(OCFile.PATH_SEPARATOR); - } - - private void createMinFragments() { OCFileListFragment listOfFiles = new OCFileListFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); @@ -287,7 +278,9 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { /// First fragment OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { - listOfFiles.listDirectory(getCurrentDir()); + listOfFiles.listDirectory(getCurrentDir()); + // TODO Enable when "On Device" is recovered + // listOfFiles.listDirectory(getCurrentDir(), MainApp.getOnlyOnDevice()); } else { Log_OC.e(TAG, "Still have a chance to lose the initializacion of list fragment >("); } @@ -298,7 +291,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { if (secondFragment != null) { setSecondFragment(secondFragment); updateFragmentsVisibility(true); - updateNavigationElementsInActionBar(file); + updateActionBarTitleAndHomeButton(file); } else { cleanSecondFragment(); @@ -321,9 +314,12 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { if (file.isDown() && PreviewMediaFragment.canBePreviewed(file) && file.getLastSyncDateForProperties() > 0 // temporal fix ) { - int startPlaybackPosition = getIntent().getIntExtra(PreviewVideoActivity.EXTRA_START_POSITION, 0); - boolean autoplay = getIntent().getBooleanExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, true); - secondFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition, autoplay); + int startPlaybackPosition = + getIntent().getIntExtra(PreviewVideoActivity.EXTRA_START_POSITION, 0); + boolean autoplay = + getIntent().getBooleanExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, true); + secondFragment = new PreviewMediaFragment(file, getAccount(), + startPlaybackPosition, autoplay); } else { secondFragment = new FileDetailFragment(file, getAccount()); @@ -377,7 +373,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private OCFileListFragment getListOfFilesFragment() { - Fragment listOfFiles = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES); + Fragment listOfFiles = getSupportFragmentManager().findFragmentByTag( + FileDisplayActivity.TAG_LIST_OF_FILES); if (listOfFiles != null) { return (OCFileListFragment)listOfFiles; } @@ -386,7 +383,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } public FileFragment getSecondFragment() { - Fragment second = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_SECOND_FRAGMENT); + Fragment second = getSupportFragmentManager().findFragmentByTag( + FileDisplayActivity.TAG_SECOND_FRAGMENT); if (second != null) { return (FileFragment)second; } @@ -401,23 +399,28 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { tr.commit(); } updateFragmentsVisibility(false); - updateNavigationElementsInActionBar(null); + updateActionBarTitleAndHomeButton(null); } protected void refreshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); - if (fileListFragment != null) { + if (fileListFragment != null) { fileListFragment.listDirectory(); + // TODO Enable when "On Device" is recovered ? + // fileListFragment.listDirectory(MainApp.getOnlyOnDevice()); } } - protected void refreshSecondFragment(String downloadEvent, String downloadedRemotePath, boolean success) { + protected void refreshSecondFragment(String downloadEvent, String downloadedRemotePath, + boolean success) { FileFragment secondFragment = getSecondFragment(); - boolean waitedPreview = (mWaitingToPreview != null && mWaitingToPreview.getRemotePath().equals(downloadedRemotePath)); + boolean waitedPreview = (mWaitingToPreview != null && + mWaitingToPreview.getRemotePath().equals(downloadedRemotePath)); if (secondFragment != null && secondFragment instanceof FileDetailFragment) { FileDetailFragment detailsFragment = (FileDetailFragment) secondFragment; OCFile fileInFragment = detailsFragment.getFile(); - if (fileInFragment != null && !downloadedRemotePath.equals(fileInFragment.getRemotePath())) { + if (fileInFragment != null && + !downloadedRemotePath.equals(fileInFragment.getRemotePath())) { // the user browsed to other file ; forget the automatic preview mWaitingToPreview = null; @@ -431,7 +434,9 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { boolean detailsFragmentChanged = false; if (waitedPreview) { if (success) { - mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId()); // update the file from database, for the local storage path + mWaitingToPreview = getStorageManager().getFileById( + mWaitingToPreview.getFileId()); // update the file from database, + // for the local storage path if (PreviewMediaFragment.canBePreviewed(mWaitingToPreview)) { startMediaPreview(mWaitingToPreview, 0, true); detailsFragmentChanged = true; @@ -450,90 +455,86 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override public boolean onPrepareOptionsMenu(Menu menu) { - if (BuildConfig.DEBUG) { - menu.findItem(R.id.action_logger).setVisible(true); - } else { - menu.findItem(R.id.action_logger).setVisible(false); - } + 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); + return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getSherlock().getMenuInflater(); + MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; } + @Override 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); + 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 R.id.action_settings: { - Intent settingsIntent = new Intent(this, Preferences.class); - startActivity(settingsIntent); - break; - } - case R.id.action_logger: { - Intent loggerIntent = new Intent(getApplicationContext(),LogHistoryActivity.class); - startActivity(loggerIntent); - break; - } - case android.R.id.home: { - FileFragment second = getSecondFragment(); - OCFile currentDir = getCurrentDir(); - if((currentDir != null && currentDir.getParentId() != 0) || - (second != null && second.getFile() != null)) { - onBackPressed(); - + break; } - break; - } - case R.id.action_sort: { - SharedPreferences appPreferences = PreferenceManager - .getDefaultSharedPreferences(this); - - // Read sorting order, default to sort by name ascending - Integer sortOrder = appPreferences - .getInt("sortOrder", FileStorageUtils.SORT_NAME); - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.actionbar_sort_title) - .setSingleChoiceItems(R.array.actionbar_sortby, sortOrder , new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - - switch (which){ - case 0: - sortByName(true); - break; - case 1: - sortByDate(false); - break; - - } - - dialog.dismiss(); - + case android.R.id.home: { + FileFragment second = getSecondFragment(); + OCFile currentDir = getCurrentDir(); + if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { + mDrawerLayout.closeDrawer(GravityCompat.START); + } else if((currentDir != null && currentDir.getParentId() != 0) || + (second != null && second.getFile() != null)) { + onBackPressed(); + + } else { + mDrawerLayout.openDrawer(GravityCompat.START); } - }); - builder.create().show(); - break; - } + break; + } + case R.id.action_sort: { + SharedPreferences appPreferences = PreferenceManager + .getDefaultSharedPreferences(this); + + // Read sorting order, default to sort by name ascending + Integer sortOrder = appPreferences + .getInt("sortOrder", FileStorageUtils.SORT_NAME); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.actionbar_sort_title) + .setSingleChoiceItems(R.array.actionbar_sortby, sortOrder , + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + switch (which){ + case 0: + sortByName(true); + break; + case 1: + sortByDate(false); + break; + } + + dialog.dismiss(); + } + }); + builder.create().show(); + break; + } default: retval = super.onOptionsItemSelected(item); } @@ -544,16 +545,19 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { Log_OC.d(TAG, "Got to start sync"); if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) { Log_OC.d(TAG, "Canceling all syncs for " + MainApp.getAuthority()); - ContentResolver.cancelSync(null, MainApp.getAuthority()); // cancel the current synchronizations of any ownCloud account + ContentResolver.cancelSync(null, MainApp.getAuthority()); + // cancel the current synchronizations of any ownCloud account Bundle bundle = new Bundle(); bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); - Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority()); + Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + + MainApp.getAuthority()); ContentResolver.requestSync( getAccount(), MainApp.getAuthority(), bundle); } else { - Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority() + " with new API"); + Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + + MainApp.getAuthority() + " with new API"); SyncRequest.Builder builder = new SyncRequest.Builder(); builder.setSyncAdapter(getAccount(), MainApp.getAuthority()); builder.setExpedited(true); @@ -569,29 +573,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } } - - @Override - public boolean onNavigationItemSelected(int itemPosition, long itemId) { - if (itemPosition != 0) { - String targetPath = ""; - for (int i=itemPosition; i < mDirectories.getCount() - 1; i++) { - targetPath = mDirectories.getItem(i) + OCFile.PATH_SEPARATOR + targetPath; - } - targetPath = OCFile.PATH_SEPARATOR + targetPath; - OCFile targetFolder = getStorageManager().getFileByPath(targetPath); - if (targetFolder != null) { - browseTo(targetFolder); - } - - // the next operation triggers a new call to this method, but it's necessary to - // ensure that the name exposed in the action bar is the current directory when the - // user selected it in the navigation list - if (getSupportActionBar().getNavigationMode() == ActionBar.NAVIGATION_MODE_LIST && itemPosition != 0) - getSupportActionBar().setSelectedNavigationItem(0); - } - return true; - } - /** * Called, when the user selected something for uploading * @@ -600,7 +581,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { + if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || + resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { //getClipData is only supported on api level 16+, Jelly Bean if (data.getData() == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){ for( int i = 0; i < data.getClipData().getItemCount(); i++){ @@ -611,7 +593,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { }else { requestSimpleUpload(data, resultCode); } - } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { + } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK || + resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { requestMultipleUpload(data, resultCode); } else if (requestCode == ACTION_MOVE_FILES && resultCode == RESULT_OK){ @@ -640,9 +623,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { String[] remotePaths = new String[filePaths.length]; String remotePathBase = ""; - for (int j = mDirectories.getCount() - 2; j >= 0; --j) { - remotePathBase += OCFile.PATH_SEPARATOR + mDirectories.getItem(j); - } if (!remotePathBase.endsWith(OCFile.PATH_SEPARATOR)) remotePathBase += OCFile.PATH_SEPARATOR; for (int j = 0; j< remotePaths.length; j++) { @@ -660,7 +640,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } else { Log_OC.d(TAG, "User clicked on 'Update' with no selection"); - Toast t = Toast.makeText(this, getString(R.string.filedisplay_no_file_selected), Toast.LENGTH_LONG); + Toast t = Toast.makeText(this, getString(R.string.filedisplay_no_file_selected), + Toast.LENGTH_LONG); t.show(); return; } @@ -685,13 +666,15 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { filePath = fileManagerString; } catch (Exception e) { - Log_OC.e(TAG, "Unexpected exception when trying to read the result of Intent.ACTION_GET_CONTENT", e); + Log_OC.e(TAG, "Unexpected exception when trying to read the result of " + + "Intent.ACTION_GET_CONTENT", e); } finally { if (filePath == null) { Log_OC.e(TAG, "Couldn't resolve path to file"); Toast t = Toast.makeText( - this, getString(R.string.filedisplay_unexpected_bad_get_content), Toast.LENGTH_LONG + this, getString(R.string.filedisplay_unexpected_bad_get_content), + Toast.LENGTH_LONG ); t.show(); return; @@ -707,7 +690,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { Cursor cursor = getContentResolver().query(Uri.parse(filePath), null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { - String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); + String displayName = cursor.getString(cursor.getColumnIndex( + OpenableColumns.DISPLAY_NAME)); Log_OC.v(TAG, "Display Name: " + displayName ); displayName.replace(File.separatorChar, '_'); @@ -749,15 +733,12 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { public void onBackPressed() { OCFileListFragment listOfFiles = getListOfFilesFragment(); if (mDualPane || getSecondFragment() == null) { + if (getFile() != null && getFile().getParentId() == 0) { + finish(); + return; + } if (listOfFiles != null) { // should never be null, indeed - if (mDirectories.getCount() <= 1) { - finish(); - return; - } - int levelsUp = listOfFiles.onBrowseUp(); - for (int i=0; i < levelsUp && mDirectories.getCount() > 1 ; i++) { - popDirname(); - } + listOfFiles.onBrowseUp(); } } if (listOfFiles != null) { // should never be null, indeed @@ -769,12 +750,14 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override protected void onSaveInstanceState(Bundle outState) { - // responsibility of restore is preferred in onCreate() before than in onRestoreInstanceState when there are Fragments involved + // responsibility of restore is preferred in onCreate() before than in + // onRestoreInstanceState when there are Fragments involved Log_OC.v(TAG, "onSaveInstanceState() start"); super.onSaveInstanceState(outState); outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview); outState.putBoolean(FileDisplayActivity.KEY_SYNC_IN_PROGRESS, mSyncInProgress); - //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, mRefreshSharesInProgress); + //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, + // mRefreshSharesInProgress); outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND, mWaitingToSend); Log_OC.v(TAG, "onSaveInstanceState() end"); @@ -787,6 +770,10 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { Log_OC.v(TAG, "onResume() start"); super.onResume(); + // refresh Navigation Drawer account list + mNavigationDrawerAdapter.updateAccountList(); + + // refresh list of files refreshListOfFilesFragment(); @@ -798,7 +785,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED); mSyncBroadcastReceiver = new SyncBroadcastReceiver(); registerReceiver(mSyncBroadcastReceiver, syncIntentFilter); - //LocalBroadcastManager.getInstance(this).registerReceiver(mSyncBroadcastReceiver, syncIntentFilter); + //LocalBroadcastManager.getInstance(this).registerReceiver(mSyncBroadcastReceiver, + // syncIntentFilter); // Listen for upload messages IntentFilter uploadIntentFilter = new IntentFilter(FileUploader.getUploadFinishMessage()); @@ -806,7 +794,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { registerReceiver(mUploadFinishReceiver, uploadIntentFilter); // Listen for download messages - IntentFilter downloadIntentFilter = new IntentFilter(FileDownloader.getDownloadAddedMessage()); + IntentFilter downloadIntentFilter = new IntentFilter( + FileDownloader.getDownloadAddedMessage()); downloadIntentFilter.addAction(FileDownloader.getDownloadFinishMessage()); mDownloadFinishReceiver = new DownloadFinishReceiver(); registerReceiver(mDownloadFinishReceiver, downloadIntentFilter); @@ -836,63 +825,6 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { Log_OC.v(TAG, "onPause() end"); } - /** - * Pushes a directory to the drop down list - * @param directory to push - * @throws IllegalArgumentException If the {@link OCFile#isFolder()} returns false. - */ - public void pushDirname(OCFile directory) { - if(!directory.isFolder()){ - throw new IllegalArgumentException("Only directories may be pushed!"); - } - mDirectories.insert(directory.getFileName(), 0); - setFile(directory); - } - - /** - * Pops a directory name from the drop down list - * @return True, unless the stack is empty - */ - public boolean popDirname() { - mDirectories.remove(mDirectories.getItem(0)); - return !mDirectories.isEmpty(); - } - - // Custom array adapter to override text colors - private class CustomArrayAdapter extends ArrayAdapter { - - public CustomArrayAdapter(FileDisplayActivity ctx, int view) { - super(ctx, view); - } - - public View getView(int position, View convertView, ViewGroup parent) { - View v = super.getView(position, convertView, parent); - - ((TextView) v).setTextColor(getResources().getColorStateList( - android.R.color.white)); - - fixRoot((TextView) v ); - return v; - } - - public View getDropDownView(int position, View convertView, - ViewGroup parent) { - View v = super.getDropDownView(position, convertView, parent); - - ((TextView) v).setTextColor(getResources().getColorStateList( - android.R.color.white)); - - fixRoot((TextView) v ); - return v; - } - - private void fixRoot(TextView v) { - if (v.getText().equals(OCFile.PATH_SEPARATOR)) { - v.setText(R.string.default_display_name_for_root_folder); - } - } - - } private class SyncBroadcastReceiver extends BroadcastReceiver { @@ -905,9 +837,13 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { 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); + 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) { @@ -915,34 +851,46 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { mSyncInProgress = true; } else { - OCFile currentFile = (getFile() == null) ? null : getStorageManager().getFileByPath(getFile().getRemotePath()); - OCFile currentDir = (getCurrentDir() == null) ? null : getStorageManager().getFileByPath(getCurrentDir().getRemotePath()); + OCFile currentFile = (getFile() == null) ? null : + getStorageManager().getFileByPath(getFile().getRemotePath()); + OCFile currentDir = (getCurrentDir() == null) ? null : + getStorageManager().getFileByPath(getCurrentDir().getRemotePath()); if (currentDir == null) { // current folder was removed from the server Toast.makeText( FileDisplayActivity.this, - String.format(getString(R.string.sync_current_folder_was_removed), mDirectories.getItem(0)), + String.format( + getString(R.string. + sync_current_folder_was_removed), + synchFolderRemotePath), Toast.LENGTH_LONG) .show(); browseToRoot(); } else { if (currentFile == null && !getFile().isFolder()) { - // currently selected file was removed in the server, and now we know it + // currently selected file was removed in the server, and now we + // know it cleanSecondFragment(); currentFile = currentDir; } - if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) { + if (synchFolderRemotePath != null && + currentDir.getRemotePath().equals(synchFolderRemotePath)) { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { - fileListFragment.listDirectory(currentDir); + fileListFragment.listDirectory(); + // TODO Enable when "On Device" is recovered ? + // fileListFragment.listDirectory(currentDir, + // MainApp.getOnlyOnDevice()); } } setFile(currentFile); } - mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event)); + 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) && @@ -985,14 +933,16 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } removeStickyBroadcast(intent); Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress); - setSupportProgressBarIndeterminateVisibility(mSyncInProgress /*|| mRefreshSharesInProgress*/); + setSupportProgressBarIndeterminateVisibility(mSyncInProgress + /*|| mRefreshSharesInProgress*/); setBackgroundText(); } if (synchResult != null) { - if (synchResult.getCode().equals(RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED)) { + if (synchResult.getCode().equals( + RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED)) { mLastSslUntrustedServerResult = synchResult; } } @@ -1045,7 +995,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { refreshListOfFilesFragment(); } - boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT, false); + boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT, + false); boolean renamedInUpload = getFile().getRemotePath(). equals(intent.getStringExtra(FileUploader.EXTRA_OLD_REMOTE_PATH)); boolean sameFile = getFile().getRemotePath().equals(uploadedRemotePath) || @@ -1104,11 +1055,13 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { public void onReceive(Context context, Intent intent) { try { boolean sameAccount = isSameAccount(context, intent); - String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH); + String downloadedRemotePath = + intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH); boolean isDescendant = isDescendant(downloadedRemotePath); if (sameAccount && isDescendant) { - String linkedToRemotePath = intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH); + String linkedToRemotePath = + intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH); if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) { //Log_OC.v(TAG, "refresh #" + ++refreshCounter); refreshListOfFilesFragment(); @@ -1121,7 +1074,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } if (mWaitingToSend != null) { - mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); + mWaitingToSend = + getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); if (mWaitingToSend.isDown()) { sendDownloadedFile(); } @@ -1153,7 +1107,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private boolean isSameAccount(Context context, Intent intent) { String accountName = intent.getStringExtra(FileDownloader.ACCOUNT_NAME); - return (accountName != null && getAccount() != null && accountName.equals(getAccount().name)); + return (accountName != null && getAccount() != null && + accountName.equals(getAccount().name)); } } @@ -1161,32 +1116,15 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { public void browseToRoot() { OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { // should never be null, indeed - while (mDirectories.getCount() > 1) { - popDirname(); - } OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH); listOfFiles.listDirectory(root); + // TODO Enable when "On Device" is recovered ? + // listOfFiles.listDirectory(root, MainApp.getOnlyOnDevice()); setFile(listOfFiles.getCurrentFile()); startSyncFolderOperation(root, false); } cleanSecondFragment(); - } - - - public void browseTo(OCFile folder) { - if (folder == null || !folder.isFolder()) { - throw new IllegalArgumentException("Trying to browse to invalid folder " + folder); - } - OCFileListFragment listOfFiles = getListOfFilesFragment(); - if (listOfFiles != null) { - setNavigationListWithFolder(folder); - listOfFiles.listDirectory(folder); - setFile(listOfFiles.getCurrentFile()); - startSyncFolderOperation(folder, false); - } else { - Log_OC.e(TAG, "Unexpected null when accessing list fragment"); - } - cleanSecondFragment(); + } @@ -1197,12 +1135,10 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { */ @Override public void onBrowsedDownTo(OCFile directory) { - pushDirname(directory); + setFile(directory); cleanSecondFragment(); - // Sync Folder startSyncFolderOperation(directory, false); - } /** @@ -1216,47 +1152,20 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { Fragment detailFragment = new FileDetailFragment(file, getAccount()); setSecondFragment(detailFragment); updateFragmentsVisibility(true); - updateNavigationElementsInActionBar(file); + updateActionBarTitleAndHomeButton(file); setFile(file); } - - /** - * TODO - */ - private void updateNavigationElementsInActionBar(OCFile chosenFile) { - ActionBar actionBar = getSupportActionBar(); - - // For adding content description tag to a title field in the action bar - int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android"); - - if (chosenFile == null || mDualPane) { - // only list of files - set for browsing through folders - OCFile currentDir = getCurrentDir(); - boolean noRoot = (currentDir != null && currentDir.getParentId() != 0); - actionBar.setDisplayHomeAsUpEnabled(noRoot); - actionBar.setDisplayShowTitleEnabled(!noRoot); - if (!noRoot) { - actionBar.setTitle(getString(R.string.default_display_name_for_root_folder)); - View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId); - if (actionBarTitleView != null) { // it's null in Android 2.x - actionBarTitleView.setContentDescription(getString(R.string.default_display_name_for_root_folder)); - } - } - actionBar.setNavigationMode(!noRoot ? ActionBar.NAVIGATION_MODE_STANDARD : ActionBar.NAVIGATION_MODE_LIST); - actionBar.setListNavigationCallbacks(mDirectories, this); // assuming mDirectories is updated + @Override + protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) { + if (mDualPane) { + // in dual pane mode, keep the focus of title an action bar in the current folder + super.updateActionBarTitleAndHomeButton(getCurrentDir()); } else { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowTitleEnabled(true); - actionBar.setTitle(chosenFile.getFileName()); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); - View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId); - if (actionBarTitleView != null) { // it's null in Android 2.x - getWindow().getDecorView().findViewById(actionBarTitleId). - setContentDescription(chosenFile.getFileName()); - } + super.updateActionBarTitleAndHomeButton(chosenFile); } + } @@ -1270,27 +1179,34 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override public void onServiceConnected(ComponentName component, IBinder service) { - if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) { + if (component.equals(new ComponentName( + FileDisplayActivity.this, FileDownloader.class))) { Log_OC.d(TAG, "Download service connected"); mDownloaderBinder = (FileDownloaderBinder) service; if (mWaitingToPreview != null) if (getStorageManager() != null) { - mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId()); // update the file + // update the file + mWaitingToPreview = + getStorageManager().getFileById(mWaitingToPreview.getFileId()); if (!mWaitingToPreview.isDown()) { requestForDownload(); } } - } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) { + } else if (component.equals(new ComponentName(FileDisplayActivity.this, + FileUploader.class))) { Log_OC.d(TAG, "Upload service connected"); mUploaderBinder = (FileUploaderBinder) service; } else { return; } - // a new chance to get the mDownloadBinder through getFileDownloadBinder() - THIS IS A MESS + // a new chance to get the mDownloadBinder through + // getFileDownloadBinder() - THIS IS A MESS OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { listOfFiles.listDirectory(); + // TODO Enable when "On Device" is recovered ? + // listOfFiles.listDirectory(MainApp.getOnlyOnDevice()); } FileFragment secondFragment = getSecondFragment(); if (secondFragment != null && secondFragment instanceof FileDetailFragment) { @@ -1302,10 +1218,12 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @Override public void onServiceDisconnected(ComponentName component) { - if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) { + if (component.equals(new ComponentName(FileDisplayActivity.this, + FileDownloader.class))) { Log_OC.d(TAG, "Download service disconnected"); mDownloaderBinder = null; - } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) { + } else if (component.equals(new ComponentName(FileDisplayActivity.this, + FileUploader.class))) { Log_OC.d(TAG, "Upload service disconnected"); mUploaderBinder = null; } @@ -1367,7 +1285,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } - private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) { + private void onCreateShareOperationFinish(CreateShareOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); refreshListOfFilesFragment(); @@ -1375,7 +1294,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } - private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { + private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); refreshListOfFilesFragment(); @@ -1404,16 +1324,18 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } /** - * Updates the view associated to the activity after the finish of an operation trying to remove a - * file. + * Updates the view associated to the activity after the finish of an operation trying to + * remove a file. * * @param operation Removal operation performed. * @param result Result of the removal. */ - private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { + private void onRemoveFileOperationFinish(RemoveFileOperation operation, + RemoteOperationResult result) { dismissLoadingDialog(); - Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast msg = Toast.makeText(this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), Toast.LENGTH_LONG); msg.show(); @@ -1447,7 +1369,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { * @param operation Move operation performed. * @param result Result of the move operation. */ - private void onMoveFileOperationFinish(MoveFileOperation operation, RemoteOperationResult result) { + private void onMoveFileOperationFinish(MoveFileOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { dismissLoadingDialog(); refreshListOfFilesFragment(); @@ -1467,23 +1390,26 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { /** - * Updates the view associated to the activity after the finish of an operation trying to rename a - * file. + * Updates the view associated to the activity after the finish of an operation trying to rename + * a file. * * @param operation Renaming operation performed. * @param result Result of the renaming. */ - private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) { + private void onRenameFileOperationFinish(RenameFileOperation operation, + RemoteOperationResult result) { dismissLoadingDialog(); OCFile renamedFile = operation.getFile(); if (result.isSuccess()) { FileFragment details = getSecondFragment(); if (details != null) { - if (details instanceof FileDetailFragment && renamedFile.equals(details.getFile()) ) { + if (details instanceof FileDetailFragment && + renamedFile.equals(details.getFile()) ) { ((FileDetailFragment) details).updateFileDetails(renamedFile, getAccount()); showDetails(renamedFile); - } else if (details instanceof PreviewMediaFragment && renamedFile.equals(details.getFile())) { + } else if (details instanceof PreviewMediaFragment && + renamedFile.equals(details.getFile())) { ((PreviewMediaFragment) details).updateFile(renamedFile); if (PreviewMediaFragment.canBePreviewed(renamedFile)) { int position = ((PreviewMediaFragment)details).getPosition(); @@ -1494,12 +1420,13 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } } - if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())) { + if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())){ refreshListOfFilesFragment(); } } else { - Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast msg = Toast.makeText(this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), Toast.LENGTH_LONG); msg.show(); @@ -1510,7 +1437,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { } } - private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, + RemoteOperationResult result) { dismissLoadingDialog(); OCFile syncedFile = operation.getLocalFile(); if (!result.isSuccess()) { @@ -1527,20 +1455,22 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { onTransferStateChanged(syncedFile, true, true); } else { - Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), - Toast.LENGTH_LONG); + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, + operation, getResources()), Toast.LENGTH_LONG); msg.show(); } } } /** - * Updates the view associated to the activity after the finish of an operation trying create a new folder + * Updates the view associated to the activity after the finish of an operation trying create a + * new folder * * @param operation Creation operation performed. * @param result Result of the creation. */ - private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) { + private void onCreateFolderOperationFinish(CreateFolderOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { dismissLoadingDialog(); refreshListOfFilesFragment(); @@ -1566,7 +1496,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading) { refreshListOfFilesFragment(); FileFragment details = getSecondFragment(); - if (details != null && details instanceof FileDetailFragment && file.equals(details.getFile()) ) { + if (details != null && details instanceof FileDetailFragment && + file.equals(details.getFile()) ) { if (downloading || uploading) { ((FileDetailFragment)details).updateFileDetails(file, getAccount()); } else { @@ -1614,14 +1545,14 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { // perform folder synchronization RemoteOperation synchFolderOp = new RefreshFolderOperation( folder, - currentSyncTime, - false, - getFileOperationsHelper().isSharedSupported(), - ignoreETag, - getStorageManager(), - getAccount(), - getApplicationContext() - ); + currentSyncTime, + false, + getFileOperationsHelper().isSharedSupported(), + ignoreETag, + getStorageManager(), + getAccount(), + getApplicationContext() + ); synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null); setSupportProgressBarIndeterminateVisibility(true); @@ -1635,7 +1566,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { public void showUntrustedCertDialog(RemoteOperationResult result) { // Show a dialog with the certificate info SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstanceForFullSslError( - (CertificateCombinedException)result.getException()); + (CertificateCombinedException) result.getException()); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); dialog.show(ft, DIALOG_UNTRUSTED_CERT); @@ -1688,14 +1619,17 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { * Stars the preview of an already down media {@link OCFile}. * * @param file Media {@link OCFile} to preview. - * @param startPlaybackPosition Media position where the playback will be started, in milliseconds. - * @param autoplay When 'true', the playback will start without user interactions. + * @param startPlaybackPosition Media position where the playback will be started, + * in milliseconds. + * @param autoplay When 'true', the playback will start without user + * interactions. */ public void startMediaPreview(OCFile file, int startPlaybackPosition, boolean autoplay) { - Fragment mediaFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition, autoplay); + Fragment mediaFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition, + autoplay); setSecondFragment(mediaFragment); updateFragmentsVisibility(true); - updateNavigationElementsInActionBar(file); + updateActionBarTitleAndHomeButton(file); setFile(file); } @@ -1712,7 +1646,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { mWaitingToPreview = file; requestForDownload(); updateFragmentsVisibility(true); - updateNavigationElementsInActionBar(file); + updateActionBarTitleAndHomeButton(file); setFile(file); } @@ -1764,4 +1698,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { getListOfFilesFragment().sortByName(ascending); } + public void allFilesOption() { + browseToRoot(); + } } diff --git a/src/com/owncloud/android/ui/activity/FolderPickerActivity.java b/src/com/owncloud/android/ui/activity/FolderPickerActivity.java index 62299f27..a358f79e 100644 --- a/src/com/owncloud/android/ui/activity/FolderPickerActivity.java +++ b/src/com/owncloud/android/ui/activity/FolderPickerActivity.java @@ -19,12 +19,9 @@ package com.owncloud.android.ui.activity; -import java.io.IOException; - import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; -import android.accounts.OperationCanceledException; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -34,18 +31,17 @@ import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; +import android.view.Window; import android.widget.Button; import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.Window; -import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; @@ -142,7 +138,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C if (!stateWasRecovered) { OCFileListFragment listOfFolders = getListOfFilesFragment(); - listOfFolders.listDirectory(folder); + listOfFolders.listDirectory(folder/*, false*/); startSyncFolderOperation(folder, false); } @@ -262,12 +258,9 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C @Override public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getSherlock().getMenuInflater(); + MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); menu.findItem(R.id.action_upload).setVisible(false); - menu.findItem(R.id.action_settings).setVisible(false); - menu.findItem(R.id.action_sync_account).setVisible(false); - menu.findItem(R.id.action_logger).setVisible(false); menu.findItem(R.id.action_sort).setVisible(false); return true; } @@ -313,8 +306,10 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C protected void refreshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); - if (fileListFragment != null) { + if (fileListFragment != null) { fileListFragment.listDirectory(); + // TODO Enable when "On Device" is recovered ? + // fileListFragment.listDirectory(false); } } @@ -323,6 +318,8 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C if (listOfFiles != null) { // should never be null, indeed OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH); listOfFiles.listDirectory(root); + // TODO Enable when "On Device" is recovered ? + // listOfFiles.listDirectory(root, false); setFile(listOfFiles.getCurrentFile()); updateNavigationElementsInActionBar(); startSyncFolderOperation(root, false); @@ -475,6 +472,8 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { fileListFragment.listDirectory(currentDir); + // TODO Enable when "On Device" is recovered ? + // fileListFragment.listDirectory(currentDir, false); } } setFile(currentFile); diff --git a/src/com/owncloud/android/ui/activity/GenericExplanationActivity.java b/src/com/owncloud/android/ui/activity/GenericExplanationActivity.java index 0d4ab01c..fab638d2 100644 --- a/src/com/owncloud/android/ui/activity/GenericExplanationActivity.java +++ b/src/com/owncloud/android/ui/activity/GenericExplanationActivity.java @@ -25,6 +25,8 @@ import java.util.ArrayList; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarActivity; import android.text.method.ScrollingMovementMethod; import android.view.View; import android.view.ViewGroup; @@ -33,8 +35,6 @@ import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockFragmentActivity; import com.owncloud.android.R; import com.owncloud.android.utils.DisplayUtils; @@ -45,11 +45,14 @@ import com.owncloud.android.utils.DisplayUtils; * Added to show explanations for notifications when the user clicks on them, and there no place * better to show them. */ -public class GenericExplanationActivity extends SherlockFragmentActivity { +public class GenericExplanationActivity extends ActionBarActivity { - public static final String EXTRA_LIST = GenericExplanationActivity.class.getCanonicalName() + ".EXTRA_LIST"; - public static final String EXTRA_LIST_2 = GenericExplanationActivity.class.getCanonicalName() + ".EXTRA_LIST_2"; - public static final String MESSAGE = GenericExplanationActivity.class.getCanonicalName() + ".MESSAGE"; + public static final String EXTRA_LIST = GenericExplanationActivity.class.getCanonicalName() + + ".EXTRA_LIST"; + public static final String EXTRA_LIST_2 = GenericExplanationActivity.class.getCanonicalName() + + ".EXTRA_LIST_2"; + public static final String MESSAGE = GenericExplanationActivity.class.getCanonicalName() + + ".MESSAGE"; @Override @@ -71,7 +74,8 @@ public class GenericExplanationActivity extends SherlockFragmentActivity { ListView listView = (ListView) findViewById(R.id.list); if (list != null && list.size() > 0) { - //ListAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); + //ListAdapter adapter = new ArrayAdapter(this, + // android.R.layout.simple_list_item_1, list); ListAdapter adapter = new ExplanationListAdapterView(this, list, list2); listView.setAdapter(adapter); } else { @@ -87,7 +91,8 @@ public class GenericExplanationActivity extends SherlockFragmentActivity { ArrayList mList; ArrayList mList2; - ExplanationListAdapterView(Context context, ArrayList list, ArrayList list2) { + ExplanationListAdapterView(Context context, ArrayList list, + ArrayList list2) { super(context, android.R.layout.two_line_list_item, android.R.id.text1, list); mList = list; mList2 = list2; @@ -105,7 +110,8 @@ public class GenericExplanationActivity extends SherlockFragmentActivity { public View getView (int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); if (view != null) { - if (mList2 != null && mList2.size() > 0 && position >= 0 && position < mList2.size()) { + if (mList2 != null && mList2.size() > 0 && position >= 0 && + position < mList2.size()) { TextView text2 = (TextView) view.findViewById(android.R.id.text2); if (text2 != null) { text2.setText(mList2.get(position)); diff --git a/src/com/owncloud/android/ui/activity/LogHistoryActivity.java b/src/com/owncloud/android/ui/activity/LogHistoryActivity.java index 5640404b..71b9d571 100644 --- a/src/com/owncloud/android/ui/activity/LogHistoryActivity.java +++ b/src/com/owncloud/android/ui/activity/LogHistoryActivity.java @@ -35,15 +35,15 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarActivity; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockFragmentActivity; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.dialog.LoadingDialog; @@ -51,7 +51,7 @@ import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.FileStorageUtils; -public class LogHistoryActivity extends SherlockFragmentActivity { +public class LogHistoryActivity extends ActionBarActivity { private static final String MAIL_ATTACHMENT_TYPE = "text/plain"; @@ -72,7 +72,7 @@ public class LogHistoryActivity extends SherlockFragmentActivity { setContentView(R.layout.log_send_file); setTitle(getText(R.string.actionbar_logger)); - ActionBar actionBar = getSherlock().getActionBar(); + ActionBar actionBar = getSupportActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); actionBar.setDisplayHomeAsUpEnabled(true); Button deleteHistoryButton = (Button) findViewById(R.id.deleteLogHistoryButton); @@ -117,14 +117,14 @@ public class LogHistoryActivity extends SherlockFragmentActivity { } @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - super.onMenuItemSelected(featureId, item); + public boolean onOptionsItemSelected(MenuItem item) { + super.onOptionsItemSelected(item); switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - default: - return false; + case android.R.id.home: + finish(); + break; + default: + return false; } return true; } diff --git a/src/com/owncloud/android/ui/activity/PassCodeActivity.java b/src/com/owncloud/android/ui/activity/PassCodeActivity.java index 00cf1f06..b781e28a 100644 --- a/src/com/owncloud/android/ui/activity/PassCodeActivity.java +++ b/src/com/owncloud/android/ui/activity/PassCodeActivity.java @@ -27,6 +27,8 @@ import java.util.Arrays; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarActivity; import android.text.Editable; import android.text.TextWatcher; import android.view.KeyEvent; @@ -37,20 +39,21 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockFragmentActivity; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.utils.DisplayUtils; -public class PassCodeActivity extends SherlockFragmentActivity { +public class PassCodeActivity extends ActionBarActivity { private static final String TAG = PassCodeActivity.class.getSimpleName(); - public final static String ACTION_ENABLE = PassCodeActivity.class.getCanonicalName() + ".ENABLE"; - public final static String ACTION_DISABLE = PassCodeActivity.class.getCanonicalName() + ".DISABLE"; - public final static String ACTION_REQUEST = PassCodeActivity.class.getCanonicalName() + ".REQUEST"; + public final static String ACTION_ENABLE = PassCodeActivity.class.getCanonicalName() + + ".ENABLE"; + public final static String ACTION_DISABLE = PassCodeActivity.class.getCanonicalName() + + ".DISABLE"; + public final static String ACTION_REQUEST = PassCodeActivity.class.getCanonicalName() + + ".REQUEST"; private Button mBCancel; private TextView mPassCodeHdr; @@ -66,7 +69,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { /** * Initializes the activity. * - * An intent with a valid ACTION is expected; if none is found, an {@link IllegalArgumentException} will be thrown. + * An intent with a valid ACTION is expected; if none is found, an + * {@link IllegalArgumentException} will be thrown. * * @param savedInstanceState Previously saved state - irrelevant in this case */ @@ -79,7 +83,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { mPassCodeHdrExplanation = (TextView) findViewById(R.id.explanation); mPassCodeEditTexts[0] = (EditText) findViewById(R.id.txt0); mPassCodeEditTexts[0].requestFocus(); - getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + getWindow().setSoftInputMode( + android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); mPassCodeEditTexts[1] = (EditText) findViewById(R.id.txt1); mPassCodeEditTexts[2] = (EditText) findViewById(R.id.txt2); mPassCodeEditTexts[3] = (EditText) findViewById(R.id.txt3); @@ -91,9 +96,11 @@ public class PassCodeActivity extends SherlockFragmentActivity { setCancelButtonEnabled(false); // no option to cancel } else if (ACTION_ENABLE.equals(getIntent().getAction())) { - /// pass code preference has just been activated in Preferences; will receive and confirm pass code value + /// pass code preference has just been activated in Preferences; + // will receive and confirm pass code value mPassCodeHdr.setText(R.string.pass_code_configure_your_pass_code); - //mPassCodeHdr.setText(R.string.pass_code_enter_pass_code); // TODO choose a header, check iOS + //mPassCodeHdr.setText(R.string.pass_code_enter_pass_code); + // TODO choose a header, check iOS mPassCodeHdrExplanation.setVisibility(View.VISIBLE); setCancelButtonEnabled(true); @@ -105,7 +112,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { setCancelButtonEnabled(true); } else { - throw new IllegalArgumentException("A valid ACTION is needed in the Intent passed to " + TAG); + throw new IllegalArgumentException("A valid ACTION is needed in the Intent passed to " + + TAG); } setTextListeners(); @@ -116,7 +124,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { /** - * Enables or disables the cancel button to allow the user interrupt the ACTION requested to the activity. + * Enables or disables the cancel button to allow the user interrupt the ACTION + * requested to the activity. * * @param enabled 'True' makes the cancel button available, 'false' hides it. */ @@ -155,7 +164,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) { // TODO WIP: event should be used to control what's exactly happening with DEL, not any custom field... + if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) { // TODO WIP: event should be + // used to control what's exactly happening with DEL, not any custom field... mPassCodeEditTexts[0].setText(""); mPassCodeEditTexts[0].requestFocus(); if (!mConfirmingPassCode) @@ -174,7 +184,9 @@ public class PassCodeActivity extends SherlockFragmentActivity { @Override public void onFocusChange(View v, boolean hasFocus) { /// TODO WIP: should take advantage of hasFocus to reduce processing - if (mPassCodeEditTexts[0].getText().toString().equals("")) { // TODO WIP validation could be done in a global way, with a single OnFocusChangeListener for all the input fields + if (mPassCodeEditTexts[0].getText().toString().equals("")) { // TODO WIP validation + // could be done in a global way, with a single OnFocusChangeListener for all the + // input fields mPassCodeEditTexts[0].requestFocus(); } } @@ -263,8 +275,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { /** * Processes the pass code entered by the user just after the last digit was in. * - * Takes into account the action requested to the activity, the currently saved pass code and the previously - * typed pass code, if any. + * Takes into account the action requested to the activity, the currently saved pass code and + * the previously typed pass code, if any. */ private void processFullPassCode() { if (ACTION_REQUEST.equals(getIntent().getAction())) { @@ -273,7 +285,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { finish(); } else { - showErrorAndRestart(R.string.pass_code_wrong, R.string.pass_code_enter_pass_code, View.INVISIBLE); + showErrorAndRestart(R.string.pass_code_wrong, R.string.pass_code_enter_pass_code, + View.INVISIBLE); } } else if (ACTION_DISABLE.equals(getIntent().getAction())) { @@ -281,14 +294,16 @@ public class PassCodeActivity extends SherlockFragmentActivity { /// pass code accepted when disabling, pass code is removed SharedPreferences.Editor appPrefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()).edit(); - appPrefs.putBoolean("set_pincode", false); // TODO remove; this should be unnecessary, was done before entering in the activity + appPrefs.putBoolean("set_pincode", false); // TODO remove; this should be + // unnecessary, was done before entering in the activity appPrefs.commit(); Toast.makeText(PassCodeActivity.this, R.string.pass_code_removed, Toast.LENGTH_LONG).show(); finish(); } else { - showErrorAndRestart(R.string.pass_code_wrong, R.string.pass_code_enter_pass_code, View.INVISIBLE); + showErrorAndRestart(R.string.pass_code_wrong, R.string.pass_code_enter_pass_code, + View.INVISIBLE); } } else if (ACTION_ENABLE.equals(getIntent().getAction())) { @@ -309,18 +324,20 @@ public class PassCodeActivity extends SherlockFragmentActivity { } - private void showErrorAndRestart(int errorMessage, int headerMessage, int explanationVisibility) { + private void showErrorAndRestart(int errorMessage, int headerMessage, + int explanationVisibility) { Arrays.fill(mPassCodeDigits, null); CharSequence errorSeq = getString(errorMessage); Toast.makeText(this, errorSeq, Toast.LENGTH_LONG).show(); mPassCodeHdr.setText(headerMessage); // TODO check if really needed - mPassCodeHdrExplanation.setVisibility(explanationVisibility); // TODO check if really needed + mPassCodeHdrExplanation.setVisibility(explanationVisibility); // TODO check if really needed clearBoxes(); } /** - * Ask to the user for retyping the pass code just entered before saving it as the current pass code. + * Ask to the user for retyping the pass code just entered before saving it as the current pass + * code. */ protected void requestPassCodeConfirmation(){ clearBoxes(); @@ -346,13 +363,15 @@ public class PassCodeActivity extends SherlockFragmentActivity { boolean result = true; for (int i = 0; i < mPassCodeDigits.length && result; i++) { - result = result && (mPassCodeDigits[i] != null) && mPassCodeDigits[i].equals(savedPassCodeDigits[i]); + result = result && (mPassCodeDigits[i] != null) && + mPassCodeDigits[i].equals(savedPassCodeDigits[i]); } return result; } /** - * Compares pass code retyped by the user in the input fields with the value entered just before. + * Compares pass code retyped by the user in the input fields with the value entered just + * before. * * @return 'True' if retyped pass code equals to the entered before. */ @@ -361,7 +380,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { boolean result = true; for (int i = 0; i < mPassCodeEditTexts.length && result; i++) { - result = result && ((mPassCodeEditTexts[i].getText().toString()).equals(mPassCodeDigits[i])); + result = result && + ((mPassCodeEditTexts[i].getText().toString()).equals(mPassCodeDigits[i])); } return result; } @@ -377,8 +397,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { } /** - * Overrides click on the BACK arrow to correctly cancel ACTION_ENABLE or ACTION_DISABLE, while preventing - * than ACTION_REQUEST may be worked around. + * Overrides click on the BACK arrow to correctly cancel ACTION_ENABLE or ACTION_DISABLE, while + * preventing than ACTION_REQUEST may be worked around. * * @param keyCode Key code of the key that triggered the down event. * @param event Event triggered. @@ -387,7 +407,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { @Override public boolean onKeyDown(int keyCode, KeyEvent event){ if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()== 0){ - if (ACTION_ENABLE.equals(getIntent().getAction()) || ACTION_DISABLE.equals(getIntent().getAction())) { + if (ACTION_ENABLE.equals(getIntent().getAction()) || + ACTION_DISABLE.equals(getIntent().getAction())) { revertActionAndExit(); } return true; @@ -406,7 +427,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { appPrefs.putString("PrefPinCode2", mPassCodeDigits[1]); appPrefs.putString("PrefPinCode3", mPassCodeDigits[2]); appPrefs.putString("PrefPinCode4", mPassCodeDigits[3]); - appPrefs.putBoolean("set_pincode", true); /// TODO remove; unnecessary, Preferences did it before entering here + appPrefs.putBoolean("set_pincode", true); /// TODO remove; unnecessary, + // Preferences did it before entering here appPrefs.commit(); Toast.makeText(this, R.string.pass_code_stored, Toast.LENGTH_LONG).show(); @@ -426,7 +448,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { boolean state = appPrefs.getBoolean("set_pincode", false); appPrefsE.putBoolean("set_pincode", !state); - // TODO WIP: this is reverting the value of the preference because it was changed BEFORE entering + // TODO WIP: this is reverting the value of the preference because it was changed BEFORE + // entering // TODO in this activity; was the PreferenceCheckBox in the caller who did it appPrefsE.commit(); finish(); @@ -441,15 +464,18 @@ public class PassCodeActivity extends SherlockFragmentActivity { /** * Constructor * - * @param index Position in the pass code of the input field that will be bound to this watcher. - * @param lastOne 'True' means that watcher corresponds to the last position of the pass code. + * @param index Position in the pass code of the input field that will be bound to + * this watcher. + * @param lastOne 'True' means that watcher corresponds to the last position of the + * pass code. */ public PassCodeDigitTextWatcher(int index, boolean lastOne) { mIndex = index; mLastOne = lastOne; if (mIndex < 0) { throw new IllegalArgumentException( - "Invalid index in " + PassCodeDigitTextWatcher.class.getSimpleName() + " constructor" + "Invalid index in " + PassCodeDigitTextWatcher.class.getSimpleName() + + " constructor" ); } } @@ -460,7 +486,8 @@ public class PassCodeActivity extends SherlockFragmentActivity { /** * Performs several actions when the user types a digit in an input field: - * - saves the input digit to the state of the activity; this will allow retyping the pass code to confirm it. + * - saves the input digit to the state of the activity; this will allow retyping the + * pass code to confirm it. * - moves the focus automatically to the next field * - for the last field, triggers the processing of the full pass code * diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index 33542085..ca7f8871 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -33,6 +33,7 @@ import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -40,20 +41,22 @@ import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceManager; +//import android.support.v7.app.ActionBar; +import android.app.ActionBar; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ListAdapter; import android.widget.ListView; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockPreferenceActivity; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; +import com.owncloud.android.BuildConfig; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -73,7 +76,7 @@ import com.owncloud.android.utils.DisplayUtils; /** * An Activity that allows the user to change the application's settings. */ -public class Preferences extends SherlockPreferenceActivity +public class Preferences extends PreferenceActivity implements AccountManagerCallback, ComponentsGetter { private static final String TAG = "OwnCloudPreferences"; @@ -110,10 +113,19 @@ public class Preferences extends SherlockPreferenceActivity mDbHandler = new DbHandler(getBaseContext()); addPreferencesFromResource(R.xml.preferences); - ActionBar actionBar = getSherlock().getActionBar(); - actionBar.setIcon(DisplayUtils.getSeasonalIconId()); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setTitle(R.string.actionbar_settings); + // Set properties of Action Bar in an ugly workaround to build correctly without + // upgrading minSdk + // TODO : increase minSdk; scheduled for next realease, don't wont to mix with this US + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + ActionBar actionBar = getActionBar(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + actionBar.setIcon(DisplayUtils.getSeasonalIconId()); + } + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setTitle(R.string.actionbar_settings); + } else { + setTitle(R.string.actionbar_settings); + } // For adding content description tag to a title field in the action bar int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android"); @@ -169,7 +181,8 @@ public class Preferences extends SherlockPreferenceActivity Intent i = new Intent(getApplicationContext(), PassCodeActivity.class); Boolean enable = (Boolean) newValue; i.setAction( - enable.booleanValue() ? PassCodeActivity.ACTION_ENABLE : PassCodeActivity.ACTION_DISABLE + enable.booleanValue() ? PassCodeActivity.ACTION_ENABLE : + PassCodeActivity.ACTION_DISABLE ); startActivity(i); @@ -202,8 +215,22 @@ public class Preferences extends SherlockPreferenceActivity } } + + if (BuildConfig.DEBUG) { + Preference pLog = findPreference("log"); + if (pLog != null ){ + pLog.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent loggerIntent = new Intent(getApplicationContext(), + LogHistoryActivity.class); + startActivity(loggerIntent); + return true; + } + }); + } + } - boolean recommendEnabled = getResources().getBoolean(R.bool.recommend_enabled); Preference pRecommend = findPreference("recommend"); if (pRecommend != null){ @@ -219,12 +246,15 @@ public class Preferences extends SherlockPreferenceActivity String appName = getString(R.string.app_name); String downloadUrl = getString(R.string.url_app_download); - Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(Preferences.this); - String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@')); + Account currentAccount = AccountUtils. + getCurrentOwnCloudAccount(Preferences.this); + String username = currentAccount.name.substring(0, + currentAccount.name.lastIndexOf('@')); - String recommendSubject = String.format(getString(R.string.recommend_subject), appName); + String recommendSubject = String.format(getString(R.string.recommend_subject), + appName); String recommendText = String.format(getString(R.string.recommend_text), - appName, downloadUrl, username); + appName, downloadUrl); intent.putExtra(Intent.EXTRA_SUBJECT, recommendSubject); intent.putExtra(Intent.EXTRA_TEXT, recommendText); @@ -305,7 +335,8 @@ public class Preferences extends SherlockPreferenceActivity }); } - mPrefInstantUploadCategory = (PreferenceCategory) findPreference("instant_uploading_category"); + mPrefInstantUploadCategory = + (PreferenceCategory) findPreference("instant_uploading_category"); mPrefInstantUploadPathWiFi = findPreference("instant_upload_on_wifi"); mPrefInstantUpload = findPreference("instant_uploading"); @@ -331,7 +362,8 @@ public class Preferences extends SherlockPreferenceActivity mUploadVideoPath += OCFile.PATH_SEPARATOR; } Intent intent = new Intent(Preferences.this, UploadPathActivity.class); - intent.putExtra(UploadPathActivity.KEY_INSTANT_UPLOAD_PATH, mUploadVideoPath); + intent.putExtra(UploadPathActivity.KEY_INSTANT_UPLOAD_PATH, + mUploadVideoPath); startActivityForResult(intent, ACTION_SELECT_UPLOAD_VIDEO_PATH); return true; } @@ -459,7 +491,8 @@ public class Preferences extends SherlockPreferenceActivity Account a = AccountUtils.getCurrentOwnCloudAccount(this); String accountName = ""; if (a == null) { - Account[] accounts = AccountManager.get(this).getAccountsByType(MainApp.getAccountType()); + Account[] accounts = AccountManager.get(this) + .getAccountsByType(MainApp.getAccountType()); if (accounts.length != 0) accountName = accounts[0].name; AccountUtils.setCurrentOwnCloudAccount(this, accountName); @@ -471,7 +504,8 @@ public class Preferences extends SherlockPreferenceActivity @Override protected void onResume() { super.onResume(); - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); boolean state = appPrefs.getBoolean("set_pincode", false); pCode.setChecked(state); @@ -509,7 +543,8 @@ public class Preferences extends SherlockPreferenceActivity if (requestCode == ACTION_SELECT_UPLOAD_PATH && resultCode == RESULT_OK){ - OCFile folderToUpload = (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); + OCFile folderToUpload = + (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); mUploadPath = folderToUpload.getRemotePath(); @@ -522,7 +557,8 @@ public class Preferences extends SherlockPreferenceActivity } else if (requestCode == ACTION_SELECT_UPLOAD_VIDEO_PATH && resultCode == RESULT_OK){ - OCFile folderToUploadVideo = (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); + OCFile folderToUploadVideo = + (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); mUploadVideoPath = folderToUploadVideo.getRemotePath(); @@ -596,7 +632,8 @@ public class Preferences extends SherlockPreferenceActivity AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); Account accounts[] = am.getAccountsByType(MainApp.getAccountType()); for (Account a : accounts) { - RadioButtonPreference p = (RadioButtonPreference) findPreference(a.name); + RadioButtonPreference p = + (RadioButtonPreference) findPreference(a.name); if (key.equals(a.name)) { boolean accountChanged = !p.isChecked(); p.setChecked(true); @@ -648,7 +685,8 @@ public class Preferences extends SherlockPreferenceActivity @Override public boolean onPreferenceClick(Preference preference) { AccountManager am = AccountManager.get(getApplicationContext()); - am.addAccount(MainApp.getAccountType(), null, null, null, Preferences.this, null, null); + am.addAccount(MainApp.getAccountType(), null, null, null, Preferences.this, + null, null); return true; } }); @@ -659,7 +697,8 @@ public class Preferences extends SherlockPreferenceActivity * Load upload path set on preferences */ private void loadInstantUploadPath() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); mUploadPath = appPrefs.getString("instant_upload_path", getString(R.string.instant_upload_path)); mPrefInstantUploadPath.setSummary(mUploadPath); } @@ -668,7 +707,8 @@ public class Preferences extends SherlockPreferenceActivity * Save the "Instant Upload Path" on preferences */ private void saveInstantUploadPathOnPreferences() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString("instant_upload_path", mUploadPath); editor.commit(); @@ -678,7 +718,8 @@ public class Preferences extends SherlockPreferenceActivity * Load upload video path set on preferences */ private void loadInstantUploadVideoPath() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); mUploadVideoPath = appPrefs.getString("instant_video_upload_path", getString(R.string.instant_upload_path)); mPrefInstantVideoUploadPath.setSummary(mUploadVideoPath); } @@ -687,7 +728,8 @@ public class Preferences extends SherlockPreferenceActivity * Save the "Instant Video Upload Path" on preferences */ private void saveInstantUploadVideoPathOnPreferences() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString("instant_video_upload_path", mUploadVideoPath); editor.commit(); diff --git a/src/com/owncloud/android/ui/activity/UploadFilesActivity.java b/src/com/owncloud/android/ui/activity/UploadFilesActivity.java index fce4ddce..7a7f8e56 100644 --- a/src/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/UploadFilesActivity.java @@ -28,6 +28,8 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.DialogFragment; +import android.support.v7.app.ActionBar; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -35,9 +37,6 @@ import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.TextView; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.ActionBar.OnNavigationListener; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; @@ -54,7 +53,8 @@ import com.owncloud.android.utils.FileStorageUtils; */ public class UploadFilesActivity extends FileActivity implements - LocalFileListFragment.ContainerActivity, OnNavigationListener, OnClickListener, ConfirmationDialogFragmentListener { + LocalFileListFragment.ContainerActivity, ActionBar.OnNavigationListener, + OnClickListener, ConfirmationDialogFragmentListener { private ArrayAdapter mDirectories; private File mCurrentDir = null; @@ -82,7 +82,8 @@ public class UploadFilesActivity extends FileActivity implements super.onCreate(savedInstanceState); if(savedInstanceState != null) { - mCurrentDir = new File(savedInstanceState.getString(UploadFilesActivity.KEY_DIRECTORY_PATH)); + mCurrentDir = new File(savedInstanceState.getString( + UploadFilesActivity.KEY_DIRECTORY_PATH)); } else { mCurrentDir = Environment.getExternalStorageDirectory(); } @@ -92,7 +93,8 @@ public class UploadFilesActivity extends FileActivity implements /// USER INTERFACE // Drop-down navigation - mDirectories = new CustomArrayAdapter(this, R.layout.sherlock_spinner_dropdown_item); + mDirectories = new CustomArrayAdapter(this, + R.layout.support_simple_spinner_dropdown_item); File currDir = mCurrentDir; while(currDir != null && currDir.getParentFile() != null) { mDirectories.add(currDir.getName()); @@ -102,7 +104,8 @@ public class UploadFilesActivity extends FileActivity implements // Inflate and set the layout view setContentView(R.layout.upload_files_layout); - mFileListFragment = (LocalFileListFragment) getSupportFragmentManager().findFragmentById(R.id.local_files_list); + mFileListFragment = (LocalFileListFragment) + getSupportFragmentManager().findFragmentById(R.id.local_files_list); // Set input controllers @@ -115,7 +118,8 @@ public class UploadFilesActivity extends FileActivity implements // Action bar setup ActionBar actionBar = getSupportActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); - actionBar.setHomeButtonEnabled(true); // mandatory since Android ICS, according to the official documentation + actionBar.setHomeButtonEnabled(true); // mandatory since Android ICS, according to the + // official documentation actionBar.setDisplayHomeAsUpEnabled(mCurrentDir != null && mCurrentDir.getName() != null); actionBar.setDisplayShowTitleEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); diff --git a/src/com/owncloud/android/ui/activity/UploadPathActivity.java b/src/com/owncloud/android/ui/activity/UploadPathActivity.java index d1509f95..db704d14 100644 --- a/src/com/owncloud/android/ui/activity/UploadPathActivity.java +++ b/src/com/owncloud/android/ui/activity/UploadPathActivity.java @@ -20,7 +20,6 @@ package com.owncloud.android.ui.activity; import android.accounts.Account; - import android.os.Bundle; import android.view.View.OnClickListener; @@ -68,7 +67,8 @@ public class UploadPathActivity extends FolderPickerActivity implements FileFrag if (!stateWasRecovered) { OCFileListFragment listOfFolders = getListOfFilesFragment(); - listOfFolders.listDirectory(folder); + // TODO Enable when "On Device" is recovered ? + listOfFolders.listDirectory(folder/*, false*/); startSyncFolderOperation(folder, false); } diff --git a/src/com/owncloud/android/ui/activity/Uploader.java b/src/com/owncloud/android/ui/activity/Uploader.java index 9e56a30b..533bb991 100644 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@ -56,6 +56,8 @@ import android.provider.MediaStore.Video; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; @@ -65,16 +67,14 @@ import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountAuthenticator; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.LoadingDialog; @@ -220,7 +220,8 @@ public class Uploader extends FileActivity 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) { + 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 @@ -325,7 +326,8 @@ public class Uploader extends FileActivity public void onItemClick(AdapterView parent, View view, int position, long id) { // click on folder in the list Log_OC.d(TAG, "on item click"); - Vector tmpfiles = getStorageManager().getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + Vector tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/); if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector(); @@ -410,7 +412,8 @@ public class Uploader extends FileActivity mFile = getStorageManager().getFileByPath(full_path); if (mFile != null) { - Vector files = getStorageManager().getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + Vector files = getStorageManager().getFolderContent(mFile/*, false*/); List> data = new LinkedList>(); for (OCFile f : files) { HashMap h = new HashMap(); diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 2c1aa9e9..c6ea0344 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -407,14 +407,16 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { * @param updatedStorageManager Optional updated storage manager; used to replace * mStorageManager if is different (and not NULL) */ - public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager) { + public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager + /*, boolean onlyOnDevice*/) { mFile = directory; if (updatedStorageManager != null && updatedStorageManager != mStorageManager) { mStorageManager = updatedStorageManager; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); } if (mStorageManager != null) { - mFiles = mStorageManager.getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + mFiles = mStorageManager.getFolderContent(mFile/*, onlyOnDevice*/); mFilesOrig.clear(); mFilesOrig.addAll(mFiles); diff --git a/src/com/owncloud/android/ui/adapter/GroupAdapter.java b/src/com/owncloud/android/ui/adapter/GroupAdapter.java new file mode 100644 index 00000000..42588139 --- /dev/null +++ b/src/com/owncloud/android/ui/adapter/GroupAdapter.java @@ -0,0 +1,33 @@ +/** + * ownCloud Android client application + * + * Copyright (C) 2015 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.owncloud.android.ui.adapter; + +import java.util.ArrayList; +import java.util.List; + +public class GroupAdapter { + + public String string; + public final List children = new ArrayList(); + + public GroupAdapter(String string) { + this.string = string; + } + +} \ No newline at end of file diff --git a/src/com/owncloud/android/ui/adapter/MyExpandableListAdapter.java b/src/com/owncloud/android/ui/adapter/MyExpandableListAdapter.java new file mode 100644 index 00000000..b3fc331a --- /dev/null +++ b/src/com/owncloud/android/ui/adapter/MyExpandableListAdapter.java @@ -0,0 +1,138 @@ +/** + * ownCloud Android client application + * + * Copyright (C) 2015 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.owncloud.android.ui.adapter; + +import android.app.Activity; +import android.util.SparseArray; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.TextView; +import android.widget.Toast; + +import com.owncloud.android.R; + +public class MyExpandableListAdapter extends BaseExpandableListAdapter { + + private final SparseArray groups; + public LayoutInflater inflater; + public Activity activity; + + public MyExpandableListAdapter(Activity act, SparseArray groups) { + activity = act; + this.groups = groups; + inflater = act.getLayoutInflater(); + + } + + + @Override + public Object getChild(int groupPosition, int childPosition) { + return groups.get(groupPosition).children.get(childPosition); + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return 0; + } + + @Override + public View getChildView(int groupPosition, final int childPosition, + boolean isLastChild, View convertView, ViewGroup parent) { + final String children = (String) getChild(groupPosition, childPosition); + TextView text = null; + if (convertView == null) { + convertView = inflater.inflate(R.layout.listrow_details, null); + } + + + text = (TextView) convertView.findViewById(R.id.textView1); + text.setText(children); + convertView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Toast.makeText(activity, children, Toast.LENGTH_SHORT).show(); + } + }); + return convertView; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, + View convertView, ViewGroup parent) { + if (convertView == null) { + convertView = inflater.inflate(R.layout.listrow_group, null); + } + + final GroupAdapter groupAdapter = (GroupAdapter) getGroup(groupPosition); + if (groupAdapter.children.size() == 0){ + convertView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Toast.makeText(activity, groupAdapter.string, Toast.LENGTH_SHORT).show(); + } + }); + } + ((TextView) convertView).setText(groupAdapter.string); + + return convertView; + } + + @Override + public int getChildrenCount(int groupPosition) { + return groups.get(groupPosition).children.size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groups.get(groupPosition); + } + + @Override + public int getGroupCount() { + return groups.size(); + } + + @Override + public void onGroupCollapsed(int groupPosition) { + super.onGroupCollapsed(groupPosition); + } + + @Override + public void onGroupExpanded(int groupPosition) { + super.onGroupExpanded(groupPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return 0; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return false; + } +} \ No newline at end of file diff --git a/src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java b/src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java new file mode 100644 index 00000000..78d0693e --- /dev/null +++ b/src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java @@ -0,0 +1,202 @@ +/** + * ownCloud Android client application + * + * @author tobiasKaminsky + * @author masensio + * Copyright (C) 2015 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.ui.adapter; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.owncloud.android.MainApp; +import com.owncloud.android.R; +import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.ui.NavigationDrawerItem; +import com.owncloud.android.ui.activity.FileActivity; + +import java.util.ArrayList; + +public class NavigationDrawerListAdapter extends BaseAdapter { + + private final static String TAG = NavigationDrawerListAdapter.class.getSimpleName(); + + private Context mContext; + + private ArrayList mNavigationDrawerItems; + private ArrayList mAll = new ArrayList(); + private Account[] mAccounts; + private boolean mShowAccounts; + private Account mCurrentAccount; + private FileActivity mFileActivity; + + + public NavigationDrawerListAdapter(Context context, FileActivity fileActivity, + ArrayList navigationDrawerItems){ + mFileActivity = fileActivity; + mContext = context; + mNavigationDrawerItems = navigationDrawerItems; + + updateAccountList(); + + mAll.addAll(mNavigationDrawerItems); + } + + public void updateAccountList(){ + AccountManager am = (AccountManager) mContext.getSystemService(mContext.ACCOUNT_SERVICE); + mAccounts = am.getAccountsByType(MainApp.getAccountType()); + mCurrentAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); + } + + @Override + public int getCount() { + if (mShowAccounts){ + return mNavigationDrawerItems.size() + 1; + } else { + return mNavigationDrawerItems.size(); + } + } + + @Override + public Object getItem(int position) { + //return all.get(position); + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + + LayoutInflater inflator = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + if (mAll.size() > position) { + // Normal entry + if (mAll.get(position) instanceof NavigationDrawerItem){ + NavigationDrawerItem navItem = (NavigationDrawerItem) mAll.get(position); + + View view = inflator.inflate(R.layout.drawer_list_item, null); + view.setMinimumHeight(40); + LinearLayout itemLayout = (LinearLayout) view.findViewById(R.id.itemLayout); + itemLayout.setContentDescription(navItem.getContentDescription()); + TextView itemText = (TextView) view.findViewById(R.id.itemTitle); + itemText.setText(navItem.getTitle()); + + return view; + } + // TODO re-enable when "Accounts" is available in Navigation Drawer + // Account +// if (mAll.get(position) instanceof Account[]){ +// final View view = inflator.inflate(R.layout.drawer_account_group, null); +// +// final RadioGroup group = (RadioGroup) view.findViewById(R.id.drawer_radio_group); +// +// for (Account account : mAccounts) { +// RadioButton rb = new RadioButton(mContext); +// +// rb.setText(account.name); +// rb.setContentDescription(account.name); +// rb.setTextColor(Color.BLACK); +// rb.setEllipsize(TextUtils.TruncateAt.MIDDLE); +// rb.setSingleLine(); +// rb.setCompoundDrawablePadding(30); +// +// +// try { +// // using adapted algorithm from /core/js/placeholder.js:50 +// int lastAtPos = account.name.lastIndexOf("@"); +// String username = account.name.substring(0, lastAtPos); +// byte[] seed = username.getBytes("UTF-8"); +// MessageDigest md = MessageDigest.getInstance("MD5"); +//// Integer seedMd5Int = Math.abs(new String(Hex.encodeHex(seedMd5)) +//// .hashCode()); +// Integer seedMd5Int = String.format(Locale.ROOT, "%032x", +// new BigInteger(1, md.digest(seed))).hashCode(); +// +// double maxRange = java.lang.Integer.MAX_VALUE; +// float hue = (float) (seedMd5Int / maxRange * 360); +// +// int[] rgb = BitmapUtils.HSLtoRGB(hue, 90.0f, 65.0f, 1.0f); +// +// TextDrawable text = new TextDrawable(username.substring(0, 1).toUpperCase(), +// rgb[0], rgb[1], rgb[2]); +// rb.setCompoundDrawablesWithIntrinsicBounds(text, null, null, null); +// +// +// } catch (Exception e){ +// Log_OC.d(TAG, e.toString()); +// rb.setTextColor(mContext.getResources().getColor(R.color.black)); +// } +// RadioGroup.LayoutParams params = new RadioGroup.LayoutParams( +// LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); +// params.weight=1.0f; +// params.setMargins(15, 5, 5, 5); +// +// // Check the current account that is being used +// if (account.name.equals(mCurrentAccount.name)) { +// rb.setChecked(true); +// } else { +// rb.setChecked(false); +// } +// +// group.addView(rb, params); +// } +// +// group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){ +// public void onCheckedChanged(RadioGroup group, int checkedId) { +// // checkedId is the RadioButton selected +// RadioButton rb = (RadioButton) view.findViewById(checkedId); +// +// AccountUtils.setCurrentOwnCloudAccount(mContext,rb.getText().toString()); +// notifyDataSetChanged(); +// mFileActivity.closeDrawer(); +// +// // restart the main activity +// mFileActivity.restart(); +// } +// }); +// +// return view; +// } + } + return convertView; + } + + //TODO re-enable when "Accounts" is available in Navigation Drawer + // TODO update Account List after creating a new account and on fresh installation +// public void setShowAccounts(boolean value){ +// mAll.clear(); +// mAll.addAll(mNavigationDrawerItems); +// +// if (value){ +// mAll.add(1, mAccounts); +// } +// mShowAccounts = value; +// } +} diff --git a/src/com/owncloud/android/ui/dialog/ChangelogDialog.java b/src/com/owncloud/android/ui/dialog/ChangelogDialog.java index 24d7bc25..83c6053b 100644 --- a/src/com/owncloud/android/ui/dialog/ChangelogDialog.java +++ b/src/com/owncloud/android/ui/dialog/ChangelogDialog.java @@ -23,9 +23,9 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.webkit.WebView; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.utils.DisplayUtils; @@ -33,15 +33,17 @@ import com.owncloud.android.utils.DisplayUtils; /** * Dialog to show the contents of res/raw/CHANGELOG.txt */ -public class ChangelogDialog extends SherlockDialogFragment { +public class ChangelogDialog extends DialogFragment { - private static final String ARG_CANCELABLE = ChangelogDialog.class.getCanonicalName() + ".ARG_CANCELABLE"; + private static final String ARG_CANCELABLE = ChangelogDialog.class.getCanonicalName() + + ".ARG_CANCELABLE"; /** * Public factory method to get dialog instances. * - * @param cancelable If 'true', the dialog can be cancelled by the user input (BACK button, touch outside...) + * @param cancelable If 'true', the dialog can be cancelled by the user input + * (BACK button, touch outside...) * @return New dialog instance, ready to show. */ public static ChangelogDialog newInstance(boolean cancelable) { @@ -60,7 +62,8 @@ public class ChangelogDialog extends SherlockDialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { /// load the custom view to insert in the dialog, between title and WebView webview = new WebView(getActivity()); - webview.loadUrl("file:///android_res/raw/" + getResources().getResourceEntryName(R.raw.changelog) + ".html"); + webview.loadUrl("file:///android_res/raw/" + + getResources().getResourceEntryName(R.raw.changelog) + ".html"); /// build the dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); @@ -84,7 +87,8 @@ public class ChangelogDialog extends SherlockDialogFragment { * {@inheritDoc} *-/ @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { /// load the custom layout View view = inflater.inflate(R.layout.fragment_changelog, container); mEditText = (EditText) view.findViewById(R.id.txt_your_name); diff --git a/src/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java b/src/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java index 48aabe5c..e2dbe850 100644 --- a/src/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java @@ -24,12 +24,12 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.app.DialogFragment; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.lib.common.utils.Log_OC; -public class ConfirmationDialogFragment extends SherlockDialogFragment { +public class ConfirmationDialogFragment extends DialogFragment { public final static String ARG_CONF_RESOURCE_ID = "resource_id"; public final static String ARG_CONF_ARGUMENTS = "string_array"; diff --git a/src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java b/src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java index 6cf229df..d322a8ea 100644 --- a/src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java +++ b/src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java @@ -25,11 +25,11 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBarActivity; -import com.actionbarsherlock.app.SherlockDialogFragment; -import com.actionbarsherlock.app.SherlockFragmentActivity; import com.owncloud.android.R; import com.owncloud.android.utils.DisplayUtils; @@ -37,7 +37,7 @@ import com.owncloud.android.utils.DisplayUtils; /** * Dialog which will be displayed to user upon keep-in-sync file conflict. */ -public class ConflictsResolveDialog extends SherlockDialogFragment { +public class ConflictsResolveDialog extends DialogFragment { public static enum Decision { CANCEL, @@ -59,7 +59,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { String remotepath = getArguments().getString("remotepath"); - return new AlertDialog.Builder(getSherlockActivity()) + return new AlertDialog.Builder(getActivity()) .setIcon(DisplayUtils.getSeasonalIconId()) .setTitle(R.string.conflict_title) .setMessage(String.format(getString(R.string.conflict_message), remotepath)) @@ -91,7 +91,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment { .create(); } - public void showDialog(SherlockFragmentActivity activity) { + public void showDialog(ActionBarActivity activity) { Fragment prev = activity.getSupportFragmentManager().findFragmentByTag("dialog"); FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction(); if (prev != null) { @@ -102,7 +102,7 @@ public class ConflictsResolveDialog extends SherlockDialogFragment { this.show(ft, "dialog"); } - public void dismissDialog(SherlockFragmentActivity activity) { + public void dismissDialog(ActionBarActivity activity) { Fragment prev = activity.getSupportFragmentManager().findFragmentByTag(getTag()); if (prev != null) { FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction(); diff --git a/src/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java b/src/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java index 170fe08a..73ae8bd8 100644 --- a/src/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java @@ -20,7 +20,6 @@ package com.owncloud.android.ui.dialog; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.resources.files.FileUtils; @@ -30,6 +29,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager.LayoutParams; @@ -42,8 +42,8 @@ import android.widget.Toast; * * Triggers the folder creation when name is confirmed. */ -public class CreateFolderDialogFragment -extends SherlockDialogFragment implements DialogInterface.OnClickListener { +public class CreateFolderDialogFragment + extends DialogFragment implements DialogInterface.OnClickListener { private static final String ARG_PARENT_FOLDER = "PARENT_FOLDER"; @@ -52,7 +52,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { /** * Public factory method to create new CreateFolderDialogFragment instances. * - * @param file File to remove. + * @param parentFolder Folder to create * @return Dialog ready to show. */ public static CreateFolderDialogFragment newInstance(OCFile parentFolder) { @@ -72,7 +72,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { mParentFolder = getArguments().getParcelable(ARG_PARENT_FOLDER); // Inflate the layout for the dialog - LayoutInflater inflater = getSherlockActivity().getLayoutInflater(); + LayoutInflater inflater = getActivity().getLayoutInflater(); View v = inflater.inflate(R.layout.edit_box_dialog, null); // Setup layout @@ -81,7 +81,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { inputText.requestFocus(); // Build the dialog - AlertDialog.Builder builder = new AlertDialog.Builder(getSherlockActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(v) .setPositiveButton(R.string.common_ok, this) .setNegativeButton(R.string.common_cancel, this) @@ -101,7 +101,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { if (newFolderName.length() <= 0) { Toast.makeText( - getSherlockActivity(), + getActivity(), R.string.filename_empty, Toast.LENGTH_LONG).show(); return; @@ -109,7 +109,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { if (!FileUtils.isValidName(newFolderName)) { Toast.makeText( - getSherlockActivity(), + getActivity(), R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show(); return; @@ -117,7 +117,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { String path = mParentFolder.getRemotePath(); path += newFolderName + OCFile.PATH_SEPARATOR; - ((ComponentsGetter)getSherlockActivity()). + ((ComponentsGetter)getActivity()). getFileOperationsHelper().createFolder(path, false); } } diff --git a/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java b/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java index 1b99c7b0..c12b9dd7 100644 --- a/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java @@ -19,7 +19,6 @@ package com.owncloud.android.ui.dialog; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.authentication.AuthenticatorActivity; @@ -28,6 +27,7 @@ import android.app.Dialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.text.InputType; import android.view.WindowManager.LayoutParams; import android.webkit.HttpAuthHandler; @@ -41,7 +41,7 @@ import android.widget.LinearLayout; * Dialog to input authentication credentials * */ -public class CredentialsDialogFragment extends SherlockDialogFragment +public class CredentialsDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { private WebView mWebView = null; @@ -60,9 +60,11 @@ public class CredentialsDialogFragment extends SherlockDialogFragment * @param handler HttpAuthHandler * @return Dialog ready to show */ - public static CredentialsDialogFragment newInstanceForCredentials(WebView webView, HttpAuthHandler handler) { + public static CredentialsDialogFragment newInstanceForCredentials(WebView webView, + HttpAuthHandler handler) { if (handler == null) { - throw new IllegalArgumentException("Trying to create instance with parameter handler == null"); + throw new IllegalArgumentException("Trying to create instance with parameter handler" + + " == null"); } CredentialsDialogFragment frag = new CredentialsDialogFragment(); frag.mHandler = handler; @@ -75,16 +77,16 @@ public class CredentialsDialogFragment extends SherlockDialogFragment public Dialog onCreateDialog(Bundle savedInstanceState) { // Create field for username - mUsernameET = new EditText(getSherlockActivity()); - mUsernameET.setHint(getSherlockActivity().getText(R.string.auth_username)); + mUsernameET = new EditText(getActivity()); + mUsernameET.setHint(getActivity().getText(R.string.auth_username)); // Create field for password - mPasswordET = new EditText(getSherlockActivity()); - mPasswordET.setHint(getSherlockActivity().getText(R.string.auth_password)); + mPasswordET = new EditText(getActivity()); + mPasswordET.setHint(getActivity().getText(R.string.auth_password)); mPasswordET.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); // Prepare LinearLayout for dialog - LinearLayout ll = new LinearLayout(getSherlockActivity()); + LinearLayout ll = new LinearLayout(getActivity()); ll.setOrientation(LinearLayout.VERTICAL); ll.addView(mUsernameET); ll.addView(mPasswordET); @@ -94,8 +96,8 @@ public class CredentialsDialogFragment extends SherlockDialogFragment setRetainInstance(true); Builder authDialog = new AlertDialog - .Builder(getSherlockActivity()) - .setTitle(getSherlockActivity().getText(R.string.saml_authentication_required_text)) + .Builder(getActivity()) + .setTitle(getActivity().getText(R.string.saml_authentication_required_text)) .setView(ll) .setCancelable(false) .setPositiveButton(R.string.common_ok, this) diff --git a/src/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java b/src/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java index 32fa4c65..6f4b680d 100644 --- a/src/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java +++ b/src/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java @@ -24,13 +24,13 @@ import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnKeyListener; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.view.KeyEvent; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; -public class IndeterminateProgressDialog extends SherlockDialogFragment { +public class IndeterminateProgressDialog extends DialogFragment { private static final String ARG_MESSAGE_ID = IndeterminateProgressDialog.class.getCanonicalName() + ".ARG_MESSAGE_ID"; private static final String ARG_CANCELABLE = IndeterminateProgressDialog.class.getCanonicalName() + ".ARG_CANCELABLE"; diff --git a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java index c3b7ed1e..3045b278 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@ -93,7 +93,7 @@ implements ConfirmationDialogFragmentListener { */ @Override public void onConfirmation(String callerTag) { - ComponentsGetter cg = (ComponentsGetter)getSherlockActivity(); + ComponentsGetter cg = (ComponentsGetter)getActivity(); FileDataStorageManager storageManager = cg.getStorageManager(); if (storageManager.getFileById(mTargetFile.getFileId()) != null) { cg.getFileOperationsHelper().removeFile(mTargetFile, false); @@ -105,14 +105,15 @@ implements ConfirmationDialogFragmentListener { */ @Override public void onNeutral(String callerTag) { - ComponentsGetter cg = (ComponentsGetter)getSherlockActivity(); + ComponentsGetter cg = (ComponentsGetter)getActivity(); cg.getFileOperationsHelper().removeFile(mTargetFile, true); FileDataStorageManager storageManager = cg.getStorageManager(); boolean containsKeepInSync = false; if (mTargetFile.isFolder()) { - Vector files = storageManager.getFolderContent(mTargetFile); + // TODO Enable when "On Device" is recovered ? + Vector files = storageManager.getFolderContent(mTargetFile/*, false*/); for(OCFile file: files) { containsKeepInSync = file.keepInSync() || containsKeepInSync; diff --git a/src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java b/src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java index 0e7850b5..40930608 100644 --- a/src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java @@ -29,6 +29,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager.LayoutParams; @@ -36,7 +37,6 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.resources.files.FileUtils; @@ -49,7 +49,7 @@ import com.owncloud.android.ui.activity.ComponentsGetter; * Triggers the rename operation when name is confirmed. */ public class RenameFileDialogFragment -extends SherlockDialogFragment implements DialogInterface.OnClickListener { + extends DialogFragment implements DialogInterface.OnClickListener { private static final String ARG_TARGET_FILE = "TARGET_FILE"; @@ -75,7 +75,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { mTargetFile = getArguments().getParcelable(ARG_TARGET_FILE); // Inflate the layout for the dialog - LayoutInflater inflater = getSherlockActivity().getLayoutInflater(); + LayoutInflater inflater = getActivity().getLayoutInflater(); View v = inflater.inflate(R.layout.edit_box_dialog, null); // Setup layout @@ -93,7 +93,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { inputText.requestFocus(); // Build the dialog - AlertDialog.Builder builder = new AlertDialog.Builder(getSherlockActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(v) .setPositiveButton(R.string.common_ok, this) .setNegativeButton(R.string.common_cancel, this) @@ -113,7 +113,7 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { if (newFileName.length() <= 0) { Toast.makeText( - getSherlockActivity(), + getActivity(), R.string.filename_empty, Toast.LENGTH_LONG).show(); return; @@ -121,13 +121,14 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener { if (!FileUtils.isValidName(newFileName)) { Toast.makeText( - getSherlockActivity(), + getActivity(), R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show(); return; } - ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper().renameFile(mTargetFile, newFileName); + ((ComponentsGetter)getActivity()).getFileOperationsHelper().renameFile(mTargetFile, + newFileName); } } } diff --git a/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java b/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java index 9c340200..ab6fb3fd 100644 --- a/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java +++ b/src/com/owncloud/android/ui/dialog/SamlWebViewDialog.java @@ -27,6 +27,7 @@ import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; +import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; @@ -38,7 +39,6 @@ import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.RelativeLayout; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient; @@ -49,7 +49,7 @@ import com.owncloud.android.lib.common.utils.Log_OC; /** * Dialog to show the WebView for SAML Authentication */ -public class SamlWebViewDialog extends SherlockDialogFragment { +public class SamlWebViewDialog extends DialogFragment { public final String SAML_DIALOG_TAG = "SamlWebViewDialog"; @@ -72,7 +72,8 @@ public class SamlWebViewDialog extends SherlockDialogFragment { * Public factory method to get dialog instances. * * @param url Url to open at WebView - * @param targetUrl mBaseUrl + AccountUtils.getWebdavPath(mDiscoveredVersion, mCurrentAuthTokenType) + * @param targetUrl mBaseUrl + AccountUtils.getWebdavPath(mDiscoveredVersion, m + * CurrentAuthTokenType) * @return New dialog instance, ready to show. */ public static SamlWebViewDialog newInstance(String url, String targetUrl) { @@ -114,7 +115,7 @@ public class SamlWebViewDialog extends SherlockDialogFragment { setRetainInstance(true); - CookieSyncManager.createInstance(getSherlockActivity().getApplicationContext()); + CookieSyncManager.createInstance(getActivity().getApplicationContext()); if (savedInstanceState == null) { mInitialUrl = getArguments().getString(ARG_INITIAL_URL); @@ -124,7 +125,7 @@ public class SamlWebViewDialog extends SherlockDialogFragment { mTargetUrl = savedInstanceState.getString(ARG_TARGET_URL); } - setStyle(SherlockDialogFragment.STYLE_NO_TITLE, R.style.Theme_ownCloud_Dialog); + setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_ownCloud_Dialog); } @SuppressWarnings("deprecation") @@ -140,7 +141,7 @@ public class SamlWebViewDialog extends SherlockDialogFragment { if (mSsoWebView == null) { // initialize the WebView - mSsoWebView = new SsoWebView(getSherlockActivity().getApplicationContext()); + mSsoWebView = new SsoWebView(getActivity().getApplicationContext()); mSsoWebView.setFocusable(true); mSsoWebView.setFocusableInTouchMode(true); mSsoWebView.setClickable(true); diff --git a/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java b/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java index fc88e5d1..29b591d2 100644 --- a/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java +++ b/src/com/owncloud/android/ui/dialog/ShareLinkToDialog.java @@ -35,6 +35,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -42,7 +43,6 @@ import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.utils.Log_OC; @@ -54,18 +54,22 @@ import com.owncloud.android.ui.activity.FileActivity; * Dialog showing a list activities able to resolve a given Intent, * filtering out the activities matching give package names. */ -public class ShareLinkToDialog extends SherlockDialogFragment { +public class ShareLinkToDialog extends DialogFragment { private final static String TAG = ShareLinkToDialog.class.getSimpleName(); - private final static String ARG_INTENT = ShareLinkToDialog.class.getSimpleName() + ".ARG_INTENT"; - private final static String ARG_PACKAGES_TO_EXCLUDE = ShareLinkToDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE"; - private final static String ARG_FILE_TO_SHARE = ShareLinkToDialog.class.getSimpleName() + ".FILE_TO_SHARE"; + private final static String ARG_INTENT = ShareLinkToDialog.class.getSimpleName() + + ".ARG_INTENT"; + private final static String ARG_PACKAGES_TO_EXCLUDE = ShareLinkToDialog.class.getSimpleName() + + ".ARG_PACKAGES_TO_EXCLUDE"; + private final static String ARG_FILE_TO_SHARE = ShareLinkToDialog.class.getSimpleName() + + ".FILE_TO_SHARE"; private ActivityAdapter mAdapter; private OCFile mFile; private Intent mIntent; - public static ShareLinkToDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) { + public static ShareLinkToDialog newInstance(Intent intent, String[] packagesToExclude, + OCFile fileToShare) { ShareLinkToDialog f = new ShareLinkToDialog(); Bundle args = new Bundle(); args.putParcelable(ARG_INTENT, intent); @@ -84,16 +88,18 @@ public class ShareLinkToDialog extends SherlockDialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { mIntent = getArguments().getParcelable(ARG_INTENT); String[] packagesToExclude = getArguments().getStringArray(ARG_PACKAGES_TO_EXCLUDE); - List packagesToExcludeList = Arrays.asList(packagesToExclude != null ? packagesToExclude : new String[0]); + List packagesToExcludeList = Arrays.asList(packagesToExclude != null ? + packagesToExclude : new String[0]); mFile = getArguments().getParcelable(ARG_FILE_TO_SHARE); - PackageManager pm= getSherlockActivity().getPackageManager(); - List activities = pm.queryIntentActivities(mIntent, PackageManager.MATCH_DEFAULT_ONLY); + PackageManager pm= getActivity().getPackageManager(); + List activities = pm.queryIntentActivities(mIntent, + PackageManager.MATCH_DEFAULT_ONLY); Iterator it = activities.iterator(); ResolveInfo resolveInfo; while (it.hasNext()) { resolveInfo = it.next(); - if (packagesToExcludeList.contains(resolveInfo.activityInfo.packageName.toLowerCase())) { + if (packagesToExcludeList.contains(resolveInfo.activityInfo.packageName.toLowerCase())){ it.remove(); } } @@ -102,7 +108,7 @@ public class ShareLinkToDialog extends SherlockDialogFragment { if (!sendAction) { // add activity for copy to clipboard - Intent copyToClipboardIntent = new Intent(getSherlockActivity(), CopyToClipboardActivity.class); + Intent copyToClipboardIntent = new Intent(getActivity(), CopyToClipboardActivity.class); List copyToClipboard = pm.queryIntentActivities(copyToClipboardIntent, 0); if (!copyToClipboard.isEmpty()) { activities.add(copyToClipboard.get(0)); @@ -110,7 +116,7 @@ public class ShareLinkToDialog extends SherlockDialogFragment { } Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm)); - mAdapter = new ActivityAdapter(getSherlockActivity(), pm, activities); + mAdapter = new ActivityAdapter(getActivity(), pm, activities); return createSelector(sendAction); @@ -125,7 +131,7 @@ public class ShareLinkToDialog extends SherlockDialogFragment { titleId = R.string.activity_chooser_title; } - return new AlertDialog.Builder(getSherlockActivity()) + return new AlertDialog.Builder(getActivity()) .setTitle(titleId) .setAdapter(mAdapter, new DialogInterface.OnClickListener() { @Override @@ -142,11 +148,11 @@ public class ShareLinkToDialog extends SherlockDialogFragment { dialog.dismiss(); // explicitly added for Android 2.x devices // Send the file - ((FileActivity)getSherlockActivity()).startActivity(mIntent); + ((FileActivity)getActivity()).startActivity(mIntent); } else { // Create a new share resource - ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper() + ((ComponentsGetter)getActivity()).getFileOperationsHelper() .shareFileWithLinkToApp(mFile, "", mIntent); } } @@ -173,7 +179,8 @@ public class ShareLinkToDialog extends SherlockDialogFragment { } private View newView(ViewGroup parent) { - return(((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.activity_row, parent, false)); + return(((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)). + inflate(R.layout.activity_row, parent, false)); } private void bindView(int position, View row) { diff --git a/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java b/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java index d8f507b1..d2d29fef 100644 --- a/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java @@ -23,6 +23,7 @@ import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; @@ -30,7 +31,6 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.ui.activity.FileActivity; @@ -41,7 +41,7 @@ import com.owncloud.android.ui.activity.FileActivity; * Triggers the share when the password is introduced. */ -public class SharePasswordDialogFragment extends SherlockDialogFragment +public class SharePasswordDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { private static final String ARG_FILE = "FILE"; @@ -98,7 +98,7 @@ public class SharePasswordDialogFragment extends SherlockDialogFragment public void onClick(DialogInterface dialog, int which) { if (which == AlertDialog.BUTTON_POSITIVE) { // Enable the flag "Share again" - ((FileActivity) getSherlockActivity()).setTryShareAgain(true); + ((FileActivity) getActivity()).setTryShareAgain(true); String password = ((TextView)(getDialog().findViewById(R.id.share_password))) @@ -113,12 +113,12 @@ public class SharePasswordDialogFragment extends SherlockDialogFragment } // Share the file - ((FileActivity)getSherlockActivity()).getFileOperationsHelper() + ((FileActivity)getActivity()).getFileOperationsHelper() .shareFileWithLinkToApp(mFile, password, mSendIntent); } else { // Disable the flag "Share again" - ((FileActivity) getSherlockActivity()).setTryShareAgain(false); + ((FileActivity) getActivity()).setTryShareAgain(false); } } } diff --git a/src/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java b/src/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java index 66582608..12f595a6 100644 --- a/src/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java +++ b/src/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java @@ -28,6 +28,7 @@ import android.app.Activity; import android.app.Dialog; import android.net.http.SslError; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -36,7 +37,6 @@ import android.view.View.OnClickListener; import android.webkit.SslErrorHandler; import android.widget.Button; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.lib.common.network.CertificateCombinedException; import com.owncloud.android.lib.common.network.NetworkUtils; @@ -53,7 +53,7 @@ import com.owncloud.android.ui.adapter.X509CertificateViewAdapter; * Abstract implementation of common functionality for different dialogs that * get the information about the error and the certificate from different classes. */ -public class SslUntrustedCertDialog extends SherlockDialogFragment { +public class SslUntrustedCertDialog extends DialogFragment { private final static String TAG = SslUntrustedCertDialog.class.getSimpleName(); @@ -192,7 +192,7 @@ public class SslUntrustedCertDialog extends SherlockDialogFragment { if (mHandler != null) { mHandler.cancel(); } - ((OnSslUntrustedCertListener)getSherlockActivity()).onCancelCertificate(); + ((OnSslUntrustedCertListener)getActivity()).onCancelCertificate(); } } @@ -206,7 +206,7 @@ public class SslUntrustedCertDialog extends SherlockDialogFragment { mHandler.proceed(); } if (m509Certificate != null) { - Activity activity = getSherlockActivity(); + Activity activity = getActivity(); try { NetworkUtils.addCertToKnownServersStore(m509Certificate, activity); // TODO make this asynchronously, it can take some time ((OnSslUntrustedCertListener)activity).onSavedCertificate(); diff --git a/src/com/owncloud/android/ui/dialog/UploadSourceDialogFragment.java b/src/com/owncloud/android/ui/dialog/UploadSourceDialogFragment.java index 2f6eeadf..7eb861c9 100644 --- a/src/com/owncloud/android/ui/dialog/UploadSourceDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/UploadSourceDialogFragment.java @@ -26,8 +26,8 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.DialogFragment; -import com.actionbarsherlock.app.SherlockDialogFragment; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.FileActivity; @@ -39,10 +39,11 @@ import com.owncloud.android.ui.activity.UploadFilesActivity; * * Assumes that its parent activity extends {@link FileActivity} */ -public class UploadSourceDialogFragment extends SherlockDialogFragment { +public class UploadSourceDialogFragment extends DialogFragment { private final static String TAG = UploadSourceDialogFragment.class.getSimpleName(); - private final static String ARG_ACCOUNT = UploadSourceDialogFragment.class.getSimpleName() + ".ARG_ACCOUNT"; + private final static String ARG_ACCOUNT = UploadSourceDialogFragment.class.getSimpleName() + + ".ARG_ACCOUNT"; public static final int ACTION_SELECT_CONTENT_FROM_APPS = 1; public static final int ACTION_SELECT_MULTIPLE_FILES = 2; @@ -68,19 +69,20 @@ public class UploadSourceDialogFragment extends SherlockDialogFragment { getString(R.string.actionbar_upload_from_apps) }; - AlertDialog.Builder builder = new AlertDialog.Builder(getSherlockActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.actionbar_upload); builder.setItems(allTheItems, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { if (item == 0) { - Intent action = new Intent(getSherlockActivity(), UploadFilesActivity.class); + Intent action = new Intent(getActivity(), UploadFilesActivity.class); action.putExtra( UploadFilesActivity.EXTRA_ACCOUNT, - ((FileActivity)getSherlockActivity()).getAccount() + ((FileActivity)getActivity()).getAccount() ); - //startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES); // this flow seems broken; - // Actionbarsherlock, maybe? - getSherlockActivity().startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES); + //startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES); + // this flow seems broken; + // Actionbarsherlock, maybe? + getActivity().startActivityForResult(action, ACTION_SELECT_MULTIPLE_FILES); } else if (item == 1) { Intent action = new Intent(Intent.ACTION_GET_CONTENT); @@ -91,7 +93,7 @@ public class UploadSourceDialogFragment extends SherlockDialogFragment { } //startActivityForResult( // this flow seems broken; // Actionbarsherlock, maybe? - getSherlockActivity().startActivityForResult( + getActivity().startActivityForResult( Intent.createChooser(action, getString(R.string.upload_chooser_title)), ACTION_SELECT_CONTENT_FROM_APPS ); diff --git a/src/com/owncloud/android/ui/fragment/AuthenticatorAccountDetailsFragment.java b/src/com/owncloud/android/ui/fragment/AuthenticatorAccountDetailsFragment.java index 1552da1e..91c86fb1 100644 --- a/src/com/owncloud/android/ui/fragment/AuthenticatorAccountDetailsFragment.java +++ b/src/com/owncloud/android/ui/fragment/AuthenticatorAccountDetailsFragment.java @@ -20,8 +20,8 @@ package com.owncloud.android.ui.fragment; -import com.actionbarsherlock.app.SherlockFragment; +import android.support.v4.app.Fragment; -public class AuthenticatorAccountDetailsFragment extends SherlockFragment { +public class AuthenticatorAccountDetailsFragment extends Fragment { } diff --git a/src/com/owncloud/android/ui/fragment/AuthenticatorGetStartedFragment.java b/src/com/owncloud/android/ui/fragment/AuthenticatorGetStartedFragment.java index 5a8da70d..dc673bf6 100644 --- a/src/com/owncloud/android/ui/fragment/AuthenticatorGetStartedFragment.java +++ b/src/com/owncloud/android/ui/fragment/AuthenticatorGetStartedFragment.java @@ -20,8 +20,8 @@ package com.owncloud.android.ui.fragment; -import com.actionbarsherlock.app.SherlockFragment; +import android.support.v4.app.Fragment; -public class AuthenticatorGetStartedFragment extends SherlockFragment { +public class AuthenticatorGetStartedFragment extends Fragment { } diff --git a/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java index fb58be3a..2432380f 100644 --- a/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; @@ -36,7 +37,6 @@ import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; -import com.actionbarsherlock.app.SherlockFragment; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.ExtendedListView; @@ -48,8 +48,8 @@ import third_parties.in.srain.cube.GridViewWithHeaderAndFooter; /** * TODO extending SherlockListFragment instead of SherlockFragment */ -public class ExtendedListFragment extends SherlockFragment -implements OnItemClickListener, OnEnforceableRefreshListener { +public class ExtendedListFragment extends Fragment + implements OnItemClickListener, OnEnforceableRefreshListener { private static final String TAG = ExtendedListFragment.class.getSimpleName(); @@ -130,7 +130,8 @@ implements OnItemClickListener, OnEnforceableRefreshListener { @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { Log_OC.d(TAG, "onCreateView"); View v = inflater.inflate(R.layout.list_fragment, null); diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 6a19957b..bff9cea4 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -27,6 +27,9 @@ import android.accounts.Account; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -35,9 +38,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -181,7 +181,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener getFile(), mContainerActivity.getStorageManager().getAccount(), mContainerActivity, - getSherlockActivity() + getActivity() ); mf.filter(menu); } @@ -360,7 +360,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener setButtonsForDown(); } else { - // TODO load default preview image; when the local file is removed, the preview remains there + // TODO load default preview image; when the local file is removed, the preview + // remains there setButtonsForRemote(); } } @@ -500,7 +501,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener */ private boolean ocVersionSupportsTimeCreated(){ /*if(mAccount != null){ - AccountManager accManager = (AccountManager) getActivity().getSystemService(Context.ACCOUNT_SERVICE); + AccountManager accManager = (AccountManager) getActivity() + .getSystemService(Context.ACCOUNT_SERVICE); OwnCloudVersion ocVersion = new OwnCloudVersion(accManager .getUserData(mAccount, AccountAuthenticator.KEY_OC_VERSION)); if(ocVersion.compareTo(new OwnCloudVersion(0x030000)) < 0) { @@ -514,10 +516,12 @@ public class FileDetailFragment extends FileFragment implements OnClickListener public void listenForTransferProgress() { if (mProgressListener != null) { if (mContainerActivity.getFileDownloaderBinder() != null) { - mContainerActivity.getFileDownloaderBinder().addDatatransferProgressListener(mProgressListener, mAccount, getFile()); + mContainerActivity.getFileDownloaderBinder(). + addDatatransferProgressListener(mProgressListener, mAccount, getFile()); } if (mContainerActivity.getFileUploaderBinder() != null) { - mContainerActivity.getFileUploaderBinder().addDatatransferProgressListener(mProgressListener, mAccount, getFile()); + mContainerActivity.getFileUploaderBinder(). + addDatatransferProgressListener(mProgressListener, mAccount, getFile()); } } } @@ -526,10 +530,12 @@ public class FileDetailFragment extends FileFragment implements OnClickListener public void leaveTransferProgress() { if (mProgressListener != null) { if (mContainerActivity.getFileDownloaderBinder() != null) { - mContainerActivity.getFileDownloaderBinder().removeDatatransferProgressListener(mProgressListener, mAccount, getFile()); + mContainerActivity.getFileDownloaderBinder(). + removeDatatransferProgressListener(mProgressListener, mAccount, getFile()); } if (mContainerActivity.getFileUploaderBinder() != null) { - mContainerActivity.getFileUploaderBinder().removeDatatransferProgressListener(mProgressListener, mAccount, getFile()); + mContainerActivity.getFileUploaderBinder(). + removeDatatransferProgressListener(mProgressListener, mAccount, getFile()); } } } @@ -537,7 +543,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener /** - * Helper class responsible for updating the progress bar shown for file uploading or downloading + * Helper class responsible for updating the progress bar shown for file uploading or + * downloading */ private class ProgressListener implements OnDatatransferProgressListener { int mLastPercent = 0; @@ -548,7 +555,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener } @Override - public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String filename) { + public void onTransferProgress(long progressRate, long totalTransferredSoFar, + long totalToTransfer, String filename) { int percent = (int)(100.0*((double)totalTransferredSoFar)/((double)totalToTransfer)); if (percent != mLastPercent) { ProgressBar pb = mProgressBar.get(); diff --git a/src/com/owncloud/android/ui/fragment/FileFragment.java b/src/com/owncloud/android/ui/fragment/FileFragment.java index 87dca259..fd5aeefa 100644 --- a/src/com/owncloud/android/ui/fragment/FileFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileFragment.java @@ -24,7 +24,6 @@ import android.accounts.Account; import android.app.Activity; import android.support.v4.app.Fragment; -import com.actionbarsherlock.app.SherlockFragment; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; @@ -34,7 +33,7 @@ import com.owncloud.android.ui.activity.ComponentsGetter; /** * Common methods for {@link Fragment}s containing {@link OCFile}s */ -public class FileFragment extends SherlockFragment { +public class FileFragment extends Fragment { private OCFile mFile; @@ -44,7 +43,8 @@ public class FileFragment extends SherlockFragment { /** * Creates an empty fragment. * - * It's necessary to keep a public constructor without parameters; the system uses it when tries to reinstantiate a fragment automatically. + * It's necessary to keep a public constructor without parameters; the system uses it when + * tries to reinstantiate a fragment automatically. */ public FileFragment() { mFile = null; @@ -84,7 +84,8 @@ public class FileFragment extends SherlockFragment { mContainerActivity = (ContainerActivity) activity; } catch (ClassCastException e) { - throw new ClassCastException(activity.toString() + " must implement " + ContainerActivity.class.getSimpleName()); + throw new ClassCastException(activity.toString() + " must implement " + + ContainerActivity.class.getSimpleName()); } } @@ -113,11 +114,13 @@ public class FileFragment extends SherlockFragment { public void showDetails(OCFile file); - ///// TO UNIFY IN A SINGLE CALLBACK METHOD - EVENT NOTIFICATIONs -> something happened inside the fragment, MAYBE activity is interested --> unify in notification method + ///// TO UNIFY IN A SINGLE CALLBACK METHOD - EVENT NOTIFICATIONs -> something happened + // inside the fragment, MAYBE activity is interested --> unify in notification method /** - * Callback method invoked when a the user browsed into a different folder through the list of files + * Callback method invoked when a the user browsed into a different folder through the + * list of files * - * @param file + * @param folder */ public void onBrowsedDownTo(OCFile folder); @@ -126,11 +129,13 @@ public class FileFragment extends SherlockFragment { * * This happens when a download or upload is started or ended for a file. * - * This method is necessary by now to update the user interface of the double-pane layout in tablets - * because methods {@link FileDownloaderBinder#isDownloading(Account, OCFile)} and {@link FileUploaderBinder#isUploading(Account, OCFile)} + * This method is necessary by now to update the user interface of the double-pane layout + * in tablets because methods {@link FileDownloaderBinder#isDownloading(Account, OCFile)} + * and {@link FileUploaderBinder#isUploading(Account, OCFile)} * won't provide the needed response before the method where this is called finishes. * - * TODO Remove this when the transfer state of a file is kept in the database (other thing TODO) + * TODO Remove this when the transfer state of a file is kept in the database + * (other thing TODO) * * @param file OCFile which state changed. * @param downloading Flag signaling if the file is now downloading. diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 60ac78d9..dd8ed029 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -77,7 +77,8 @@ public class OCFileListFragment extends ExtendedListFragment { private boolean mJustFolders; private OCFile mTargetFile; - + + /** * {@inheritDoc} @@ -132,7 +133,7 @@ public class OCFileListFragment extends ExtendedListFragment { mJustFolders = (args == null) ? false : args.getBoolean(ARG_JUST_FOLDERS, false); mAdapter = new FileListListAdapter( mJustFolders, - getSherlockActivity(), + getActivity(), mContainerActivity ); setListAdapter(mAdapter); @@ -182,8 +183,9 @@ public class OCFileListFragment extends ExtendedListFragment { moveCount++; } // exit is granted because storageManager.getFileByPath("/") never returns null mFile = parentDir; - - listDirectory(mFile); + + // TODO Enable when "On Device" is recovered ? + listDirectory(mFile /*, MainApp.getOnlyOnDevice()*/); onRefresh(false); @@ -201,7 +203,8 @@ public class OCFileListFragment extends ExtendedListFragment { if (file != null) { if (file.isFolder()) { // update state and view of this fragment - listDirectory(file); + // TODO Enable when "On Device" is recovered ? + listDirectory(file/*, MainApp.getOnlyOnDevice()*/); // then, notify parent activity to let it update its state and view mContainerActivity.onBrowsedDownTo(file); // save index and top position @@ -244,7 +247,7 @@ public class OCFileListFragment extends ExtendedListFragment { boolean allowContextualActions = (args == null) ? true : args.getBoolean(ARG_ALLOW_CONTEXTUAL_ACTIONS, true); if (allowContextualActions) { - MenuInflater inflater = getSherlockActivity().getMenuInflater(); + MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.file_actions_menu, menu); AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; OCFile targetFile = (OCFile) mAdapter.getItem(info.position); @@ -254,14 +257,14 @@ public class OCFileListFragment extends ExtendedListFragment { targetFile, mContainerActivity.getStorageManager().getAccount(), mContainerActivity, - getSherlockActivity() + getActivity() ); mf.filter(menu); } /// TODO break this direct dependency on FileDisplayActivity... if possible MenuItem item = menu.findItem(R.id.action_open_file_with); - FileFragment frag = ((FileDisplayActivity)getSherlockActivity()).getSecondFragment(); + FileFragment frag = ((FileDisplayActivity)getActivity()).getSecondFragment(); if (frag != null && frag instanceof FileDetailFragment && frag.getFile().getFileId() == targetFile.getFileId()) { item = menu.findItem(R.id.action_see_details); @@ -355,8 +358,15 @@ public class OCFileListFragment extends ExtendedListFragment { /** * Calls {@link OCFileListFragment#listDirectory(OCFile)} with a null parameter */ - public void listDirectory(){ + public void listDirectory(/*boolean onlyOnDevice*/){ listDirectory(null); + // TODO Enable when "On Device" is recovered ? + // listDirectory(null, onlyOnDevice); + } + + public void refreshDirectory(){ + // TODO Enable when "On Device" is recovered ? + listDirectory(getCurrentFile()/*, MainApp.getOnlyOnDevice()*/); } /** @@ -366,7 +376,7 @@ public class OCFileListFragment extends ExtendedListFragment { * * @param directory File to be listed */ - public void listDirectory(OCFile directory) { + public void listDirectory(OCFile directory/*, boolean onlyOnDevice*/) { FileDataStorageManager storageManager = mContainerActivity.getStorageManager(); if (storageManager != null) { @@ -387,7 +397,8 @@ public class OCFileListFragment extends ExtendedListFragment { directory = storageManager.getFileById(directory.getParentId()); } - mAdapter.swapDirectory(directory, storageManager); + // TODO Enable when "On Device" is recovered ? + mAdapter.swapDirectory(directory, storageManager/*, onlyOnDevice*/); if (mFile == null || !mFile.equals(directory)) { mCurrentListView.setSelection(0); } @@ -459,5 +470,7 @@ public class OCFileListFragment extends ExtendedListFragment { public void sortBySize(boolean descending) { mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending); } - + + + } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index f3b2ddc7..2b0d96ce 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -8,7 +8,7 @@ * 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, + * This program is distributed in the hd 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. @@ -31,12 +31,14 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; +import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBar; +import android.view.MenuItem; import android.view.View; +import android.view.Window; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.view.MenuItem; -import com.actionbarsherlock.view.Window; import com.ortiz.touch.ExtendedViewPager; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -63,9 +65,9 @@ import com.owncloud.android.utils.DisplayUtils; /** * Holds a swiping galley where image files contained in an ownCloud directory are shown */ -public class PreviewImageActivity extends FileActivity implements - FileFragment.ContainerActivity, -ViewPager.OnPageChangeListener, OnRemoteOperationListener { +public class PreviewImageActivity extends FileActivity implements + FileFragment.ContainerActivity, + ViewPager.OnPageChangeListener, OnRemoteOperationListener { public static final int DIALOG_SHORT_WAIT = 0; @@ -90,16 +92,22 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { @Override protected void onCreate(Bundle savedInstanceState) { + requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); + super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); setContentView(R.layout.preview_image_activity); - + + // Navigation Drawer + initDrawer(); + + // ActionBar ActionBar actionBar = getSupportActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); - actionBar.setDisplayHomeAsUpEnabled(true); + updateActionBarTitleAndHomeButton(null); actionBar.hide(); + // Make sure we're running on Honeycomb or higher to use FullScreen and // Immersive Mode if (isHoneycombOrHigher()) { @@ -107,7 +115,8 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { mFullScreenAnchorView = getWindow().getDecorView(); // to keep our UI controls visibility in line with system bars // visibility - mFullScreenAnchorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { + mFullScreenAnchorView.setOnSystemUiVisibilityChangeListener + (new View.OnSystemUiVisibilityChangeListener() { @SuppressLint("InlinedApi") @Override public void onSystemUiVisibilityChange(int flags) { @@ -115,8 +124,10 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { ActionBar actionBar = getSupportActionBar(); if (visible) { actionBar.show(); + mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); } else { actionBar.hide(); + mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); } } }); @@ -133,21 +144,28 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { private void initViewPager() { // get parent from path - String parentPath = getFile().getRemotePath().substring(0, getFile().getRemotePath().lastIndexOf(getFile().getFileName())); + String parentPath = getFile().getRemotePath().substring(0, + getFile().getRemotePath().lastIndexOf(getFile().getFileName())); OCFile parentFolder = getStorageManager().getFileByPath(parentPath); if (parentFolder == null) { // should not be necessary parentFolder = getStorageManager().getFileByPath(OCFile.ROOT_PATH); } - mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(), parentFolder, getAccount(), getStorageManager()); + + // TODO Enable when "On Device" is recovered ? + mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(), + parentFolder, getAccount(), getStorageManager()/*, MainApp.getOnlyOnDevice()*/); + mViewPager = (ExtendedViewPager) findViewById(R.id.fragmentPager); - int position = mHasSavedPosition ? mSavedPosition : mPreviewImagePagerAdapter.getFilePosition(getFile()); + int position = mHasSavedPosition ? mSavedPosition : + mPreviewImagePagerAdapter.getFilePosition(getFile()); position = (position >= 0) ? position : 0; mViewPager.setAdapter(mPreviewImagePagerAdapter); mViewPager.setOnPageChangeListener(this); mViewPager.setCurrentItem(position); if (position == 0 && !getFile().isDown()) { - // this is necessary because mViewPager.setCurrentItem(0) just after setting the adapter does not result in a call to #onPageSelected(0) + // this is necessary because mViewPager.setCurrentItem(0) just after setting the + // adapter does not result in a call to #onPageSelected(0) mRequestWaitingForBinder = true; } } @@ -220,7 +238,8 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { } - private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { + private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { OCFile file = getStorageManager().getFileByPath(getFile().getRemotePath()); if (file != null) { @@ -233,7 +252,8 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { } - private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) { + private void onCreateShareOperationFinish(CreateShareOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { OCFile file = getStorageManager().getFileByPath(getFile().getRemotePath()); if (file != null) { @@ -254,15 +274,18 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { @Override public void onServiceConnected(ComponentName component, IBinder service) { - if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) { + if (component.equals(new ComponentName(PreviewImageActivity.this, + FileDownloader.class))) { mDownloaderBinder = (FileDownloaderBinder) service; if (mRequestWaitingForBinder) { mRequestWaitingForBinder = false; - Log_OC.d(TAG, "Simulating reselection of current page after connection of download binder"); + Log_OC.d(TAG, "Simulating reselection of current page after connection " + + "of download binder"); onPageSelected(mViewPager.getCurrentItem()); } - } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) { + } else if (component.equals(new ComponentName(PreviewImageActivity.this, + FileUploader.class))) { Log_OC.d(TAG, "Upload service connected"); mUploaderBinder = (FileUploaderBinder) service; } else { @@ -273,10 +296,12 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { @Override public void onServiceDisconnected(ComponentName component) { - if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) { + if (component.equals(new ComponentName(PreviewImageActivity.this, + FileDownloader.class))) { Log_OC.d(TAG, "Download service suddenly disconnected"); mDownloaderBinder = null; - } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) { + } else if (component.equals(new ComponentName(PreviewImageActivity.this, + FileUploader.class))) { Log_OC.d(TAG, "Upload service suddenly disconnected"); mUploaderBinder = null; } @@ -301,7 +326,11 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { switch(item.getItemId()){ case android.R.id.home: - backToDisplayActivity(); + if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { + mDrawerLayout.closeDrawer(GravityCompat.START); + } else { + backToDisplayActivity(); + } returnValue = true; break; default: @@ -348,7 +377,8 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class); showDetailsIntent.setAction(FileDisplayActivity.ACTION_DETAILS); showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, file); - showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); + showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, + AccountUtils.getCurrentOwnCloudAccount(this)); startActivity(showDetailsIntent); int pos = mPreviewImagePagerAdapter.getFilePosition(file); file = mPreviewImagePagerAdapter.getFileAt(pos); @@ -369,9 +399,10 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { } /** - * This method will be invoked when a new page becomes selected. Animation is not necessarily complete. + * This method will be invoked when a new page becomes selected. Animation is not necessarily + * complete. * - * @param Position Position index of the new selected page + * @param position Position index of the new selected page */ @Override public void onPageSelected(int position) { @@ -383,6 +414,7 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { } else { OCFile currentFile = mPreviewImagePagerAdapter.getFileAt(position); getSupportActionBar().setTitle(currentFile.getFileName()); + mDrawerToggle.setDrawerIndicatorEnabled(false); if (!currentFile.isDown()) { if (!mPreviewImagePagerAdapter.pendingErrorAt(position)) { requestForDownload(currentFile); @@ -399,20 +431,22 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { * Called when the scroll state changes. Useful for discovering when the user begins dragging, * when the pager is automatically settling to the current page. when it is fully stopped/idle. * - * @param State The new scroll state (SCROLL_STATE_IDLE, _DRAGGING, _SETTLING + * @param state The new scroll state (SCROLL_STATE_IDLE, _DRAGGING, _SETTLING */ @Override public void onPageScrollStateChanged(int state) { } /** - * This method will be invoked when the current page is scrolled, either as part of a programmatically - * initiated smooth scroll or a user initiated touch scroll. + * This method will be invoked when the current page is scrolled, either as part of a + * programmatically initiated smooth scroll or a user initiated touch scroll. * * @param position Position index of the first page currently being displayed. - * Page position+1 will be visible if positionOffset is nonzero. + * Page position+1 will be visible if positionOffset is + * nonzero. * - * @param positionOffset Value from [0, 1) indicating the offset from the page at position. + * @param positionOffset Value from [0, 1) indicating the offset from the page + * at position. * @param positionOffsetPixels Value in pixels indicating the offset from position. */ @Override @@ -436,17 +470,21 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { OCFile file = getStorageManager().getFileByPath(downloadedRemotePath); int position = mPreviewImagePagerAdapter.getFilePosition(file); - boolean downloadWasFine = intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false); - //boolean isOffscreen = Math.abs((mViewPager.getCurrentItem() - position)) <= mViewPager.getOffscreenPageLimit(); + boolean downloadWasFine = intent.getBooleanExtra( + FileDownloader.EXTRA_DOWNLOAD_RESULT, false); + //boolean isOffscreen = Math.abs((mViewPager.getCurrentItem() - position)) + // <= mViewPager.getOffscreenPageLimit(); - if (position >= 0 && intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) { + if (position >= 0 && + intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) { if (downloadWasFine) { mPreviewImagePagerAdapter.updateFile(position, file); } else { mPreviewImagePagerAdapter.updateWithDownloadError(position); } - mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation of new fragments + mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation + // of new fragments } else { Log_OC.d(TAG, "Download finished, but the fragment is offscreen"); @@ -481,9 +519,11 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { ActionBar actionBar = getSupportActionBar(); if (!actionBar.isShowing()) { actionBar.show(); + mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); } else { actionBar.hide(); + mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); } @@ -567,4 +607,10 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { } return false; } + + @Override + public void allFilesOption(){ + backToDisplayActivity(); + super.allFilesOption(); + } } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java index af69a1a1..7950ec98 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -30,6 +30,9 @@ import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentStatePagerAdapter; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -37,9 +40,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.FileMenuFilter; @@ -55,10 +55,12 @@ import third_parties.michaelOrtiz.TouchImageViewCustom; /** * This fragment shows a preview of a downloaded image. + * + * Trying to get an instance with a NULL {@link OCFile} will produce an + * {@link IllegalStateException}. * - * Trying to get an instance with a NULL {@link OCFile} will produce an {@link IllegalStateException}. - * - * If the {@link OCFile} passed is not downloaded, an {@link IllegalStateException} is generated on instantiation too. + * If the {@link OCFile} passed is not downloaded, an {@link IllegalStateException} is generated on + * instantiation too. */ public class PreviewImageFragment extends FileFragment { @@ -83,16 +85,18 @@ public class PreviewImageFragment extends FileFragment { /** * Public factory method to create a new fragment that previews an image. * - * Android strongly recommends keep the empty constructor of fragments as the only public constructor, and + * Android strongly recommends keep the empty constructor of fragments as the only public + * constructor, and * use {@link #setArguments(Bundle)} to set the needed arguments. * * This method hides to client objects the need of doing the construction in two steps. * * @param imageFile An {@link OCFile} to preview as an image in the fragment - * @param ignoreFirstSavedState Flag to work around an unexpected behaviour of {@link FragmentStatePagerAdapter} + * @param ignoreFirstSavedState Flag to work around an unexpected behaviour of + * {@link FragmentStatePagerAdapter} * ; TODO better solution */ - public static PreviewImageFragment newInstance(OCFile imageFile, boolean ignoreFirstSavedState) { + public static PreviewImageFragment newInstance(OCFile imageFile, boolean ignoreFirstSavedState){ PreviewImageFragment frag = new PreviewImageFragment(); Bundle args = new Bundle(); args.putParcelable(ARG_FILE, imageFile); @@ -109,7 +113,8 @@ public class PreviewImageFragment extends FileFragment { * MUST BE KEPT: the system uses it when tries to reinstantiate a fragment automatically * (for instance, when the device is turned a aside). * - * DO NOT CALL IT: an {@link OCFile} and {@link Account} must be provided for a successful construction + * DO NOT CALL IT: an {@link OCFile} and {@link Account} must be provided for a successful + * construction */ public PreviewImageFragment() { mIgnoreFirstSavedState = false; @@ -124,7 +129,8 @@ public class PreviewImageFragment extends FileFragment { super.onCreate(savedInstanceState); Bundle args = getArguments(); setFile((OCFile)args.getParcelable(ARG_FILE)); - // TODO better in super, but needs to check ALL the class extending FileFragment; not right now + // TODO better in super, but needs to check ALL the class extending FileFragment; + // not right now mIgnoreFirstSavedState = args.getBoolean(ARG_IGNORE_FIRST); setHasOptionsMenu(true); @@ -233,7 +239,7 @@ public class PreviewImageFragment extends FileFragment { getFile(), mContainerActivity.getStorageManager().getAccount(), mContainerActivity, - getSherlockActivity() + getActivity() ); mf.filter(menu); } @@ -329,8 +335,8 @@ public class PreviewImageFragment extends FileFragment { mBitmap.recycle(); System.gc(); // putting this in onStop() is just the same; the fragment is always destroyed by - // {@link FragmentStatePagerAdapter} when the fragment in swiped further than the valid offscreen - // distance, and onStop() is never called before than that + // {@link FragmentStatePagerAdapter} when the fragment in swiped further than the + // valid offscreen distance, and onStop() is never called before than that } super.onDestroy(); } @@ -349,17 +355,17 @@ public class PreviewImageFragment extends FileFragment { /** * Weak reference to the target {@link ImageView} where the bitmap will be loaded into. - * - * Using a weak reference will avoid memory leaks if the target ImageView is retired from memory before - * the load finishes. + * + * Using a weak reference will avoid memory leaks if the target ImageView is retired from + * memory before the load finishes. */ private final WeakReference mImageViewRef; /** * Weak reference to the target {@link TextView} where error messages will be written. - * - * Using a weak reference will avoid memory leaks if the target ImageView is retired from memory before the - * load finishes. + * + * Using a weak reference will avoid memory leaks if the target ImageView is retired from + * memory before the load finishes. */ private final WeakReference mMessageViewRef; @@ -367,7 +373,8 @@ public class PreviewImageFragment extends FileFragment { /** * Weak reference to the target {@link ProgressBar} shown while the load is in progress. * - * Using a weak reference will avoid memory leaks if the target ImageView is retired from memory before the load finishes. + * Using a weak reference will avoid memory leaks if the target ImageView is retired from + * memory before the load finishes. */ private final WeakReference mProgressWheelRef; @@ -383,7 +390,8 @@ public class PreviewImageFragment extends FileFragment { * * @param imageView Target {@link ImageView} where the bitmap will be loaded into. */ - public LoadBitmapTask(ImageViewCustom imageView, TextView messageView, ProgressBar progressWheel) { + public LoadBitmapTask(ImageViewCustom imageView, TextView messageView, + ProgressBar progressWheel) { mImageViewRef = new WeakReference(imageView); mMessageViewRef = new WeakReference(messageView); mProgressWheelRef = new WeakReference(progressWheel); @@ -404,7 +412,8 @@ public class PreviewImageFragment extends FileFragment { for (int i = 0; i < maxDownScale && result == null; i++) { if (isCancelled()) return null; try { - result = BitmapUtils.decodeSampledBitmapFromFile(storagePath, minWidth, minHeight); + result = BitmapUtils.decodeSampledBitmapFromFile(storagePath, minWidth, + minHeight); if (isCancelled()) return result; @@ -420,12 +429,14 @@ public class PreviewImageFragment extends FileFragment { } catch (OutOfMemoryError e) { mErrorMessageId = R.string.common_error_out_memory; if (i < maxDownScale - 1) { - Log_OC.w(TAG, "Out of memory rendering file " + storagePath + " ; scaling down"); + Log_OC.w(TAG, "Out of memory rendering file " + storagePath + + " ; scaling down"); minWidth = minWidth / 2; minHeight = minHeight / 2; } else { - Log_OC.w(TAG, "Out of memory rendering file " + storagePath + " ; failing"); + Log_OC.w(TAG, "Out of memory rendering file " + storagePath + + " ; failing"); } if (result != null) { result.recycle(); @@ -473,7 +484,8 @@ public class PreviewImageFragment extends FileFragment { private void showLoadedImage(Bitmap result) { final ImageViewCustom imageView = mImageViewRef.get(); if (imageView != null) { - Log_OC.d(TAG, "Showing image with resolution " + result.getWidth() + "x" + result.getHeight()); + Log_OC.d(TAG, "Showing image with resolution " + result.getWidth() + "x" + + result.getHeight()); imageView.setImageBitmap(result); imageView.setVisibility(View.VISIBLE); mBitmap = result; // needs to be kept for recycling when not useful @@ -509,7 +521,8 @@ public class PreviewImageFragment extends FileFragment { } /** - * Helper method to test if an {@link OCFile} can be passed to a {@link PreviewImageFragment} to be previewed. + * Helper method to test if an {@link OCFile} can be passed to a {@link PreviewImageFragment} + * to be previewed. * * @param file File to test if can be previewed. * @return 'True' if the file can be handled by the fragment. diff --git a/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java b/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java index 6e7f19d4..dda7dda2 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java +++ b/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java @@ -19,8 +19,6 @@ */ package com.owncloud.android.ui.preview; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -36,7 +34,6 @@ import android.view.ViewGroup; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.ui.adapter.FileListListAdapter; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.utils.FileStorageUtils; @@ -58,11 +55,14 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter { /** * Constructor. * - * @param fragmentManager {@link FragmentManager} instance that will handle the {@link Fragment}s provided by the adapter. + * @param fragmentManager {@link FragmentManager} instance that will handle + * the {@link Fragment}s provided by the adapter. * @param parentFolder Folder where images will be searched for. * @param storageManager Bridge to database. */ - public PreviewImagePagerAdapter(FragmentManager fragmentManager, OCFile parentFolder, Account account, FileDataStorageManager storageManager) { + public PreviewImagePagerAdapter(FragmentManager fragmentManager, OCFile parentFolder, + Account account, FileDataStorageManager storageManager /*, + boolean onlyOnDevice*/) { super(fragmentManager); if (fragmentManager == null) { @@ -77,7 +77,8 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter { mAccount = account; mStorageManager = storageManager; - mImageFiles = mStorageManager.getFolderImages(parentFolder); + // TODO Enable when "On Device" is recovered ? + mImageFiles = mStorageManager.getFolderImages(parentFolder/*, false*/); mImageFiles = FileStorageUtils.sortFolder(mImageFiles); @@ -102,7 +103,8 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter { OCFile file = mImageFiles.get(i); Fragment fragment = null; if (file.isDown()) { - fragment = PreviewImageFragment.newInstance(file, mObsoletePositions.contains(Integer.valueOf(i))); + fragment = PreviewImageFragment.newInstance(file, + mObsoletePositions.contains(Integer.valueOf(i))); } else if (mDownloadErrors.contains(Integer.valueOf(i))) { fragment = FileDownloadFragment.newInstance(file, mAccount, true); diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index d82faa59..c5883cfc 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -28,6 +28,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.ServiceConnection; import android.content.res.Configuration; +import android.content.res.Resources; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; @@ -37,6 +38,9 @@ import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; @@ -45,9 +49,6 @@ import android.widget.ImageView; import android.widget.Toast; import android.widget.VideoView; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.FileMenuFilter; @@ -64,9 +65,11 @@ import com.owncloud.android.ui.fragment.FileFragment; /** * This fragment shows a preview of a downloaded media file (audio or video). * - * Trying to get an instance with NULL {@link OCFile} or ownCloud {@link Account} values will produce an {@link IllegalStateException}. + * Trying to get an instance with NULL {@link OCFile} or ownCloud {@link Account} values will + * produce an {@link IllegalStateException}. * - * By now, if the {@link OCFile} passed is not downloaded, an {@link IllegalStateException} is generated on instantiation too. + * By now, if the {@link OCFile} passed is not downloaded, an {@link IllegalStateException} is + * generated on instantiation too. */ public class PreviewMediaFragment extends FileFragment implements OnTouchListener { @@ -251,9 +254,9 @@ public class PreviewMediaFragment extends FileFragment implements private void stopAudio() { - Intent i = new Intent(getSherlockActivity(), MediaService.class); + Intent i = new Intent(getActivity(), MediaService.class); i.setAction(MediaService.ACTION_STOP_ALL); - getSherlockActivity().startService(i); + getActivity().startService(i); } @@ -279,7 +282,7 @@ public class PreviewMediaFragment extends FileFragment implements getFile(), mContainerActivity.getStorageManager().getAccount(), mContainerActivity, - getSherlockActivity() + getActivity() ); mf.filter(menu); } @@ -393,7 +396,7 @@ public class PreviewMediaFragment extends FileFragment implements * * Just starts the playback. * - * @param mp {@link MediaPlayer} instance performing the playback. + * @param vp {@link MediaPlayer} instance performing the playback. */ @Override public void onPrepared(MediaPlayer vp) { @@ -449,8 +452,8 @@ public class PreviewMediaFragment extends FileFragment implements public boolean onError(MediaPlayer mp, int what, int extra) { if (mVideoPreview.getWindowToken() != null) { String message = MediaService.getMessageForMediaError( - getSherlockActivity(), what, extra); - new AlertDialog.Builder(getSherlockActivity()) + getActivity(), what, extra); + new AlertDialog.Builder(getActivity()) .setMessage(message) .setPositiveButton(android.R.string.VideoView_error_button, new DialogInterface.OnClickListener() { @@ -496,7 +499,7 @@ public class PreviewMediaFragment extends FileFragment implements if (mMediaServiceBinder != null && mMediaController != null) { mMediaServiceBinder.unregisterMediaController(mMediaController); } - getSherlockActivity().unbindService(mMediaServiceConnection); + getActivity().unbindService(mMediaServiceConnection); mMediaServiceConnection = null; mMediaServiceBinder = null; } @@ -507,7 +510,10 @@ public class PreviewMediaFragment extends FileFragment implements @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN && v == mVideoPreview) { - startFullScreenVideo(); + // added a margin on the left to avoid interfering with gesture to open navigation drawer + if (event.getX() / Resources.getSystem().getDisplayMetrics().density > 24.0) { + startFullScreenVideo(); + } return true; } return false; @@ -515,7 +521,7 @@ public class PreviewMediaFragment extends FileFragment implements private void startFullScreenVideo() { - Intent i = new Intent(getSherlockActivity(), PreviewVideoActivity.class); + Intent i = new Intent(getActivity(), PreviewVideoActivity.class); i.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount); i.putExtra(FileActivity.EXTRA_FILE, getFile()); i.putExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, mVideoPreview.isPlaying()); @@ -561,7 +567,7 @@ public class PreviewMediaFragment extends FileFragment implements if (mMediaServiceConnection == null) { mMediaServiceConnection = new MediaServiceConnection(); } - getSherlockActivity().bindService( new Intent(getSherlockActivity(), + getActivity().bindService( new Intent(getActivity(), MediaService.class), mMediaServiceConnection, Context.BIND_AUTO_CREATE); @@ -573,9 +579,9 @@ public class PreviewMediaFragment extends FileFragment implements @Override public void onServiceConnected(ComponentName component, IBinder service) { - if (getSherlockActivity() != null) { + if (getActivity() != null) { if (component.equals( - new ComponentName(getSherlockActivity(), MediaService.class))) { + new ComponentName(getActivity(), MediaService.class))) { Log_OC.d(TAG, "Media service connected"); mMediaServiceBinder = (MediaServiceBinder) service; if (mMediaServiceBinder != null) { @@ -602,13 +608,13 @@ public class PreviewMediaFragment extends FileFragment implements @Override public void onServiceDisconnected(ComponentName component) { - if (component.equals(new ComponentName(getSherlockActivity(), MediaService.class))) { + if (component.equals(new ComponentName(getActivity(), MediaService.class))) { Log_OC.e(TAG, "Media service suddenly disconnected"); if (mMediaController != null) { mMediaController.setMediaPlayer(null); } else { Toast.makeText( - getSherlockActivity(), + getActivity(), "No media controller to release when disconnected from media service", Toast.LENGTH_SHORT).show(); } @@ -657,7 +663,7 @@ public class PreviewMediaFragment extends FileFragment implements * Finishes the preview */ private void finish() { - getSherlockActivity().onBackPressed(); + getActivity().onBackPressed(); } diff --git a/src/com/owncloud/android/utils/BitmapUtils.java b/src/com/owncloud/android/utils/BitmapUtils.java index 7b9382e6..4cc9fff4 100644 --- a/src/com/owncloud/android/utils/BitmapUtils.java +++ b/src/com/owncloud/android/utils/BitmapUtils.java @@ -178,6 +178,83 @@ public class BitmapUtils { } /** + * Convert HSL values to a RGB Color. + * + * @param h Hue is specified as degrees in the range 0 - 360. + * @param s Saturation is specified as a percentage in the range 1 - 100. + * @param l Lumanance is specified as a percentage in the range 1 - 100. + * @paran alpha the alpha value between 0 - 1 + * adapted from https://svn.codehaus.org/griffon/builders/gfxbuilder/tags/GFXBUILDER_0.2/ + * gfxbuilder-core/src/main/com/camick/awt/HSLColor.java + */ + public static int[] HSLtoRGB(float h, float s, float l, float alpha) + { + if (s <0.0f || s > 100.0f) + { + String message = "Color parameter outside of expected range - Saturation"; + throw new IllegalArgumentException( message ); + } + + if (l <0.0f || l > 100.0f) + { + String message = "Color parameter outside of expected range - Luminance"; + throw new IllegalArgumentException( message ); + } + + if (alpha <0.0f || alpha > 1.0f) + { + String message = "Color parameter outside of expected range - Alpha"; + throw new IllegalArgumentException( message ); + } + + // Formula needs all values between 0 - 1. + + h = h % 360.0f; + h /= 360f; + s /= 100f; + l /= 100f; + + float q = 0; + + if (l < 0.5) + q = l * (1 + s); + else + q = (l + s) - (s * l); + + float p = 2 * l - q; + + int r = Math.round(Math.max(0, HueToRGB(p, q, h + (1.0f / 3.0f)) * 256)); + int g = Math.round(Math.max(0, HueToRGB(p, q, h) * 256)); + int b = Math.round(Math.max(0, HueToRGB(p, q, h - (1.0f / 3.0f)) * 256)); + + int[] array = {r, g, b}; + return array; + } + + private static float HueToRGB(float p, float q, float h){ + if (h < 0) h += 1; + + if (h > 1 ) h -= 1; + + if (6 * h < 1) + { + return p + ((q - p) * 6 * h); + } + + if (2 * h < 1 ) + { + return q; + } + + if (3 * h < 2) + { + return p + ( (q - p) * 6 * ((2.0f / 3.0f) - h) ); + } + + return p; + } + + /** * Checks if file passed is an image * @param file * @return true/false diff --git a/third_party/android-support-library/android-support-v4.jar b/third_party/android-support-library/android-support-v4.jar deleted file mode 100644 index d0b85355..00000000 Binary files a/third_party/android-support-library/android-support-v4.jar and /dev/null differ