mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 16:56:53 +08:00
Ref T362, Ref T348 model/view adjustments
* remove model string * start directory for file dialog
This commit is contained in:
@@ -206,14 +206,14 @@ namespace BlackGui
|
||||
return CGuiUtility::mainApplicationWidget();
|
||||
}
|
||||
|
||||
CStatusMessage CViewBaseNonTemplate::showFileLoadDialog()
|
||||
CStatusMessage CViewBaseNonTemplate::showFileLoadDialog(const QString &directory)
|
||||
{
|
||||
return this->ps_loadJson();
|
||||
return this->ps_loadJson(directory);
|
||||
}
|
||||
|
||||
CStatusMessage CViewBaseNonTemplate::showFileSaveDialog()
|
||||
CStatusMessage CViewBaseNonTemplate::showFileSaveDialog(const QString &directory)
|
||||
{
|
||||
return this->ps_saveJson();
|
||||
return this->ps_saveJson(directory);
|
||||
}
|
||||
|
||||
IMenuDelegate *CViewBaseNonTemplate::setCustomMenu(IMenuDelegate *menu, bool nestPreviousMenu)
|
||||
@@ -1587,19 +1587,21 @@ namespace BlackGui
|
||||
}
|
||||
|
||||
template <class ModelClass, class ContainerType, class ObjectType>
|
||||
CStatusMessage CViewBase<ModelClass, ContainerType, ObjectType>::ps_loadJson()
|
||||
CStatusMessage CViewBase<ModelClass, ContainerType, ObjectType>::ps_loadJson(const QString &directory)
|
||||
{
|
||||
const QString fileName = QFileDialog::getOpenFileName(nullptr,
|
||||
tr("Load data file"), this->getFileDialogFileName(true),
|
||||
tr("Load data file"),
|
||||
directory.isEmpty() ? this->getFileDialogFileName(true) : directory,
|
||||
tr("swift (*.json *.txt)"));
|
||||
return this->loadJsonFile(fileName);
|
||||
}
|
||||
|
||||
template <class ModelClass, class ContainerType, class ObjectType>
|
||||
CStatusMessage CViewBase<ModelClass, ContainerType, ObjectType>::ps_saveJson()
|
||||
CStatusMessage CViewBase<ModelClass, ContainerType, ObjectType>::ps_saveJson(const QString &directory)
|
||||
{
|
||||
const QString fileName = QFileDialog::getSaveFileName(nullptr,
|
||||
tr("Save data file"), getFileDialogFileName(false),
|
||||
tr("Save data file"),
|
||||
directory.isEmpty() ? this->getFileDialogFileName(false) : directory,
|
||||
tr("swift (*.json *.txt)"));
|
||||
if (fileName.isEmpty()) { return CStatusMessage(this, CStatusMessage::SeverityDebug, "Save canceled", true); }
|
||||
const QString json(this->toJsonString()); // save as CVariant JSON
|
||||
|
||||
@@ -273,10 +273,10 @@ namespace BlackGui
|
||||
QWidget *mainApplicationWindowWidget() const;
|
||||
|
||||
//! Show file load dialog
|
||||
BlackMisc::CStatusMessage showFileLoadDialog();
|
||||
BlackMisc::CStatusMessage showFileLoadDialog(const QString &directory = {});
|
||||
|
||||
//! Show file save dialog
|
||||
BlackMisc::CStatusMessage showFileSaveDialog();
|
||||
BlackMisc::CStatusMessage showFileSaveDialog(const QString &directory = {});
|
||||
|
||||
//! Save file name (optional)
|
||||
void setSaveFileName(const QString &saveName) { m_saveFileName = saveName; }
|
||||
@@ -529,10 +529,10 @@ namespace BlackGui
|
||||
virtual void ps_rowSelected(const QModelIndex &index) = 0;
|
||||
|
||||
//! Load JSON
|
||||
virtual BlackMisc::CStatusMessage ps_loadJson() = 0;
|
||||
virtual BlackMisc::CStatusMessage ps_loadJson(const QString &directory = {}) = 0;
|
||||
|
||||
//! Save JSON
|
||||
virtual BlackMisc::CStatusMessage ps_saveJson() = 0;
|
||||
virtual BlackMisc::CStatusMessage ps_saveJson(const QString &directory = {}) = 0;
|
||||
|
||||
//! Trigger reload from backend by signal requestUpdate();
|
||||
void ps_triggerReload();
|
||||
@@ -763,8 +763,8 @@ namespace BlackGui
|
||||
virtual void ps_clicked(const QModelIndex &index) override;
|
||||
virtual void ps_doubleClicked(const QModelIndex &index) override;
|
||||
virtual void ps_rowSelected(const QModelIndex &index) override;
|
||||
virtual BlackMisc::CStatusMessage ps_loadJson() override;
|
||||
virtual BlackMisc::CStatusMessage ps_saveJson() override;
|
||||
virtual BlackMisc::CStatusMessage ps_loadJson(const QString &directory = {}) override;
|
||||
virtual BlackMisc::CStatusMessage ps_saveJson(const QString &directory = {}) override;
|
||||
//! @}
|
||||
};
|
||||
} // namespace
|
||||
|
||||
@@ -506,10 +506,12 @@ namespace BlackMisc
|
||||
return d;
|
||||
}
|
||||
|
||||
int CAircraftModelList::removeModelWithString(const QString &modelString, Qt::CaseSensitivity sensitivity)
|
||||
bool CAircraftModelList::removeModelWithString(const QString &modelString, Qt::CaseSensitivity sensitivity)
|
||||
{
|
||||
if (modelString.isEmpty()) { return 0; }
|
||||
return this->removeIf([&](const CAircraftModel & model) { return model.matchesModelString(modelString, sensitivity); });
|
||||
if (modelString.isEmpty()) { return false; }
|
||||
if (this->isEmpty()) { return false; }
|
||||
const int r = this->removeIf([&](const CAircraftModel & model) { return model.matchesModelString(modelString, sensitivity); });
|
||||
return r > 0;
|
||||
}
|
||||
|
||||
int CAircraftModelList::removeModelsWithString(const QStringList &modelStrings, Qt::CaseSensitivity sensitivity)
|
||||
@@ -570,6 +572,14 @@ namespace BlackMisc
|
||||
return diff;
|
||||
}
|
||||
|
||||
bool CAircraftModelList::replaceOrAddModelWithString(const CAircraftModel &addOrReplaceModel, Qt::CaseSensitivity sensitivity)
|
||||
{
|
||||
bool r = false;
|
||||
if (!this->isEmpty()) { r = this->removeModelWithString(addOrReplaceModel.getModelString(), sensitivity); }
|
||||
this->push_back(addOrReplaceModel);
|
||||
return r;
|
||||
}
|
||||
|
||||
int CAircraftModelList::replaceOrAddModelsWithString(const CAircraftModelList &addOrReplaceList, Qt::CaseSensitivity sensitivity)
|
||||
{
|
||||
if (addOrReplaceList.isEmpty()) { return 0; }
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace BlackMisc
|
||||
|
||||
//! Remove those models with given model strings
|
||||
//! \return number of elements removed
|
||||
int removeModelWithString(const QString &modelString, Qt::CaseSensitivity sensitivity);
|
||||
bool removeModelWithString(const QString &modelString, Qt::CaseSensitivity sensitivity);
|
||||
|
||||
//! Remove those models with given model strings
|
||||
//! \return number of elements removed
|
||||
@@ -247,6 +247,10 @@ namespace BlackMisc
|
||||
//! \return number of elements removed
|
||||
int removeIfExcluded();
|
||||
|
||||
//! Replace or add based on model string
|
||||
//! \return element removed?
|
||||
bool replaceOrAddModelWithString(const CAircraftModel &addOrReplaceModel, Qt::CaseSensitivity sensitivity);
|
||||
|
||||
//! Replace or add based on model string
|
||||
//! \return number of elements removed
|
||||
int replaceOrAddModelsWithString(const CAircraftModelList &addOrReplaceList, Qt::CaseSensitivity sensitivity);
|
||||
|
||||
Reference in New Issue
Block a user