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