File indexing completed on 2024-05-12 04:58:28

0001 /* ============================================================
0002 * Falkon - Qt web browser
0003 * Copyright (C) 2010-2016 David Rosca <nowrep@gmail.com>
0004 *
0005 * This program is free software: you can redistribute it and/or modify
0006 * it under the terms of the GNU General Public License as published by
0007 * the Free Software Foundation, either version 3 of the License, or
0008 * (at your option) any later version.
0009 *
0010 * This program is distributed in the hope that it will be useful,
0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013 * GNU General Public License for more details.
0014 *
0015 * You should have received a copy of the GNU General Public License
0016 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
0017 * ============================================================ */
0018 #ifndef QZTOOLS_H
0019 #define QZTOOLS_H
0020 
0021 #include <QFileDialog>
0022 #include <QStylePainter>
0023 
0024 #include "qzcommon.h"
0025 
0026 class QSslCertificate;
0027 class QFontMetrics;
0028 class QPixmap;
0029 class QIcon;
0030 class QWidget;
0031 class QUrl;
0032 
0033 class FALKON_EXPORT QzTools
0034 {
0035 public:
0036     static QByteArray pixmapToByteArray(const QPixmap &pix);
0037     static QPixmap pixmapFromByteArray(const QByteArray &data);
0038     static QUrl pixmapToDataUrl(const QPixmap &pix);
0039     static QPixmap dpiAwarePixmap(const QString &path);
0040 
0041     static QString readAllFileContents(const QString &filename);
0042     static QByteArray readAllFileByteContents(const QString &filename);
0043 
0044     static void centerWidgetOnScreen(QWidget* w);
0045     static void centerWidgetToParent(QWidget* w, QWidget* parent);
0046 
0047     static bool removeRecursively(const QString &filePath);
0048     static bool copyRecursively(const QString &sourcePath, const QString &targetPath);
0049 
0050     static QString samePartOfStrings(const QString &one, const QString &other);
0051     static QString urlEncodeQueryString(const QUrl &url);
0052     static QString fromPunycode(const QString &str);
0053     static QString escapeSqlGlobString(QString urlString);
0054 
0055     static QString ensureUniqueFilename(const QString &name, const QString &appendFormat = QSL("(%1)"));
0056     static QString getFileNameFromUrl(const QUrl &url);
0057     static QString filterCharsFromFilename(const QString &name);
0058 
0059     static QString lastPathForFileDialog(const QString &dialogName, const QString &fallbackPath);
0060     static void saveLastPathForFileDialog(const QString &dialogName, const QString &path);
0061 
0062     static QString alignTextToWidth(const QString &string, const QString &text, const QFontMetrics &metrics, int width);
0063     static QString fileSizeToString(qint64 size);
0064 
0065     static QPixmap createPixmapForSite(const QIcon &icon, const QString &title, const QString &url);
0066     static QString applyDirectionToPage(QString &pageContents);
0067     static QString truncatedText(const QString &text, int size);
0068 
0069     static QString resolveFromPath(const QString &name);
0070     static QStringList splitCommandArguments(const QString &command);
0071     static bool startExternalProcess(const QString &executable, const QString &args);
0072 
0073     static QRegion roundedRect(const QRect &rect, int radius);
0074     static QIcon iconFromFileName(const QString &fileName);
0075     static bool isUtf8(const char* string);
0076 
0077     static bool containsSpace(const QString &str);
0078 
0079     // QFileDialog static functions that remembers last used directory
0080     static QString getExistingDirectory(const QString &name, QWidget* parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = QFileDialog::ShowDirsOnly);
0081     static QString getOpenFileName(const QString &name, QWidget* parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options());
0082     static QStringList getOpenFileNames(const QString &name, QWidget* parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options());
0083     static QString getSaveFileName(const QString &name, QWidget* parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options());
0084 
0085     static bool matchDomain(const QString &pattern, const QString &domain);
0086     static QKeySequence actionShortcut(const QKeySequence &shortcut, const QKeySequence &fallBack, const QKeySequence &shortcutRtl = QKeySequence(), const QKeySequence &fallbackRtl = QKeySequence());
0087 
0088     static QString operatingSystem();
0089     static QString cpuArchitecture();
0090     static QString operatingSystemLong();
0091 
0092     static void setWmClass(const QString &name, const QWidget* widget);
0093 
0094     template <typename T>
0095     static bool containsIndex(const T &container, int index)
0096     {
0097         return (index >= 0 && container.count() > index);
0098     }
0099 
0100     static void paintDropIndicator(QWidget *widget, const QRect &r);
0101 };
0102 
0103 #endif // QZTOOLS_H