Ref T264, sued "new signal syntax" with some QShortcuts and as a result made some slots "normal functions"

This commit is contained in:
Klaus Basan
2018-05-14 11:16:30 +02:00
parent 1336aa05f9
commit 98bc0a7d6e
5 changed files with 58 additions and 43 deletions

View File

@@ -87,10 +87,10 @@ namespace BlackGui
{
ui->comp_SimulatorSelector->setValue(simulator);
ui->le_Simulator->setText(simulator.toQString(true));
const QPointer<CDbOwnModelSetComponent> guard(this);
const QPointer<CDbOwnModelSetComponent> myself(this);
QTimer::singleShot(500, [ = ]()
{
if (guard.isNull() || !sApp || sApp->isShuttingDown()) { return; }
if (myself.isNull() || !sApp || sApp->isShuttingDown()) { return; }
this->updateViewToCurrentModels();
});
}
@@ -274,7 +274,8 @@ namespace BlackGui
void CDbOwnModelSetComponent::viewModelChanged()
{
ui->pb_SaveAsSetForSimulator->setEnabled(true);
const bool hasData = ui->tvp_OwnModelSet->rowCount() > 0;
ui->pb_SaveAsSetForSimulator->setEnabled(hasData);
}
void CDbOwnModelSetComponent::setSaveFileName(const CSimulatorInfo &simulator)

View File

@@ -51,7 +51,9 @@ namespace BlackGui
this->standardInit(new CAircraftModelListModel(CAircraftModelListModel::OwnAircraftModelClient, this));
// shortcut
new QShortcut(CShortcut::keyStash(), this, SLOT(ps_requestStash()), nullptr, Qt::WidgetShortcut);
QShortcut *stashShortcut = new QShortcut(CShortcut::keyStash(), this);
stashShortcut->setContext(Qt::WidgetShortcut);
connect(stashShortcut, &QShortcut::activated, this, &CAircraftModelView::requestedStash);
// default mode
CAircraftModelListModel::AircraftModelMode mode = derivedModel()->getModelMode();
@@ -205,7 +207,7 @@ namespace BlackGui
if (CGuiUtility::hasSwiftVariantMimeType(mime))
{
CVariant valueVariant(CGuiUtility::fromSwiftDragAndDropData(mime));
const CVariant valueVariant(CGuiUtility::fromSwiftDragAndDropData(mime));
if (valueVariant.isValid())
{
if (valueVariant.canConvert<CAircraftModel>())
@@ -294,8 +296,8 @@ namespace BlackGui
if (!m_menuFlagActions.contains(MenuCanStashModels))
{
CMenuActions ma;
ma.addAction(CIcons::appDbStash16(), "Stash selected", CMenuAction::pathStash(), { this, &CAircraftModelView::ps_requestStash });
QAction *added = ma.addAction(CIcons::appDbStash16(), "Stashing clears selection (on/off)", CMenuAction::pathStash(), { this, &CAircraftModelView::ps_stashingClearsSelection });
ma.addAction(CIcons::appDbStash16(), "Stash selected", CMenuAction::pathStash(), { this, &CAircraftModelView::requestedStash });
QAction *added = ma.addAction(CIcons::appDbStash16(), "Stashing clears selection (on/off)", CMenuAction::pathStash(), { this, &CAircraftModelView::stashingClearsSelection });
added->setCheckable(true);
m_menuFlagActions.insert(MenuCanStashModels, ma);
}
@@ -316,7 +318,7 @@ namespace BlackGui
if (!m_menuFlagActions.contains(MenuHighlightStashed))
{
CMenuActions ma;
QAction *added = ma.addAction(CIcons::appDbStash16(), "Highlight stashed (on/off)", CMenuAction::pathStash(), { this, &CAircraftModelView::ps_toggleHighlightStashedModels });
QAction *added = ma.addAction(CIcons::appDbStash16(), "Highlight stashed (on/off)", CMenuAction::pathStash(), { this, &CAircraftModelView::toggleHighlightStashedModels });
added->setCheckable(true);
m_menuFlagActions.insert(MenuHighlightStashed, ma);
}
@@ -354,33 +356,33 @@ namespace BlackGui
{
if (models.isEmpty())
{
emit jsonModelsForSimulatorLoaded(CSimulatorInfo());
emit this->jsonModelsForSimulatorLoaded(CSimulatorInfo());
}
else
{
emit jsonModelsForSimulatorLoaded(models.simulatorsWithMaxEntries());
emit this->jsonModelsForSimulatorLoaded(models.simulatorsWithMaxEntries());
}
}
void CAircraftModelView::ps_toggleHighlightStashedModels()
void CAircraftModelView::toggleHighlightStashedModels()
{
bool h = derivedModel()->highlightModelStrings();
derivedModel()->setHighlightModelStrings(!h);
emit toggledHighlightStashedModels();
}
void CAircraftModelView::ps_toogleHighlightInvalidModels()
void CAircraftModelView::toggleHighlightInvalidModels()
{
bool h = this->highlightModelStrings();
this->setHighlightModelStrings(!h);
}
void CAircraftModelView::ps_stashingClearsSelection()
void CAircraftModelView::stashingClearsSelection()
{
m_stashingClearsSelection = !m_stashingClearsSelection;
}
void CAircraftModelView::ps_requestStash()
void CAircraftModelView::requestedStash()
{
if (!m_menus.testFlag(MenuCanStashModels)) { return; }
if (!this->hasSelection()) { return; }

View File

@@ -134,20 +134,19 @@ namespace BlackGui
virtual void jsonLoadedAndModelUpdated(const BlackMisc::Simulation::CAircraftModelList &models) override;
//! @}
private slots:
//! Highlight stashed models
void ps_toggleHighlightStashedModels();
private:
//! Toggle highlight invalid models
void ps_toogleHighlightInvalidModels();
void toggleHighlightInvalidModels();
//! Toggle if stashing unselects
void ps_stashingClearsSelection();
void stashingClearsSelection();
//! Highlight stashed models
void toggleHighlightStashedModels();
//! Stash shortcut pressed
void ps_requestStash();
void requestedStash();
private:
bool m_stashingClearsSelection = true; //!< stashing unselects
BlackMisc::Simulation::CSimulatorInfo m_loadingRequiresSimulator; //!< simulator required when loading
};

View File

@@ -88,16 +88,30 @@ namespace BlackGui
this->setTextElideMode(Qt::ElideMiddle);
// shortcuts
QShortcut *filter = new QShortcut(CShortcut::keyDisplayFilter(), this, SLOT(ps_displayFilterDialog()), nullptr, Qt::WidgetShortcut);
QShortcut *filter = new QShortcut(CShortcut::keyDisplayFilter(), this);
connect(filter, &QShortcut::activated, this, &CViewBaseNonTemplate::displayFilterDialog);
filter->setObjectName("Filter shortcut for " + this->objectName());
QShortcut *clearSelection = new QShortcut(CShortcut::keyClearSelection(), this, SLOT(clearSelection()), nullptr, Qt::WidgetShortcut);
filter->setContext(Qt::WidgetShortcut);
QShortcut *clearSelection = new QShortcut(CShortcut::keyClearSelection(), this);
connect(clearSelection, &QShortcut::activated, this, &CViewBaseNonTemplate::clearSelection);
clearSelection->setObjectName("Clear selection shortcut for " + this->objectName());
QShortcut *saveJson = new QShortcut(CShortcut::keySaveViews(), this, SLOT(ps_saveJsonAction()), nullptr, Qt::WidgetShortcut);
clearSelection->setContext(Qt::WidgetShortcut);
QShortcut *saveJson = new QShortcut(CShortcut::keySaveViews(), this);
connect(saveJson, &QShortcut::activated, this, &CViewBaseNonTemplate::saveJsonAction);
saveJson->setObjectName("Save JSON for " + this->objectName());
QShortcut *deleteRow = new QShortcut(CShortcut::keyDelete(), this, SLOT(ps_removeSelectedRows()), nullptr, Qt::WidgetShortcut);
deleteRow->setObjectName("Delete selected rows for " + this->objectName());
QShortcut *copy = new QShortcut(CShortcut::keyCopy(), this, SLOT(ps_copy()), nullptr, Qt::WidgetShortcut);
copy->setObjectName("Copy rows for " + this->objectName());
saveJson->setContext(Qt::WidgetShortcut);
QShortcut *deleteRow = new QShortcut(CShortcut::keyDelete(), this);
connect(deleteRow, &QShortcut::activated, this, &CViewBaseNonTemplate::ps_removeSelectedRows);
deleteRow->setObjectName("Remove selected rows for " + this->objectName());
deleteRow->setContext(Qt::WidgetShortcut);
QShortcut *copy = new QShortcut(CShortcut::keyCopy(), this);
connect(copy, &QShortcut::activated, this, &CViewBaseNonTemplate::ps_copy);
copy->setObjectName("Copy selection shortcut for " + this->objectName());
copy->setContext(Qt::WidgetShortcut);
}
CViewBaseNonTemplate::~CViewBaseNonTemplate()
@@ -251,14 +265,14 @@ namespace BlackGui
if (m_filterWidget)
{
const bool dialog = qobject_cast<QDialog *>(m_filterWidget);
if (dialog) ma.addAction(CIcons::filter16(), "Show filter", CMenuAction::pathViewFilter(), { this, &CViewBaseNonTemplate::ps_displayFilterDialog }, CShortcut::keyDisplayFilter());
if (dialog) ma.addAction(CIcons::filter16(), "Show filter", CMenuAction::pathViewFilter(), { this, &CViewBaseNonTemplate::displayFilterDialog }, CShortcut::keyDisplayFilter());
ma.addAction(CIcons::filter16(), "Remove Filter", CMenuAction::pathViewFilter(), { this, &CViewBaseNonTemplate::ps_removeFilter });
}
break;
}
case MenuMaterializeFilter: { ma.addAction(CIcons::tableRelationship16(), "Materialize filtered data", CMenuAction::pathViewFilter(), { this, &CViewBaseNonTemplate::materializeFilter }); break; }
case MenuLoad: { ma.addAction(CIcons::disk16(), "Load from file", CMenuAction::pathViewLoadSave(), { this, &CViewBaseNonTemplate::ps_loadJsonAction }); break; }
case MenuSave: { ma.addAction(CIcons::disk16(), "Save data in file", CMenuAction::pathViewLoadSave(), { this, &CViewBaseNonTemplate::ps_saveJsonAction }, CShortcut::keySaveViews()); break; }
case MenuSave: { ma.addAction(CIcons::disk16(), "Save data in file", CMenuAction::pathViewLoadSave(), { this, &CViewBaseNonTemplate::saveJsonAction }, CShortcut::keySaveViews()); break; }
case MenuCut:
{
if (!QApplication::clipboard()) break;
@@ -565,7 +579,7 @@ namespace BlackGui
return this->performUpdateContainer(variant, sort, resize);
}
void CViewBaseNonTemplate::ps_displayFilterDialog()
void CViewBaseNonTemplate::displayFilterDialog()
{
if (!m_menus.testFlag(MenuFilter)) { return; }
if (!m_filterWidget) { return; }
@@ -582,7 +596,7 @@ namespace BlackGui
}
}
void CViewBaseNonTemplate::ps_saveJsonAction()
void CViewBaseNonTemplate::saveJsonAction()
{
if (this->isEmpty()) { return; }
if (!m_menus.testFlag(MenuSave)) { return; }

View File

@@ -429,6 +429,12 @@ namespace BlackGui
//! Draw drop indicator
virtual void drawDropIndicator(bool indicator) = 0;
//! Save JSON for action/menu, no return signatur
void saveJsonAction();
//! Display the filter dialog
void displayFilterDialog();
//! Settings have been changed
void settingsChanged();
@@ -463,9 +469,6 @@ namespace BlackGui
//! Helper method with template free signature serving as callback from threaded worker
int ps_updateContainer(const BlackMisc::CVariant &variant, bool sort, bool resize);
//! Display the filter dialog
void ps_displayFilterDialog();
//! Remove filter
virtual void ps_removeFilter() = 0;
@@ -493,9 +496,6 @@ namespace BlackGui
//! Save JSON
virtual BlackMisc::CStatusMessage ps_saveJson() = 0;
//! Save JSON for action/menu, no return signatur
void ps_saveJsonAction();
//! Trigger reload from backend by signal requestUpdate();
void ps_triggerReload();
@@ -517,10 +517,6 @@ namespace BlackGui
//! Highlight DB data
virtual void ps_toggleHighlightDbData() {}
private slots:
//! Remove selected rows
void ps_removeSelectedRows();
private:
//! \name Change selection modes @{
void setMultiSelection();
@@ -528,6 +524,9 @@ namespace BlackGui
void setSingleSelection();
//! @}
//! Remove selected rows
void ps_removeSelectedRows();
//! Toggle auto display flag
void toggleAutoDisplay();