Save geometry, tabbar and playlist on exit only, fix loading tabs in
correct order
This commit is contained in:
@@ -255,22 +255,22 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
|
||||
StyleHelper::setBaseColor(palette().color(QPalette::Highlight).darker());
|
||||
|
||||
// Add tabs to the fancy tab widget
|
||||
ui_->tabs->addTab(context_view_, IconLoader::Load("strawberry"), tr("Context"));
|
||||
ui_->tabs->addTab(collection_view_, IconLoader::Load("vinyl"), tr("Collection"));
|
||||
ui_->tabs->addTab(file_view_, IconLoader::Load("document-open"), tr("Files"));
|
||||
ui_->tabs->addTab(playlist_list_, IconLoader::Load("view-media-playlist"), tr("Playlists"));
|
||||
ui_->tabs->addTab(queue_view_, IconLoader::Load("footsteps"), tr("Queue"));
|
||||
ui_->tabs->AddTab(context_view_, "context", IconLoader::Load("strawberry"), tr("Context"));
|
||||
ui_->tabs->AddTab(collection_view_, "collection", IconLoader::Load("vinyl"), tr("Collection"));
|
||||
ui_->tabs->AddTab(file_view_, "files", IconLoader::Load("document-open"), tr("Files"));
|
||||
ui_->tabs->AddTab(playlist_list_, "playlists", IconLoader::Load("view-media-playlist"), tr("Playlists"));
|
||||
ui_->tabs->AddTab(queue_view_, "queue", IconLoader::Load("footsteps"), tr("Queue"));
|
||||
#ifndef Q_OS_WIN
|
||||
ui_->tabs->addTab(device_view_, IconLoader::Load("device"), tr("Devices"));
|
||||
ui_->tabs->AddTab(device_view_, "devices", IconLoader::Load("device"), tr("Devices"));
|
||||
#endif
|
||||
#ifdef HAVE_TIDAL
|
||||
ui_->tabs->addTab(tidal_search_view_, IconLoader::Load("tidal"), tr("Tidal"));
|
||||
ui_->tabs->AddTab(tidal_search_view_, "tidal", IconLoader::Load("tidal"), tr("Tidal"));
|
||||
#endif
|
||||
|
||||
// Add the playing widget to the fancy tab widget
|
||||
ui_->tabs->addBottomWidget(ui_->widget_playing);
|
||||
//ui_->tabs->SetBackgroundPixmap(QPixmap(":/pictures/strawberry-background.png"));
|
||||
ui_->tabs->loadSettings(kSettingsGroup);
|
||||
ui_->tabs->Load(kSettingsGroup);
|
||||
|
||||
track_position_timer_->setInterval(kTrackPositionUpdateTimeMs);
|
||||
connect(track_position_timer_, SIGNAL(timeout()), SLOT(UpdateTrackPosition()));
|
||||
@@ -656,9 +656,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
|
||||
#endif
|
||||
|
||||
// Fancy tabs
|
||||
connect(ui_->tabs, SIGNAL(ModeChanged(FancyTabWidget::Mode)), SLOT(SaveTabMode()));
|
||||
connect(ui_->tabs, SIGNAL(CurrentChanged(int)), SLOT(TabSwitched()));
|
||||
connect(ui_->tabs, SIGNAL(CurrentChanged(int)), SLOT(SaveGeometry()));
|
||||
|
||||
// Context
|
||||
connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), context_view_, SLOT(SongChanged(Song)));
|
||||
@@ -744,6 +742,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
|
||||
FancyTabWidget::Mode tab_mode = FancyTabWidget::Mode(tab_mode_int);
|
||||
if (tab_mode == FancyTabWidget::Mode_None) tab_mode = default_mode;
|
||||
ui_->tabs->SetMode(tab_mode);
|
||||
|
||||
file_view_->SetPath(settings_.value("file_path", QDir::homePath()).toString());
|
||||
|
||||
TabSwitched();
|
||||
@@ -808,7 +807,6 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {
|
||||
SaveGeometry();
|
||||
delete ui_;
|
||||
}
|
||||
|
||||
@@ -857,9 +855,9 @@ void MainWindow::ReloadSettings() {
|
||||
bool enable_tidal = settings.value("enabled", false).toBool();
|
||||
settings.endGroup();
|
||||
if (enable_tidal)
|
||||
ui_->tabs->addTab(tidal_search_view_, IconLoader::Load("tidal"), tr("Tidal"));
|
||||
ui_->tabs->EnableTab(tidal_search_view_);
|
||||
else
|
||||
ui_->tabs->delTab("Tidal");
|
||||
ui_->tabs->DisableTab(tidal_search_view_);
|
||||
#endif
|
||||
|
||||
}
|
||||
@@ -1004,16 +1002,6 @@ void MainWindow::TrackSkipped(PlaylistItemPtr item) {
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::changeEvent(QEvent *event) {
|
||||
if (!initialised_) return;
|
||||
SaveGeometry();
|
||||
}
|
||||
|
||||
void MainWindow::resizeEvent(QResizeEvent *event) {
|
||||
if (!initialised_) return;
|
||||
SaveGeometry();
|
||||
}
|
||||
|
||||
void MainWindow::TabSwitched() {
|
||||
|
||||
if (playing_widget_ && ui_->tabs->tabBar()->tabData(ui_->tabs->currentIndex()).toString().toLower() != "context") {
|
||||
@@ -1023,11 +1011,6 @@ void MainWindow::TabSwitched() {
|
||||
ui_->widget_playing->SetDisabled();
|
||||
}
|
||||
|
||||
if (!initialised_) return;
|
||||
|
||||
settings_.setValue("current_tab", ui_->tabs->currentIndex());
|
||||
ui_->tabs->saveSettings(kSettingsGroup);
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::SaveGeometry() {
|
||||
@@ -1039,16 +1022,9 @@ void MainWindow::SaveGeometry() {
|
||||
if (was_maximized_) settings_.remove("geometry");
|
||||
else settings_.setValue("geometry", saveGeometry());
|
||||
settings_.setValue("splitter_state", ui_->splitter->saveState());
|
||||
ui_->tabs->saveSettings(kSettingsGroup);
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::SaveTabMode() {
|
||||
if (!initialised_) return;
|
||||
settings_.setValue("tab_mode", ui_->tabs->mode());
|
||||
ui_->tabs->saveSettings(kSettingsGroup);
|
||||
}
|
||||
|
||||
void MainWindow::SavePlaybackStatus() {
|
||||
|
||||
QSettings settings;
|
||||
@@ -2223,6 +2199,9 @@ void MainWindow::Exit() {
|
||||
|
||||
SaveGeometry();
|
||||
SavePlaybackStatus();
|
||||
ui_->tabs->SaveSettings(kSettingsGroup);
|
||||
ui_->playlist->view()->SaveSettings();
|
||||
ui_->playlist->view()->SaveGeometry();
|
||||
app_->scrobbler()->WriteCache();
|
||||
|
||||
if (app_->player()->engine()->is_fadeout_enabled()) {
|
||||
@@ -2311,10 +2290,6 @@ void MainWindow::HandleNotificationPreview(OSD::Behaviour type, QString line1, Q
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::FocusCollectionTab() {
|
||||
ui_->tabs->setCurrentWidget(collection_view_);
|
||||
}
|
||||
|
||||
void MainWindow::ShowConsole() {
|
||||
Console *console = new Console(app_, this);
|
||||
console->show();
|
||||
|
||||
@@ -115,8 +115,6 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
||||
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
void changeEvent(QEvent *event);
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
void closeEvent(QCloseEvent *event);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
@@ -232,7 +230,6 @@ signals:
|
||||
|
||||
void TabSwitched();
|
||||
void SaveGeometry();
|
||||
void SaveTabMode();
|
||||
void SavePlaybackStatus();
|
||||
void LoadPlaybackStatus();
|
||||
void ResumePlayback();
|
||||
@@ -242,7 +239,6 @@ signals:
|
||||
void Exit();
|
||||
|
||||
void HandleNotificationPreview(OSD::Behaviour type, QString line1, QString line2);
|
||||
void FocusCollectionTab();
|
||||
|
||||
void ShowConsole();
|
||||
|
||||
|
||||
@@ -143,7 +143,6 @@ PlaylistView::PlaylistView(QWidget *parent)
|
||||
background_initialized_(false),
|
||||
setting_initial_header_layout_(false),
|
||||
read_only_settings_(true),
|
||||
header_loaded_(false),
|
||||
previous_background_image_opacity_(0.0),
|
||||
fade_animation_(new QTimeLine(1000, this)),
|
||||
force_background_redraw_(false),
|
||||
@@ -171,11 +170,6 @@ PlaylistView::PlaylistView(QWidget *parent)
|
||||
setStyle(style_);
|
||||
setMouseTracking(true);
|
||||
|
||||
connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(SaveGeometry()));
|
||||
connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(SaveGeometry()));
|
||||
connect(header_, SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), SLOT(SaveGeometry()));
|
||||
connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(SaveGeometry()));
|
||||
|
||||
connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(InvalidateCachedCurrentPixmap()));
|
||||
connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(InvalidateCachedCurrentPixmap()));
|
||||
connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(InvalidateCachedCurrentPixmap()));
|
||||
@@ -205,7 +199,6 @@ PlaylistView::PlaylistView(QWidget *parent)
|
||||
}
|
||||
|
||||
PlaylistView::~PlaylistView() {
|
||||
SaveGeometry();
|
||||
delete style_;
|
||||
}
|
||||
|
||||
@@ -294,10 +287,11 @@ void PlaylistView::setModel(QAbstractItemModel *m) {
|
||||
|
||||
void PlaylistView::LoadGeometry() {
|
||||
|
||||
QSettings settings;
|
||||
settings.beginGroup(Playlist::kSettingsGroup);
|
||||
QSettings s;
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
QByteArray state(s.value("state").toByteArray());
|
||||
s.endGroup();
|
||||
|
||||
QByteArray state(settings.value("state").toByteArray());
|
||||
if (!header_->RestoreState(state)) {
|
||||
// Maybe we're upgrading from a version that persisted the state with QHeaderView.
|
||||
if (!header_->restoreState(state)) {
|
||||
@@ -340,8 +334,6 @@ void PlaylistView::LoadGeometry() {
|
||||
header_->ShowSection(Playlist::Column_Title);
|
||||
}
|
||||
|
||||
header_loaded_ = true;
|
||||
|
||||
}
|
||||
|
||||
void PlaylistView::SaveGeometry() {
|
||||
@@ -1117,7 +1109,6 @@ void PlaylistView::StretchChanged(bool stretch) {
|
||||
|
||||
if (!initialized_) return;
|
||||
setHorizontalScrollBarPolicy(stretch ? Qt::ScrollBarAlwaysOff : Qt::ScrollBarAsNeeded);
|
||||
SaveGeometry();
|
||||
|
||||
}
|
||||
|
||||
@@ -1298,15 +1289,14 @@ void PlaylistView::ResetColumns() {
|
||||
|
||||
read_only_settings_ = true;
|
||||
setting_initial_header_layout_ = true;
|
||||
QSettings settings;
|
||||
settings.beginGroup(Playlist::kSettingsGroup);
|
||||
settings.remove("state");
|
||||
settings.endGroup();
|
||||
QSettings s;
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
s.remove("state");
|
||||
s.endGroup();
|
||||
ReloadSettings();
|
||||
LoadGeometry();
|
||||
ReloadSettings();
|
||||
read_only_settings_ = false;
|
||||
SaveGeometry();
|
||||
SetPlaylist(playlist_);
|
||||
|
||||
}
|
||||
|
||||
@@ -113,9 +113,11 @@ class PlaylistView : public QTreeView {
|
||||
void setModel(QAbstractItemModel *model);
|
||||
|
||||
void ResetColumns();
|
||||
void SaveGeometry();
|
||||
|
||||
public slots:
|
||||
void ReloadSettings();
|
||||
void SaveSettings();
|
||||
void StopGlowing();
|
||||
void StartGlowing();
|
||||
void JumpToCurrentlyPlayingTrack();
|
||||
@@ -164,14 +166,12 @@ class PlaylistView : public QTreeView {
|
||||
|
||||
private slots:
|
||||
void LoadGeometry();
|
||||
void SaveGeometry();
|
||||
void GlowIntensityChanged();
|
||||
void InhibitAutoscrollTimeout();
|
||||
void MaybeAutoscroll();
|
||||
void InvalidateCachedCurrentPixmap();
|
||||
void PlaylistDestroyed();
|
||||
|
||||
void SaveSettings();
|
||||
void StretchChanged(bool stretch);
|
||||
|
||||
void FadePreviousBackgroundImage(qreal value);
|
||||
@@ -217,7 +217,6 @@ class PlaylistView : public QTreeView {
|
||||
bool background_initialized_;
|
||||
bool setting_initial_header_layout_;
|
||||
bool read_only_settings_;
|
||||
bool header_loaded_;
|
||||
|
||||
QImage background_image_;
|
||||
QImage current_song_cover_art_;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
#include <QObject>
|
||||
#include <QTabBar>
|
||||
#include <QWidget>
|
||||
#include <QMap>
|
||||
@@ -283,18 +284,62 @@ class FancyTabBar: public QTabBar {
|
||||
|
||||
};
|
||||
|
||||
class TabData : public QObject {
|
||||
|
||||
public:
|
||||
TabData(QWidget *widget_view, const QString name, const QIcon icon, const QString label, const bool enabled, QWidget *parent) :
|
||||
QObject(parent),
|
||||
widget_view_(widget_view),
|
||||
name_(name), icon_(icon),
|
||||
label_(label),
|
||||
page_(new QWidget()),
|
||||
enabled_(enabled) {
|
||||
// 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_);
|
||||
layout->setSpacing(0);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
layout->addWidget(widget_view_);
|
||||
page_->setLayout(layout);
|
||||
}
|
||||
~TabData() {
|
||||
//delete page_;
|
||||
}
|
||||
|
||||
QWidget *widget_view() { return widget_view_; }
|
||||
QString name() { return name_; }
|
||||
QIcon icon() { return icon_; }
|
||||
QString label() { return label_; }
|
||||
QWidget *page() { return page_; }
|
||||
bool enabled() { return enabled_; }
|
||||
|
||||
void set_enabled(bool enabled) { enabled_ = enabled; }
|
||||
|
||||
private:
|
||||
QWidget *widget_view_;
|
||||
QString name_;
|
||||
QIcon icon_;
|
||||
QString label_;
|
||||
QWidget *page_;
|
||||
bool enabled_;
|
||||
|
||||
};
|
||||
|
||||
FancyTabWidget::~FancyTabWidget() {}
|
||||
|
||||
// Spacers are just disabled pages
|
||||
void FancyTabWidget::addSpacer() {
|
||||
|
||||
QWidget *spacer = new QWidget(this);
|
||||
const int index = addTab(spacer, QIcon(), QString());
|
||||
const int index = insertTab(count(), spacer, QIcon(), QString());
|
||||
setTabEnabled(index, false);
|
||||
|
||||
}
|
||||
|
||||
void FancyTabWidget::setBackgroundPixmap(const QPixmap& pixmap) {
|
||||
|
||||
background_pixmap_ = pixmap;
|
||||
update();
|
||||
|
||||
}
|
||||
|
||||
void FancyTabWidget::setCurrentIndex(int index) {
|
||||
@@ -332,80 +377,85 @@ FancyTabWidget::FancyTabWidget(QWidget* parent) : QTabWidget(parent),
|
||||
|
||||
}
|
||||
|
||||
void FancyTabWidget::loadSettings(const char *kSettingsGroup) {
|
||||
void FancyTabWidget::Load(const QString &kSettingsGroup) {
|
||||
|
||||
QSettings settings;
|
||||
settings.beginGroup(kSettingsGroup);
|
||||
|
||||
for (int i = 0 ; i < count() ; i++) {
|
||||
QString k = "tab_" + tabBar()->tabData(i).toString().toLower();
|
||||
int index = settings.value(k, i).toInt();
|
||||
if (index >= 0) {
|
||||
tabBar()->moveTab(i, index);
|
||||
}
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
QMap <int, TabData*> tabs;
|
||||
for (TabData *tab : tabs_) {
|
||||
const int idx = s.value("tab_" + tab->name(), tabs_.count()).toInt();
|
||||
tabs.insert(idx, tab);
|
||||
}
|
||||
s.endGroup();
|
||||
|
||||
settings.endGroup();
|
||||
QMap <int, TabData*> ::iterator i;
|
||||
for (i = tabs.begin() ; i != tabs.end() ; ++i) {
|
||||
TabData *tab = i.value();
|
||||
const int actualIndex = insertTab(i.key(), tab->page(), tab->icon(), tab->label());
|
||||
tabBar()->setTabData(actualIndex, QVariant(tab->name()));
|
||||
tab->set_enabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FancyTabWidget::saveSettings(const char *kSettingsGroup) {
|
||||
int FancyTabWidget::insertTab(int index, QWidget *page, const QIcon &icon, const QString &label) {
|
||||
return QTabWidget::insertTab(index, page, icon, label);
|
||||
}
|
||||
|
||||
QSettings settings;
|
||||
settings.beginGroup(kSettingsGroup);
|
||||
void FancyTabWidget::SaveSettings(const QString &kSettingsGroup) {
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
s.setValue("tab_mode", mode_);
|
||||
s.setValue("current_tab", currentIndex());
|
||||
|
||||
for (int i = 0 ; i < count() ; i++) {
|
||||
QString k = "tab_" + tabBar()->tabData(i).toString().toLower();
|
||||
settings.setValue(k, i);
|
||||
s.setValue(k, i);
|
||||
}
|
||||
|
||||
settings.endGroup();
|
||||
s.endGroup();
|
||||
|
||||
}
|
||||
|
||||
void FancyTabWidget::addBottomWidget(QWidget* widget_view) {
|
||||
void FancyTabWidget::addBottomWidget(QWidget *widget_view) {
|
||||
bottom_widget_ = widget_view;
|
||||
}
|
||||
|
||||
int FancyTabWidget::addTab(QWidget *widget_view, const QIcon &icon, const QString &label) {
|
||||
return insertTab(count(), widget_view, icon, label);
|
||||
}
|
||||
void FancyTabWidget::AddTab(QWidget *widget_view, const QString &name, const QIcon &icon, const QString &label) {
|
||||
|
||||
int FancyTabWidget::insertTab(int index, QWidget *widget_view, const QIcon &icon, const QString &label) {
|
||||
|
||||
QWidget *page(nullptr);
|
||||
if (tabs_.contains(label)) page = tabs_.value(label);
|
||||
else {
|
||||
page = new QWidget(this);
|
||||
// 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(this);
|
||||
layout->setSpacing(0);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
layout->addWidget(widget_view);
|
||||
page->setLayout(layout);
|
||||
tabs_.insert(label, page);
|
||||
}
|
||||
|
||||
for (int i = 0 ; i < count() ; i++) {
|
||||
QString l = tabBar()->tabData(i).toString();
|
||||
if (l == label) return i;
|
||||
}
|
||||
|
||||
const int actualIndex = QTabWidget::insertTab(index, page, icon, label);
|
||||
tabBar()->setTabData(actualIndex, QVariant(label));
|
||||
return actualIndex;
|
||||
TabData *tab = new TabData(widget_view, name, icon, label, false, this);
|
||||
tabs_.insert(widget_view, tab);
|
||||
|
||||
}
|
||||
|
||||
void FancyTabWidget::delTab(const QString &label) {
|
||||
bool FancyTabWidget::EnableTab(QWidget *widget_view) {
|
||||
|
||||
if (!tabs_.contains(widget_view)) return false;
|
||||
TabData *tab = tabs_.value(widget_view);
|
||||
if (tab->enabled()) return true;
|
||||
const int actualIndex = QTabWidget::insertTab(count(), tab->page(), tab->icon(), tab->label());
|
||||
tabBar()->setTabData(actualIndex, QVariant(tab->name()));
|
||||
tab->set_enabled(true);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
bool FancyTabWidget::DisableTab(QWidget *widget_view) {
|
||||
|
||||
if (!tabs_.contains(widget_view)) return false;
|
||||
TabData *tab = tabs_.value(widget_view);
|
||||
|
||||
for (int i = 0 ; i < count() ; i++) {
|
||||
QString l = tabBar()->tabData(i).toString();
|
||||
if (l == label) {
|
||||
if (tabBar()->tabData(i).toString() == tab->name()) {
|
||||
removeTab(i);
|
||||
break;
|
||||
tab->set_enabled(false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -30,28 +30,35 @@
|
||||
#include <QActionGroup>
|
||||
#include <QMenu>
|
||||
#include <QSignalMapper>
|
||||
#include <QString>
|
||||
#include <QIcon>
|
||||
#include <QPixmap>
|
||||
#include <QSize>
|
||||
#include <QtEvents>
|
||||
|
||||
class TabData;
|
||||
|
||||
namespace Core {
|
||||
namespace Internal {
|
||||
|
||||
class FancyTabWidget : public QTabWidget {
|
||||
Q_OBJECT
|
||||
|
||||
~FancyTabWidget();
|
||||
|
||||
public:
|
||||
FancyTabWidget(QWidget* parent = 0);
|
||||
int addTab(QWidget *widget_view, const QIcon &icon, const QString &label);
|
||||
void delTab(const QString &label);
|
||||
int insertTab(int index, QWidget *widget_view, const QIcon &icon, const QString &label);
|
||||
void AddTab(QWidget *widget_view, const QString &name, const QIcon &icon, const QString &label);
|
||||
bool EnableTab(QWidget *widget_view);
|
||||
bool DisableTab(QWidget *widget_view);
|
||||
int insertTab(int index, QWidget *page, const QIcon &icon, const QString &label);
|
||||
void addBottomWidget(QWidget* widget_view);
|
||||
|
||||
void setBackgroundPixmap(const QPixmap& pixmap);
|
||||
void addSpacer();
|
||||
|
||||
void loadSettings(const char *);
|
||||
void saveSettings(const char *);
|
||||
void Load(const QString &kSettingsGroup);
|
||||
void SaveSettings(const QString &kSettingsGroup);
|
||||
|
||||
// Values are persisted - only add to the end
|
||||
enum Mode {
|
||||
@@ -95,7 +102,7 @@ class FancyTabWidget : public QTabWidget {
|
||||
Mode mode_;
|
||||
QWidget *bottom_widget_;
|
||||
|
||||
QHash <QString, QWidget*> tabs_;
|
||||
QMap <QWidget*, TabData*> tabs_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user