#ifndef fooserverinfohhfoo #define fooserverinfohhfoo #include #include #include class SinkInfo; class SourceInfo; class ServerInfo; class ClientInfo; class ModuleInfo; #include "SinkWindow.hh" #include "SourceWindow.hh" #include "ClientWindow.hh" #include "ModuleWindow.hh" #include "MainWindow.hh" class SinkInfo { public: SinkInfo(const struct pa_sink_info &i); ~SinkInfo(); void update(const struct pa_sink_info &i); void showWindow(); Glib::ustring name, description; uint32_t index; struct pa_sample_spec sample_spec; uint32_t monitor_source; uint32_t owner_module; uint32_t volume; uint32_t latency; Gtk::TreeRowReference treeRef; SinkWindow *window; }; class SourceInfo { public: SourceInfo(const struct pa_source_info &i); ~SourceInfo(); void update(const struct pa_source_info &i); void showWindow(); Glib::ustring name, description; uint32_t index; struct pa_sample_spec sample_spec; uint32_t owner_module; uint32_t monitor_of_sink; Gtk::TreeRowReference treeRef; SourceWindow *window; }; class ModuleInfo { public: ModuleInfo(const struct pa_module_info &i); ~ModuleInfo(); void update(const struct pa_module_info &i); void showWindow(); uint32_t index; Glib::ustring name, argument; bool autoloaded; uint32_t used; Gtk::TreeRowReference treeRef; ModuleWindow *window; }; class ClientInfo { public: ClientInfo(const struct pa_client_info &i); ~ClientInfo(); void update(const struct pa_client_info &i); void showWindow(); uint32_t index; Glib::ustring name, protocol_name; uint32_t owner_module; Gtk::TreeRowReference treeRef; ClientWindow *window; }; class ServerInfoManager { public: ServerInfoManager(struct pa_context &c); ~ServerInfoManager(); void updateInfo(const struct pa_sink_info &i); void updateInfo(const struct pa_source_info &i); void updateInfo(const struct pa_client_info &i); void updateInfo(const struct pa_module_info &i); void showSinkWindow(uint32_t index); void showSourceWindow(uint32_t index); void showClientWindow(uint32_t index); void showModuleWindow(uint32_t index); SourceInfo* getSourceInfo(uint32_t index); SinkInfo* getSinkInfo(uint32_t index); ClientInfo* getClientInfo(uint32_t index); ModuleInfo* getModuleInfo(uint32_t index); void removeSinkInfo(uint32_t index); void removeSourceInfo(uint32_t index); void removeClientInfo(uint32_t index); void removeModuleInfo(uint32_t index); protected: std::map sinks; std::map sources; std::map clients; std::map modules; struct pa_context &context; }; #endif