浏览代码

support building with non-patched QT5

This was tested only with QT 5.0 and may need to be updated for later
versions of QT 5.x
Ashish Kulkarni 11 年之前
父节点
当前提交
9271bc27d5

+ 1 - 0
common.pri

@@ -41,6 +41,7 @@ win32:      CONFIG += console
 win32-g++*: QMAKE_LFLAGS += -static-libgcc -static-libstdc++
 win32-g++*: QMAKE_LFLAGS += -static-libgcc -static-libstdc++
 
 
 QT += webkit network xmlpatterns svg
 QT += webkit network xmlpatterns svg
+greaterThan(QT_MAJOR_VERSION, 4): QT += webkitwidgets
 
 
 # version related information
 # version related information
 VERSION_TEXT=$$(WKHTMLTOX_VERSION)
 VERSION_TEXT=$$(WKHTMLTOX_VERSION)

+ 4 - 0
include/wkhtmltox/multipageloader.hh

@@ -26,7 +26,11 @@
 #include <QFile>
 #include <QFile>
 #include <QObject>
 #include <QObject>
 #include <QUrl>
 #include <QUrl>
+#if QT_VERSION >= 0x050000
+#include <QtWebKitWidgets>
+#else
 #include <QWebPage>
 #include <QWebPage>
+#endif
 #include <wkhtmltox/loadsettings.hh>
 #include <wkhtmltox/loadsettings.hh>
 
 
 #include <wkhtmltox/dllbegin.inc>
 #include <wkhtmltox/dllbegin.inc>

+ 3 - 4
include/wkhtmltox/utilities.hh

@@ -23,8 +23,7 @@
 #endif
 #endif
 #endif
 #endif
 
 
-#include <QCleanlooksStyle>
-#include <QCommonStyle>
+#include <QProxyStyle>
 #include <QFile>
 #include <QFile>
 #include <QFileInfo>
 #include <QFileInfo>
 #include <QImageWriter>
 #include <QImageWriter>
@@ -37,10 +36,10 @@
 /**
 /**
  * Custom simplistic style
  * Custom simplistic style
  */
  */
-class DLL_PUBLIC MyLooksStyle: public QCleanlooksStyle {
+class DLL_PUBLIC MyLooksStyle: public QProxyStyle {
 	Q_OBJECT
 	Q_OBJECT
 public:
 public:
-	typedef QCleanlooksStyle parent_t;
+	typedef QProxyStyle parent_t;
 	MyLooksStyle();
 	MyLooksStyle();
 	void drawPrimitive( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) const;
 	void drawPrimitive( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) const;
 	bool weAreDrawingForms;
 	bool weAreDrawingForms;

+ 13 - 3
src/lib/multipageloader.cc

@@ -31,6 +31,9 @@
 #include <QNetworkDiskCache>
 #include <QNetworkDiskCache>
 #include <QTimer>
 #include <QTimer>
 #include <QUuid>
 #include <QUuid>
+#if QT_VERSION >= 0x050000
+#include <QUrlQuery>
+#endif
 
 
 namespace wkhtmltopdf {
 namespace wkhtmltopdf {
 /*!
 /*!
@@ -103,7 +106,7 @@ QNetworkReply * MyNetworkAccessManager::createRequest(Operation op, const QNetwo
 	if (settings.repeatCustomHeaders) {
 	if (settings.repeatCustomHeaders) {
 		typedef QPair<QString, QString> HT;
 		typedef QPair<QString, QString> HT;
 		foreach (const HT & j, settings.customHeaders)
 		foreach (const HT & j, settings.customHeaders)
-			r3.setRawHeader(j.first.toAscii(), j.second.toAscii());
+			r3.setRawHeader(j.first.toLatin1(), j.second.toLatin1());
 	}
 	}
 	return QNetworkAccessManager::createRequest(op, r3, outgoingData);
 	return QNetworkAccessManager::createRequest(op, r3, outgoingData);
 }
 }
@@ -415,10 +418,17 @@ void ResourceObject::load() {
 			postData.append("--\n");
 			postData.append("--\n");
 		}
 		}
 	} else {
 	} else {
+#if QT_VERSION >= 0x050000
+		QUrlQuery q;
+		foreach (const settings::PostItem & pi, settings.post)
+			q.addQueryItem(pi.name, pi.value);
+		postData = q.query(QUrl::FullyEncoded).toLocal8Bit();
+#else
 		QUrl u;
 		QUrl u;
 		foreach (const settings::PostItem & pi, settings.post)
 		foreach (const settings::PostItem & pi, settings.post)
 			u.addQueryItem(pi.name, pi.value);
 			u.addQueryItem(pi.name, pi.value);
 		postData = u.encodedQuery();
 		postData = u.encodedQuery();
+#endif
 	}
 	}
 
 
 
 
@@ -429,7 +439,7 @@ void ResourceObject::load() {
 	QNetworkRequest r = QNetworkRequest(url);
 	QNetworkRequest r = QNetworkRequest(url);
 	typedef QPair<QString, QString> HT;
 	typedef QPair<QString, QString> HT;
 	foreach (const HT & j, settings.customHeaders)
 	foreach (const HT & j, settings.customHeaders)
-		r.setRawHeader(j.first.toAscii(), j.second.toAscii());
+		r.setRawHeader(j.first.toLatin1(), j.second.toLatin1());
 
 
 	if (postData.isEmpty())
 	if (postData.isEmpty())
 		webPage.mainFrame()->load(r);
 		webPage.mainFrame()->load(r);
@@ -634,7 +644,7 @@ QUrl MultiPageLoader::guessUrlFromString(const QString &string) {
 
 
 		QUrl url;
 		QUrl url;
 		if (isAscii) {
 		if (isAscii) {
-			url = QUrl::fromEncoded(urlStr.toAscii(), QUrl::TolerantMode);
+			url = QUrl::fromEncoded(urlStr.toLatin1(), QUrl::TolerantMode);
 		} else {
 		} else {
 			url = QUrl(urlStr, QUrl::TolerantMode);
 			url = QUrl(urlStr, QUrl::TolerantMode);
 		}
 		}

+ 4 - 0
src/lib/multipageloader.hh

@@ -29,7 +29,11 @@
 #include <QFile>
 #include <QFile>
 #include <QObject>
 #include <QObject>
 #include <QUrl>
 #include <QUrl>
+#if QT_VERSION >= 0x050000
+#include <QtWebKitWidgets>
+#else
 #include <QWebPage>
 #include <QWebPage>
+#endif
 #include <wkhtmltox/loadsettings.hh>
 #include <wkhtmltox/loadsettings.hh>
 
 
 #include <wkhtmltox/dllbegin.inc>
 #include <wkhtmltox/dllbegin.inc>

+ 4 - 6
src/lib/pdfconverter.cc

@@ -273,11 +273,10 @@ QPrinter * PdfConverterPrivate::createPrinter(const QString & tempFile) {
 
 
     printer->setOutputFileName(tempFile);
     printer->setOutputFileName(tempFile);
     printer->setOutputFormat(
     printer->setOutputFormat(
-        (settings.outputFormat == "ps" || (settings.outputFormat == "" && settings.out.endsWith(".ps", Qt::CaseInsensitive)))?
 #ifdef Q_WS_MACX
 #ifdef Q_WS_MACX
-        QPrinter::PostScriptFormat : settings.useNativeFormatPrinter ? QPrinter::NativeFormat : QPrinter::PdfFormat
+        settings.useNativeFormatPrinter ? QPrinter::NativeFormat : QPrinter::PdfFormat
 #else
 #else
-        QPrinter::PostScriptFormat : QPrinter::PdfFormat
+        QPrinter::PdfFormat
 #endif
 #endif
         );
         );
 
 
@@ -359,11 +358,10 @@ void PdfConverterPrivate::pagesLoaded(bool ok) {
 
 
 	printer->setOutputFileName(lout);
 	printer->setOutputFileName(lout);
 	printer->setOutputFormat(
 	printer->setOutputFormat(
-		(settings.outputFormat == "ps" || (settings.outputFormat == "" && settings.out.endsWith(".ps", Qt::CaseInsensitive)))?
 #ifdef Q_WS_MACX
 #ifdef Q_WS_MACX
-		QPrinter::PostScriptFormat : settings.useNativeFormatPrinter ? QPrinter::NativeFormat : QPrinter::PdfFormat
+		settings.useNativeFormatPrinter ? QPrinter::NativeFormat : QPrinter::PdfFormat
 #else
 #else
-		QPrinter::PostScriptFormat : QPrinter::PdfFormat
+		QPrinter::PdfFormat
 #endif
 #endif
 		);
 		);
 
 

+ 4 - 4
src/lib/reflect.cc

@@ -38,15 +38,15 @@ bool ReflectSimple::set(const char * name, const QString & value) {
 QString ReflectClass::get(const char * name) {
 QString ReflectClass::get(const char * name) {
 	int i=0;
 	int i=0;
 	while (name[i] !=0 && name[i] != '.' && name[i] != '[') ++i;
 	while (name[i] !=0 && name[i] != '.' && name[i] != '[') ++i;
-	if (!elms.contains(QString::fromAscii(name, i))) return QString();
-	return elms[QString::fromAscii(name,i)]->get(name + (name[i] == '.'?i+1:i));
+	if (!elms.contains(QString::fromLatin1(name, i))) return QString();
+	return elms[QString::fromLatin1(name,i)]->get(name + (name[i] == '.'?i+1:i));
 }
 }
 
 
 bool ReflectClass::set(const char * name, const QString & value) {
 bool ReflectClass::set(const char * name, const QString & value) {
 	int i=0;
 	int i=0;
 	while (name[i] !=0 && name[i] != '.' && name[i] != '[') ++i;
 	while (name[i] !=0 && name[i] != '.' && name[i] != '[') ++i;
-	if (!elms.contains(QString::fromAscii(name, i))) return false;
-	return elms[QString::fromAscii(name,i)]->set(name + (name[i] == '.'?i+1:i), value);
+	if (!elms.contains(QString::fromLatin1(name, i))) return false;
+	return elms[QString::fromLatin1(name,i)]->set(name + (name[i] == '.'?i+1:i), value);
 }
 }
 
 
 
 

+ 1 - 1
src/lib/reflect.hh

@@ -229,7 +229,7 @@ struct DLL_LOCAL ReflectImpl< QList< X> >: public Reflect {
 			next = 0;
 			next = 0;
 			while (name[next] != '\0' && name[next] != ']') ++next;
 			while (name[next] != '\0' && name[next] != ']') ++next;
 			bool ok=true;
 			bool ok=true;
-			elm = QString::fromAscii(name+1,next-1).toInt(&ok);
+			elm = QString::fromLatin1(name+1,next-1).toInt(&ok);
 			if (name[next] == ']') ++next;
 			if (name[next] == ']') ++next;
 			return ok;
 			return ok;
 		}
 		}

+ 1 - 1
src/lib/tocstylesheet.cc

@@ -26,7 +26,7 @@
 
 
 #include "outline_p.hh"
 #include "outline_p.hh"
 #include "pdfsettings.hh"
 #include "pdfsettings.hh"
-#include <QTextOStream>
+#include <QTextStream>
 
 
 namespace wkhtmltopdf {
 namespace wkhtmltopdf {
 
 

+ 3 - 4
src/lib/utilities.hh

@@ -26,8 +26,7 @@
 #endif
 #endif
 #endif
 #endif
 
 
-#include <QCleanlooksStyle>
-#include <QCommonStyle>
+#include <QProxyStyle>
 #include <QFile>
 #include <QFile>
 #include <QFileInfo>
 #include <QFileInfo>
 #include <QImageWriter>
 #include <QImageWriter>
@@ -40,10 +39,10 @@
 /**
 /**
  * Custom simplistic style
  * Custom simplistic style
  */
  */
-class DLL_PUBLIC MyLooksStyle: public QCleanlooksStyle {
+class DLL_PUBLIC MyLooksStyle: public QProxyStyle {
 	Q_OBJECT
 	Q_OBJECT
 public:
 public:
-	typedef QCleanlooksStyle parent_t;
+	typedef QProxyStyle parent_t;
 	MyLooksStyle();
 	MyLooksStyle();
 	void drawPrimitive( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) const;
 	void drawPrimitive( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) const;
 	bool weAreDrawingForms;
 	bool weAreDrawingForms;

+ 0 - 1
src/pdf/wkhtmltopdf.cc

@@ -20,7 +20,6 @@
 
 
 #include "pdfcommandlineparser.hh"
 #include "pdfcommandlineparser.hh"
 #include "progressfeedback.hh"
 #include "progressfeedback.hh"
-#include <QCleanlooksStyle>
 #include <QCommonStyle>
 #include <QCommonStyle>
 #include <QPainter>
 #include <QPainter>
 #include <QStyleOption>
 #include <QStyleOption>

+ 4 - 0
src/shared/htmloutputter.cc

@@ -21,7 +21,11 @@
 #include "outputter.hh"
 #include "outputter.hh"
 #include <QTextDocument>
 #include <QTextDocument>
 
 
+#if QT_VERSION >= 0x050000
+#define S(x) x.toHtmlEscaped().toUtf8().constData()
+#else
 #define S(x) Qt::escape(x).toUtf8().constData()
 #define S(x) Qt::escape(x).toUtf8().constData()
+#endif
 
 
 class HtmlOutputter: public Outputter {
 class HtmlOutputter: public Outputter {
 private:
 private: