1 /*
2     SPDX-FileCopyrightText: 2001-2002 Otto Bruggeman <otto.bruggeman@home.nl>
3     SPDX-FileCopyrightText: 2001-2002 John Firebaugh <jfirebaugh@kde.org>
4     SPDX-FileCopyrightText: 2007-2011 Kevin Kofler <kevin.kofler@chello.at>
5 
6     SPDX-License-Identifier: GPL-2.0-or-later
7 */
8 
9 #include "viewpage.h"
10 
11 #include <QCheckBox>
12 #include <QGroupBox>
13 #include <QLayout>
14 #include <QSpinBox>
15 #include <QVBoxLayout>
16 #include <QFormLayout>
17 #include <QFontComboBox>
18 #include <QTabWidget>
19 
20 #include <KColorButton>
21 #include <KLocalizedString>
22 #include <KSharedConfig>
23 
24 #include "viewsettings.h"
25 
ViewPage()26 ViewPage::ViewPage() : QFrame()
27 {
28     QWidget*     page;
29     QVBoxLayout* layout;
30     QFormLayout* formLayout;
31     QGroupBox*   colorGroupBox;
32     QGroupBox*   snolGroupBox;
33     QGroupBox*   tabGroupBox;
34 
35     m_tabWidget = new QTabWidget(this);
36     layout = new QVBoxLayout(this);
37     layout->addWidget(m_tabWidget);
38 
39     page   = new QWidget(m_tabWidget);
40     layout = new QVBoxLayout(page);
41 
42     // add a groupbox
43     colorGroupBox = new QGroupBox(page);
44     colorGroupBox->setTitle(i18nc("@title:group", "Colors"));
45     layout->addWidget(colorGroupBox);
46     formLayout = new QFormLayout(colorGroupBox);
47 
48     // add the removeColor
49     m_removedColorButton = new KColorButton(colorGroupBox);
50     formLayout->addRow(i18nc("@label:chooser", "Removed color:"), m_removedColorButton);
51 
52     // add the changeColor
53     m_changedColorButton = new KColorButton(colorGroupBox);
54     formLayout->addRow(i18nc("@label:chooser", "Changed color:"), m_changedColorButton);
55 
56     // add the addColor
57     m_addedColorButton = new KColorButton(colorGroupBox);
58     formLayout->addRow(i18nc("@label:chooser", "Added color:"), m_addedColorButton);
59 
60     // add the appliedColor
61     m_appliedColorButton = new KColorButton(colorGroupBox);
62     formLayout->addRow(i18nc("@label:chooser", "Applied color:"), m_appliedColorButton);
63 
64     // scroll number of lines (snol)
65     snolGroupBox = new QGroupBox(page);
66     snolGroupBox->setTitle(i18nc("@title:group", "Mouse Wheel"));
67     layout->addWidget(snolGroupBox);
68     QFormLayout* snolLayout = new QFormLayout(snolGroupBox);
69 
70     m_snolSpinBox = new QSpinBox(snolGroupBox);
71     m_snolSpinBox->setRange(0, 50);
72     snolLayout->addRow(i18nc("@label:spinbox", "Number of lines:"), m_snolSpinBox);
73 
74     // Temporarily here for testing...
75     // number of spaces for a tab character stuff
76     tabGroupBox = new QGroupBox(page);
77     tabGroupBox->setTitle(i18nc("@title:group", "Tabs to Spaces"));
78     layout->addWidget(tabGroupBox);
79     QFormLayout* tabLayout = new QFormLayout(tabGroupBox);
80 
81     m_tabSpinBox = new QSpinBox(tabGroupBox);
82     m_tabSpinBox->setRange(1, 16);
83     tabLayout->addRow(i18nc("@label:spinbox", "Number of spaces to convert a tab character to:"), m_tabSpinBox);
84 
85     layout->addStretch(1);
86 
87     m_tabWidget->addTab(page, i18nc("@title:tab", "Appearance"));
88 
89     page   = new QWidget(m_tabWidget);
90     layout = new QVBoxLayout(page);
91 
92     QGroupBox* gb = new QGroupBox(page);
93     QFormLayout* layfont = new QFormLayout(gb);
94     gb->setTitle(i18nc("@title:group", "Text Font"));
95     layout->addWidget(gb);
96 
97     m_fontCombo = new QFontComboBox;
98     layfont->addRow(i18nc("@label:listbox", "Font:"), m_fontCombo);
99     m_fontCombo->setObjectName(QStringLiteral("fontcombo"));
100 
101     m_fontSizeSpinBox = new QSpinBox(gb);
102     m_fontSizeSpinBox->setRange(6, 24);
103     layfont->addRow(i18nc("@label:spinbox", "Size:"), m_fontSizeSpinBox);
104 
105     layout->addStretch(1);
106 
107     m_tabWidget->addTab(page, i18nc("@title:tab", "Fonts"));
108 }
109 
~ViewPage()110 ViewPage::~ViewPage()
111 {
112 
113 }
114 
setSettings(ViewSettings * setts)115 void ViewPage::setSettings(ViewSettings* setts)
116 {
117     m_settings = setts;
118 
119     m_addedColorButton->setColor(m_settings->m_addColor);
120     m_changedColorButton->setColor(m_settings->m_changeColor);
121     m_removedColorButton->setColor(m_settings->m_removeColor);
122     m_appliedColorButton->setColor(m_settings->m_appliedColor);
123     m_snolSpinBox->setValue(m_settings->m_scrollNoOfLines);
124     m_tabSpinBox->setValue(m_settings->m_tabToNumberOfSpaces);
125 
126     m_fontCombo->setCurrentFont(m_settings->m_font.family());
127     m_fontSizeSpinBox->setValue(m_settings->m_font.pointSize());
128 }
129 
settings()130 ViewSettings* ViewPage::settings()
131 {
132     return m_settings;
133 }
134 
restore()135 void ViewPage::restore()
136 {
137 }
138 
apply()139 void ViewPage::apply()
140 {
141     m_settings->m_addColor            = m_addedColorButton->color();
142     m_settings->m_changeColor         = m_changedColorButton->color();
143     m_settings->m_removeColor         = m_removedColorButton->color();
144     m_settings->m_appliedColor        = m_appliedColorButton->color();
145     m_settings->m_scrollNoOfLines     = m_snolSpinBox->value();
146     m_settings->m_tabToNumberOfSpaces = m_tabSpinBox->value();
147 
148     m_settings->m_font                = QFont(m_fontCombo->currentFont());
149     m_settings->m_font.setPointSize(m_fontSizeSpinBox->value());
150 
151     m_settings->saveSettings(KSharedConfig::openConfig().data());
152 }
153 
setDefaults()154 void ViewPage::setDefaults()
155 {
156     m_addedColorButton->setColor(ViewSettings::default_addColor);
157     m_changedColorButton->setColor(ViewSettings::default_changeColor);
158     m_removedColorButton->setColor(ViewSettings::default_removeColor);
159     m_appliedColorButton->setColor(ViewSettings::default_appliedColor);
160     m_snolSpinBox->setValue(3);
161     m_tabSpinBox->setValue(4);
162 
163     // TODO: port
164     // m_fontCombo->setCurrentFont   ( KGlobalSettings::fixedFont().family() );
165     m_fontSizeSpinBox->setValue(10);
166 }
167