From 5cfecec40972f7d6f77879e1209bc10d6019625b Mon Sep 17 00:00:00 2001 From: mio Date: Sun, 10 Nov 2024 19:39:43 +1000 Subject: Create a AudioView widget for audio-only streams Currently Codeine will show a blank area when playing an audio-only file, such as music. This patch adds a new widget that contains an instance of the Analyzer::Block class, so instead of a blank area it contains a "visualizer" of sorts. Signed-off-by: mio --- src/app/mainWindow.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/app/mainWindow.cpp') diff --git a/src/app/mainWindow.cpp b/src/app/mainWindow.cpp index 9409d85..5861427 100644 --- a/src/app/mainWindow.cpp +++ b/src/app/mainWindow.cpp @@ -22,11 +22,13 @@ #include //ctor #include //because XMLGUI is poorly designed #include +#include #include "../debug.h" #include "../mxcl.library.h" #include "actions.h" #include "analyzer.h" +#include "audioView.h" #include "codeineConfig.h" #include "extern.h" //dialog creation function definitions #include "fullScreenAction.h" @@ -70,8 +72,19 @@ MainWindow::MainWindow() kapp->setMainWidget( this ); + m_widgetStack = new TQWidgetStack(this, "m_widgetStack"); + new VideoWindow( this ); - setCentralWidget( videoWindow() ); + + m_audioView = new AudioView(this, "m_audioView"); + + // videoWindow() will be the initial widget. + // m_audioView is raised when no video track is present. + m_widgetStack->addWidget(videoWindow()); + m_widgetStack->addWidget(m_audioView); + + setCentralWidget(m_widgetStack); + setFocusProxy( videoWindow() ); // essential! See VideoWindow::event(), TQEvent::FocusOut // these have no affect beccause "KDE Knows Best" FFS @@ -523,7 +536,6 @@ show_toolbar: //we aren't managed by mainWindow when at FullScreen videoWindow()->move( 0, 0 ); videoWindow()->resize( ((TQWidget*)o)->size() ); - videoWindow()->lower(); } if (o == m_toolbar) @@ -580,14 +592,12 @@ MainWindow::fullScreenToggled( bool isFullScreen ) statusBar()->setHidden( isFullScreen ); setMouseTracking( isFullScreen ); /// @see mouseMoveEvent() + m_widgetStack->setMouseTracking(isFullScreen); if (isFullScreen) s_handler = new FullScreenToolBarHandler( this ); else delete s_handler; - - // prevent videoWindow() moving around when mouse moves - setCentralWidget( isFullScreen ? nullptr : videoWindow() ); } void -- cgit v1.2.3