Pārlūkot izejas kodu

Merge branch 'BenjaminHae-sortable'

Andrew Karpow 6 gadi atpakaļ
vecāks
revīzija
265577c5ab
5 mainītis faili ar 44 papildinājumiem un 1 dzēšanām
  1. 1 0
      htdocs/index.html
  2. 4 0
      htdocs/js/jquery-ui-sortable.min.js
  3. 30 1
      htdocs/js/mpd.js
  4. 8 0
      src/mpd_client.c
  5. 1 0
      src/mpd_client.h

+ 1 - 0
htdocs/index.html

@@ -344,6 +344,7 @@
   <script src="js/bootstrap-notify.js"></script>
   <script src="js/bootstrap-slider.js"></script>
   <script src="js/sammy.js"></script>
+  <script src="js/jquery-ui-sortable.min.js"></script>
   <script src="js/mpd.js"></script>
 </body>
 </html>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4 - 0
htdocs/js/jquery-ui-sortable.min.js


+ 30 - 1
htdocs/js/mpd.js

@@ -229,7 +229,7 @@ function webSocketConnect() {
                         "</td><td></td></tr>");
                     }
 
-                    if(obj.data[obj.data.length-1].pos + 1 >= pagination + MAX_ELEMENTS_PER_PAGE)
+                    if(obj.data.length && obj.data[obj.data.length-1].pos + 1 >= pagination + MAX_ELEMENTS_PER_PAGE)
                         $('#next').removeClass('hide');
                     if(pagination > 0)
                         $('#prev').removeClass('hide');
@@ -273,6 +273,22 @@ function webSocketConnect() {
                             $(this).addClass('active');
                         },
                     });
+                    //Helper function to keep table row from collapsing when being sorted
+                    var fixHelperModified = function(e, tr) {
+                      var $originals = tr.children();
+                      var $helper = tr.clone();
+                      $helper.children().each(function(index)
+                      {
+                        $(this).width($originals.eq(index).width())
+                      });
+                      return $helper;
+                    };
+                    
+                    //Make queue table sortable
+                    $("#salamisandwich > tbody").sortable({
+                      helper: fixHelperModified,
+                      stop: function(event,ui) {renumber_table('#salamisandwich',ui.item)}
+                    }).disableSelection();
                     break;
                 case "search":
                     $('#wait').modal('hide');
@@ -284,6 +300,9 @@ function webSocketConnect() {
                      * some browsers, such as Safari, from changing the normalization form of the
                      * URI from NFD to NFC, breaking our link with MPD.
                      */
+                    if ($('#salamisandwich > tbody').is(':ui-sortable')) {
+                        $('#salamisandwich > tbody').sortable('destroy');
+                    }
                     for (var item in obj.data) {
                         switch(obj.data[item].type) {
                             case "directory":
@@ -646,6 +665,16 @@ function trash(tr) {
     };
 }
 
+function renumber_table(tableID,item) {
+    was = item.children("td").first().text();//Check if first item exists!
+    is = item.index() + 1;//maybe add pagination
+
+    if (was != is) {
+        socket.send("MPD_API_MOVE_TRACK," + was + "," + is);
+        socket.send('MPD_API_GET_QUEUE,'+pagination);
+    }
+}
+
 function basename(path) {
     return path.split('/').reverse()[0];
 }

+ 8 - 0
src/mpd_client.c

@@ -97,6 +97,14 @@ int callback_mpd(struct mg_connection *c)
             if(sscanf(c->content, "MPD_API_RM_RANGE,%u,%u", &uint_buf, &uint_buf_2))
                 mpd_run_delete_range(mpd.conn, uint_buf, uint_buf_2);
             break;
+        case MPD_API_MOVE_TRACK:
+            if (sscanf(c->content, "MPD_API_MOVE_TRACK,%u,%u", &uint_buf, &uint_buf_2) == 2)
+            {
+                uint_buf -= 1;
+                uint_buf_2 -= 1;
+                mpd_run_move(mpd.conn, uint_buf, uint_buf_2);
+            }
+            break;
         case MPD_API_PLAY_TRACK:
             if(sscanf(c->content, "MPD_API_PLAY_TRACK,%u", &uint_buf))
                 mpd_run_play_id(mpd.conn, uint_buf);

+ 1 - 0
src/mpd_client.h

@@ -48,6 +48,7 @@
     X(MPD_API_RM_TRACK) \
     X(MPD_API_RM_RANGE) \
     X(MPD_API_RM_ALL) \
+    X(MPD_API_MOVE_TRACK) \
     X(MPD_API_SEARCH) \
     X(MPD_API_SET_VOLUME) \
     X(MPD_API_SET_PAUSE) \

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels