Fix fancy tabs loading

This commit is contained in:
Jonas Kvinge 2019-05-03 17:32:55 +02:00
parent cd9d659672
commit 96424be0da

View File

@ -287,13 +287,14 @@ class FancyTabBar: public QTabBar {
class TabData : public QObject { class TabData : public QObject {
public: public:
TabData(QWidget *widget_view, const QString name, const QIcon icon, const QString label, const bool enabled, QWidget *parent) : TabData(QWidget *widget_view, const QString name, const QIcon icon, const QString label, const bool enabled, const int idx, QWidget *parent) :
QObject(parent), QObject(parent),
widget_view_(widget_view), widget_view_(widget_view),
name_(name), icon_(icon), name_(name), icon_(icon),
label_(label), label_(label),
page_(new QWidget()), enabled_(enabled),
enabled_(enabled) { index_(idx),
page_(new QWidget()) {
// In order to achieve the same effect as the "Bottom Widget" of the old Nokia based FancyTabWidget a VBoxLayout is used on each page // In order to achieve the same effect as the "Bottom Widget" of the old Nokia based FancyTabWidget a VBoxLayout is used on each page
QVBoxLayout *layout = new QVBoxLayout(page_); QVBoxLayout *layout = new QVBoxLayout(page_);
layout->setSpacing(0); layout->setSpacing(0);
@ -311,6 +312,7 @@ class TabData : public QObject {
QString label() { return label_; } QString label() { return label_; }
QWidget *page() { return page_; } QWidget *page() { return page_; }
bool enabled() { return enabled_; } bool enabled() { return enabled_; }
int index() { return index_; }
void set_enabled(bool enabled) { enabled_ = enabled; } void set_enabled(bool enabled) { enabled_ = enabled; }
@ -319,8 +321,9 @@ class TabData : public QObject {
QString name_; QString name_;
QIcon icon_; QIcon icon_;
QString label_; QString label_;
QWidget *page_;
bool enabled_; bool enabled_;
int index_;
QWidget *page_;
}; };
@ -381,14 +384,14 @@ void FancyTabWidget::Load(const QString &kSettingsGroup) {
QSettings s; QSettings s;
s.beginGroup(kSettingsGroup); s.beginGroup(kSettingsGroup);
QMap <int, TabData*> tabs; QMultiMap <int, TabData*> tabs;
for (TabData *tab : tabs_) { for (TabData *tab : tabs_) {
const int idx = s.value("tab_" + tab->name(), tabs_.count()).toInt(); const int idx = s.value("tab_" + tab->name(), tab->index()).toInt();
tabs.insert(idx, tab); tabs.insert(idx, tab);
} }
s.endGroup(); s.endGroup();
QMap <int, TabData*> ::iterator i; QMultiMap <int, TabData*> ::iterator i;
for (i = tabs.begin() ; i != tabs.end() ; ++i) { for (i = tabs.begin() ; i != tabs.end() ; ++i) {
TabData *tab = i.value(); TabData *tab = i.value();
const int actualIndex = insertTab(i.key(), tab->page(), tab->icon(), tab->label()); const int actualIndex = insertTab(i.key(), tab->page(), tab->icon(), tab->label());
@ -425,7 +428,7 @@ void FancyTabWidget::addBottomWidget(QWidget *widget_view) {
void FancyTabWidget::AddTab(QWidget *widget_view, const QString &name, const QIcon &icon, const QString &label) { void FancyTabWidget::AddTab(QWidget *widget_view, const QString &name, const QIcon &icon, const QString &label) {
TabData *tab = new TabData(widget_view, name, icon, label, false, this); TabData *tab = new TabData(widget_view, name, icon, label, false, tabs_.count(), this);
tabs_.insert(widget_view, tab); tabs_.insert(widget_view, tab);
} }