Synchronize the height of the preview panel for all open databases

This commit is contained in:
frostasm 2017-10-28 21:14:45 +03:00
parent 6bbd42bfd1
commit 8b00d0580b
4 changed files with 48 additions and 25 deletions

View file

@ -73,15 +73,15 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
QLayout* layout = new QHBoxLayout(); QLayout* layout = new QHBoxLayout();
mainLayout->addWidget(m_messageWidget); mainLayout->addWidget(m_messageWidget);
mainLayout->addLayout(layout); mainLayout->addLayout(layout);
m_splitter = new QSplitter(m_mainWidget); m_mainSplitter = new QSplitter(m_mainWidget);
m_splitter->setChildrenCollapsible(false); m_mainSplitter->setChildrenCollapsible(false);
m_detailSplitter = new QSplitter(m_mainWidget); m_detailSplitter = new QSplitter(m_mainWidget);
m_detailSplitter->setOrientation(Qt::Vertical); m_detailSplitter->setOrientation(Qt::Vertical);
m_detailSplitter->setChildrenCollapsible(true); m_detailSplitter->setChildrenCollapsible(true);
QWidget* rightHandSideWidget = new QWidget(m_splitter); QWidget* rightHandSideWidget = new QWidget(m_mainSplitter);
m_groupView = new GroupView(db, m_splitter); m_groupView = new GroupView(db, m_mainSplitter);
m_groupView->setObjectName("groupView"); m_groupView->setObjectName("groupView");
m_groupView->setContextMenuPolicy(Qt::CustomContextMenu); m_groupView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(m_groupView, SIGNAL(customContextMenuRequested(QPoint)), connect(m_groupView, SIGNAL(customContextMenuRequested(QPoint)),
@ -122,13 +122,13 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
setTabOrder(m_entryView, m_groupView); setTabOrder(m_entryView, m_groupView);
m_splitter->addWidget(m_groupView); m_mainSplitter->addWidget(m_groupView);
m_splitter->addWidget(rightHandSideWidget); m_mainSplitter->addWidget(rightHandSideWidget);
m_splitter->setStretchFactor(0, 30); m_mainSplitter->setStretchFactor(0, 30);
m_splitter->setStretchFactor(1, 70); m_mainSplitter->setStretchFactor(1, 70);
layout->addWidget(m_splitter); layout->addWidget(m_mainSplitter);
m_mainWidget->setLayout(mainLayout); m_mainWidget->setLayout(mainLayout);
m_editEntryWidget = new EditEntryWidget(); m_editEntryWidget = new EditEntryWidget();
@ -168,7 +168,8 @@ DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent)
addWidget(m_keepass1OpenWidget); addWidget(m_keepass1OpenWidget);
addWidget(m_unlockDatabaseWidget); addWidget(m_unlockDatabaseWidget);
connect(m_splitter, SIGNAL(splitterMoved(int,int)), SIGNAL(splitterSizesChanged())); connect(m_mainSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(mainSplitterSizesChanged()));
connect(m_detailSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(detailSplitterSizesChanged()));
connect(m_entryView->header(), SIGNAL(sectionResized(int,int,int)), SIGNAL(entryColumnSizesChanged())); connect(m_entryView->header(), SIGNAL(sectionResized(int,int,int)), SIGNAL(entryColumnSizesChanged()));
connect(m_groupView, SIGNAL(groupChanged(Group*)), this, SLOT(onGroupChanged(Group*))); connect(m_groupView, SIGNAL(groupChanged(Group*)), this, SLOT(onGroupChanged(Group*)));
connect(m_groupView, SIGNAL(groupChanged(Group*)), SIGNAL(groupChanged())); connect(m_groupView, SIGNAL(groupChanged(Group*)), SIGNAL(groupChanged()));
@ -251,14 +252,24 @@ bool DatabaseWidget::isEditWidgetModified() const
} }
} }
QList<int> DatabaseWidget::splitterSizes() const QList<int> DatabaseWidget::mainSplitterSizes() const
{ {
return m_splitter->sizes(); return m_mainSplitter->sizes();
} }
void DatabaseWidget::setSplitterSizes(const QList<int>& sizes) void DatabaseWidget::setMainSplitterSizes(const QList<int>& sizes)
{ {
m_splitter->setSizes(sizes); m_mainSplitter->setSizes(sizes);
}
QList<int> DatabaseWidget::detailSplitterSizes() const
{
return m_detailSplitter->sizes();
}
void DatabaseWidget::setDetailSplitterSizes(const QList<int> &sizes)
{
m_detailSplitter->setSizes(sizes);
} }
QList<int> DatabaseWidget::entryHeaderViewSizes() const QList<int> DatabaseWidget::entryHeaderViewSizes() const

View file

@ -88,8 +88,10 @@ public:
bool isGroupSelected() const; bool isGroupSelected() const;
bool isInEditMode() const; bool isInEditMode() const;
bool isEditWidgetModified() const; bool isEditWidgetModified() const;
QList<int> splitterSizes() const; QList<int> mainSplitterSizes() const;
void setSplitterSizes(const QList<int>& sizes); void setMainSplitterSizes(const QList<int>& sizes);
QList<int> detailSplitterSizes() const;
void setDetailSplitterSizes(const QList<int>& sizes);
QList<int> entryHeaderViewSizes() const; QList<int> entryHeaderViewSizes() const;
void setEntryViewHeaderSizes(const QList<int>& sizes); void setEntryViewHeaderSizes(const QList<int>& sizes);
void clearAllWidgets(); void clearAllWidgets();
@ -123,7 +125,8 @@ signals:
void listModeActivated(); void listModeActivated();
void searchModeAboutToActivate(); void searchModeAboutToActivate();
void searchModeActivated(); void searchModeActivated();
void splitterSizesChanged(); void mainSplitterSizesChanged();
void detailSplitterSizesChanged();
void entryColumnSizesChanged(); void entryColumnSizesChanged();
void updateSearch(QString text); void updateSearch(QString text);
@ -214,7 +217,7 @@ private:
KeePass1OpenWidget* m_keepass1OpenWidget; KeePass1OpenWidget* m_keepass1OpenWidget;
UnlockDatabaseWidget* m_unlockDatabaseWidget; UnlockDatabaseWidget* m_unlockDatabaseWidget;
UnlockDatabaseDialog* m_unlockDatabaseDialog; UnlockDatabaseDialog* m_unlockDatabaseDialog;
QSplitter* m_splitter; QSplitter* m_mainSplitter;
QSplitter* m_detailSplitter; QSplitter* m_detailSplitter;
GroupView* m_groupView; GroupView* m_groupView;
EntryView* m_entryView; EntryView* m_entryView;

View file

@ -25,14 +25,16 @@ DatabaseWidgetStateSync::DatabaseWidgetStateSync(QObject* parent)
, m_activeDbWidget(nullptr) , m_activeDbWidget(nullptr)
, m_blockUpdates(false) , m_blockUpdates(false)
{ {
m_splitterSizes = variantToIntList(config()->get("GUI/SplitterState")); m_mainSplitterSizes = variantToIntList(config()->get("GUI/SplitterState"));
m_detailSplitterSizes = variantToIntList(config()->get("GUI/DetailSplitterState"));
m_columnSizesList = variantToIntList(config()->get("GUI/EntryListColumnSizes")); m_columnSizesList = variantToIntList(config()->get("GUI/EntryListColumnSizes"));
m_columnSizesSearch = variantToIntList(config()->get("GUI/EntrySearchColumnSizes")); m_columnSizesSearch = variantToIntList(config()->get("GUI/EntrySearchColumnSizes"));
} }
DatabaseWidgetStateSync::~DatabaseWidgetStateSync() DatabaseWidgetStateSync::~DatabaseWidgetStateSync()
{ {
config()->set("GUI/SplitterState", intListToVariant(m_splitterSizes)); config()->set("GUI/SplitterState", intListToVariant(m_mainSplitterSizes));
config()->set("GUI/DetailSplitterState", intListToVariant(m_detailSplitterSizes));
config()->set("GUI/EntryListColumnSizes", intListToVariant(m_columnSizesList)); config()->set("GUI/EntryListColumnSizes", intListToVariant(m_columnSizesList));
config()->set("GUI/EntrySearchColumnSizes", intListToVariant(m_columnSizesSearch)); config()->set("GUI/EntrySearchColumnSizes", intListToVariant(m_columnSizesSearch));
} }
@ -48,8 +50,11 @@ void DatabaseWidgetStateSync::setActive(DatabaseWidget* dbWidget)
if (m_activeDbWidget) { if (m_activeDbWidget) {
m_blockUpdates = true; m_blockUpdates = true;
if (!m_splitterSizes.isEmpty()) if (!m_mainSplitterSizes.isEmpty())
m_activeDbWidget->setSplitterSizes(m_splitterSizes); m_activeDbWidget->setMainSplitterSizes(m_mainSplitterSizes);
if (!m_detailSplitterSizes.isEmpty())
m_activeDbWidget->setDetailSplitterSizes(m_detailSplitterSizes);
if (m_activeDbWidget->isInSearchMode()) if (m_activeDbWidget->isInSearchMode())
restoreSearchView(); restoreSearchView();
@ -58,7 +63,9 @@ void DatabaseWidgetStateSync::setActive(DatabaseWidget* dbWidget)
m_blockUpdates = false; m_blockUpdates = false;
connect(m_activeDbWidget, SIGNAL(splitterSizesChanged()), connect(m_activeDbWidget, SIGNAL(mainSplitterSizesChanged()),
SLOT(updateSplitterSizes()));
connect(m_activeDbWidget, SIGNAL(detailSplitterSizesChanged()),
SLOT(updateSplitterSizes())); SLOT(updateSplitterSizes()));
connect(m_activeDbWidget, SIGNAL(entryColumnSizesChanged()), connect(m_activeDbWidget, SIGNAL(entryColumnSizesChanged()),
SLOT(updateColumnSizes())); SLOT(updateColumnSizes()));
@ -102,7 +109,8 @@ void DatabaseWidgetStateSync::updateSplitterSizes()
return; return;
} }
m_splitterSizes = m_activeDbWidget->splitterSizes(); m_mainSplitterSizes = m_activeDbWidget->mainSplitterSizes();
m_detailSplitterSizes = m_activeDbWidget->detailSplitterSizes();
} }
void DatabaseWidgetStateSync::updateColumnSizes() void DatabaseWidgetStateSync::updateColumnSizes()

View file

@ -46,7 +46,8 @@ private:
DatabaseWidget* m_activeDbWidget; DatabaseWidget* m_activeDbWidget;
bool m_blockUpdates; bool m_blockUpdates;
QList<int> m_splitterSizes; QList<int> m_mainSplitterSizes;
QList<int> m_detailSplitterSizes;
QList<int> m_columnSizesList; QList<int> m_columnSizesList;
QList<int> m_columnSizesSearch; QList<int> m_columnSizesSearch;
}; };