File indexing completed on 2024-05-12 04:57:16
0001 /* 0002 SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar> 0003 SPDX-FileCopyrightText: 2010-2022 Mladen Milinkovic <max@smoothware.net> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "mainwindow.h" 0009 #include "appglobal.h" 0010 #include "application.h" 0011 #include "gui/playerwidget.h" 0012 #include "gui/treeview/lineswidget.h" 0013 #include "gui/currentlinewidget.h" 0014 #include "videoplayer/videoplayer.h" 0015 #include "gui/waveform/waveformwidget.h" 0016 #include "gui/subtitlemeta/subtitlemetawidget.h" 0017 0018 #include <QGridLayout> 0019 #include <QDockWidget> 0020 #include <QStatusBar> 0021 0022 #include <QMenuBar> 0023 #include <QMainWindow> 0024 #include <KToolBar> 0025 #include <KActionCollection> 0026 #include <KConfigGroup> 0027 0028 #include <KLocalizedString> 0029 0030 using namespace SubtitleComposer; 0031 0032 MainWindow::MainWindow() 0033 : KXmlGuiWindow(nullptr) 0034 { 0035 VideoPlayer::instance()->setParent(this); 0036 0037 QDockWidget *waveformDock = new QDockWidget(i18n("Waveform"), this); 0038 waveformDock->setObjectName(QStringLiteral("waveform_dock")); 0039 waveformDock->setAllowedAreas(Qt::AllDockWidgetAreas); 0040 waveformDock->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); 0041 waveformDock->setFloating(false); 0042 0043 m_waveformWidget = new WaveformWidget(waveformDock); 0044 m_waveformWidget->setContentsMargins(0, 0, 0, 0); 0045 0046 waveformDock->setWidget(m_waveformWidget); 0047 waveformDock->setTitleBarWidget(m_waveformWidget->toolbarWidget()); 0048 addDockWidget(Qt::RightDockWidgetArea, waveformDock); 0049 0050 0051 QDockWidget *playerDock = new QDockWidget(i18n("Video Player"), this); 0052 playerDock->setObjectName(QStringLiteral("player_dock")); 0053 playerDock->setAllowedAreas(Qt::AllDockWidgetAreas); 0054 playerDock->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetVerticalTitleBar); 0055 playerDock->setFloating(false); 0056 0057 m_playerWidget = new PlayerWidget(playerDock); 0058 m_playerWidget->setContentsMargins(0, 0, 0, 0); 0059 0060 playerDock->setWidget(m_playerWidget); 0061 playerDock->setTitleBarWidget(m_playerWidget->infoSidebarWidget()); 0062 addDockWidget(Qt::TopDockWidgetArea, playerDock); 0063 0064 0065 QDockWidget *cssDock = new QDockWidget(i18n("Styles and Comments"), this); 0066 cssDock->setObjectName(QStringLiteral("submeta_dock")); 0067 cssDock->setAllowedAreas(Qt::AllDockWidgetAreas); 0068 cssDock->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); 0069 cssDock->setFloating(false); 0070 0071 m_metaWidget = new SubtitleMetaWidget(cssDock); 0072 m_metaWidget->setContentsMargins(0, 0, 0, 0); 0073 0074 cssDock->setWidget(m_metaWidget); 0075 cssDock->setTitleBarWidget(m_metaWidget->dockTitleBar()); 0076 addDockWidget(Qt::TopDockWidgetArea, cssDock); 0077 0078 0079 QWidget *mainWidget = new QWidget(this); 0080 mainWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 0081 0082 m_linesWidget = new LinesWidget(mainWidget); 0083 0084 m_curLineWidget = new CurrentLineWidget(mainWidget); 0085 m_curLineWidget->setMaximumHeight(m_curLineWidget->minimumSizeHint().height()); 0086 0087 QLayout *mainWidgetLayout = new QBoxLayout(QBoxLayout::TopToBottom, mainWidget); 0088 mainWidgetLayout->setContentsMargins(0, 1, 0, 0); 0089 mainWidgetLayout->setSpacing(2); 0090 mainWidgetLayout->addWidget(m_linesWidget); 0091 mainWidgetLayout->addWidget(m_curLineWidget); 0092 0093 setCentralWidget(mainWidget); 0094 0095 statusBar()->addPermanentWidget(m_waveformWidget->progressWidget()); 0096 0097 connect(m_linesWidget, &LinesWidget::currentLineChanged, m_waveformWidget, &WaveformWidget::onSubtitleChanged); 0098 0099 statusBar()->show(); 0100 toolBar()->show(); 0101 menuBar()->show(); 0102 } 0103 0104 MainWindow::~MainWindow() 0105 { 0106 app()->saveConfig(); 0107 } 0108 0109 void 0110 MainWindow::loadConfig() 0111 { 0112 setCorner(Qt::TopLeftCorner, Qt::TopDockWidgetArea); 0113 setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); 0114 setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); 0115 setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea); 0116 } 0117 0118 void 0119 MainWindow::saveConfig() 0120 { 0121 } 0122 0123 QMenu * 0124 MainWindow::createPopupMenu() 0125 { 0126 QMenu *menu = KXmlGuiWindow::createPopupMenu(); 0127 0128 menu->addSeparator(); 0129 QAction *showStatusBarAction = actionCollection()->action(KStandardAction::name(KStandardAction::ShowStatusbar)); 0130 menu->addAction(showStatusBarAction); 0131 0132 return menu; 0133 } 0134 0135 bool 0136 MainWindow::queryClose() 0137 { 0138 return app()->closeSubtitle(); 0139 }