1 /*
2     SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar>
3     SPDX-FileCopyrightText: 2010-2018 Mladen Milinkovic <max@smoothware.net>
4 
5     SPDX-License-Identifier: GPL-2.0-or-later
6 */
7 
8 #include "config.h"
9 
10 #include "joinsubtitlesdialog.h"
11 #include "helpers/commondefs.h"
12 #include "videoplayer/videoplayer.h"
13 #include "widgets/timeedit.h"
14 
15 #include <QIcon>
16 #include <QGridLayout>
17 #include <QGroupBox>
18 #include <QCheckBox>
19 #include <QPushButton>
20 
21 using namespace SubtitleComposer;
22 
JoinSubtitlesDialog(QWidget * parent)23 JoinSubtitlesDialog::JoinSubtitlesDialog(QWidget *parent) :
24 	SelectableSubtitleDialog(i18n("Join Subtitles"), parent)
25 {
26 	createSubtitleGroupBox();
27 
28 	m_shiftSubtitleCheckBox = new QCheckBox(m_subtitleGroupBox);
29 	m_shiftSubtitleCheckBox->setText(i18n("Shift subtitle forwards before append"));
30 	m_shiftSubtitleCheckBox->setChecked(true);
31 
32 	m_shiftTimeFromVideoButton = new QPushButton(m_subtitleGroupBox);
33 	m_shiftTimeFromVideoButton->setIcon(QIcon::fromTheme(QStringLiteral("time_from_video")));
34 	int buttonSize = m_shiftTimeFromVideoButton->sizeHint().height();
35 	m_shiftTimeFromVideoButton->setFixedSize(buttonSize, buttonSize);
36 	m_shiftTimeFromVideoButton->setToolTip(i18n("Set from video length"));
37 
38 	m_shiftTimeEdit = new TimeEdit(m_subtitleGroupBox);
39 
40 	connect(m_shiftTimeFromVideoButton, &QAbstractButton::clicked, this, &JoinSubtitlesDialog::setShiftTimeFromVideo);
41 	connect(m_shiftSubtitleCheckBox, &QAbstractButton::toggled, m_shiftTimeFromVideoButton, &QWidget::setEnabled);
42 	connect(m_shiftSubtitleCheckBox, &QAbstractButton::toggled, m_shiftTimeEdit, &QWidget::setEnabled);
43 
44 	createTargetsGroupBox();
45 	createTextTargetsButtonGroup();
46 
47 	QHBoxLayout *shiftTimeLayout = new QHBoxLayout();
48 	shiftTimeLayout->addStretch();
49 	shiftTimeLayout->addWidget(m_shiftTimeFromVideoButton);
50 	shiftTimeLayout->addWidget(m_shiftTimeEdit);
51 
52 	m_subtitleLayout->addWidget(m_shiftSubtitleCheckBox, 2, 0, 1, 2);
53 	m_subtitleLayout->addLayout(shiftTimeLayout, 2, 2);
54 }
55 
56 void
setShiftTimeFromVideo()57 JoinSubtitlesDialog::setShiftTimeFromVideo()
58 {
59 	m_shiftTimeEdit->setValue((int)(VideoPlayer::instance()->duration() * 1000 + 0.5));
60 }
61 
62 Time
shiftTime() const63 JoinSubtitlesDialog::shiftTime() const
64 {
65 	return m_shiftSubtitleCheckBox->isChecked() ? m_shiftTimeEdit->value() : 0;
66 }
67 
68 void
show()69 JoinSubtitlesDialog::show()
70 {
71 	m_shiftTimeFromVideoButton->setEnabled(VideoPlayer::instance()->state() > VideoPlayer::Opening);
72 	if(m_shiftTimeFromVideoButton->isEnabled())
73 		setShiftTimeFromVideo();
74 
75 	SelectableSubtitleDialog::show();
76 }
77 
78 
79