summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/winrt
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@qt.io>2019-07-22 15:50:49 +0200
committerOliver Wolff <oliver.wolff@qt.io>2019-07-29 09:13:38 +0200
commit7138d6fd6bba2c2e55d02bccf7fd0c6c287eab29 (patch)
treecd16bd69e21f789c206c57126b7bf9a09b9e38ae /src/plugins/platforms/winrt
parente24a4976bebd7ca90deac2b40c08900625773a99 (diff)
QWinRTFileEngine: Implement setSize
Fixes: QTBUG-77132 Change-Id: Ic0410297a2215f1b7b656966cbe84b925706532f Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'src/plugins/platforms/winrt')
-rw-r--r--src/plugins/platforms/winrt/qwinrtfileengine.cpp23
-rw-r--r--src/plugins/platforms/winrt/qwinrtfileengine.h1
2 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/platforms/winrt/qwinrtfileengine.cpp b/src/plugins/platforms/winrt/qwinrtfileengine.cpp
index 3014b30c38..e9b2a82763 100644
--- a/src/plugins/platforms/winrt/qwinrtfileengine.cpp
+++ b/src/plugins/platforms/winrt/qwinrtfileengine.cpp
@@ -257,6 +257,29 @@ qint64 QWinRTFileEngine::size() const
return qint64(size);
}
+bool QWinRTFileEngine::setSize(qint64 size)
+{
+ Q_D(QWinRTFileEngine);
+ if (!d->stream) {
+ setError(QFileDevice::ResizeError, QLatin1String("File must be open to be resized"));
+ return false;
+ }
+
+ if (size < 0) {
+ setError(QFileDevice::ResizeError, QLatin1String("File size cannot be negative"));
+ return false;
+ }
+
+ HRESULT hr = d->stream->put_Size(static_cast<quint64>(size));
+ RETURN_AND_SET_ERROR_IF_FAILED(QFileDevice::ResizeError, false);
+ if (!flush()) {
+ setError(QFileDevice::ResizeError, QLatin1String("Could not flush file"));
+ return false;
+ }
+
+ return true;
+}
+
qint64 QWinRTFileEngine::pos() const
{
Q_D(const QWinRTFileEngine);
diff --git a/src/plugins/platforms/winrt/qwinrtfileengine.h b/src/plugins/platforms/winrt/qwinrtfileengine.h
index 4485917c9e..453565a95a 100644
--- a/src/plugins/platforms/winrt/qwinrtfileengine.h
+++ b/src/plugins/platforms/winrt/qwinrtfileengine.h
@@ -79,6 +79,7 @@ public:
bool close() override;
bool flush() override;
qint64 size() const override;
+ bool setSize(qint64 size) override;
qint64 pos() const override;
bool seek(qint64 pos) override;
bool remove() override;