Moved from https://github.com/bitcoin/bitcoin/issues/11826.
This is a RFC regarding adding a new Activity window in the UI, which allows to:
- have activity history (truncated, etc);
- pause or cancel tasks if supported individually;
- have multiple progresses concurrently.
In terms of patch, ShowProgress()
signal is removed everywhere and a RAII class is added along with some UI classes:
0class Activity
1{
2 std::shared_ptr<ActivityData> const d;
3public:
4 Activity(const std::string& title);
5 ~Activity();
6
7 void SetTitle(const std::string& title);
8 void SetProgress(int progress);
9};
Consider this the minimal interface for an activity. Some other ideas:
- custom progress range (so the caller doesn’t have to calculate percentage)
- add something like
SetPause(bool)
,IsPaused()
; - also
Cancel()
andIsCancelled()
; - add something like
SetSource(string)
(for instanceSetSource("wallet1")
).
The current implementation is thread safe. For now, I’ve also added a new menu item Window
where I think we could add Console
too (another discussion thou).
Please see the capture below.