Skip to content

Commit

Permalink
[ui][layouts] Remember hidden panels when re-opening a layout designer
Browse files Browse the repository at this point in the history
(cherry picked from commit d18cb5c)
  • Loading branch information
nirvn authored and nyalldawson committed Jan 15, 2021
1 parent bb5b0c5 commit 24556a6
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 7 deletions.
45 changes: 39 additions & 6 deletions src/app/layout/qgslayoutdesignerdialog.cpp
Expand Up @@ -683,6 +683,16 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla
connect( mActionUnlockAll, &QAction::triggered, this, &QgsLayoutDesignerDialog::unlockAllItems );
connect( mActionLockItems, &QAction::triggered, this, &QgsLayoutDesignerDialog::lockSelectedItems );

QStringList docksTitle = settings.value( QStringLiteral( "LayoutDesigner/hiddenDocksTitle" ), QStringList(), QgsSettings::App ).toStringList();
QStringList docksActive = settings.value( QStringLiteral( "LayoutDesigner/hiddenDocksActive" ), QStringList(), QgsSettings::App ).toStringList();
if ( !docksTitle.isEmpty() )
{
for ( const auto &title : docksTitle )
{
mPanelStatus.insert( title, PanelStatus( true, docksActive.contains( title ) ) );
}
}
mActionHidePanels->setChecked( !docksTitle.isEmpty() );
connect( mActionHidePanels, &QAction::toggled, this, &QgsLayoutDesignerDialog::setPanelVisibility );

connect( mActionDeleteSelection, &QAction::triggered, this, [ = ]
Expand Down Expand Up @@ -934,6 +944,31 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla
connect( QgsProject::instance(), &QgsProject::isDirtyChanged, this, &QgsLayoutDesignerDialog::updateWindowTitle );
}

QgsLayoutDesignerDialog::~QgsLayoutDesignerDialog()
{
QgsSettings settings;
if ( !mPanelStatus.isEmpty() )
{
QStringList docksTitle;
QStringList docksActive;

for ( const auto &panel : mPanelStatus.toStdMap() )
{
if ( panel.second.isVisible )
docksTitle << panel.first;
if ( panel.second.isActive )
docksActive << panel.first;
}
settings.setValue( QStringLiteral( "LayoutDesigner/hiddenDocksTitle" ), docksTitle, QgsSettings::App );
settings.setValue( QStringLiteral( "LayoutDesigner/hiddenDocksActive" ), docksActive, QgsSettings::App );
}
else
{
settings.remove( QStringLiteral( "LayoutDesigner/hiddenDocksTitle" ), QgsSettings::App );
settings.remove( QStringLiteral( "LayoutDesigner/hiddenDocksActive" ), QgsSettings::App );
}
}

QgsAppLayoutDesignerInterface *QgsLayoutDesignerDialog::iface()
{
return mInterface;
Expand Down Expand Up @@ -1358,7 +1393,6 @@ void QgsLayoutDesignerDialog::setPanelVisibility( bool hidden )
{
mPanelStatus.clear();
//record status of all docks

for ( QDockWidget *dock : docks )
{
mPanelStatus.insert( dock->windowTitle(), PanelStatus( dock->isVisible(), false ) );
Expand All @@ -1377,12 +1411,10 @@ void QgsLayoutDesignerDialog::setPanelVisibility( bool hidden )
//restore visibility of all docks
for ( QDockWidget *dock : docks )
{
if ( ! mPanelStatus.contains( dock->windowTitle() ) )
if ( mPanelStatus.contains( dock->windowTitle() ) )
{
dock->setVisible( true );
continue;
dock->setVisible( mPanelStatus.value( dock->windowTitle() ).isVisible );
}
dock->setVisible( mPanelStatus.value( dock->windowTitle() ).isVisible );
}

//restore previously active dock tabs
Expand All @@ -1392,12 +1424,13 @@ void QgsLayoutDesignerDialog::setPanelVisibility( bool hidden )
for ( int i = 0; i < tabBar->count(); ++i )
{
QString tabTitle = tabBar->tabText( i );
if ( mPanelStatus.value( tabTitle ).isActive )
if ( mPanelStatus.contains( tabTitle ) && mPanelStatus.value( tabTitle ).isActive )
{
tabBar->setCurrentIndex( i );
}
}
}
mPanelStatus.clear();
}
}

Expand Down
1 change: 1 addition & 0 deletions src/app/layout/qgslayoutdesignerdialog.h
Expand Up @@ -103,6 +103,7 @@ class QgsLayoutDesignerDialog: public QMainWindow, public Ui::QgsLayoutDesignerB
public:

QgsLayoutDesignerDialog( QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
~QgsLayoutDesignerDialog() override;

/**
* Returns the designer interface for the dialog.
Expand Down
2 changes: 1 addition & 1 deletion src/gui/processing/models/qgsmodeldesignerdialog.cpp
Expand Up @@ -377,7 +377,7 @@ QgsModelDesignerDialog::~QgsModelDesignerDialog()
QStringList docksTitle;
QStringList docksActive;

for ( const auto panel : mPanelStatus.toStdMap() )
for ( const auto &panel : mPanelStatus.toStdMap() )
{
if ( panel.second.isVisible )
docksTitle << panel.first;
Expand Down

0 comments on commit 24556a6

Please sign in to comment.