Quellcode durchsuchen

merge, properly update playlist table

olinox vor 4 Jahren
Ursprung
Commit
0985d43509

+ 1 - 1
ui/qt/dlg_meta_editor_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'dlg_meta_editor.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 1 - 1
ui/qt/dlg_playlist_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'dlg_playlist.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 1 - 1
ui/qt/dlg_select_playlist_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'dlg_select_playlist.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 1 - 1
ui/qt/dlg_tag_editor_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'dlg_tag_editor.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 1 - 1
ui/qt/dlg_tag_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'dlg_tag.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 14 - 2
ui/qt/main.ui

@@ -216,6 +216,11 @@
                     <string>Titre</string>
                    </property>
                   </column>
+                  <column>
+                   <property name="text">
+                    <string>order</string>
+                   </property>
+                  </column>
                  </widget>
                 </item>
                 <item>
@@ -413,7 +418,7 @@
                   <property name="currentIndex">
                    <number>0</number>
                   </property>
-                  <property name="placeholderText" stdset="0">
+                  <property name="placeholderText">
                    <string>(Filtrer par étiquette)</string>
                   </property>
                   <item>
@@ -962,6 +967,8 @@
                              </property>
                              <property name="font">
                               <font>
+                               <family>Verdana</family>
+                               <pointsize>8</pointsize>
                                <weight>75</weight>
                                <bold>true</bold>
                               </font>
@@ -1299,7 +1306,7 @@
                    <bool>false</bool>
                   </property>
                   <property name="dragDropMode">
-                   <enum>QAbstractItemView::InternalMove</enum>
+                   <enum>QAbstractItemView::NoDragDrop</enum>
                   </property>
                   <property name="defaultDropAction">
                    <enum>Qt::MoveAction</enum>
@@ -1343,6 +1350,11 @@
                     <string>Label</string>
                    </property>
                   </column>
+                  <column>
+                   <property name="text">
+                    <string>order</string>
+                   </property>
+                  </column>
                  </widget>
                 </item>
                 <item>

+ 15 - 5
ui/qt/main_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'main.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.
@@ -94,7 +94,7 @@ class Ui_mainWindow(object):
         self.sessionPlaylist.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
         self.sessionPlaylist.setIconSize(QtCore.QSize(8, 8))
         self.sessionPlaylist.setObjectName("sessionPlaylist")
-        self.sessionPlaylist.setColumnCount(3)
+        self.sessionPlaylist.setColumnCount(4)
         self.sessionPlaylist.setRowCount(0)
         item = QtWidgets.QTableWidgetItem()
         self.sessionPlaylist.setHorizontalHeaderItem(0, item)
@@ -102,6 +102,8 @@ class Ui_mainWindow(object):
         self.sessionPlaylist.setHorizontalHeaderItem(1, item)
         item = QtWidgets.QTableWidgetItem()
         self.sessionPlaylist.setHorizontalHeaderItem(2, item)
+        item = QtWidgets.QTableWidgetItem()
+        self.sessionPlaylist.setHorizontalHeaderItem(3, item)
         self.sessionPlaylist.horizontalHeader().setVisible(False)
         self.sessionPlaylist.horizontalHeader().setStretchLastSection(True)
         self.sessionPlaylist.verticalHeader().setVisible(False)
@@ -363,6 +365,8 @@ class Ui_mainWindow(object):
         palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
         self.label_14.setPalette(palette)
         font = QtGui.QFont()
+        font.setFamily("Verdana")
+        font.setPointSize(8)
         font.setBold(True)
         font.setWeight(75)
         self.label_14.setFont(font)
@@ -486,14 +490,14 @@ class Ui_mainWindow(object):
         self.explorerPlaylist.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
         self.explorerPlaylist.setDragEnabled(True)
         self.explorerPlaylist.setDragDropOverwriteMode(False)
-        self.explorerPlaylist.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
+        self.explorerPlaylist.setDragDropMode(QtWidgets.QAbstractItemView.NoDragDrop)
         self.explorerPlaylist.setDefaultDropAction(QtCore.Qt.MoveAction)
         self.explorerPlaylist.setAlternatingRowColors(True)
         self.explorerPlaylist.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
         self.explorerPlaylist.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
         self.explorerPlaylist.setIconSize(QtCore.QSize(8, 8))
         self.explorerPlaylist.setObjectName("explorerPlaylist")
-        self.explorerPlaylist.setColumnCount(3)
+        self.explorerPlaylist.setColumnCount(4)
         self.explorerPlaylist.setRowCount(0)
         item = QtWidgets.QTableWidgetItem()
         self.explorerPlaylist.setHorizontalHeaderItem(0, item)
@@ -501,6 +505,8 @@ class Ui_mainWindow(object):
         self.explorerPlaylist.setHorizontalHeaderItem(1, item)
         item = QtWidgets.QTableWidgetItem()
         self.explorerPlaylist.setHorizontalHeaderItem(2, item)
+        item = QtWidgets.QTableWidgetItem()
+        self.explorerPlaylist.setHorizontalHeaderItem(3, item)
         self.explorerPlaylist.horizontalHeader().setVisible(False)
         self.explorerPlaylist.horizontalHeader().setStretchLastSection(True)
         self.explorerPlaylist.verticalHeader().setVisible(True)
@@ -717,12 +723,14 @@ class Ui_mainWindow(object):
         item.setText(_translate("mainWindow", "track_id"))
         item = self.sessionPlaylist.horizontalHeaderItem(2)
         item.setText(_translate("mainWindow", "Titre"))
+        item = self.sessionPlaylist.horizontalHeaderItem(3)
+        item.setText(_translate("mainWindow", "order"))
         self.btnSessionStart.setText(_translate("mainWindow", "Lancer la séance"))
         self.label_3.setText(_translate("mainWindow", "Mes musiques"))
         self.btnExplorerRefresh.setToolTip(_translate("mainWindow", "Rafraichir la liste"))
         self.explorerBtnSearch.setText(_translate("mainWindow", "..."))
         self.explorerLineSearch.setPlaceholderText(_translate("mainWindow", "Rechercher un morceau..."))
-        self.explorerFilterTags.setProperty("placeholderText", _translate("mainWindow", "(Filtrer par étiquette)"))
+        self.explorerFilterTags.setPlaceholderText(_translate("mainWindow", "(Filtrer par étiquette)"))
         self.explorerFilterTags.setItemText(0, _translate("mainWindow", "Toutes les étiquettes"))
         self.explorerTable.headerItem().setText(1, _translate("mainWindow", "2"))
         self.label_2.setText(_translate("mainWindow", "Sélectionnez une piste"))
@@ -753,6 +761,8 @@ class Ui_mainWindow(object):
         item.setText(_translate("mainWindow", "track_id"))
         item = self.explorerPlaylist.horizontalHeaderItem(2)
         item.setText(_translate("mainWindow", "Label"))
+        item = self.explorerPlaylist.horizontalHeaderItem(3)
+        item.setText(_translate("mainWindow", "order"))
         self.btnPlaylistMoveToTop.setText(_translate("mainWindow", "..."))
         self.btnPlaylistMoveUp.setText(_translate("mainWindow", "..."))
         self.btnPlaylistMoveDown.setText(_translate("mainWindow", "..."))

Datei-Diff unterdrückt, da er zu groß ist
+ 1697 - 2170
ui/qt/rsc_rc.py


+ 1 - 1
ui/qt/widgets/frame_notes_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'widgets/frame_notes.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 38 - 13
ui/qt/widgets/playlist_table.py

@@ -23,39 +23,64 @@ class PlaylistTable(DragDropTableWidget):
         if not self.playlist:
             return
 
-        session_track_repo = SessionTrackRepository()
-        track_repo = TrackRepository()
-
-        self.clear()
         self.hideColumn(0)
         self.hideColumn(1)
+        self.hideColumn(3)
+
+        self.clear()
+        self.update()
+
+    def update(self):
+        if not self.playlist:
+            raise RuntimeError("No playlist loaded")
+
+        self.setUpdatesEnabled(False)
+
+        session_track_repo = SessionTrackRepository()
+        track_repo = TrackRepository()
 
         session_tracks = session_track_repo.get_by_session_id(self.playlist.id)
 
         if not session_tracks:
-            # self.insertRow(0)
-            # self.setItem(0, 2, QTableWidgetItem("(la liste est vide, ajoutez y vos morceaux)"))
             return
 
+        loaded = {self.item(row, 0).data(0): row for row in self.rows()}
+
+        for session_track_id, row in loaded.items():
+            if session_track_id not in [st.id for st in session_tracks]:
+                self.removeRow(row)
+
         i = 0
         for session_track in session_tracks:
             track = track_repo.get_by_id(session_track.track_id)
 
-            self.insertRow(i)
+            if session_track.id in loaded:
+                row = loaded[session_track.id]
+            else:
+                row = self.rowCount()
+                self.insertRow(row)
 
-            item = QTableWidgetItem()
-            item.setData(0, session_track.id)
-            self.setItem(i, 0, item)
+                item = QTableWidgetItem()
+                item.setData(0, session_track.id)
+                self.setItem(i, 0, item)
 
             item = QTableWidgetItem()
             item.setData(0, track.id)
-            self.setItem(i, 1, item)
+            self.setItem(row, 1, item)
+
+            self.setItem(row, 2, QTableWidgetItem(track.title))
 
-            self.setItem(i, 2, QTableWidgetItem(track.title))
+            item = QTableWidgetItem()
+            item.setData(0, session_track.order)
+            self.setItem(row, 3, item)
 
             i += 1
         self.count = i
 
+        self.sortItems(3)
+
+        self.setUpdatesEnabled(True)
+
     def clear(self):
         while self.rowCount():
             self.removeRow(0)
@@ -92,7 +117,7 @@ class PlaylistTable(DragDropTableWidget):
     def update_session_track_order(self, session_track, new_order):
         session_track_repo = SessionTrackRepository()
         session_track_repo.set_session_track_order(session_track, new_order, True)
-        self.populate()
+        self.update()
 
     def move_selected_up(self, track):
         session_track = self.selected_session_track()

+ 1 - 1
ui/qt/widgets/vlcframe_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'widgets/vlcframe.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.2
+# Created by: PyQt5 UI code generator 5.15.4
 #
 # WARNING: Any manual changes made to this file will be lost when pyuic5 is
 # run again.  Do not edit this file unless you know what you are doing.

+ 4 - 5
ui/window.py

@@ -172,7 +172,6 @@ class MainWindow(QMainWindow):
         self.ui.explorerTrackTagsTable.populate(track)
         self.ui.explorerTrackMetaStack.setCurrentIndex(1)
 
-
         # Commands
         if self.selected_track.status == Track.STATUS_UNAVAILABLE:
             self.ui.frameMissingFileWarning.setVisible(True)
@@ -326,8 +325,8 @@ class MainWindow(QMainWindow):
             track.id,
             playlist.id
         )
-        self.ui.explorerPlaylist.populate(playlist)
-        self.ui.sessionPlaylist.populate(playlist)
+        self.ui.explorerPlaylist.update()
+        self.ui.sessionPlaylist.update()
 
     def remove_from_playlist(self):
         session_track = self.ui.explorerPlaylist.selected_session_track()
@@ -335,8 +334,8 @@ class MainWindow(QMainWindow):
             return
         session_track_repo = SessionTrackRepository()
         session_track_repo.delete(session_track, True)
-        self.ui.explorerPlaylist.populate()
-        self.ui.sessionPlaylist.populate()
+        self.ui.explorerPlaylist.update()
+        self.ui.sessionPlaylist.update()
 
     def play_playlist(self, track=None):
 

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.