├── .classpath
├── .gitignore
├── AndroidManifest.xml
├── LICENSE
├── README.md
├── assets
└── fonts
│ ├── Roboto_Light.ttf
│ ├── Roboto_Regular.ttf
│ └── Roboto_Thin.ttf
├── build.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── libs
├── SystemBarTint.jar
└── msqlite.jar
├── lint.xml
├── proguard-project.txt
├── proguard.cfg
├── res
├── drawable-hdpi
│ ├── card_image_error.png
│ ├── card_image_placeholder.png
│ ├── drawer_shadow.9.png
│ ├── folder_logo.png
│ ├── ic_about.png
│ ├── ic_copy.png
│ ├── ic_create_folder.png
│ ├── ic_cut.png
│ ├── ic_delete.png
│ ├── ic_drawer.png
│ ├── ic_favourite.png
│ ├── ic_favourite_not.png
│ ├── ic_feedback.png
│ ├── ic_launcher.png
│ ├── ic_navigate_up.png
│ ├── ic_other_apps.png
│ ├── ic_paste.png
│ ├── ic_refresh.png
│ ├── ic_rename.png
│ ├── ic_select_all.png
│ ├── icon_documents.png
│ ├── icon_downloads.png
│ ├── icon_file.png
│ ├── icon_folder.png
│ ├── icon_home_file.png
│ ├── icon_home_folder.png
│ ├── icon_home_shortcut.png
│ ├── icon_movies.png
│ ├── icon_music.png
│ ├── icon_pictures.png
│ └── icon_selected.png
├── drawable-mdpi
│ ├── drawer_shadow.9.png
│ ├── ic_about.png
│ ├── ic_copy.png
│ ├── ic_create_folder.png
│ ├── ic_cut.png
│ ├── ic_delete.png
│ ├── ic_drawer.png
│ ├── ic_favourite.png
│ ├── ic_favourite_not.png
│ ├── ic_feedback.png
│ ├── ic_launcher.png
│ ├── ic_navigate_up.png
│ ├── ic_other_apps.png
│ ├── ic_paste.png
│ ├── ic_refresh.png
│ ├── ic_rename.png
│ ├── ic_select_all.png
│ ├── icon_home_file.png
│ ├── icon_home_folder.png
│ └── icon_home_shortcut.png
├── drawable-xhdpi
│ ├── card_image_error.png
│ ├── card_image_placeholder.png
│ ├── drawer_shadow.9.png
│ ├── fast_scroll_handle_default.png
│ ├── fast_scroll_handle_pressed.png
│ ├── fast_scroll_track.9.png
│ ├── folder_logo.png
│ ├── ic_about.png
│ ├── ic_copy.png
│ ├── ic_create_folder.png
│ ├── ic_cut.png
│ ├── ic_delete.png
│ ├── ic_drawer.png
│ ├── ic_favourite.png
│ ├── ic_favourite_not.png
│ ├── ic_feedback.png
│ ├── ic_launcher.png
│ ├── ic_navigate_up.png
│ ├── ic_other_apps.png
│ ├── ic_paste.png
│ ├── ic_refresh.png
│ ├── ic_rename.png
│ ├── ic_select_all.png
│ ├── icon_documents.png
│ ├── icon_downloads.png
│ ├── icon_file.png
│ ├── icon_folder.png
│ ├── icon_home_file.png
│ ├── icon_home_folder.png
│ ├── icon_home_shortcut.png
│ ├── icon_movies.png
│ ├── icon_music.png
│ ├── icon_pictures.png
│ ├── icon_sdcard.png
│ └── icon_selected.png
├── drawable-xxhdpi
│ ├── card_image_error.png
│ ├── card_image_placeholder.png
│ ├── folder_logo.png
│ ├── ic_launcher.png
│ ├── icon_documents.png
│ ├── icon_downloads.png
│ ├── icon_file.png
│ ├── icon_folder.png
│ ├── icon_home_file.png
│ ├── icon_home_folder.png
│ ├── icon_home_shortcut.png
│ ├── icon_movies.png
│ ├── icon_music.png
│ ├── icon_pictures.png
│ └── icon_selected.png
├── drawable-xxxhdpi
│ ├── ic_launcher.png
│ ├── icon_home_file.png
│ ├── icon_home_folder.png
│ └── icon_home_shortcut.png
├── drawable
│ ├── card.xml
│ ├── card_selected.xml
│ ├── card_selected_clicked.xml
│ ├── fast_scroll_handle.xml
│ ├── list_item_selected.xml
│ ├── list_item_selected_pressed.xml
│ ├── selector_card.xml
│ ├── selector_card_selected.xml
│ ├── selector_list_item.xml
│ └── selector_list_item_selected.xml
├── layout
│ ├── activity_about.xml
│ ├── activity_main.xml
│ ├── dialog_edittext.xml
│ ├── fragment_list.xml
│ ├── layout_clipboard_drawer.xml
│ ├── layout_nav_drawer.xml
│ ├── list_item_file.xml
│ ├── list_item_file_card.xml
│ ├── list_item_file_card_image.xml
│ └── list_item_file_card_text.xml
├── menu
│ ├── about.xml
│ ├── action_file.xml
│ ├── action_file_single.xml
│ ├── folder_browser.xml
│ └── main.xml
├── values-cs
│ └── strings.xml
├── values-de
│ └── strings.xml
├── values-fr
│ └── strings.xml
├── values-it
│ └── strings.xml
├── values-pl
│ └── strings.xml
├── values-sw600dp
│ └── dimens.xml
├── values-sw720dp-land
│ └── dimens.xml
├── values-v19
│ └── styles.xml
└── values
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
└── src
└── com
└── michaldabski
├── filemanager
├── AppPreferences.java
├── BaseFileAdapter.java
├── FileManagerApplication.java
├── RobotoAdapter.java
├── about
│ └── AboutActivity.java
├── clipboard
│ ├── Clipboard.java
│ ├── ClipboardFileAdapter.java
│ └── FileOperationListener.java
├── favourites
│ ├── FavouriteFolder.java
│ └── FavouritesManager.java
├── folders
│ ├── CardPreviewer.java
│ ├── FileAdapter.java
│ ├── FileCardAdapter.java
│ ├── FolderActivity.java
│ └── FolderFragment.java
├── nav_drawer
│ ├── NavDrawerAdapter.java
│ ├── NavDrawerDivider.java
│ └── NavDrawerShortcut.java
└── sqlite
│ └── SQLiteHelper.java
└── utils
├── AsyncResult.java
├── BitmapUtils.java
├── FileIconResolver.java
├── FilePreviewCache.java
├── FileUtils.java
├── FontApplicator.java
├── IntentUtils.java
├── ListViewUtils.java
├── OnResultListener.java
├── ViewHolder.java
└── ViewTraverser.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # built application files
2 | *.apk
3 | *.ap_
4 |
5 | # files for the dex VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # generated files
12 | bin/
13 | gen/
14 |
15 | # Local configuration file (sdk path, etc)
16 | local.properties
17 |
18 | # Additional
19 | target
20 | .settings
21 | .project
22 | project.properties
23 | *.log
24 |
25 | .idea/
26 | out/
27 | .gradle/
28 | build/
29 | *.iml
30 | .DS_Store
31 | proguard/
32 |
--------------------------------------------------------------------------------
/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
26 |
27 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
45 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
60 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Michal Dabski
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #File Manager
2 | 
3 |
4 | [](https://play.google.com/store/apps/details?id=com.michaldabski.filemanager)
5 |
6 | All New File Manager designed for ease of use and beautiful interface. It boasts the ability to bookmark folders, add file and folder shortcuts to homescreen, and takes advantage of Android KitKat's transparent bars.
7 | ##Features
8 | * Easily bookmark important folders
9 | * Add shortcuts to folders and files to homescreen
10 | * Easily select and share your files
11 | * windows-style icons show icon of the app that opens the file
12 | * Card layout shows previews for file and folder contents
13 | * Minimalistic and flat design makes the app intuitive and pleasant to use
14 |
15 | 
16 | 
17 | 
18 |
19 | [More info...](http://www.michaldabski.com/file-manager/)
--------------------------------------------------------------------------------
/assets/fonts/Roboto_Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/assets/fonts/Roboto_Light.ttf
--------------------------------------------------------------------------------
/assets/fonts/Roboto_Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/assets/fonts/Roboto_Regular.ttf
--------------------------------------------------------------------------------
/assets/fonts/Roboto_Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/assets/fonts/Roboto_Thin.ttf
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | mavenCentral()
4 | }
5 | dependencies {
6 | classpath 'com.android.tools.build:gradle:1.0.0'
7 | }
8 | }
9 | apply plugin: 'com.android.application'
10 |
11 | dependencies {
12 | compile fileTree(include: '*.jar', dir: 'libs')
13 | compile 'com.android.support:support-v4:21.0.0'
14 | }
15 |
16 | android {
17 | compileSdkVersion 21
18 | buildToolsVersion "21.1.1"
19 |
20 | sourceSets {
21 | main {
22 | manifest.srcFile 'AndroidManifest.xml'
23 | java.srcDirs = ['src']
24 | resources.srcDirs = ['src']
25 | aidl.srcDirs = ['src']
26 | renderscript.srcDirs = ['src']
27 | res.srcDirs = ['res']
28 | assets.srcDirs = ['assets']
29 | }
30 |
31 | // Move the tests to tests/java, tests/res, etc...
32 | instrumentTest.setRoot('tests')
33 |
34 | // Move the build types to build-types/
35 | // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
36 | // This moves them out of them default location under src//... which would
37 | // conflict with src/ being used by the main source set.
38 | // Adding new build types or product flavors should be accompanied
39 | // by a similar customization.
40 | debug.setRoot('build-types/debug')
41 | release.setRoot('build-types/release')
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Dec 12 20:10:44 GMT 2014
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # For Cygwin, ensure paths are in UNIX format before anything is touched.
46 | if $cygwin ; then
47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
48 | fi
49 |
50 | # Attempt to set APP_HOME
51 | # Resolve links: $0 may be a link
52 | PRG="$0"
53 | # Need this for relative symlinks.
54 | while [ -h "$PRG" ] ; do
55 | ls=`ls -ld "$PRG"`
56 | link=`expr "$ls" : '.*-> \(.*\)$'`
57 | if expr "$link" : '/.*' > /dev/null; then
58 | PRG="$link"
59 | else
60 | PRG=`dirname "$PRG"`"/$link"
61 | fi
62 | done
63 | SAVED="`pwd`"
64 | cd "`dirname \"$PRG\"`/" >&-
65 | APP_HOME="`pwd -P`"
66 | cd "$SAVED" >&-
67 |
68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
69 |
70 | # Determine the Java command to use to start the JVM.
71 | if [ -n "$JAVA_HOME" ] ; then
72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
73 | # IBM's JDK on AIX uses strange locations for the executables
74 | JAVACMD="$JAVA_HOME/jre/sh/java"
75 | else
76 | JAVACMD="$JAVA_HOME/bin/java"
77 | fi
78 | if [ ! -x "$JAVACMD" ] ; then
79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
80 |
81 | Please set the JAVA_HOME variable in your environment to match the
82 | location of your Java installation."
83 | fi
84 | else
85 | JAVACMD="java"
86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
87 |
88 | Please set the JAVA_HOME variable in your environment to match the
89 | location of your Java installation."
90 | fi
91 |
92 | # Increase the maximum file descriptors if we can.
93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
94 | MAX_FD_LIMIT=`ulimit -H -n`
95 | if [ $? -eq 0 ] ; then
96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
97 | MAX_FD="$MAX_FD_LIMIT"
98 | fi
99 | ulimit -n $MAX_FD
100 | if [ $? -ne 0 ] ; then
101 | warn "Could not set maximum file descriptor limit: $MAX_FD"
102 | fi
103 | else
104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
105 | fi
106 | fi
107 |
108 | # For Darwin, add options to specify how the application appears in the dock
109 | if $darwin; then
110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
111 | fi
112 |
113 | # For Cygwin, switch paths to Windows format before running java
114 | if $cygwin ; then
115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
158 | function splitJvmOpts() {
159 | JVM_OPTS=("$@")
160 | }
161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
163 |
164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/libs/SystemBarTint.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/libs/SystemBarTint.jar
--------------------------------------------------------------------------------
/libs/msqlite.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/libs/msqlite.jar
--------------------------------------------------------------------------------
/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/proguard-project.txt:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright (c) 2014 Michal Dabski
3 | #
4 | # Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | # this software and associated documentation files (the "Software"), to deal in
6 | # the Software without restriction, including without limitation the rights to
7 | # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | # the Software, and to permit persons to whom the Software is furnished to do so,
9 | # subject to the following conditions:
10 | #
11 | # The above copyright notice and this permission notice shall be included in all
12 | # copies or substantial portions of the Software.
13 | #
14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | #-------------------------------------------------------------------------------
21 | # To enable ProGuard in your project, edit project.properties
22 | # to define the proguard.config property as described in that file.
23 | #
24 | # Add project specific ProGuard rules here.
25 | # By default, the flags in this file are appended to flags specified
26 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
27 | # You can edit the include path and order by changing the ProGuard
28 | # include property in project.properties.
29 | #
30 | # For more details, see
31 | # http://developer.android.com/guide/developing/tools/proguard.html
32 |
33 | # Add any project specific keep options here:
34 |
35 | # If your project uses WebView with JS, uncomment the following
36 | # and specify the fully qualified class name to the JavaScript interface
37 | # class:
38 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
39 | # public *;
40 | #}
41 |
--------------------------------------------------------------------------------
/proguard.cfg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/proguard.cfg
--------------------------------------------------------------------------------
/res/drawable-hdpi/card_image_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/card_image_error.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/card_image_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/card_image_placeholder.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/folder_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/folder_logo.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_about.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_copy.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_create_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_create_folder.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_cut.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_delete.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_drawer.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_favourite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_favourite.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_favourite_not.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_favourite_not.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_feedback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_feedback.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_navigate_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_navigate_up.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_other_apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_other_apps.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_paste.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_refresh.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_rename.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_rename.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_select_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/ic_select_all.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_documents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_documents.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_downloads.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_downloads.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_file.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_folder.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_home_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_home_file.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_home_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_home_folder.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_home_shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_home_shortcut.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_movies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_movies.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_music.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_pictures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_pictures.png
--------------------------------------------------------------------------------
/res/drawable-hdpi/icon_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-hdpi/icon_selected.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_about.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_copy.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_create_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_create_folder.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_cut.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_delete.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_drawer.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_favourite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_favourite.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_favourite_not.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_favourite_not.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_feedback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_feedback.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_navigate_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_navigate_up.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_other_apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_other_apps.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_paste.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_refresh.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_rename.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_rename.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_select_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/ic_select_all.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/icon_home_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/icon_home_file.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/icon_home_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/icon_home_folder.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/icon_home_shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-mdpi/icon_home_shortcut.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/card_image_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/card_image_error.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/card_image_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/card_image_placeholder.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/fast_scroll_handle_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/fast_scroll_handle_default.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/fast_scroll_handle_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/fast_scroll_handle_pressed.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/fast_scroll_track.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/fast_scroll_track.9.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/folder_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/folder_logo.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_about.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_copy.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_create_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_create_folder.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_cut.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_delete.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_drawer.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_favourite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_favourite.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_favourite_not.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_favourite_not.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_feedback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_feedback.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_navigate_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_navigate_up.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_other_apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_other_apps.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_paste.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_refresh.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_rename.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_rename.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_select_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/ic_select_all.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_documents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_documents.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_downloads.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_downloads.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_file.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_folder.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_home_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_home_file.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_home_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_home_folder.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_home_shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_home_shortcut.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_movies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_movies.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_music.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_pictures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_pictures.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_sdcard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_sdcard.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/icon_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xhdpi/icon_selected.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/card_image_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/card_image_error.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/card_image_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/card_image_placeholder.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/folder_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/folder_logo.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_documents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_documents.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_downloads.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_downloads.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_file.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_folder.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_home_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_home_file.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_home_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_home_folder.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_home_shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_home_shortcut.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_movies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_movies.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_music.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_pictures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_pictures.png
--------------------------------------------------------------------------------
/res/drawable-xxhdpi/icon_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxhdpi/icon_selected.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/icon_home_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxxhdpi/icon_home_file.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/icon_home_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxxhdpi/icon_home_folder.png
--------------------------------------------------------------------------------
/res/drawable-xxxhdpi/icon_home_shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mick88/filemanager/fda744e29f3e11ed6dcb94ec1203c310a5ce6e0b/res/drawable-xxxhdpi/icon_home_shortcut.png
--------------------------------------------------------------------------------
/res/drawable/card.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 | -
24 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | -
35 |
37 |
38 |
39 |
40 |
41 |
42 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/res/drawable/card_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 | -
24 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | -
35 |
37 |
38 |
39 |
40 |
41 |
42 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/res/drawable/card_selected_clicked.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 | -
24 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | -
35 |
37 |
38 |
39 |
40 |
41 |
42 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/res/drawable/fast_scroll_handle.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/res/drawable/list_item_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/res/drawable/list_item_selected_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/res/drawable/selector_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/drawable/selector_card_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/drawable/selector_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/drawable/selector_list_item_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/layout/activity_about.xml:
--------------------------------------------------------------------------------
1 |
21 |
33 |
34 |
39 |
40 |
47 |
48 |
54 |
55 |
63 |
64 |
71 |
72 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
28 |
29 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/res/layout/dialog_edittext.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
26 |
27 |
32 |
33 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/res/layout/fragment_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
27 |
28 |
41 |
42 |
49 |
50 |
55 |
56 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/res/layout/layout_clipboard_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
35 |
--------------------------------------------------------------------------------
/res/layout/layout_nav_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
32 |
--------------------------------------------------------------------------------
/res/layout/list_item_file.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
28 |
29 |
38 |
39 |
52 |
53 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/res/layout/list_item_file_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
25 |
26 |
32 |
33 |
40 |
41 |
48 |
49 |
56 |
57 |
58 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/res/layout/list_item_file_card_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
25 |
26 |
32 |
33 |
41 |
42 |
50 |
51 |
58 |
59 |
66 |
67 |
68 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/res/layout/list_item_file_card_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
25 |
26 |
32 |
33 |
40 |
41 |
49 |
50 |
57 |
58 |
65 |
66 |
67 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/res/menu/about.xml:
--------------------------------------------------------------------------------
1 |
21 |
24 |
--------------------------------------------------------------------------------
/res/menu/action_file.xml:
--------------------------------------------------------------------------------
1 |
21 |
71 |
--------------------------------------------------------------------------------
/res/menu/action_file_single.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/res/menu/folder_browser.xml:
--------------------------------------------------------------------------------
1 |
21 |
79 |
--------------------------------------------------------------------------------
/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
21 |
31 |
--------------------------------------------------------------------------------
/res/values-cs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 | File Manager Pro
25 | O aplikaci
26 | Nelze načíst adresář %s
27 | Otevřít %s s:
28 | Velikost: %s
29 | %d položek
30 | Otevřít šuplík
31 | Zavřít šuplík
32 | Odstranit z oblíbených
33 | Prázdný adresář
34 | Smazat
35 | %d objektů
36 | Smazat %d položek?
37 | Vybrat vše
38 | Přejmenovat
39 | Sdílet
40 | %d soubory smazány
41 | Vytvořit odkaz
42 | Vytvořit odkazy
43 | Odkazy přidány na domovskou obrazovku
44 | Kořen
45 | Vyjmout
46 | Vložit sem
47 | Objekty vloženy do schránky
48 | Soubory vloženy
49 | Schránka je prázdná
50 | Obnovit
51 | Kopírovat
52 | Objekty zkopírovány do schránky
53 | Vytvořit adresář
54 | Vytvořit
55 | Adresář úspěšně vytvořen
56 | Načítám…
57 | Adresář nemohl být vytvořen
58 | Vkládám soubory…
59 | Stažené
60 | Hudba
61 | Obrázky
62 | Filmy
63 | DCIM
64 | Aplikaci vyvinul Michal Dabski www.michaldabski.com
65 | \n
66 | \n
67 | Ikony použité z www.iconsdb.com
68 | Ikona aplikace
69 | Vzhůru
70 | Chyba
71 | Přejmenovat soubor
72 | Přejmenovat adresář
73 | Soubor přejmenován
74 | Soubor nemohl být přejmenován na %s
75 | Fotografie
76 | Přidat k oblíbeným
77 | Další aplikace
78 | Odezva na aplikaci
79 | Informace o souboru
80 | MIME typ: %s
81 |
82 |
83 |
--------------------------------------------------------------------------------
/res/values-de/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 | File Manager Pro
25 | Über
26 | Ordner %s kann nicht lesen werden
27 | Öffne %s mit:
28 | Größe: %s
29 | %d Dateien
30 | Drawer öffnen
31 | Drawer schließen
32 | Favoriten löschen
33 | Leerer Ordner
34 | Löschen
35 | %d objects
36 | Lösche %d Dateien?
37 | Alles Auswählen
38 | Umbenennen
39 | Teilen
40 | %d Dateien gelöscht
41 | Verknüpfung erstellen
42 | Verknüpfungen erstellen
43 | Verknüpfung zum Startbildschirm hinzugefügt
44 | Hauptverzeichnis
45 | Ausschneiden
46 | Einfügen
47 | Dateien in die Zwischenablage ausgeschnitten
48 | Dateien eingefügt
49 | Zwischenablage ist leer
50 | Aktualisieren
51 | Kopieren
52 | Dateien in die Zwischenablage kopiert
53 | Neuer Ordner
54 | Erstellen
55 | Ordner erfolgreich erstellt
56 | Lade…
57 | Ordner kann nicht erstellt werden
58 | Pasting files…
59 | Downloads
60 | Musik
61 | Bilder
62 | Filme
63 | DCIM
64 | App entwickelt von Michal Dabski www.michaldabski.com
65 | \n
66 | \n
67 | In-app icons von www.iconsdb.com
68 | App Icon
69 | Nach oben
70 | Fehler
71 | Datei umbenennen
72 | Ordner umbenennen
73 | Datei umbenannt
74 | Datei kann nicht in %s umbenannt werden
75 | Fotos
76 | Zu den Favoriten hinzufügen
77 | Andere Apps
78 | Feedback
79 | Dateiinfo
80 | MIME Typ: %s
81 |
82 |
83 |
--------------------------------------------------------------------------------
/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 | File Manager Pro
25 | À propos
26 | Impossible de lire le dossier %s
27 | Ouvrir %s avec :
28 | Taille : %s
29 | %d éléments
30 | Ouvrir drawer
31 | Fermer drawer
32 | Supprimer le favori
33 | Dossier vide
34 | Supprimer
35 | %d objets
36 | Supprimer %d éléments ?
37 | Selectionner tout
38 | Renommer
39 | Partager
40 | %d fichiers supprimés
41 | Créer un raccourci
42 | Créer des raccourcis
43 | Raccouci aujouté à l\'écran de démarrage
44 | Root
45 | Couper
46 | Coller içi
47 | Objets coupés dans le presse-papiers
48 | Fichiers collés
49 | Le presse-papiers est vide
50 | Rafraichir
51 | Copier
52 | Objets copiés dans le presse-papiers
53 | Créer un dossier
54 | Créer
55 | Dossier créé avec succès
56 | Chargement…
57 | Le dossier n\'a pas pu être créé
58 | Collage de fichiers…
59 | Téléchargements
60 | Musiques
61 | Images
62 | Films
63 | DCIM
64 | App développé par Michal Dabski www.michaldabski.com
65 | \n
66 | \n
67 | Icônes de l\'app par www.iconsdb.com
68 | Icône de l\'app
69 |
70 | Erreur
71 | Renommer le fichier
72 | Renommer le dossier
73 | Fichir renommé
74 | Le fichier ne peut être renommé en %s
75 | Photos
76 | Ajouter un favouri
77 | Autres apps
78 | Feedback
79 | Info du fichier
80 | Type MIME : %s
81 |
82 |
--------------------------------------------------------------------------------
/res/values-it/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 | File Manager Pro
25 | Informazioni
26 | Impossibile leggere la directory %s
27 | Apri %s con:
28 | Dimensione: %s
29 | %d file
30 | Apri drawer
31 | Chiudi drawer
32 | Rimuovi preferito
33 | Cartella vuota
34 | Elimina
35 | %d file
36 | Eliminare %d file?
37 | Seleziona tutti
38 | Rinomina
39 | Condividi
40 | %d file eliminati
41 | Crea collegamento
42 | Crea collegamenti
43 | Collegamento aggiunto alla homescreen
44 | Root
45 | Taglia
46 | Incolla qui
47 | File copiato negli appunti
48 | File incollato
49 | Gli appunti sono vuoti
50 | Ricarica
51 | Copia
52 | File copiati negli appunti
53 | Crea cartella
54 | Crea
55 | Cartella creata con successo
56 | Caricamento…
57 | La cartella non è stata creata
58 | Incollando i file…
59 | Download
60 | Musica
61 | Immagini
62 | Video
63 | DCIM
64 | App sviluppata da Michal Dabski www.michaldabski.com
65 | \n
66 | \n
67 | Icone in-app da www.iconsdb.com
68 | App icon
69 | Su
70 | Errore
71 | Rinomina File
72 | Rinomina Cartella
73 | File rinominato
74 | Il File non può essere rinominato in %s
75 | Foto
76 | Aggiungi ai preferiti
77 | Altre app
78 | Feedback
79 | Informazioni sul File
80 | MIME Type: %s
81 |
82 |
83 |
--------------------------------------------------------------------------------
/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 | File Manager Pro
25 | O aplikacji
26 | Folder %s jest niedostępny
27 | Otwórz %s w:
28 | Rozmiar: %s
29 | %d plików
30 | Otwórz menu
31 | Zamknij menu
32 | Usuń z ulubionych
33 | Pusty folder
34 | Usuń
35 | %d plików
36 | Usunąć %d plików?
37 | Zaznacz wszystko
38 | Zmień nazwę
39 | Udostępnij
40 | %d plików usunięto
41 | Utwórz skrót
42 | Utwórz skróty
43 | Skrót dodany do ekranu głównego
44 | Root
45 | Wytnij
46 | Wklej tutaj
47 | Plików wycięto
48 | Pliki wklejone
49 | Schowek jest pusty
50 | Odświerz
51 | Kopiuj
52 | Pliki skopiowane
53 | Utwórz folder
54 | Utwórz
55 | Folder utworzony pomyślnie
56 | Ładowanie…
57 | Błąd tworzenia folderu
58 | Wklejanie plików…
59 | Pobrane
60 | Muzyka
61 | Obrazy
62 | Filmy
63 | Zdjęcia
64 | Twórcą aplikacji jest Michał Dąbski www.michaldabski.com
65 | \n
66 | \n
67 | Ikony w aplikacje pobrane z www.iconsdb.com
68 | Ikona aplikacji
69 | Do góry
70 | Błąd
71 | Zmień nazwę pliku
72 | Zmień nazwę folderu
73 | Nazwa pliku zmieniona
74 | Nazwa pliku nie mogła zostać zminiona na %s
75 | Zdjęcia
76 | Dodaj ulubione
77 | Inne aplikacje
78 | Kontakt
79 | O pliku
80 | Typ pliku: %s
81 |
82 |
83 |
--------------------------------------------------------------------------------
/res/values-sw600dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
21 |
22 |
23 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/res/values-sw720dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
21 |
22 |
23 |
27 | 128dp
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/values-v19/styles.xml:
--------------------------------------------------------------------------------
1 |
21 |
22 |
23 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 | #FF8800
24 | #FFBB33
25 | #E5E5E5
26 |
27 |
--------------------------------------------------------------------------------
/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
21 |
22 |
23 |
24 | 16dp
25 | 16dp
26 | 64dp
27 | 12dp
28 | 260dp
29 | @dimen/nav_drawer_width
30 | 200dp
31 | 200dp
32 |
33 |
34 |
--------------------------------------------------------------------------------
/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 | File Manager Pro
25 | About
26 | Cannot read directory %s
27 | Open %s with:
28 | Size: %s
29 | %d items
30 | Open drawer
31 | Close drawer
32 | Remove favourite
33 | Empty folder
34 | Delete
35 | %d objects
36 | Delete %d items?
37 | Select All
38 | Rename
39 | Share
40 | %d files deleted
41 | Create shortcut
42 | Create shortcuts
43 | Shortcut added to homescreen
44 | Root
45 | Cut
46 | Paste here
47 | Objects cut to clipboard
48 | Files pasted
49 | Clipboard is empty
50 | Refresh
51 | Copy
52 | Objects copied to clipboard
53 | Create folder
54 | Create
55 | Folder created successfully
56 | Loading…
57 | Folder could not be created
58 | Pasting files…
59 | Downloads
60 | Music
61 | Pictures
62 | Movies
63 | DCIM
64 | App developed by Michal Dabski www.michaldabski.com
65 | \n
66 | \n
67 | In-app icons from www.iconsdb.com
68 | App icon
69 | Up
70 | Error
71 | Rename file
72 | Rename folder
73 | File renamed
74 | File could not be renamed to %s
75 | Photos
76 | Add favourite
77 | Other apps
78 | Feedback
79 | File info
80 | MIME Type: %s
81 |
82 |
83 |
--------------------------------------------------------------------------------
/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
21 |
22 |
23 |
24 |
25 |
26 |
33 |
34 |
35 |
38 |
39 |
43 |
44 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/AppPreferences.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager;
22 |
23 | import android.content.Context;
24 | import android.content.SharedPreferences;
25 | import android.os.Environment;
26 |
27 | import com.michaldabski.utils.FileUtils;
28 |
29 | import java.io.File;
30 | import java.security.InvalidParameterException;
31 | import java.util.Comparator;
32 |
33 | public class AppPreferences
34 | {
35 | private static final String
36 | NAME = "FileExplorerPreferences",
37 |
38 | PREF_START_FOLDER = "start_folder",
39 | PREF_CARD_LAYOUT = "card_layout",
40 | PREF_SORT_BY = "sort_by";
41 |
42 | public static final int
43 | SORT_BY_NAME = 0,
44 | SORT_BY_TYPE = 1,
45 | SORT_BY_SIZE = 2;
46 |
47 | public static final int
48 | CARD_LAYOUT_MEDIA = 0,
49 | CARD_LAYOUT_ALWAYS = 1,
50 | CARD_LAYOUT_NEVER = 2;
51 |
52 | private final static int DEFAULT_SORT_BY = SORT_BY_NAME;
53 |
54 | File startFolder;
55 | int sortBy;
56 | int cardLayout;
57 |
58 | private AppPreferences() {
59 | }
60 |
61 | private void loadFromSharedPreferences(SharedPreferences sharedPreferences)
62 | {
63 | String startPath = sharedPreferences.getString(PREF_START_FOLDER, null);
64 | if (startPath == null)
65 | {
66 | if (Environment.getExternalStorageDirectory().list() != null)
67 | startFolder = Environment.getExternalStorageDirectory();
68 | else
69 | startFolder = new File("/");
70 | }
71 | else this.startFolder = new File(startPath);
72 | this.sortBy = sharedPreferences.getInt(PREF_SORT_BY, DEFAULT_SORT_BY);
73 | this.cardLayout = sharedPreferences.getInt(PREF_CARD_LAYOUT, CARD_LAYOUT_MEDIA);
74 | }
75 |
76 | private void saveToSharedPreferences(SharedPreferences sharedPreferences)
77 | {
78 | sharedPreferences.edit()
79 | .putString(PREF_START_FOLDER, startFolder.getAbsolutePath())
80 | .putInt(PREF_SORT_BY, sortBy)
81 | .putInt(PREF_CARD_LAYOUT, cardLayout)
82 | .apply();
83 | }
84 |
85 | public void saveChangesAsync(final Context context)
86 | {
87 | new Thread(new Runnable()
88 | {
89 |
90 | @Override
91 | public void run()
92 | {
93 | saveChanges(context);
94 |
95 | }
96 | }).run();
97 | }
98 |
99 | public void saveChanges(Context context)
100 | {
101 | saveToSharedPreferences(context.getSharedPreferences(NAME, Context.MODE_PRIVATE));
102 | }
103 |
104 | public AppPreferences setStartFolder(File startFolder)
105 | {
106 | this.startFolder = startFolder;
107 | return this;
108 | }
109 |
110 | public void setCardLayout(int cardLayout)
111 | {
112 | this.cardLayout = cardLayout;
113 | }
114 |
115 | public int getCardLayout()
116 | {
117 | return cardLayout;
118 | }
119 |
120 | public AppPreferences setSortBy(int sortBy)
121 | {
122 | if (sortBy < 0 || sortBy > 2)
123 | throw new InvalidParameterException(String.valueOf(sortBy)+" is not a valid id of sorting order");
124 |
125 | this.sortBy = sortBy;
126 | return this;
127 | }
128 |
129 | public int getSortBy()
130 | {
131 | return sortBy;
132 | }
133 |
134 | public File getStartFolder()
135 | {
136 | if (startFolder.exists() == false)
137 | startFolder = new File("/");
138 | return startFolder;
139 | }
140 |
141 | public Comparator getFileSortingComparator()
142 | {
143 | switch (sortBy)
144 | {
145 | case SORT_BY_SIZE:
146 | return new FileUtils.FileSizeComparator();
147 |
148 | case SORT_BY_TYPE:
149 | return new FileUtils.FileExtensionComparator();
150 |
151 | default:
152 | return new FileUtils.FileNameComparator();
153 | }
154 | }
155 |
156 | public static AppPreferences loadPreferences(Context context)
157 | {
158 | AppPreferences instance = new AppPreferences();
159 | instance.loadFromSharedPreferences(context.getSharedPreferences(NAME, Context.MODE_PRIVATE));
160 | return instance;
161 | }
162 | }
163 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/BaseFileAdapter.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager;
22 |
23 | import android.content.Context;
24 | import android.view.LayoutInflater;
25 | import android.view.View;
26 | import android.view.ViewGroup;
27 | import android.widget.ImageView;
28 | import android.widget.TextView;
29 |
30 | import com.michaldabski.utils.FileIconResolver;
31 | import com.michaldabski.utils.FileUtils;
32 | import com.michaldabski.utils.ViewHolder;
33 |
34 | import java.io.File;
35 | import java.util.List;
36 |
37 | public class BaseFileAdapter extends RobotoAdapter
38 | {
39 | protected final int layoutId;
40 | final FileIconResolver fileIconResolver;
41 |
42 | public BaseFileAdapter(Context context, int resource, File[] objects, FileIconResolver fileIconResolver)
43 | {
44 | super(context, resource, objects);
45 | this.layoutId = resource;
46 | this.fileIconResolver = fileIconResolver;
47 | }
48 |
49 | public BaseFileAdapter(Context context, int resource, List objects, FileIconResolver fileIconResolver)
50 | {
51 | super(context, resource, objects);
52 | this.layoutId = resource;
53 | this.fileIconResolver = fileIconResolver;
54 | }
55 |
56 | protected int getItemLayoutId(int position)
57 | {
58 | return layoutId;
59 | }
60 |
61 | protected View buildView(int position, ViewGroup parent)
62 | {
63 | View view = ((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE))
64 | .inflate(getItemLayoutId(position), parent, false);
65 | view.setTag(new ViewHolder(view));
66 | applyFont(view);
67 | return view;
68 | }
69 |
70 | @Override
71 | public View getView(int position, View convertView, ViewGroup parent)
72 | {
73 | View view = convertView;
74 | if (view == null) view = buildView(position, parent);
75 |
76 | ViewHolder viewHolder = (ViewHolder) view.getTag();
77 | final File file = getItem(position);
78 | TextView
79 | tvFileName = viewHolder.getViewById(R.id.tvFileName),
80 | tvFileDetails = viewHolder.getViewById(R.id.tvFileDetails);
81 | ImageView imgIcon = viewHolder.getViewById(R.id.imgFileIcon);
82 |
83 | tvFileName.setText(file.getName());
84 |
85 | if (file.isDirectory())
86 | {
87 | int files = FileUtils.getNumFilesInFolder(file);
88 | if (files == 0) tvFileDetails.setText(R.string.folder_empty);
89 | else tvFileDetails.setText(getContext().getString(R.string.folder, files));
90 | imgIcon.setImageResource(FileUtils.getFileIconResource(file));
91 | }
92 | else
93 | {
94 | tvFileDetails.setText(getContext().getString(R.string.size_s, FileUtils.formatFileSize(file)));
95 | imgIcon.setImageBitmap(fileIconResolver.getFileIcon(file));
96 | }
97 |
98 |
99 | return view;
100 | }
101 |
102 | }
103 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/FileManagerApplication.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager;
22 |
23 | import android.app.Application;
24 |
25 | import com.michaldabski.filemanager.favourites.FavouritesManager;
26 | import com.michaldabski.utils.FileIconResolver;
27 |
28 | public class FileManagerApplication extends Application
29 | {
30 | AppPreferences appPreferences=null;
31 | FavouritesManager favouritesManager=null;
32 | FileIconResolver fileIconResolver = null;
33 |
34 | @Override
35 | public void onCreate()
36 | {
37 | super.onCreate();
38 | }
39 |
40 | public AppPreferences getAppPreferences()
41 | {
42 | if (appPreferences == null)
43 | appPreferences = AppPreferences.loadPreferences(getApplicationContext());
44 |
45 | return appPreferences;
46 | }
47 |
48 | public FavouritesManager getFavouritesManager()
49 | {
50 | if (favouritesManager == null)
51 | favouritesManager = new FavouritesManager(getApplicationContext());
52 | return favouritesManager;
53 | }
54 |
55 | public FileIconResolver getFileIconResolver()
56 | {
57 | if (fileIconResolver == null)
58 | fileIconResolver = new FileIconResolver(getApplicationContext());
59 | return fileIconResolver;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/RobotoAdapter.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager;
22 |
23 | import android.content.Context;
24 | import android.view.View;
25 | import android.widget.ArrayAdapter;
26 |
27 | import com.michaldabski.utils.FontApplicator;
28 |
29 | import java.util.List;
30 |
31 | public class RobotoAdapter extends ArrayAdapter
32 | {
33 | private FontApplicator fontApplicator;
34 | private String fontName = "Roboto_Light.ttf";
35 |
36 | public RobotoAdapter(Context context, int resource, int textViewResourceId,
37 | List objects) {
38 | super(context, resource, textViewResourceId, objects);
39 | }
40 |
41 | public RobotoAdapter(Context context, int resource, int textViewResourceId,
42 | T[] objects) {
43 | super(context, resource, textViewResourceId, objects);
44 | }
45 |
46 | public RobotoAdapter(Context context, int resource, int textViewResourceId) {
47 | super(context, resource, textViewResourceId);
48 | }
49 |
50 | public RobotoAdapter(Context context, int resource, List objects) {
51 | super(context, resource, objects);
52 | }
53 |
54 | public RobotoAdapter(Context context, int resource, T[] objects) {
55 | super(context, resource, objects);
56 | }
57 |
58 | public RobotoAdapter(Context context, int resource) {
59 | super(context, resource);
60 | }
61 |
62 | public RobotoAdapter setFontApplicator(FontApplicator fontApplicator)
63 | {
64 | this.fontApplicator = fontApplicator;
65 | return this;
66 | }
67 |
68 | protected void applyFont(View view)
69 | {
70 | getFontApplicator().applyFont(view);
71 | }
72 |
73 | public void setFontName(String fontName)
74 | {
75 | this.fontName = fontName;
76 | }
77 |
78 | public FontApplicator getFontApplicator()
79 | {
80 | if (fontApplicator == null)
81 | fontApplicator = new FontApplicator(getContext(), fontName);
82 | return fontApplicator;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/about/AboutActivity.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.about;
22 |
23 | import android.app.Activity;
24 | import android.content.Intent;
25 | import android.content.pm.PackageInfo;
26 | import android.content.pm.PackageManager.NameNotFoundException;
27 | import android.net.Uri;
28 | import android.os.Bundle;
29 | import android.support.v4.app.NavUtils;
30 | import android.view.Menu;
31 | import android.view.MenuItem;
32 | import android.view.View;
33 | import android.view.View.OnClickListener;
34 | import android.widget.TextView;
35 |
36 | import com.michaldabski.filemanager.R;
37 | import com.michaldabski.utils.FontApplicator;
38 |
39 | public class AboutActivity extends Activity implements OnClickListener
40 | {
41 |
42 | private static final String PLAYSTORE_URL = "https://play.google.com/store/apps/developer?id=mick88";
43 | private static final String FEEDBACK_ADDRESS = "";
44 |
45 | @Override
46 | protected void onCreate(Bundle savedInstanceState)
47 | {
48 | super.onCreate(savedInstanceState);
49 | setContentView(R.layout.activity_about);
50 | // Show the Up button in the action bar.
51 | setupActionBar();
52 |
53 | TextView tvAppVersion = (TextView) findViewById(R.id.tvAppVersion);
54 | try
55 | {
56 | PackageInfo pInfo = getPackageManager().getPackageInfo(
57 | getPackageName(), 0);
58 | tvAppVersion.setText(pInfo.versionName);
59 | } catch (NameNotFoundException e)
60 | {
61 | e.printStackTrace();
62 | }
63 |
64 | new FontApplicator(getApplicationContext(), "Roboto_Light.ttf").applyFont(getWindow().getDecorView());
65 |
66 | findViewById(R.id.btnFeedback).setOnClickListener(this);
67 | findViewById(R.id.btnPlaystore).setOnClickListener(this);
68 | }
69 |
70 | /**
71 | * Set up the {@link android.app.ActionBar}.
72 | */
73 | private void setupActionBar()
74 | {
75 |
76 | getActionBar().setDisplayHomeAsUpEnabled(true);
77 |
78 | }
79 |
80 | @Override
81 | public boolean onCreateOptionsMenu(Menu menu)
82 | {
83 | // Inflate the menu; this adds items to the action bar if it is present.
84 | getMenuInflater().inflate(R.menu.about, menu);
85 | return true;
86 | }
87 |
88 | @Override
89 | public boolean onOptionsItemSelected(MenuItem item)
90 | {
91 | switch (item.getItemId())
92 | {
93 | case android.R.id.home:
94 | NavUtils.navigateUpFromSameTask(this);
95 | return true;
96 | }
97 | return super.onOptionsItemSelected(item);
98 | }
99 |
100 | @Override
101 | public void onClick(View v)
102 | {
103 | switch (v.getId())
104 | {
105 | case R.id.btnFeedback:
106 | try
107 | {
108 | Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
109 | emailIntent.setData(Uri.parse("mailto:"+FEEDBACK_ADDRESS));
110 | emailIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name)+" feedback");
111 | startActivity(emailIntent);
112 | }
113 | catch (Exception e)
114 | {
115 | e.printStackTrace();
116 | }
117 | break;
118 |
119 | case R.id.btnPlaystore:
120 | try
121 | {
122 | Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(PLAYSTORE_URL));
123 | startActivity(intent);
124 | }
125 | catch (Exception e)
126 | {
127 | e.printStackTrace();
128 | }
129 | break;
130 |
131 | }
132 | }
133 |
134 | }
135 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/clipboard/ClipboardFileAdapter.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.clipboard;
22 |
23 | import android.content.Context;
24 | import android.view.View;
25 | import android.view.ViewGroup;
26 |
27 | import com.michaldabski.filemanager.BaseFileAdapter;
28 | import com.michaldabski.filemanager.R;
29 | import com.michaldabski.utils.FileIconResolver;
30 |
31 | public class ClipboardFileAdapter extends BaseFileAdapter
32 | {
33 | final Clipboard clipboard;
34 | public ClipboardFileAdapter(Context context, Clipboard clipboard, FileIconResolver fileIconResolver)
35 | {
36 | super(context, R.layout.list_item_file, clipboard.getFilesList(), fileIconResolver);
37 | this.clipboard = clipboard;
38 | }
39 |
40 | @Override
41 | public View getView(int position, View convertView, ViewGroup parent)
42 | {
43 | // TOOD: implement paste icon
44 | return super.getView(position, convertView, parent);
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/clipboard/FileOperationListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.clipboard;
22 |
23 |
24 | public interface FileOperationListener
25 | {
26 | void onFileProcessed(String filename);
27 | boolean isOperationCancelled();
28 | }
29 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/favourites/FavouriteFolder.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.favourites;
22 |
23 | import android.content.Context;
24 |
25 | import com.michaldabski.filemanager.nav_drawer.NavDrawerShortcut;
26 | import com.michaldabski.msqlite.Annotations.ColumnName;
27 | import com.michaldabski.msqlite.Annotations.PrimaryKey;
28 |
29 | import java.io.File;
30 |
31 | public class FavouriteFolder extends NavDrawerShortcut implements Comparable
32 | {
33 | private String label;
34 | @PrimaryKey
35 | private String path;
36 | @ColumnName("item_order")
37 | Integer order;
38 |
39 | public FavouriteFolder()
40 | {
41 |
42 | }
43 |
44 | public FavouriteFolder(File folder, String label)
45 | {
46 | this();
47 | if (folder.isDirectory() == false)
48 | throw new RuntimeException(folder.getName()+" is not a directory");
49 | this.path = folder.getAbsolutePath();
50 | this.label = label;
51 | }
52 |
53 | public FavouriteFolder(File folder)
54 | {
55 | this(folder, folder.getName());
56 | }
57 |
58 | public FavouriteFolder(String path, String label)
59 | {
60 | this(new File(path), label);
61 | }
62 |
63 | public File getFile()
64 | {
65 | return new File(path);
66 | }
67 |
68 | @Override
69 | public boolean equals(Object o)
70 | {
71 | if (o instanceof FavouriteFolder)
72 | return ((FavouriteFolder) o).path.equals(path);
73 | else if (o instanceof File)
74 | return o.equals(getFile());
75 | return super.equals(o);
76 | }
77 |
78 | @Override
79 | public String toString()
80 | {
81 | return label;
82 | }
83 |
84 | @Override
85 | public int hashCode()
86 | {
87 | return getFile().hashCode();
88 | }
89 |
90 | public void setOrder(int order)
91 | {
92 | this.order = order;
93 | }
94 |
95 | public Integer getOrder()
96 | {
97 | return order;
98 | }
99 |
100 | public boolean hasValidOrder()
101 | {
102 | return order != null;
103 | }
104 |
105 | public boolean exists()
106 | {
107 | return getFile().exists();
108 | }
109 |
110 | @Override
111 | public CharSequence getTitle(Context context)
112 | {
113 | return label;
114 | }
115 |
116 | @Override
117 | public int compareTo(FavouriteFolder another)
118 | {
119 | if (order == null)
120 | return -1;
121 | if (another.order == null)
122 | return 1;
123 | return order.compareTo(another.order);
124 | }
125 |
126 | }
127 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/favourites/FavouritesManager.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.favourites;
22 |
23 | import android.content.Context;
24 |
25 | import com.michaldabski.filemanager.sqlite.SQLiteHelper;
26 |
27 | import java.io.File;
28 | import java.util.Collections;
29 | import java.util.HashSet;
30 | import java.util.List;
31 | import java.util.Set;
32 |
33 | public class FavouritesManager
34 | {
35 | public static class FolderAlreadyFavouriteException extends Exception
36 | {
37 |
38 | public FolderAlreadyFavouriteException(FavouriteFolder folder) {
39 | super(folder.toString() + " is already bookmarked");
40 | }
41 |
42 | }
43 |
44 | public static interface FavouritesListener
45 | {
46 | void onFavouritesChanged(FavouritesManager favouritesManager);
47 | }
48 |
49 | private final List folders;
50 | private final SQLiteHelper sqLiteHelper;
51 | private final Set favouritesListeners;
52 |
53 | public FavouritesManager(Context context)
54 | {
55 | this.sqLiteHelper = new SQLiteHelper(context);
56 | this.favouritesListeners = new HashSet();
57 | this.folders = sqLiteHelper.selectAll(FavouriteFolder.class);
58 | sort();
59 | fixFavouritesOrder();
60 | }
61 |
62 | public void sort()
63 | {
64 | Collections.sort(folders);
65 | }
66 |
67 | private void fixFavouritesOrder()
68 | {
69 | int lastOrder=0;
70 | for (FavouriteFolder folder : folders)
71 | {
72 | if (folder.hasValidOrder() == false || folder.getOrder() <= lastOrder)
73 | {
74 | folder.setOrder(lastOrder+1);
75 | }
76 |
77 | lastOrder = folder.getOrder();
78 | }
79 | }
80 |
81 | public void addFavouritesListener(FavouritesListener favouritesListener)
82 | {
83 | favouritesListeners.add(favouritesListener);
84 | }
85 |
86 | public void removeFavouritesListener(FavouritesListener favouritesListener)
87 | {
88 | favouritesListeners.remove(favouritesListener);
89 | }
90 |
91 | void notifyListeners()
92 | {
93 | for (FavouritesListener listener : favouritesListeners)
94 | listener.onFavouritesChanged(this);
95 | }
96 |
97 | public List getFolders()
98 | {
99 | return folders;
100 | }
101 |
102 | public void addFavourite(FavouriteFolder favouriteFolder) throws FolderAlreadyFavouriteException
103 | {
104 | long id = sqLiteHelper.insert(favouriteFolder);
105 | if (id == -1) throw new FolderAlreadyFavouriteException(favouriteFolder);
106 | folders.add(favouriteFolder);
107 | notifyListeners();
108 | }
109 |
110 | public void removeFavourite(File file)
111 | {
112 | for (FavouriteFolder folder : folders) if (folder.equals(file))
113 | {
114 | removeFavourite(folder);
115 | break;
116 | }
117 | }
118 |
119 | public void removeFavourite(FavouriteFolder favouriteFolder)
120 | {
121 | folders.remove(favouriteFolder);
122 | sqLiteHelper.delete(favouriteFolder);
123 | notifyListeners();
124 | }
125 |
126 | public boolean isFolderFavourite(File file)
127 | {
128 | for (FavouriteFolder folder : folders)
129 | if (folder.equals(file))
130 | return true;
131 |
132 | return false;
133 | }
134 |
135 | }
136 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/folders/CardPreviewer.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.folders;
22 |
23 | import android.graphics.Bitmap;
24 | import android.os.AsyncTask;
25 | import android.widget.ImageView;
26 |
27 | import com.michaldabski.filemanager.R;
28 | import com.michaldabski.utils.FilePreviewCache;
29 | import com.michaldabski.utils.FileUtils;
30 |
31 | import java.io.File;
32 |
33 | public class CardPreviewer extends AsyncTask
34 | {
35 | ImageView imageView;
36 | final FilePreviewCache thumbCache;
37 | File file;
38 |
39 | public CardPreviewer(ImageView imageView, FilePreviewCache thumbCache)
40 | {
41 | this.imageView = imageView;
42 | this.thumbCache = thumbCache;
43 | }
44 |
45 | public void setImageView(ImageView imageView)
46 | {
47 | this.imageView = imageView;
48 | if (imageView != null) imageView.setImageResource(R.drawable.card_image_placeholder);
49 | }
50 |
51 | @Override
52 | protected Bitmap doInBackground(File... params)
53 | {
54 | file = params[0];
55 | try
56 | {
57 | Bitmap bitmap = thumbCache.get(file);
58 | if (bitmap == null) bitmap = FileUtils.getPreview(file);
59 | return bitmap;
60 | }
61 | catch (Exception e)
62 | {
63 | e.printStackTrace();
64 | return null;
65 | }
66 |
67 | }
68 |
69 | @Override
70 | protected void onPreExecute()
71 | {
72 | super.onPreExecute();
73 | if (imageView != null) imageView.setImageResource(R.drawable.card_image_placeholder);
74 | }
75 |
76 | @Override
77 | protected void onCancelled(Bitmap result)
78 | {
79 | if (result != null)
80 | {
81 | thumbCache.put(file, result);
82 | }
83 | super.onCancelled(result);
84 | }
85 |
86 | @Override
87 | protected void onPostExecute(Bitmap result)
88 | {
89 | super.onPostExecute(result);
90 | if (result == null)
91 | {
92 | if (imageView != null) imageView.setImageResource(R.drawable.card_image_error);
93 | }
94 | else
95 | {
96 | thumbCache.put(file, result);
97 | if (imageView != null) imageView.setImageBitmap(result);
98 | }
99 | }
100 |
101 | }
102 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/folders/FileAdapter.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.folders;
22 |
23 | import android.content.Context;
24 | import android.view.View;
25 | import android.view.View.OnClickListener;
26 | import android.view.ViewGroup;
27 | import android.widget.ImageView;
28 |
29 | import com.michaldabski.filemanager.BaseFileAdapter;
30 | import com.michaldabski.filemanager.R;
31 | import com.michaldabski.utils.FileIconResolver;
32 | import com.michaldabski.utils.ViewHolder;
33 |
34 | import java.io.File;
35 | import java.util.ArrayList;
36 | import java.util.List;
37 | import java.util.Set;
38 |
39 |
40 | public class FileAdapter extends BaseFileAdapter
41 | {
42 | Set selectedFiles=null;
43 | OnFileSelectedListener onFileSelectedListener=null;
44 |
45 | public static interface OnFileSelectedListener
46 | {
47 | void onFileSelected(File file);
48 | }
49 |
50 | public void setOnFileSelectedListener(
51 | OnFileSelectedListener onFileSelectedListener)
52 | {
53 | this.onFileSelectedListener = onFileSelectedListener;
54 | }
55 |
56 | public FileAdapter(Context context, int layoutId, File[] files, FileIconResolver fileIconResolver)
57 | {
58 | super(context, layoutId, files, fileIconResolver);
59 | }
60 |
61 | public FileAdapter(Context context, int layoutId, List files, FileIconResolver fileIconResolver)
62 | {
63 | super(context, layoutId, files, fileIconResolver);
64 | }
65 |
66 | public FileAdapter(Context context, List objects, FileIconResolver fileIconResolver)
67 | {
68 | super(context, R.layout.list_item_file, objects, fileIconResolver);
69 | }
70 |
71 | public FileAdapter(Context context, File [] objects, FileIconResolver fileIconResolver)
72 | {
73 | super(context, R.layout.list_item_file, objects, fileIconResolver);
74 | }
75 |
76 | public FileAdapter(Context context, FileIconResolver fileIconResolver)
77 | {
78 | this(context, new ArrayList(0), fileIconResolver);
79 | }
80 |
81 | protected boolean isSelected(File file)
82 | {
83 | return (selectedFiles != null && selectedFiles.contains(file));
84 | }
85 |
86 | public void setSelectedFiles(Set selectedFiles)
87 | {
88 | this.selectedFiles = selectedFiles;
89 | }
90 |
91 | @Override
92 | public View getView(int position, View convertView, ViewGroup parent)
93 | {
94 | final View view = super.getView(position, convertView, parent);
95 | final File file = getItem(position);
96 | final ViewHolder viewHolder = (ViewHolder) view.getTag();
97 | final ImageView imgIcon = viewHolder.getViewById(R.id.imgFileIcon);
98 |
99 | if (isSelected(file))
100 | {
101 | view.setBackgroundResource(R.drawable.selector_list_item_selected);
102 | imgIcon.setImageResource(R.drawable.icon_selected);
103 | }
104 | else
105 | {
106 | view.setBackgroundResource(R.drawable.selector_list_item);
107 | }
108 |
109 | if (onFileSelectedListener != null)
110 | {
111 | imgIcon.setBackgroundResource(R.drawable.selector_list_item);
112 | imgIcon.setOnClickListener(new OnClickListener()
113 | {
114 |
115 | @Override
116 | public void onClick(View v)
117 | {
118 | onFileSelectedListener.onFileSelected(file);
119 | }
120 | });
121 | }
122 |
123 | return view;
124 | }
125 |
126 | }
127 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/nav_drawer/NavDrawerAdapter.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.nav_drawer;
22 |
23 | import android.content.Context;
24 | import android.view.LayoutInflater;
25 | import android.view.View;
26 | import android.view.ViewGroup;
27 | import android.widget.ImageView;
28 | import android.widget.TextView;
29 |
30 | import com.michaldabski.filemanager.R;
31 | import com.michaldabski.filemanager.RobotoAdapter;
32 | import com.michaldabski.filemanager.folders.FolderActivity;
33 | import com.michaldabski.filemanager.nav_drawer.NavDrawerAdapter.NavDrawerItem;
34 | import com.michaldabski.utils.ViewHolder;
35 |
36 | import java.util.List;
37 |
38 | public class NavDrawerAdapter extends RobotoAdapter
39 | {
40 | private static final int TYPE_COUNT = 2;
41 |
42 | public static interface NavDrawerItem
43 | {
44 | public static final int
45 | TYPE_SHORTCUT = 0,
46 | TYPE_SECTION_DIVIDER = 1;
47 |
48 | CharSequence getTitle(Context context);
49 | CharSequence getSubTitle(Context context);
50 | void setImageToView(ImageView imageView);
51 | boolean onClicked(FolderActivity activity);
52 | int getViewType();
53 | }
54 |
55 | @Override
56 | public int getViewTypeCount()
57 | {
58 | return TYPE_COUNT;
59 | }
60 |
61 | public int getItemViewType(int position)
62 | {
63 | return getItem(position).getViewType();
64 | }
65 |
66 | public NavDrawerAdapter(Context context, List objects)
67 | {
68 | super(context, 0, objects);
69 | }
70 |
71 | @Override
72 | public View getView(int position, View convertView, ViewGroup parent)
73 | {
74 | final ViewHolder viewHolder;
75 | View view = convertView;
76 | if (view == null)
77 | {
78 | LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
79 | switch (getItemViewType(position))
80 | {
81 | case NavDrawerItem.TYPE_SECTION_DIVIDER:
82 | view = layoutInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
83 | break;
84 | case NavDrawerItem.TYPE_SHORTCUT:
85 | view = layoutInflater.inflate(R.layout.list_item_file, parent, false);
86 | break;
87 | default:
88 | throw new RuntimeException("Nav drawer item does not conform to available view types");
89 | }
90 | view.setTag(viewHolder = new ViewHolder(view));
91 | applyFont(view);
92 | }
93 | else viewHolder = (ViewHolder) view.getTag();
94 |
95 | NavDrawerItem item = getItem(position);
96 |
97 | switch (getItemViewType(position))
98 | {
99 | case NavDrawerItem.TYPE_SHORTCUT:
100 | TextView tvName = viewHolder.getViewById(R.id.tvFileName),
101 | tvSubtitle = viewHolder.getViewById(R.id.tvFileDetails);
102 | ImageView imgIcon = viewHolder.getViewById(R.id.imgFileIcon);
103 |
104 | tvName.setText(item.getTitle(getContext()));
105 | tvSubtitle.setText(item.getSubTitle(getContext()));
106 | item.setImageToView(imgIcon);
107 | break;
108 |
109 | case NavDrawerItem.TYPE_SECTION_DIVIDER:
110 | TextView tvTitle = viewHolder.getViewById(android.R.id.text1);
111 | tvTitle.setText(item.getTitle(getContext()));
112 | break;
113 | }
114 |
115 | return view;
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/nav_drawer/NavDrawerDivider.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.nav_drawer;
22 |
23 | import android.content.Context;
24 | import android.widget.ImageView;
25 |
26 | import com.michaldabski.filemanager.folders.FolderActivity;
27 | import com.michaldabski.filemanager.nav_drawer.NavDrawerAdapter.NavDrawerItem;
28 |
29 | public class NavDrawerDivider implements NavDrawerItem
30 | {
31 | CharSequence title;
32 |
33 | public NavDrawerDivider(CharSequence title)
34 | {
35 | this.title = title;
36 | }
37 |
38 | @Override
39 | public CharSequence getTitle(Context context)
40 | {
41 | return title;
42 | }
43 |
44 | @Override
45 | public void setImageToView(ImageView imageView)
46 | {
47 | }
48 |
49 | @Override
50 | public boolean onClicked(FolderActivity activity)
51 | {
52 | return false;
53 | }
54 |
55 | @Override
56 | public int getViewType()
57 | {
58 | return TYPE_SECTION_DIVIDER;
59 | }
60 |
61 | @Override
62 | public CharSequence getSubTitle(Context context)
63 | {
64 | return null;
65 | }
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/nav_drawer/NavDrawerShortcut.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.nav_drawer;
22 |
23 | import android.content.Context;
24 | import android.os.Bundle;
25 | import android.widget.ImageView;
26 |
27 | import com.michaldabski.filemanager.folders.FolderActivity;
28 | import com.michaldabski.filemanager.folders.FolderFragment;
29 | import com.michaldabski.filemanager.nav_drawer.NavDrawerAdapter.NavDrawerItem;
30 | import com.michaldabski.utils.FileUtils;
31 |
32 | import java.io.File;
33 |
34 | public abstract class NavDrawerShortcut implements NavDrawerItem
35 | {
36 | public abstract File getFile();
37 |
38 | @Override
39 | public boolean onClicked(FolderActivity activity)
40 | {
41 | if (getFile().equals(activity.getLastFolder())) return true;
42 | Bundle args = new Bundle();
43 | args.putString(FolderFragment.EXTRA_DIR, getFile().getAbsolutePath());
44 | FolderFragment folderFragment = new FolderFragment();
45 | folderFragment.setArguments(args);
46 | activity.showFragment(folderFragment);
47 | return true;
48 | }
49 |
50 | @Override
51 | public CharSequence getSubTitle(Context context)
52 | {
53 | return FileUtils.getUserFriendlySdcardPath(getFile());
54 | }
55 |
56 | @Override
57 | public void setImageToView(ImageView imageView)
58 | {
59 | imageView.setImageResource(FileUtils.getFileIconResource(getFile()));
60 | }
61 |
62 | @Override
63 | public int getViewType()
64 | {
65 | return TYPE_SHORTCUT;
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/src/com/michaldabski/filemanager/sqlite/SQLiteHelper.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.filemanager.sqlite;
22 |
23 | import android.content.Context;
24 | import android.database.sqlite.SQLiteDatabase;
25 | import android.os.Environment;
26 |
27 | import com.michaldabski.filemanager.R;
28 | import com.michaldabski.filemanager.favourites.FavouriteFolder;
29 | import com.michaldabski.msqlite.MSQLiteOpenHelper;
30 | import com.michaldabski.utils.FileUtils;
31 |
32 | import java.util.ArrayList;
33 | import java.util.List;
34 |
35 | public class SQLiteHelper extends MSQLiteOpenHelper
36 | {
37 | private static final String DB_NAME = "file_manager.db";
38 | private static final int DB_VERSION = 4;
39 |
40 | private final Context context;
41 |
42 | public SQLiteHelper(Context context) {
43 | super(context, DB_NAME, null, DB_VERSION,
44 | new Class[] { FavouriteFolder.class });
45 | this.context = context;
46 | }
47 |
48 | @Override
49 | public void onCreate(SQLiteDatabase db)
50 | {
51 | super.onCreate(db);
52 |
53 | List favouriteFolders = new ArrayList();
54 | if (Environment.getExternalStorageDirectory().isDirectory())
55 | {
56 | favouriteFolders.add(new FavouriteFolder(Environment.getExternalStorageDirectory(), FileUtils.DISPLAY_NAME_SD_CARD));
57 | if (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).isDirectory())
58 | favouriteFolders.add(new FavouriteFolder(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), getString(R.string.downloads)));
59 | if (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).isDirectory())
60 | favouriteFolders.add(new FavouriteFolder(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC), getString(R.string.music)));
61 | if (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).isDirectory())
62 | favouriteFolders.add(new FavouriteFolder(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), getString(R.string.photos)));
63 | }
64 | else favouriteFolders.add(new FavouriteFolder(Environment.getExternalStoragePublicDirectory("/"), getString(R.string.root)));
65 |
66 | for (FavouriteFolder favouriteFolder : favouriteFolders)
67 | {
68 | if (favouriteFolder.exists())
69 | insert(db, favouriteFolder);
70 | }
71 |
72 | }
73 |
74 | protected String getString(int res)
75 | {
76 | return context.getString(res);
77 | }
78 |
79 | }
80 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/AsyncResult.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | public class AsyncResult
24 | {
25 | T result;
26 | Exception exception=null;
27 |
28 | public AsyncResult(T result)
29 | {
30 | this.result = result;
31 | }
32 |
33 | public AsyncResult(Exception exception)
34 | {
35 | super();
36 | this.exception = exception;
37 | }
38 |
39 | /**
40 | * Returns result fetched asynchronously, throws exception if exception present.
41 | * @return
42 | * @throws Exception
43 | */
44 | public T getResult() throws Exception
45 | {
46 | if (exception != null)
47 | throw exception;
48 | return result;
49 | }
50 |
51 | public Exception getException()
52 | {
53 | return exception;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/BitmapUtils.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.graphics.Bitmap;
24 | import android.graphics.Rect;
25 | import android.util.Log;
26 |
27 | public class BitmapUtils
28 | {
29 | private static final String LOG_TAG = "BitmapUtils";
30 |
31 | public static Rect getBestFitRect(Bitmap bitmap, Rect destination)
32 | {
33 | return getBestFitRect(bitmap, (float)destination.width() / (float)destination.height());
34 | }
35 |
36 | public static Rect getBestFitRect(Bitmap bitmap, float ratio)
37 | {
38 | float bmpRatio = (float)bitmap.getWidth() / (float)bitmap.getHeight();
39 |
40 | if (bmpRatio > ratio) // bmp is wider
41 | {
42 | int height = bitmap.getHeight();
43 | int width = (int) (height * ratio);
44 | int offset = (bitmap.getWidth() - width) / 2;
45 | return new Rect(offset, 0, offset+width, height);
46 | }
47 | else if (bmpRatio < ratio) // bmp is taller
48 | {
49 | int width = bitmap.getWidth();
50 | int height = (int) (width / ratio);
51 | int offset = (bitmap.getHeight() - height) / 2;
52 | return new Rect(0, offset, width, offset+height);
53 | }
54 | else return new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
55 | }
56 |
57 | public static Rect[] layoutImagesInGrid(Bitmap destination, int cols, int rows)
58 | {
59 | int numItems = cols*rows;
60 | int itemWidth = destination.getWidth() / cols,
61 | itemHeight = destination.getHeight() / rows;
62 |
63 | Rect[] result = new Rect[numItems];
64 |
65 | for (int i=0; i < numItems; i++)
66 | {
67 | int x = (i % cols) * itemWidth,
68 | y = (i / (rows+1)) * itemHeight;
69 | Log.d(LOG_TAG, x+"x"+y);
70 | result[i] = new Rect(x, y, x+itemWidth, y+itemHeight);
71 | }
72 |
73 | return result;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/FileIconResolver.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.content.Context;
24 | import android.graphics.Bitmap;
25 | import android.graphics.BitmapFactory;
26 | import android.util.LruCache;
27 |
28 | import com.michaldabski.filemanager.R;
29 |
30 | import java.io.File;
31 |
32 | public class FileIconResolver extends LruCache
33 | {
34 | public static final int CACHE_SIZE = 5 * 1024 * 1024;
35 | final Context context;
36 | Bitmap nullIcon=null;
37 |
38 | public FileIconResolver(Context context)
39 | {
40 | super(CACHE_SIZE);
41 | this.context = context;
42 | }
43 |
44 | @Override
45 | protected int sizeOf(String key, Bitmap value)
46 | {
47 | return value.getByteCount();
48 | }
49 |
50 | public Bitmap getNullIcon()
51 | {
52 | if (nullIcon == null)
53 | nullIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_file);
54 | return nullIcon;
55 | }
56 |
57 | public Bitmap getFileIcon(File file)
58 | {
59 | String mimeType = FileUtils.getFileMimeType(file);
60 | if (mimeType == null) return getNullIcon();
61 |
62 | Bitmap bitmap = super.get(mimeType);
63 | if (bitmap == null)
64 | bitmap = FileUtils.createFileIcon(file, context, false);
65 | put(mimeType, bitmap);
66 | return bitmap;
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/FilePreviewCache.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.graphics.Bitmap;
24 | import android.util.LruCache;
25 |
26 | import java.io.File;
27 |
28 | public class FilePreviewCache extends LruCache
29 | {
30 | public static final int DEFAULT_CACHE_SZE = 24*1024*1024;
31 | /**
32 | * create new cache
33 | * @param maxSize max size in bytes
34 | */
35 | public FilePreviewCache(int maxSize) {
36 | super(maxSize);
37 | }
38 |
39 | public FilePreviewCache()
40 | {
41 | this(DEFAULT_CACHE_SZE);
42 | }
43 |
44 | @Override
45 | protected int sizeOf(File key, Bitmap value)
46 | {
47 | return value.getByteCount();
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/FontApplicator.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.content.Context;
24 | import android.content.res.AssetManager;
25 | import android.graphics.Typeface;
26 | import android.view.View;
27 | import android.widget.TextView;
28 |
29 | import com.michaldabski.utils.ViewTraverser.ForeachAction;
30 |
31 | /**
32 | * Applies selected font to the view and all views
33 | * @author Michal
34 | *
35 | */
36 | public class FontApplicator
37 | {
38 | final private Typeface font;
39 |
40 | public FontApplicator(Typeface font)
41 | {
42 | this.font = font;
43 | }
44 |
45 | public FontApplicator(Context context, String fontName)
46 | {
47 | this(Typeface.createFromAsset(context.getAssets(), "fonts/"+fontName));
48 | }
49 |
50 | public FontApplicator(AssetManager assets, String assetFontName)
51 | {
52 | this.font = Typeface.createFromAsset(assets, assetFontName);
53 | }
54 |
55 | /**
56 | * Applies font to the view and/or its children
57 | * @param root
58 | * @return
59 | */
60 | public FontApplicator applyFont(View root)
61 | {
62 | if (root == null) return this;
63 | new ViewTraverser(root).traverse(new ForeachAction()
64 | {
65 |
66 | @Override
67 | public void onElement(View element)
68 | {
69 | if (element instanceof TextView)
70 | {
71 | ((TextView) element).setTypeface(font);
72 | }
73 | }
74 | });
75 |
76 | return this;
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/IntentUtils.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.content.Context;
24 | import android.content.Intent;
25 | import android.content.pm.PackageManager;
26 | import android.content.pm.ResolveInfo;
27 | import android.graphics.drawable.Drawable;
28 | import android.net.Uri;
29 |
30 | import com.michaldabski.filemanager.folders.FolderActivity;
31 |
32 | import java.io.File;
33 | import java.util.List;
34 |
35 | public class IntentUtils
36 | {
37 |
38 | public static Intent createFileOpenIntent(File file)
39 | {
40 | Intent intent = new Intent(Intent.ACTION_VIEW);
41 | intent.setDataAndType(Uri.fromFile(file), FileUtils.getFileMimeType(file));
42 | return intent;
43 | }
44 |
45 | public static void createShortcut(Context context, File file)
46 | {
47 | final Intent shortcutIntent;
48 | if (file.isDirectory())
49 | {
50 | shortcutIntent = new Intent(context, FolderActivity.class);
51 | shortcutIntent.putExtra(FolderActivity.EXTRA_DIR, file.getAbsolutePath());
52 | }
53 | else
54 | {
55 | shortcutIntent = createFileOpenIntent(file);
56 | }
57 |
58 | Intent addIntent = new Intent();
59 | addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
60 | addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, file.getName());
61 | addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, FileUtils.createFileIcon(file, context, true));
62 | addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
63 | context.sendBroadcast(addIntent);
64 | }
65 |
66 | public static List getAppsThatHandleFile(File file, Context context)
67 | {
68 | return getAppsThatHandleIntent(createFileOpenIntent(file), context);
69 | }
70 |
71 | public static List getAppsThatHandleIntent(Intent intent, Context context)
72 | {
73 | PackageManager packageManager = context.getPackageManager();
74 | return packageManager.queryIntentActivities(intent, 0);
75 | }
76 |
77 | public static Drawable getAppIconForFile(File file, Context context)
78 | {
79 | List infos = getAppsThatHandleFile(file, context);
80 | PackageManager packageManager = context.getPackageManager();
81 | for (ResolveInfo info : infos)
82 | {
83 | Drawable drawable = info.loadIcon(packageManager);
84 | if (drawable != null)
85 | return drawable;
86 | }
87 | return null;
88 | }
89 |
90 | }
91 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/ListViewUtils.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.app.Activity;
24 | import android.widget.AbsListView;
25 |
26 | import com.readystatesoftware.systembartint.SystemBarTintManager;
27 |
28 | public class ListViewUtils
29 | {
30 | /**
31 | * Add header to listview to compensate for translucent navbar and system bar
32 | */
33 | public static void addListViewHeader(AbsListView listView, Activity activity)
34 | {
35 | addListViewPadding(listView, activity, false);
36 | }
37 |
38 | /**
39 | * Add padding to listview to compensate for translucent navbar and system bar
40 | */
41 | public static void addListViewPadding(AbsListView listView, Activity activity, boolean ignoreRightInset)
42 | {
43 | SystemBarTintManager systemBarTintManager = new SystemBarTintManager(activity);
44 | int headerHeight = systemBarTintManager.getConfig().getPixelInsetTop(true);
45 | int footerHeight = systemBarTintManager.getConfig().getPixelInsetBottom();
46 | int paddingRight = systemBarTintManager.getConfig().getPixelInsetRight();
47 | listView.setPadding(listView.getPaddingLeft(), headerHeight, ignoreRightInset ? listView.getPaddingRight() : paddingRight, footerHeight);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/OnResultListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | public interface OnResultListener
24 | {
25 | void onResult(AsyncResult result);
26 | }
27 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/ViewHolder.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.util.SparseArray;
24 | import android.view.View;
25 |
26 | public class ViewHolder
27 | {
28 | final View root;
29 | final SparseArray views = new SparseArray(3);
30 |
31 | public ViewHolder(View root)
32 | {
33 | this.root = root;
34 | }
35 |
36 | @SuppressWarnings("unchecked")
37 | public T getViewById(int id)
38 | {
39 | T view = (T) views.get(id);
40 | if (view == null)
41 | {
42 | views.put(id, (view = (T) root.findViewById(id)));
43 | if (view == null)
44 | throw new NullPointerException("Cannot find requested view id "+String.valueOf(id));
45 | }
46 | return view;
47 | }
48 |
49 | public boolean hasView(int id)
50 | {
51 | if (views.get(id) != null) return true;
52 | else
53 | {
54 | View view = this.root.findViewById(id);
55 | if (view == null) return false;
56 | else
57 | {
58 | views.put(id, view);
59 | return true;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/com/michaldabski/utils/ViewTraverser.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2014 Michal Dabski
3 | *
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
5 | * this software and associated documentation files (the "Software"), to deal in
6 | * the Software without restriction, including without limitation the rights to
7 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8 | * the Software, and to permit persons to whom the Software is furnished to do so,
9 | * subject to the following conditions:
10 | *
11 | * The above copyright notice and this permission notice shall be included in all
12 | * copies or substantial portions of the Software.
13 | *
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 | ******************************************************************************/
21 | package com.michaldabski.utils;
22 |
23 | import android.view.View;
24 | import android.view.ViewGroup;
25 |
26 | /***
27 | * Traverse layout tree one view at a time
28 | * @author Michal
29 | *
30 | */
31 | public class ViewTraverser
32 | {
33 | public interface ForeachAction
34 | {
35 | void onElement(T element);
36 | }
37 |
38 | private final View root;
39 |
40 | public ViewTraverser(View root)
41 | {
42 | this.root = root;
43 | }
44 |
45 | public void traverse(ForeachAction foreach)
46 | {
47 | traverse(root, foreach);
48 | }
49 |
50 | protected void traverse(View root, ForeachAction foreach)
51 | {
52 | foreach.onElement(root);
53 | if (root instanceof ViewGroup)
54 | {
55 | ViewGroup viewGroup = (ViewGroup) root;
56 | for (int i = 0; i < viewGroup.getChildCount(); i++)
57 | {
58 | traverse(viewGroup.getChildAt(i), foreach);
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------