mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 10:55:32 +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();
|
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)
|
IMenuDelegate *CViewBaseNonTemplate::setCustomMenu(IMenuDelegate *menu, bool nestPreviousMenu)
|
||||||
@@ -1587,19 +1587,21 @@ namespace BlackGui
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class ModelClass, class ContainerType, class ObjectType>
|
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,
|
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)"));
|
tr("swift (*.json *.txt)"));
|
||||||
return this->loadJsonFile(fileName);
|
return this->loadJsonFile(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class ModelClass, class ContainerType, class ObjectType>
|
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,
|
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)"));
|
tr("swift (*.json *.txt)"));
|
||||||
if (fileName.isEmpty()) { return CStatusMessage(this, CStatusMessage::SeverityDebug, "Save canceled", true); }
|
if (fileName.isEmpty()) { return CStatusMessage(this, CStatusMessage::SeverityDebug, "Save canceled", true); }
|
||||||
const QString json(this->toJsonString()); // save as CVariant JSON
|
const QString json(this->toJsonString()); // save as CVariant JSON
|
||||||
|
|||||||
@@ -273,10 +273,10 @@ namespace BlackGui
|
|||||||
QWidget *mainApplicationWindowWidget() const;
|
QWidget *mainApplicationWindowWidget() const;
|
||||||
|
|
||||||
//! Show file load dialog
|
//! Show file load dialog
|
||||||
BlackMisc::CStatusMessage showFileLoadDialog();
|
BlackMisc::CStatusMessage showFileLoadDialog(const QString &directory = {});
|
||||||
|
|
||||||
//! Show file save dialog
|
//! Show file save dialog
|
||||||
BlackMisc::CStatusMessage showFileSaveDialog();
|
BlackMisc::CStatusMessage showFileSaveDialog(const QString &directory = {});
|
||||||
|
|
||||||
//! Save file name (optional)
|
//! Save file name (optional)
|
||||||
void setSaveFileName(const QString &saveName) { m_saveFileName = saveName; }
|
void setSaveFileName(const QString &saveName) { m_saveFileName = saveName; }
|
||||||
@@ -529,10 +529,10 @@ namespace BlackGui
|
|||||||
virtual void ps_rowSelected(const QModelIndex &index) = 0;
|
virtual void ps_rowSelected(const QModelIndex &index) = 0;
|
||||||
|
|
||||||
//! Load JSON
|
//! Load JSON
|
||||||
virtual BlackMisc::CStatusMessage ps_loadJson() = 0;
|
virtual BlackMisc::CStatusMessage ps_loadJson(const QString &directory = {}) = 0;
|
||||||
|
|
||||||
//! Save JSON
|
//! Save JSON
|
||||||
virtual BlackMisc::CStatusMessage ps_saveJson() = 0;
|
virtual BlackMisc::CStatusMessage ps_saveJson(const QString &directory = {}) = 0;
|
||||||
|
|
||||||
//! Trigger reload from backend by signal requestUpdate();
|
//! Trigger reload from backend by signal requestUpdate();
|
||||||
void ps_triggerReload();
|
void ps_triggerReload();
|
||||||
@@ -763,8 +763,8 @@ namespace BlackGui
|
|||||||
virtual void ps_clicked(const QModelIndex &index) override;
|
virtual void ps_clicked(const QModelIndex &index) override;
|
||||||
virtual void ps_doubleClicked(const QModelIndex &index) override;
|
virtual void ps_doubleClicked(const QModelIndex &index) override;
|
||||||
virtual void ps_rowSelected(const QModelIndex &index) override;
|
virtual void ps_rowSelected(const QModelIndex &index) override;
|
||||||
virtual BlackMisc::CStatusMessage ps_loadJson() override;
|
virtual BlackMisc::CStatusMessage ps_loadJson(const QString &directory = {}) override;
|
||||||
virtual BlackMisc::CStatusMessage ps_saveJson() override;
|
virtual BlackMisc::CStatusMessage ps_saveJson(const QString &directory = {}) override;
|
||||||
//! @}
|
//! @}
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
@@ -506,10 +506,12 @@ namespace BlackMisc
|
|||||||
return d;
|
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; }
|
if (modelString.isEmpty()) { return false; }
|
||||||
return this->removeIf([&](const CAircraftModel & model) { return model.matchesModelString(modelString, sensitivity); });
|
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)
|
int CAircraftModelList::removeModelsWithString(const QStringList &modelStrings, Qt::CaseSensitivity sensitivity)
|
||||||
@@ -570,6 +572,14 @@ namespace BlackMisc
|
|||||||
return diff;
|
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)
|
int CAircraftModelList::replaceOrAddModelsWithString(const CAircraftModelList &addOrReplaceList, Qt::CaseSensitivity sensitivity)
|
||||||
{
|
{
|
||||||
if (addOrReplaceList.isEmpty()) { return 0; }
|
if (addOrReplaceList.isEmpty()) { return 0; }
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
//! Remove those models with given model strings
|
//! Remove those models with given model strings
|
||||||
//! \return number of elements removed
|
//! \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
|
//! Remove those models with given model strings
|
||||||
//! \return number of elements removed
|
//! \return number of elements removed
|
||||||
@@ -247,6 +247,10 @@ namespace BlackMisc
|
|||||||
//! \return number of elements removed
|
//! \return number of elements removed
|
||||||
int removeIfExcluded();
|
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
|
//! Replace or add based on model string
|
||||||
//! \return number of elements removed
|
//! \return number of elements removed
|
||||||
int replaceOrAddModelsWithString(const CAircraftModelList &addOrReplaceList, Qt::CaseSensitivity sensitivity);
|
int replaceOrAddModelsWithString(const CAircraftModelList &addOrReplaceList, Qt::CaseSensitivity sensitivity);
|
||||||
|
|||||||
Reference in New Issue
Block a user