Merge branch 'master' into PICARD-1184

This commit is contained in:
vishichoudhary
2018-02-02 19:05:32 +05:30
5 changed files with 80 additions and 17 deletions

View File

@@ -257,6 +257,22 @@ def country_list_from_node(node):
return country
def release_dates_and_countries_from_node(node):
dates = []
countries = []
if "release-events" in node:
for release_event in node['release-events']:
dates.append(release_event['date'])
country_code = None
try:
country_code = release_event['area']['iso-3166-1-codes'][0]
# TypeError in case object is None
except (KeyError, IndexError, TypeError):
pass
countries.append(country_code)
return dates, countries
def label_info_from_node(node):
labels = []
catalog_numbers = []

View File

@@ -18,12 +18,25 @@
# 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
from picard.mbjson import (
artist_credit_from_node,
label_info_from_node,
release_dates_and_countries_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)
@@ -32,21 +45,25 @@ class CDLookupDialog(PicardDialog):
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.release_list.setSortingEnabled(True)
self.ui.release_list.setAlternatingRowColors(True)
self.ui.release_list.setHeaderLabels([_("Album"), _("Artist"), _("Date"), _("Country"),
_("Labels"), _("Catalog #s"), _("Barcode")])
self.restore_state()
if self.releases:
def myjoin(l):
return "\n".join(l)
for release in self.releases:
labels, catalog_numbers = label_info_from_node(release['label-info'])
date = release['date'] if "date" in release else ""
country = release['country'] if "country" in release else ""
dates, countries = release_dates_and_countries_from_node(release)
barcode = release['barcode'] if "barcode" in release else ""
item = QtWidgets.QTreeWidgetItem(self.ui.release_list)
item.setText(0, release['title'])
item.setText(1, artist_credit_from_node(release['artist-credit'])[0])
item.setText(2, date)
item.setText(3, country)
item.setText(4, ", ".join(labels))
item.setText(5, ", ".join(catalog_numbers))
item.setText(2, myjoin(dates))
item.setText(3, myjoin(countries))
item.setText(4, myjoin(labels))
item.setText(5, myjoin(catalog_numbers))
item.setText(6, barcode)
item.setData(0, QtCore.Qt.UserRole, release['id'])
self.ui.release_list.setCurrentItem(self.ui.release_list.topLevelItem(0))
@@ -57,13 +74,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

@@ -317,6 +317,7 @@ class SearchDialog(PicardDialog):
self.table.resizeColumnsToContents()
self.table.resizeRowsToContents()
self.table.setAlternatingRowColors(True)
def network_error(self, reply, error):
error_msg = _("<strong>Following error occurred while fetching results:<br><br></strong>"

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>