Bladeren bron

fixes for some quirks and a Quit pseudoitem

masterX244 2 jaren geleden
bovenliggende
commit
632a6473ad

+ 7 - 0
iZpl/build.gradle

@@ -24,6 +24,13 @@ jar {
     }
 }
 
+java {
+    toolchain {
+        sourceCompatibility = JavaLanguageVersion.of(17)
+        targetCompatibility = JavaLanguageVersion.of(17)
+    }
+}
+
 startScripts {
     doLast {
         defaultJvmOpts = ["-Dlog4j.skipJansi=false", "-javaagent:#HACKHACKHACK#/lib/jar-loader.jar"]

+ 8 - 22
iZpl/src/main/java/de/nplusc/izc/iZpl/API/PlayListEditAPI.java

@@ -166,21 +166,14 @@ public class PlayListEditAPI
                 Main.getPLServer().getPlProcessorV2().getPool().remove(k);
                 throw new InvalidPlayListFileException("Statefile corrupted");
             }
-            if(x instanceof MultiPlayListItem)
+            String t = (x).getTitle();
+            if(t!=null && !t.equals(""))
             {
-                tt[i] = ((MultiPlayListItem)x).getSrc();
+                tt[i] = t.split(",")[1];
             }
             else
             {
-                String t = ((SinglePlayListItem) x).getTitle();
-                if(t!=null && !t.equals(""))
-                {
-                    tt[i] = t.split(",")[1];
-                }
-                else
-                {
-                    tt[i] =((SinglePlayListItem) x).getPath();
-                }
+                tt[i] =((SinglePlayListItem) x).getPath();
             }
         }
         return tt;
@@ -188,21 +181,14 @@ public class PlayListEditAPI
     
     public static String getTitle(PlayListItem x)
     {
-        if(x instanceof MultiPlayListItem)
+        String t = (x).getTitle();
+        if(t!=null && !t.equals(""))
         {
-            return ((MultiPlayListItem)x).getSrc();
+            return t.split(",",2)[1];
         }
         else
         {
-            String t = ((SinglePlayListItem) x).getTitle();
-            if(t!=null && !t.equals(""))
-            {
-                return t.split(",",2)[1];
-            }
-            else
-            {
-                return((SinglePlayListItem) x).getPath();
-            }
+            return((SinglePlayListItem) x).getPath();
         }
     }
     

+ 5 - 1
iZpl/src/main/java/de/nplusc/izc/iZpl/Main.java

@@ -759,7 +759,11 @@ public class Main extends javax.swing.JFrame
         l.trace("<<<");
         String time = new Date(System.currentTimeMillis()).toString();
         l.info("IZPL-Core:Checkpoint erstellen:" + time);
-        if (!(stts.forcePregen || isShittyPlayer))
+        if(ps.ppp.isFileChooserMode())
+        {
+            quickQuit();
+        }
+        else if (!(stts.forcePregen || isShittyPlayer))
         {
             FileWriter fw = null;
             try {

+ 20 - 3
iZpl/src/main/java/de/nplusc/izc/iZpl/PlProcessorV2.java

@@ -17,6 +17,7 @@
 
 package de.nplusc.izc.iZpl;
 
+import de.nplusc.izc.iZpl.API.shared.ActionPlayListItem;
 import de.nplusc.izc.iZpl.API.shared.PlayListItem;
 import com.sun.net.httpserver.Headers;
 import com.sun.net.httpserver.HttpExchange;
@@ -24,6 +25,7 @@ import com.sun.net.httpserver.HttpHandler;
 import de.nplusc.izc.iZpl.API.IZPLApi;
 import de.nplusc.izc.iZpl.API.shared.InvalidPlayListFileException;
 import de.nplusc.izc.iZpl.API.shared.SinglePlayListItem;
+import de.nplusc.izc.iZpl.Utils.QuitterFakePlaylistItem;
 import de.nplusc.izc.iZpl.Utils.shared.PLFileIO;
 import java.io.File;
 import java.io.IOException;
@@ -63,7 +65,9 @@ public class PlProcessorV2 implements HttpHandler
     private HashMap<String,Object> options;
     private WatchService observer;
     private final Object lock;
-    
+
+    private static final QuitterFakePlaylistItem quitter = new QuitterFakePlaylistItem();
+
     public PlProcessorV2()
     {
         lock = new Object();
@@ -153,8 +157,12 @@ public class PlProcessorV2 implements HttpHandler
         PlProcessorV2.failRSP = failRSP;
     }
     //</editor-fold>
-    
-    
+
+
+    public boolean isFileChooserMode() {
+        return FileChooserMode;
+    }
+
     public void InitializeOnPath(String PlPath)
     {
         if(PlPath.equals("///")) //abusing a invalid path for
@@ -263,7 +271,9 @@ public class PlProcessorV2 implements HttpHandler
                 }
             }
         }
+        lst.sort((x,y)->{return x.getTitle().compareTo(y.getTitle());});
         l.trace(yp.dump(lst));
+        lst.add(quitter);
         return lst;
     }
 
@@ -391,6 +401,7 @@ public class PlProcessorV2 implements HttpHandler
             {
                 pool = poolTemp;
             }
+            pool.putIfAbsent(quitter+"",quitter);
             l.trace("><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><");
             l.trace("<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>");
             l.trace("><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><");
@@ -488,6 +499,12 @@ public class PlProcessorV2 implements HttpHandler
                 response=forceList.get(0);
                 forceList.remove(0);
             }
+            if(response instanceof ActionPlayListItem) //magic unused path
+            {
+                ((ActionPlayListItem) response).executeAction();
+            }
+
+
             history.add(response);
             if(history.size()>1000)
             {

+ 71 - 0
iZpl/src/main/java/de/nplusc/izc/iZpl/Utils/QuitterFakePlaylistItem.java

@@ -0,0 +1,71 @@
+package de.nplusc.izc.iZpl.Utils;
+
+import de.nplusc.izc.iZpl.API.IZPLApi;
+import de.nplusc.izc.iZpl.API.shared.ActionPlayListItem;
+
+public class QuitterFakePlaylistItem  implements ActionPlayListItem {
+    @Override
+    public void executeAction() {
+        IZPLApi.shutdownWithSave();
+    }
+
+    @Override
+    public String getM3UElement() {
+        return "";
+    }
+
+    @Override
+    public int getTargetPlaycount() {
+        return 0;
+    }
+
+    @Override
+    public void setTargetPlaycount(int playcount) {
+        //dud, not useful since this is a fake actionitem
+    }
+
+    @Override
+    public int getCountPlayed() {
+        return 0;
+    }
+
+    @Override
+    public void setCountPlayed(int countPlayed) {
+        //dud, not useful since this is a fake actionitem
+    }
+
+    @Override
+    public boolean isIncludeElement() {
+        return false;
+    }
+
+    @Override
+    public boolean noexpandoninclude() {
+        return false;
+    }
+
+    @Override
+    public int getGID() {
+        return 0;
+    }
+
+    @Override
+    public String getPath() {
+        return "/dev/null";
+    }
+
+    @Override
+    public String[] getPrefix() {
+        return new String[0];
+    }
+
+    @Override
+    public String[] getInnerCommentLines() {
+        return new String[0];
+    }
+
+    @Override
+    public String getTitle() {
+        return "0,\u200bQuit";
+    }
+}

+ 12 - 0
iZplPlugins/JukeBox/build.gradle

@@ -8,6 +8,18 @@ apply from: "$rootDir/utils/IO.gradle"
 version = '0.11.0.0-SNAPSHOT'
 mainClassName = 'de.nplusc.izc.izpl.plugins.jukebox.StandaloneMain'
 
+
+
+java {
+    toolchain {
+        sourceCompatibility = JavaLanguageVersion.of(17)
+        targetCompatibility = JavaLanguageVersion.of(17)
+    }
+}
+
+
+
+
 //task distZip(dependsOn: 'jar') {
 //	//NO-OPtask als redirect
 //}

+ 2 - 1
iZplPlugins/JukeBox/src/main/java/de/nplusc/izc/izpl/plugins/jukebox/JukeBoxPlugin.java

@@ -17,6 +17,7 @@
 package de.nplusc.izc.izpl.plugins.jukebox;
 
 import de.nplusc.izc.iZpl.API.FeaturePlugin;
+import de.nplusc.izc.iZpl.API.IZPLApi;
 import de.nplusc.izc.iZpl.API.UIPlugin;
 import java.awt.Image;
 import org.apache.logging.log4j.LogManager;
@@ -53,7 +54,7 @@ public class JukeBoxPlugin implements UIPlugin, FeaturePlugin
     @Override
     public void setVisible(boolean visible)
     {
-        frontend.setVisible(visible);
+        frontend.setVisible(visible&&!IZPLApi.suppressGUI());
     }
 
     @Override

+ 5 - 0
izpl-shared/src/main/java/de/nplusc/izc/iZpl/API/shared/ActionPlayListItem.java

@@ -0,0 +1,5 @@
+package de.nplusc.izc.iZpl.API.shared;
+
+public interface ActionPlayListItem extends PlayListItem{
+    void executeAction();
+}

+ 4 - 0
izpl-shared/src/main/java/de/nplusc/izc/iZpl/API/shared/MultiPlayListItem.java

@@ -148,6 +148,10 @@ public class MultiPlayListItem implements PlayListItem
         return sret;
     }
 
+    @Override
+    public String getTitle() {
+        return "0,"+getSrc();
+    }
 
     @Override
     public int hashCode()

+ 2 - 0
izpl-shared/src/main/java/de/nplusc/izc/iZpl/API/shared/PlayListItem.java

@@ -30,6 +30,8 @@ public interface PlayListItem
     public boolean isIncludeElement(); //erweiterung um daten durchzuschleusen für die TreeView
     public boolean noexpandoninclude();
     public int getGID();
+
+    public String getTitle();
     public String getPath();
     public String[] getPrefix();
     public String[] getInnerCommentLines();