Persistent pinned status
Since I've implemented stubs for global Session Manager in LeechCraft, it's now possible to save the state of pinned tabs.
Tabs that support saving state now implement the
IRecoverableTab interface (defined in
interfaces/ihaverecoverabletabs.h). Data that identifies the tab could be obtained via the
IRecoverableTab::GetTabRecoverData() method. One could hook to the
IRecoverableTab::tabRecoverDataChanged() signal to keep in sync the association between recover data and the corresponding widget in the UI.
Later, when tabs are restored on next startup, the
IHaveRecoverableTabs::tabRecovered(const QByteArray&, QWidget*) signal is emitted, so one could use it to restore any additional state of the tab.
I also suggest moving Pinned feature out of the Core to a plugin, since it becomes too big for that.