Re: [Proposal] Improve IMAP folder parent selection, subscription management



Hi Albrecht:

On 03/24/2019 08:35:14 AM Sun, Albrecht Dreß wrote:
Hi all,

attached is a *proposal* addressing two inconveniences in IMAP folder management:

1. Selecting the parent folder using the “Browse” button
a. The button opens a new window, containing /all/ folders Balsa knows about.  In my case, I have ~50 local 
folders, plus two different IMAP (ISP) servers with ~10 folders each.  IOW, only a fraction of the folders 
displayed can actually be used as new parent of the IMAP folder, which is confusing and tedious.
b. If only subscribed folders are displayed, it is not possible to define a currently unsubscribed folder as 
new parent (which is perfectly legal) simply as it is not visible.  The workaround is to disable “Subscribed 
folders only”, then shift the folder, and switch to subscribed only again, i.e. three operations have to be 
performed in two places.

2. Subscription management
a. Currently, folders can be (un-) subscribed only by using the context menu item in the folder tree view.  
There is no indication if the folder is currently subscribed or not (it is hidden if “Subscribed folders 
only” is enabled, though).
b. Related to #1b. above, it is not possible to directly subscribe to an unsubscribed folder if “Subscribed 
folders only” is activated, with the same workaround as outlined above.

Thus, I would like to propose a different approach.  It basically scans the IMAP server's folder structure, 
instead of relying on the cached data in Balsa, every time the two aforementioned management operations above 
shall be performed.

For issue 1, a new dialogue is displayed, containing the tree view of /all/ (subscribed and unsubscribed) 
folders on the IMAP server.  The user can either double-click the requested new parent, or select the entry 
and click OK.  The tree store of folders is kept as long as the parent dialogue (IMAP subfolder 
configuration) is open, i.e. the scan is performed only /once/ when the “Browse” is clicked.

For issue 2, instead of managing the state for each folder individually, a button “Manage subscriptions” is 
placed next to the “Subscribed folders only” check box in the IMAP server configuration dialogue.  Clicking 
this button scans the folder structure on the IMAP server, plus the subscription state of all folders.  The 
dialogue is similar to case #1 above, with an additional column of check boxes indicating the subscription 
state.  If the user has changed the subscription state, the folder is printed in /italics/.  As above, the 
store of folders, old and new subscription states is kept until the server configuration dialogue is closed.  
If requested, all changed subscriptions are applied.  Note that the “Manage subscriptions” button is 
sensitive only if “Subscribed folders only” is activated.  If there are use cases where subscription 
management should always be available, this limitation can easily be removed.

There has recently been a discussion regarding the traffic required for scanning the server for /very/ slow 
or low-bandwidth connections.  IMO, the proposed approach will actually improve (apart from the usability) 
the situation in this scenario: a typical approach for such connections will be accessing subscribed folders 
only.  In this case, it is (as via the workaround outlined above) actually required to scan the server 
/twice/ after toggling “Subscribed folders only”.  And for a connection with a typical bandwidth *and* 
“Subscribed folders only” not being activated, I assume that the extra overhead will be negligible.

As always, any comment will be highly appreciated!

Thanks for the patch--a huge improvement over the current deficient UI!

I have only one question: you use a series of defined constants to label the columns of the GtkTreeStore, 
where elsewhere Balsa (mostly?) uses an enumeration; the enumeration can be extended with a final *_N_COLS 
member which avoids hard-coding the column count. Any particular reason to prefer defined constants?

Best,

Peter

Attachment: pgpEmghd06pzS.pgp
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]