veniosg / dir Goto Github PK
View Code? Open in Web Editor NEWThis project forked from openintents/filemanager
A modern File Manager for Android
Home Page: http://veniosg.github.io/Dir
License: Apache License 2.0
This project forked from openintents/filemanager
A modern File Manager for Android
Home Page: http://veniosg.github.io/Dir
License: Apache License 2.0
All of Google's app icons have a slight drop shadow. Dir should have it as well to keep consistent.
Hey George,
I tried the app, and it's awesome. I was wondering if it may be better to use a background rather than the cyan-blue color, in the navigation drawer. We may see any Google made app for an example, say Google Plus.
I understand that it might play a role in increasing app size for no reason, but still I thought to let you know. Even if there may be a case where we used colorful pattern rather than cyan-blue, it might look better
A simple Google image search for material styled wallpapers
may give satisfactory results.
When changing the theme through settings, once the user gets back to the main activity, the title disappears until further interaction.
Enable Gmail-like behavior for list item icon touches.
This will enable usage of facilities provided by the BaseActivity and unification of all activities under a single parent.
When tapping an item, the item's background is transparent and breaks the illusion of the new sheet being connected to the pressed item.
Reproducible on every item click on Marshmallow.
Any chance of an update that supports Android TV? I know I could just sideload it and see how it goes, but it'd certainly be handy if I could just install it via Google Play as handling files on the Nvidia Shield TV isn't great and the other 3rd party I'm using isn't nearly as nice looking as Dir.
A split of issue #41
I think adding compression/extraction and encryption/decryption functionality would make the app pretty much of all rounder for offline needs.
For compression/extraction, I think rar, zip and 7zip are mostly used ones. Though I don't know exact libraries for this but maybe Amaze file manager's code may help.
The app already supports .zip .
Probably something minor that slipped by, but need investigation nevertheless.
The major blocker has been drawable tinting which seems to be supported by the latest support library. Investigate on what it would take to port the new design back to previous versions of Android.
Change the bright blue line to the app's dark purple accent.
Requirement for this feature is minimal code changes (except for layout files); hopefully still being able to configure the dialog using the same methods (setPositiveButton() etc).
Maybe look into doing this by subclassing AlertDialog and/or its factories.
If the user has selected a default app to open a specific mimetype, they can't choose a different one unless they clear defaults on that app, which is rather unintuitive.
When the user selects a file, an "Open with..." option should be available that effectively presents the same list (and preferably UI) as when just clicking the file without any default app set.
Instead of the old-style search dialog, use the SearchView on the AB. Requirements for this are:
This involves:
On sw720dp and sw600dp-land, always take up 35% of the screen's width to show the bookmarks' pane.
The skewed item background on some Android versions, on some buttons in the PathBar is getting weirdly stretched (related to OpenGL 0x501 errors). This is fixed on later versions of Android, but it makes sense to change the related drawables in favor of slightly wider versions so as to amend this issue.
Hey George,
Maybe, Dir could have tabs? If you think it's a good idea, I had a small suggestion. Tabs as in ES explorer make it not much usable and often create confusions. So, maybe, tabs as in, say, UC mini browser might play well. Like adding a square icon, with tab count, on screen somewhere(as you seem fit) may do the trick.
Thanks.
Enable bookmarking of current folder as opposed to having to long click the file/folder to bookmark.
Hey George,
F-droid is known to have pretty strict inclusion policy, and Dir satisfies it perfectly. Having app in f-droid is a proof of app having noble intents. I think seeing Dir in f-droid would be awesome, right?
Links that might help:
Docs has all links listed, still I'm listing some imp ones.
This most probably happens when the async component setting the thumbnail after it's loaded from the disk happens to run after the icon of the list item has been set for the new data and therefore the image of the new data gets replaced by the old one that just now has been loaded.
Steps to reproduce:
Little diary's is not, check differences to debug.
Be sure to smoke test each one as you're updating it, on all 3 themes.
Change content animation to be more consistent with PathBar item animations. New implementation following @JakeWharton's G+ suggestion:
Your content animation has a spatial clash with the path component. The content moves in a way to convey drilling down inside of something but the path component operates more like a stack pushing a new layer on. I'd consider changing the content animation to behavior more like a deck of cards where you push and pop cards onto a stack. Bonus points if you allow bezel swiping a card to pop.๏ปฟ
Hey George,
I think using templates for screenshots (often called mockups) on Google Play may be a great idea. I have listed some links below, though a simple Google search gives lots of them.
https://appinstitute.com/app-screenshot-maker/
Stack trace:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:864)
Caused by: java.lang.NullPointerException
at com.veniosg.dir.dialog.MultiDeleteDialog$RecursiveDeleteTask.doInBackground(MultiDeleteDialog.java:97)
at com.veniosg.dir.dialog.MultiDeleteDialog$RecursiveDeleteTask.doInBackground(MultiDeleteDialog.java:47)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more
Requirement for implementations of this feature is that there is minimal friction between launching and actually showing the UI. For example if a dark theme is selected, the app should not show a light background and then change abruptly.
Components that will need to be themed:
Add support for USB OTG volumes either by using an integrated library (like fat32-lib), or preferably using the Storage Access Framework Android provides.
L support should start out as a backwards-incompatible branch. Once done, assess the time needed and implementation complexity of adding backwards compatibility for older Android versions.
High level tasks that will need to be done for an L compatible release:
1. Metrics change.
2. Use the Material theme (Also remove Holo theme).
3. Use of the new interpolators. Possibly fine tune animation durations too.
4. Update action icons to match new ones from the Google Guidelines.
5. Use drawable tinting for all assets.
6. Implement more material-like animations.
7. Revise colours for everything.
8. Change empty state drawables
9. New launcher icon
10. New logo
11. New Pathbar design. This may take long.
This test currently does not actually test anything. Probably forgotten since the early days. A complete rewrite is probably the best route.
Hello George, ๐
I am not much into Android development, but I certainly understand that adding features is not as easy as talking about adding them. It takes a hell lot of code. Still, I think adding compression/extraction and encryption/decryption functionality would make the app pretty much of all rounder for offline needs.
As for compression/extraction, I think rar, zip and 7zip are mostly used ones. Though I don't know exact libraries for this but maybe Amaze file manager's code may help. And encryption/decryption functionality maybe enabled by using AES Encryption's JAVA library.
Hope I didn't hinder you with unnecessary suggestions.
Wish you the best of luck for further development.
Sanmay
When trying to compress a folder that is either empty or only has empty subfolders, the service thinks it failed, and shows a wrong failure notification as well as it deletes the actual zip file, as a cleanup measure on failure.
Fix by making the service correctly recognize that the folder was empty and it did compress successfully.
Right now we just pad the drawer on the right side. We should be calculating the width the same way Syncthing for Android does in: https://github.com/syncthing/syncthing-android/blob/master/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java#L346
This will allow use of facilities provided by the BaseActivity and unification of all activities under a single parent.
Hey George,
I had some suggestions regarding nav. drawer-
Increasing height of cover (background image) in navigation drawer
I think (pretty personal opinion), maybe the navigation drawer would look even better if the cover image for Bookmark
text was a bit more in height, the way it is in Google apps. I think it's more cozy that way.
Appearance of bookmarks
The bookmarks in nav. drawer appear the same way folders appear in app. Maybe, assigning a different icon for bookmarks and having them appear the same way as different fragments (Settings, About) would make nav. drawer look more consistent.
Material style icon for New(Plus) and Edit(Pencil)
I think, Dir would look even better, if it had the floating circular icon, as in Gmail for compose, for New and Edit(when selected). The same New(Plus) icon may convert into Edit(Pencil) icon on selecting a file or folder.
Adding an option to create a file alongside the option to create folder
As of now, we are able to create new folder with the new folder icon. I think (taking into consideration above suggestion) adding facility to create new file after tapping the plus icon may add an extra feature.
Many apps have the floating icon, which shows options(which appear as circles above the tapped icon which turns into cross, well you get the point ๐) when tapped. Maybe the plus icon could be like that.
I'm referencing issue #45 as it is related to this issue.
I hope I didn't do a lot of mutter mutter. ๐
Thanks
Hey George,
If you would like to increase the number of users of Dir, I think announcing Dir on XDA-Forum might be a good idea. I would recommend publishing app on f-droid before announcing on xda (issue #50), as having app on f-droid would make xda users believe more on intents of app.
A split of issue #41
I think adding compression/extraction and encryption/decryption functionality would make the app pretty much of all rounder for offline needs.
For compression/extraction, I think rar, zip and 7zip are mostly used ones. Though I don't know exact libraries for this but maybe Amaze file manager's code may help.
The app already supports .zip .
Requires #53.
Default bookmark-adding code already exists. This only involves adding additional folders to that list and using user readable names for them instead of their HW ids (that come by default as root directory names).
java.lang.NullPointerException:
at com.veniosg.dir.util.FileUtils.isOk(FileUtils.java:255)
at com.veniosg.dir.view.widget.PathView.cd(PathView.java:209)
at com.veniosg.dir.view.widget.PathView.cd(PathView.java:202)
at com.veniosg.dir.fragment.SimpleFileListFragment.onEmptyViewClicked(SimpleFileListFragment.java:739)
at com.veniosg.dir.fragment.FileListFragment$3.onClick(FileListFragment.java:123)
at android.view.View.performClick(View.java:5612)
at android.view.View$PerformClick.run(View.java:22288)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
java.lang.NullPointerException:
at com.veniosg.dir.dialog.DetailsDialog.onCreateDialog(DetailsDialog.java:78)
at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:308)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5765)
at java.lang.reflect.Method.invoke(Native Method:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
This will allow easily switching between "list" and "grid" displays, depending on user preference or device configuration.
This string in FileUtils
public static native boolean access(String path, int mode)
has no an JNI counterpart in your code.
Hey George,
As of right now, app shows icons of files as per the app which opens them. It is perfect.
The Dir app shows a circle around the folder icon and file icon. In this process, the file icons are cropped. So, when at times, the icon of a file isn't symmetric, it doesn't look as good as the app does ๐. So, maybe, rather than circle(for file icons only, folder icons look perfect) if Dir used only, say, an underline and left some space between underline and icon(so that there is enough breathing room for icons, well you know that better than me), it might look prettier.
Thanks.
Instead of the old-style search dialog, use the SearchView on the AB. Requirements for this are:
A bunch of old drawables are mysteriously still present and presumably take up space in the production APK. Purge ๐ฅ
java.lang.NullPointerException:
at com.veniosg.dir.fragment.SimpleFileListFragment.onDataApplied(SimpleFileListFragment.java:531)
at com.veniosg.dir.fragment.FileListFragment$FileListMessageHandler.handleMessage(FileListFragment.java:309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Request root privileges for manipulations of files requiring such.
Hey George,
On opening Dir, we land on Phone Storage. Many other apps show a screen with analysis of different file types(apps, images, videos, music, documents, compressed, encrypted) . I think it certainly helps, as I remember, I used it quite a lot. This way Dir might not as well need the default bookmarks it has. It would be even awesome if Dir showed how much Phone Storage and SD card has filled on this screen.
Thanks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.