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.
