refs #830, use settings in views

also avoid changing style when not needed
This commit is contained in:
Klaus Basan
2016-12-12 01:57:10 +01:00
parent fd5f82f1f1
commit eb3b2252a2
3 changed files with 43 additions and 6 deletions

View File

@@ -75,9 +75,9 @@ namespace BlackGui
CGuiApplication::registerMetadata(); CGuiApplication::registerMetadata();
CApplication::init(false); // base class without metadata CApplication::init(false); // base class without metadata
this->setWindowIcon(icon); this->setWindowIcon(icon);
this->settingsChanged();
sGui = this; sGui = this;
connect(&this->m_styleSheetUtility, &CStyleSheetUtility::styleSheetsChanged, this, &CGuiApplication::styleSheetsChanged); connect(&this->m_styleSheetUtility, &CStyleSheetUtility::styleSheetsChanged, this, &CGuiApplication::styleSheetsChanged);
reloadWidgetStyleFromSettings();
} }
} }

View File

@@ -89,6 +89,7 @@ using namespace BlackGui;
using namespace BlackGui::Menus; using namespace BlackGui::Menus;
using namespace BlackGui::Models; using namespace BlackGui::Models;
using namespace BlackGui::Filters; using namespace BlackGui::Filters;
using namespace BlackGui::Settings;
namespace BlackGui namespace BlackGui
{ {
@@ -262,6 +263,19 @@ namespace BlackGui
return ma; return ma;
} }
void CViewBaseNonTemplate::settingsChanged()
{
if (this->allowsMultipleSelectedRows())
{
const CGeneralGuiSettings settings = this->m_guiSettings.getThreadLocal();
this->m_originalSelectionMode = settings.getPreferredSelection();
if (this->isCurrentlyAllowingMultipleRowSelections())
{
this->setSelectionMode(settings.getPreferredSelection());
}
}
}
void CViewBaseNonTemplate::customMenu(CMenuActions &menuActions) void CViewBaseNonTemplate::customMenu(CMenuActions &menuActions)
{ {
// delegate? // delegate?
@@ -405,6 +419,17 @@ namespace BlackGui
return this->selectedRowCount() > 1; return this->selectedRowCount() > 1;
} }
bool CViewBaseNonTemplate::allowsMultipleSelectedRows() const
{
return this->m_originalSelectionMode == ExtendedSelection || this->m_originalSelectionMode == MultiSelection;
}
bool CViewBaseNonTemplate::isCurrentlyAllowingMultipleRowSelections() const
{
QAbstractItemView::SelectionMode m = this->selectionMode();
return m == QAbstractItemView::MultiSelection || m == QAbstractItemView::ExtendedSelection;
}
void CViewBaseNonTemplate::init() void CViewBaseNonTemplate::init()
{ {
const int fh = qRound(1.5 * this->getHorizontalHeaderFontHeight()); const int fh = qRound(1.5 * this->getHorizontalHeaderFontHeight());
@@ -421,6 +446,8 @@ namespace BlackGui
Q_ASSERT_X(false, Q_FUNC_INFO, "wrong resize mode"); Q_ASSERT_X(false, Q_FUNC_INFO, "wrong resize mode");
break; break;
} }
this->settingsChanged();
} }
QString CViewBaseNonTemplate::getDefaultFilename(bool load) const QString CViewBaseNonTemplate::getDefaultFilename(bool load) const
@@ -652,7 +679,7 @@ namespace BlackGui
void CViewBaseNonTemplate::ps_setSingleSelection() void CViewBaseNonTemplate::ps_setSingleSelection()
{ {
if (this->m_originalSelectionMode == ExtendedSelection || this->m_originalSelectionMode == MultiSelection) if (this->allowsMultipleSelectedRows())
{ {
this->setSelectionMode(SingleSelection); this->setSelectionMode(SingleSelection);
} }
@@ -660,7 +687,7 @@ namespace BlackGui
void CViewBaseNonTemplate::ps_setExtendedSelection() void CViewBaseNonTemplate::ps_setExtendedSelection()
{ {
if (this->m_originalSelectionMode == ExtendedSelection || this->m_originalSelectionMode == MultiSelection) if (this->allowsMultipleSelectedRows())
{ {
this->setSelectionMode(ExtendedSelection); this->setSelectionMode(ExtendedSelection);
} }
@@ -668,7 +695,7 @@ namespace BlackGui
void CViewBaseNonTemplate::ps_setMultiSelection() void CViewBaseNonTemplate::ps_setMultiSelection()
{ {
if (this->m_originalSelectionMode == ExtendedSelection || this->m_originalSelectionMode == MultiSelection) if (this->allowsMultipleSelectedRows())
{ {
this->setSelectionMode(MultiSelection); this->setSelectionMode(MultiSelection);
} }

View File

@@ -12,11 +12,11 @@
#ifndef BLACKGUI_VIEWBASE_H #ifndef BLACKGUI_VIEWBASE_H
#define BLACKGUI_VIEWBASE_H #define BLACKGUI_VIEWBASE_H
#include "blackgui/blackguiexport.h"
#include "blackgui/components/enablefordockwidgetinfoarea.h" #include "blackgui/components/enablefordockwidgetinfoarea.h"
#include "blackgui/menus/menuaction.h" #include "blackgui/menus/menuaction.h"
#include "blackgui/models/modelfilter.h" #include "blackgui/models/modelfilter.h"
#include "blackmisc/namevariantpair.h" #include "blackgui/settings/guisettings.h"
#include "blackgui/blackguiexport.h"
#include "blackmisc/namevariantpairlist.h" #include "blackmisc/namevariantpairlist.h"
#include "blackmisc/propertyindex.h" #include "blackmisc/propertyindex.h"
#include "blackmisc/propertyindexvariantmap.h" #include "blackmisc/propertyindexvariantmap.h"
@@ -197,6 +197,12 @@ namespace BlackGui
//! Multiple selected rows //! Multiple selected rows
bool hasMultipleSelectedRows() const; bool hasMultipleSelectedRows() const;
//! Allows to select multiple rows
bool allowsMultipleSelectedRows() const;
//! Is the current selection mode allow multiple selection
bool isCurrentlyAllowingMultipleRowSelections() const;
//! Filter dialog //! Filter dialog
void setFilterDialog(BlackGui::Filters::CFilterDialog *filterDialog); void setFilterDialog(BlackGui::Filters::CFilterDialog *filterDialog);
@@ -376,6 +382,9 @@ namespace BlackGui
//! Draw drop indicator //! Draw drop indicator
virtual void drawDropIndicator(bool indicator) = 0; virtual void drawDropIndicator(bool indicator) = 0;
//! Settings have been changed
void settingsChanged();
QString m_saveFileName; //!< save file name (JSON) QString m_saveFileName; //!< save file name (JSON)
ResizeMode m_resizeMode = PresizeSubset; //!< mode ResizeMode m_resizeMode = PresizeSubset; //!< mode
RowsResizeMode m_rowResizeMode = Interactive; //!< row resize mode for row height RowsResizeMode m_rowResizeMode = Interactive; //!< row resize mode for row height
@@ -397,6 +406,7 @@ namespace BlackGui
BlackGui::Menus::IMenuDelegate *m_menu = nullptr; //!< custom menu if any BlackGui::Menus::IMenuDelegate *m_menu = nullptr; //!< custom menu if any
BlackGui::CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed BlackGui::CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
QMap<MenuFlag, BlackGui::Menus::CMenuActions> m_menuFlagActions; //!< initialized actions QMap<MenuFlag, BlackGui::Menus::CMenuActions> m_menuFlagActions; //!< initialized actions
BlackMisc::CSettingReadOnly<BlackGui::Settings::TGeneralGui> m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings
protected slots: protected slots:
//! Helper method with template free signature serving as callback from threaded worker //! Helper method with template free signature serving as callback from threaded worker