# HG changeset patch # User unc0rr # Date 1386101982 -14400 # Node ID 258c320256dce3b0fdeb535bd7c2a75ea0d4ed86 # Parent 1ee4842a9c867f3fdbae33bf8849c70b84bebf74 Load themes lazily diff -r 1ee4842a9c86 -r 258c320256dc QTfrontend/model/ThemeModel.cpp --- a/QTfrontend/model/ThemeModel.cpp Tue Dec 03 23:54:58 2013 +0400 +++ b/QTfrontend/model/ThemeModel.cpp Wed Dec 04 00:19:42 2013 +0400 @@ -29,6 +29,8 @@ QAbstractListModel(parent) { m_data = QList >(); + + m_themesLoaded = false; } int ThemeModel::rowCount(const QModelIndex &parent) const @@ -36,7 +38,11 @@ if(parent.isValid()) return 0; else + { + if(!m_themesLoaded) + loadThemes(); return m_data.size(); + } } @@ -45,13 +51,21 @@ if(index.column() > 0 || index.row() >= m_data.size()) return QVariant(); else + { + if(!m_themesLoaded) + loadThemes(); + return m_data.at(index.row()).value(role); + } } -void ThemeModel::loadThemes() +void ThemeModel::loadThemes() const { - beginResetModel(); + qDebug("[LAZINESS ThemeModel::loadThemes()]"); + + m_themesLoaded = true; + DataManager & datamgr = DataManager::instance(); @@ -94,7 +108,4 @@ m_data.append(dataset); } - - - endResetModel(); } diff -r 1ee4842a9c86 -r 258c320256dc QTfrontend/model/ThemeModel.h --- a/QTfrontend/model/ThemeModel.h Tue Dec 03 23:54:58 2013 +0400 +++ b/QTfrontend/model/ThemeModel.h Wed Dec 04 00:19:42 2013 +0400 @@ -45,14 +45,11 @@ int rowCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role) const; + private: + mutable QList > m_data; + mutable bool m_themesLoaded; - public slots: - /// reloads the themes from the DataManager - void loadThemes(); - - - private: - QList > m_data; + void loadThemes() const; }; #endif // HEDGEWARS_THEMEMODEL_H diff -r 1ee4842a9c86 -r 258c320256dc QTfrontend/ui/widget/mapContainer.cpp --- a/QTfrontend/ui/widget/mapContainer.cpp Tue Dec 03 23:54:58 2013 +0400 +++ b/QTfrontend/ui/widget/mapContainer.cpp Wed Dec 04 00:19:42 2013 +0400 @@ -252,7 +252,6 @@ staticMapChanged(m_staticMapModel->index(0, 0)); missionMapChanged(m_missionMapModel->index(0, 0)); changeMapType(MapModel::GeneratedMap); - setRandomTheme(); } void HWMapContainer::setImage(const QImage newImage) @@ -603,6 +602,7 @@ { if (!m_previewEnabled) { m_previewEnabled = true; + setRandomTheme(); updatePreview(); } QWidget::showEvent(event); diff -r 1ee4842a9c86 -r 258c320256dc QTfrontend/util/DataManager.cpp --- a/QTfrontend/util/DataManager.cpp Tue Dec 03 23:54:58 2013 +0400 +++ b/QTfrontend/util/DataManager.cpp Wed Dec 04 00:19:42 2013 +0400 @@ -115,7 +115,6 @@ { if (m_themeModel == NULL) { m_themeModel = new ThemeModel(); - m_themeModel->loadThemes(); } return m_themeModel; }