Skip to content

Commit

Permalink
reloading preview on refresh click
Browse files Browse the repository at this point in the history
  • Loading branch information
cyril265 committed Jun 30, 2014
1 parent 66086e9 commit 0a627e1
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 25 deletions.
3 changes: 3 additions & 0 deletions src/main/java/de/bisquallisoft/twitch/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ public class App extends Application {

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setMinWidth(100.0);
primaryStage.setMinHeight(80.0);

URL location = getClass().getResource("/main.fxml");
FXMLLoader loader = new FXMLLoader(location);

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/de/bisquallisoft/twitch/FxScheduler.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,9 @@ public static void scheduleOnce(Duration waitTime, Runnable task) {
Timeline timeline = new Timeline(kf);
timeline.play();
}

public static void runAsync(Runnable task) {
Thread thread = new Thread(task);
thread.start();
}
}
49 changes: 24 additions & 25 deletions src/main/java/de/bisquallisoft/twitch/MainController.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.slf4j.LoggerFactory;

import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;

public class MainController implements Initializable {
Expand Down Expand Up @@ -63,42 +62,40 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
}
api = new TwitchApi(settings.getAuthToken());

loadStreams();
streamList.getSelectionModel().selectedItemProperty().addListener((observableValue, ov, nv) -> {
if (nv != null) setPreview(nv);
if (nv != null) {
previewImage.setImage(null);
setPreview(nv);
}
});
//refresh streams every 3 minutes
FxScheduler.schedule(Duration.minutes(3), () -> {
log.debug("refreshing streams");
Stream selectedItem = streamList.getSelectionModel().getSelectedItem();
streamList.getItems().setAll(api.getStreams());
if (!streamList.getItems().isEmpty()) {
if (selectedItem != null && streamList.getItems().contains(selectedItem)) {
streamList.getSelectionModel().select(selectedItem);
} else {
streamList.getSelectionModel().select(0);
}
}
refreshStreams();
});

streamLink.setOnAction(this::streamLinkAction);
Platform.runLater(streamList::requestFocus);
refreshStreams();
}

private void refreshStreams() {
Stream selectedItem = streamList.getSelectionModel().getSelectedItem();
streamList.getItems().setAll(api.getStreams());
if (!streamList.getItems().isEmpty()) {
if (selectedItem != null && streamList.getItems().contains(selectedItem)) {
streamList.getSelectionModel().select(selectedItem);
} else {
streamList.getSelectionModel().select(0);
}
}
}

void streamLinkAction(ActionEvent event) {
launchLivestreamer(streamLink.getText());
streamLink.setText("");
}

void loadStreams() {
List<Stream> streams = api.getStreams();
streamList.getItems().setAll(streams);

if (!streams.isEmpty()) {
streamList.getSelectionModel().select(0);
setPreview(streams.get(0));
}
}

@FXML
void previewClicked(MouseEvent event) {
Expand All @@ -114,15 +111,19 @@ void streamListClicked(MouseEvent event) {
}

private void setPreview(Stream stream) {
previewImage.setImage(new Image(stream.getPreviewImage()));
FxScheduler.runAsync(() -> {
Image img = new Image(stream.getPreviewImage());
Platform.runLater(() -> previewImage.setImage(img));
});

txtStreamStatus.setText(stream.getStatus());
txtViewers.setText(stream.getViewers() + "");
txtGame.setText(stream.getGame());
}

@FXML
void refreshPressed(ActionEvent event) {
streamList.getItems().setAll(api.getStreams());
refreshStreams();
}

private void launchLivestreamer(String url) {
Expand Down Expand Up @@ -167,7 +168,5 @@ private String authenticate(Window parent) {

void setPrimaryStage(Stage primaryStage) {
this.primaryStage = primaryStage;
primaryStage.setMinWidth(100.0);
primaryStage.setMinHeight(80.0);
}
}

0 comments on commit 0a627e1

Please sign in to comment.