From f585b7a629f347c54ea0b0ce67e96a514482095b Mon Sep 17 00:00:00 2001 From: drbob Date: Sun, 17 May 2020 12:10:46 +1000 Subject: [PATCH] Enable Republish / Likes from new UI elements Update interface to use groupId / msgId. Tweak PulseAddDialog for Republish & like. Hide Like messages from showing in UI. Wire up buttons from new UI elements. --- .../src/gui/TheWire/PulseAddDialog.cpp | 34 +++++- .../src/gui/TheWire/PulseAddDialog.h | 6 +- .../src/gui/TheWire/PulseAddDialog.ui | 2 +- .../src/gui/TheWire/PulseViewItem.cpp | 24 +++- .../src/gui/TheWire/PulseViewItem.h | 16 +-- retroshare-gui/src/gui/TheWire/WireDialog.cpp | 113 ++++++++++++------ retroshare-gui/src/gui/TheWire/WireDialog.h | 18 +-- 7 files changed, 148 insertions(+), 65 deletions(-) diff --git a/retroshare-gui/src/gui/TheWire/PulseAddDialog.cpp b/retroshare-gui/src/gui/TheWire/PulseAddDialog.cpp index 651a53e23..10e76f173 100644 --- a/retroshare-gui/src/gui/TheWire/PulseAddDialog.cpp +++ b/retroshare-gui/src/gui/TheWire/PulseAddDialog.cpp @@ -91,9 +91,13 @@ void PulseAddDialog::cleanup() ui.lineEdit_URL->setText(""); ui.lineEdit_DisplayAs->setText(""); ui.textEdit_Pulse->setPlainText(""); - ui.pushButton_Post->setEnabled(false); // disable URL until functionality finished. ui.frame_URL->setEnabled(false); + + ui.pushButton_Post->setEnabled(false); + ui.pushButton_Post->setText("Post Pulse to Wire"); + ui.frame_input->setVisible(true); + ui.widget_sentiment->setVisible(true); } void PulseAddDialog::pulseTextChanged() @@ -104,10 +108,11 @@ void PulseAddDialog::pulseTextChanged() } // Old Interface, deprecate / make internal. -void PulseAddDialog::setReplyTo(RsWirePulse &pulse, std::string &groupName) +void PulseAddDialog::setReplyTo(RsWirePulse &pulse, std::string &groupName, uint32_t replyType) { mIsReply = true; mReplyToPulse = pulse; + mReplyType = replyType; ui.frame_reply->setVisible(true); { @@ -121,9 +126,28 @@ void PulseAddDialog::setReplyTo(RsWirePulse &pulse, std::string &groupName) ui.widget_replyto->setLayout(vbox); ui.widget_replyto->setVisible(true); } + + if (mReplyType & WIRE_PULSE_TYPE_REPLY) + { + ui.pushButton_Post->setText("Reply to Pulse"); + } + else + { + // cannot add msg for like / republish. + ui.pushButton_Post->setEnabled(true); + ui.frame_input->setVisible(false); + ui.widget_sentiment->setVisible(false); + if (mReplyType & WIRE_PULSE_TYPE_REPUBLISH) { + ui.pushButton_Post->setText("Republish Pulse"); + } + else if (mReplyType & WIRE_PULSE_TYPE_LIKE) { + ui.pushButton_Post->setText("Like Pulse"); + } + } + } -void PulseAddDialog::setReplyTo(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId) +void PulseAddDialog::setReplyTo(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, uint32_t replyType) { /* fetch in the background */ RsWireGroupSPtr pGroup; @@ -142,7 +166,7 @@ void PulseAddDialog::setReplyTo(const RsGxsGroupId &grpId, const RsGxsMessageId return; } - setReplyTo(*pPulse, pGroup->mMeta.mGroupName); + setReplyTo(*pPulse, pGroup->mMeta.mGroupName, replyType); } void PulseAddDialog::addURL() @@ -247,7 +271,7 @@ void PulseAddDialog::postReplyPulse() if (!rsWire->createReplyPulse(mReplyToPulse.mMeta.mGroupId, mReplyToPulse.mMeta.mOrigMsgId, mGroup.mMeta.mGroupId, - WIRE_PULSE_TYPE_REPLY, + mReplyType, pPulse)) { std::cerr << "PulseAddDialog::postReplyPulse() FAILED"; diff --git a/retroshare-gui/src/gui/TheWire/PulseAddDialog.h b/retroshare-gui/src/gui/TheWire/PulseAddDialog.h index 24be86ff4..88b0bb815 100644 --- a/retroshare-gui/src/gui/TheWire/PulseAddDialog.h +++ b/retroshare-gui/src/gui/TheWire/PulseAddDialog.h @@ -34,7 +34,7 @@ public: void cleanup(); - void setReplyTo(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId); + void setReplyTo(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, uint32_t replyType); void setGroup(const RsGxsGroupId &grpId); private slots: @@ -48,7 +48,7 @@ private slots: private: // OLD VERSIONs, private now. void setGroup(RsWireGroup &group); - void setReplyTo(RsWirePulse &pulse, std::string &groupName); + void setReplyTo(RsWirePulse &pulse, std::string &groupName, uint32_t replyType); void postOriginalPulse(); void postReplyPulse(); @@ -62,9 +62,9 @@ protected: // if this is a reply bool mIsReply; RsWirePulse mReplyToPulse; + uint32_t mReplyType; Ui::PulseAddDialog ui; - }; #endif diff --git a/retroshare-gui/src/gui/TheWire/PulseAddDialog.ui b/retroshare-gui/src/gui/TheWire/PulseAddDialog.ui index b87d02794..6e88f6219 100644 --- a/retroshare-gui/src/gui/TheWire/PulseAddDialog.ui +++ b/retroshare-gui/src/gui/TheWire/PulseAddDialog.ui @@ -150,7 +150,7 @@ - + QFrame::StyledPanel diff --git a/retroshare-gui/src/gui/TheWire/PulseViewItem.cpp b/retroshare-gui/src/gui/TheWire/PulseViewItem.cpp index deb0c65d9..d0d3c2d07 100644 --- a/retroshare-gui/src/gui/TheWire/PulseViewItem.cpp +++ b/retroshare-gui/src/gui/TheWire/PulseViewItem.cpp @@ -47,8 +47,12 @@ void PulseDataItem::actionReply() std::cerr << std::endl; if (mHolder) { - std::string groupName = "unknownGroupName"; - mHolder->PVHreply(*mPulse, groupName); + if (mPulse->mPulseType & WIRE_PULSE_TYPE_REFERENCE) { + std::cerr << "PulseDataItem::actionReply() NO ACTION FOR REF"; + std::cerr << std::endl; + return; + } + mHolder->PVHreply(mPulse->mMeta.mGroupId, mPulse->mMeta.mMsgId); } } @@ -58,8 +62,12 @@ void PulseDataItem::actionRepublish() std::cerr << std::endl; if (mHolder) { - std::string groupName = "unknownGroupName"; - mHolder->PVHrepublish(*mPulse, groupName); + if (mPulse->mPulseType & WIRE_PULSE_TYPE_REFERENCE) { + std::cerr << "PulseDataItem::actionRepublish() NO ACTION FOR REF"; + std::cerr << std::endl; + return; + } + mHolder->PVHrepublish(mPulse->mMeta.mGroupId, mPulse->mMeta.mMsgId); } } @@ -69,8 +77,12 @@ void PulseDataItem::actionLike() std::cerr << std::endl; if (mHolder) { - std::string groupName = "unknownGroupName"; - mHolder->PVHlike(*mPulse, groupName); + if (mPulse->mPulseType & WIRE_PULSE_TYPE_REFERENCE) { + std::cerr << "PulseDataItem::actionLike() NO ACTION FOR REF"; + std::cerr << std::endl; + return; + } + mHolder->PVHlike(mPulse->mMeta.mGroupId, mPulse->mMeta.mMsgId); } } diff --git a/retroshare-gui/src/gui/TheWire/PulseViewItem.h b/retroshare-gui/src/gui/TheWire/PulseViewItem.h index bb22afdd6..8c0c6bbe6 100644 --- a/retroshare-gui/src/gui/TheWire/PulseViewItem.h +++ b/retroshare-gui/src/gui/TheWire/PulseViewItem.h @@ -33,16 +33,16 @@ public: virtual ~PulseViewHolder() {} // Actions. - virtual void PVHreply(RsWirePulse &pulse, std::string &groupName) = 0; - virtual void PVHrepublish(RsWirePulse &pulse, std::string &groupName) = 0; - virtual void PVHlike(RsWirePulse &pulse, std::string &groupName) = 0; + virtual void PVHreply(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) = 0; + virtual void PVHrepublish(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) = 0; + virtual void PVHlike(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) = 0; - virtual void PVHviewGroup(RsGxsGroupId &groupId) = 0; - virtual void PVHviewPulse(RsGxsGroupId &groupId, RsGxsMessageId &msgId) = 0; - virtual void PVHviewReply(RsGxsGroupId &groupId, RsGxsMessageId &msgId) = 0; + virtual void PVHviewGroup(const RsGxsGroupId &groupId) = 0; + virtual void PVHviewPulse(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) = 0; + virtual void PVHviewReply(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) = 0; - virtual void PVHfollow(RsGxsGroupId &groupId) = 0; - virtual void PVHrate(RsGxsId &authorId) = 0; + virtual void PVHfollow(const RsGxsGroupId &groupId) = 0; + virtual void PVHrate(const RsGxsId &authorId) = 0; }; class PulseDataInterface diff --git a/retroshare-gui/src/gui/TheWire/WireDialog.cpp b/retroshare-gui/src/gui/TheWire/WireDialog.cpp index ab6460784..cf4c93ac5 100644 --- a/retroshare-gui/src/gui/TheWire/WireDialog.cpp +++ b/retroshare-gui/src/gui/TheWire/WireDialog.cpp @@ -132,6 +132,35 @@ void WireDialog::rate(RsGxsId &authorId) std::cerr << std::endl; } +bool WireDialog::setupPulseAddDialog() +{ + std::cerr << "WireDialog::setupPulseAddDialog()"; + std::cerr << std::endl; + + if (!mAddDialog) + { + mAddDialog = new PulseAddDialog(NULL); + mAddDialog->hide(); + } + + mAddDialog->cleanup(); + + int idx = ui.groupChooser->currentIndex(); + if (idx < 0) { + std::cerr << "WireDialog::setupPulseAddDialog() ERROR GETTING AuthorId!"; + std::cerr << std::endl; + + QMessageBox::warning(this, tr("RetroShare"),tr("Please create or choose Wire Groupd first"), QMessageBox::Ok, QMessageBox::Ok); + return false; + } + + // publishing group. + RsWireGroup group = mOwnGroups[idx]; + mAddDialog->setGroup(group.mMeta.mGroupId); + + return true; +} + void WireDialog::reply(RsWirePulse &pulse, std::string &groupName) { std::cerr << "WireDialog::reply("; @@ -143,31 +172,11 @@ void WireDialog::reply(RsWirePulse &pulse, std::string &groupName) std::cerr << ")"; std::cerr << std::endl; - if (!mAddDialog) + if (setupPulseAddDialog()) { - mAddDialog = new PulseAddDialog(NULL); - mAddDialog->hide(); + mAddDialog->setReplyTo(pulse.mMeta.mGroupId, pulse.mMeta.mMsgId, WIRE_PULSE_TYPE_REPLY); + mAddDialog->show(); } - - int idx = ui.groupChooser->currentIndex(); - if (idx < 0) { - std::cerr << "WireDialog::reply() ERROR GETTING AuthorId!"; - std::cerr << std::endl; - - QMessageBox::warning(this, tr("RetroShare"),tr("Please create or choose Wire Groupd first"), QMessageBox::Ok, QMessageBox::Ok); - return; - } - - // publishing group. - RsWireGroup group = mOwnGroups[idx]; - mAddDialog->cleanup(); - mAddDialog->setGroup(group.mMeta.mGroupId); - - // establish replyTo. - //mAddDialog->setReplyTo(pulse, groupName); - mAddDialog->setReplyTo(pulse.mMeta.mGroupId, pulse.mMeta.mMsgId); - - mAddDialog->show(); } void WireDialog::notifyPulseSelection(PulseItem *item) @@ -857,25 +866,46 @@ void WireDialog::loadRequest(const TokenQueue *queue, const TokenRequest &req) // PulseDataItem interface // Actions. -void WireDialog::PVHreply(RsWirePulse &pulse, std::string &groupName) +void WireDialog::PVHreply(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) { - std::cerr << "WireDialog::PVHreply() TODO"; + std::cerr << "WireDialog::PVHreply() GroupId: " << groupId; + std::cerr << "MsgId: " << msgId; std::cerr << std::endl; + + if (setupPulseAddDialog()) + { + mAddDialog->setReplyTo(groupId, msgId, WIRE_PULSE_TYPE_REPLY); + mAddDialog->show(); + } } -void WireDialog::PVHrepublish(RsWirePulse &pulse, std::string &groupName) +void WireDialog::PVHrepublish(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) { - std::cerr << "WireDialog::PVHrepublish() TODO"; + std::cerr << "WireDialog::PVHrepublish() GroupId: " << groupId; + std::cerr << "MsgId: " << msgId; std::cerr << std::endl; + + if (setupPulseAddDialog()) + { + mAddDialog->setReplyTo(groupId, msgId, WIRE_PULSE_TYPE_REPUBLISH); + mAddDialog->show(); + } } -void WireDialog::PVHlike(RsWirePulse &pulse, std::string &groupName) +void WireDialog::PVHlike(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) { - std::cerr << "WireDialog::PVHlike() TODO"; + std::cerr << "WireDialog::PVHlike() GroupId: " << groupId; + std::cerr << "MsgId: " << msgId; std::cerr << std::endl; + + if (setupPulseAddDialog()) + { + mAddDialog->setReplyTo(groupId, msgId, WIRE_PULSE_TYPE_LIKE); + mAddDialog->show(); + } } -void WireDialog::PVHviewGroup(RsGxsGroupId &groupId) +void WireDialog::PVHviewGroup(const RsGxsGroupId &groupId) { std::cerr << "WireDialog::PVHviewGroup("; std::cerr << groupId.toStdString(); @@ -885,7 +915,7 @@ void WireDialog::PVHviewGroup(RsGxsGroupId &groupId) showGroupFocus(groupId); } -void WireDialog::PVHviewPulse(RsGxsGroupId &groupId, RsGxsMessageId &msgId) +void WireDialog::PVHviewPulse(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) { std::cerr << "WireDialog::PVHviewPulse("; std::cerr << groupId.toStdString() << ","; @@ -896,7 +926,7 @@ void WireDialog::PVHviewPulse(RsGxsGroupId &groupId, RsGxsMessageId &msgId) showPulseFocus(groupId, msgId); } -void WireDialog::PVHviewReply(RsGxsGroupId &groupId, RsGxsMessageId &msgId) +void WireDialog::PVHviewReply(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) { std::cerr << "WireDialog::PVHviewReply("; std::cerr << groupId.toStdString() << ","; @@ -907,7 +937,7 @@ void WireDialog::PVHviewReply(RsGxsGroupId &groupId, RsGxsMessageId &msgId) // showPulseFocus(groupId, msgId); } -void WireDialog::PVHfollow(RsGxsGroupId &groupId) +void WireDialog::PVHfollow(const RsGxsGroupId &groupId) { std::cerr << "WireDialog::PVHfollow("; std::cerr << groupId.toStdString(); @@ -915,7 +945,7 @@ void WireDialog::PVHfollow(RsGxsGroupId &groupId) std::cerr << std::endl; } -void WireDialog::PVHrate(RsGxsId &authorId) +void WireDialog::PVHrate(const RsGxsId &authorId) { std::cerr << "WireDialog::PVHrate("; std::cerr << authorId.toStdString(); @@ -1109,6 +1139,14 @@ void WireDialog::postGroupFocus(RsWireGroupSPtr group, std::listmPulseType & WIRE_PULSE_TYPE_LIKE) { + std::cerr << "WireDialog::postGroupFocus() Not showing LIKE"; + std::cerr << std::endl; + continue; + } + PulseReply *firstReply = new PulseReply(this, reply); addTwitterView(firstReply); firstReply->showReplyLine(false); @@ -1155,6 +1193,13 @@ void WireDialog::postGroupsPulses(std::list pulses) for(it = pulses.begin(); it != pulses.end(); it++) { RsWirePulseSPtr reply = *it; + // don't show likes + if (reply->mPulseType & WIRE_PULSE_TYPE_LIKE) { + std::cerr << "WireDialog::postGroupsPulses() Not showing LIKE"; + std::cerr << std::endl; + continue; + } + PulseReply *firstReply = new PulseReply(this, reply); addTwitterView(firstReply); firstReply->showReplyLine(false); diff --git a/retroshare-gui/src/gui/TheWire/WireDialog.h b/retroshare-gui/src/gui/TheWire/WireDialog.h index 7e18f523f..35351af17 100644 --- a/retroshare-gui/src/gui/TheWire/WireDialog.h +++ b/retroshare-gui/src/gui/TheWire/WireDialog.h @@ -68,16 +68,16 @@ public: virtual void notifyGroupSelection(WireGroupItem *item) override; // PulseViewItem interface - virtual void PVHreply(RsWirePulse &pulse, std::string &groupName) override; - virtual void PVHrepublish(RsWirePulse &pulse, std::string &groupName) override; - virtual void PVHlike(RsWirePulse &pulse, std::string &groupName) override; + virtual void PVHreply(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) override; + virtual void PVHrepublish(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) override; + virtual void PVHlike(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) override; - virtual void PVHviewGroup(RsGxsGroupId &groupId) override; - virtual void PVHviewPulse(RsGxsGroupId &groupId, RsGxsMessageId &msgId) override; - virtual void PVHviewReply(RsGxsGroupId &groupId, RsGxsMessageId &msgId) override; + virtual void PVHviewGroup(const RsGxsGroupId &groupId) override; + virtual void PVHviewPulse(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) override; + virtual void PVHviewReply(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId) override; - virtual void PVHfollow(RsGxsGroupId &groupId) override; - virtual void PVHrate(RsGxsId &authorId) override; + virtual void PVHfollow(const RsGxsGroupId &groupId) override; + virtual void PVHrate(const RsGxsId &authorId) override; // New TwitterView void postTestTwitterView(); @@ -104,6 +104,8 @@ private slots: private: + bool setupPulseAddDialog(); + void addGroup(QWidget *item); void addPulse(RsWirePulse *pulse, RsWireGroup *group,