Переглянути джерело

chheckpoint-commit für rebuild JukeBox

LH 6 роки тому
батько
коміт
4caa5d35a8

+ 3 - 11
iZplPlugins/JukeBox/src/main/java/de/nplusc/izc/izpl/plugins/jukebox/JukeBox.java

@@ -44,7 +44,7 @@ public class JukeBox extends javax.swing.JFrame implements UIPlugin,MouseListene
     /**
      * Creates new form JukeBoxGUI
      */
-    public JukeBox()
+    public JukeBox(JukeBoxPlugin p)
     {
     }
 
@@ -456,6 +456,7 @@ public class JukeBox extends javax.swing.JFrame implements UIPlugin,MouseListene
         // selectedPlaybackPlugin.registerVideoSurface(videoPanel);
         //TODO: HAX für RPi mit ProjectM-SDL/PulseAudio fullscreen. 
         // HW-Incompat, Requires different HW
+        jukeboxBackend.reload();
         rebuildTable(false);
     }
     
@@ -514,16 +515,7 @@ public class JukeBox extends javax.swing.JFrame implements UIPlugin,MouseListene
     @Override
     public void parseParameter(String param)
     {
-        if(param!=null&&!param.equals(""))
-        {
-            jukeboxBackend = new RemoteBackend(param, this);
-            jukeboxBackend.initBackend();
-            openUserInterface();
-        }
-        else
-        {
-            l.error("Invalid parameter");
-        }
+
     }
 
     @Override

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

@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2018 iZc
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.nplusc.izc.izpl.plugins.jukebox;
+
+import de.nplusc.izc.iZpl.API.FeaturePlugin;
+import de.nplusc.izc.iZpl.API.UIPlugin;
+import java.awt.Image;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ *
+ * @author iZc <nplusc.de>
+ */
+public class JukeBoxPlugin implements UIPlugin,FeaturePlugin
+{
+    
+    private Backend jukeboxBackend;
+    private static final Logger l = LogManager.getLogger();
+    private JukeBox jukebox;
+    
+    
+    @Override
+    public void setAlbumArt(Image image)
+    {
+        
+    }
+
+    @Override
+    public void setTrackLength(int i)
+    {
+        //jukeboxBackend.
+    }
+
+    @Override
+    public void setPlaybackPositionInSeconds(int i)
+    {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void setVisible(boolean bln)
+    {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void setTrackName(String string)
+    {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void loadPlayListEditScreen()
+    {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void initializeUI()
+    {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void refreshScheduledItemList()
+    {
+        UIPlugin.super.refreshScheduledItemList(); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void reloadPlayList()
+    {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public String getPluginName()
+    {
+        return "JukeBox";
+    }
+
+    @Override
+    public void initializePlugin()
+    {
+        if(APIWrapper.getUiPlugin()==this)
+        {
+            l.info("Init UI(JukeBox)");
+            jukebox = new JukeBox(this);
+            jukeboxBackend= new LocalBackend(jukebox);
+        }
+        else
+        {
+            l.info("Loaded as featurePlugin or standalone, delaying the init");
+        }
+    }
+
+    @Override
+    public void prepareUpgrade()
+    {
+        
+    }
+
+    @Override
+    public void parseParameter(String param)
+    {
+        if(param!=null&&!param.equals(""))
+        {
+            jukebox = new JukeBox(this);
+            jukeboxBackend = new RemoteBackend(param, jukebox);
+            jukeboxBackend.initBackend();
+            openUserInterface();
+        }
+        else
+        {
+            l.error("Invalid parameter");
+        }
+    }
+
+    @Override
+    public boolean hasUserInterface()
+    {
+        return true;
+    }
+
+    @Override
+    public void openUserInterface()
+    {
+        //TODO Dialog für IP-abfrage bei GUI-launch
+        jukebox.openUserInterface();
+    }
+
+    @Override
+    public boolean requiresLoadedPlayList()
+    {
+        return false;
+    }
+    
+}

+ 4 - 3
iZplPlugins/JukeBox/src/main/java/de/nplusc/izc/izpl/plugins/jukebox/JukeboxClientHandler.java

@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.net.Socket;
+import java.nio.charset.Charset;
 import java.util.HashMap;
 import java.util.List;
 import org.apache.logging.log4j.LogManager;
@@ -42,14 +43,14 @@ public class JukeboxClientHandler
     public JukeboxClientHandler(Socket s,JukeboxServer srv)
     {
         sck=s;
-        srv=this.srv;
+        this.srv=srv;
     }
     
     public void start()
     {
         try {
-            BufferedReader r = new BufferedReader(new InputStreamReader(sck.getInputStream()));
-            PrintStream out = new PrintStream(sck.getOutputStream());
+            BufferedReader r = new BufferedReader(new InputStreamReader(sck.getInputStream(),Charset.forName("UTF-8")));
+            PrintStream out = new PrintStream(sck.getOutputStream(),true,"UTF-8");
             Thread t = new Thread(()->{
                 while(sck.isConnected())
                 {

+ 7 - 0
iZplPlugins/JukeBox/src/main/java/de/nplusc/izc/izpl/plugins/jukebox/LocalBackend.java

@@ -36,6 +36,7 @@ public class LocalBackend implements Backend
     private PlaybackPlugin selectedPlaybackPlugin;
     private static final Logger l = LogManager.getLogger();
     private PlaybackStatusUpdater u;
+    private PlaybackStatusUpdater server;
     public LocalBackend(PlaybackStatusUpdater frontend)
     {
         u=frontend;
@@ -52,6 +53,8 @@ public class LocalBackend implements Backend
     public void skip()
     {
         selectedPlaybackPlugin.skipTitle();
+        u.setPlayStatus(true);
+        server.setPlayStatus(true);
     }
 
     @Override
@@ -83,12 +86,16 @@ public class LocalBackend implements Backend
     public void play()
     {
         selectedPlaybackPlugin.play();
+        u.setPlayStatus(true);
+        server.setPlayStatus(true);
     }
 
     @Override
     public void pause()
     {
         selectedPlaybackPlugin.pause();
+        u.setPlayStatus(false);
+        server.setPlayStatus(false);
     }
 
     @Override

+ 6 - 5
iZplPlugins/JukeBox/src/main/java/de/nplusc/izc/izpl/plugins/jukebox/RemoteBackend.java

@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.net.Socket;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -73,8 +74,8 @@ public class RemoteBackend implements Backend
         try {
             sck=new Socket(targetIP, JukeBox.JUKEBOX_PORT);
             try {
-                BufferedReader r = new BufferedReader(new InputStreamReader(sck.getInputStream()));
-                PrintStream out = new PrintStream(sck.getOutputStream());
+                BufferedReader r = new BufferedReader(new InputStreamReader(sck.getInputStream(),Charset.forName("UTF-8")));
+                PrintStream out = new PrintStream(sck.getOutputStream(),true,"UTF-8");
                 Thread t = new Thread(()->{
                     while(sck.isConnected())
                     {
@@ -145,6 +146,7 @@ public class RemoteBackend implements Backend
         {   
             ex.printStackTrace();
         }
+       
     }
 
     @Override
@@ -163,19 +165,19 @@ public class RemoteBackend implements Backend
     public void reload()
     {
         sendCommand("reload", null);
+        sendCommand("getTitles", null); //TODO
+        sendCommand("getScheduled", null); //TODO
     }
 
     @Override
     public String[] getTitles() throws InvalidPlayListFileException
     {
-        sendCommand("getTitles", null); //TODO
         return titles; 
     }
 
     @Override
     public List<String> getScheduledTracks()
     {
-        sendCommand("getScheduled", null); //TODO
         return schedule;
     }
 
@@ -196,7 +198,6 @@ public class RemoteBackend implements Backend
         request.setData(data);
         synchronized(targetIP)
          {
-             System.out.println("POKE");
              returnMsg=new Yaml().dump(request)+"\n---\n";
              targetIP.notify();
          }

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

@@ -24,7 +24,7 @@ public class StandaloneMain
 {
     public static void main(String[] args)
     {
-        JukeBox jbx = new JukeBox();
+        JukeBoxPlugin jbx = new JukeBoxPlugin();
         jbx.parseParameter(args[0]);
     }
 }