diff --git a/src/com/ixab/ConfigHandling/Config.java b/src/com/ixab/ConfigHandling/Config.java index d59d619..d779e4e 100644 --- a/src/com/ixab/ConfigHandling/Config.java +++ b/src/com/ixab/ConfigHandling/Config.java @@ -6,8 +6,10 @@ import java.util.ArrayList; public class Config implements Serializable { private String LSPath; private ArrayList streamNames; + private ArrayList streamItems; public Config() { this.streamNames = new ArrayList(); + this.streamItems = new ArrayList(); } public void setLSPath(String path) { this.LSPath = path; @@ -17,19 +19,25 @@ public class Config implements Serializable { } public String getStreamName(int streamIndex) { - return this.streamNames.get(streamIndex); + return this.streamItems.get(streamIndex).getName(); + //return this.streamNames.get(streamIndex); } public void addStream(String streamName) { + this.streamItems.add(new StreamConfigItem(streamName)); this.streamNames.add(streamName); } - public void removeStream(Object streamName) { - this.streamNames.remove(streamName); + public void removeStream(Object stream) { + this.streamItems.remove(stream); + this.streamNames.remove(stream); } - public ArrayList getStreams() { - return this.streamNames; + public ArrayList getStreams() { + // public ArrayList getStreams() { + return this.streamItems; + // return this.streamNames; } public int getStreamCount() { - return this.streamNames.size(); + return this.streamItems.size(); + // return this.streamNames.size(); } } diff --git a/src/com/ixab/ConfigHandling/StreamConfig.java b/src/com/ixab/ConfigHandling/StreamConfig.java deleted file mode 100644 index a2c5379..0000000 --- a/src/com/ixab/ConfigHandling/StreamConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ixab.ConfigHandling; - -import com.ixab.StreamHandling.StreamInfo; - -public class StreamConfig { - private String name; - - public StreamConfig(String name) { - this.name = name; - } - - public String toString() { - return name; - } - - public String getInfo() { - StreamInfo.initStreamData(name); - StringBuilder sb = new StringBuilder(); - sb.append(name); - sb.append(" - "); - String status = StreamInfo.getStatus(); - sb.append(status); - if (!status.equals("offline")) { - sb.append(" playing "); - sb.append(StreamInfo.getGame()); - sb.append(" with "); - sb.append(StreamInfo.getViewers()); - sb.append(" Viewers"); - } - - return sb.toString(); - } -} diff --git a/src/com/ixab/ConfigHandling/StreamConfigItem.java b/src/com/ixab/ConfigHandling/StreamConfigItem.java new file mode 100644 index 0000000..0c920b7 --- /dev/null +++ b/src/com/ixab/ConfigHandling/StreamConfigItem.java @@ -0,0 +1,83 @@ +package com.ixab.ConfigHandling; + +import com.ixab.StreamHandling.StreamInfo; + +import java.awt.image.BufferedImage; +import java.io.Serializable; + +public class StreamConfigItem implements Serializable { + private String name; + private String title; + private boolean status; + private String category; + private int viewers; + private transient BufferedImage previewImage; + + public StreamConfigItem(String name) { + this.getInfo(); + this.name = name; + } + + private void getInfo() { + StreamInfo.initStreamData(this.name); + String s = StreamInfo.getStatus(); + if (s.equals("online")) { + this.status = true; + } else { + this.status = false; + } + this.viewers = Integer.parseInt(StreamInfo.getViewers()); + this.title = StreamInfo.getTitle(); + this.previewImage = StreamInfo.getPreviewImage(); + this.category = StreamInfo.getGame(); + } + public void refreshInfo() { + this.getInfo(); + } + + public String toString() { + return this.getInfoText(); + } + + public String getInfoText() { + StringBuilder sb = new StringBuilder(); + sb.append(this.name); + sb.append(" - "); + sb.append(this.getStatusString()); + if (this.status) { + //sb.append(" spielt "); + //sb.append(this.getCategory()); + sb.append(" mit "); + sb.append(this.getViewers()); + sb.append(" Zuschauern"); + } + + return sb.toString(); + } + + public String getName() { + return this.name; + } + public int getViewers() { + return this.viewers; + } + public String getCategory() { + return this.category; + } + public boolean getStatus() { + return this.status; + } + public String getStatusString() { + if (status) { + return "online"; + } else { + return "offline"; + } + } + public String getTitle() { + return this.title; + } + public BufferedImage getPreviewImage() { + return this.previewImage; + } +} diff --git a/src/com/ixab/GUI/AddStreamDialog.java b/src/com/ixab/GUI/AddStreamDialog.java index 0d07920..2d1fe00 100644 --- a/src/com/ixab/GUI/AddStreamDialog.java +++ b/src/com/ixab/GUI/AddStreamDialog.java @@ -49,7 +49,7 @@ public class AddStreamDialog extends JDialog { ConfigFileInstanceHandler.getConfig().addStream(textField1.getText()); ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig()); MainWindowGate.getMainWindow().lockStreamInfoGetter = true; - MainWindowGate.getMainWindow().initStreamsComboBox(); + MainWindowGate.getMainWindow().refreshStreamsComboBox(); MainWindowGate.getMainWindow().lockStreamInfoGetter = false; ErrorMessageGate.setErrorText("Stream \""+textField1.getText()+"\" hinzugefügt."); textField1.setText(""); diff --git a/src/com/ixab/GUI/MainWindow.java b/src/com/ixab/GUI/MainWindow.java index adeb281..af8682f 100644 --- a/src/com/ixab/GUI/MainWindow.java +++ b/src/com/ixab/GUI/MainWindow.java @@ -2,6 +2,7 @@ package com.ixab.GUI; import com.ixab.ConfigHandling.ConfigFileIOHandler; import com.ixab.ConfigHandling.ConfigFileInstanceHandler; +import com.ixab.ConfigHandling.StreamConfigItem; import com.ixab.StreamHandling.StreamInfo; import com.ixab.StreamHandling.StreamOpener; @@ -32,8 +33,39 @@ public class MainWindow { protected boolean lockStreamInfoGetter = false; public MainWindow() { + + //TODO: Updater thread + Runnable r = new Runnable() { + @Override + public void run() { + for (final StreamConfigItem sci : + ConfigFileInstanceHandler.getConfig().getStreams()) { + Runnable r2 = new Runnable() { + @Override + public void run() { + sci.refreshInfo(); + } + }; + Thread t2 = new Thread(r2); + t2.start(); + } + makeAPause(60000); + } + private void makeAPause(long time) { + try { + System.out.println("schläft "+time/1000.0+" sek"); + Thread.sleep(time); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }; + Thread t = new Thread(r); + t.start(); + + MainWindowGate.setMainWindow(this); - this.initComboBoxes(); + this.refreshComboBoxes(); buttonPlayStream.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -54,7 +86,7 @@ public class MainWindow { ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem()); ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig()); lockStreamInfoGetter = true; - initStreamsComboBox(); + refreshStreamsComboBox(); lockStreamInfoGetter = false; } }); @@ -89,13 +121,15 @@ public class MainWindow { Runnable r = new Runnable() { @Override public void run() { - StreamInfo.initStreamData(comboBoxStreams.getSelectedItem().toString()); - textFieldStreamStatus.setText(StreamInfo.getStatus()); - textFieldStreamGame.setText(StreamInfo.getGame()); - textFieldStreamViewers.setText(StreamInfo.getViewers()); - textFieldStreamTitle.setText(StreamInfo.getTitle()); - panelPreviewImage.getGraphics().drawImage(StreamInfo.getPreviewImage(),0,0,null); - ErrorMessageGate.setErrorText("Stream-Daten von "+comboBoxStreams.getSelectedItem().toString() + " geladen/aktualisiert."); + //StreamInfo.initStreamData(comboBoxStreams.getSelectedItem().toString()); + StreamConfigItem sci = (StreamConfigItem) comboBoxStreams.getSelectedItem(); + sci.refreshInfo(); + textFieldStreamStatus.setText(sci.getStatusString()); + textFieldStreamGame.setText(sci.getCategory()); + textFieldStreamViewers.setText(""+sci.getViewers()); // TODO: schöner machen + textFieldStreamTitle.setText(sci.getTitle()); + panelPreviewImage.getGraphics().drawImage(sci.getPreviewImage(),0,0,null); + ErrorMessageGate.setErrorText("Stream-Daten von "+sci.getName()+ " geladen/aktualisiert."); } }; Thread t = new Thread(r); @@ -107,18 +141,18 @@ public class MainWindow { AddStreamDialog as = new AddStreamDialog(); as.create(); } - private void initComboBoxes() { - initQualityComboBox(); - initStreamsComboBox(); + private void refreshComboBoxes() { + refreshQualityComboBox(); + refreshStreamsComboBox(); } - protected void initStreamsComboBox() { + protected void refreshStreamsComboBox() { comboBoxStreams.removeAllItems(); - for (String streamName : + for (StreamConfigItem stream : ConfigFileInstanceHandler.getConfig().getStreams()) { - comboBoxStreams.addItem(streamName); + comboBoxStreams.addItem(stream); } } - private void initQualityComboBox() { + private void refreshQualityComboBox() { comboBoxQuality.removeAllItems(); comboBoxQuality.addItem("best"); comboBoxQuality.addItem("high"); comboBoxQuality.addItem("medium"); comboBoxQuality.addItem("low"); comboBoxQuality.addItem("mobile"); } diff --git a/src/com/ixab/GUI/SettingsWindow.java b/src/com/ixab/GUI/SettingsWindow.java index 9d82cfe..e69117a 100644 --- a/src/com/ixab/GUI/SettingsWindow.java +++ b/src/com/ixab/GUI/SettingsWindow.java @@ -75,7 +75,7 @@ public class SettingsWindow extends JDialog { } ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig()); MainWindowGate.getMainWindow().lockStreamInfoGetter = true; - MainWindowGate.getMainWindow().initStreamsComboBox(); + MainWindowGate.getMainWindow().refreshStreamsComboBox(); MainWindowGate.getMainWindow().lockStreamInfoGetter = false; } buttonImportUserData.setText(old); diff --git a/src/com/ixab/StreamHandling/StreamInfo.java b/src/com/ixab/StreamHandling/StreamInfo.java index 88ca7c6..f7dc0a2 100644 --- a/src/com/ixab/StreamHandling/StreamInfo.java +++ b/src/com/ixab/StreamHandling/StreamInfo.java @@ -47,7 +47,7 @@ public class StreamInfo { } public static BufferedImage getPreviewImage() { if (streamPreviewData == null) { - BufferedImage c = new BufferedImage(1,1,0); + BufferedImage c = new BufferedImage(1,1,1); return c; } else { URL url = null;