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:
Klaus Basan
2014-04-20 18:30:20 +02:00
parent 247e045288
commit 60f1b285ec
5 changed files with 102 additions and 34 deletions

View File

@@ -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;
}
}
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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
*/

View File

@@ -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