refs #247 Using CVariant in blackgui.

This commit is contained in:
Mathew Sutcliffe
2014-12-06 16:31:33 +00:00
parent 7db0587254
commit f80d7e27d1
13 changed files with 135 additions and 142 deletions

View File

@@ -162,11 +162,11 @@ namespace BlackGui
QObject *sender = QObject::sender(); QObject *sender = QObject::sender();
if (sender == this->ui->pb_SettingsTnRemoveServer) if (sender == this->ui->pb_SettingsTnRemoveServer)
{ {
this->getIContextSettings()->value(path, CSettingUtilities::CmdRemove(), server.toQVariant()); this->getIContextSettings()->value(path, CSettingUtilities::CmdRemove(), server.toCVariant());
} }
else if (sender == this->ui->pb_SettingsTnSaveServer) else if (sender == this->ui->pb_SettingsTnSaveServer)
{ {
this->getIContextSettings()->value(path, CSettingUtilities::CmdUpdate(), server.toQVariant()); this->getIContextSettings()->value(path, CSettingUtilities::CmdUpdate(), server.toCVariant());
} }
} }
@@ -186,7 +186,7 @@ namespace BlackGui
void CSettingsComponent::ps_saveHotkeys() void CSettingsComponent::ps_saveHotkeys()
{ {
const QString path = CSettingUtilities::appendPaths(IContextSettings::PathRoot(), IContextSettings::PathHotkeys()); const QString path = CSettingUtilities::appendPaths(IContextSettings::PathRoot(), IContextSettings::PathHotkeys());
this->getIContextSettings()->value(path, CSettingUtilities::CmdUpdate(), this->ui->tvp_SettingsMiscHotkeys->derivedModel()->getContainer().toQVariant()); this->getIContextSettings()->value(path, CSettingUtilities::CmdUpdate(), this->ui->tvp_SettingsMiscHotkeys->derivedModel()->getContainer().toCVariant());
} }
/* /*

View File

@@ -7,6 +7,7 @@
#include "blacksim/setsimulator.h" #include "blacksim/setsimulator.h"
#include "blackmisc/settingutilities.h" #include "blackmisc/settingutilities.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
#include "blackmisc/variant.h"
#include <QComboBox> #include <QComboBox>
@@ -135,7 +136,7 @@ namespace BlackGui
if (sender == this->ui->cb_TimeSync) if (sender == this->ui->cb_TimeSync)
{ {
bool timeSync = this->ui->cb_TimeSync->isChecked(); bool timeSync = this->ui->cb_TimeSync->isChecked();
this->getIContextSettings()->value(CSettingUtilities::appendPaths(ps, CSettingsSimulator::ValueSyncTime()), CSettingUtilities::CmdUpdate(), QVariant(timeSync)); this->getIContextSettings()->value(CSettingUtilities::appendPaths(ps, CSettingsSimulator::ValueSyncTime()), CSettingUtilities::CmdUpdate(), CVariant::from(timeSync));
} }
else if (sender == this->ui->le_TimeSyncOffset) else if (sender == this->ui->le_TimeSyncOffset)
{ {
@@ -151,7 +152,7 @@ namespace BlackGui
} }
else else
{ {
this->getIContextSettings()->value(CSettingUtilities::appendPaths(ps, CSettingsSimulator::ValueSyncTimeOffset()), CSettingUtilities::CmdUpdate(), ost.toQVariant()); this->getIContextSettings()->value(CSettingUtilities::appendPaths(ps, CSettingsSimulator::ValueSyncTimeOffset()), CSettingUtilities::CmdUpdate(), ost.toCVariant());
} }
} }
} }

View File

@@ -20,57 +20,57 @@ namespace BlackGui
namespace Models namespace Models
{ {
QVariant CDefaultFormatter::displayRole(const QVariant &dataQVariant) const CVariant CDefaultFormatter::displayRole(const CVariant &dataCVariant) const
{ {
// seems to be absurd, but calls the correct methods on CValueObjects // seems to be absurd, but calls the correct methods on CValueObjects
// so QVariant -> QString -> QVariant is correct // so QVariant -> QString -> CVariant is correct
if (static_cast<QMetaType::Type>(dataQVariant.type()) == QMetaType::QString) return dataQVariant; // shortcut if (static_cast<QMetaType::Type>(dataCVariant.type()) == QMetaType::QString) return dataCVariant; // shortcut
return BlackMisc::qVariantToString(dataQVariant, m_useI18n); return dataCVariant.toQString(m_useI18n);
} }
QVariant CDefaultFormatter::decorationRole(const QVariant &dataQVariant) const CVariant CDefaultFormatter::decorationRole(const CVariant &dataCVariant) const
{ {
// direct return if type is already correct // direct return if type is already correct
if (static_cast<QMetaType::Type>(dataQVariant.type()) == QMetaType::QPixmap) if (static_cast<QMetaType::Type>(dataCVariant.type()) == QMetaType::QPixmap)
{ {
return dataQVariant; return dataCVariant;
} }
else if (static_cast<QMetaType::Type>(dataQVariant.type()) == QMetaType::QIcon) else if (static_cast<QMetaType::Type>(dataCVariant.type()) == QMetaType::QIcon)
{ {
return dataQVariant; return dataCVariant;
} }
// convert to pixmap // convert to pixmap
if (static_cast<QMetaType::Type>(dataQVariant.type()) == QMetaType::QImage) if (static_cast<QMetaType::Type>(dataCVariant.type()) == QMetaType::QImage)
{ {
QImage img = dataQVariant.value<QImage>(); QImage img = dataCVariant.value<QImage>();
return QPixmap::fromImage(img); return CVariant::from(QPixmap::fromImage(img));
} }
// Our CIcon class // Our CIcon class
if (dataQVariant.canConvert<BlackMisc::CIcon>()) if (dataCVariant.canConvert<BlackMisc::CIcon>())
{ {
BlackMisc::CIcon i = dataQVariant.value<BlackMisc::CIcon>(); BlackMisc::CIcon i = dataCVariant.value<BlackMisc::CIcon>();
return i.toPixmap(); return CVariant::from(i.toPixmap());
} }
// nope // nope
return QPixmap(); return CVariant::from(QPixmap());
} }
QVariant CDefaultFormatter::alignmentRole() const CVariant CDefaultFormatter::alignmentRole() const
{ {
if (!this->hasAlignment()) if (!this->hasAlignment())
{ {
return QVariant(alignDefault()); // default return CVariant::from(alignDefault()); // default
} }
else else
{ {
return QVariant(m_alignment); return CVariant::from(m_alignment);
} }
} }
QVariant CDefaultFormatter::data(int role, const QVariant &inputData) const CVariant CDefaultFormatter::data(int role, const CVariant &inputData) const
{ {
Qt::ItemDataRole roleEnum = static_cast<Qt::ItemDataRole>(role); Qt::ItemDataRole roleEnum = static_cast<Qt::ItemDataRole>(role);
@@ -78,8 +78,8 @@ namespace BlackGui
if (roleEnum == Qt::TextAlignmentRole) return { alignmentRole() }; if (roleEnum == Qt::TextAlignmentRole) return { alignmentRole() };
// checked // checked
if (this->m_supportedRoles.isEmpty()) return QVariant(); if (this->m_supportedRoles.isEmpty()) return CVariant();
if (!this->m_supportedRoles.contains(role)) return QVariant(); if (!this->m_supportedRoles.contains(role)) return CVariant();
switch (roleEnum) switch (roleEnum)
{ {
case Qt::DisplayRole: case Qt::DisplayRole:
@@ -94,52 +94,44 @@ namespace BlackGui
default: default:
break; break;
} }
return QVariant(); return CVariant();
} }
QVariant CPixmapFormatter::displayRole(const QVariant &dataQVariant) const CVariant CPixmapFormatter::displayRole(const CVariant &dataCVariant) const
{ {
Q_UNUSED(dataQVariant); Q_UNUSED(dataCVariant);
Q_ASSERT_X(false, "CPixmapFormatter", "this role should be disabled with pixmaps"); Q_ASSERT_X(false, "CPixmapFormatter", "this role should be disabled with pixmaps");
return QVariant(); return CVariant();
} }
QVariant CPixmapFormatter::tooltipRole(const QVariant &dataQVariant) const CVariant CPixmapFormatter::tooltipRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.isNull()) return ""; if (dataCVariant.isNull()) return "";
if (dataQVariant.canConvert<BlackMisc::CIcon>()) if (dataCVariant.canConvert<BlackMisc::CIcon>())
{ {
BlackMisc::CIcon icon = dataQVariant.value<BlackMisc::CIcon>(); BlackMisc::CIcon icon = dataCVariant.value<BlackMisc::CIcon>();
return icon.getDescriptiveText(); return icon.getDescriptiveText();
} }
return ""; return "";
} }
QVariant CValueObjectFormatter::displayRole(const QVariant &valueObject) const CVariant CValueObjectFormatter::displayRole(const CVariant &valueObject) const
{ {
if (valueObject.isNull()) return QVariant(); return CVariant(valueObject.toQString(m_useI18n));
const BlackMisc::CValueObject *cvo = BlackMisc::CValueObject::fromQVariant(valueObject);
Q_ASSERT(cvo);
if (!cvo) return QVariant();
return QVariant(cvo->toQString(m_useI18n));
} }
QVariant CValueObjectFormatter::decorationRole(const QVariant &valueObject) const CVariant CValueObjectFormatter::decorationRole(const CVariant &valueObject) const
{ {
if (valueObject.isNull()) return ""; return CVariant(valueObject.toPixmap());
const BlackMisc::CValueObject *cvo = BlackMisc::CValueObject::fromQVariant(valueObject);
Q_ASSERT(cvo);
if (!cvo) return QPixmap();
return QVariant(cvo->toPixmap());
} }
CDateTimeFormatter::CDateTimeFormatter(const QString formatString, int alignment, bool i18n) : CDateTimeFormatter::CDateTimeFormatter(const QString &formatString, int alignment, bool i18n) :
CDefaultFormatter(alignment, i18n, { Qt::DisplayRole }), m_formatString(formatString) CDefaultFormatter(alignment, i18n, { Qt::DisplayRole }), m_formatString(formatString)
{ {
// void // void
} }
QVariant CDateTimeFormatter::displayRole(const QVariant &dateTime) const CVariant CDateTimeFormatter::displayRole(const CVariant &dateTime) const
{ {
if (dateTime.isNull()) return ""; if (dateTime.isNull()) return "";
if (static_cast<QMetaType::Type>(dateTime.type()) == QMetaType::QDateTime) if (static_cast<QMetaType::Type>(dateTime.type()) == QMetaType::QDateTime)
@@ -164,15 +156,15 @@ namespace BlackGui
} }
} }
QVariant CAirspaceDistanceFormatter::displayRole(const QVariant &dataQVariant) const CVariant CAirspaceDistanceFormatter::displayRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.canConvert<BlackMisc::PhysicalQuantities::CLength>()) if (dataCVariant.canConvert<BlackMisc::PhysicalQuantities::CLength>())
{ {
// special treatment for some cases // special treatment for some cases
BlackMisc::PhysicalQuantities::CLength l = dataQVariant.value<BlackMisc::PhysicalQuantities::CLength>(); BlackMisc::PhysicalQuantities::CLength l = dataCVariant.value<BlackMisc::PhysicalQuantities::CLength>();
if (!l.isNull() && (l.isPositiveWithEpsilonConsidered() || l.isZeroEpsilonConsidered())) if (!l.isNull() && (l.isPositiveWithEpsilonConsidered() || l.isZeroEpsilonConsidered()))
{ {
return CPhysiqalQuantiyFormatter::displayRole(dataQVariant); return CPhysiqalQuantiyFormatter::displayRole(dataCVariant);
} }
else else
{ {
@@ -186,15 +178,15 @@ namespace BlackGui
} }
} }
QVariant CComFrequencyFormatter::displayRole(const QVariant &dataQVariant) const CVariant CComFrequencyFormatter::displayRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.canConvert<BlackMisc::PhysicalQuantities::CFrequency>()) if (dataCVariant.canConvert<BlackMisc::PhysicalQuantities::CFrequency>())
{ {
// speical treatment for some cases // speical treatment for some cases
BlackMisc::PhysicalQuantities::CFrequency f = dataQVariant.value<BlackMisc::PhysicalQuantities::CFrequency>(); BlackMisc::PhysicalQuantities::CFrequency f = dataCVariant.value<BlackMisc::PhysicalQuantities::CFrequency>();
if (BlackMisc::Aviation::CComSystem::isValidComFrequency(f)) if (BlackMisc::Aviation::CComSystem::isValidComFrequency(f))
{ {
return CPhysiqalQuantiyFormatter::displayRole(dataQVariant); return CPhysiqalQuantiyFormatter::displayRole(dataCVariant);
} }
else else
{ {
@@ -208,13 +200,13 @@ namespace BlackGui
} }
} }
QVariant CAircraftSpeedFormatter::displayRole(const QVariant &dataQVariant) const CVariant CAircraftSpeedFormatter::displayRole(const CVariant &dataCVariant) const
{ {
// special treatment for some cases // special treatment for some cases
BlackMisc::PhysicalQuantities::CSpeed s = dataQVariant.value<BlackMisc::PhysicalQuantities::CSpeed>(); BlackMisc::PhysicalQuantities::CSpeed s = dataCVariant.value<BlackMisc::PhysicalQuantities::CSpeed>();
if (!s.isNull() && (s.isPositiveWithEpsilonConsidered() || s.isZeroEpsilonConsidered())) if (!s.isNull() && (s.isPositiveWithEpsilonConsidered() || s.isZeroEpsilonConsidered()))
{ {
return CPhysiqalQuantiyFormatter::displayRole(dataQVariant); return CPhysiqalQuantiyFormatter::displayRole(dataCVariant);
} }
else else
{ {
@@ -222,22 +214,22 @@ namespace BlackGui
} }
} }
QVariant CStringFormatter::displayRole(const QVariant &dataQVariant) const CVariant CStringFormatter::displayRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.canConvert<QString>()) { return dataQVariant; } if (dataCVariant.canConvert<QString>()) { return dataCVariant; }
Q_ASSERT_X(false, "CStringFormatter", "no string value"); Q_ASSERT_X(false, "CStringFormatter", "no string value");
return QVariant(); return CVariant();
} }
QVariant CBoolTextFormatter::displayRole(const QVariant &dataQVariant) const CVariant CBoolTextFormatter::displayRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.canConvert<bool>()) if (dataCVariant.canConvert<bool>())
{ {
bool v = dataQVariant.toBool(); bool v = dataCVariant.toBool();
return v ? QVariant(m_trueName) : QVariant(m_falseName); return v ? CVariant(m_trueName) : CVariant(m_falseName);
} }
Q_ASSERT_X(false, "CBoolTextFormatter", "no boolean value"); Q_ASSERT_X(false, "CBoolTextFormatter", "no boolean value");
return QVariant(); return CVariant();
} }
CBoolLedFormatter::CBoolLedFormatter(int alignment) : CBoolLedFormatter("on", "off", alignment) CBoolLedFormatter::CBoolLedFormatter(int alignment) : CBoolLedFormatter("on", "off", alignment)
@@ -254,22 +246,22 @@ namespace BlackGui
delete led; delete led;
} }
QVariant CBoolLedFormatter::displayRole(const QVariant &dataQVariant) const CVariant CBoolLedFormatter::displayRole(const CVariant &dataCVariant) const
{ {
Q_UNUSED(dataQVariant); Q_UNUSED(dataCVariant);
Q_ASSERT_X(false, "CBoolLedFormatter", "this role should be disabled with led boolean"); Q_ASSERT_X(false, "CBoolLedFormatter", "this role should be disabled with led boolean");
return QVariant(); return CVariant();
} }
QVariant CBoolLedFormatter::decorationRole(const QVariant &dataQVariant) const CVariant CBoolLedFormatter::decorationRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.canConvert<bool>()) if (dataCVariant.canConvert<bool>())
{ {
bool v = dataQVariant.toBool(); bool v = dataCVariant.toBool();
return v ? m_pixmapOnLed : m_pixmapOffLed; return CVariant::from(v ? m_pixmapOnLed : m_pixmapOffLed);
} }
Q_ASSERT_X(false, "CBoolLedFormatter", "no boolean value"); Q_ASSERT_X(false, "CBoolLedFormatter", "no boolean value");
return QVariant(); return CVariant();
} }
CBoolIconFormatter::CBoolIconFormatter(int alignment) : CBoolIconFormatter::CBoolIconFormatter(int alignment) :
@@ -287,22 +279,22 @@ namespace BlackGui
this->m_iconOff.setDescriptiveText(offName); this->m_iconOff.setDescriptiveText(offName);
} }
QVariant CBoolIconFormatter::displayRole(const QVariant &dataQVariant) const CVariant CBoolIconFormatter::displayRole(const CVariant &dataCVariant) const
{ {
Q_UNUSED(dataQVariant); Q_UNUSED(dataCVariant);
Q_ASSERT_X(false, "CBoolIconFormatter", "this role should be disabled with icon boolean"); Q_ASSERT_X(false, "CBoolIconFormatter", "this role should be disabled with icon boolean");
return QVariant(); return CVariant();
} }
QVariant CBoolIconFormatter::decorationRole(const QVariant &dataQVariant) const CVariant CBoolIconFormatter::decorationRole(const CVariant &dataCVariant) const
{ {
if (dataQVariant.canConvert<bool>()) if (dataCVariant.canConvert<bool>())
{ {
bool v = dataQVariant.toBool(); bool v = dataCVariant.toBool();
return v ? m_iconOn.toPixmap() : m_iconOff.toPixmap(); return CVariant::from(v ? m_iconOn.toPixmap() : m_iconOff.toPixmap());
} }
Q_ASSERT_X(false, "CBoolIconFormatter", "no boolean value"); Q_ASSERT_X(false, "CBoolIconFormatter", "no boolean value");
return QVariant(); return CVariant();
} }
} }
} }

View File

@@ -36,29 +36,29 @@ namespace BlackGui
//! Virtual destructor //! Virtual destructor
virtual ~CDefaultFormatter() {} virtual ~CDefaultFormatter() {}
//! Value provided as QVariant, formatter converts to QString. //! Value provided as CVariant, formatter converts to QString.
//! Used with Qt::DisplayRole displaying a text. //! Used with Qt::DisplayRole displaying a text.
virtual QVariant displayRole(const QVariant &dataQVariant) const; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const;
//! Value provided as QVariant, formatter converts to QString. //! Value provided as CVariant, formatter converts to QString.
//! Used with Qt::ToolTipRole displaying a text. //! Used with Qt::ToolTipRole displaying a text.
virtual QVariant tooltipRole(const QVariant &value) const virtual BlackMisc::CVariant tooltipRole(const BlackMisc::CVariant &value) const
{ {
return displayRole(value); return displayRole(value);
} }
//! Value provided as QVariant, formatted as icon (Qt docu: "The data to be rendered as a decoration in the form of an icon"). //! Value provided as CVariant, formatted as icon (Qt docu: "The data to be rendered as a decoration in the form of an icon").
//! Used with Qt::DecorationRole displaying an icon, method returns pixmap, icon, or color (see docu) //! Used with Qt::DecorationRole displaying an icon, method returns pixmap, icon, or color (see docu)
virtual QVariant decorationRole(const QVariant &dataQVariant) const; virtual BlackMisc::CVariant decorationRole(const BlackMisc::CVariant &dataCVariant) const;
//! Qt::Alignment (as QVariant) //! Qt::Alignment (as CVariant)
virtual QVariant alignmentRole() const; virtual BlackMisc::CVariant alignmentRole() const;
//! Alignment available? //! Alignment available?
virtual bool hasAlignment() const { return m_alignment >= 0; } virtual bool hasAlignment() const { return m_alignment >= 0; }
//! Receives QVariant of column data, and returns QVariant wrapping string, pixmap, or other values depending on role //! Receives CVariant of column data, and returns CVariant wrapping string, pixmap, or other values depending on role
virtual QVariant data(int role, const QVariant &inputData) const; virtual BlackMisc::CVariant data(int role, const BlackMisc::CVariant &inputData) const;
//! Default value //! Default value
static int alignDefault() { return alignLeftVCenter(); } static int alignDefault() { return alignLeftVCenter(); }
@@ -92,10 +92,10 @@ namespace BlackGui
CPixmapFormatter(int alignment = alignDefault(), const QList<int> &supportedRoles = roleDecorationAndToolTip()) : CDefaultFormatter(alignment, false, supportedRoles) {} CPixmapFormatter(int alignment = alignDefault(), const QList<int> &supportedRoles = roleDecorationAndToolTip()) : CDefaultFormatter(alignment, false, supportedRoles) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
//! \copydoc CDefaultFormatter::tooltipRole //! \copydoc CDefaultFormatter::tooltipRole
virtual QVariant tooltipRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant tooltipRole(const BlackMisc::CVariant &dataCVariant) const override;
}; };
//! String formatter, if known the variant already contains the appropriate string //! String formatter, if known the variant already contains the appropriate string
@@ -106,7 +106,7 @@ namespace BlackGui
CStringFormatter(int alignment = alignDefault()) : CDefaultFormatter(alignment, false, roleDisplay()) {} CStringFormatter(int alignment = alignDefault()) : CDefaultFormatter(alignment, false, roleDisplay()) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
}; };
//! Bool value, format as text //! Bool value, format as text
@@ -118,7 +118,7 @@ namespace BlackGui
CDefaultFormatter(alignment, false, supportedRoles), m_trueName(trueName), m_falseName(falseName) {} CDefaultFormatter(alignment, false, supportedRoles), m_trueName(trueName), m_falseName(falseName) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
protected: protected:
QString m_trueName = "true"; //!< displayed when true QString m_trueName = "true"; //!< displayed when true
@@ -137,15 +137,15 @@ namespace BlackGui
CBoolLedFormatter(const QString &onName, const QString &offName, int alignment = alignDefault()); CBoolLedFormatter(const QString &onName, const QString &offName, int alignment = alignDefault());
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
//! Display the LED //! Display the LED
virtual QVariant decorationRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant decorationRole(const BlackMisc::CVariant &dataCVariant) const override;
//! \copydoc CDefaultFormatter::tooltipRole //! \copydoc CDefaultFormatter::tooltipRole
virtual QVariant tooltipRole(const QVariant &dataQVariant) const override virtual BlackMisc::CVariant tooltipRole(const BlackMisc::CVariant &dataCVariant) const override
{ {
return CBoolTextFormatter::displayRole(dataQVariant); return CBoolTextFormatter::displayRole(dataCVariant);
} }
//! Default LED //! Default LED
@@ -174,15 +174,15 @@ namespace BlackGui
CBoolIconFormatter(BlackMisc::CIcons::IconIndex onIcon, BlackMisc::CIcons::IconIndex offIcon, const QString &onName, const QString &offName, int alignment = alignDefault()); CBoolIconFormatter(BlackMisc::CIcons::IconIndex onIcon, BlackMisc::CIcons::IconIndex offIcon, const QString &onName, const QString &offName, int alignment = alignDefault());
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
//! Display the icon //! Display the icon
virtual QVariant decorationRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant decorationRole(const BlackMisc::CVariant &dataCVariant) const override;
//! \copydoc CDefaultFormatter::tooltipRole //! \copydoc CDefaultFormatter::tooltipRole
virtual QVariant tooltipRole(const QVariant &dataQVariant) const override virtual BlackMisc::CVariant tooltipRole(const BlackMisc::CVariant &dataCVariant) const override
{ {
return CBoolTextFormatter::displayRole(dataQVariant); return CBoolTextFormatter::displayRole(dataCVariant);
} }
protected: protected:
@@ -198,10 +198,10 @@ namespace BlackGui
CValueObjectFormatter(int alignment = alignDefault(), bool i18n = true, QList<int> supportedRoles = {Qt::DisplayRole}) : CDefaultFormatter(alignment, i18n, supportedRoles) {} CValueObjectFormatter(int alignment = alignDefault(), bool i18n = true, QList<int> supportedRoles = {Qt::DisplayRole}) : CDefaultFormatter(alignment, i18n, supportedRoles) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &valueObject) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &valueObject) const override;
//! \copydoc CDefaultFormatter::asPixmap //! \copydoc CDefaultFormatter::asPixmap
virtual QVariant decorationRole(const QVariant &valueObject) const; virtual BlackMisc::CVariant decorationRole(const BlackMisc::CVariant &valueObject) const;
}; };
//! Formatter when column contains QDateTime, QDate or QTime //! Formatter when column contains QDateTime, QDate or QTime
@@ -209,10 +209,10 @@ namespace BlackGui
{ {
public: public:
//! Constructor //! Constructor
CDateTimeFormatter(const QString formatString = formatYmd(), int alignment = alignDefault(), bool i18n = true); CDateTimeFormatter(const QString &formatString = formatYmd(), int alignment = alignDefault(), bool i18n = true);
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dateTime) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dateTime) const override;
//! Year month day //! Year month day
static const QString &formatYmd() { static const QString f = "yyyy-MM-dd"; return f; } static const QString &formatYmd() { static const QString f = "yyyy-MM-dd"; return f; }
@@ -238,7 +238,7 @@ namespace BlackGui
CPhysiqalQuantiyFormatter(MU unit = MU::defaultUnit(), int digits = 2, int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true, QList<int> supportedRoles = { Qt::DisplayRole }) : CValueObjectFormatter(alignment, i18n, supportedRoles), m_unit(unit), m_digits(digits), m_withUnit(withUnit) {} CPhysiqalQuantiyFormatter(MU unit = MU::defaultUnit(), int digits = 2, int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true, QList<int> supportedRoles = { Qt::DisplayRole }) : CValueObjectFormatter(alignment, i18n, supportedRoles), m_unit(unit), m_digits(digits), m_withUnit(withUnit) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &physicalQuantity) const override virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &physicalQuantity) const override
{ {
if (physicalQuantity.canConvert<PQ>()) if (physicalQuantity.canConvert<PQ>())
{ {
@@ -279,7 +279,7 @@ namespace BlackGui
CComFrequencyFormatter(int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true) : CPhysiqalQuantiyFormatter(BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz(), 3, alignment, withUnit, i18n) {} CComFrequencyFormatter(int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true) : CPhysiqalQuantiyFormatter(BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz(), 3, alignment, withUnit, i18n) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
}; };
//! Angle in degrees //! Angle in degrees
@@ -306,7 +306,7 @@ namespace BlackGui
CAirspaceDistanceFormatter(int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true) : CPhysiqalQuantiyFormatter(BlackMisc::PhysicalQuantities::CLengthUnit::NM(), 1, alignment, withUnit, i18n) {} CAirspaceDistanceFormatter(int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true) : CPhysiqalQuantiyFormatter(BlackMisc::PhysicalQuantities::CLengthUnit::NM(), 1, alignment, withUnit, i18n) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
}; };
//! Airspace distance //! Airspace distance
@@ -317,7 +317,7 @@ namespace BlackGui
CAircraftSpeedFormatter(int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true) : CPhysiqalQuantiyFormatter(BlackMisc::PhysicalQuantities::CSpeedUnit::kts(), 0, alignment, withUnit, i18n) {} CAircraftSpeedFormatter(int alignment = alignRightVCenter(), bool withUnit = true, bool i18n = true) : CPhysiqalQuantiyFormatter(BlackMisc::PhysicalQuantities::CSpeedUnit::kts(), 0, alignment, withUnit, i18n) {}
//! \copydoc CDefaultFormatter::displayRole //! \copydoc CDefaultFormatter::displayRole
virtual QVariant displayRole(const QVariant &dataQVariant) const override; virtual BlackMisc::CVariant displayRole(const BlackMisc::CVariant &dataCVariant) const override;
}; };
} // namespace } // namespace

View File

@@ -55,8 +55,8 @@ namespace BlackGui
//! Formatter //! Formatter
const CDefaultFormatter *getFormatter() const { return this->m_formatter.data(); } const CDefaultFormatter *getFormatter() const { return this->m_formatter.data(); }
//! Aligment as QVariant //! Aligment as CVariant
QVariant getAlignment() const; BlackMisc::CVariant getAlignment() const;
//! Column name //! Column name
QString getColumnName(bool i18n = false) const; QString getColumnName(bool i18n = false) const;
@@ -149,8 +149,8 @@ namespace BlackGui
return column >= 0 && column < this->m_columns.size(); return column >= 0 && column < this->m_columns.size();
} }
//! Aligment as QVariant //! Aligment as CVariant
QVariant getAlignment(const QModelIndex &index) const; BlackMisc::CVariant getAlignment(const QModelIndex &index) const;
//! Translation context //! Translation context
const QString &getTranslationContext() const { return m_translationContext; } const QString &getTranslationContext() const { return m_translationContext; }

View File

@@ -118,7 +118,7 @@ namespace BlackGui
//! Formatted data //! Formatted data
ObjectType obj = this->m_container[index.row()]; ObjectType obj = this->m_container[index.row()];
BlackMisc::CPropertyIndex propertyIndex = this->columnToPropertyIndex(index.column()); BlackMisc::CPropertyIndex propertyIndex = this->columnToPropertyIndex(index.column());
return formatter->data(role, obj.propertyByIndex(propertyIndex)); return formatter->data(role, obj.propertyByIndex(propertyIndex)).toQVariant();
} }
/* /*
@@ -171,7 +171,7 @@ namespace BlackGui
{ {
ContainerType sortedContainer = this->sortContainerByColumn(container, sortColumn, sortOrder); ContainerType sortedContainer = this->sortContainerByColumn(container, sortColumn, sortOrder);
QMetaObject::invokeMethod(this, "updateContainer", QMetaObject::invokeMethod(this, "updateContainer",
Q_ARG(QVariant, sortedContainer.toQVariant()), Q_ARG(bool, false)); Q_ARG(BlackMisc::CVariant, sortedContainer.toCVariant()), Q_ARG(bool, false));
}); });
worker->then(this, &CListModelBase::asyncUpdateFinished); worker->then(this, &CListModelBase::asyncUpdateFinished);
return worker; return worker;
@@ -265,10 +265,10 @@ namespace BlackGui
/* /*
* Update on container * Update on container
*/ */
template <typename ObjectType, typename ContainerType> int CListModelBase<ObjectType, ContainerType>::performUpdateContainer(const QVariant &variant, bool sort) template <typename ObjectType, typename ContainerType> int CListModelBase<ObjectType, ContainerType>::performUpdateContainer(const BlackMisc::CVariant &variant, bool sort)
{ {
ContainerType c; ContainerType c;
c.convertFromQVariant(variant); c.convertFromCVariant(variant);
return this->update(c, sort); return this->update(c, sort);
} }
@@ -303,10 +303,9 @@ namespace BlackGui
// sort the values // sort the values
const auto p = [ = ](const ObjectType & a, const ObjectType & b) -> bool const auto p = [ = ](const ObjectType & a, const ObjectType & b) -> bool
{ {
QVariant aQv = a.propertyByIndex(propertyIndex); BlackMisc::CVariant aQv = a.propertyByIndex(propertyIndex);
QVariant bQv = b.propertyByIndex(propertyIndex); BlackMisc::CVariant bQv = b.propertyByIndex(propertyIndex);
int compare = BlackMisc::compareQVariants(aQv, bQv); return (order == Qt::AscendingOrder) ? (aQv < bQv) : (bQv < aQv);
return (order == Qt::AscendingOrder) ? (compare < 0) : (compare > 0);
}; };
// KWB: qDebug() will be removed soon // KWB: qDebug() will be removed soon

View File

@@ -90,7 +90,7 @@ namespace BlackGui
//! Helper method with template free signature //! Helper method with template free signature
//! \param variant container is transferred in variant //! \param variant container is transferred in variant
//! \param sort //! \param sort
int updateContainer(const QVariant &variant, bool sort) int updateContainer(const BlackMisc::CVariant &variant, bool sort)
{ {
return this->performUpdateContainer(variant, sort); return this->performUpdateContainer(variant, sort);
} }
@@ -109,7 +109,7 @@ namespace BlackGui
} }
//! Helper method with template free signature //! Helper method with template free signature
virtual int performUpdateContainer(const QVariant &variant, bool sort) = 0; virtual int performUpdateContainer(const BlackMisc::CVariant &variant, bool sort) = 0;
CColumns m_columns; //!< columns metadata CColumns m_columns; //!< columns metadata
int m_sortedColumn; //!< current sort column int m_sortedColumn; //!< current sort column
@@ -208,7 +208,7 @@ namespace BlackGui
{ } { }
//! \copydoc CModelBaseNonTemplate::performUpdateContainer //! \copydoc CModelBaseNonTemplate::performUpdateContainer
virtual int performUpdateContainer(const QVariant &variant, bool sort) override; virtual int performUpdateContainer(const BlackMisc::CVariant &variant, bool sort) override;
}; };
} // namespace } // namespace

View File

@@ -40,7 +40,7 @@ namespace BlackGui
this->m_sortOrder = Qt::AscendingOrder; this->m_sortOrder = Qt::AscendingOrder;
} }
bool CNameVariantPairModel::addOrUpdateByName(const QString &name, const QVariant &value, const CIcon &icon, bool skipEqualValues) bool CNameVariantPairModel::addOrUpdateByName(const QString &name, const BlackMisc::CVariant &value, const CIcon &icon, bool skipEqualValues)
{ {
int index = this->getRowIndexForName(name); int index = this->getRowIndexForName(name);
CNameVariantPair pair(name, value, icon); CNameVariantPair pair(name, value, icon);
@@ -79,13 +79,13 @@ namespace BlackGui
return this->m_container.containsName(name); return this->m_container.containsName(name);
} }
bool CNameVariantPairModel::containsNameValue(const QString &name, const QVariant &value) const bool CNameVariantPairModel::containsNameValue(const QString &name, const BlackMisc::CVariant &value) const
{ {
int rowIndex = this->getRowIndexForName(name); int rowIndex = this->getRowIndexForName(name);
if (rowIndex < 0) return false; if (rowIndex < 0) return false;
QModelIndex i = this->index(rowIndex, 0); QModelIndex i = this->index(rowIndex, 0);
const CNameVariantPair cv = this->at(i); const CNameVariantPair cv = this->at(i);
return BlackMisc::equalQVariants(value, cv.toQVariant()); return value == cv.toCVariant();
} }
} // namespace } // namespace
} // namespace } // namespace

View File

@@ -46,10 +46,10 @@ namespace BlackGui
bool containsName(const QString &name) const; bool containsName(const QString &name) const;
//! Contains name / value? //! Contains name / value?
bool containsNameValue(const QString &name, const QVariant &value) const; bool containsNameValue(const QString &name, const BlackMisc::CVariant &value) const;
//! Add our update a value //! Add our update a value
bool addOrUpdateByName(const QString &name, const QVariant &value, const BlackMisc::CIcon &icon, bool skipEqualValues); bool addOrUpdateByName(const QString &name, const BlackMisc::CVariant &value, const BlackMisc::CIcon &icon, bool skipEqualValues);
//! Current row index of given name //! Current row index of given name
int getRowIndexForName(const QString &name) const; int getRowIndexForName(const QString &name) const;

View File

@@ -29,7 +29,7 @@ namespace BlackGui
this->m_model->setIconMode(withIcon); this->m_model->setIconMode(withIcon);
} }
bool CNameVariantPairView::addOrUpdateByName(const QString &name, const QVariant &value, const CIcon &icon, bool resize, bool skipEqualValues) bool CNameVariantPairView::addOrUpdateByName(const QString &name, const BlackMisc::CVariant &value, const CIcon &icon, bool resize, bool skipEqualValues)
{ {
Q_ASSERT(this->m_model); Q_ASSERT(this->m_model);
bool changed = this->m_model->addOrUpdateByName(name, value, icon, skipEqualValues); bool changed = this->m_model->addOrUpdateByName(name, value, icon, skipEqualValues);

View File

@@ -31,7 +31,7 @@ namespace BlackGui
void setIconMode(bool withIcon); void setIconMode(bool withIcon);
//! Update or add value, QVariant version //! Update or add value, QVariant version
bool addOrUpdateByName(const QString &name, const QVariant &value, const BlackMisc::CIcon &icon = BlackMisc::CIcon(), bool performResizing = true, bool skipEqualValues = true); bool addOrUpdateByName(const QString &name, const BlackMisc::CVariant &value, const BlackMisc::CIcon &icon = BlackMisc::CIcon(), bool performResizing = true, bool skipEqualValues = true);
//! Remove by name //! Remove by name
void removeByName(const QString &name, bool performResizing = true); void removeByName(const QString &name, bool performResizing = true);

View File

@@ -167,7 +167,7 @@ namespace BlackGui
{ {
ContainerType sortedContainer = model->sortContainerByColumn(container, sortColumn, sortOrder); ContainerType sortedContainer = model->sortContainerByColumn(container, sortColumn, sortOrder);
QMetaObject::invokeMethod(this, "updateContainer", QMetaObject::invokeMethod(this, "updateContainer",
Q_ARG(QVariant, sortedContainer.toQVariant()), Q_ARG(bool, false), Q_ARG(bool, resize)); Q_ARG(BlackMisc::CVariant, sortedContainer.toCVariant()), Q_ARG(bool, false), Q_ARG(bool, resize));
}); });
worker->then(this, &CViewBase::asyncUpdateFinished); worker->then(this, &CViewBase::asyncUpdateFinished);
return worker; return worker;
@@ -250,10 +250,10 @@ namespace BlackGui
} }
} }
template <class ModelClass, class ContainerType> int CViewBase<ModelClass, ContainerType>::performUpdateContainer(const QVariant &variant, bool sort, bool resize) template <class ModelClass, class ContainerType> int CViewBase<ModelClass, ContainerType>::performUpdateContainer(const BlackMisc::CVariant &variant, bool sort, bool resize)
{ {
ContainerType c; ContainerType c;
c.convertFromQVariant(variant); c.convertFromCVariant(variant);
return this->updateContainer(c, sort, resize); return this->updateContainer(c, sort, resize);
} }

View File

@@ -14,6 +14,7 @@
#include "blackmisc/icons.h" #include "blackmisc/icons.h"
#include "blackmisc/worker.h" #include "blackmisc/worker.h"
#include "blackmisc/variant.h"
#include <QTableView> #include <QTableView>
#include <QHeaderView> #include <QHeaderView>
#include <QMenu> #include <QMenu>
@@ -101,7 +102,7 @@ namespace BlackGui
//! \param variant contains the container //! \param variant contains the container
//! \param sort //! \param sort
//! \param performResizing //! \param performResizing
virtual int performUpdateContainer(const QVariant &variant, bool sort, bool performResizing) = 0; virtual int performUpdateContainer(const BlackMisc::CVariant &variant, bool sort, bool performResizing) = 0;
//! Skip resizing because of size? //! Skip resizing because of size?
virtual bool reachedResizeThreshold() const = 0; virtual bool reachedResizeThreshold() const = 0;
@@ -122,7 +123,7 @@ namespace BlackGui
protected slots: protected slots:
//! Helper method with template free signature serving as callback from threaded worker //! Helper method with template free signature serving as callback from threaded worker
int updateContainer(const QVariant &variant, bool sort, bool resize) int updateContainer(const BlackMisc::CVariant &variant, bool sort, bool resize)
{ {
return this->performUpdateContainer(variant, sort, resize); return this->performUpdateContainer(variant, sort, resize);
} }
@@ -214,7 +215,7 @@ namespace BlackGui
virtual void performResizeToContents() override; virtual void performResizeToContents() override;
//! \copydoc CViewBaseNonTemplate::performUpdateContainer //! \copydoc CViewBaseNonTemplate::performUpdateContainer
virtual int performUpdateContainer(const QVariant &variant, bool sort, bool performResizing) override; virtual int performUpdateContainer(const BlackMisc::CVariant &variant, bool sort, bool performResizing) override;
}; };
} // namespace } // namespace