mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 06:38:13 -05:00
Persist the geometry of PdmUiPropertyViewDialog and RiuPropertyViewTabWidget to the application settings on close and restore it on the next show. Restoring is done in showEvent rather than the constructor so it is applied reliably for a modal dialog. The settings key includes the bound object class keyword so distinct dialogs that share a window title do not collide. This behaviour is gated behind a new "Remember Dialog Size" experimental feature, disabled by default. PdmUiPropertyViewDialog cannot access RiaPreferencesSystem, so the application pushes the current setting via the static enableGeometryPersistence(), following the existing pattern used for class-name display. RiuPropertyViewTabWidget queries the feature directly.
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (C) 2016 Statoil ASA
|
|
//
|
|
// ResInsight is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
//
|
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
|
// for more details.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
|
|
#include <QDialog>
|
|
#include <QStringList>
|
|
|
|
namespace caf
|
|
{
|
|
class PdmObject;
|
|
class PdmUiPropertyView;
|
|
} // namespace caf
|
|
|
|
class QDialogButtonBox;
|
|
class QWidget;
|
|
class QString;
|
|
|
|
class RiuPropertyViewTabWidget : public QDialog
|
|
{
|
|
public:
|
|
RiuPropertyViewTabWidget( QWidget* parent, caf::PdmObject* object, const QString& windowTitle, const QStringList& uiConfigNameForTabs );
|
|
~RiuPropertyViewTabWidget() override;
|
|
|
|
QSize minimumSizeHint() const override;
|
|
QSize sizeHint() const override;
|
|
QDialogButtonBox* dialogButtonBox();
|
|
|
|
protected:
|
|
void showEvent( QShowEvent* event ) override;
|
|
void done( int result ) override;
|
|
|
|
private:
|
|
QString settingsKey() const;
|
|
bool restoreDialogGeometry();
|
|
void saveDialogGeometry();
|
|
|
|
private:
|
|
QString m_windowTitle;
|
|
QString m_objectClassKeyword;
|
|
std::vector<caf::PdmUiPropertyView*> m_pageWidgets;
|
|
QDialogButtonBox* m_dialogButtonBox;
|
|
bool m_geometryRestored = false;
|
|
};
|