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