From f6f7c36909fa161efe53c40e9b4c34856e751536 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Tue, 12 May 2026 21:32:53 -0400 Subject: Initial tmix skeleton — model layer + basic UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PulseModel: stable PulseDevice objects keyed by PA index, updated in-place via postEvent reconciliation. No bulk rebuilds. Three signals: deviceAdded, deviceRemoved (device changed handled per-device via volumeChanged/muteChanged/nameChanged). MixerWindow: four-tab layout (Output/Input/Playback/Recording), adds and removes individual DeviceWidgets in response to model signals. Builds and links cleanly against TQt3/TDE + libpulse. Co-Authored-By: Claude Sonnet 4.6 --- src/ui/mixerwindow.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/ui/mixerwindow.h (limited to 'src/ui/mixerwindow.h') diff --git a/src/ui/mixerwindow.h b/src/ui/mixerwindow.h new file mode 100644 index 0000000..f6b7be8 --- /dev/null +++ b/src/ui/mixerwindow.h @@ -0,0 +1,43 @@ +#pragma once + +#include +#include + +#include "../model/audiodevice.h" + +class PulseModel; +class KTabWidget; +class TQHBoxLayout; + +class MixerWindow : public TQWidget +{ + TQ_OBJECT + +public: + explicit MixerWindow( PulseModel *model, TQWidget *parent = 0 ); + ~MixerWindow() {} + +private slots: + void onDeviceAdded( AudioDevice *dev ); + void onDeviceRemoved( AudioDevice *dev ); + +public: + struct Tab { + TQWidget *page; + TQHBoxLayout *layout; + }; + +private: + + Tab &tabForCategory( AudioDevice::Category cat ); + + PulseModel *m_model; + KTabWidget *m_tabs; + + Tab m_output; + Tab m_input; + Tab m_playback; + Tab m_recording; + + TQMap m_widgets; +}; -- cgit v1.2.3