use audio::Audio; use errors::*; use gtk; use prefs::*; use std::cell::RefCell; use ui_entry::Gui; // TODO: notify popups // TODO: destructors // TODO: glade stuff, config, alsacard pub struct AppS { _cant_construct: (), pub gui: Gui, pub audio: Audio, pub prefs: RefCell, } impl AppS { pub fn new() -> AppS { let builder_popup_window = gtk::Builder::new_from_string(include_str!("../data/ui/popup-window.glade")); let builder_popup_menu = gtk::Builder::new_from_string(include_str!("../data/ui/popup-menu.glade")); let prefs = RefCell::new(Prefs::new().unwrap()); let gui = Gui::new(builder_popup_window, builder_popup_menu, &prefs.borrow()); return AppS { _cant_construct: (), gui: gui, audio: Audio::new(None, Some(String::from("Master"))) .unwrap(), prefs: prefs, }; } pub fn update_tray_icon(&self) -> Result<()> { debug!("Update tray icon!"); return self.gui.tray_icon.update_all(&self.prefs.borrow(), &self.audio, None); } pub fn update_popup_window(&self) -> Result<()> { debug!("Update PopupWindow!"); return self.gui.popup_window.update(&self.audio); } }