summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorCalvin Morrison <calvin@pobox.com>2026-05-12 21:32:53 -0400
committerCalvin Morrison <calvin@pobox.com>2026-05-12 21:32:53 -0400
commitf6f7c36909fa161efe53c40e9b4c34856e751536 (patch)
treeeff44527b0be61eb2e19c9f483ed38b72879af11 /src/main.cpp
Initial tmix skeleton — model layer + basic UI
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 <noreply@anthropic.com>
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..6a8c6a8
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,35 @@
+#include <tdeapplication.h>
+#include <tdecmdlineargs.h>
+#include <tdeaboutdata.h>
+#include <tdelocale.h>
+
+#include "model/pulsemodel.h"
+#include "ui/mixerwindow.h"
+
+static TDECmdLineOptions options[] = { TDECmdLineLastOption };
+
+int main( int argc, char **argv )
+{
+ TDEAboutData about(
+ "tmix", I18N_NOOP("TMix"),
+ "0.1",
+ I18N_NOOP("Trinity audio mixer"),
+ TDEAboutData::License_GPL_V2,
+ "(C) 2024 Trinity Desktop Project"
+ );
+
+ TDECmdLineArgs::init( argc, argv, &about );
+ TDECmdLineArgs::addCmdLineOptions( options );
+ TDEApplication app;
+
+ PulseModel model;
+ if ( !model.open() ) {
+ // TODO: show error dialog
+ return 1;
+ }
+
+ MixerWindow win( &model );
+ win.show();
+
+ return app.exec();
+}