Opened 13 years ago

Closed 13 years ago

#2352 closed Enhancement (wontfix)

Show more fine-grained progress in the Inspector

Reported by: mortennorby Owned by: livings124
Priority: Normal Milestone: None Set
Component: Mac Client Version: 1.73
Severity: Normal Keywords:


Proposal: Provide more granual information on the progress of the download.

The activity tab currently highlights an interval when it is completed, and the highlight lasts for one second. It is hence quite unlikely that the user will get any feel for the progress through a glance at the activities tab, unless they happen in one of those exact moments when an entire interval is completed.

A simple way to provide more information is to extend the current functionality to highlight an interval whenever the amount of data in it increases. If a different color or shape of the flash is used, the orange flash will still indicate a completed interval.

Patch: The patch attached adds this functionality to the PieceView? class, using a shade of yellow for the incremental flash. The colour can be changed by modifying the initial values of the two variables fPercentProgressColor1 and fPercentProgressColor2. A flash that lasts more than one second alternates between these two shades of yellow in order to avoid the feeling of a blurp of yellow burnt into the view. The difference between the two colours is intended to be imperceptible as such, in order to avoid the flash to attract too much attention, and distract from other parts of the UI. This patch only makes sense when used with the more granular measurement of the progress provided by the patch in ticket #2347.

Attachments (5)

PiecesView.diff (5.9 KB) - added by mortennorby 13 years ago.
nosample.diff (4.8 KB) - added by charles 13 years ago.
patch from #2347
PiecesView_resampling_and_flashing.diff (10.9 KB) - added by mortennorby 13 years ago.
libdispatch.diff (19.1 KB) - added by mortennorby 13 years ago.
ProgressFlash-Selfcontained.diff (12.8 KB) - added by mortennorby 13 years ago.

Download all attachments as: .zip

Change History (13)

Changed 13 years ago by mortennorby

comment:1 Changed 13 years ago by charles

  • Component changed from Transmission to Mac Client
  • Owner set to livings124

comment:2 Changed 13 years ago by charles

Folding ticket #2347 into this ticket. The Mac Client is the only one that uses the patch in #2347, even though it's located in libtransmission.

Changed 13 years ago by charles

patch from #2347

comment:3 Changed 13 years ago by mortennorby

Actually, from the point of view of the app architecture, this is a UI thing and the calculations needed for visualisation should not be in libtransmission, but in the view.

I suggest to roll the code in nosample.diff into PiecesView?.m.

Changed 13 years ago by mortennorby

comment:4 Changed 13 years ago by mortennorby

The attachment PiecesView_resampling_and_flashing.diff merges the calculations into the PiecesView? class, meaning that there is no need for any changes to libtransmission.

comment:5 Changed 13 years ago by mortennorby

The loops in the patch above lend themselves to some parallelization, and the patch libdispatch.diff re-organises the code in order to facilitate the use of Grand Central Dispatch (libdispatch), which unfortunately is Snow Leopard only.

The parts that are Snow Leopard only are conditionally compiled (#define USE_GCD), and when the that setting is off, normal for loops are used.

It would be nice if it could be determined runtime so the same binary would work for Leopard and Snow Leopard, and there is some tentative code for it, but it has not been tested on Leopard, and is commented out.

Changed 13 years ago by mortennorby

comment:6 Changed 13 years ago by mortennorby

Oops, forgot to say that for the libdispatch extensions to compile, the flag -fblocks can be passed to the compiler, e.g. under the setting "Other C Flags" for the target.

Alternatively, the setting MAC OS X DEPLOYMENT TARGET can be set to 10.6 in Xcode.

Haven't been able to test if an app compiled this way runs under 10.5 with the dispatch_ calls compiled in.

Changed 13 years ago by mortennorby

comment:7 Changed 13 years ago by mortennorby

In case anyone is interested, the above patch implements the progress flash functionality with the for-loop architecture of r9319. The libdispatch/Grand Central Dispatch code has also been removed, as it requires the loop to be divided in an inner and outer loop.

No changes to libtransmission are required.

comment:8 Changed 13 years ago by livings124

  • Resolution set to wontfix
  • Status changed from new to closed

I appreciate this a lot and have thought over if this should be implemented, but I don't really think it's necessary - the progress box is never going to be a place for thorough information, so the added complexity isn't needed. I do hope you contribute patches for other areas in the future, though.

Note: See TracTickets for help on using tickets.