1 /*
2  * KDiff3 - Text Diff And Merge Tool
3  *
4  * SPDX-FileCopyrightText: 2002-2011 Joachim Eibl, joachim.eibl at gmx.de
5  * SPDX-FileCopyrightText: 2018-2020 Michael Reeves reeves.87@gmail.com
6  * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8 
9 #ifndef OPTION_DIALOG_H
10 #define OPTION_DIALOG_H
11 
12 #include "options.h"
13 
14 #include <QSharedPointer>   // for QSharedPointer
15 #include <QStringList>
16 #include <QGroupBox>
17 
18 #include <KPageDialog>
19 #include <KSharedConfig>
20 
21 
22 class QLabel;
23 class QPlainTextEdit;
24 
25 class OptionItemBase;
26 class OptionCheckBox;
27 class OptionEncodingComboBox;
28 class OptionLineEdit;
29 
30 class OptionDialog : public KPageDialog
31 {
32    Q_OBJECT
33 
34 public:
35 
36     explicit OptionDialog( bool bShowDirMergeSettings, QWidget *parent = nullptr );
37     ~OptionDialog() override;
38     const QString parseOptions( const QStringList& optionList );
39     QString calcOptionHelp();
40 
41     void saveOptions(KSharedConfigPtr config);
42     void readOptions(KSharedConfigPtr config);
43 
44     void setState(); // Must be called before calling exec();
45 
46     void addOptionItem(OptionItemBase*);
47 
getOptions()48     QSharedPointer<Options> getOptions() { return m_options; }
49 
50     static const QString s_historyEntryStartRegExpToolTip;
51     static const QString s_historyEntryStartSortKeyOrderToolTip;
52     static const QString s_autoMergeRegExpToolTip;
53     static const QString s_historyStartRegExpToolTip;
54 
55 protected Q_SLOTS:
56     virtual void slotDefault();
57     virtual void slotOk();
58     virtual void slotApply();
59     //virtual void buttonClicked( QAbstractButton* );
60     virtual void helpRequested();
61 
62     void slotEncodingChanged();
63     void slotHistoryMergeRegExpTester();
64 Q_SIGNALS:
65     void applyDone();
66 private:
67     void setupFontPage();
68     void setupColorPage();
69     void setupEditPage();
70     void setupDiffPage();
71     void setupMergePage();
72     void setupDirectoryMergePage();
73     void setupRegionalPage();
74     void setupIntegrationPage();
75     void setupOtherOptions();
76 
77     void resetToDefaults();
78 
79     QSharedPointer<Options> m_options=QSharedPointer<Options>::create();
80     //QDialogButtonBox *mButtonBox;
81     OptionCheckBox* m_pSameEncoding;
82     OptionEncodingComboBox* m_pEncodingAComboBox;
83     OptionCheckBox* m_pAutoDetectUnicodeA;
84     OptionEncodingComboBox* m_pEncodingBComboBox;
85     OptionCheckBox* m_pAutoDetectUnicodeB;
86     OptionEncodingComboBox* m_pEncodingCComboBox;
87     OptionCheckBox* m_pAutoDetectUnicodeC;
88     OptionEncodingComboBox* m_pEncodingOutComboBox;
89     OptionCheckBox* m_pAutoSelectOutEncoding;
90     OptionEncodingComboBox* m_pEncodingPPComboBox;
91     OptionCheckBox* m_pHistoryAutoMerge;
92     OptionLineEdit* m_pAutoMergeRegExpLineEdit;
93     OptionLineEdit* m_pHistoryStartRegExpLineEdit;
94     OptionLineEdit* m_pHistoryEntryStartRegExpLineEdit;
95     OptionCheckBox* m_pHistoryMergeSorting;
96     OptionLineEdit* m_pHistorySortKeyOrderLineEdit;
97 };
98 
99 
100 class FontChooser : public QGroupBox
101 {
102    Q_OBJECT
103    QFont m_font;
104    QPushButton* m_pSelectFont;
105    QPlainTextEdit* m_pExampleTextEdit;
106    QLabel* m_pLabel;
107 public:
108    explicit FontChooser( QWidget* pParent );
109    QFont font();
110    void setFont( const QFont&, bool );
111 private Q_SLOTS:
112    void slotSelectFont();
113 };
114 
115 #endif
116 
117 
118 
119 
120 
121 
122 
123