Skip to content

Latest commit

 

History

History
378 lines (312 loc) · 7.66 KB

util.cpp

File metadata and controls

378 lines (312 loc) · 7.66 KB
 
Feb 20, 2013
Feb 20, 2013
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
Copyright 2011-2012 Heikki Holstila <heikki.holstila@gmail.com>
This file is part of FingerTerm.
FingerTerm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
FingerTerm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FingerTerm. If not, see <http://www.gnu.org/licenses/>.
*/
#include "qplatformdefs.h"
#include <QtCore>
#include <QtGui>
Jul 22, 2013
Jul 22, 2013
24
25
#include <QGuiApplication>
#include <QQuickView>
Aug 7, 2013
Aug 7, 2013
26
#include <QDebug>
Feb 20, 2013
Feb 20, 2013
27
28
29
30
31
32
#include "terminal.h"
#include "util.h"
#include "textrender.h"
#include "version.h"
May 4, 2016
May 4, 2016
33
#ifdef HAVE_FEEDBACK
Aug 23, 2013
Aug 23, 2013
34
#include <QFeedbackEffect>
Mar 19, 2015
Mar 19, 2015
35
36
#endif
Feb 20, 2013
Feb 20, 2013
37
38
39
40
Util::Util(QSettings *settings, QObject *parent) :
QObject(parent),
iSettings(settings),
iWindow(0),
Jun 8, 2016
Jun 8, 2016
41
iTerm(0)
Feb 20, 2013
Feb 20, 2013
42
{
Jul 22, 2013
Jul 22, 2013
43
connect(QGuiApplication::clipboard(), SIGNAL(dataChanged()), this, SIGNAL(clipboardOrSelectionChanged()));
Feb 20, 2013
Feb 20, 2013
44
45
46
47
}
Util::~Util()
{
Jun 27, 2016
Jun 27, 2016
48
delete iSettings;
Feb 20, 2013
Feb 20, 2013
49
50
}
Jul 22, 2013
Jul 22, 2013
51
void Util::setWindow(QQuickView* win)
Feb 20, 2013
Feb 20, 2013
52
{
Jun 27, 2016
Jun 27, 2016
53
54
if (iWindow)
qFatal("Should set window property only once");
May 4, 2016
May 4, 2016
55
iWindow = win;
Feb 20, 2013
Feb 20, 2013
56
57
if(!iWindow)
qFatal("invalid main window");
Jun 27, 2016
Jun 27, 2016
58
connect(win, SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), this, SIGNAL(windowOrientationChanged()));
Feb 20, 2013
Feb 20, 2013
59
60
61
62
63
}
void Util::setWindowTitle(QString title)
{
iCurrentWinTitle = title;
Jul 22, 2013
Jul 22, 2013
64
iWindow->setTitle(title);
Feb 20, 2013
Feb 20, 2013
65
66
67
emit windowTitleChanged();
}
Jun 8, 2016
Jun 8, 2016
68
QString Util::windowTitle()
Feb 20, 2013
Feb 20, 2013
69
70
71
72
{
return iCurrentWinTitle;
}
Jun 27, 2016
Jun 27, 2016
73
74
75
76
77
78
79
80
81
82
int Util::windowOrientation()
{
return iWindow->contentOrientation();
}
void Util::setWindowOrientation(int orientation)
{
iWindow->reportContentOrientationChange(static_cast<Qt::ScreenOrientation>(orientation));
}
Jun 8, 2016
Jun 8, 2016
83
84
85
86
87
88
89
90
91
void Util::setTerm(Terminal *term)
{
if (iTerm) {
qFatal("Should set terminal only once");
}
iTerm = term;
connect(iTerm, SIGNAL(selectionFinished()), this, SIGNAL(clipboardOrSelectionChanged()));
}
Feb 20, 2013
Feb 20, 2013
92
93
void Util::openNewWindow()
{
May 13, 2013
May 13, 2013
94
QProcess::startDetached("/usr/bin/fingerterm");
Feb 20, 2013
Feb 20, 2013
95
96
97
98
99
100
101
102
103
104
105
}
QString Util::configPath()
{
if(!iSettings)
return QString();
QFileInfo f(iSettings->fileName());
return f.path();
}
Jun 27, 2016
Jun 27, 2016
106
QVariant Util::settingsValue(QString key, const QVariant &defaultValue)
Feb 20, 2013
Feb 20, 2013
107
108
{
if(!iSettings)
Jun 27, 2016
Jun 27, 2016
109
return defaultValue;
Feb 20, 2013
Feb 20, 2013
110
Jun 27, 2016
Jun 27, 2016
111
return iSettings->value(key, defaultValue);
Feb 20, 2013
Feb 20, 2013
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
}
void Util::setSettingsValue(QString key, QVariant value)
{
if(iSettings)
iSettings->setValue(key, value);
}
QString Util::versionString()
{
return PROGRAM_VERSION;
}
int Util::uiFontSize()
{
return 12;
}
Jun 27, 2016
Jun 27, 2016
130
131
int Util::fontSize()
{
Jun 27, 2016
Jun 27, 2016
132
return settingsValue("ui/fontSize", 11).toInt();
Jun 27, 2016
Jun 27, 2016
133
134
135
136
137
138
139
140
141
142
143
144
}
void Util::setFontSize(int size)
{
if (size == fontSize()) {
return;
}
setSettingsValue("ui/fontSize", size);
emit fontSizeChanged();
}
Feb 20, 2013
Feb 20, 2013
145
146
void Util::keyPressFeedback()
{
Jun 27, 2016
Jun 27, 2016
147
if( !settingsValue("ui/keyPressFeedback", true).toBool() )
Feb 20, 2013
Feb 20, 2013
148
149
return;
May 4, 2016
May 4, 2016
150
#ifdef HAVE_FEEDBACK
Aug 23, 2013
Aug 23, 2013
151
QFeedbackEffect::playThemeEffect(QFeedbackEffect::PressWeak);
May 4, 2016
May 4, 2016
152
#endif
Feb 20, 2013
Feb 20, 2013
153
154
155
156
}
void Util::keyReleaseFeedback()
{
Jun 27, 2016
Jun 27, 2016
157
if( !settingsValue("ui/keyPressFeedback", true).toBool() )
Feb 20, 2013
Feb 20, 2013
158
159
return;
Aug 23, 2013
Aug 23, 2013
160
// TODO: check what's more comfortable, only press, or press and release
May 4, 2016
May 4, 2016
161
#ifdef HAVE_FEEDBACK
Aug 23, 2013
Aug 23, 2013
162
QFeedbackEffect::playThemeEffect(QFeedbackEffect::ReleaseWeak);
May 4, 2016
May 4, 2016
163
#endif
Feb 20, 2013
Feb 20, 2013
164
165
166
167
168
169
170
}
void Util::bellAlert()
{
if(!iWindow)
return;
Jun 27, 2016
Jun 27, 2016
171
if( settingsValue("general/visualBell", true).toBool() ) {
Feb 20, 2013
Feb 20, 2013
172
173
174
175
emit visualBell();
}
}
Jun 27, 2016
Jun 27, 2016
176
177
QString Util::fontFamily()
{
Jun 27, 2016
Jun 27, 2016
178
return settingsValue("ui/fontFamily", DEFAULT_FONTFAMILY).toString();
Jun 27, 2016
Jun 27, 2016
179
180
181
182
}
int Util::dragMode()
{
Jun 27, 2016
Jun 27, 2016
183
QString mode = settingsValue("ui/dragMode", "scroll").toString();
Jun 27, 2016
Jun 27, 2016
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
if (mode == "gestures") {
return DragGestures;
} else if (mode == "scroll") {
return DragScroll;
} else if (mode == "select") {
return DragSelect;
} else {
return DragOff;
}
}
void Util::setDragMode(int mode)
{
if (mode == dragMode()) {
return;
}
QString modeString;
switch(mode) {
case DragGestures:
modeString = "gestures";
break;
case DragScroll:
modeString = "scroll";
break;
case DragSelect:
modeString = "select";
break;
case DragOff:
default:
modeString = "off";
}
setSettingsValue("ui/dragMode", modeString);
emit dragModeChanged();
}
int Util::keyboardMode()
{
Jun 27, 2016
Jun 27, 2016
224
QString mode = settingsValue("ui/vkbShowMethod", "move").toString();
Jun 27, 2016
Jun 27, 2016
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
if (mode == "fade") {
return KeyboardFade;
} else if (mode == "move") {
return KeyboardMove;
} else {
return KeyboardOff;
}
}
void Util::setKeyboardMode(int mode)
{
if (mode == keyboardMode()) {
return;
}
QString modeString;
switch(mode) {
case KeyboardFade:
modeString = "fade";
break;
case KeyboardMove:
modeString = "move";
break;
case KeyboardOff:
default:
modeString = "off";
}
setSettingsValue("ui/vkbShowMethod", modeString);
emit keyboardModeChanged();
}
int Util::keyboardFadeOutDelay()
{
Jun 27, 2016
Jun 27, 2016
260
return settingsValue("ui/keyboardFadeOutDelay", 4000).toInt();
Jun 27, 2016
Jun 27, 2016
261
262
263
264
265
266
267
268
269
270
271
272
273
274
}
void Util::setKeyboardFadeOutDelay(int delay)
{
if (delay == keyboardFadeOutDelay()) {
return;
}
setSettingsValue("ui/keyboardFadeOutDelay", delay);
emit keyboardFadeOutDelayChanged();
}
QString Util::keyboardLayout()
{
Jun 27, 2016
Jun 27, 2016
275
return settingsValue("ui/keyboardLayout", "english").toString();
Jun 27, 2016
Jun 27, 2016
276
277
278
279
280
281
282
283
284
285
286
287
288
289
}
void Util::setKeyboardLayout(const QString &layout)
{
if (layout == keyboardLayout()) {
return;
}
setSettingsValue("ui/keyboardLayout", layout);
emit keyboardLayoutChanged();
}
int Util::extraLinesFromCursor()
{
Jun 27, 2016
Jun 27, 2016
290
return settingsValue("ui/showExtraLinesFromCursor", 1).toInt();
Jun 27, 2016
Jun 27, 2016
291
292
293
294
}
QString Util::charset()
{
Jun 27, 2016
Jun 27, 2016
295
return settingsValue("terminal/charset", "UTF-8").toString();
Jun 27, 2016
Jun 27, 2016
296
297
298
299
}
int Util::keyboardMargins()
{
Jun 27, 2016
Jun 27, 2016
300
return settingsValue("ui/keyboardMargins", 10).toInt();
Jun 27, 2016
Jun 27, 2016
301
302
303
304
}
int Util::orientationMode()
{
Jun 27, 2016
Jun 27, 2016
305
QString mode = settingsValue("ui/orientationLockMode", "auto").toString();
Jun 27, 2016
Jun 27, 2016
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
if (mode == "auto") {
return OrientationAuto;
} else if (mode == "landscape") {
return OrientationLandscape;
} else {
return OrientationPortrait;
}
}
void Util::setOrientationMode(int mode)
{
if (mode == orientationMode()) {
return;
}
QString modeString;
switch(mode) {
case OrientationAuto:
modeString = "auto";
break;
case OrientationLandscape:
modeString = "landscape";
break;
case OrientationPortrait:
default:
modeString = "portrait";
}
setSettingsValue("ui/orientationLockMode", modeString);
emit orientationModeChanged();
}
bool Util::showWelcomeScreen()
{
Jun 27, 2016
Jun 27, 2016
341
return settingsValue("state/showWelcomeScreen", true).toBool();
Jun 27, 2016
Jun 27, 2016
342
343
344
345
346
347
348
349
350
351
}
void Util::setShowWelcomeScreen(bool value)
{
if (value != showWelcomeScreen()) {
setSettingsValue("state/showWelcomeScreen", value);
emit showWelcomeScreenChanged();
}
}
Feb 20, 2013
Feb 20, 2013
352
353
void Util::notifyText(QString text)
{
Jun 8, 2016
Jun 8, 2016
354
emit notify(text);
Feb 20, 2013
Feb 20, 2013
355
356
357
358
}
void Util::copyTextToClipboard(QString str)
{
Jul 22, 2013
Jul 22, 2013
359
QClipboard *cb = QGuiApplication::clipboard();
Jan 17, 2014
Jan 17, 2014
360
361
362
cb->clear();
cb->setText(str);
Feb 20, 2013
Feb 20, 2013
363
364
365
366
}
bool Util::terminalHasSelection()
{
Jun 8, 2016
Jun 8, 2016
367
368
369
if (!iTerm) {
return false;
}
Feb 20, 2013
Feb 20, 2013
370
371
372
373
374
return !iTerm->selection().isNull();
}
bool Util::canPaste()
{
Jul 22, 2013
Jul 22, 2013
375
QClipboard *cb = QGuiApplication::clipboard();
Aug 7, 2013
Aug 7, 2013
376
Mar 25, 2014
Mar 25, 2014
377
return !cb->text().isEmpty();
Feb 20, 2013
Feb 20, 2013
378
}