[PATCH 2/6] common: Always let QVariant::fromValue() deduce the type
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 7 Jan 2020 17:39:48 +0000 (18:39 +0100)
committerFelix Geyer <fgeyer@debian.org>
Fri, 12 Feb 2021 17:40:17 +0000 (17:40 +0000)
From 41bf70c263ee0af80ad1850fabe77ffffee188f4 Mon Sep 17 00:00:00 2001
Bug: https://bugs.quassel-irc.org/issues/1544
Bug-Ubuntu: https://bugs.launchpad.net/quassel/+bug/1885436
Origin: upstream, https://github.com/quassel/quassel/pull/518
Origin: upstream, https://github.com/quassel/quassel/commit/41bf70c263ee0af80ad1850fabe77ffffee188f4

In some places, we would explicitly give the type to
QVariant::fromValue(), forgoing automatic type deduction. This is
almost always redundant, and in the cases where it is not, the
input type should be explicitly cast.

Additionally, the implementation of QVariant::fromValue() subtly changed
in Qt 5.14, leading to compile errors when giving a non-decayed type
(as we did in SignalProxy::attachSignal()).

Gbp-Pq: Topic qt514
Gbp-Pq: Name 0002-common-Always-let-QVariant-fromValue-deduce-the-type.patch

19 files changed:
src/client/coreaccountmodel.cpp
src/client/messagefilter.cpp
src/client/messagemodel.cpp
src/client/networkmodel.cpp
src/common/buffersyncer.cpp
src/common/network.cpp
src/common/serializers/serializers.cpp
src/common/types.h
src/common/util.h
src/core/core.cpp
src/qtui/chatitem.cpp
src/qtui/chatlinemodelitem.cpp
src/qtui/mainwin.cpp
src/qtui/settingsdlg.cpp
src/qtui/settingspages/chatmonitorsettingspage.cpp
src/qtui/settingspages/networkssettingspage.cpp
src/qtui/settingspages/shortcutsmodel.cpp
src/uisupport/networkmodelcontroller.cpp
src/uisupport/toolbaractionprovider.cpp

index 43c8bf1dcc666008f299a32b254deedea52b921e..7f664919699791a5e4037a5ea411b1699c63267d 100644 (file)
@@ -107,7 +107,7 @@ QVariant CoreAccountModel::data(const QModelIndex &index, int role) const
     case Qt::DisplayRole:
         return acc.accountName();
     case AccountIdRole:
-        return QVariant::fromValue<AccountId>(acc.accountId());
+        return QVariant::fromValue(acc.accountId());
     case UuidRole:
         return acc.uuid().toString();
 
index c836c733fc32a5a4057ffce09061024ebc08ae73..20b997b579fa087eee053d7dc5ffa8a174d976e2 100644 (file)
@@ -191,7 +191,7 @@ bool MessageFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar
             if (!redirectedTo.isValid()) {
                 BufferId redirectedTo = Client::bufferModel()->currentIndex().data(NetworkModel::BufferIdRole).value<BufferId>();
                 if (redirectedTo.isValid())
-                    sourceModel()->setData(sourceIdx, QVariant::fromValue<BufferId>(redirectedTo), MessageModel::RedirectedToRole);
+                    sourceModel()->setData(sourceIdx, QVariant::fromValue(redirectedTo), MessageModel::RedirectedToRole);
             }
 
             if (_validBuffers.contains(redirectedTo))
index 3cddb8ae67f409dc83782bb7650632ad5a2f2cdd..d8a57ff95ab3b64835f5ed1ec6e0442e5736d9ef 100644 (file)
@@ -448,11 +448,11 @@ QVariant MessageModelItem::data(int column, int role) const
 
     switch (role) {
     case MessageModel::MessageRole:
-        return QVariant::fromValue<Message>(message());
+        return QVariant::fromValue(message());
     case MessageModel::MsgIdRole:
-        return QVariant::fromValue<MsgId>(msgId());
+        return QVariant::fromValue(msgId());
     case MessageModel::BufferIdRole:
-        return QVariant::fromValue<BufferId>(bufferId());
+        return QVariant::fromValue(bufferId());
     case MessageModel::TypeRole:
         return msgType();
     case MessageModel::FlagsRole:
@@ -460,9 +460,9 @@ QVariant MessageModelItem::data(int column, int role) const
     case MessageModel::TimestampRole:
         return timestamp();
     case MessageModel::RedirectedToRole:
-        return qVariantFromValue<BufferId>(_redirectedTo);
+        return QVariant::fromValue(_redirectedTo);
     default:
-        return QVariant();
+        return {};
     }
 }
 
index 649e3681eec4d380806af857dd80ef9c627f1121..6377232b1aaf440770e518f57be84c963825252e 100644 (file)
@@ -72,7 +72,7 @@ QVariant NetworkItem::data(int column, int role) const
         else
             return QVariant();
     case NetworkModel::NetworkIdRole:
-        return qVariantFromValue(_networkId);
+        return QVariant::fromValue(_networkId);
     case NetworkModel::ItemTypeRole:
         return NetworkModel::NetworkItemType;
     case NetworkModel::ItemActiveRole:
@@ -406,11 +406,11 @@ QVariant BufferItem::data(int column, int role) const
     case NetworkModel::ItemTypeRole:
         return NetworkModel::BufferItemType;
     case NetworkModel::BufferIdRole:
-        return qVariantFromValue(bufferInfo().bufferId());
+        return QVariant::fromValue(bufferInfo().bufferId());
     case NetworkModel::NetworkIdRole:
-        return qVariantFromValue(bufferInfo().networkId());
+        return QVariant::fromValue(bufferInfo().networkId());
     case NetworkModel::BufferInfoRole:
-        return qVariantFromValue(bufferInfo());
+        return QVariant::fromValue(bufferInfo());
     case NetworkModel::BufferTypeRole:
         return int(bufferType());
     case NetworkModel::ItemActiveRole:
@@ -418,9 +418,9 @@ QVariant BufferItem::data(int column, int role) const
     case NetworkModel::BufferActivityRole:
         return (int)activityLevel();
     case NetworkModel::BufferFirstUnreadMsgIdRole:
-        return qVariantFromValue(firstUnreadMsgId());
+        return QVariant::fromValue(firstUnreadMsgId());
     case NetworkModel::MarkerLineMsgIdRole:
-        return qVariantFromValue(markerLineMsgId());
+        return QVariant::fromValue(markerLineMsgId());
     default:
         return PropertyMapItem::data(column, role);
     }
@@ -523,7 +523,7 @@ QVariant QueryBufferItem::data(int column, int role) const
     case Qt::EditRole:
         return BufferItem::data(column, Qt::DisplayRole);
     case NetworkModel::IrcUserRole:
-        return QVariant::fromValue<QObject *>(_ircUser);
+        return QVariant::fromValue(_ircUser);
     case NetworkModel::UserAwayRole:
         return (bool)_ircUser ? _ircUser->isAway() : false;
     default:
@@ -750,7 +750,7 @@ QVariant ChannelBufferItem::data(int column, int role) const
 {
     switch (role) {
     case NetworkModel::IrcChannelRole:
-        return QVariant::fromValue<QObject *>(_ircChannel);
+        return QVariant::fromValue(_ircChannel);
     default:
         return BufferItem::data(column, role);
     }
@@ -1147,7 +1147,7 @@ QVariant IrcUserItem::data(int column, int role) const
     case NetworkModel::IrcChannelRole:
         return parent()->data(column, role);
     case NetworkModel::IrcUserRole:
-        return QVariant::fromValue<QObject *>(_ircUser.data());
+        return QVariant::fromValue(_ircUser.data());
     case NetworkModel::UserAwayRole:
         return (bool)_ircUser ? _ircUser->isAway() : false;
     default:
index ef2848ef05bcc7af5909ad92aa73cbda4e68e9a3..837ee995f8bd5a63b981e1f60bd5bc9da7c1d02e 100644 (file)
@@ -90,8 +90,7 @@ QVariantList BufferSyncer::initLastSeenMsg() const
     QVariantList list;
     QHash<BufferId, MsgId>::const_iterator iter = _lastSeenMsg.constBegin();
     while (iter != _lastSeenMsg.constEnd()) {
-        list << QVariant::fromValue<BufferId>(iter.key())
-             << QVariant::fromValue<MsgId>(iter.value());
+        list << QVariant::fromValue(iter.key()) << QVariant::fromValue(iter.value());
         ++iter;
     }
     return list;
@@ -113,8 +112,7 @@ QVariantList BufferSyncer::initMarkerLines() const
     QVariantList list;
     QHash<BufferId, MsgId>::const_iterator iter = _markerLines.constBegin();
     while (iter != _markerLines.constEnd()) {
-        list << QVariant::fromValue<BufferId>(iter.key())
-             << QVariant::fromValue<MsgId>(iter.value());
+        list << QVariant::fromValue(iter.key()) << QVariant::fromValue(iter.value());
         ++iter;
     }
     return list;
@@ -136,8 +134,7 @@ QVariantList BufferSyncer::initActivities() const
     QVariantList list;
     auto iter = _bufferActivities.constBegin();
     while (iter != _bufferActivities.constEnd()) {
-        list << QVariant::fromValue<BufferId>(iter.key())
-             << QVariant::fromValue<int>((int) iter.value());
+        list << QVariant::fromValue(iter.key()) << QVariant::fromValue((int)iter.value());
         ++iter;
     }
     return list;
@@ -197,8 +194,7 @@ QVariantList BufferSyncer::initHighlightCounts() const {
     QVariantList list;
     auto iter = _highlightCounts.constBegin();
     while (iter != _highlightCounts.constEnd()) {
-        list << QVariant::fromValue<BufferId>(iter.key())
-             << QVariant::fromValue<int>((int) iter.value());
+        list << QVariant::fromValue(iter.key()) << QVariant::fromValue((int)iter.value());
         ++iter;
     }
     return list;
index e9df78efff8d3f5c3b444f3145ca4b604e62efa8..b3370463819bc196aa967c665159b03d1c5d6b27 100644 (file)
@@ -1209,8 +1209,8 @@ QDataStream &operator<<(QDataStream &out, const NetworkInfo &info)
     i["CodecForServer"]            = info.codecForServer;
     i["CodecForEncoding"]          = info.codecForEncoding;
     i["CodecForDecoding"]          = info.codecForDecoding;
-    i["NetworkId"]                 = QVariant::fromValue<NetworkId>(info.networkId);
-    i["Identity"]                  = QVariant::fromValue<IdentityId>(info.identity);
+    i["NetworkId"]                 = QVariant::fromValue(info.networkId);
+    i["Identity"]                  = QVariant::fromValue(info.identity);
     i["MessageRateBurstSize"]      = info.messageRateBurstSize;
     i["MessageRateDelay"]          = info.messageRateDelay;
     i["AutoReconnectInterval"]     = info.autoReconnectInterval;
index 1cc4e76cdec827c2a6cfa6b7a43ba7f74b3c7d87..b5ad8840fb13484cc061b5c858e291eb6ac9e395 100644 (file)
@@ -29,7 +29,7 @@ bool toVariant(QDataStream& stream, Quassel::Features features, QVariant& data)
     if (!Serializers::deserialize(stream, features, content)) {
         return false;
     }
-    data = QVariant::fromValue<T>(content);
+    data = QVariant::fromValue(content);
     return true;
 }
 
index c4b9f364afb4219ef43d6972271fc046115fe2d4..e54fe814fdf7a78ff44594e03a54196c85ed2dda 100644 (file)
@@ -100,27 +100,27 @@ inline uint qHash(const SignedId64 &id) { return qHash(id.toQint64()); }
 
 struct UserId : public SignedId {
     inline UserId(int _id = 0) : SignedId(_id) {}
-    //inline operator QVariant() const { return QVariant::fromValue<UserId>(*this); }  // no automatic conversion!
+    //inline operator QVariant() const { return QVariant::fromValue(*this); }  // no automatic conversion!
 };
 
 struct MsgId : public SignedId64 {
     inline MsgId(qint64 _id = 0) : SignedId64(_id) {}
-    //inline operator QVariant() const { return QVariant::fromValue<MsgId>(*this); }
+    //inline operator QVariant() const { return QVariant::fromValue(*this); }
 };
 
 struct BufferId : public SignedId {
     inline BufferId(int _id = 0) : SignedId(_id) {}
-    //inline operator QVariant() const { return QVariant::fromValue<BufferId>(*this); }
+    //inline operator QVariant() const { return QVariant::fromValue(*this); }
 };
 
 struct NetworkId : public SignedId {
     inline NetworkId(int _id = 0) : SignedId(_id) {}
-    //inline operator QVariant() const { return QVariant::fromValue<NetworkId>(*this); }
+    //inline operator QVariant() const { return QVariant::fromValue(*this); }
 };
 
 struct IdentityId : public SignedId {
     inline IdentityId(int _id = 0) : SignedId(_id) {}
-    //inline operator QVariant() const { return QVariant::fromValue<IdentityId>(*this); }
+    //inline operator QVariant() const { return QVariant::fromValue(*this); }
 };
 
 struct AccountId : public SignedId {
index b7219169ebd97a0918405be5e25277d54df78213..3f6712997f2eceaf6b298b9a1a79c5044dc1804f 100644 (file)
@@ -53,7 +53,7 @@ QVariantList toVariantList(const QList<T> &list)
 {
     QVariantList variants;
     for (int i = 0; i < list.count(); i++) {
-        variants << QVariant::fromValue<T>(list[i]);
+        variants << QVariant::fromValue(list[i]);
     }
     return variants;
 }
index 5d49ee21dcfe743dd546c210a3ce23ada3ccec1e..11474a948f4777bd58f80b0094deb1fa443b4c48 100644 (file)
@@ -301,7 +301,7 @@ void Core::saveState()
     if (_storage) {
         QVariantList activeSessions;
         for (auto &&user : instance()->_sessions.keys())
-            activeSessions << QVariant::fromValue<UserId>(user);
+            activeSessions << QVariant::fromValue(user);
         _storage->setCoreState(activeSessions);
     }
 }
index 04908d1754d967177233457d3e1ede277e1dc677..59a7cfbf4489d32c6d6a9c91b9eb7fdf3e519111 100644 (file)
@@ -871,7 +871,7 @@ void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos)
         case Clickable::Url:
             privateData()->activeClickable = click;
             menu->addAction(icon::get("edit-copy"), tr("Copy Link Address"),
-                &_actionProxy, SLOT(copyLinkToClipboard()))->setData(QVariant::fromValue<void *>(this));
+                            &_actionProxy, SLOT(copyLinkToClipboard()))->setData(QVariant::fromValue(static_cast<void *>(this)));
             break;
         case Clickable::Channel:
         {
index 20888a10d95cb907747e2fc57adaa5852e0d801f..fba94bfa521cb05cd27d04788adbf93b10e36c0a 100644 (file)
@@ -76,7 +76,7 @@ bool ChatLineModelItem::setData(int column, const QVariant &value, int role)
 QVariant ChatLineModelItem::data(int column, int role) const
 {
     if (role == ChatLineModel::MsgLabelRole)
-        return QVariant::fromValue<UiStyle::MessageLabel>(messageLabel());
+        return QVariant::fromValue(messageLabel());
 
     QVariant variant;
     MessageModel::ColumnType col = (MessageModel::ColumnType)column;
@@ -111,7 +111,8 @@ QVariant ChatLineModelItem::timestampData(int role) const
     case ChatLineModel::SelectedBackgroundRole:
         return backgroundBrush(UiStyle::FormatType::Timestamp, true);
     case ChatLineModel::FormatRole:
-        return QVariant::fromValue<UiStyle::FormatList>({std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Timestamp, {}, {}})});
+        return QVariant::fromValue(UiStyle::FormatList{
+            std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Timestamp, {}, {}})});
     }
     return QVariant();
 }
@@ -129,7 +130,8 @@ QVariant ChatLineModelItem::senderData(int role) const
     case ChatLineModel::SelectedBackgroundRole:
         return backgroundBrush(UiStyle::FormatType::Sender, true);
     case ChatLineModel::FormatRole:
-        return QVariant::fromValue<UiStyle::FormatList>({std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Sender, {}, {}})});
+        return QVariant::fromValue(UiStyle::FormatList{
+            std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Sender, {}, {}})});
     }
     return QVariant();
 }
@@ -146,11 +148,11 @@ QVariant ChatLineModelItem::contentsData(int role) const
     case ChatLineModel::SelectedBackgroundRole:
         return backgroundBrush(UiStyle::FormatType::Contents, true);
     case ChatLineModel::FormatRole:
-        return QVariant::fromValue<UiStyle::FormatList>(_styledMsg.contentsFormatList());
+        return QVariant::fromValue(_styledMsg.contentsFormatList());
     case ChatLineModel::WrapListRole:
         if (_wrapList.isEmpty())
             computeWrapList();
-        return QVariant::fromValue<ChatLineModel::WrapList>(_wrapList);
+        return QVariant::fromValue(_wrapList);
     }
     return QVariant();
 }
@@ -174,7 +176,7 @@ QVariant ChatLineModelItem::backgroundBrush(UiStyle::FormatType subelement, bool
     QTextCharFormat fmt = QtUi::style()->format({UiStyle::formatType(_styledMsg.type()) | subelement, {}, {}},
                                                 messageLabel() | (selected ? UiStyle::MessageLabel::Selected : UiStyle::MessageLabel::None));
     if (fmt.hasProperty(QTextFormat::BackgroundBrush))
-        return QVariant::fromValue<QBrush>(fmt.background());
+        return QVariant::fromValue(fmt.background());
     return QVariant();
 }
 
index 489c02c37a7b5aa4fcaa62b48851d31d8dbcf608..17c1d1a742a4de9751056bea4b2ff56b33155b0d 100644 (file)
@@ -1774,7 +1774,7 @@ void MainWin::clientNetworkCreated(NetworkId id)
     const Network *net = Client::network(id);
     QAction *act = new QAction(net->networkName(), this);
     act->setObjectName(QString("NetworkAction-%1").arg(id.toInt()));
-    act->setData(QVariant::fromValue<NetworkId>(id));
+    act->setData(QVariant::fromValue(id));
     connect(net, SIGNAL(updatedRemotely()), this, SLOT(clientNetworkUpdated()));
     connect(act, SIGNAL(triggered()), this, SLOT(connectOrDisconnectFromNet()));
 
index 60c8b4f8c93a577d64a8e0c13a28eec05b7ea258..8d36c2d9fe04124646f7a036688a0007288c7111 100644 (file)
@@ -95,7 +95,7 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp)
     else
         item = new QTreeWidgetItem(cat, QStringList(sp->title()));
 
-    item->setData(0, SettingsPageRole, QVariant::fromValue<QObject *>(sp));
+    item->setData(0, SettingsPageRole, QVariant::fromValue(sp));
     pageIsLoaded[sp] = false;
     if (!ui.settingsTree->selectedItems().count())
         ui.settingsTree->setCurrentItem(item);
index d109ad800a3021b7ad198b4b01fe3b3d91b67935..bb1c35d59b0a53ebbba8651ab1137274f206ab0b 100644 (file)
@@ -161,8 +161,8 @@ void ChatMonitorSettingsPage::save()
 
     // save list of active buffers
     QVariantList saveableBufferIdList;
-    foreach(BufferId id, _configActive->bufferList()) {
-        saveableBufferIdList << QVariant::fromValue<BufferId>(id);
+    foreach (BufferId id, _configActive->bufferList()) {
+        saveableBufferIdList << QVariant::fromValue(id);
     }
 
     chatViewSettings.setValue("Buffers", saveableBufferIdList);
index 58409e83051b08ad4dbcd077872ecb0c05449ae2..dc6295058aa12de8477a9bb0ca9bfefb686174ea 100644 (file)
@@ -570,7 +570,7 @@ QListWidgetItem *NetworksSettingsPage::insertNetwork(const NetworkInfo &info)
         }
         if (!item) item = new QListWidgetItem(disconnectedIcon, info.networkName, ui.networkList);
     }
-    item->setData(Qt::UserRole, QVariant::fromValue<NetworkId>(info.networkId));
+    item->setData(Qt::UserRole, QVariant::fromValue(info.networkId));
     setItemState(info.networkId, item);
     widgetHasChanged();
     return item;
index 72d87d61215d0abf328d3d6c6c662792e73ed6f3..93175dfa5ac7276d1f74af800c81211de6b48d09 100644 (file)
@@ -156,7 +156,7 @@ QVariant ShortcutsModel::data(const QModelIndex &index, int role) const
         return QVariant();
 
     case ActionRole:
-        return QVariant::fromValue<QObject *>(action);
+        return QVariant::fromValue(action);
 
     case DefaultShortcutRole:
         return action->shortcut(Action::DefaultShortcut);
index ea88291a296c37078992f899bae4d676ec818e39..1617d2cf8820d131b1bcc172605c5af559bd7608 100644 (file)
@@ -577,7 +577,7 @@ NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *pare
     foreach(NetworkId id, Client::networkIds()) {
         const Network *net = Client::network(id);
         if (net->isConnected()) {
-            networks->addItem(net->networkName(), QVariant::fromValue<NetworkId>(id));
+            networks->addItem(net->networkName(), QVariant::fromValue(id));
         }
     }
 
index 0af4c2af6edba459510513b36c8cd30061c0dcf4..5eabf1595d5064f04c50231d4f743d6afc98615f 100644 (file)
@@ -165,7 +165,7 @@ void ToolBarActionProvider::networkCreated(NetworkId id)
     Action *act = new Action(net->networkName(), this);
     _networkActions[id] = act;
     act->setObjectName(QString("NetworkAction-%1").arg(id.toInt()));
-    act->setData(QVariant::fromValue<NetworkId>(id));
+    act->setData(QVariant::fromValue(id));
     connect(net, SIGNAL(updatedRemotely()), SLOT(networkUpdated()));
     connect(act, SIGNAL(triggered()), SLOT(connectOrDisconnectNet()));
     networkUpdated(net);