mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-02-02 18:44:53 -05:00
attempt to sort out the mess in item deletion in FeedHolder widgets
This commit is contained in:
parent
a0b6f50b60
commit
c552890459
@ -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;
|
||||
|
||||
|
@ -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 ();
|
||||
}
|
||||
}
|
||||
|
@ -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<RsGxsMessageId> &versions, const RsGxsMessageId &msgId, const QString &title);
|
||||
|
||||
|
@ -60,7 +60,7 @@ private slots:
|
||||
void makeDownVote();
|
||||
void readToggled(bool checked);
|
||||
void readAndClearItem();
|
||||
void toggle();
|
||||
void toggle() override;
|
||||
void copyMessageLink();
|
||||
void toggleNotes();
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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<RsGxsMessageId> &versions, const RsGxsMessageId &msgId, const QString &title);
|
||||
|
||||
|
@ -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,13 +418,12 @@ 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)
|
||||
delete(treeItem);
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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()
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <retroshare/rsgxschannels.h> // 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<RsGxsMessageId> &msg_versions, const RsGxsMessageId &msgId, const QString &title)=0;
|
||||
|
||||
|
@ -20,17 +20,15 @@
|
||||
|
||||
#include <iostream>
|
||||
#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<s.size();++i)
|
||||
mHash = ~(((mHash << 31) ^ (mHash >> 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<s.size();++i)
|
||||
hash = ~(((hash << 31) ^ (hash >> 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);
|
||||
}
|
||||
|
||||
|
@ -23,13 +23,15 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
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;
|
||||
|
@ -53,7 +53,7 @@ protected:
|
||||
|
||||
private slots:
|
||||
/* default stuff */
|
||||
void toggle();
|
||||
void toggle() override;
|
||||
|
||||
void subscribeChannel();
|
||||
|
||||
|
@ -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<RsGxsMessageId>& older_versions);
|
||||
|
||||
@ -90,7 +91,7 @@ protected:
|
||||
|
||||
private slots:
|
||||
/* default stuff */
|
||||
void toggle();
|
||||
void toggle() override;
|
||||
void readAndClearItem();
|
||||
void download();
|
||||
void play();
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -158,7 +158,6 @@ void GxsForumGroupItem::fill()
|
||||
ui->clearButton->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void GxsForumGroupItem::toggle()
|
||||
{
|
||||
expand(ui->expandFrame->isHidden());
|
||||
|
@ -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:
|
||||
|
@ -67,7 +67,7 @@ protected:
|
||||
|
||||
private slots:
|
||||
/* default stuff */
|
||||
void toggle();
|
||||
void toggle() override;
|
||||
void readAndClearItem();
|
||||
|
||||
void unsubscribeForum();
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,11 +50,11 @@ 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( 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -46,8 +46,6 @@ void GxsFeedWidget::feedAdded(FeedItem *feedItem, QTreeWidgetItem *treeItem)
|
||||
|
||||
void GxsFeedWidget::feedRemoved(FeedItem *feedItem)
|
||||
{
|
||||
RSFeedWidget::feedRemoved(feedItem);
|
||||
|
||||
GxsFeedItem *gxsFeedItem = dynamic_cast<GxsFeedItem*>(feedItem);
|
||||
if (!gxsFeedItem) {
|
||||
return;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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<GxsChannelPostItem*>(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<GxsChannelPostItem*>(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 );
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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<RsGxsMessageId> &msg_versions, const RsGxsMessageId &msgId, const QString &title);
|
||||
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>880</width>
|
||||
<height>557</height>
|
||||
<width>977</width>
|
||||
<height>628</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
@ -369,7 +369,7 @@
|
||||
<string notr="true"><!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></string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
@ -525,7 +525,7 @@ p, li { white-space: pre-wrap; }
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="GxsFeedWidget" name="feedWidget" native="true">
|
||||
<widget class="RSFeedWidget" name="feedWidget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
@ -572,22 +572,22 @@ p, li { white-space: pre-wrap; }
|
||||
<extends>QLineEdit</extends>
|
||||
<header location="global">gui/common/LineEditClear.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>GxsFeedWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>gui/gxs/GxsFeedWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>GxsChannelFilesWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>gui/gxschannels/GxsChannelFilesWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>RSFeedWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>gui/common/RSFeedWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../icons.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
Loading…
x
Reference in New Issue
Block a user