summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@nokia.com>2010-07-06 10:25:31 (GMT)
committerMartin Smith <martin.smith@nokia.com>2010-07-06 10:25:31 (GMT)
commit4ebff202b44bb751a1c37db13963362592e86a6d (patch)
treeb458a1b2ae65a97c849ea745df04ad6cefcf9e12
parent3b6c44f773d293f807784b775f352873c793e75a (diff)
parenta37ae8590026de2ef150e3da1b4b986022d6294a (diff)
downloadQt-4ebff202b44bb751a1c37db13963362592e86a6d.zip
Qt-4ebff202b44bb751a1c37db13963362592e86a6d.tar.gz
Qt-4ebff202b44bb751a1c37db13963362592e86a6d.tar.bz2
Merge branch '4.7' of git@scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7
-rw-r--r--doc/src/external-resources.qdoc7
-rwxr-xr-xdoc/src/template/style/style.css11
-rw-r--r--src/corelib/global/qnamespace.qdoc5
-rw-r--r--src/corelib/tools/qdatetime.cpp27
-rw-r--r--src/gui/image/qpicture.cpp52
-rw-r--r--src/network/kernel/qnetworkproxy_win.cpp37
-rw-r--r--tests/auto/qdatetime/tst_qdatetime.cpp6
-rw-r--r--tools/assistant/tools/qcollectiongenerator/main.cpp2
8 files changed, 123 insertions, 24 deletions
diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc
index d4dc2b1..cbd66ee 100644
--- a/doc/src/external-resources.qdoc
+++ b/doc/src/external-resources.qdoc
@@ -410,6 +410,11 @@
*/
/*!
+ \externalpage http://www.iso.org/iso/date_and_time_format
+ \title ISO 8601
+*/
+
+/*!
\externalpage http://opensource.org/licenses/bsd-license.php
\title New and Modified BSD Licenses
-*/
+*/ \ No newline at end of file
diff --git a/doc/src/template/style/style.css b/doc/src/template/style/style.css
index 299806b..184a832 100755
--- a/doc/src/template/style/style.css
+++ b/doc/src/template/style/style.css
@@ -18,6 +18,8 @@
fieldset, img
{
border: 0;
+ height:100%;
+ width:100%
}
address, caption, cite, code, dfn, em, strong, th, var, optgroup
{
@@ -756,6 +758,7 @@
pre
{
border: 1px solid #DDDDDD;
+ -moz-border-radius: 7px 7px 7px 7px;
margin: 0 20px 10px 10px;
padding: 20px 15px 20px 20px;
overflow-x: auto;
@@ -1023,6 +1026,7 @@
}
h3.fn, span.fn
{
+ -moz-border-radius:7px 7px 7px 7px;
background-color: #F6F6F6;
border-width: 1px;
border-style: solid;
@@ -1040,6 +1044,7 @@
border-width: 1px;
border-style: solid;
border-color: #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
width:100%;
}
@@ -1199,6 +1204,7 @@ vertical-align:top;
width:100%;
background-color:#F6F6F6;
border:1px solid #E6E6E6;
+-moz-border-radius: 7px 7px 7px 7px;
font-size:12pt;
padding-left:10px;
margin-top:10px;
@@ -1250,8 +1256,9 @@ pre.highlightedCode {
}
.navTop{
float:right;
- padding-right:5px;
- margin-top:15px;
+ display:block;
+ padding-right:15px;
+ /*margin-top:10px;*/
}
.wrap .content .toc h3{
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index d419759..ed2ae6e 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -565,8 +565,9 @@
be short, localized names. This is basically equivalent to using the date format
string, "ddd MMM d yyyy". See QDate::toString() for more information.
- \value ISODate ISO 8601 extended format: either \c{YYYY-MM-DD} for dates or
- \c{YYYY-MM-DDTHH:MM:SS} for combined dates and times.
+ \value ISODate \l{ISO 8601} extended format: either \c{YYYY-MM-DD} for dates or
+ \c{YYYY-MM-DDTHH:MM:SS}, \c{YYYY-MM-DDTHH:MM:SSTZD} (e.g., 1997-07-16T19:20:30+01:00)
+ for combined dates and times.
\value SystemLocaleShortDate The \l{QLocale::ShortFormat}{short format} used
by the \l{QLocale::system()}{operating system}.
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 5edb364..ab7530d 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -3304,12 +3304,37 @@ QDateTime QDateTime::fromString(const QString& s, Qt::DateFormat f)
if (tmp.size() == 10)
return QDateTime(date);
+ tmp = tmp.mid(11);
+
// Recognize UTC specifications
if (tmp.endsWith(QLatin1Char('Z'))) {
ts = Qt::UTC;
tmp.chop(1);
}
- return QDateTime(date, QTime::fromString(tmp.mid(11), Qt::ISODate), ts);
+
+ // Recognize timezone specifications
+ QRegExp rx(QLatin1String("[+-]"));
+ if (tmp.contains(rx)) {
+ int idx = tmp.indexOf(rx);
+ QString tmp2 = tmp.mid(idx);
+ tmp = tmp.left(idx);
+ bool ok = true;
+ int ntzhour = 1;
+ int ntzminute = 3;
+ if ( tmp2.indexOf(QLatin1Char(':')) == 3 )
+ ntzminute = 4;
+ const int tzhour(tmp2.mid(ntzhour, 2).toInt(&ok));
+ const int tzminute(tmp2.mid(ntzminute, 2).toInt(&ok));
+ QTime tzt(tzhour, tzminute);
+ int utcOffset = (tzt.hour() * 60 + tzt.minute()) * 60;
+ if ( utcOffset != 0 ) {
+ ts = Qt::OffsetFromUTC;
+ QDateTime dt(date, QTime::fromString(tmp, Qt::ISODate), ts);
+ dt.setUtcOffset( utcOffset * (tmp2.startsWith(QLatin1Char('-')) ? -1 : 1) );
+ return dt;
+ }
+ }
+ return QDateTime(date, QTime::fromString(tmp, Qt::ISODate), ts);
}
case Qt::SystemLocaleDate:
case Qt::SystemLocaleShortDate:
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index 20a1dce..48d2de3 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -440,6 +440,36 @@ bool QPicture::play(QPainter *painter)
return true; // no end-command
}
+
+//
+// QFakeDevice is used to create fonts with a custom DPI
+//
+class QFakeDevice : public QPaintDevice
+{
+public:
+ QFakeDevice() { dpi_x = qt_defaultDpiX(); dpi_y = qt_defaultDpiY(); }
+ void setDpiX(int dpi) { dpi_x = dpi; }
+ void setDpiY(int dpi) { dpi_y = dpi; }
+ QPaintEngine *paintEngine() const { return 0; }
+ int metric(PaintDeviceMetric m) const
+ {
+ switch(m) {
+ case PdmPhysicalDpiX:
+ case PdmDpiX:
+ return dpi_x;
+ case PdmPhysicalDpiY:
+ case PdmDpiY:
+ return dpi_y;
+ default:
+ return QPaintDevice::metric(m);
+ }
+ }
+
+private:
+ int dpi_x;
+ int dpi_y;
+};
+
/*!
\internal
Iterates over the internal picture data and draws the picture using
@@ -649,16 +679,13 @@ bool QPicture::exec(QPainter *painter, QDataStream &s, int nrecords)
if (d->formatMajor >= 9) {
s >> dbl;
- QFont fnt(font, painter->device());
-
- // Fonts that specify a pixel size should not be scaled - QPicture already
- // have a matrix set to compensate for the DPI differences between the
- // default Qt DPI and the actual target device DPI, and we have to take that
- // into consideration in the case where the font has a pixel size set.
-
- qreal scale = fnt.pointSize() == -1 ? 1 : painter->device()->logicalDpiY() / (dbl*qt_defaultDpiY());
- painter->save();
- painter->scale(1/scale, 1/scale);
+ QFont fnt(font);
+ if (dbl != 1.0) {
+ QFakeDevice fake;
+ fake.setDpiX(qRound(dbl*qt_defaultDpiX()));
+ fake.setDpiY(qRound(dbl*qt_defaultDpiY()));
+ fnt = QFont(font, &fake);
+ }
qreal justificationWidth;
s >> justificationWidth;
@@ -667,16 +694,15 @@ bool QPicture::exec(QPainter *painter, QDataStream &s, int nrecords)
QSizeF size(1, 1);
if (justificationWidth > 0) {
- size.setWidth(justificationWidth*scale);
+ size.setWidth(justificationWidth);
flags |= Qt::TextJustificationForced;
flags |= Qt::AlignJustify;
}
QFontMetrics fm(fnt);
- QPointF pt(p.x()*scale, p.y()*scale - fm.ascent());
+ QPointF pt(p.x(), p.y() - fm.ascent());
qt_format_text(fnt, QRectF(pt, size), flags, /*opt*/0,
str, /*brect=*/0, /*tabstops=*/0, /*...*/0, /*tabarraylen=*/0, painter);
- painter->restore();
} else {
qt_format_text(font, QRectF(p, QSizeF(1, 1)), Qt::TextSingleLine | Qt::TextDontClip, /*opt*/0,
str, /*brect=*/0, /*tabstops=*/0, /*...*/0, /*tabarraylen=*/0, painter);
diff --git a/src/network/kernel/qnetworkproxy_win.cpp b/src/network/kernel/qnetworkproxy_win.cpp
index e801738..537107e 100644
--- a/src/network/kernel/qnetworkproxy_win.cpp
+++ b/src/network/kernel/qnetworkproxy_win.cpp
@@ -100,6 +100,10 @@ typedef struct {
#define WINHTTP_NO_PROXY_NAME NULL
#define WINHTTP_NO_PROXY_BYPASS NULL
+#define WINHTTP_ERROR_BASE 12000
+#define ERROR_WINHTTP_LOGIN_FAILURE (WINHTTP_ERROR_BASE + 15)
+#define ERROR_WINHTTP_AUTODETECTION_FAILED (WINHTTP_ERROR_BASE + 180)
+
QT_BEGIN_NAMESPACE
typedef BOOL (WINAPI * PtrWinHttpGetProxyForUrl)(HINTERNET, LPCWSTR, WINHTTP_AUTOPROXY_OPTIONS*, WINHTTP_PROXY_INFO*);
@@ -320,7 +324,7 @@ void QWindowsSystemProxy::init()
isAutoConfig = true;
memset(&autoProxyOptions, 0, sizeof autoProxyOptions);
- autoProxyOptions.fAutoLogonIfChallenged = true;
+ autoProxyOptions.fAutoLogonIfChallenged = false;
if (ieProxyConfig.fAutoDetect) {
autoProxyOptions.dwFlags = WINHTTP_AUTOPROXY_AUTO_DETECT;
autoProxyOptions.dwAutoDetectFlags = WINHTTP_AUTO_DETECT_TYPE_DHCP |
@@ -377,10 +381,26 @@ QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro
// change the scheme to https, maybe it'll work
url.setScheme(QLatin1String("https"));
}
- if (ptrWinHttpGetProxyForUrl(sp->hHttpSession,
- (LPCWSTR)url.toString().utf16(),
- &sp->autoProxyOptions,
- &proxyInfo)) {
+
+ bool getProxySucceeded = ptrWinHttpGetProxyForUrl(sp->hHttpSession,
+ (LPCWSTR)url.toString().utf16(),
+ &sp->autoProxyOptions,
+ &proxyInfo);
+ DWORD getProxyError = GetLastError();
+
+ if (!getProxySucceeded
+ && (ERROR_WINHTTP_LOGIN_FAILURE == getProxyError)) {
+ // We first tried without AutoLogon, because this might prevent caching the result.
+ // But now we've to enable it (http://msdn.microsoft.com/en-us/library/aa383153%28v=VS.85%29.aspx)
+ sp->autoProxyOptions.fAutoLogonIfChallenged = TRUE;
+ getProxySucceeded = ptrWinHttpGetProxyForUrl(sp->hHttpSession,
+ (LPCWSTR)url.toString().utf16(),
+ &sp->autoProxyOptions,
+ &proxyInfo);
+ getProxyError = GetLastError();
+ }
+
+ if (getProxySucceeded) {
// yes, we got a config for this URL
QString proxyBypass = QString::fromWCharArray(proxyInfo.lpszProxyBypass);
QStringList proxyServerList = splitSpaceSemicolon(QString::fromWCharArray(proxyInfo.lpszProxy));
@@ -395,6 +415,13 @@ QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro
}
// GetProxyForUrl failed
+
+ if (ERROR_WINHTTP_AUTODETECTION_FAILED == getProxyError) {
+ //No config file could be retrieved on the network.
+ //Don't search for it next time again.
+ sp->isAutoConfig = false;
+ }
+
return sp->defaultResult;
}
diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp
index 47c54a5..0900b35 100644
--- a/tests/auto/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/qdatetime/tst_qdatetime.cpp
@@ -1456,6 +1456,12 @@ void tst_QDateTime::fromString()
dt = QDateTime::fromString("2002-10-01", Qt::ISODate);
QCOMPARE(dt, QDateTime(QDate(2002, 10, 1), QTime(0, 0, 0, 0)));
+ dt = QDateTime::fromString("1987-02-13T13:24:51+01:00", Qt::ISODate);
+ QCOMPARE(dt, QDateTime(QDate(1987, 2, 13), QTime(12, 24, 51), Qt::UTC));
+
+ dt = QDateTime::fromString("1987-02-13T13:24:51-01:00", Qt::ISODate);
+ QCOMPARE(dt, QDateTime(QDate(1987, 2, 13), QTime(14, 24, 51), Qt::UTC));
+
dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 GMT");
QCOMPARE(dt.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(0, 12, 34), Qt::UTC));
diff --git a/tools/assistant/tools/qcollectiongenerator/main.cpp b/tools/assistant/tools/qcollectiongenerator/main.cpp
index 7fcb4e1..b3f6bd9 100644
--- a/tools/assistant/tools/qcollectiongenerator/main.cpp
+++ b/tools/assistant/tools/qcollectiongenerator/main.cpp
@@ -459,6 +459,8 @@ int main(int argc, char *argv[])
return -1;
}
}
+ if (!config.filesToRegister().isEmpty())
+ CollectionConfiguration::updateLastRegisterTime(helpEngine);
if (!config.title().isEmpty())
CollectionConfiguration::setWindowTitle(helpEngine, config.title());