From 0b6842abd2877886dcb0ca4154e93d9bae1ef80c Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sat, 10 Sep 2022 18:43:04 +0200 Subject: QXmppError: Add fromIoDevice() --- src/base/QXmppError.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/base/QXmppError.cpp') diff --git a/src/base/QXmppError.cpp b/src/base/QXmppError.cpp index 80578c0d..eab4c749 100644 --- a/src/base/QXmppError.cpp +++ b/src/base/QXmppError.cpp @@ -31,6 +31,20 @@ /// should tell you which types are used. /// +/// +/// Constructs a QXmppError from an QIODevice +/// +/// It tries to cast the IO device to different known IO devices to get a useful more specific +/// error, i.e. it returns a QXmppError with QFileDevice::FileError for QFileDevices. +/// +QXmppError QXmppError::fromIoDevice(const QIODevice &device) +{ + if (const auto *file = dynamic_cast(&device)) { + return QXmppError { file->errorString(), file->error() }; + } + return QXmppError { device.errorString(), std::any() }; +} + /// /// Returns whether the error is a QNetworkReply::NetworkError. /// -- cgit v1.2.3