From 538cee89b2121a6869fc67692ad16d7040c14852 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 31 Aug 2014 15:52:00 +0200 Subject: [PATCH] refs #319, cleaned up views for formatters, in the same step fixed bug sort column based on view mode was missing --- src/blackgui/views/aircraftview.cpp | 8 +-- src/blackgui/views/airportview.cpp | 10 +--- src/blackgui/views/atcstationview.cpp | 22 ++++--- src/blackgui/views/clientview.cpp | 10 +--- src/blackgui/views/keyboardkeyview.cpp | 10 +--- src/blackgui/views/namevariantpairview.cpp | 15 +---- src/blackgui/views/serverview.cpp | 8 +-- src/blackgui/views/statusmessageview.cpp | 15 +---- src/blackgui/views/userview.cpp | 9 +-- src/blackgui/views/viewbase.h | 67 +++++++++++++++++----- 10 files changed, 82 insertions(+), 92 deletions(-) diff --git a/src/blackgui/views/aircraftview.cpp b/src/blackgui/views/aircraftview.cpp index b24877169..7a5604429 100644 --- a/src/blackgui/views/aircraftview.cpp +++ b/src/blackgui/views/aircraftview.cpp @@ -19,13 +19,7 @@ namespace BlackGui { CAircraftView::CAircraftView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CAircraftListModel(this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::Aviation::CAircraft::IndexDistance); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); + this->standardInit(new CAircraftListModel(this)); } } } diff --git a/src/blackgui/views/airportview.cpp b/src/blackgui/views/airportview.cpp index 8fade1778..6fa8afc21 100644 --- a/src/blackgui/views/airportview.cpp +++ b/src/blackgui/views/airportview.cpp @@ -19,15 +19,7 @@ namespace BlackGui { CAirportView::CAirportView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CAirportListModel(this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::Aviation::CAirport::IndexDistance); - if (this->m_model->hasValidSortColumn()) - { - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); - } + this->standardInit(new CAirportListModel(this)); } } } diff --git a/src/blackgui/views/atcstationview.cpp b/src/blackgui/views/atcstationview.cpp index 462ec2309..13e2c762d 100644 --- a/src/blackgui/views/atcstationview.cpp +++ b/src/blackgui/views/atcstationview.cpp @@ -19,19 +19,27 @@ namespace BlackGui { CAtcStationView::CAtcStationView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CAtcStationListModel(CAtcStationListModel::StationsOnline, this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::Aviation::CAtcStation::IndexDistance); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); + this->standardInit(new CAtcStationListModel(CAtcStationListModel::StationsOnline, this)); } void CAtcStationView::setStationMode(CAtcStationListModel::AtcStationMode stationMode) { Q_ASSERT(this->m_model); this->m_model->setStationMode(stationMode); + + switch (stationMode) + { + case CAtcStationListModel::NotSet: + case CAtcStationListModel::StationsOnline: + this->m_model->setSortColumnByPropertyIndex(BlackMisc::Aviation::CAtcStation::IndexDistance); + break; + case CAtcStationListModel::StationsBooked: + this->m_model->setSortColumnByPropertyIndex(BlackMisc::Aviation::CAtcStation::IndexBookedFrom); + break; + default: + break; + } + this->setSortIndicator(); } void CAtcStationView::changedAtcStationConnectionStatus(const Aviation::CAtcStation &station, bool added) diff --git a/src/blackgui/views/clientview.cpp b/src/blackgui/views/clientview.cpp index 18aedb289..98576b2f8 100644 --- a/src/blackgui/views/clientview.cpp +++ b/src/blackgui/views/clientview.cpp @@ -9,6 +9,7 @@ #include "clientview.h" #include +#include using namespace BlackMisc; using namespace BlackGui::Models; @@ -19,14 +20,7 @@ namespace BlackGui { CClientView::CClientView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CClientListModel(this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex( { BlackMisc::Network::CClient::IndexUser, BlackMisc::Network::CUser::IndexRealName }); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); - this->horizontalHeader()->setStretchLastSection(true); + this->standardInit(new CClientListModel(this)); } } } diff --git a/src/blackgui/views/keyboardkeyview.cpp b/src/blackgui/views/keyboardkeyview.cpp index af70dae61..3ab6dc53f 100644 --- a/src/blackgui/views/keyboardkeyview.cpp +++ b/src/blackgui/views/keyboardkeyview.cpp @@ -19,14 +19,8 @@ namespace BlackGui { CKeyboardKeyView::CKeyboardKeyView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CKeyboardKeyListModel(this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::Settings::CSettingKeyboardHotkey::IndexFunctionAsString); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); - this->setItemDelegate(new CKeyboardKeyItemDelegate(this)); + this->standardInit(new CKeyboardKeyListModel(this)); + this->setItemDelegate(new CKeyboardKeyItemDelegate(this)); // for editing } } } diff --git a/src/blackgui/views/namevariantpairview.cpp b/src/blackgui/views/namevariantpairview.cpp index 98d35fa92..e848d4a6e 100644 --- a/src/blackgui/views/namevariantpairview.cpp +++ b/src/blackgui/views/namevariantpairview.cpp @@ -19,14 +19,7 @@ namespace BlackGui { CNameVariantPairView::CNameVariantPairView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CNameVariantPairModel(true, this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::CNameVariantPair::IndexName); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); - this->horizontalHeader()->setStretchLastSection(true); + this->standardInit(new CNameVariantPairModel(true, this)); } void CNameVariantPairView::setIconMode(bool withIcon) @@ -39,15 +32,13 @@ namespace BlackGui { Q_ASSERT(this->m_model); this->m_model->addOrUpdateByName(name, value, icon); - this->resizeColumnsToContents(); - this->resizeRowsToContents(); + this->resizeToContents(); } void CNameVariantPairView::removeByName(const QString &name) { this->m_model->removeByName(name); - this->resizeColumnsToContents(); - this->resizeRowsToContents(); + this->resizeToContents(); } } } diff --git a/src/blackgui/views/serverview.cpp b/src/blackgui/views/serverview.cpp index dd80227d0..4d79926e9 100644 --- a/src/blackgui/views/serverview.cpp +++ b/src/blackgui/views/serverview.cpp @@ -19,13 +19,7 @@ namespace BlackGui { CServerView::CServerView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CServerListModel(this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::Network::CServer::IndexName); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); + this->standardInit(new CServerListModel(this)); } void CServerView::setSelectedServer(const Network::CServer &selectedServer) diff --git a/src/blackgui/views/statusmessageview.cpp b/src/blackgui/views/statusmessageview.cpp index f5dd80fa9..5b04fb67d 100644 --- a/src/blackgui/views/statusmessageview.cpp +++ b/src/blackgui/views/statusmessageview.cpp @@ -23,16 +23,7 @@ namespace BlackGui */ CStatusMessageView::CStatusMessageView(QWidget *parent) : CViewBase(parent), m_contextMenu(nullptr) { - this->m_model = new CStatusMessageListModel(this); - this->setModel(this->m_model); // QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::CStatusMessage::IndexTimestamp); - if (this->m_model->hasValidSortColumn()) - { - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); - } - + this->standardInit(new CStatusMessageListModel(this)); this->setContextMenuPolicy(Qt::CustomContextMenu); this->m_contextMenu = new QMenu(this); this->m_contextMenu->addAction("Clear"); @@ -58,5 +49,5 @@ namespace BlackGui } } } - } -} + } // namespace +} // namespace diff --git a/src/blackgui/views/userview.cpp b/src/blackgui/views/userview.cpp index 2971f2dc6..871bbfef9 100644 --- a/src/blackgui/views/userview.cpp +++ b/src/blackgui/views/userview.cpp @@ -19,14 +19,7 @@ namespace BlackGui { CUserView::CUserView(QWidget *parent) : CViewBase(parent) { - this->m_model = new CUserListModel(CUserListModel::UserDetailed, this); - this->setModel(this->m_model); // via QTableView - this->m_model->setSortColumnByPropertyIndex(BlackMisc::Network::CUser::IndexRealName); - if (this->m_model->hasValidSortColumn()) - this->horizontalHeader()->setSortIndicator( - this->m_model->getSortColumn(), - this->m_model->getSortOrder()); - this->horizontalHeader()->setStretchLastSection(true); + this->standardInit(new CUserListModel(CUserListModel::UserDetailed, this)); } void CUserView::setUserMode(CUserListModel::UserMode userMode) diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index df8e85782..b96769d95 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -22,20 +22,6 @@ namespace BlackGui template class CViewBase : public QTableView { - protected: - - //! Constructor - CViewBase(QWidget *parent, ModelClass *model = nullptr) : QTableView(parent), m_model(model) - { - this->setSortingEnabled(true); - this->horizontalHeader()->setStretchLastSection(true); - } - - //! Destructor - virtual ~CViewBase() {} - - ModelClass *m_model; //!< corresponding model - public: //! Model @@ -95,6 +81,59 @@ namespace BlackGui Q_ASSERT(this->m_model); return this->m_model->rowCount() < 1; } + + //! Set own name and the model's name + void setObjectName(const QString &name) + { + // then name here is mainly set for debugging purposes so each model can be identified + Q_ASSERT(m_model); + QTableView::setObjectName(name); + QString modelName = QString(name).append(':').append(this->m_model->getTranslationContext()); + this->m_model->setObjectName(modelName); + } + + protected: + + //! Constructor + CViewBase(QWidget *parent, ModelClass *model = nullptr) : QTableView(parent), m_model(model) + { + this->setSortingEnabled(true); + if (model) { this->setModel(this->m_model); } + } + + //! Destructor + virtual ~CViewBase() {} + + //! Set the search indicator based on model + void setSortIndicator() + { + if (this->m_model->hasValidSortColumn()) + { + this->horizontalHeader()->setSortIndicator( + this->m_model->getSortColumn(), + this->m_model->getSortOrder()); + } + } + + //! Resize to content + void resizeToContents() + { + this->resizeColumnsToContents(); + this->resizeRowsToContents(); + } + + //! Init + void standardInit(ModelClass *model = nullptr) + { + Q_ASSERT(model || this->m_model); + if (model) { this->m_model = model; } + this->setModel(this->m_model); // via QTableView + this->setSortIndicator(); + this->horizontalHeader()->setStretchLastSection(true); + } + + ModelClass *m_model = nullptr; //!< corresponding model + }; } }