mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-09 21:45:34 +08:00
Improve the performance and usability of the raw FSD message display
* Replaced QListView with QPlainTextEdit * Added filter options for packet type and text * Option to globally disable/enable the feature. Default disabled Maniphest Tasks: Ref T240
This commit is contained in:
committed by
Klaus Basan
parent
58d128a9da
commit
b12002caa2
@@ -160,7 +160,8 @@ namespace BlackCore
|
||||
Vat_SetAircraftInfoHandler(m_net.data(), onPilotInfoReceived, this);
|
||||
Vat_SetCustomPilotPacketHandler(m_net.data(), onCustomPacketReceived, this);
|
||||
Vat_SetAircraftConfigHandler(m_net.data(), onAircraftConfigReceived, this);
|
||||
Vat_SetFsdMessageHandler(m_net.data(), onRawFsdMessage, this);
|
||||
|
||||
fsdMessageSettingsChanged();
|
||||
}
|
||||
|
||||
CNetworkVatlib::~CNetworkVatlib()
|
||||
@@ -1036,6 +1037,7 @@ namespace BlackCore
|
||||
|
||||
void CNetworkVatlib::handleRawFsdMessage(const QString &fsdMessage)
|
||||
{
|
||||
if (!m_rawFsdMessagesEnabled) { return; }
|
||||
CRawFsdMessage rawFsdMessage(fsdMessage);
|
||||
if (m_rawFsdMessageLogFile.isOpen())
|
||||
{
|
||||
@@ -1045,11 +1047,25 @@ namespace BlackCore
|
||||
emit rawFsdMessageReceived(rawFsdMessage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CNetworkVatlib::fsdMessageSettingsChanged()
|
||||
{
|
||||
if (!m_net) { return; }
|
||||
if (m_rawFsdMessageLogFile.isOpen()) { m_rawFsdMessageLogFile.close(); }
|
||||
const CRawFsdMessageSettings setting = m_fsdMessageSetting.get();
|
||||
if (!setting.isFileWritingEnabled() || setting.getFileDir().isEmpty()) { return; }
|
||||
|
||||
// Workaround bug in vatlib v0.9.7. Handlers cannot be updated.
|
||||
m_rawFsdMessagesEnabled = setting.areRawFsdMessagesEnabled();
|
||||
/*if (!setting.areRawFsdMessagesEnabled())
|
||||
{
|
||||
Vat_SetFsdMessageHandler(m_net.data(), nullptr, this);
|
||||
return;
|
||||
}*/
|
||||
|
||||
Vat_SetFsdMessageHandler(m_net.data(), CNetworkVatlib::onRawFsdMessage, this);
|
||||
|
||||
if (setting.getFileWriteMode() == CRawFsdMessageSettings::None || setting.getFileDir().isEmpty()) { return; }
|
||||
|
||||
if (setting.getFileWriteMode() == CRawFsdMessageSettings::Truncate)
|
||||
{
|
||||
|
||||
@@ -260,6 +260,7 @@ namespace BlackCore
|
||||
|
||||
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TRawFsdMessageSetting> m_fsdMessageSetting { this, &CNetworkVatlib::fsdMessageSettingsChanged };
|
||||
QFile m_rawFsdMessageLogFile;
|
||||
bool m_rawFsdMessagesEnabled = false;
|
||||
};
|
||||
} //namespace
|
||||
} //namespace
|
||||
|
||||
@@ -79,14 +79,14 @@ namespace BlackCore
|
||||
{ }
|
||||
|
||||
CRawFsdMessageSettings::CRawFsdMessageSettings(bool enabled, const QString &FileDir) :
|
||||
m_fileWritingEnabled(enabled), m_FileDir(FileDir)
|
||||
m_rawFsdMessagesEnabled(enabled), m_FileDir(FileDir)
|
||||
{ }
|
||||
|
||||
QString CRawFsdMessageSettings::convertToQString(bool i18n) const
|
||||
{
|
||||
Q_UNUSED(i18n);
|
||||
QString s("CRawFsdMessageSettings");
|
||||
s.append(" enabled: ").append(boolToYesNo(m_fileWritingEnabled));
|
||||
s.append(" enabled: ").append(boolToYesNo(m_rawFsdMessagesEnabled));
|
||||
s.append(" dir: ").append(m_FileDir);
|
||||
return s;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ namespace BlackCore
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexWriteEnabled: return CVariant::fromValue(this->m_fileWritingEnabled);
|
||||
case IndexRawFsdMessagesEnabled: return CVariant::fromValue(this->m_rawFsdMessagesEnabled);
|
||||
case IndexFileDir: return CVariant::fromValue(this->m_FileDir);
|
||||
case IndexFileWriteMode: return CVariant::fromValue(this->m_fileWriteMode);
|
||||
default: return CValueObject::propertyByIndex(index);
|
||||
@@ -110,7 +110,7 @@ namespace BlackCore
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexWriteEnabled: this->m_fileWritingEnabled = variant.toBool(); break;
|
||||
case IndexRawFsdMessagesEnabled: this->m_rawFsdMessagesEnabled = variant.toBool(); break;
|
||||
case IndexFileDir: this->m_FileDir = variant.toQString(); break;
|
||||
case IndexFileWriteMode: this->m_fileWriteMode = variant.to<FileWriteMode>(); break;
|
||||
default: CValueObject::setPropertyByIndex(index, variant); break;
|
||||
|
||||
@@ -174,6 +174,7 @@ namespace BlackCore
|
||||
//! File writing mode
|
||||
enum FileWriteMode
|
||||
{
|
||||
None,
|
||||
Truncate,
|
||||
Append,
|
||||
Timestamped
|
||||
@@ -182,7 +183,7 @@ namespace BlackCore
|
||||
//! Properties by index
|
||||
enum ColumnIndex
|
||||
{
|
||||
IndexWriteEnabled = BlackMisc::CPropertyIndex::GlobalIndexRawFsdMessageSettings,
|
||||
IndexRawFsdMessagesEnabled = BlackMisc::CPropertyIndex::GlobalIndexRawFsdMessageSettings,
|
||||
IndexFileDir,
|
||||
IndexFileWriteMode
|
||||
};
|
||||
@@ -193,8 +194,8 @@ namespace BlackCore
|
||||
//! Simplified constructor
|
||||
CRawFsdMessageSettings(bool enabled, const QString &fileDir);
|
||||
|
||||
//! Is file writing enabled?
|
||||
bool isFileWritingEnabled() const { return m_fileWritingEnabled; }
|
||||
//! Are raw FSD messages enabled?
|
||||
bool areRawFsdMessagesEnabled() const { return m_rawFsdMessagesEnabled; }
|
||||
|
||||
//! Get file directory
|
||||
QString getFileDir() const { return m_FileDir; }
|
||||
@@ -212,13 +213,13 @@ namespace BlackCore
|
||||
QString convertToQString(bool i18n = false) const;
|
||||
|
||||
private:
|
||||
bool m_fileWritingEnabled = false;
|
||||
bool m_rawFsdMessagesEnabled = false;
|
||||
QString m_FileDir;
|
||||
FileWriteMode m_fileWriteMode = Truncate;
|
||||
FileWriteMode m_fileWriteMode = None;
|
||||
|
||||
BLACK_METACLASS(
|
||||
CRawFsdMessageSettings,
|
||||
BLACK_METAMEMBER(fileWritingEnabled),
|
||||
BLACK_METAMEMBER(rawFsdMessagesEnabled),
|
||||
BLACK_METAMEMBER(FileDir),
|
||||
BLACK_METAMEMBER(fileWriteMode)
|
||||
);
|
||||
@@ -233,12 +234,12 @@ namespace BlackCore
|
||||
//! \copydoc BlackCore::TSettingTrait::humanReadable
|
||||
static const QString &humanReadable() { static const QString name("FSD message Logging"); return name; }
|
||||
|
||||
//! \copydoc BlackCore::TSettingTrait::isValid
|
||||
/* //! \copydoc BlackCore::TSettingTrait::isValid
|
||||
static bool isValid(const CRawFsdMessageSettings &setting)
|
||||
{
|
||||
if (setting.isFileWritingEnabled()) { return !setting.getFileDir().isEmpty(); }
|
||||
if (setting.areRawFsdMessagesEnabled()) { return !setting.getFileDir().isEmpty(); }
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
//! \copydoc BlackCore::TSettingTrait::defaultValue
|
||||
static const CRawFsdMessageSettings &defaultValue()
|
||||
|
||||
Reference in New Issue
Block a user