Status message fix, copy timestamp in assigmnet operator

* the timestamp of status message was not copied, so every time a status message was sorted or otherwise assigned the ts got lost or wrongly assigned.
* this meant the log messages were in wrong order, leading to very confusing results in the log screen or file.
* also added new timestamp formatter
* new function "BlackMisc::CVariant displayRole(const PQ &pq) const" which can be used if the PQ is already available
This commit is contained in:
Klaus Basan
2018-05-11 03:00:30 +02:00
parent 40cd720e13
commit 1f9f148519
5 changed files with 18 additions and 9 deletions

View File

@@ -275,6 +275,9 @@ namespace BlackGui
//! Hour minute second
static const QString &formatHms() { static const QString f = "HH:mm:ss"; return f; }
//! Hour minute second and milliseconds
static const QString &formatHmsz() { static const QString f = "HH:mm:ss.zzz"; return f; }
private:
QString m_formatString = "yyyy-MM-dd HH:mm"; //!< how the value is displayed
};
@@ -333,12 +336,8 @@ namespace BlackGui
{
if (physicalQuantity.canConvert<PQ>())
{
PQ pq = physicalQuantity.value<PQ>();
if (!m_unit.isNull())
{
pq.switchUnit(m_unit);
}
return pq.valueRoundedWithUnit(m_digits, m_useI18n);
const PQ pq = physicalQuantity.value<PQ>();
return this->displayRole(pq);
}
else
{
@@ -347,6 +346,13 @@ namespace BlackGui
}
}
//! Version if value is already available as PQ
BlackMisc::CVariant displayRole(const PQ &pq) const
{
if (m_unit.isNull()) { return pq.valueRoundedWithUnit(m_digits, m_useI18n); }
return pq.valueRoundedWithUnit(m_unit, m_digits, m_useI18n);
}
//! Set unit
virtual void setUnit(const MU &unit) { m_unit = unit; }

View File

@@ -55,7 +55,7 @@ namespace BlackGui
break;
case Simplified:
{
this->m_columns.addColumn(CColumn("time", CStatusMessage::IndexUtcTimestamp, new CDateTimeFormatter(CDateTimeFormatter::formatHms())));
m_columns.addColumn(CColumn("time", CStatusMessage::IndexUtcTimestamp, new CDateTimeFormatter(CDateTimeFormatter::formatHmsz())));
CColumn col = CColumn("severity", CStatusMessage::IndexIcon);
col.setSortPropertyIndex(CStatusMessage::IndexSeverityAsString);
m_columns.addColumn(col);

View File

@@ -80,6 +80,7 @@ namespace BlackMisc
CPropertyIndexVariantMap::registerMetadata();
CRgbColor::registerMetadata();
CStatusMessage::registerMetadata();
qDBusRegisterMetaType<CStatusMessage::StatusSeverity>();
CStatusMessageList::registerMetadata();
CValueCachePacket::registerMetadata();
CVariant::registerMetadata();

View File

@@ -97,10 +97,12 @@ namespace BlackMisc
QReadLocker readLock(&other.m_lock);
auto handledBy = other.m_handledByObjects;
qint64 ts = other.m_timestampMSecsSinceEpoch;
readLock.unlock(); // avoid deadlock
QWriteLocker writeLock(&this->m_lock);
QWriteLocker writeLock(&m_lock);
m_handledByObjects = handledBy;
m_timestampMSecsSinceEpoch = ts;
return *this;
}

View File

@@ -53,7 +53,7 @@ namespace BlackMisc
CMessageBase() {}
//! Construct a message with some specific category.
explicit CMessageBase(const CLogCategory &category) : m_categories( { category }) {}
explicit CMessageBase(const CLogCategory &category) : m_categories({ category }) {}
//! Construct a message with some specific categories.
explicit CMessageBase(const CLogCategoryList &categories) : m_categories(categories) {}