mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
refs #195, extended model classes
* mode for users (detailed, complete) * mode for ATC station (booked, online) * clear method for columns
This commit is contained in:
@@ -13,22 +13,10 @@ namespace BlackGui
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
CAtcListModel::CAtcListModel(QObject *parent) : CListModelBase("ViewAtcList", parent)
|
||||
CAtcStationListModel::CAtcStationListModel(AtcStationMode stationMode, QObject *parent) :
|
||||
CListModelBase("ViewAtcList", parent), m_stationMode(NotSet)
|
||||
{
|
||||
this->m_columns.addColumn(CColumn("callsign", CAtcStation::IndexCallsignAsStringAsSet));
|
||||
this->m_columns.addColumn(CColumn("distance", CAtcStation::IndexDistance, Qt::AlignRight | Qt::AlignVCenter));
|
||||
this->m_columns.addColumn(CColumn("frequency", CAtcStation::IndexFrequency, Qt::AlignRight | Qt::AlignVCenter));
|
||||
this->m_columns.addColumn(CColumn("controllername", CAtcStation::IndexControllerRealName));
|
||||
this->m_columns.addColumn(CColumn("online", CAtcStation::IndexIsOnline));
|
||||
this->m_columns.addColumn(CColumn("bookedfrom", CAtcStation::IndexBookedFrom));
|
||||
this->m_columns.addColumn(CColumn("bookeduntil", CAtcStation::IndexBookedUntil));
|
||||
this->m_columns.addColumn(CColumn("voiceroomurl", CAtcStation::IndexVoiceRoomUrl));
|
||||
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAtcStation::IndexDistance);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
|
||||
this->setStationMode(stationMode);
|
||||
// force strings for translation in resource files
|
||||
(void)QT_TRANSLATE_NOOP("ViewAtcList", "callsign");
|
||||
(void)QT_TRANSLATE_NOOP("ViewAtcList", "distance");
|
||||
@@ -39,4 +27,40 @@ namespace BlackGui
|
||||
(void)QT_TRANSLATE_NOOP("ViewAtcList", "bookeduntil");
|
||||
(void)QT_TRANSLATE_NOOP("ViewAtcList", "voiceroomurl");
|
||||
}
|
||||
|
||||
void CAtcStationListModel::setStationMode(CAtcStationListModel::AtcStationMode stationMode)
|
||||
{
|
||||
if (this->m_stationMode == stationMode) return;
|
||||
this->m_stationMode = stationMode;
|
||||
this->m_columns.clear();
|
||||
switch (stationMode)
|
||||
{
|
||||
case StationsOnline:
|
||||
this->m_columns.addColumn(CColumn("callsign", CAtcStation::IndexCallsignAsStringAsSet));
|
||||
this->m_columns.addColumn(CColumn("distance", CAtcStation::IndexDistance, Qt::AlignRight | Qt::AlignVCenter));
|
||||
this->m_columns.addColumn(CColumn("frequency", CAtcStation::IndexFrequency, Qt::AlignRight | Qt::AlignVCenter));
|
||||
this->m_columns.addColumn(CColumn("controllername", CAtcStation::IndexControllerRealName));
|
||||
this->m_columns.addColumn(CColumn("bookedfrom", CAtcStation::IndexBookedFrom));
|
||||
this->m_columns.addColumn(CColumn("bookeduntil", CAtcStation::IndexBookedUntil));
|
||||
this->m_columns.addColumn(CColumn("voiceroomurl", CAtcStation::IndexVoiceRoomUrl));
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAtcStation::IndexDistance);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
break;
|
||||
|
||||
case StationsBooked:
|
||||
this->m_columns.addColumn(CColumn("callsign", CAtcStation::IndexCallsignAsStringAsSet));
|
||||
this->m_columns.addColumn(CColumn("controllername", CAtcStation::IndexControllerRealName));
|
||||
this->m_columns.addColumn(CColumn("bookedfrom", CAtcStation::IndexBookedFrom));
|
||||
this->m_columns.addColumn(CColumn("bookeduntil", CAtcStation::IndexBookedUntil));
|
||||
this->m_columns.addColumn(CColumn("frequency", CAtcStation::IndexFrequency, Qt::AlignRight | Qt::AlignVCenter));
|
||||
this->m_columns.addColumn(CColumn("online", CAtcStation::IndexIsOnline));
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAtcStation::IndexBookedFrom);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,22 +20,29 @@ namespace BlackGui
|
||||
/*!
|
||||
* \brief ATC list model
|
||||
*/
|
||||
class CAtcListModel : public CListModelBase<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList>
|
||||
class CAtcStationListModel : public CListModelBase<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList>
|
||||
{
|
||||
|
||||
public:
|
||||
//! What kind of stations
|
||||
enum AtcStationMode
|
||||
{
|
||||
NotSet,
|
||||
StationsBooked,
|
||||
StationsOnline
|
||||
};
|
||||
|
||||
/*!
|
||||
* \brief Constructor
|
||||
* \param parent
|
||||
*/
|
||||
explicit CAtcListModel(QObject *parent = nullptr);
|
||||
//! Constructor
|
||||
explicit CAtcStationListModel(AtcStationMode stationMode, QObject *parent = nullptr);
|
||||
|
||||
/*!
|
||||
* \brief Destructor
|
||||
*/
|
||||
virtual ~CAtcListModel() {}
|
||||
//! Destructor
|
||||
virtual ~CAtcStationListModel() {}
|
||||
|
||||
//! Set station mode
|
||||
void setStationMode(AtcStationMode stationMode);
|
||||
|
||||
private:
|
||||
AtcStationMode m_stationMode;
|
||||
};
|
||||
}
|
||||
#endif // guard
|
||||
|
||||
@@ -124,6 +124,8 @@ namespace BlackGui
|
||||
//! Column at position
|
||||
const CColumn &at(int columnNumber) const { return this->m_columns.at(columnNumber); }
|
||||
|
||||
//! Clear
|
||||
void clear() { this->m_columns.clear(); }
|
||||
|
||||
private:
|
||||
QList<CColumn> m_columns;
|
||||
|
||||
@@ -10,15 +10,10 @@ namespace BlackGui
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
CUserListModel::CUserListModel(QObject *parent) :
|
||||
CListModelBase<BlackMisc::Network::CUser, BlackMisc::Network::CUserList>("ViewUserList", parent)
|
||||
CUserListModel::CUserListModel(UserMode userMode, QObject *parent) :
|
||||
CListModelBase<BlackMisc::Network::CUser, BlackMisc::Network::CUserList>("ViewUserList", parent), m_userMode(NotSet)
|
||||
{
|
||||
this->m_columns.addColumn(CColumn("", CUser::IndexCallsignIcon));
|
||||
this->m_columns.addColumn(CColumn("realname", CUser::IndexRealName));
|
||||
this->m_columns.addColumn(CColumn("callsign", CUser::IndexCallsign));
|
||||
this->m_columns.addColumn(CColumn("userid", CUser::IndexId));
|
||||
// this->m_columns.addColumn(CUser::IndexEmail, "email");
|
||||
|
||||
this->setUserMode(userMode);
|
||||
// force strings for translation in resource files
|
||||
(void)QT_TRANSLATE_NOOP("ViewUserList", "callsign");
|
||||
(void)QT_TRANSLATE_NOOP("ViewUserList", "realname");
|
||||
@@ -26,6 +21,32 @@ namespace BlackGui
|
||||
(void)QT_TRANSLATE_NOOP("ViewUserList", "email");
|
||||
}
|
||||
|
||||
/*
|
||||
* Mode
|
||||
*/
|
||||
void CUserListModel::setUserMode(CUserListModel::UserMode userMode)
|
||||
{
|
||||
if (this->m_userMode == userMode) return;
|
||||
this->m_userMode = userMode;
|
||||
this->m_columns.clear();
|
||||
switch (userMode)
|
||||
{
|
||||
case UserDetailed:
|
||||
this->m_columns.addColumn(CColumn("", CUser::IndexCallsignIcon));
|
||||
this->m_columns.addColumn(CColumn("realname", CUser::IndexRealName));
|
||||
this->m_columns.addColumn(CColumn("callsign", CUser::IndexCallsign));
|
||||
this->m_columns.addColumn(CColumn("userid", CUser::IndexId));
|
||||
// this->m_columns.addColumn(CUser::IndexEmail, "email");
|
||||
break;
|
||||
|
||||
case UserShort:
|
||||
this->m_columns.addColumn(CColumn("", CUser::IndexCallsignIcon));
|
||||
this->m_columns.addColumn(CColumn("realname", CUser::IndexRealName));
|
||||
this->m_columns.addColumn(CColumn("callsign", CUser::IndexCallsign));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Display icons
|
||||
*/
|
||||
|
||||
@@ -16,14 +16,28 @@ namespace BlackGui
|
||||
|
||||
public:
|
||||
|
||||
//! What level of detail
|
||||
enum UserMode
|
||||
{
|
||||
NotSet,
|
||||
UserDetailed,
|
||||
UserShort
|
||||
};
|
||||
|
||||
//! \brief Constructor
|
||||
explicit CUserListModel(QObject *parent = nullptr);
|
||||
CUserListModel(UserMode userMode, QObject *parent = nullptr);
|
||||
|
||||
//! \brief Destructor
|
||||
virtual ~CUserListModel() {}
|
||||
|
||||
//! \copydoc CListModelBase::data
|
||||
QVariant data(const QModelIndex &modelIndex, int role = Qt::DisplayRole) const;
|
||||
|
||||
//! Set station mode
|
||||
void setUserMode(UserMode userMode);
|
||||
|
||||
private:
|
||||
UserMode m_userMode;
|
||||
};
|
||||
}
|
||||
#endif // guard
|
||||
|
||||
Reference in New Issue
Block a user