1 /*
2 SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar>
3 SPDX-FileCopyrightText: 2010-2019 Mladen Milinkovic <max@smoothware.net>
4
5 SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8 #ifndef ACTIONWITHTARGETDIALOG_H
9 #define ACTIONWITHTARGETDIALOG_H
10
11 #include "actiondialog.h"
12 #include "core/subtitle.h"
13
14 #include <QWidget>
15
16 #include <KLocalizedString>
17
18 QT_FORWARD_DECLARE_CLASS(QGridLayout)
QT_FORWARD_DECLARE_CLASS(QGroupBox)19 QT_FORWARD_DECLARE_CLASS(QGroupBox)
20 QT_FORWARD_DECLARE_CLASS(QButtonGroup)
21
22 namespace SubtitleComposer {
23 class ActionWithTargetDialog : public ActionDialog
24 {
25 Q_OBJECT
26
27 public:
28 typedef enum { AllLines = 0, Selection, FromSelected, UpToSelected, None } LinesTarget;
29
30 /// LINES TARGET
31 LinesTarget selectedLinesTarget() const;
32 void setSelectedLinesTarget(ActionWithTargetDialog::LinesTarget target);
33
34 bool isLinesTargetEnabled(LinesTarget target) const;
35 void setLinesTargetEnabled(LinesTarget target, bool enabled);
36
37 /// TEXTS TARGET
38 // the active text target when translationMode is false
39 SubtitleTarget nonTranslationModeTarget() const;
40 void setNonTranslationModeTarget(SubtitleTarget target);
41
42 SubtitleTarget selectedTextsTarget() const;
43 void setSelectedTextsTarget(SubtitleTarget target);
44
45 bool isTextsTargetEnabled(SubtitleTarget target) const;
46 void setTextsTargetEnabled(SubtitleTarget target, bool enabled);
47
48 public slots:
49 int exec() override;
50 void show() override;
51
52 protected:
53 explicit ActionWithTargetDialog(const QString &title, QWidget *parent = 0);
54
55 bool selectionTargetOnlyMode() const;
56 bool translationMode() const;
57
58 QGroupBox * createTargetsGroupBox(const QString &title = i18n("Apply To"), bool addToLayout = true);
59
60 void setTargetsButtonsHiddenState(QButtonGroup *targetButtonGroup, bool hidden);
61 void updateTargetsGroupBoxHiddenState();
62
63 void createLineTargetsButtonGroup();
64 void createTextTargetsButtonGroup();
65
66 virtual void setSelectionTargetOnlyMode(bool value);
67 virtual void setTranslationMode(bool value);
68
69 private:
70 void _setSelectionTargetOnlyMode(bool value, bool force);
71 void _setTranslationMode(bool enabled, bool force);
72
73 private slots:
74 void onDefaultButtonClicked();
75
76 protected:
77 QGroupBox *m_targetGroupBox;
78 QGridLayout *m_targetLayout;
79
80 QButtonGroup *m_lineTargetsButtonGroup;
81 QButtonGroup *m_textTargetsButtonGroup;
82
83 private:
84 bool m_selectionTargetOnlyMode;
85 bool m_selectionTargetWasChecked;
86
87 bool m_translationMode;
88 SubtitleTarget m_nonTranslationModeTarget;
89 };
90
91 class ActionWithLinesTargetDialog : public ActionWithTargetDialog
92 {
93 Q_OBJECT
94
95 public:
96 explicit ActionWithLinesTargetDialog(const QString &title, QWidget *parent = 0);
97 ActionWithLinesTargetDialog(const QString &title, const QString &desc, QWidget *parent = 0);
98
99 public slots:
100 int exec() override;
101 };
102
103 class ActionWithTextsTargetDialog : public ActionWithTargetDialog
104 {
105 Q_OBJECT
106
107 public:
108 explicit ActionWithTextsTargetDialog(const QString &title, QWidget *parent = 0);
109 ActionWithTextsTargetDialog(const QString &title, const QString &desc, QWidget *parent = 0);
110
111 public slots:
112 int exec() override;
113 };
114
115 class ActionWithLinesAndTextsTargetDialog : public ActionWithTargetDialog
116 {
117 Q_OBJECT
118
119 public:
120 explicit ActionWithLinesAndTextsTargetDialog(const QString &title, QWidget *parent = 0);
121 ActionWithLinesAndTextsTargetDialog(const QString &title, const QString &desc, QWidget *parent = 0);
122
123 public slots:
124 int exec() override;
125 };
126 }
127 #endif
128