From e01896ee76e456d562b8d4baca30c3ffd6ea335b Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Thu, 1 Feb 2018 16:13:26 +0100 Subject: [PATCH] PICARD-1175: save and restore CD Lookup dialog and headers states --- picard/ui/cdlookup.py | 47 ++++++++++++++++++++++++++++++++++++++-- picard/ui/ui_cdlookup.py | 1 - ui/cdlookup.ui | 11 ++++------ 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/picard/ui/cdlookup.py b/picard/ui/cdlookup.py index 83b130d98..8f188192a 100644 --- a/picard/ui/cdlookup.py +++ b/picard/ui/cdlookup.py @@ -18,12 +18,21 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. from PyQt5 import QtCore, QtWidgets + +from picard import config, log from picard.ui import PicardDialog from picard.ui.ui_cdlookup import Ui_Dialog from picard.mbjson import artist_credit_from_node, label_info_from_node class CDLookupDialog(PicardDialog): + dialog_window_size = "cdlookupdialog_window_size" + dialog_header_state = "cdlookupdialog_header_state" + + options = [ + config.Option("persist", dialog_window_size, QtCore.QSize(720, 360)), + config.Option("persist", dialog_header_state, QtCore.QByteArray()) + ] def __init__(self, releases, disc, parent=None): PicardDialog.__init__(self, parent) @@ -34,6 +43,7 @@ class CDLookupDialog(PicardDialog): self.ui.release_list.setSortingEnabled(True) self.ui.release_list.setHeaderLabels([_("Album"), _("Artist"), _("Date"), _("Country"), _("Labels"), _("Catalog #s"), _("Barcode")]) + self.restore_state() if self.releases: for release in self.releases: labels, catalog_numbers = label_info_from_node(release['label-info']) @@ -57,13 +67,46 @@ class CDLookupDialog(PicardDialog): self.ui.release_list.sortByColumn(3, QtCore.Qt.AscendingOrder) self.ui.release_list.sortByColumn(2, QtCore.Qt.DescendingOrder) self.ui.lookup_button.clicked.connect(self.lookup) + self.restore_header_state() + + def save_and_accept(self): + self.save_state() + QtWidgets.QDialog.accept(self) def accept(self): release_id = self.ui.release_list.currentItem().data(0, QtCore.Qt.UserRole) self.tagger.load_album(release_id, discid=self.disc.id) - QtWidgets.QDialog.accept(self) + self.save_and_accept() def lookup(self): lookup = self.tagger.get_file_lookup() lookup.disc_lookup(self.disc.submission_url) - QtWidgets.QDialog.accept(self) + self.save_and_accept() + + def reject(self): + self.save_state() + QtWidgets.QDialog.reject(self) + + def restore_state(self): + size = config.persist[self.dialog_window_size] + if size: + self.resize(size) + log.debug("restore_state: %s" % self.dialog_window_size) + + def restore_header_state(self): + header = self.ui.release_list.header() + state = config.persist[self.dialog_header_state] + if state: + header.restoreState(state) + log.debug("restore_state: %s" % self.dialog_header_state) + + def save_state(self): + if self.ui.release_list: + self.save_header_state() + log.debug("save_state: %s" % self.dialog_window_size) + config.persist[self.dialog_window_size] = self.size() + + def save_header_state(self): + state = self.ui.release_list.header().saveState() + config.persist[self.dialog_header_state] = state + log.debug("save_state: %s" % self.dialog_header_state) diff --git a/picard/ui/ui_cdlookup.py b/picard/ui/ui_cdlookup.py index d5e2f75b5..12e855c24 100644 --- a/picard/ui/ui_cdlookup.py +++ b/picard/ui/ui_cdlookup.py @@ -17,7 +17,6 @@ class Ui_Dialog(object): self.label.setObjectName("label") self.vboxlayout.addWidget(self.label) self.release_list = QtWidgets.QTreeWidget(Dialog) - self.release_list.setRootIsDecorated(False) self.release_list.setObjectName("release_list") self.release_list.headerItem().setText(0, "1") self.vboxlayout.addWidget(self.release_list) diff --git a/ui/cdlookup.ui b/ui/cdlookup.ui index c0417e2fa..ebf8f1d9e 100644 --- a/ui/cdlookup.ui +++ b/ui/cdlookup.ui @@ -29,9 +29,6 @@ - - false - 1 @@ -103,8 +100,8 @@ accept() - 278 - 253 + 410 + 227 96 @@ -119,8 +116,8 @@ reject() - 369 - 253 + 629 + 227 179