From 2be09ec6ef55fa15e13995fef312c81446b0efa3 Mon Sep 17 00:00:00 2001 From: Dirk H Bartley Date: Sun, 3 Aug 2008 16:52:47 +0000 Subject: [PATCH] Bringing one fix and one feature from the head to 2.4 branch. This feature is remembering the state of the medilist tree. The fix is the fileset query will only retrieve the most recent record. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/branches/Branch-2.4@7460 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/qt-console/fileset/fileset.cpp | 2 +- bacula/src/qt-console/medialist/medialist.cpp | 40 +++++++++++++++---- bacula/src/qt-console/medialist/medialist.h | 2 + 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/bacula/src/qt-console/fileset/fileset.cpp b/bacula/src/qt-console/fileset/fileset.cpp index a07c9569c4..a1ec77795c 100644 --- a/bacula/src/qt-console/fileset/fileset.cpp +++ b/bacula/src/qt-console/fileset/fileset.cpp @@ -107,7 +107,7 @@ void FileSet::populateTree() " FROM FileSet" " WHERE "; query += " FileSet='" + filesetName + "'"; - query += " ORDER BY FileSet"; + query += " ORDER BY CreateTime DESC LIMIT 1"; QStringList results; if (mainWin->m_sqlDebug) { diff --git a/bacula/src/qt-console/medialist/medialist.cpp b/bacula/src/qt-console/medialist/medialist.cpp index 49639a2ee4..a8e076e328 100644 --- a/bacula/src/qt-console/medialist/medialist.cpp +++ b/bacula/src/qt-console/medialist/medialist.cpp @@ -65,6 +65,8 @@ MediaList::MediaList() MediaList::~MediaList() { + if (m_populated) + writeExpandedSettings(); } /* @@ -73,7 +75,7 @@ MediaList::~MediaList() */ void MediaList::populateTree() { - QTreeWidgetItem *mediatreeitem, *pooltreeitem, *topItem; + QTreeWidgetItem *mediatreeitem, *pooltreeitem; if (m_populating) return; m_populating = true; @@ -89,23 +91,31 @@ void MediaList::populateTree() int statusIndex = headerlist.indexOf("Status"); m_checkcurwidget = false; + if (m_populated) + writeExpandedSettings(); mp_treeWidget->clear(); m_checkcurwidget = true; mp_treeWidget->setColumnCount(headerlist.count()); - topItem = new QTreeWidgetItem(mp_treeWidget); - topItem->setText(0, "Pools"); - topItem->setData(0, Qt::UserRole, 0); - topItem->setExpanded(true); + m_topItem = new QTreeWidgetItem(mp_treeWidget); + m_topItem->setText(0, "Pools"); + m_topItem->setData(0, Qt::UserRole, 0); + m_topItem->setExpanded(true); mp_treeWidget->setHeaderLabels(headerlist); + QSettings settings(m_console->m_dir->name(), "bat"); + settings.beginGroup("MediaListTreeExpanded"); QString query; foreach (QString pool_listItem, m_console->pool_list) { - pooltreeitem = new QTreeWidgetItem(topItem); + pooltreeitem = new QTreeWidgetItem(m_topItem); pooltreeitem->setText(0, pool_listItem); pooltreeitem->setData(0, Qt::UserRole, 1); - pooltreeitem->setExpanded(true); + if(settings.contains(pool_listItem)) { + pooltreeitem->setExpanded(settings.value(pool_listItem).toBool()); + } else { + pooltreeitem->setExpanded(true); + } query = "SELECT Media.VolumeName AS Media, " " Media.MediaId AS Id, Media.VolStatus AS VolStatus," @@ -155,6 +165,7 @@ void MediaList::populateTree() } /* foreach resultline */ } /* if results from query */ } /* foreach pool_listItem */ + settings.endGroup(); /* Resize the columns */ for(int cnter=0; cnterresizeColumnToContents(cnter); @@ -367,3 +378,18 @@ void MediaList::volumeFromPool() consoleCommand(cmd); populateTree(); } + +/* + * Write settings to save expanded states of the pools + */ +void MediaList::writeExpandedSettings() +{ + QSettings settings(m_console->m_dir->name(), "bat"); + settings.beginGroup("MediaListTreeExpanded"); + int childcount = m_topItem->childCount(); + for (int cnt=0; cntchild(cnt); + settings.setValue(poolitem->text(0), poolitem->isExpanded()); + } + settings.endGroup(); +} diff --git a/bacula/src/qt-console/medialist/medialist.h b/bacula/src/qt-console/medialist/medialist.h index 61b6f8d628..e3be25b8f2 100644 --- a/bacula/src/qt-console/medialist/medialist.h +++ b/bacula/src/qt-console/medialist/medialist.h @@ -66,11 +66,13 @@ private slots: private: void createContextMenu(); void setStatusColor(QTreeWidgetItem *, QString &, int &); + void writeExpandedSettings(); QString m_currentVolumeName; QString m_currentVolumeId; bool m_populated; bool m_populating; bool m_checkcurwidget; + QTreeWidgetItem *m_topItem; }; #endif /* _MEDIALIST_H_ */ -- 2.39.5