1 #ifndef SEAFILE_CLIENT_UTILS_H_
2 #define SEAFILE_CLIENT_UTILS_H_
3 
4 #include <jansson.h>
5 #include <QString>
6 #include <QDir>
7 #include <QMap>
8 #include <QHash>
9 #include <QUrl>
10 #include <QSslError>
11 
12 class QSslCipher;
13 class QSslCertificate;
14 
15 #define toCStr(_s)   ((_s).isNull() ? NULL : (_s).toUtf8().data())
16 
17 #if defined(XCODE_APP)
18 #define RESOURCE_PATH(_name)  (QDir(QCoreApplication::applicationDirPath()).filePath(QString("../Resources/")+(_name)))
19 #else
20 #define RESOURCE_PATH(_name)  (_name)
21 #endif
22 
23 struct sqlite3;
24 struct sqlite3_stmt;
25 
26 typedef bool (*SqliteRowFunc) (sqlite3_stmt *stmt, void *data);
27 
28 sqlite3_stmt *sqlite_query_prepare (sqlite3 *db, const char *sql);
29 
30 int sqlite_query_exec (sqlite3 *db, const char *sql);
31 
32 int sqlite_foreach_selected_row (sqlite3 *db, const char *sql,
33                                  SqliteRowFunc callback, void *data);
34 
35 int checkdir_with_mkdir (const char *dir);
36 
37 int get_seafile_auto_start();
38 
39 int set_seafile_auto_start(bool on);
40 
41 int set_seafile_dock_icon_style(bool hidden);
42 
43 typedef bool (*KeyValueFunc) (void *data, const char *key,
44                               const char *value);
45 
46 bool parse_key_value_pairs (char *string, KeyValueFunc func, void *data);
47 
48 QString getBrand();
49 
50 QString translateCommitTime(qint64 timestamp, bool hours_and_minutes = false);
51 
52 QString readableFileSize(qint64 size);
53 
54 QString readableFileSizeV2(qint64 size);
55 
56 QMap<QString, QVariant> mapFromJSON(json_t *json, json_error_t *error);
57 QString mapToJson(QMap<QString, QVariant> map);
58 
59 QString defaultCcnetDir();
60 
61 QString defaultDownloadDir();
62 
63 // open file use native default file handler, return false if failed
64 bool openInNativeExtension(const QString &path);
65 
66 // open file and select it in native file browser, return false if failed
67 bool showInGraphicalShell(const QString& path);
68 
69 QString md5(const QString& s);
70 
71 QUrl urlJoin(const QUrl& url, const QString& tail);
72 
73 void removeDirRecursively(const QString &path);
74 
75 QString dumpHexPresentation(const QByteArray &bytes);
76 
77 QString dumpSslErrors(const QList<QSslError>&);
78 
79 QString dumpCipher(const QSslCipher &cipher);
80 
81 QString dumpCertificate(const QSslCertificate &cert);
82 
83 QString dumpCertificateFingerprint(const QSslCertificate &cert,
84                                    const QCryptographicHash::Algorithm &algorithm = QCryptographicHash::Md5);
85 
86 void msleep(int mseconds);
87 
88 
89 QUrl includeQueryParams(const QUrl& url,
90                         const QHash<QString, QString>& params);
91 
92 QByteArray buildFormData(const QHash<QString, QString>& params);
93 
94 int digitalCompare(const QString &left, const QString &right);
95 
96 bool shouldUseFramelessWindow();
97 
98 #endif
99