ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/s10k/CommonUtils/util.h
(Generate patch)

Comparing s10k/CommonUtils/util.h (file contents):
Revision 1073 by s10k, Thu Oct 5 17:48:32 2017 UTC vs.
Revision 1095 by s10k, Sat Dec 30 14:30:28 2017 UTC

# Line 1 | Line 1
1 < /**
2 < * Copyright (C) 2017 - Fábio Bento (random-guy)
3 < *
4 < * This library is distributed under the MIT License. See notice at the end
5 < * of this file.
6 < *
7 < */
8 <
9 < #ifndef UTIL_H
10 < #define UTIL_H
11 <
12 < #include <QtGlobal> // for debug macros
13 < #ifdef QT_DEBUG
14 < #include <QDebug>
15 < #endif
16 < #include <QRegularExpression>
17 < #include <QString>
18 < #include <QUrl>
19 < #include <QCoreApplication>
20 < #include <QSettings>
21 < #include <QXmlStreamReader>
22 < #include <memory>
23 < #include <QDirIterator>
24 < #include <QCryptographicHash>
25 < #include <string.h>
26 <
27 < #ifdef QT_GUI_LIB
28 < #include <QMessageBox>
29 < #include <QFileDialog>
30 < #include <QListView>
31 < #include <QTreeView>
32 < #include <QDesktopServices>
33 < #include <QDesktopWidget>
34 < #include <QStatusBar>
35 < #include <QTableWidget>
36 < #include <QCheckBox>
37 < #include <QHBoxLayout>
38 < #endif
39 <
40 < /**
41 <  Utilities functions (global)
42 <  **/
43 < namespace Util{
44 <
45 < namespace FileSystem {
46 <
47 < QString normalizePath(QString path);
48 <
49 < QString cutName(QString path);
50 <
51 < QString cutNameWithoutBackSlash(QString path);
52 <
53 < QString normalizeAndQuote(QString path);
54 <
55 < bool copyDir(const QString &fromPath, QString toPath, const bool isRecursive = false);
56 <
57 < bool rmDir(const QString &dirPath);
58 <
59 < QStringList getFolderFilesByWildcard(const QString &entryFolder, const QString &wildcard, bool isRecursive = false);
60 <
61 < QStringList filterFilesByWildcard(const QStringList &filePaths, const QString &wildcard);
62 <
63 < QString fileHash(const QString &fileName, QCryptographicHash::Algorithm hashAlgorithm);
64 <
65 < QString getAppPath();
66 <
67 < bool backupFile(QString file);
68 <
69 < }
70 <
71 < namespace String {
72 <
73 < // Not using a function because we need to have this as inline function (in both debug and release mods)
74 < // QString(string).toUtf8().constData() -> since this creates a temporary it needs to be inline
75 < #ifndef QSTR_TO_CSTR
76 < #  define QSTR_TO_CSTR qUtf8Printable
77 < #endif
78 <
79 < QString insertApostrophes(const QString &currString);
80 <
81 < QString insertQuotes(const QString &currString);
82 <
83 < QString fullTrim(QString str);
84 <
85 < QStringList substring(QString myString, QString separator, Qt::CaseSensitivity cs = Qt::CaseSensitive);
86 <
87 < QString normalizeDecimalSeparator(QString value);
88 <
89 < // no problem here with "temporary" cstr
90 < // https://stackoverflow.com/questions/1971183/when-does-c-allocate-deallocate-string-literals
91 < const char* boolToCstr(bool currentBoolean);
92 <
93 < }
94 <
95 < #ifdef QT_GUI_LIB
96 < namespace Dialogs {
97 <
98 < void showInfo(const QString &message);
99 <
100 < void showRichInfo(const QString &message);
101 <
102 < void showWarning(const QString &message);
103 <
104 < void showError(const QString &message);
105 <
106 < void showRichError(const QString &message);
107 <
108 < bool showQuestion(QWidget * parent, QString message, QMessageBox::StandardButton standardButton=QMessageBox::NoButton);
109 <
110 < QMessageBox::StandardButton showQuestionWithCancel(QWidget * parent, QString message, QMessageBox::StandardButton standardButton=QMessageBox::NoButton);
111 <
112 < QStringList multipleDirSelection(const QString &title);
113 <
114 < }
115 < #endif
116 <
117 < namespace Validation {
118 <
119 < bool checkEmptySpaces(QStringList toCheck);
120 < bool checkIfIntegers(QStringList toCheck);
121 < bool checkIfDoubles(QStringList toCheck);
122 < bool isStringInteger(QString myString);
123 < bool isStringDouble(QString myString);
124 <
125 < }
126 <
127 < #ifdef QT_GUI_LIB
128 < namespace TableWidget {
129 <
130 < void addRow(QTableWidget *myTable, QStringList &columns);
131 < QModelIndexList getSelectedRows(QTableWidget *myTable);
132 < QModelIndexList getCurrentRows(QTableWidget *myTable);
133 < int getNumberSelectedRows(QTableWidget *myTable);
134 < void clearContents(QTableWidget *myTable, const QString &nothingToClearMessage, const QString &questionToClear);
135 < void clearContentsNoPrompt(QTableWidget *myTable);
136 < void addCheckBox(QTableWidget *myTable, int row, int column, QCheckBox *checkbox = nullptr);
137 < QCheckBox* getCheckBoxFromCell(QTableWidget *myTable, int row, int column);
138 < void swapRows(QTableWidget *myTable, const int indexSourceRow, const int indexDestinationRow, bool selectSwappedRow);
139 < void deleteSelectedRows(QTableWidget *myTable);
140 <
141 < }
142 < #endif
143 <
144 < namespace System {
145 < #ifdef QT_GUI_LIB
146 < QRect getScreenResolution();
147 < #endif
148 < }
149 <
150 < #ifdef QT_GUI_LIB
151 < namespace StatusBar {
152 <
153 < void showError(QStatusBar * const statusBar, const QString &message);
154 < void showSuccess(QStatusBar * const  statusBar,const QString &message);
155 <
156 < }
157 < #endif
158 <
159 <
160 < }
161 < #endif // UTIL_H
162 <
163 < /**
164 < * Copyright (c) 2017 - Fábio Bento (random-guy)
165 < *
166 < * Permission is hereby granted, free of charge, to any person
167 < * obtaining a copy of this software and associated documentation
168 < * files (the "Software"), to deal in the Software without
169 < * restriction, including without limitation the rights to use,
170 < * copy, modify, merge, publish, distribute, sublicense, and/or sell
171 < * copies of the Software, and to permit persons to whom the
172 < * Software is furnished to do so, subject to the following
173 < * conditions:
174 < *
175 < * The above copyright notice and this permission notice shall be
176 < * included in all copies or substantial portions of the Software.
177 < *
178 < * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
179 < * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
180 < * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
181 < * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
182 < * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
183 < * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
184 < * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
185 < * OTHER DEALINGS IN THE SOFTWARE.
186 < */
1 > /**
2 > * Copyright (C) 2017 - Fábio Bento (random-guy)
3 > *
4 > * This library is distributed under the MIT License. See notice at the end
5 > * of this file.
6 > *
7 > */
8 >
9 > #ifndef UTIL_H
10 > #define UTIL_H
11 >
12 > #include <QtGlobal> // for debug macros
13 > #ifdef QT_DEBUG
14 > #include <QDebug>
15 > #endif
16 > #include <QRegularExpression>
17 > #include <QString>
18 > #include <QUrl>
19 > #include <QCoreApplication>
20 > #include <QSettings>
21 > #include <QXmlStreamReader>
22 > #include <memory>
23 > #include <QDirIterator>
24 > #include <QCryptographicHash>
25 > #include <string.h>
26 >
27 > #ifdef QT_GUI_LIB
28 > #include <QMessageBox>
29 > #include <QFileDialog>
30 > #include <QListView>
31 > #include <QTreeView>
32 > #include <QDesktopServices>
33 > #include <QDesktopWidget>
34 > #include <QStatusBar>
35 > #include <QTableWidget>
36 > #include <QCheckBox>
37 > #include <QHBoxLayout>
38 > #endif
39 >
40 > /**
41 >  Utilities functions (global)
42 >  **/
43 > namespace Util{
44 >
45 > namespace FileSystem {
46 >
47 > QString normalizePath(QString path);
48 >
49 > QString cutName(QString path);
50 >
51 > QString cutNameWithoutBackSlash(QString path);
52 >
53 > QString normalizeAndQuote(QString path);
54 >
55 > bool copyDir(const QString &fromPath, QString toPath, const bool isRecursive = false);
56 >
57 > bool rmDir(const QString &dirPath);
58 >
59 > QStringList getFolderFilesByWildcard(const QString &entryFolder, const QString &wildcard, bool isRecursive = false);
60 >
61 > QStringList filterFilesByWildcard(const QStringList &filePaths, const QString &wildcard);
62 >
63 > QString fileHash(const QString &fileName, QCryptographicHash::Algorithm hashAlgorithm);
64 >
65 > QString getAppPath();
66 >
67 > bool backupFile(const QString &file, QString newFilename="");
68 >
69 > }
70 >
71 > namespace String {
72 >
73 > // Not using a function because we need to have this as inline function (in both debug and release mods)
74 > // QString(string).toUtf8().constData() -> since this creates a temporary it needs to be inline
75 > #ifndef QSTR_TO_CSTR
76 > #  define QSTR_TO_CSTR qUtf8Printable
77 > #endif
78 >
79 > QString insertApostrophes(const QString &currString);
80 >
81 > QString insertQuotes(const QString &currString);
82 >
83 > QString fullTrim(QString str);
84 >
85 > QStringList substring(QString myString, QString separator, Qt::CaseSensitivity cs = Qt::CaseSensitive);
86 >
87 > QString normalizeDecimalSeparator(QString value);
88 >
89 > // no problem here with "temporary" cstr
90 > // https://stackoverflow.com/questions/1971183/when-does-c-allocate-deallocate-string-literals
91 > const char* boolToCstr(bool currentBoolean);
92 >
93 > }
94 >
95 > #ifdef QT_GUI_LIB
96 > namespace Dialogs {
97 >
98 > void showInfo(const QString &message);
99 >
100 > void showRichInfo(const QString &message);
101 >
102 > void showWarning(const QString &message);
103 >
104 > void showError(const QString &message);
105 >
106 > void showRichError(const QString &message);
107 >
108 > bool showQuestion(QWidget * parent, QString message, QMessageBox::StandardButton standardButton=QMessageBox::NoButton);
109 >
110 > QMessageBox::StandardButton showQuestionWithCancel(QWidget * parent, QString message, QMessageBox::StandardButton standardButton=QMessageBox::NoButton);
111 >
112 > QStringList multipleDirSelection(const QString &title);
113 >
114 > }
115 > #endif
116 >
117 > namespace Validation {
118 >
119 > bool checkEmptySpaces(QStringList toCheck);
120 > bool checkIfIntegers(QStringList toCheck);
121 > bool checkIfDoubles(QStringList toCheck);
122 > bool isStringInteger(QString myString);
123 > bool isStringDouble(QString myString);
124 >
125 > }
126 >
127 > #ifdef QT_GUI_LIB
128 > namespace TableWidget {
129 >
130 > void addRow(QTableWidget *myTable, QStringList &columns);
131 > QModelIndexList getSelectedRows(QTableWidget *myTable);
132 > QModelIndexList getCurrentRows(QTableWidget *myTable);
133 > int getNumberSelectedRows(QTableWidget *myTable);
134 > void clearContents(QTableWidget *myTable, const QString &nothingToClearMessage, const QString &questionToClear);
135 > void clearContentsNoPrompt(QTableWidget *myTable);
136 > void addCheckBox(QTableWidget *myTable, int row, int column, QCheckBox *checkbox = nullptr);
137 > QCheckBox* getCheckBoxFromCell(QTableWidget *myTable, int row, int column);
138 > void swapRows(QTableWidget *myTable, const int indexSourceRow, const int indexDestinationRow, bool selectSwappedRow);
139 > void deleteSelectedRows(QTableWidget *myTable);
140 >
141 > }
142 > #endif
143 >
144 > namespace System {
145 > #ifdef QT_GUI_LIB
146 > QRect getScreenResolution();
147 > #endif
148 > }
149 >
150 > #ifdef QT_GUI_LIB
151 > namespace StatusBar {
152 >
153 > void showError(QStatusBar * const statusBar, const QString &message);
154 > void showSuccess(QStatusBar * const  statusBar,const QString &message);
155 >
156 > }
157 > #endif
158 >
159 >
160 > }
161 > #endif // UTIL_H
162 >
163 > /**
164 > * Copyright (c) 2017 - Fábio Bento (random-guy)
165 > *
166 > * Permission is hereby granted, free of charge, to any person
167 > * obtaining a copy of this software and associated documentation
168 > * files (the "Software"), to deal in the Software without
169 > * restriction, including without limitation the rights to use,
170 > * copy, modify, merge, publish, distribute, sublicense, and/or sell
171 > * copies of the Software, and to permit persons to whom the
172 > * Software is furnished to do so, subject to the following
173 > * conditions:
174 > *
175 > * The above copyright notice and this permission notice shall be
176 > * included in all copies or substantial portions of the Software.
177 > *
178 > * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
179 > * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
180 > * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
181 > * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
182 > * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
183 > * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
184 > * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
185 > * OTHER DEALINGS IN THE SOFTWARE.
186 > */

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)