Commit Graph

17651 Commits (a47cd2cc82ea69b0cb7eab5b4cd11a4838d538d1)

Author SHA1 Message Date
Oswald Buddenhagen a47cd2cc82 Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5 2015-08-12 09:53:52 +00:00
David Faure 34130b9caf QMimeDatabase: use QElapsedTimer instead of QDateTime::currentDateTime()
This reduces the number of syscalls greatly, by avoiding the timezone
conversion every time.

Change-Id: I39a54def4b45f25c6e037ced6943b05ddc749c9d
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2015-08-12 09:03:09 +00:00
Richard Moe Gustavsen afaeecd4e8 iOS: ensure that we restore text selection with correct cursor and anchor pos
Qt keeps track of the selection direction since a selection anchor can be placed
both to the left or to the right of the cursor. On iOS, the selection should
instead always be specified from left to right (using a position together with a
positive length). So when restoring the selection after performing the
calculation of the text rect, we need to ensure that we follow this format.

Change-Id: Id8bea6c35e2781e1431ee963f601b6e9ef05dbf5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 10:13:38 +00:00
Richard Moe Gustavsen 0cf00efced iOS: support cut/copy/paste shortcuts when using Bluetooth keyboard
Change-Id: Iaa602771227f64c3a477a27656362a361f78e8dd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 10:13:32 +00:00
Richard Moe Gustavsen 7f0f6380b1 QComboBox: make editable comboboxes usable with input methods
QComboBox uses a QLineEdit for text editing. But while editing, the
combobox is the widget having focus, not the line edit. Instead the
combobox forwards all the IM events to the line edit internally. This
causes a problem since the line edit will not be able to update the
platforms IM state in QWidget::updateMicroFocus() since it doesn't
have focus. The result will be that the platforms IM state will
get out of sync with the QLineEdit.

This patch will add the missing connections that lets QComboBox
update the platforms IM state when the inner QLineEdit signals
that its needed.

Change-Id: Ic3e0fdbf155d4dbeab31e2cd859f6e425ae87375
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 07:46:12 +00:00
Richard Moe Gustavsen 22e752bada QLineEdit: update IM status after selection change
As it stood, we only told the platform about a selection change if
the cursor also changed position. But if you have a selection, and
press key left, the selection will be cleared without moving the
cursor. And for those cases, we didn't report the selection change
back to the platform. The result was that the IM status in the platform
plugin got out of sync with the widget.

This patch will add the missing connection that updates the platform
whenever the selection changes.

Change-Id: Iab0848f27207b63ed4fb47f0d4f24a6d02e87db1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 07:46:08 +00:00
Andy Shaw d2f0f46c45 When the focus changes make sure that the IME finishes correctly
When clicking onto another widget while in the middle of composing should
cause it to be seen as an acceptance of the composed text so far instead
of just cancelling it outright.

This was validated against the Japanese, Korean and Chinese IMEs on
Windows 7.

Task-number: QTBUG-42344
Change-Id: I03be0cd099840f51a9550929f33e2afbbf31e85a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-10 12:30:48 +00:00
Allan Sandfeld Jensen bec8c726bf Fix out-of-buffer read on image upscale
Avoid reading from the next pixel when the sample is fully based on the
current pixel. This is particular important for the last pixel in an
image when the next pixel might be outside the image buffer.

Change-Id: I3607f9c6c332d11ff944ca35d216d417368f9fd5
Task-number: QTBUG-47228
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-10 10:22:36 +00:00
Allan Sandfeld Jensen 01c15a9438 Always return grayscale indexed8 from QImage::alphaChannel()
We shouldn't short-cut alpha8 formats in alphaChannel, the method is
used under the assumption that the returned alpha map has encoded the
alphas as an indexed grayscale image. The method is also documented
as not returning alpha8.

Task-number: QTBUG-47138
Change-Id: I1cf16957d12e65d44f2b586d9f127fcb33c549b6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-09 09:13:30 +00:00
Tor Arne Vestbø e92c2e119b Improve readability of QTextLine's handling of (negative) right bearing
- Helper functions in LineBreakHelper have been renamed from
    adjustFoo to calculateFoo, to signal that they do work, and
    are not adjusting something relative to something else.

  - The use of QFixed(1) and >= 0 has been replaced with an explicit
    constant for the case of the bearing not being calculated yet.

  - A helper function negativeRightBearing() has been added that
    returns the absolute value of any negative right bearing, making
    the width computations simpler.

  - Comments have been added and rewritten to make the logic clearer.

Change-Id: I1d3a0214cfa8b4fed4551f3444b43a37d55bd69b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-07 15:46:18 +00:00
Andy Shaw 4d572362e8 Fix link to QQ article
Change-Id: I04d373778b243fdeb281c98e292359996639c95e
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-07 08:00:27 +00:00
Samuel Gaist 63cd55b172 QTreeView: add size hint handling information to uniformRowHeights
Task-number: QTBUG-10802
Change-Id: I6aa60d8fd7678f02003a229e191a5ab4f93c4b9d
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
2015-08-06 20:50:02 +00:00
Samuel Gaist 141f03a814 Doc: mark private QChar constructors as internal
Task-number: QTBUG-39862
Change-Id: Ie0d533e3897200589248c803069c41661b15997e
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-06 20:49:53 +00:00
Samuel Gaist 64b53ddf56 Doc: add clarification about signals not being buffered when blocked
Task-number: QTBUG-15238
Change-Id: Id762007415245f104ffe5cdfd100889f9a73ae95
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-06 20:49:44 +00:00
Samuel Gaist 6e0a6be105 Doc: Fix wrong reference QApplication::setStandardPalette
Task-number: QTBUG-46078
Change-Id: Ifb1c650467a0fc30a0d11ad58708a64e5f9fabd5
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-06 20:49:41 +00:00
Samuel Gaist 925822eca5 QProcessEnvironment documentation typo fix
Task-number: QTBUG-45985
Change-Id: I42de961ca6d57847c135abd8395494d0e416ab05
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-08-06 20:49:37 +00:00
Samuel Gaist 24dc597386 Add reference to QRegularExpression
Currently there's no mention of QRegularExpression in QRegExp's
documentation. This makes it hard to find QRegularExpression for user
used to QRegExp. This patch adds that missing reference.

Task-number: QTBUG-46816
Change-Id: If3a981d5759fbed3eecd07e046882e6da378cc4e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-08-06 20:49:33 +00:00
Lorn Potter 51cf05c1bd Add env variable to control bearer backend polling timers.
Scanning and updating networks can cause transmission jitters
when scanning every 10 seconds.
setting QT_BEARER_POLL_TIMEOUT, in milliseconds will set
polling timer for those bearer backends that require
polling, such as generic and windows.

Task-number: QTBUG-46015
Change-Id: I0338cd34ad78488ebef250a0114d17ce190434e8
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-08-06 19:36:59 +00:00
Morten Johan Sørvig 79ae2b3963 QMacStyle: Disable progress bar animations
Disable progress bar animations on 10.10 Yosemite
and higher - the native style does not animate them
any more. Keep the indeterminate progress bar animation.

Change-Id: If15fa0321e184101ef19b1050eb5e9d8f27480d8
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-08-06 19:30:41 +00:00
Simon Hausmann f18dc91da5 Fix crash when mixing widgets with QtQuick 1 and Qt Quick 2
Apply the fix from commit 313a74cc4a also to
the QWidget and the QGraphicsObject destructor.

Task-number: QTCREATORBUG-10273
Change-Id: I47983b49cc4d9b75a2e1ee838e13403bc4b95a59
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-06 16:58:22 +00:00
Thiago Macieira 40cbf1927b Don't add qmutex_xxx.cpp to SOURCES, as qmutex.cpp #include's them
Normally qmake catches the #include and drops the source from SOURCES.
But the parser has bugs, so help it by never adding the files.

The false: SOURCES += is left so that the sources can be found by Qt
Creator.

Task-number: QTBUG-46582
Change-Id: I049a653beeb5454c9539ffff13e667877350346b
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-06 07:35:13 +00:00
Thiago Macieira 01f3530650 Don't check if Pentium's CPUID leaf 1 exists
It does. When CPUID was introduced in late 486, it already supported
leaf 1. That means all Pentium-class systems (including Intel's new
Quark systems) have CPUID and they have at least leaf 1.

Change-Id: Ib306f8f647014b399b87ffff13f1d5d2530d9ddd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-06 04:53:44 +00:00
Thiago Macieira f549916d18 Doc: update QDebug documentation to talk about the escaping
Task-number: QTBUG-47316
Change-Id: Ib306f8f647014b399b87ffff13f303badb2a7a63
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-08-06 04:53:41 +00:00
Thiago Macieira 644ac04af0 Change how QDebug escapes QStrings in the output
[ChangeLog][Important Behavior Changes] QDebug output for QStrings
changed compared to Qt 5.5.0 to more closely match the output of
previous Qt versions. Like Qt 5.5.0, QDebug will escape non-printable
characters, the backslash and quote characters, but will no longer
escape the printable characters.

Task-number: QTBUG-47316
Change-Id: I52dd43c12685407bb9a6ffff13f62ef68cbc80c5
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-06 04:53:38 +00:00
Thiago Macieira 007ad9e859 FreeBSD has pipe2, so enable it in forkfd.c
Change-Id: Ib056b47dde3341ef9a52ffff13efd1a15748e44d
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-08-06 04:53:35 +00:00
Thiago Macieira 84e1bb4951 Fix warnings about unused variables
Found by ICC
qglengineshadermanager.cpp(427): warning #177: variable "none" was declared but never referenced

Change-Id: Id3d5c7bf4d4c45069621ffff13f758ffaf1744d7
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-06 04:53:33 +00:00
Frederik Gladhorn 4067bbc24c Fix shortcut handling with modifiers
Since d7ca800a87 the shortcut events were
only sent once. The one sent by QGuiApplication did not create a
QKeyEvent with the full native modifier state - basically the extended
key event expected everywhere.
That means that shortcuts on some keyboard layouts - like ctrl-shift-7 on
the German keyboard (resulting in ctrl+/) - would not work when the
shortcut override was tested from QGuiApplication, but then the same shortcut was
sent from QApplication with the full information, so it worked the
second time. Shortcuts of this type in Qt Quick were broken before.

Task-number: QTBUG-47062
Change-Id: I8390b9a96d0d998a2a538ac65503702e0d299cc7
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-08-05 16:15:05 +00:00
Laszlo Agocs 771235285c Allow sharing contexts in QOpenGLTexture::destroy()
Checking for the exact same context is too strict. The texture is valid
in sharing contexts too.

Task-number: QTBUG-47521
Change-Id: Ifdf329ef5361b48abcb7c69e08acd7e35d624a08
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-08-04 10:28:07 +00:00
Christian Strømme a416647e38 Android: Manually detach the thread after calling quitApp.
On Android 5.0 ART will complain when we don't detach the thread before
the application is about to quit (non-fatal). This is because we
re-attach to call quitApp and then leave it attached.

Change-Id: I4571ef5f38d92afcaf91cb920ebe121a7be7835a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-08-03 14:55:26 +00:00
Alex Merry 8fdd1e3867 QLoggingCategory: fix default severity in Q_LOGGING_CATEGORY macro
[ChangeLog][QtCore][QLoggingCategory] Fixed behavior of default
severity passed to constructor or Q_LOGGING_CATEGORY with regards to
QtInfoMsg, which was previously treated as being more severe than
QtFatalMsg.

This is because the code was using the numeric value of QtMsgType as a
proxy for severity (via the <= operator), but the value of QtInfoMsg is
greater than QtFatalMsg. Instead, the severity ordering must be dealt
with explicitly.

Change-Id: I5f178afc735221b00cb67c2cea4fa964bd9079ce
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-03 14:40:19 +00:00
Oswald Buddenhagen 5ba3309703 fix build with no built-in image handlers
the handlers' .pri files added $$PWD to INCLUDEPATH to make the files
self-contained when used externally, but this polluted the include path
of the gui module itself, thus hiding incorrect use of QPA includes.

Task-number: QTBUG-47400
Change-Id: I576469a71e8ded0b409d62687999c0fa884613f9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-08-03 14:13:58 +00:00
Joerg Bornemann fd10b40da2 do not warn about "untested" Windows versions
Remove the qWarning that was printed when running a Qt application on
desktop Windows versions that Qt doesn't know about.
This warning isn't helpful, it's only visible for command line
applications and it can only be turned off by rebuilding the application
with a newer Qt version.
Removing the warning is also consistent with all other platforms - even
non-Desktop Windows.

Change-Id: If1cac92ce99974335319d0b9a74f1006069abd7a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-03 13:51:16 +00:00
Kai Koehne 563df05723 QSslSocket: Update error string in setSocketDescriptor()
Change-Id: I03cd3886c0e2dbb07ef8d37e75df36308ee5fea5
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-03 07:13:36 +00:00
Kai Koehne 561ccd7ca3 Disable #pragma diagnostic [push|pop] for gcc 4.5
Fix warnings like

qalgorithms.h:40:16: warning: expected [error|warning|ignored] after `#pragma GCC diagnostic`

As the comment below also indicates, #pragma GCC diagnostic [push|pop]
is only supported from gcc 4.6 upwards. See also the GCC 4.6
changelog: https://gcc.gnu.org/gcc-4.6/changes.html

[ChangeLog][Compiler specific Changes] GCC: Fixed a regression introduced Qt 5.5.0
that generated lots of compiler warnings in Qt public headers when using
the (deprecated) version 4.5 of GCC.

Change-Id: I425388b61cd5fbf464a0f7dd46ce403d35c532a4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-03 07:12:41 +00:00
Konstantin Ritt c57c89b3c1 Don't expose qt_setQtEnableTestFont(bool) by default
Build it only in -developer-build mode for tests that might depend
on exact-matching font behavior.
Return earlier to avoid doing any useless job.

Change-Id: I966ee5689f03403e45f4c957b63e3113f0467803
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:50:17 +00:00
Konstantin Ritt 073f4f9bb2 [QBasicFontDatabase] Minor code clean-up
We do not use supportedWritingSystems anymore -> simply remove.

Change-Id: I8c8b4b0614bf396c943d810c396d18e2d0201eff
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:53:20 +00:00
Konstantin Ritt 839af2268e Micro optimization to Basic/Android FDB::populateFontDatabase()
Re-use QDir to check if dir exists
(QDir::exists() also returns false if path specifies a file),
and use somewhat faster QDir::entryInfoList() to iterate the font files.

Change-Id: Iea3a6e5548928a01db71037425adf170cb722151
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:52:49 +00:00
Konstantin Ritt 5e3e34731b Default implementation for QPlatformFontDatabase::fallbacksForFamily()
...mainly for platforms that do not provide a native/unified way
to obtain system-defined font fallbacks list
(ie !CoreText && !FontConfig).

Change-Id: I23c5589d79ddecb6311ccc52ec8b29977f06d408
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:51:35 +00:00
Konstantin Ritt 735cd0ccf3 [QFontDatabase] Defer the fallback families list initialization
Use the same trick the WebKit related path has used for years:
if there is no explicit list that takes a precedence over the
default one (i.e. QFont("Arial,SimHei")), then defer the fallback
families list initialization until it gets requested.

Change-Id: If5a74294bdebb24865c619bc0d7328b3e706de76
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:49:21 +00:00
Jeremy Lainé 76ce564674 ssl: add support for EC keys to non-OpenSSL backends
Adds basic support for QSslKey reading / writing Elliptic Curve keys on
backends other than OpenSSL (i.e. WinRT / SecureTransport for now).

Change-Id: I67012dbe6b844a3ed5b22b63e0cdbacf0497a74a
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-07-31 09:08:47 +00:00
Thiago Macieira 0aedca2f97 Revert "Fix performance of recursive read-write locks"
This reverts commit 666486b3ef, which
removed the QHash that protected against reader recursion
deadlocks. Without this hash, a reader will block on
d->readerWait.wait() until the writer finishes its task. However, the
writer never starts because there's a reader that hasn't released the
lock. That's a deadlock.

Change-Id: I792373bb361db35eb9e5504229c099008821a665
Task-number: QTBUG-47530
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-31 07:38:17 +00:00
Topi Reinio 590d305f99 qdoc: Fix incorrect keyword details written to .qhp for QML properties
QDoc tried to refer to an non-existing node (a parent of a parent) of a
QML property when writing the unique ID of a QML property keyword.

Change-Id: I90ab92b6ac95cfa688ca79a2c4d6c72f0e30d018
Task-number: QTCREATORBUG-3708
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-31 07:28:50 +00:00
Topi Reinio 7a1045b647 qdoc: Fix string used in compatibility members page
Add a missing space in the comment generated at the top of the
compatibility members page.

Change-Id: I21e010f9fca41346bb50c4b400325b18ff672738
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-31 07:28:43 +00:00
Topi Reinio f80143a69a Doc: Add a \target for license information within QImage documentation
This allows us to link to it from the Qt licensing information page.
Also, replace the \legalese command with \badcode in order to
keep the license text formatting intact.

Task-number: QTBUG-46478
Change-Id: I1b5100ca0373a533bd56852ab2a8f18e72404334
Reviewed-by: Sami Makkonen <sami.makkonen@digia.com>
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
2015-07-31 07:28:37 +00:00
Topi Reinio 8f3e7e3b47 qdoc: Add images used in examples into .qhp
Images used as resources in examples were missing from the generated
.qch files.

Change-Id: I7cdfc65b646a418e3de0b22d9a075e9a413aca29
Task-number: QTBUG-46635
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-31 07:28:25 +00:00
André Klitzing 0d3c8feeeb Fix SNI for TlsV1_0OrLater, TlsV1_1OrLater and TlsV1_2OrLater
Since SslV3, SslV2 and UnknownProtocol do not support it we can
invert the IF clause here.

Change-Id: I42e942337d01f3a8c97885b268bffa568e40d335
Task-number: QTBUG-47528
Reviewed-by: Mikkel Krautz <mikkel@krautz.dk>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-07-30 19:50:59 +00:00
Martin Koller 0617834e0c xcb: Make it compile on systems with xinput2 < 2.2
Change-Id: I7e98d3540cd7717ac8af8d1993618d18320f811a
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-07-30 07:50:07 +00:00
BogDan Vatra d800047dc5 QLineEdit should inherit the input methods from QComboBox.
Task-number: QTBUG-39088
Change-Id: I4dfe9a052c20a4cb0a9d6b0d3337cb5095a3694f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-30 07:06:27 +00:00
BogDan Vatra 17caa94190 Android: Start the application when we know the screen geometry.
Until now we'se set the screenGemetry to 0,0 until the layout is
created, but some controls needs it before that.

Task-number: QTBUG-44271
Change-Id: I7d00e2a142572e27fc77e46566bb2cdb37f58035
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-30 07:06:18 +00:00
Leena Miettinen 332d41d025 Doc: QFileDialog::ShowDirsOnly not supported on Windows
The native Windows file dialog does not support displaying
files in the directory chooser.

Task-number: QTBUG-46982
Change-Id: Ib58f3d888df564d42044b81ad8e67b8aeae5f3c6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-30 06:15:30 +00:00