diff --git a/plugins/FeedReader/gui/FeedReaderFeedItem.h b/plugins/FeedReader/gui/FeedReaderFeedItem.h index 10776c08b..29b8c2bba 100644 --- a/plugins/FeedReader/gui/FeedReaderFeedItem.h +++ b/plugins/FeedReader/gui/FeedReaderFeedItem.h @@ -47,8 +47,7 @@ protected: private slots: /* default stuff */ - void removeItem(); - void toggle(); + void toggle() override; void readAndClearItem(); void copyLink(); @@ -61,9 +60,7 @@ private: RsFeedReader *mFeedReader; FeedReaderNotify *mNotify; - FeedHolder *mParent; - std::string mFeedId; std::string mMsgId; QString mLink; diff --git a/retroshare-gui/src/gui/NewsFeed.cpp b/retroshare-gui/src/gui/NewsFeed.cpp index 995ac13fc..1afb1bfc8 100644 --- a/retroshare-gui/src/gui/NewsFeed.cpp +++ b/retroshare-gui/src/gui/NewsFeed.cpp @@ -480,14 +480,10 @@ void NewsFeed::addFeedItemIfUnique(FeedItem *item, bool replace) void NewsFeed::remUniqueFeedItem(FeedItem *item) { - FeedItem *feedItem = ui->feedWidget->findFeedItem(item->uniqueIdentifier()); + //FeedItem *feedItem = ui->feedWidget->findFeedItem(item->uniqueIdentifier()); - if (feedItem) - { + ui->feedWidget->removeFeedItem(item); delete item; - - ui->feedWidget->removeFeedItem(feedItem); - } } /* FeedHolder Functions (for FeedItem functionality) */ @@ -496,7 +492,7 @@ QScrollArea *NewsFeed::getScrollArea() return NULL; } -void NewsFeed::deleteFeedItem(QWidget *item, uint32_t /*type*/) +void NewsFeed::deleteFeedItem(FeedItem *item, uint32_t /*type*/) { #ifdef NEWS_DEBUG std::cerr << "NewsFeed::deleteFeedItem()"; @@ -504,6 +500,7 @@ void NewsFeed::deleteFeedItem(QWidget *item, uint32_t /*type*/) #endif if (item) { + ui->feedWidget->removeFeedItem(item); item->close (); } } diff --git a/retroshare-gui/src/gui/NewsFeed.h b/retroshare-gui/src/gui/NewsFeed.h index c255d56ac..2492521f5 100644 --- a/retroshare-gui/src/gui/NewsFeed.h +++ b/retroshare-gui/src/gui/NewsFeed.h @@ -74,7 +74,7 @@ public: /* FeedHolder Functions (for FeedItem functionality) */ virtual QScrollArea *getScrollArea(); - virtual void deleteFeedItem(QWidget *item, uint32_t type); + virtual void deleteFeedItem(FeedItem *item, uint32_t type); virtual void openChat(const RsPeerId& peerId); virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &versions, const RsGxsMessageId &msgId, const QString &title); diff --git a/retroshare-gui/src/gui/Posted/PostedItem.h b/retroshare-gui/src/gui/Posted/PostedItem.h index 7bb920a6c..ef5e99fc2 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.h +++ b/retroshare-gui/src/gui/Posted/PostedItem.h @@ -60,7 +60,7 @@ private slots: void makeDownVote(); void readToggled(bool checked); void readAndClearItem(); - void toggle(); + void toggle() override; void copyMessageLink(); void toggleNotes(); diff --git a/retroshare-gui/src/gui/Posted/PostedListWidget.cpp b/retroshare-gui/src/gui/Posted/PostedListWidget.cpp index b3bf1793a..9c86a2f9a 100644 --- a/retroshare-gui/src/gui/Posted/PostedListWidget.cpp +++ b/retroshare-gui/src/gui/Posted/PostedListWidget.cpp @@ -143,7 +143,7 @@ QScrollArea *PostedListWidget::getScrollArea() return ui->scrollArea; } -void PostedListWidget::deleteFeedItem(QWidget */*item*/, uint32_t /*type*/) +void PostedListWidget::deleteFeedItem(FeedItem *, uint32_t /*type*/) { #ifdef DEBUG_POSTED_LIST_WIDGET std::cerr << "PostedListWidget::deleteFeedItem() Nah"; diff --git a/retroshare-gui/src/gui/Posted/PostedListWidget.h b/retroshare-gui/src/gui/Posted/PostedListWidget.h index 8184a444c..cf05e9d4c 100644 --- a/retroshare-gui/src/gui/Posted/PostedListWidget.h +++ b/retroshare-gui/src/gui/Posted/PostedListWidget.h @@ -48,7 +48,7 @@ public: /* FeedHolder */ virtual QScrollArea *getScrollArea(); - virtual void deleteFeedItem(QWidget *item, uint32_t type); + virtual void deleteFeedItem(FeedItem *item, uint32_t type); virtual void openChat(const RsPeerId& peerId); virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &versions, const RsGxsMessageId &msgId, const QString &title); diff --git a/retroshare-gui/src/gui/common/RSFeedWidget.cpp b/retroshare-gui/src/gui/common/RSFeedWidget.cpp index fff41d11b..f95977d82 100644 --- a/retroshare-gui/src/gui/common/RSFeedWidget.cpp +++ b/retroshare-gui/src/gui/common/RSFeedWidget.cpp @@ -111,7 +111,6 @@ bool RSFeedWidget::eventFilter(QObject *object, QEvent *event) FeedItem *feedItem = feedItemFromTreeItem(treeItem); if (feedItem) { disconnectSignals(feedItem); - feedRemoved(feedItem); delete(feedItem); } delete(treeItem); @@ -135,23 +134,19 @@ void RSFeedWidget::feedAdded(FeedItem *feedItem, QTreeWidgetItem *treeItem) { } -void RSFeedWidget::feedRemoved(FeedItem *feedItem) -{ -} - void RSFeedWidget::feedsCleared() { } void RSFeedWidget::connectSignals(FeedItem *feedItem) { - connect(feedItem, SIGNAL(feedItemDestroyed(FeedItem*)), this, SLOT(feedItemDestroyed(FeedItem*))); + connect(feedItem, SIGNAL(feedItemNeedsClosing(qulonglong)), this, SLOT(feedItemDestroyed(qulonglong))); connect(feedItem, SIGNAL(sizeChanged(FeedItem*)), this, SLOT(feedItemSizeChanged(FeedItem*))); } void RSFeedWidget::disconnectSignals(FeedItem *feedItem) { - disconnect(feedItem, SIGNAL(feedItemDestroyed(FeedItem*)), this, SLOT(feedItemDestroyed(FeedItem*))); + disconnect(feedItem, SIGNAL(feedItemNeedsClosing(qulonglong)), this, SLOT(feedItemDestroyed(qulonglong))); disconnect(feedItem, SIGNAL(sizeChanged(FeedItem*)), this, SLOT(feedItemSizeChanged(FeedItem*))); } @@ -400,7 +395,6 @@ void RSFeedWidget::removeFeedItem(FeedItem *feedItem) return ; } - feedRemoved(feedItem); disconnectSignals(feedItem); delete ui->treeWidget->takeTopLevelItem(treeItem_index); @@ -424,14 +418,13 @@ void RSFeedWidget::feedItemSizeChanged(FeedItem */*feedItem*/) ui->treeWidget->doItemsLayout(); } -void RSFeedWidget::feedItemDestroyed(FeedItem *feedItem) +void RSFeedWidget::feedItemDestroyed(qulonglong id) { /* No need to disconnect when object will be destroyed */ - QTreeWidgetItem *treeItem = findTreeWidgetItem(feedItem->uniqueIdentifier()); + QTreeWidgetItem *treeItem = findTreeWidgetItem(id); - feedRemoved(feedItem); - if (treeItem) + if(treeItem) delete(treeItem); if (!mCountChangedDisabled) diff --git a/retroshare-gui/src/gui/common/RSFeedWidget.h b/retroshare-gui/src/gui/common/RSFeedWidget.h index bc38adf84..13a975475 100644 --- a/retroshare-gui/src/gui/common/RSFeedWidget.h +++ b/retroshare-gui/src/gui/common/RSFeedWidget.h @@ -87,11 +87,10 @@ public slots: protected: bool eventFilter(QObject *object, QEvent *event); virtual void feedAdded(FeedItem *feedItem, QTreeWidgetItem *treeItem); - virtual void feedRemoved(FeedItem *feedItem); virtual void feedsCleared(); private slots: - void feedItemDestroyed(FeedItem *feedItem); + void feedItemDestroyed(qulonglong id); void feedItemSizeChanged(FeedItem *feedItem); private: diff --git a/retroshare-gui/src/gui/feeds/ChatMsgItem.cpp b/retroshare-gui/src/gui/feeds/ChatMsgItem.cpp index ee7aa5ca8..7f37aef8b 100644 --- a/retroshare-gui/src/gui/feeds/ChatMsgItem.cpp +++ b/retroshare-gui/src/gui/feeds/ChatMsgItem.cpp @@ -43,7 +43,7 @@ /** Constructor */ ChatMsgItem::ChatMsgItem(FeedHolder *parent, uint32_t feedId, const RsPeerId &peerId, const std::string &message) : - FeedItem(NULL), mParent(parent), mFeedId(feedId), mPeerId(peerId) + FeedItem(parent,feedId,NULL), mPeerId(peerId) { /* Invoke the Qt Designer generated object setup routine */ setupUi(this); @@ -153,26 +153,6 @@ void ChatMsgItem::insertChat(const std::string &message) chatTextlabel->setText(formatMsg); } -void ChatMsgItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "ChatMsgItem::removeItem()"; - std::cerr << std::endl; -#endif - - if (mParent) { - mParent->lockLayout(this, true); - } - - hide(); - - if (mParent) { - mParent->lockLayout(this, false); - - mParent->deleteFeedItem(this, mFeedId); - } -} - void ChatMsgItem::gotoHome() { #ifdef DEBUG_ITEM @@ -191,7 +171,7 @@ void ChatMsgItem::sendMsg() std::cerr << std::endl; #endif - if (mParent) + if (mFeedHolder) { MessageComposer *nMsgDialog = MessageComposer::newMsg(); @@ -214,15 +194,15 @@ void ChatMsgItem::openChat() std::cerr << "ChatMsgItem::openChat()"; std::cerr << std::endl; #endif - if (mParent) + if (mFeedHolder) { - mParent->openChat(mPeerId); + mFeedHolder->openChat(mPeerId); } } void ChatMsgItem::togglequickmessage() { - mParent->lockLayout(this, true); + mFeedHolder->lockLayout(this, true); if (messageFrame->isHidden()) { @@ -239,7 +219,7 @@ void ChatMsgItem::togglequickmessage() emit sizeChanged(this); - mParent->lockLayout(this, false); + mFeedHolder->lockLayout(this, false); } void ChatMsgItem::sendMessage() diff --git a/retroshare-gui/src/gui/feeds/ChatMsgItem.h b/retroshare-gui/src/gui/feeds/ChatMsgItem.h index fe946a4b9..421cbfda8 100644 --- a/retroshare-gui/src/gui/feeds/ChatMsgItem.h +++ b/retroshare-gui/src/gui/feeds/ChatMsgItem.h @@ -45,7 +45,6 @@ protected: private slots: /* default stuff */ void gotoHome(); - void removeItem(); void sendMsg(); void openChat(); @@ -60,9 +59,6 @@ private slots: private: void insertChat(const std::string &message); - FeedHolder *mParent; - uint32_t mFeedId; - RsPeerId mPeerId; }; diff --git a/retroshare-gui/src/gui/feeds/FeedHolder.h b/retroshare-gui/src/gui/feeds/FeedHolder.h index f683bca19..6c2f256e0 100644 --- a/retroshare-gui/src/gui/feeds/FeedHolder.h +++ b/retroshare-gui/src/gui/feeds/FeedHolder.h @@ -27,6 +27,7 @@ #include // WRONG ONE - BUT IT'LL DO FOR NOW. class QScrollArea; +class FeedItem; class FeedHolder { @@ -34,7 +35,7 @@ public: FeedHolder(); virtual QScrollArea *getScrollArea() = 0; - virtual void deleteFeedItem(QWidget *item, uint32_t type) = 0; + virtual void deleteFeedItem(FeedItem *item, uint32_t type) = 0; virtual void openChat(const RsPeerId& peerId) = 0; virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &msg_versions, const RsGxsMessageId &msgId, const QString &title)=0; diff --git a/retroshare-gui/src/gui/feeds/FeedItem.cpp b/retroshare-gui/src/gui/feeds/FeedItem.cpp index 2e5353e40..5f0821790 100644 --- a/retroshare-gui/src/gui/feeds/FeedItem.cpp +++ b/retroshare-gui/src/gui/feeds/FeedItem.cpp @@ -20,17 +20,15 @@ #include #include "FeedItem.h" +#include "FeedHolder.h" /** Constructor */ -FeedItem::FeedItem(QWidget *parent) : QWidget(parent), mHash(0) +FeedItem::FeedItem(FeedHolder *fh, uint32_t feedId, QWidget *parent) : QWidget(parent), mHash(0),mFeedHolder(fh),mFeedId(feedId) { mWasExpanded = false; } -FeedItem::~FeedItem() -{ - emit feedItemDestroyed(this); -} +FeedItem::~FeedItem() { } void FeedItem::expand(bool open) { @@ -48,12 +46,36 @@ void FeedItem::expand(bool open) uint64_t FeedItem::hash_64bits(const std::string& s) const { if(mHash == 0) - { - mHash = 0x01110bbfa09; - - for(uint32_t i=0;i> 3)) + s[i]*0x217898fbba7 + 0x0294379); - } + mHash = hash64(s); return mHash; } + +uint64_t FeedItem::hash64(const std::string& s) +{ + uint64_t hash = 0x01110bbfa09; + + for(uint32_t i=0;i> 3)) + s[i]*0x217898fbba7 + 0x0294379); + + return hash; +} + +void FeedItem::removeItem() +{ +#ifdef DEBUG_ITEM + std::cerr << "MsgItem::removeItem()"; + std::cerr << std::endl; +#endif + + mFeedHolder->deleteFeedItem(this,0); + +// mFeedHolder->lockLayout(this, true); +// hide(); +// +// if (mFeedHolder) +// mFeedHolder->deleteFeedItem(this, mFeedId); +// +// mFeedHolder->lockLayout(this, false); +} + diff --git a/retroshare-gui/src/gui/feeds/FeedItem.h b/retroshare-gui/src/gui/feeds/FeedItem.h index 7cd6808a1..7739ac122 100644 --- a/retroshare-gui/src/gui/feeds/FeedItem.h +++ b/retroshare-gui/src/gui/feeds/FeedItem.h @@ -23,13 +23,15 @@ #include +class FeedHolder; + class FeedItem : public QWidget { Q_OBJECT public: /** Default Constructor */ - FeedItem(QWidget *parent = 0); + FeedItem(FeedHolder *fh,uint32_t feedId,QWidget *parent = 0); /** Default Destructor */ virtual ~FeedItem(); @@ -42,14 +44,25 @@ public: * would contain the same information. It should therefore sumarise the data represented by the item. */ virtual uint64_t uniqueIdentifier() const =0; + + static uint64_t hash64(const std::string& s); + +protected slots: + void removeItem(); + protected: virtual void doExpand(bool open) = 0; virtual void expandFill(bool /*first*/) {} + virtual void toggle() {} + uint64_t hash_64bits(const std::string& s) const; + + FeedHolder *mFeedHolder; + uint32_t mFeedId; signals: void sizeChanged(FeedItem *feedItem); - void feedItemDestroyed(FeedItem *feedItem); + void feedItemNeedsClosing(qulonglong); private: bool mWasExpanded; diff --git a/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.h b/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.h index 1a0c56a70..266d1c019 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.h +++ b/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.h @@ -53,7 +53,7 @@ protected: private slots: /* default stuff */ - void toggle(); + void toggle() override; void subscribeChannel(); diff --git a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h index 8b9d21c57..9e37a797e 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h +++ b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h @@ -66,6 +66,7 @@ public: bool isUnread() const ; + static uint64_t computeIdentifier(const RsGxsMessageId& msgid) { hash64("GxsChannelPostItem " + msgid.toStdString()) ; } protected: void init(const RsGxsMessageId& messageId,const std::set& older_versions); @@ -90,7 +91,7 @@ protected: private slots: /* default stuff */ - void toggle(); + void toggle() override; void readAndClearItem(); void download(); void play(); diff --git a/retroshare-gui/src/gui/feeds/GxsCircleItem.cpp b/retroshare-gui/src/gui/feeds/GxsCircleItem.cpp index aa161cde4..7673c6d19 100644 --- a/retroshare-gui/src/gui/feeds/GxsCircleItem.cpp +++ b/retroshare-gui/src/gui/feeds/GxsCircleItem.cpp @@ -40,7 +40,7 @@ GxsCircleItem::GxsCircleItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsCircleId &circleId, const RsGxsId &gxsId, const uint32_t type) - :FeedItem(NULL), mFeedHolder(feedHolder), mFeedId(feedId), mType(type), mCircleId(circleId), mGxsId(gxsId) + :FeedItem(feedHolder,feedId,NULL), mType(type), mCircleId(circleId), mGxsId(gxsId) { setup(); } @@ -172,22 +172,6 @@ uint64_t GxsCircleItem::uniqueIdentifier() const return hash_64bits("GxsCircle " + mCircleId.toStdString() + " " + mGxsId.toStdString() + " " + QString::number(mType).toStdString()); } -void GxsCircleItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "GxsCircleItem::removeItem()" << std::endl; -#endif - - if (mFeedHolder) - { - mFeedHolder->lockLayout(this, true); - hide(); - mFeedHolder->lockLayout(this, false); - - mFeedHolder->deleteFeedItem(this, mFeedId); - } -} - void GxsCircleItem::loadRequest(const TokenQueue * queue, const TokenRequest &req) { #ifdef ID_DEBUG diff --git a/retroshare-gui/src/gui/feeds/GxsCircleItem.h b/retroshare-gui/src/gui/feeds/GxsCircleItem.h index a45114ed6..8c611c06b 100644 --- a/retroshare-gui/src/gui/feeds/GxsCircleItem.h +++ b/retroshare-gui/src/gui/feeds/GxsCircleItem.h @@ -65,9 +65,6 @@ protected: private slots: - /* default stuff */ - void removeItem(); - void showCircleDetails(); void acceptCircleSubscription(); void grantCircleMembership() ; @@ -76,8 +73,6 @@ private slots: private: void setup(); - FeedHolder *mFeedHolder; - uint32_t mFeedId; uint32_t mType; RsGxsCircleId mCircleId; diff --git a/retroshare-gui/src/gui/feeds/GxsForumGroupItem.cpp b/retroshare-gui/src/gui/feeds/GxsForumGroupItem.cpp index 1e430638a..8b97d73cf 100644 --- a/retroshare-gui/src/gui/feeds/GxsForumGroupItem.cpp +++ b/retroshare-gui/src/gui/feeds/GxsForumGroupItem.cpp @@ -158,7 +158,6 @@ void GxsForumGroupItem::fill() ui->clearButton->setEnabled(false); } } - void GxsForumGroupItem::toggle() { expand(ui->expandFrame->isHidden()); diff --git a/retroshare-gui/src/gui/feeds/GxsForumGroupItem.h b/retroshare-gui/src/gui/feeds/GxsForumGroupItem.h index 87bffa022..3ac198630 100644 --- a/retroshare-gui/src/gui/feeds/GxsForumGroupItem.h +++ b/retroshare-gui/src/gui/feeds/GxsForumGroupItem.h @@ -46,6 +46,7 @@ public: protected: /* FeedItem */ virtual void doExpand(bool open); + void toggle() override; /* GxsGroupFeedItem */ virtual QString groupName(); @@ -53,9 +54,6 @@ protected: virtual RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_FORUM; } private slots: - /* default stuff */ - void toggle(); - void subscribeForum(); private: diff --git a/retroshare-gui/src/gui/feeds/GxsForumMsgItem.h b/retroshare-gui/src/gui/feeds/GxsForumMsgItem.h index be275aa07..d3d81de1d 100644 --- a/retroshare-gui/src/gui/feeds/GxsForumMsgItem.h +++ b/retroshare-gui/src/gui/feeds/GxsForumMsgItem.h @@ -67,7 +67,7 @@ protected: private slots: /* default stuff */ - void toggle(); + void toggle() override; void readAndClearItem(); void unsubscribeForum(); diff --git a/retroshare-gui/src/gui/feeds/MsgItem.cpp b/retroshare-gui/src/gui/feeds/MsgItem.cpp index c0dd8768e..181774a00 100644 --- a/retroshare-gui/src/gui/feeds/MsgItem.cpp +++ b/retroshare-gui/src/gui/feeds/MsgItem.cpp @@ -43,7 +43,7 @@ /** Constructor */ MsgItem::MsgItem(FeedHolder *parent, uint32_t feedId, const std::string &msgId, bool isHome) : - FeedItem(NULL), mParent(parent), mFeedId(feedId), mMsgId(msgId), mIsHome(isHome) + FeedItem(parent,feedId,NULL), mMsgId(msgId), mIsHome(isHome) { /* Invoke the Qt Designer generated object setup routine */ setupUi(this); @@ -222,15 +222,10 @@ void MsgItem::updateItem() } } -void MsgItem::toggle() -{ - expand(expandFrame->isHidden()); -} - void MsgItem::doExpand(bool open) { - if (mParent) { - mParent->lockLayout(this, true); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, true); } if (open) @@ -252,8 +247,8 @@ void MsgItem::doExpand(bool open) emit sizeChanged(this); - if (mParent) { - mParent->lockLayout(this, false); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, false); } } @@ -266,23 +261,6 @@ void MsgItem::expandFill(bool first) } } -void MsgItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "MsgItem::removeItem()"; - std::cerr << std::endl; -#endif - - mParent->lockLayout(this, true); - hide(); - mParent->lockLayout(this, false); - - if (mParent) - { - mParent->deleteFeedItem(this, mFeedId); - } -} - void MsgItem::gotoHome() { @@ -315,7 +293,7 @@ void MsgItem::replyMsg() std::cerr << "MsgItem::replyMsg()"; std::cerr << std::endl; #endif - if (mParent) + if (mFeedHolder) { //mParent->openMsg(FEEDHOLDER_MSG_MESSAGE, mPeerId, mMsgId); @@ -339,6 +317,11 @@ void MsgItem::playMedia() #endif } +void MsgItem::toggle() +{ + expand(expandFrame->isHidden()); +} + void MsgItem::checkMessageReadStatus() { if (!mCloseOnRead) { diff --git a/retroshare-gui/src/gui/feeds/MsgItem.h b/retroshare-gui/src/gui/feeds/MsgItem.h index 469f8cbb7..32824ca23 100644 --- a/retroshare-gui/src/gui/feeds/MsgItem.h +++ b/retroshare-gui/src/gui/feeds/MsgItem.h @@ -50,7 +50,6 @@ private: private slots: /* default stuff */ void gotoHome(); - void removeItem(); void toggle(); void playMedia(); @@ -62,9 +61,6 @@ private slots: void updateItem(); private: - FeedHolder *mParent; - uint32_t mFeedId; - std::string mMsgId; QString mMsg; diff --git a/retroshare-gui/src/gui/feeds/PeerItem.cpp b/retroshare-gui/src/gui/feeds/PeerItem.cpp index 87d510e4b..2a6f0b19d 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.cpp +++ b/retroshare-gui/src/gui/feeds/PeerItem.cpp @@ -41,7 +41,7 @@ /** Constructor */ PeerItem::PeerItem(FeedHolder *parent, uint32_t feedId, const RsPeerId &peerId, uint32_t type, bool isHome) : - FeedItem(NULL), mParent(parent), mFeedId(feedId), + FeedItem(parent,feedId,NULL), mPeerId(peerId), mType(type), mIsHome(isHome) { /* Invoke the Qt Designer generated object setup routine */ @@ -50,12 +50,12 @@ PeerItem::PeerItem(FeedHolder *parent, uint32_t feedId, const RsPeerId &peerId, sendmsgButton->setEnabled(false); /* general ones */ - connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) ); - connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) ); + connect( expandButton, SIGNAL( clicked() ), this, SLOT( toggle() ) ); + connect( clearButton, SIGNAL( clicked() ), this, SLOT( removeItem() ) ); /* specific ones */ - connect( chatButton, SIGNAL( clicked( void ) ), this, SLOT( openChat ( void ) ) ); - connect( sendmsgButton, SIGNAL( clicked( ) ), this, SLOT( sendMsg() ) ); + connect( chatButton, SIGNAL( clicked() ), this, SLOT( openChat() ) ); + connect( sendmsgButton, SIGNAL( clicked() ), this, SLOT( sendMsg() ) ); connect(NotifyQt::getInstance(), SIGNAL(friendsChanged()), this, SLOT(updateItem())); @@ -225,7 +225,7 @@ void PeerItem::updateItem() /* slow Tick */ int msec_rate = 10129; - QTimer::singleShot( msec_rate, this, SLOT(updateItem( void ) )); + QTimer::singleShot( msec_rate, this, SLOT(updateItem() )); return; } @@ -236,8 +236,8 @@ void PeerItem::toggle() void PeerItem::doExpand(bool open) { - if (mParent) { - mParent->lockLayout(this, true); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, true); } if (open) @@ -255,25 +255,8 @@ void PeerItem::doExpand(bool open) emit sizeChanged(this); - if (mParent) { - mParent->lockLayout(this, false); - } -} - -void PeerItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "PeerItem::removeItem()"; - std::cerr << std::endl; -#endif - - mParent->lockLayout(this, true); - hide(); - mParent->lockLayout(this, false); - - if (mParent) - { - mParent->deleteFeedItem(this, mFeedId); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, false); } } @@ -321,9 +304,9 @@ void PeerItem::openChat() std::cerr << "PeerItem::openChat()"; std::cerr << std::endl; #endif - if (mParent) + if (mFeedHolder) { - mParent->openChat(mPeerId); + mFeedHolder->openChat(mPeerId); } } diff --git a/retroshare-gui/src/gui/feeds/PeerItem.h b/retroshare-gui/src/gui/feeds/PeerItem.h index 6e17fbae3..22b9bbaf0 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.h +++ b/retroshare-gui/src/gui/feeds/PeerItem.h @@ -51,8 +51,7 @@ protected: private slots: /* default stuff */ - void removeItem(); - void toggle(); + void toggle() override; void addFriend(); void removeFriend(); @@ -63,8 +62,6 @@ private slots: private: - FeedHolder *mParent; - uint32_t mFeedId; RsPeerId mPeerId; uint32_t mType; diff --git a/retroshare-gui/src/gui/feeds/PostedGroupItem.h b/retroshare-gui/src/gui/feeds/PostedGroupItem.h index 999abf652..88e1906dc 100644 --- a/retroshare-gui/src/gui/feeds/PostedGroupItem.h +++ b/retroshare-gui/src/gui/feeds/PostedGroupItem.h @@ -54,9 +54,7 @@ protected: virtual RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_UNKNOWN; } private slots: - /* default stuff */ - void toggle(); - + void toggle() override; void subscribePosted(); private: diff --git a/retroshare-gui/src/gui/feeds/SecurityIpItem.cpp b/retroshare-gui/src/gui/feeds/SecurityIpItem.cpp index 40914fc7e..590bd0588 100644 --- a/retroshare-gui/src/gui/feeds/SecurityIpItem.cpp +++ b/retroshare-gui/src/gui/feeds/SecurityIpItem.cpp @@ -40,14 +40,14 @@ /** Constructor */ SecurityIpItem::SecurityIpItem(FeedHolder *parent, const RsPeerId &sslId, const std::string &ipAddr, uint32_t result, uint32_t type, bool isTest) : - FeedItem(NULL), mParent(parent), mType(type), mSslId(sslId), mIpAddr(ipAddr), mResult(result), mIsTest(isTest), + FeedItem(parent,0,NULL), mType(type), mSslId(sslId), mIpAddr(ipAddr), mResult(result), mIsTest(isTest), ui(new(Ui::SecurityIpItem)) { setup(); } SecurityIpItem::SecurityIpItem(FeedHolder *parent, const RsPeerId &sslId, const std::string& ipAddr, const std::string& ipAddrReported, uint32_t type, bool isTest) : - FeedItem(NULL), mParent(parent), mType(type), mSslId(sslId), mIpAddr(ipAddr), mIpAddrReported(ipAddrReported), mResult(0), mIsTest(isTest), + FeedItem(parent,0,NULL), mType(type), mSslId(sslId), mIpAddr(ipAddr), mIpAddrReported(ipAddrReported), mResult(0), mIsTest(isTest), ui(new(Ui::SecurityIpItem)) { setup(); @@ -192,8 +192,8 @@ void SecurityIpItem::toggle() void SecurityIpItem::doExpand(bool open) { - if (mParent) { - mParent->lockLayout(this, true); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, true); } if (open) @@ -211,25 +211,8 @@ void SecurityIpItem::doExpand(bool open) emit sizeChanged(this); - if (mParent) { - mParent->lockLayout(this, false); - } -} - -void SecurityIpItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "SecurityIpItem::removeItem()"; - std::cerr << std::endl; -#endif - - mParent->lockLayout(this, true); - hide(); - mParent->lockLayout(this, false); - - if (mParent) - { - mParent->deleteFeedItem(this, mFeedId); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, false); } } diff --git a/retroshare-gui/src/gui/feeds/SecurityIpItem.h b/retroshare-gui/src/gui/feeds/SecurityIpItem.h index d4648ab0a..bfef10634 100644 --- a/retroshare-gui/src/gui/feeds/SecurityIpItem.h +++ b/retroshare-gui/src/gui/feeds/SecurityIpItem.h @@ -54,16 +54,12 @@ private: private slots: /* default stuff */ - void removeItem(); - void toggle(); + void toggle() override; void peerDetails(); void updateItem(); void banIpListChanged(const QString &ipAddress); private: - FeedHolder *mParent; - uint32_t mFeedId; - uint32_t mType; RsPeerId mSslId; std::string mIpAddr; diff --git a/retroshare-gui/src/gui/feeds/SecurityItem.cpp b/retroshare-gui/src/gui/feeds/SecurityItem.cpp index b5aa9d8a4..aedfd4e6c 100644 --- a/retroshare-gui/src/gui/feeds/SecurityItem.cpp +++ b/retroshare-gui/src/gui/feeds/SecurityItem.cpp @@ -44,7 +44,7 @@ /** Constructor */ SecurityItem::SecurityItem(FeedHolder *parent, uint32_t feedId, const RsPgpId &gpgId, const RsPeerId &sslId, const std::string &sslCn, const std::string& ip_address,uint32_t type, bool isHome) : - FeedItem(NULL), mParent(parent), mFeedId(feedId), + FeedItem(parent,feedId,NULL), mGpgId(gpgId), mSslId(sslId), mSslCn(sslCn), mIP(ip_address), mType(type), mIsHome(isHome) { /* Invoke the Qt Designer generated object setup routine */ @@ -288,8 +288,8 @@ void SecurityItem::toggle() void SecurityItem::doExpand(bool open) { - if (mParent) { - mParent->lockLayout(this, true); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, true); } if (open) @@ -307,25 +307,8 @@ void SecurityItem::doExpand(bool open) emit sizeChanged(this); - if (mParent) { - mParent->lockLayout(this, false); - } -} - -void SecurityItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "SecurityItem::removeItem()"; - std::cerr << std::endl; -#endif - - mParent->lockLayout(this, true); - hide(); - mParent->lockLayout(this, false); - - if (mParent) - { - mParent->deleteFeedItem(this, mFeedId); + if (mFeedHolder) { + mFeedHolder->lockLayout(this, false); } } @@ -413,8 +396,8 @@ void SecurityItem::openChat() std::cerr << "SecurityItem::openChat()"; std::cerr << std::endl; #endif - if (mParent) + if (mFeedHolder) { - mParent->openChat(mSslId); + mFeedHolder->openChat(mSslId); } } diff --git a/retroshare-gui/src/gui/feeds/SecurityItem.h b/retroshare-gui/src/gui/feeds/SecurityItem.h index 1c9bbe054..7f99c8377 100644 --- a/retroshare-gui/src/gui/feeds/SecurityItem.h +++ b/retroshare-gui/src/gui/feeds/SecurityItem.h @@ -50,8 +50,7 @@ protected: private slots: /* default stuff */ - void removeItem(); - void toggle(); + void toggle() override; void friendRequest(); void removeFriend(); @@ -62,9 +61,6 @@ private slots: void updateItem(); private: - FeedHolder *mParent; - uint32_t mFeedId; - RsPgpId mGpgId; RsPeerId mSslId; std::string mSslCn; diff --git a/retroshare-gui/src/gui/gxs/GxsFeedWidget.cpp b/retroshare-gui/src/gui/gxs/GxsFeedWidget.cpp index 9ccaa55fa..e714b5347 100644 --- a/retroshare-gui/src/gui/gxs/GxsFeedWidget.cpp +++ b/retroshare-gui/src/gui/gxs/GxsFeedWidget.cpp @@ -46,8 +46,6 @@ void GxsFeedWidget::feedAdded(FeedItem *feedItem, QTreeWidgetItem *treeItem) void GxsFeedWidget::feedRemoved(FeedItem *feedItem) { - RSFeedWidget::feedRemoved(feedItem); - GxsFeedItem *gxsFeedItem = dynamic_cast(feedItem); if (!gxsFeedItem) { return; diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.cpp b/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.cpp index 59ff10056..1f5b09cb8 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.cpp +++ b/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.cpp @@ -32,7 +32,7 @@ **/ GxsGroupFeedItem::GxsGroupFeedItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsGroupId &groupId, bool isHome, RsGxsIfaceHelper *iface, bool autoUpdate) : - FeedItem(NULL) + FeedItem(feedHolder,feedId,NULL) { #ifdef DEBUG_ITEM std::cerr << "GxsGroupFeedItem::GxsGroupFeedItem()"; @@ -40,8 +40,6 @@ GxsGroupFeedItem::GxsGroupFeedItem(FeedHolder *feedHolder, uint32_t feedId, cons #endif /* this are just generally useful for all children */ - mFeedHolder = feedHolder; - mFeedId = feedId; mIsHome = isHome; /* load data if we can */ @@ -93,27 +91,6 @@ bool GxsGroupFeedItem::initLoadQueue() return (mLoadQueue != NULL); } -void GxsGroupFeedItem::removeItem() -{ -#ifdef DEBUG_ITEM - std::cerr << "GxsGroupFeedItem::removeItem()"; - std::cerr << std::endl; -#endif - - if (mFeedHolder) - { - mFeedHolder->lockLayout(this, true); - } - - hide(); - - if (mFeedHolder) - { - mFeedHolder->lockLayout(this, false); - mFeedHolder->deleteFeedItem(this, mFeedId); - } -} - void GxsGroupFeedItem::unsubscribe() { #ifdef DEBUG_ITEM diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.h b/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.h index ac851a97d..9696490d9 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.h +++ b/retroshare-gui/src/gui/gxs/GxsGroupFeedItem.h @@ -64,12 +64,9 @@ protected: protected slots: void subscribe(); void unsubscribe(); - void removeItem(); void copyGroupLink(); protected: - FeedHolder *mFeedHolder; - uint32_t mFeedId; bool mIsHome; RsGxsIfaceHelper *mGxsIface; TokenQueue *mLoadQueue; diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index d463170af..c40467761 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -233,8 +233,12 @@ QScrollArea *GxsChannelPostsWidget::getScrollArea() return NULL; } -void GxsChannelPostsWidget::deleteFeedItem(QWidget * /*item*/, uint32_t /*type*/) +void GxsChannelPostsWidget::deleteFeedItem(FeedItem *feedItem, uint32_t /*type*/) { + if (!feedItem) + return; + + ui->feedWidget->removeFeedItem(feedItem); } void GxsChannelPostsWidget::openChat(const RsPeerId & /*peerId*/) @@ -460,7 +464,7 @@ void GxsChannelPostsWidget::createPostItem(const RsGxsChannelPost& post, bool re if(!post.mMeta.mOrigMsgId.isNull()) { - FeedItem *feedItem = ui->feedWidget->findGxsFeedItem(post.mMeta.mGroupId, post.mMeta.mOrigMsgId); + FeedItem *feedItem = ui->feedWidget->findFeedItem(GxsChannelPostItem::computeIdentifier(post.mMeta.mOrigMsgId)) ; item = dynamic_cast(feedItem); if(item) @@ -476,7 +480,7 @@ void GxsChannelPostsWidget::createPostItem(const RsGxsChannelPost& post, bool re if (related) { - FeedItem *feedItem = ui->feedWidget->findGxsFeedItem(post.mMeta.mGroupId, post.mMeta.mMsgId); + FeedItem *feedItem = ui->feedWidget->findFeedItem(GxsChannelPostItem::computeIdentifier(post.mMeta.mMsgId)) ; item = dynamic_cast(feedItem); } if (item) { @@ -669,7 +673,7 @@ void GxsChannelPostsWidget::blank() bool GxsChannelPostsWidget::navigatePostItem(const RsGxsMessageId &msgId) { - FeedItem *feedItem = ui->feedWidget->findGxsFeedItem(groupId(), msgId); + FeedItem *feedItem = ui->feedWidget->findFeedItem(GxsChannelPostItem::computeIdentifier(msgId)); if (!feedItem) { return false; } @@ -718,17 +722,17 @@ void GxsChannelPostsWidget::toggleAutoDownload() return; } - RsQThreadUtils::postToObject( [=]() - { - /* Here it goes any code you want to be executed on the Qt Gui - * thread, for example to update the data model with new information - * after a blocking call to RetroShare API complete, note that - * Qt::QueuedConnection is important! - */ - - std::cerr << __PRETTY_FUNCTION__ << " Has been executed on GUI " - << "thread but was scheduled by async thread" << std::endl; - }, this ); +// RsQThreadUtils::postToObject( [=]() +// { +// /* Here it goes any code you want to be executed on the Qt Gui +// * thread, for example to update the data model with new information +// * after a blocking call to RetroShare API complete, note that +// * Qt::QueuedConnection is important! +// */ +// +// std::cerr << __PRETTY_FUNCTION__ << " Has been executed on GUI " +// << "thread but was scheduled by async thread" << std::endl; +// }, this ); }); } diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h index a4723c18f..6f27ed677 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h @@ -58,7 +58,7 @@ public: /* FeedHolder */ virtual QScrollArea *getScrollArea(); - virtual void deleteFeedItem(QWidget *item, uint32_t type); + virtual void deleteFeedItem(FeedItem *feedItem, uint32_t type); virtual void openChat(const RsPeerId& peerId); virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &msg_versions, const RsGxsMessageId &msgId, const QString &title); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui index 59703a0d7..fb6845f26 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui @@ -6,8 +6,8 @@ 0 0 - 880 - 557 + 977 + 628 @@ -369,7 +369,7 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Description</span></p></body></html> @@ -525,7 +525,7 @@ p, li { white-space: pre-wrap; } - + 0 @@ -572,22 +572,22 @@ p, li { white-space: pre-wrap; } QLineEdit
gui/common/LineEditClear.h
- - GxsFeedWidget - QWidget -
gui/gxs/GxsFeedWidget.h
- 1 -
GxsChannelFilesWidget QWidget
gui/gxschannels/GxsChannelFilesWidget.h
1
+ + RSFeedWidget + QWidget +
gui/common/RSFeedWidget.h
+ 1 +
- +