Ref T270, some formatter improvements

* return info about wrong type in string formatter
* style
This commit is contained in:
Klaus Basan
2018-06-02 15:06:29 +02:00
parent 990035dd6a
commit 532adef747
2 changed files with 35 additions and 44 deletions

View File

@@ -64,14 +64,14 @@ namespace BlackGui
// convert to pixmap // convert to pixmap
if (static_cast<QMetaType::Type>(dataCVariant.type()) == QMetaType::QImage) if (static_cast<QMetaType::Type>(dataCVariant.type()) == QMetaType::QImage)
{ {
QImage img = dataCVariant.value<QImage>(); const QImage img = dataCVariant.value<QImage>();
return CVariant::from(QPixmap::fromImage(img)); return CVariant::from(QPixmap::fromImage(img));
} }
// Our CIcon class // Our CIcon class
if (dataCVariant.canConvert<BlackMisc::CIcon>()) if (dataCVariant.canConvert<BlackMisc::CIcon>())
{ {
BlackMisc::CIcon i = dataCVariant.value<BlackMisc::CIcon>(); const CIcon i = dataCVariant.value<BlackMisc::CIcon>();
return CVariant::from(i.toPixmap()); return CVariant::from(i.toPixmap());
} }
@@ -81,14 +81,11 @@ namespace BlackGui
CVariant CDefaultFormatter::alignmentRole() const CVariant CDefaultFormatter::alignmentRole() const
{ {
if (!this->hasAlignment()) if (this->hasAlignment())
{
return CVariant::from(alignDefault()); // default
}
else
{ {
return CVariant::from(m_alignment); return CVariant::from(m_alignment);
} }
return CVariant::from(alignDefault()); // default
} }
CVariant CDefaultFormatter::checkStateRole(const CVariant &value) const CVariant CDefaultFormatter::checkStateRole(const CVariant &value) const
@@ -104,7 +101,7 @@ namespace BlackGui
if (role == Qt::TextAlignmentRole || role == Qt::UserRole) { return true; } if (role == Qt::TextAlignmentRole || role == Qt::UserRole) { return true; }
// specific? // specific?
return this->m_supportedRoles.contains(role); return m_supportedRoles.contains(role);
} }
CVariant CDefaultFormatter::data(int role, const CVariant &inputData) const CVariant CDefaultFormatter::data(int role, const CVariant &inputData) const
@@ -119,23 +116,12 @@ namespace BlackGui
if (role == Qt::UserRole) { return CDefaultFormatter::displayRole(inputData); } // just as data provider if (role == Qt::UserRole) { return CDefaultFormatter::displayRole(inputData); } // just as data provider
switch (roleEnum) switch (roleEnum)
{ {
case Qt::DisplayRole: case Qt::DisplayRole: return displayRole(inputData); // formatted to standard types or string
// formatted to standard types or string case Qt::EditRole: return editRole(inputData); // formatted to standard types or string
return displayRole(inputData); case Qt::ToolTipRole: return tooltipRole(inputData); // formatted to string
case Qt::EditRole: case Qt::DecorationRole: return decorationRole(inputData); // formatted as pixmap, icon, or color
// formatted to standard types or string case Qt::CheckStateRole: return checkStateRole(inputData); // as Qt check state
return editRole(inputData); default: break;
case Qt::ToolTipRole:
// formatted to string
return tooltipRole(inputData);
case Qt::DecorationRole:
// formatted as pixmap, icon, or color
return decorationRole(inputData);
case Qt::CheckStateRole:
// as Qt check state
return checkStateRole(inputData);
default:
break;
} }
return CVariant(); return CVariant();
} }
@@ -153,6 +139,12 @@ namespace BlackGui
return inputData.toQString(m_useI18n); return inputData.toQString(m_useI18n);
} }
const CVariant &CDefaultFormatter::emptyStringVariant()
{
static const CVariant e = CVariant::from(QStringLiteral(""));
return e;
}
CVariant CPixmapFormatter::displayRole(const CVariant &dataCVariant) const CVariant CPixmapFormatter::displayRole(const CVariant &dataCVariant) const
{ {
Q_UNUSED(dataCVariant); Q_UNUSED(dataCVariant);
@@ -168,7 +160,7 @@ namespace BlackGui
BlackMisc::CIcon icon = dataCVariant.value<BlackMisc::CIcon>(); BlackMisc::CIcon icon = dataCVariant.value<BlackMisc::CIcon>();
return icon.getDescriptiveText(); return icon.getDescriptiveText();
} }
return ""; return emptyStringVariant();
} }
CVariant CValueObjectFormatter::displayRole(const CVariant &valueObject) const CVariant CValueObjectFormatter::displayRole(const CVariant &valueObject) const
@@ -243,15 +235,12 @@ namespace BlackGui
{ {
return CPhysiqalQuantiyFormatter::displayRole(dataCVariant); return CPhysiqalQuantiyFormatter::displayRole(dataCVariant);
} }
else return emptyStringVariant();
{
return "";
}
} }
else else
{ {
Q_ASSERT_X(false, "CAviationComFrequencyFormatter::formatQVariant", "No CFrequency class"); Q_ASSERT_X(false, "CAviationComFrequencyFormatter::formatQVariant", "No CFrequency class");
return ""; return emptyStringVariant();
} }
} }
@@ -263,17 +252,15 @@ namespace BlackGui
{ {
return CPhysiqalQuantiyFormatter::displayRole(dataCVariant); return CPhysiqalQuantiyFormatter::displayRole(dataCVariant);
} }
else return emptyStringVariant();
{
return "";
}
} }
CVariant CStringFormatter::displayRole(const CVariant &dataCVariant) const CVariant CStringFormatter::displayRole(const CVariant &dataCVariant) const
{ {
if (dataCVariant.canConvert<QString>()) { return dataCVariant; } if (dataCVariant.canConvert<QString>()) { return dataCVariant; }
Q_ASSERT_X(false, "CStringFormatter", "no string value"); if (!dataCVariant.isValid()) { static const CVariant iv("invalid"); return iv; }
return CVariant(); const QString s("Invalid type '%1'");
return CVariant::from(s.arg(dataCVariant.typeName()));
} }
Qt::ItemFlags CDelegateFormatter::flags(Qt::ItemFlags flags, bool editable) const Qt::ItemFlags CDelegateFormatter::flags(Qt::ItemFlags flags, bool editable) const
@@ -304,11 +291,12 @@ namespace BlackGui
CBoolLedFormatter::CBoolLedFormatter(const QString &onName, const QString &offName, int alignment) : CBoolLedFormatter::CBoolLedFormatter(const QString &onName, const QString &offName, int alignment) :
CBoolTextFormatter(alignment, onName, offName, rolesDecorationAndToolTip()) CBoolTextFormatter(alignment, onName, offName, rolesDecorationAndToolTip())
{ {
// one time pixmap creation
CLedWidget *led = ledDefault(); CLedWidget *led = ledDefault();
led->setOn(true); led->setOn(true);
this->m_pixmapOnLed = led->asPixmap(); m_pixmapOnLed = led->asPixmap();
led->setOn(false); led->setOn(false);
this->m_pixmapOffLed = led->asPixmap(); m_pixmapOffLed = led->asPixmap();
delete led; delete led;
} }
@@ -345,8 +333,8 @@ namespace BlackGui
CBoolIconFormatter::CBoolIconFormatter(const CIcon &onIcon, const CIcon &offIcon, const QString &onName, const QString &offName, int alignment) : CBoolIconFormatter::CBoolIconFormatter(const CIcon &onIcon, const CIcon &offIcon, const QString &onName, const QString &offName, int alignment) :
CBoolTextFormatter(alignment, onName, offName, rolesDecorationAndToolTip()), m_iconOn(onIcon), m_iconOff(offIcon) CBoolTextFormatter(alignment, onName, offName, rolesDecorationAndToolTip()), m_iconOn(onIcon), m_iconOff(offIcon)
{ {
this->m_iconOn.setDescriptiveText(onName); m_iconOn.setDescriptiveText(onName);
this->m_iconOff.setDescriptiveText(offName); m_iconOff.setDescriptiveText(offName);
} }
CVariant CBoolIconFormatter::displayRole(const CVariant &dataCVariant) const CVariant CBoolIconFormatter::displayRole(const CVariant &dataCVariant) const
@@ -376,7 +364,7 @@ namespace BlackGui
{ {
CAltitude alt(altitude.to<CAltitude>()); CAltitude alt(altitude.to<CAltitude>());
if (m_flightLevel) { alt.toFlightLevel(); } if (m_flightLevel) { alt.toFlightLevel(); }
return alt.toQString(this->m_useI18n); return alt.toQString(m_useI18n);
} }
CColorFormatter::CColorFormatter(int alignment, bool i18n) : CDefaultFormatter(alignment, i18n, rolesDecorationAndToolTip()) CColorFormatter::CColorFormatter(int alignment, bool i18n) : CDefaultFormatter(alignment, i18n, rolesDecorationAndToolTip())

View File

@@ -113,6 +113,9 @@ namespace BlackGui
//! Standard conversion //! Standard conversion
virtual BlackMisc::CVariant keepStandardTypesConvertToStringOtherwise(const BlackMisc::CVariant &inputData) const; virtual BlackMisc::CVariant keepStandardTypesConvertToStringOtherwise(const BlackMisc::CVariant &inputData) const;
//! Empty string CVariant
static const BlackMisc::CVariant &emptyStringVariant();
QList<int> m_supportedRoles = roleDisplay(); //!< supports decoration roles QList<int> m_supportedRoles = roleDisplay(); //!< supports decoration roles
int m_alignment = -1; //!< alignment horizontal/vertically / Qt::Alignment int m_alignment = -1; //!< alignment horizontal/vertically / Qt::Alignment
bool m_useI18n = true; //!< i18n? bool m_useI18n = true; //!< i18n?
@@ -170,8 +173,8 @@ namespace BlackGui
virtual Qt::ItemFlags flags(Qt::ItemFlags flags, bool editable) const override; virtual Qt::ItemFlags flags(Qt::ItemFlags flags, bool editable) const override;
protected: protected:
QString m_trueName = "true"; //!< displayed when true const QString m_trueName = "true"; //!< displayed when true
QString m_falseName = "false"; //!< displayed when false const QString m_falseName = "false"; //!< displayed when false
}; };
//! Format as bool LED value //! Format as bool LED value