File indexing completed on 2024-06-09 04:53:06

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 #ifndef CURRENTLINEWIDGET_H
0009 #define CURRENTLINEWIDGET_H
0010 
0011 #include "core/subtitle.h"
0012 #include "core/subtitleline.h"
0013 
0014 #include <QExplicitlySharedDataPointer>
0015 #include <QHBoxLayout>
0016 #include <QWidget>
0017 
0018 QT_FORWARD_DECLARE_CLASS(QTimer)
0019 QT_FORWARD_DECLARE_CLASS(QLabel)
0020 QT_FORWARD_DECLARE_CLASS(QPushButton)
0021 QT_FORWARD_DECLARE_CLASS(QToolButton)
0022 QT_FORWARD_DECLARE_CLASS(QTextDocument)
0023 class TimeEdit;
0024 
0025 namespace SubtitleComposer {
0026 class SimpleRichTextEdit;
0027 
0028 class CurrentLineWidget : public QWidget
0029 {
0030     Q_OBJECT
0031 
0032 public:
0033     CurrentLineWidget(QWidget *parent);
0034     virtual ~CurrentLineWidget();
0035 
0036     QString focusedText() const;
0037 
0038     void loadConfig();
0039     void saveConfig();
0040 
0041 public slots:
0042     void setSubtitle(Subtitle *subtitle = nullptr);
0043     void setCurrentLine(SubtitleLine *line);
0044 
0045     void setTranslationMode(bool enabled);
0046 
0047     void selectPrimaryText(int startIndex, int endIndex);
0048     void selectTranslationText(int startIndex, int endIndex);
0049 
0050 private:
0051     void onShowTimeEditChanged(int showTime);
0052     void onHideTimeEditChanged(int hideTime);
0053     void onDurationTimeEditChanged(int durationTime);
0054 
0055     void onLineAnchorChanged(const SubtitleLine *line, bool anchored);
0056 
0057     void onLineTimesChanged(const Time &showTime, const Time &hideTime);
0058     void onLineShowTimeChanged(const Time &showTime);
0059     void onLineHideTimeChanged(const Time &hideTime);
0060 
0061     void onConfigChanged();
0062 
0063     friend class Breadcrumb;
0064     void onBreadcrumbClick(QPushButton *btn, SimpleRichTextEdit *textEdit);
0065 
0066     QToolButton * createToolButton(const QString &text, const char *icon, bool checkable=true);
0067     QWidget * createLineWidgetBox(int index);
0068 
0069     QString buildTextDescription(bool primary);
0070     void updateLabels();
0071 
0072 private:
0073     QExplicitlySharedDataPointer<const Subtitle> m_subtitle;
0074     SubtitleLine *m_currentLine;
0075     bool m_translationMode;
0076 
0077     static QTextDocument m_blankDoc;
0078 
0079     TimeEdit *m_showTimeEdit;
0080     TimeEdit *m_hideTimeEdit;
0081     TimeEdit *m_durationTimeEdit;
0082 
0083     QWidget *m_boxPrimary = nullptr;
0084     QWidget *m_boxTranslation = nullptr;
0085     SimpleRichTextEdit *m_textEdits[2] = {};
0086     QLabel *m_textLabels[2] = {};
0087 };
0088 }
0089 #endif