From 247e0452882d32159a3a724803d9d82c29da03f1 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 20 Apr 2014 18:26:44 +0200 Subject: [PATCH] refs #195, view classes for * ATC station * keyboard key * server * status message * users * aircrafts --- src/blackgui/aircraftview.cpp | 18 +++++++++++ src/blackgui/aircraftview.h | 21 +++++++++++++ src/blackgui/atcstationview.cpp | 24 +++++++++++++++ src/blackgui/atcstationview.h | 24 +++++++++++++++ src/blackgui/keyboardkeyview.cpp | 19 ++++++++++++ src/blackgui/keyboardkeyview.h | 21 +++++++++++++ src/blackgui/serverview.cpp | 24 +++++++++++++++ src/blackgui/serverview.h | 24 +++++++++++++++ src/blackgui/statusmessageview.cpp | 49 ++++++++++++++++++++++++++++++ src/blackgui/statusmessageview.h | 28 +++++++++++++++++ src/blackgui/userview.cpp | 25 +++++++++++++++ src/blackgui/userview.h | 24 +++++++++++++++ 12 files changed, 301 insertions(+) create mode 100644 src/blackgui/aircraftview.cpp create mode 100644 src/blackgui/aircraftview.h create mode 100644 src/blackgui/atcstationview.cpp create mode 100644 src/blackgui/atcstationview.h create mode 100644 src/blackgui/keyboardkeyview.cpp create mode 100644 src/blackgui/keyboardkeyview.h create mode 100644 src/blackgui/serverview.cpp create mode 100644 src/blackgui/serverview.h create mode 100644 src/blackgui/statusmessageview.cpp create mode 100644 src/blackgui/statusmessageview.h create mode 100644 src/blackgui/userview.cpp create mode 100644 src/blackgui/userview.h diff --git a/src/blackgui/aircraftview.cpp b/src/blackgui/aircraftview.cpp new file mode 100644 index 000000000..3eecd56f7 --- /dev/null +++ b/src/blackgui/aircraftview.cpp @@ -0,0 +1,18 @@ +#include "aircraftview.h" +#include + +using namespace BlackMisc; + +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()); + } +} diff --git a/src/blackgui/aircraftview.h b/src/blackgui/aircraftview.h new file mode 100644 index 000000000..1e8b96f2f --- /dev/null +++ b/src/blackgui/aircraftview.h @@ -0,0 +1,21 @@ +#ifndef BLACKGUI_AIRCRAFTVIEW_H +#define BLACKGUI_AIRCRAFTVIEW_H + +#include "viewbase.h" +#include "aircraftlistmodel.h" + +namespace BlackGui +{ + /*! + * \brief Aircrafts view + */ + class CAircraftView : public CViewBase + { + + public: + + //! Constructor + explicit CAircraftView(QWidget *parent = nullptr); + }; +} +#endif // guard diff --git a/src/blackgui/atcstationview.cpp b/src/blackgui/atcstationview.cpp new file mode 100644 index 000000000..8fccb2e2b --- /dev/null +++ b/src/blackgui/atcstationview.cpp @@ -0,0 +1,24 @@ +#include "atcstationview.h" +#include + +using namespace BlackMisc; + +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()); + } + + void CAtcStationView::setStationMode(CAtcStationListModel::AtcStationMode stationMode) + { + Q_ASSERT(this->m_model); + this->m_model->setStationMode(stationMode); + } +} diff --git a/src/blackgui/atcstationview.h b/src/blackgui/atcstationview.h new file mode 100644 index 000000000..465033e31 --- /dev/null +++ b/src/blackgui/atcstationview.h @@ -0,0 +1,24 @@ +#ifndef BLACKGUI_ATCSTATIONVIEW_H +#define BLACKGUI_ATCSTATIONVIEW_H + +#include "viewbase.h" +#include "atcstationlistmodel.h" + +namespace BlackGui +{ + /*! + * \brief ATC stations view + */ + class CAtcStationView : public CViewBase + { + + public: + + //! Constructor + explicit CAtcStationView(QWidget *parent = nullptr); + + //! Set station mode + void setStationMode(CAtcStationListModel::AtcStationMode stationMode); + }; +} +#endif // guard diff --git a/src/blackgui/keyboardkeyview.cpp b/src/blackgui/keyboardkeyview.cpp new file mode 100644 index 000000000..d047b4acf --- /dev/null +++ b/src/blackgui/keyboardkeyview.cpp @@ -0,0 +1,19 @@ +#include "keyboardkeyview.h" +#include + +using namespace BlackMisc; + +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::Hardware::CKeyboardKey::IndexFunctionAsString); + if (this->m_model->hasValidSortColumn()) + this->horizontalHeader()->setSortIndicator( + this->m_model->getSortColumn(), + this->m_model->getSortOrder()); + this->setItemDelegate(new BlackGui::CKeyboardKeyItemDelegate(this)); + } +} diff --git a/src/blackgui/keyboardkeyview.h b/src/blackgui/keyboardkeyview.h new file mode 100644 index 000000000..4b6213dcb --- /dev/null +++ b/src/blackgui/keyboardkeyview.h @@ -0,0 +1,21 @@ +#ifndef BLACKGUI_KEYBOARDKEYVIEW_H +#define BLACKGUI_KEYBOARDKEYVIEW_H + +#include "viewbase.h" +#include "keyboardkeylistmodel.h" + +namespace BlackGui +{ + /*! + * \brief Keyboard key view + */ + class CKeyboardKeyView : public CViewBase + { + + public: + + //! Constructor + explicit CKeyboardKeyView(QWidget *parent = nullptr); + }; +} +#endif // guard diff --git a/src/blackgui/serverview.cpp b/src/blackgui/serverview.cpp new file mode 100644 index 000000000..1b5bbeed8 --- /dev/null +++ b/src/blackgui/serverview.cpp @@ -0,0 +1,24 @@ +#include "serverview.h" +#include + +using namespace BlackMisc; + +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()); + } + + void CServerView::setSelectedServer(const Network::CServer &selectedServer) + { + Q_ASSERT(this->m_model); + this->m_model->setSelectedServer(selectedServer); + } +} diff --git a/src/blackgui/serverview.h b/src/blackgui/serverview.h new file mode 100644 index 000000000..879247099 --- /dev/null +++ b/src/blackgui/serverview.h @@ -0,0 +1,24 @@ +#ifndef BLACKGUI_SERVERVIEW_H +#define BLACKGUI_SERVERVIEW_H + +#include "viewbase.h" +#include "serverlistmodel.h" + +namespace BlackGui +{ + /*! + * \brief Network servers + */ + class CServerView : public CViewBase + { + + public: + + //! Constructor + explicit CServerView(QWidget *parent = nullptr); + + //! \copydoc CServerListModel::setSelectedServer + void setSelectedServer(const BlackMisc::Network::CServer &selectedServer); + }; +} +#endif // guard diff --git a/src/blackgui/statusmessageview.cpp b/src/blackgui/statusmessageview.cpp new file mode 100644 index 000000000..c396ab3fa --- /dev/null +++ b/src/blackgui/statusmessageview.cpp @@ -0,0 +1,49 @@ +#include "statusmessageview.h" +#include +#include + +using namespace BlackMisc; + +namespace BlackGui +{ + /* + * Constructor + */ + 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->setContextMenuPolicy(Qt::CustomContextMenu); + this->m_contextMenu = new QMenu(this); + this->m_contextMenu->addAction("Clear"); + connect(this, &QTableView::customContextMenuRequested, this, &CStatusMessageView::contextMenu); + } + + /* + * Message list context menu + */ + void CStatusMessageView::contextMenu(const QPoint &position) + { + // position for most widgets + QPoint globalPosition = this->mapToGlobal(position); + QAction *selectedItem = this->m_contextMenu->exec(globalPosition); + if (selectedItem) + { + // http://forum.technical-assistance.co.uk/sndvol32exe-command-line-parameters-vt1348.html + const QList actions = this->m_contextMenu->actions(); + if (selectedItem == actions.at(0)) + { + this->clear(); + this->resizeColumnsToContents(); + } + } + } +} diff --git a/src/blackgui/statusmessageview.h b/src/blackgui/statusmessageview.h new file mode 100644 index 000000000..64330bd6c --- /dev/null +++ b/src/blackgui/statusmessageview.h @@ -0,0 +1,28 @@ +#ifndef BLACKGUI_STATUSMESSAGEVIEW_H +#define BLACKGUI_STATUSMESSAGEVIEW_H + +#include "viewbase.h" +#include "statusmessagelistmodel.h" + +namespace BlackGui +{ + /*! + * \brief Status message view + */ + class CStatusMessageView : public CViewBase + { + + public: + + //! Constructor + explicit CStatusMessageView(QWidget *parent = nullptr); + + private: + QMenu *m_contextMenu; + + private slots: + //! Context menu for message list + void contextMenu(const QPoint &position); + }; +} +#endif // guard diff --git a/src/blackgui/userview.cpp b/src/blackgui/userview.cpp new file mode 100644 index 000000000..49b52375c --- /dev/null +++ b/src/blackgui/userview.cpp @@ -0,0 +1,25 @@ +#include "userview.h" +#include + +using namespace BlackMisc; + +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); + } + + void CUserView::setUserMode(CUserListModel::UserMode userMode) + { + Q_ASSERT(this->m_model); + this->m_model->setUserMode(userMode); + } +} diff --git a/src/blackgui/userview.h b/src/blackgui/userview.h new file mode 100644 index 000000000..d040cf9d6 --- /dev/null +++ b/src/blackgui/userview.h @@ -0,0 +1,24 @@ +#ifndef BLACKGUI_USERVIEW_H +#define BLACKGUI_USERVIEW_H + +#include "viewbase.h" +#include "userlistmodel.h" + +namespace BlackGui +{ + /*! + * \brief User view + */ + class CUserView : public CViewBase + { + + public: + + //! Constructor + explicit CUserView(QWidget *parent = nullptr); + + //! Set station mode + void setUserMode(CUserListModel::UserMode userMode); + }; +} +#endif // guard