zlatinb / muwire

MuWire file sharing client for I2P
GNU General Public License v3.0
189 stars 27 forks source link

[Suggestions] Collection UI improvements #70

Open Searinox opened 2 years ago

Searinox commented 2 years ago

During use of MuWire I have noticed the following issues:

1. Once a collection is retrieved, the UI can freeze - depending on collection size - for a rather long time until it finishes populating the collection's directory tree. This directory tree is displayed for the first time in a fully expanded manner. If everything was collapsed from the start(and maybe "Expand all" + "Collapse all" buttons were available), it would be more responsive.

2. When first creating a collection, on the initial share window, the user must proceed by clicking Review after seeing the listing. Once Review is clicked, the task of bringing up the next window is run asynchronously, leaving the Review window responsive. It is never made clear to the user that once they clicked Review another window is due to pop up, and they can click it multiple times.

Because depending on the number of files shared it can take a long time until the next window pops up, the UI can be further browsed, files can be added or removed from share(including files that are being compiled into the collection right now), and even the application can be asked to shut down before the window pops up. This can lead to highly inconsistent and buggy scenarios. Furthermore it is never made clear to the user that once they clicked Review, the program proceeds to another task that they must then wait on.

My recommendation for this is: -Once the Review button is clicked for the first time, disable it. -Add a text label of any sort to indicate to the user that the application is now busy compiling the collection, and if progress info is tracked on the task's side maybe even provide a progress percentage that is updated periodically. -Take away the user's ability to close the window and browse/interact with other stuff in the application until the task is finished.

zlatinb commented 2 years ago

Re 1: I can do some limited expansion similar to what the LIbrary tab does - i.e. expands until the first folder that has more than one child. Then I can add an option to the right-click menu to fully expand a folder

Re 2: I was able to reproduce the scenario you describe, and what I can do is display a modal progress bar while the "review" tree is populated. I'll also look into optimizing the creation of the tree.

Searinox commented 2 years ago

I have a question about Collections:

When searching for files, everything is found disjointed, and it is not possible to browse the folder structure they are in. But the list is always up to date, you see whatever files the person is sharing at that moment.

With Collections, everything is structured by folder but they are immutable.

In the Library has everything structured by folder AND is always up to date. Is there a way to retrieve a user's Library with full folder structure as it exists at that moment without relying on something static like Collections? Browse exists but doesn't structure everything as a folder tree.

zlatinb commented 2 years ago

In issue #65 a feature was requested to see the folder structure while browsing a user's library. There are some complications to making it happen, but I will try to do it for the next release.

Searinox commented 2 years ago

Point 2 of this report was solved when you disabled thread management just now. Upon clicking Review, the window now freezes until the new window pops up, preventing other interactions including closing the window or interacting with the main window. However once in the final preview window you remain able to interact with the main UI. So I think this could all be plugged by just making it like the Settings window now, to keep control away from the main window while it's open.

Point 1 was a misunderstanding of mine about the reason it was going on. I still think Expand/Collapse all functionality on both Browse tree and Collection would be of great value.

zlatinb commented 2 years ago

Yes disabling thread management would mean that the collection must be built on the UI thread, blocking all user interaction. This is not great, and I will look into moving it off-thread while a progress bar is displayed. The reason this is a separate Frame (as opposed to a modal Dialog like the Settings window) is because the user must be able to drag-and-drop files from the library. To make it non-modal during collection building and modal during preview would be a complete rewrite.

Regarding expand/collapse all, that sounds simple enough. The way it will work is if a user right-clicks on an empty area on the tree panel the context menu will contain an "Expand fully" and "Collapse fully" option. It can be added on all Tree panels, including the Library.

Unfortunately both these items will need to wait until after the release; Oracle will disclose any pending security vulnerabilities on Tuesday the 19th, and I must be ready to release as soon as possible if anything serious is disclosed. Another factor is that I need to give translators at least a few days to translate the new "Expand fully" and "Collapse fully" strings, as well as the "Please wait collection is building..." string.

Searinox commented 2 years ago

Looking forward for this next official release as it will propagate a lot of functionality and quality of life features to the general populace.