PICARD-1175: save and restore CD Lookup dialog and headers states

This commit is contained in:
Laurent Monin
2018-02-01 16:13:26 +01:00
parent e3002811a2
commit e01896ee76
3 changed files with 49 additions and 10 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -29,9 +29,6 @@
</item>
<item>
<widget class="QTreeWidget" name="release_list">
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<column>
<property name="text">
<string notr="true">1</string>
@@ -103,8 +100,8 @@
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>278</x>
<y>253</y>
<x>410</x>
<y>227</y>
</hint>
<hint type="destinationlabel">
<x>96</x>
@@ -119,8 +116,8 @@
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>369</x>
<y>253</y>
<x>629</x>
<y>227</y>
</hint>
<hint type="destinationlabel">
<x>179</x>