~marmyshev/openlp/itunes

« back to all changes in this revision

Viewing changes to openlp/plugins/songs/forms/editsongform.py

  • Committer: Andreas Preikschat
  • Date: 2012-12-28 20:15:56 UTC
  • mfrom: (1970.2.54 bug-779201-2)
  • Revision ID: googol@lavabit.com-20121228201556-i1p7aq0byf5cuip7
QString and QVariant auto-conversion (bug #779201)

Show diffs side-by-side

added added

removed removed

Lines of Context:
147
147
        for author in authors:
148
148
            row = self.authorsComboBox.count()
149
149
            self.authorsComboBox.addItem(author.display_name)
150
 
            self.authorsComboBox.setItemData(
151
 
                row, QtCore.QVariant(author.id))
 
150
            self.authorsComboBox.setItemData(row, author.id)
152
151
            self.authors.append(author.display_name)
153
152
        set_case_insensitive_completer(self.authors, self.authorsComboBox)
154
153
 
168
167
            row = combo.count()
169
168
            combo.addItem(object.name)
170
169
            cache.append(object.name)
171
 
            combo.setItemData(row, QtCore.QVariant(object.id))
 
170
            combo.setItemData(row, object.id)
172
171
        set_case_insensitive_completer(cache, combo)
173
172
 
174
173
    def loadThemes(self, theme_list):
278
277
                    verse[0][u'label'] = u'1'
279
278
                verse_def = u'%s%s' % (verse[0][u'type'], verse[0][u'label'])
280
279
                item = QtGui.QTableWidgetItem(verse[1])
281
 
                item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
 
280
                item.setData(QtCore.Qt.UserRole, verse_def)
282
281
                self.verseListWidget.setItem(count, 0, item)
283
282
        else:
284
283
            verses = self.song.lyrics.split(u'\n\n')
288
287
                item = QtGui.QTableWidgetItem(verse)
289
288
                verse_def = u'%s%s' % \
290
289
                    (VerseType.Tags[VerseType.Verse], unicode(count + 1))
291
 
                item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
 
290
                item.setData(QtCore.Qt.UserRole, verse_def)
292
291
                self.verseListWidget.setItem(count, 0, item)
293
292
        if self.song.verse_order:
294
293
            # we translate verse order
310
309
        self.authorsListView.clear()
311
310
        for author in self.song.authors:
312
311
            author_name = QtGui.QListWidgetItem(unicode(author.display_name))
313
 
            author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
 
312
            author_name.setData(QtCore.Qt.UserRole, author.id)
314
313
            self.authorsListView.addItem(author_name)
315
314
        # clear the results
316
315
        self.topicsListView.clear()
317
316
        for topic in self.song.topics:
318
317
            topic_name = QtGui.QListWidgetItem(unicode(topic.name))
319
 
            topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
 
318
            topic_name.setData(QtCore.Qt.UserRole, topic.id)
320
319
            self.topicsListView.addItem(topic_name)
321
320
        self.audioListWidget.clear()
322
321
        for media in self.song.media_files:
323
322
            media_file = QtGui.QListWidgetItem(
324
323
                os.path.split(media.file_name)[1])
325
 
            media_file.setData(QtCore.Qt.UserRole,
326
 
                QtCore.QVariant(media.file_name))
 
324
            media_file.setData(QtCore.Qt.UserRole, media.file_name)
327
325
            self.audioListWidget.addItem(media_file)
328
326
        self.titleEdit.setFocus()
329
327
        # Hide or show the preview button.
336
334
        row_label = []
337
335
        for row in range(self.verseListWidget.rowCount()):
338
336
            item = self.verseListWidget.item(row, 0)
339
 
            verse_def = unicode(item.data(QtCore.Qt.UserRole).toString())
 
337
            verse_def = item.data(QtCore.Qt.UserRole)
340
338
            verse_tag = VerseType.translated_tag(verse_def[0])
341
339
            row_def = u'%s%s' % (verse_tag, verse_def[1:])
342
340
            row_label.append(row_def)
346
344
 
347
345
    def onAuthorAddButtonClicked(self):
348
346
        item = int(self.authorsComboBox.currentIndex())
349
 
        text = unicode(self.authorsComboBox.currentText()).strip(u' \r\n\t')
 
347
        text = self.authorsComboBox.currentText().strip(u' \r\n\t')
350
348
        # This if statement is for OS X, which doesn't seem to work well with
351
349
        # the QCompleter autocompletion class. See bug #812628.
352
350
        if text in self.authors:
372
370
            else:
373
371
                return
374
372
        elif item > 0:
375
 
            item_id = (self.authorsComboBox.itemData(item)).toInt()[0]
 
373
            item_id = (self.authorsComboBox.itemData(item))
376
374
            author = self.manager.get_object(Author, item_id)
377
375
            if self.authorsListView.findItems(unicode(author.display_name),
378
376
                QtCore.Qt.MatchExactly):
394
392
        Add an author to the author list.
395
393
        """
396
394
        author_item = QtGui.QListWidgetItem(unicode(author.display_name))
397
 
        author_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
 
395
        author_item.setData(QtCore.Qt.UserRole, author.id)
398
396
        self.authorsListView.addItem(author_item)
399
397
 
400
398
    def onAuthorsListViewClicked(self):
409
407
 
410
408
    def onTopicAddButtonClicked(self):
411
409
        item = int(self.topicsComboBox.currentIndex())
412
 
        text = unicode(self.topicsComboBox.currentText())
 
410
        text = self.topicsComboBox.currentText()
413
411
        if item == 0 and text:
414
412
            if QtGui.QMessageBox.question(self,
415
413
                translate('SongsPlugin.EditSongForm', 'Add Topic'),
420
418
                topic = Topic.populate(name=text)
421
419
                self.manager.save_object(topic)
422
420
                topic_item = QtGui.QListWidgetItem(unicode(topic.name))
423
 
                topic_item.setData(QtCore.Qt.UserRole,
424
 
                    QtCore.QVariant(topic.id))
 
421
                topic_item.setData(QtCore.Qt.UserRole, topic.id)
425
422
                self.topicsListView.addItem(topic_item)
426
423
                self.loadTopics()
427
424
                self.topicsComboBox.setCurrentIndex(0)
428
425
            else:
429
426
                return
430
427
        elif item > 0:
431
 
            item_id = (self.topicsComboBox.itemData(item)).toInt()[0]
 
428
            item_id = (self.topicsComboBox.itemData(item))
432
429
            topic = self.manager.get_object(Topic, item_id)
433
430
            if self.topicsListView.findItems(unicode(topic.name),
434
431
                QtCore.Qt.MatchExactly):
437
434
                    'This topic is already in the list.'))
438
435
            else:
439
436
                topic_item = QtGui.QListWidgetItem(unicode(topic.name))
440
 
                topic_item.setData(QtCore.Qt.UserRole,
441
 
                    QtCore.QVariant(topic.id))
 
437
                topic_item.setData(QtCore.Qt.UserRole, topic.id)
442
438
                self.topicsListView.addItem(topic_item)
443
439
            self.topicsComboBox.setCurrentIndex(0)
444
440
        else:
467
463
            after_text, verse_tag, verse_num = self.verseForm.getVerse()
468
464
            verse_def = u'%s%s' % (verse_tag, verse_num)
469
465
            item = QtGui.QTableWidgetItem(after_text)
470
 
            item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
 
466
            item.setData(QtCore.Qt.UserRole, verse_def)
471
467
            item.setText(after_text)
472
468
            self.verseListWidget.setRowCount(
473
469
                self.verseListWidget.rowCount() + 1)
481
477
        item = self.verseListWidget.currentItem()
482
478
        if item:
483
479
            temp_text = item.text()
484
 
            verse_id = unicode(item.data(QtCore.Qt.UserRole).toString())
 
480
            verse_id = item.data(QtCore.Qt.UserRole)
485
481
            self.verseForm.setVerse(temp_text, True, verse_id)
486
482
            if self.verseForm.exec_():
487
483
                after_text, verse_tag, verse_num = self.verseForm.getVerse()
488
484
                verse_def = u'%s%s' % (verse_tag, verse_num)
489
 
                item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
 
485
                item.setData(QtCore.Qt.UserRole, verse_def)
490
486
                item.setText(after_text)
491
487
                # number of lines has changed, repaint the list moving the data
492
488
                if len(temp_text.split(u'\n')) != len(after_text.split(u'\n')):
510
506
        if self.verseListWidget.rowCount() > 0:
511
507
            for row in range(self.verseListWidget.rowCount()):
512
508
                item = self.verseListWidget.item(row, 0)
513
 
                field = unicode(item.data(QtCore.Qt.UserRole).toString())
 
509
                field = item.data(QtCore.Qt.UserRole)
514
510
                verse_tag = VerseType.translated_name(field[0])
515
511
                verse_num = field[1:]
516
512
                verse_list += u'---[%s:%s]---\n' % (verse_tag, verse_num)
554
550
                        if parts.endswith(u'\n'):
555
551
                            parts = parts.rstrip(u'\n')
556
552
                        item = QtGui.QTableWidgetItem(parts)
557
 
                        item.setData(QtCore.Qt.UserRole,
558
 
                            QtCore.QVariant(verse_def))
 
553
                        item.setData(QtCore.Qt.UserRole, verse_def)
559
554
                        self.verseListWidget.setRowCount(
560
555
                            self.verseListWidget.rowCount() + 1)
561
556
                        self.verseListWidget.setItem(
578
573
        order = self.__extractVerseOrder(text)
579
574
        for index in range(self.verseListWidget.rowCount()):
580
575
            verse = self.verseListWidget.item(index, 0)
581
 
            verse = unicode(verse.data(QtCore.Qt.UserRole).toString())
 
576
            verse = verse.data(QtCore.Qt.UserRole)
582
577
            if verse not in verse_names:
583
578
                verses.append(verse)
584
579
                verse_names.append(u'%s%s' % (
619
614
        order = self.__extractVerseOrder(verse_order)
620
615
        for index in range(verse_count):
621
616
            verse = self.verseListWidget.item(index, 0)
622
 
            verse = unicode(verse.data(QtCore.Qt.UserRole).toString())
 
617
            verse = verse.data(QtCore.Qt.UserRole)
623
618
            if verse not in verse_names:
624
619
                verses.append(verse)
625
620
                verse_names.append(u'%s%s' % (
630
625
        if invalid_verses:
631
626
            valid = create_separated_list(verse_names)
632
627
            if len(invalid_verses) > 1:
633
 
                critical_error_message_box(message=unicode(translate(
 
628
                critical_error_message_box(message=translate(
634
629
                    'SongsPlugin.EditSongForm', 'The verse order is invalid. '
635
630
                    'There are no verses corresponding to %s. Valid entries '
636
 
                    'are %s.')) % (u', '.join(invalid_verses), valid))
 
631
                    'are %s.') % (u', '.join(invalid_verses), valid))
637
632
            else:
638
 
                critical_error_message_box(message=unicode(translate(
 
633
                critical_error_message_box(message=translate(
639
634
                    'SongsPlugin.EditSongForm', 'The verse order is invalid. '
640
635
                    'There is no verse corresponding to %s. Valid entries '
641
 
                    'are %s.')) % (invalid_verses[0], valid))
 
636
                    'are %s.') % (invalid_verses[0], valid))
642
637
        return len(invalid_verses) == 0
643
638
 
644
639
    def __validateSong(self):
675
670
                self.verseListWidget.rowCount())
676
671
            if not result:
677
672
                return False
678
 
        text = unicode(self.songBookComboBox.currentText())
 
673
        text = self.songBookComboBox.currentText()
679
674
        if self.songBookComboBox.findText(text, QtCore.Qt.MatchExactly) < 0:
680
675
            if QtGui.QMessageBox.question(self,
681
676
                translate('SongsPlugin.EditSongForm', 'Add Book'),
701
696
    def onMaintenanceButtonClicked(self):
702
697
        temp_song_book = None
703
698
        item = int(self.songBookComboBox.currentIndex())
704
 
        text = unicode(self.songBookComboBox.currentText())
 
699
        text = self.songBookComboBox.currentText()
705
700
        if item == 0 and text:
706
701
            temp_song_book = text
707
702
        self.mediaitem.songMaintenanceForm.exec_(True)
720
715
            A button (QPushButton).
721
716
        """
722
717
        log.debug(u'onPreview')
723
 
        if unicode(button.objectName()) == u'previewButton':
 
718
        if button.objectName() == u'previewButton':
724
719
            self.saveSong(True)
725
720
            Receiver.send_message(u'songs_preview')
726
721
 
730
725
        """
731
726
        filters = u'%s (*)' % UiStrings().AllFiles
732
727
        filenames = QtGui.QFileDialog.getOpenFileNames(self,
733
 
            translate('SongsPlugin.EditSongForm', 'Open File(s)'),
734
 
            QtCore.QString(), filters)
 
728
            translate('SongsPlugin.EditSongForm', 'Open File(s)'), u'', filters)
735
729
        for filename in filenames:
736
730
            item = QtGui.QListWidgetItem(os.path.split(unicode(filename))[1])
737
731
            item.setData(QtCore.Qt.UserRole, filename)
829
823
        # Song() is in a partially complete state.
830
824
        if not self.song:
831
825
            self.song = Song()
832
 
        self.song.title = unicode(self.titleEdit.text())
833
 
        self.song.alternate_title = unicode(self.alternativeEdit.text())
834
 
        self.song.copyright = unicode(self.copyrightEdit.text())
 
826
        self.song.title = self.titleEdit.text()
 
827
        self.song.alternate_title = self.alternativeEdit.text()
 
828
        self.song.copyright = self.copyrightEdit.text()
835
829
        # Values will be set when cleaning the song.
836
830
        self.song.search_title = u''
837
831
        self.song.search_lyrics = u''
838
832
        self.song.verse_order = u''
839
 
        self.song.comments = unicode(self.commentsEdit.toPlainText())
840
 
        ordertext = unicode(self.verseOrderEdit.text())
 
833
        self.song.comments = self.commentsEdit.toPlainText()
 
834
        ordertext = self.verseOrderEdit.text()
841
835
        order = []
842
836
        for item in ordertext.split():
843
837
            verse_tag = VerseType.Tags[VerseType.from_translated_tag(item[0])]
844
838
            verse_num = item[1:].lower()
845
839
            order.append(u'%s%s' % (verse_tag, verse_num))
846
840
        self.song.verse_order = u' '.join(order)
847
 
        self.song.ccli_number = unicode(self.CCLNumberEdit.text())
848
 
        self.song.song_number = unicode(self.songBookNumberEdit.text())
849
 
        book_name = unicode(self.songBookComboBox.currentText())
 
841
        self.song.ccli_number = self.CCLNumberEdit.text()
 
842
        self.song.song_number = self.songBookNumberEdit.text()
 
843
        book_name = self.songBookComboBox.currentText()
850
844
        if book_name:
851
845
            self.song.book = self.manager.get_object_filtered(Book,
852
846
                Book.name == book_name)
853
847
        else:
854
848
            self.song.book = None
855
 
        theme_name = unicode(self.themeComboBox.currentText())
 
849
        theme_name = self.themeComboBox.currentText()
856
850
        if theme_name:
857
851
            self.song.theme_name = theme_name
858
852
        else:
861
855
        self.song.authors = []
862
856
        for row in xrange(self.authorsListView.count()):
863
857
            item = self.authorsListView.item(row)
864
 
            authorId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
 
858
            authorId = (item.data(QtCore.Qt.UserRole))
865
859
            author = self.manager.get_object(Author, authorId)
866
860
            if author is not None:
867
861
                self.song.authors.append(author)
868
862
        self.song.topics = []
869
863
        for row in xrange(self.topicsListView.count()):
870
864
            item = self.topicsListView.item(row)
871
 
            topicId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
 
865
            topicId = (item.data(QtCore.Qt.UserRole))
872
866
            topic = self.manager.get_object(Topic, topicId)
873
867
            if topic is not None:
874
868
                self.song.topics.append(topic)
885
879
        files = []
886
880
        for row in xrange(self.audioListWidget.count()):
887
881
            item = self.audioListWidget.item(row)
888
 
            filename = unicode(item.data(QtCore.Qt.UserRole).toString())
 
882
            filename = item.data(QtCore.Qt.UserRole)
889
883
            if not filename.startswith(save_path):
890
884
                oldfile, filename = filename, os.path.join(save_path,
891
885
                    os.path.split(filename)[1])
922
916
            multiple = []
923
917
            for i in range(self.verseListWidget.rowCount()):
924
918
                item = self.verseListWidget.item(i, 0)
925
 
                verse_id = unicode(item.data(QtCore.Qt.UserRole).toString())
 
919
                verse_id = item.data(QtCore.Qt.UserRole)
926
920
                verse_tag = verse_id[0]
927
921
                verse_num = verse_id[1:]
928
 
                sxml.add_verse_to_lyrics(verse_tag, verse_num,
929
 
                    unicode(item.text()))
 
922
                sxml.add_verse_to_lyrics(verse_tag, verse_num, item.text())
930
923
                if verse_num > u'1' and verse_tag not in multiple:
931
924
                    multiple.append(verse_tag)
932
925
            self.song.lyrics = unicode(sxml.extract_xml(), u'utf-8')