1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-11 17:42:10 +01:00
falkonOfficial/src/tools/globalfunctions.cpp

162 lines
3.9 KiB
C++

/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2011 nowrep
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "globalfunctions.h"
QByteArray qz_pixmapToByteArray(const QPixmap &pix)
{
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
if (pix.save(&buffer, "PNG"))
return buffer.buffer().toBase64();
return QByteArray();
}
QByteArray qz_readAllFileContents(const QString &filename)
{
QFile file(filename);
file.open(QFile::ReadOnly);
QByteArray a = file.readAll();
file.close();
return a;
}
void qz_centerWidgetOnScreen(QWidget *w)
{
const QRect screen = QApplication::desktop()->screenGeometry();
const QRect &size = w->geometry();
w->move( (screen.width()-size.width())/2, (screen.height()-size.height())/2 );
}
QString qz_samePartOfStrings(const QString &one, const QString &other)
{
int i = 0;
int maxSize = qMin(one.size(), other.size());
while (one.at(i) == other.at(i)) {
i++;
if (i == maxSize)
break;
}
return one.left(i);
}
QUrl qz_makeRelativeUrl(const QUrl &baseUrl, const QUrl &rUrl)
{
QString baseUrlPath = baseUrl.path();
QString rUrlPath = rUrl.path();
QString samePart = qz_samePartOfStrings(baseUrlPath, rUrlPath);
QUrl returnUrl;
if (samePart.isEmpty()) {
returnUrl = rUrl;
}
else if (samePart == "/") {
returnUrl = QUrl(rUrl.path());
}
else {
samePart = samePart.left(samePart.lastIndexOf("/") + 1);
int slashCount = samePart.count("/") + 1;
if (samePart.startsWith("/"))
slashCount--;
if (samePart.endsWith("/"))
slashCount--;
rUrlPath.remove(samePart);
rUrlPath.prepend(QString("../").repeated(slashCount));
returnUrl = QUrl(rUrlPath);
}
return returnUrl;
}
QString qz_ensureUniqueFilename(const QString &pathToFile)
{
if (!QFile::exists(pathToFile))
return pathToFile;
QString tmpFileName = pathToFile;
int i = 1;
while (QFile::exists(tmpFileName)) {
tmpFileName = pathToFile;
int index = tmpFileName.lastIndexOf(".");
if (index == -1) {
tmpFileName.append("("+QString::number(i)+")");
} else {
tmpFileName = tmpFileName.mid(0, index) + "("+QString::number(i)+")" + tmpFileName.mid(index);
}
i++;
}
return tmpFileName;
}
QString qz_buildSystem()
{
#ifdef Q_OS_LINUX
return "Linux";
#endif
#ifdef Q_OS_UNIX
return "Unix";
#endif
#ifdef Q_OS_BSD4
return "BSD 4.4";
#endif
#ifdef Q_OS_BSDI
return "BSD/OS";
#endif
#ifdef Q_OS_FREEBSD
return "FreeBSD";
#endif
#ifdef Q_OS_HPUX
return "HP-UX";
#endif
#ifdef Q_OS_HURD
return "GNU Hurd";
#endif
#ifdef Q_OS_LYNX
return "LynxOS";
#endif
#ifdef Q_OS_MAC
return "MAC OS";
#endif
#ifdef Q_OS_NETBSD
return "NetBSD";
#endif
#ifdef Q_OS_OS2
return "OS/2";
#endif
#ifdef Q_OS_OPENBSD
return "OpenBSD";
#endif
#ifdef Q_OS_OSF
return "HP Tru64 UNIX";
#endif
#ifdef Q_OS_SOLARIS
return "Sun Solaris";
#endif
#ifdef Q_OS_UNIXWARE
return "UnixWare 7 / Open UNIX 8";
#endif
#ifdef Q_OS_WIN32
return "Windows";
#endif
}