1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#include "uiutils.h"
#include "services/config.h"
#include "common/widgetstateindicator.h"
#include "common/utils.h"
#include <QObject>
#include <QCheckBox>
#include <QSpinBox>
#include <QLineEdit>
#include <QDateTimeEdit>
#include <QFileDialog>
#include <QStringList>
#include <QSet>
#include <QDebug>
#include <QPainter>
#include <QDesktopWidget>
#include <QApplication>
const QStringList pageSizes = {
"A4", "B5", "Letter", "Legal", "Executive", "A0", "A1", "A2", "A3", "A5", "A6", "A7", "A8", "A9", "B0", "B1",
"B10", "B2", "B3", "B4", "B6", "B7", "B8", "B9", "C5E", "Comm10E", "DLE", "Folio", "Ledger", "Tabloid", "Custom"
};
const QStringList pageSizesWithDimensions;
QString getDbPath(bool newFileMode, const QString &startWith)
{
QString dir = startWith;
if (dir.isNull())
dir = CFG->get("dialogCache", "lastDbDir").toString();
QStringList filters;
filters += QObject::tr("All SQLite databases")+" (*.db *.sdb *.sqlite *.db3 *.s3db *.sqlite3 *.sl3 *.db2 *.s2db *.sqlite2 *.sl2)";
filters += "SQLite3 (*.db3 *.s3db *.sqlite3 *.sl3)";
filters += "SQLite2 (*.db2 *.s2db *.sqlite2 *.sl2)";
filters += QObject::tr("All files")+" (*)";
QString filter = filters.join(";;");
if (newFileMode)
return QFileDialog::getSaveFileName(0, QObject::tr("Database file"), dir, filter, &filters[0], QFileDialog::DontConfirmOverwrite);
else
return QFileDialog::getOpenFileName(0, QObject::tr("Database file"), dir, filter, &filters[0]);
}
void setValidState(QWidget *widget, bool valid, const QString& message)
{
INDICATOR(widget)->setMode(WidgetStateIndicator::Mode::ERROR);
INDICATOR(widget)->setVisible(!valid, valid ? QString() : message);
}
void setValidStateWihtTooltip(QWidget* widget, const QString& tooltip, bool valid, const QString& message)
{
if (!valid)
{
INDICATOR(widget)->setMode(WidgetStateIndicator::Mode::ERROR);
INDICATOR(widget)->setVisible(true, message);
}
else
{
INDICATOR(widget)->setMode(WidgetStateIndicator::Mode::HINT);
INDICATOR(widget)->setVisible(widget->isEnabled(), tooltip);
}
}
void setValidStateWarning(QWidget* widget, const QString& warning)
{
INDICATOR(widget)->setMode(WidgetStateIndicator::Mode::WARNING);
INDICATOR(widget)->setVisible(widget->isEnabled(), warning);
}
void setValidStateInfo(QWidget* widget, const QString& info)
{
INDICATOR(widget)->setMode(WidgetStateIndicator::Mode::INFO);
INDICATOR(widget)->setVisible(widget->isEnabled(), info);
}
void setValidStateTooltip(QWidget* widget, const QString& tip)
{
INDICATOR(widget)->setMode(WidgetStateIndicator::Mode::HINT);
INDICATOR(widget)->setVisible(widget->isEnabled(), tip);
}
QString convertPageSize(QPagedPaintDevice::PageSize size)
{
const int pageSizesSize = pageSizes.size();
int idx = static_cast<int>(size);
if (idx < 0 || idx >= pageSizesSize)
{
qDebug() << "Asked to convertPageSize() with page side enum value out of range:" << idx;
return QString::null;
}
return pageSizes[idx];
}
QPagedPaintDevice::PageSize convertPageSize(const QString& size)
{
return static_cast<QPagedPaintDevice::PageSize>(indexOf(pageSizes, size, Qt::CaseInsensitive));
}
const QStringList& getAllPageSizes()
{
return pageSizes;
}
QPixmap addOpacity(const QPixmap& input, float opacity)
{
QPixmap output(input.size());
output.fill(Qt::transparent);
QPainter p(&output);
p.setOpacity(opacity);
p.drawPixmap(0, 0, input);
p.end();
return output;
}
void limitDialogWidth(QDialog* dialog)
{
dialog->setMaximumWidth(QApplication::desktop()->availableGeometry().width());
}
void fixTextCursorSelectedText(QString& text)
{
text.replace("\u2029", "\n");
}
|