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