summaryrefslogtreecommitdiffstats
path: root/src/ServerInfoManager.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/ServerInfoManager.hh')
-rw-r--r--src/ServerInfoManager.hh130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/ServerInfoManager.hh b/src/ServerInfoManager.hh
new file mode 100644
index 0000000..5c22f64
--- /dev/null
+++ b/src/ServerInfoManager.hh
@@ -0,0 +1,130 @@
+#ifndef fooserverinfohhfoo
+#define fooserverinfohhfoo
+
+#include <gtkmm.h>
+#include <map>
+
+#include <polyp/polyplib.h>
+
+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);
+
+ void setSinkVolume(uint32_t index, uint32_t volume);
+
+protected:
+ std::map<int, SinkInfo*> sinks;
+ std::map<int, SourceInfo*> sources;
+ std::map<int, ClientInfo*> clients;
+ std::map<int, ModuleInfo*> modules;
+
+ struct pa_context &context;
+};
+
+#endif