Ref T362, Ref T348 model/view adjustments

* remove model string
* start directory for file dialog
This commit is contained in:
Klaus Basan
2018-09-21 01:55:56 +02:00
parent ebc2ffe480
commit 5e99e557c6
4 changed files with 34 additions and 18 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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; }

View File

@@ -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);