|
@@ -3,22 +3,22 @@ use mpd::status::State;
|
|
|
use mpd::idle;
|
|
|
use mpd::idle::Idle;
|
|
|
use std::thread;
|
|
|
-use ui::widget;
|
|
|
-use ui::widget::Widget;
|
|
|
+use ui::draw_context::DrawContext;
|
|
|
+use widgets::{Message, MessageSender, Widget};
|
|
|
|
|
|
const MARGIN: u16 = 7;
|
|
|
const WIDTH: u16 = 250;
|
|
|
|
|
|
pub struct Music {
|
|
|
- context: widget::DrawContext,
|
|
|
- tx: widget::MessageSender,
|
|
|
+ context: DrawContext,
|
|
|
+ tx: MessageSender,
|
|
|
state: State,
|
|
|
artist: String,
|
|
|
title: String,
|
|
|
last_pos: u16
|
|
|
}
|
|
|
|
|
|
-pub fn mpd(tx: widget::MessageSender, context: widget::DrawContext) -> Music {
|
|
|
+pub fn mpd(tx: MessageSender, context: DrawContext) -> Music {
|
|
|
Music {
|
|
|
context: context,
|
|
|
tx: tx,
|
|
@@ -48,7 +48,7 @@ impl Music {
|
|
|
|
|
|
}
|
|
|
|
|
|
-impl widget::Widget for Music {
|
|
|
+impl Widget for Music {
|
|
|
fn init(&mut self) {
|
|
|
let tx = self.tx.clone();
|
|
|
thread::spawn(move || monitor_thread(tx));
|
|
@@ -79,15 +79,15 @@ impl widget::Widget for Music {
|
|
|
WIDTH
|
|
|
}
|
|
|
|
|
|
- fn handle_event(&mut self, event: &widget::Message) -> bool {
|
|
|
+ fn handle_event(&mut self, event: &Message) -> bool {
|
|
|
match event {
|
|
|
- &widget::Message::MpdEvent(ref state, ref artist, ref title) => {
|
|
|
+ &Message::MpdEvent(ref state, ref artist, ref title) => {
|
|
|
self.state = state.clone();
|
|
|
self.artist = artist.clone();
|
|
|
self.title = title.clone();
|
|
|
self.redraw();
|
|
|
},
|
|
|
- &widget::Message::MousePress(_x) => {
|
|
|
+ &Message::MousePress(_x) => {
|
|
|
toggle();
|
|
|
},
|
|
|
_ => {}
|
|
@@ -96,7 +96,7 @@ impl widget::Widget for Music {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-fn monitor_thread(tx: widget::MessageSender) {
|
|
|
+fn monitor_thread(tx: MessageSender) {
|
|
|
let mut conn = mpd::client::Client::connect("127.0.0.1:6600").unwrap();
|
|
|
loop {
|
|
|
let unknown = "Unknown".to_string();
|
|
@@ -105,7 +105,7 @@ fn monitor_thread(tx: widget::MessageSender) {
|
|
|
let artist = song.tags.get("Artist").unwrap_or(&unknown);
|
|
|
let title = song.title.as_ref().unwrap_or(&unknown);
|
|
|
|
|
|
- tx.send(widget::Message::MpdEvent(state, artist.clone(), title.clone())).expect("Failed to send mpd event");
|
|
|
+ tx.send(Message::MpdEvent(state, artist.clone(), title.clone())).expect("Failed to send mpd event");
|
|
|
conn.wait(&[idle::Subsystem::Player]).ok();
|
|
|
}
|
|
|
}
|