From 1cf790990fe898d6967fbe45cf40ec949919f052 Mon Sep 17 00:00:00 2001 From: drbob Date: Mon, 11 Jul 2011 01:08:01 +0000 Subject: [PATCH] Added basic PeerItems to NewsFeed for AUTH_DENIED and FAILED_CONNECTION case. * This will need to be fixed up - but the basic logic is there! * Improved DhtWindow display of peers. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-netupgrade@4426 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/NewsFeed.cpp | 67 +++++++++++++++++++++++ retroshare-gui/src/gui/NewsFeed.h | 4 ++ retroshare-gui/src/gui/dht/DhtWindow.cpp | 44 +++++++++------ retroshare-gui/src/gui/dht/DhtWindow.ui | 5 ++ retroshare-gui/src/gui/feeds/PeerItem.cpp | 59 ++++++++++++++++++-- retroshare-gui/src/gui/feeds/PeerItem.h | 8 ++- 6 files changed, 161 insertions(+), 26 deletions(-) diff --git a/retroshare-gui/src/gui/NewsFeed.cpp b/retroshare-gui/src/gui/NewsFeed.cpp index ef8e4e794..8e69c5555 100644 --- a/retroshare-gui/src/gui/NewsFeed.cpp +++ b/retroshare-gui/src/gui/NewsFeed.cpp @@ -101,10 +101,23 @@ void NewsFeed::updateFeed() if (flags & RS_FEED_TYPE_PEER) addFeedItemPeerNew(fi); break; + case RS_FEED_ITEM_PEER_HELLO: if (flags & RS_FEED_TYPE_PEER) addFeedItemPeerHello(fi); break; + case RS_FEED_ITEM_PEER_AUTH_DENIED: + if (flags & RS_FEED_TYPE_PEER) + addFeedItemPeerAuthDenied(fi); + break; + case RS_FEED_ITEM_PEER_UNKNOWN_IN: + if (flags & RS_FEED_TYPE_PEER) + addFeedItemPeerUnknownIn(fi); + break; + case RS_FEED_ITEM_PEER_UNKNOWN_OUT: + if (flags & RS_FEED_TYPE_PEER) + addFeedItemPeerUnknownOut(fi); + break; case RS_FEED_ITEM_CHAN_NEW: if (flags & RS_FEED_TYPE_CHAN) @@ -243,6 +256,60 @@ void NewsFeed::addFeedItemPeerNew(RsFeedItem &fi) } + +void NewsFeed::addFeedItemPeerAuthDenied(RsFeedItem &fi) +{ + /* make new widget */ + PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, fi.mId1, PEER_TYPE_AUTH_DENIED, false); + + /* store */ + + /* add to layout */ + addFeedItem(pi); + +#ifdef NEWS_DEBUG + std::cerr << "NewsFeed::addFeedItemPeerAuthDenied()"; + std::cerr << std::endl; +#endif +} + + + +void NewsFeed::addFeedItemPeerUnknownIn(RsFeedItem &fi) +{ + /* make new widget */ + PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, fi.mId1, PEER_TYPE_UNKNOWN_IN, false); + + /* store */ + + /* add to layout */ + addFeedItem(pi); + +#ifdef NEWS_DEBUG + std::cerr << "NewsFeed::addFeedItemPeerUnknownIn()"; + std::cerr << std::endl; +#endif +} + + + +void NewsFeed::addFeedItemPeerUnknownOut(RsFeedItem &fi) +{ + /* make new widget */ + PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, fi.mId1, PEER_TYPE_UNKNOWN_OUT, false); + + /* store */ + + /* add to layout */ + addFeedItem(pi); + +#ifdef NEWS_DEBUG + std::cerr << "NewsFeed::addFeedItemPeerUnknownOut()"; + std::cerr << std::endl; +#endif +} + + void NewsFeed::addFeedItemChanNew(RsFeedItem &fi) { /* make new widget */ diff --git a/retroshare-gui/src/gui/NewsFeed.h b/retroshare-gui/src/gui/NewsFeed.h index 83cbac0c0..465a7e62b 100644 --- a/retroshare-gui/src/gui/NewsFeed.h +++ b/retroshare-gui/src/gui/NewsFeed.h @@ -63,6 +63,10 @@ private: void addFeedItemPeerDisconnect(RsFeedItem &fi); void addFeedItemPeerNew(RsFeedItem &fi); void addFeedItemPeerHello(RsFeedItem &fi); + void addFeedItemPeerAuthDenied(RsFeedItem &fi); + void addFeedItemPeerUnknownIn(RsFeedItem &fi); + void addFeedItemPeerUnknownOut(RsFeedItem &fi); + void addFeedItemChanNew(RsFeedItem &fi); void addFeedItemChanUpdate(RsFeedItem &fi); void addFeedItemChanMsg(RsFeedItem &fi); diff --git a/retroshare-gui/src/gui/dht/DhtWindow.cpp b/retroshare-gui/src/gui/dht/DhtWindow.cpp index 7da418690..7078f9119 100644 --- a/retroshare-gui/src/gui/dht/DhtWindow.cpp +++ b/retroshare-gui/src/gui/dht/DhtWindow.cpp @@ -32,7 +32,7 @@ #include "gui/RsAutoUpdatePage.h" #include "retroshare/rsdht.h" - +#include "retroshare/rspeers.h" /********************************************** STATIC WINDOW *************************************/ DhtWindow * DhtWindow::mInstance = NULL; @@ -104,6 +104,14 @@ void DhtWindow::changeEvent(QEvent *e) void DhtWindow::update() { + if (!isVisible()) + { +#ifdef DEBUG_DHTWINDOW + //std::cerr << "DhtWindow::update() !Visible" << std::endl; +#endif + return; + } + /* do nothing if locked, or not visible */ if (RsAutoUpdatePage::eventsLocked() == true) { @@ -113,14 +121,6 @@ void DhtWindow::update() return; } - if (!isVisible()) - { -#ifdef DEBUG_DHTWINDOW - //std::cerr << "DhtWindow::update() !Visible" << std::endl; -#endif - return; - } - if (!rsDht) { #ifdef DEBUG_DHTWINDOW @@ -129,11 +129,15 @@ void DhtWindow::update() return; } + RsAutoUpdatePage::lockAllEvents(); + //std::cerr << "DhtWindow::update()" << std::endl; updateNetStatus(); updateNetPeers(); updateDhtPeers(); updateRelays(); + + RsAutoUpdatePage::unlockAllEvents() ; } @@ -312,17 +316,18 @@ void DhtWindow::updateNetPeers() int nRelayPeers = 0; -#define PTW_COL_PEERID 0 -#define PTW_COL_DHT_STATUS 1 +#define PTW_COL_RSNAME 0 +#define PTW_COL_PEERID 1 +#define PTW_COL_DHT_STATUS 2 -#define PTW_COL_PEER_CONNECTLOGIC 2 +#define PTW_COL_PEER_CONNECTLOGIC 3 -#define PTW_COL_PEER_CONNECT_STATUS 3 -#define PTW_COL_PEER_CONNECT_MODE 4 -#define PTW_COL_PEER_REQ_STATUS 5 +#define PTW_COL_PEER_CONNECT_STATUS 4 +#define PTW_COL_PEER_CONNECT_MODE 5 +#define PTW_COL_PEER_REQ_STATUS 6 -#define PTW_COL_PEER_CB_MSG 6 -#define PTW_COL_RSID 7 +#define PTW_COL_PEER_CB_MSG 7 +#define PTW_COL_RSID 8 #if 0 /* clear old entries */ @@ -375,7 +380,10 @@ void DhtWindow::updateNetPeers() RsDhtNetPeer status; rsDht->getNetPeerStatus(*it, status); + std::string name = rsPeers->getPeerName(*it); + peer_item -> setData(PTW_COL_PEERID, Qt::DisplayRole, QString::fromStdString(status.mDhtId)); + peer_item -> setData(PTW_COL_RSNAME, Qt::DisplayRole, QString::fromStdString(name)); peer_item -> setData(PTW_COL_RSID, Qt::DisplayRole, QString::fromStdString(status.mRsId)); std::ostringstream dhtstate; @@ -383,7 +391,7 @@ void DhtWindow::updateNetPeers() { default: case RSDHT_PEERDHT_NOT_ACTIVE: - dhtstate << "Unknown"; + dhtstate << "Not Active (Maybe Connected!)"; break; case RSDHT_PEERDHT_SEARCHING: dhtstate << "Searching"; diff --git a/retroshare-gui/src/gui/dht/DhtWindow.ui b/retroshare-gui/src/gui/dht/DhtWindow.ui index 37a966d15..8d88d56d4 100644 --- a/retroshare-gui/src/gui/dht/DhtWindow.ui +++ b/retroshare-gui/src/gui/dht/DhtWindow.ui @@ -133,6 +133,11 @@ + + + Name + + PeerId diff --git a/retroshare-gui/src/gui/feeds/PeerItem.cpp b/retroshare-gui/src/gui/feeds/PeerItem.cpp index eef83010c..ae727e5c3 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.cpp +++ b/retroshare-gui/src/gui/feeds/PeerItem.cpp @@ -102,11 +102,20 @@ void PeerItem::updateItemStatic() case PEER_TYPE_CONNECT: title = tr("Friend Connected"); break; + case PEER_TYPE_NEW_FOF: + title = tr("Friend of Friend"); + break; case PEER_TYPE_HELLO: title = tr("Connect Attempt"); break; - case PEER_TYPE_NEW_FOF: - title = tr("Friend of Friend"); + case PEER_TYPE_AUTH_DENIED: + title = tr("Not Yet Friends"); + break; + case PEER_TYPE_UNKNOWN_IN: + title = tr("Unknown (Incoming) Connect Attempt"); + break; + case PEER_TYPE_UNKNOWN_OUT: + title = tr("Unknown (Outgoing) Connect Attempt"); break; default: title = tr("Peer"); @@ -134,15 +143,53 @@ void PeerItem::updateItemStatic() } else { + /* it is very likely that we will end up here for some of the + * Unknown peer cases.... so allow them here + */ + + QString title; + + switch(mType) + { + case PEER_TYPE_STD: + title = tr("Friend"); + break; + case PEER_TYPE_CONNECT: + title = tr("Friend Connected"); + break; + case PEER_TYPE_NEW_FOF: + title = tr("Friend of Friend"); + break; + case PEER_TYPE_HELLO: + title = tr("Connect Attempt"); + break; + case PEER_TYPE_AUTH_DENIED: + title = tr("Not Yet Friends"); + break; + case PEER_TYPE_UNKNOWN_IN: + title = tr("Unknown (Incoming) Connect Attempt"); + break; + case PEER_TYPE_UNKNOWN_OUT: + title = tr("Unknown (Outgoing) Connect Attempt"); + break; + default: + title = tr("Peer"); + break; + } + + titleLabel->setText(title); + + QDateTime date = QDateTime::fromTime_t(time(NULL)); + QString stime = date.toString(Qt::LocalDate); + lastLabel-> setText(stime); + nameLabel->setText(QString::fromStdString(mPeerId)); + idLabel->setText(QString::fromStdString(mPeerId)); + statusLabel->setText(tr("Unknown Peer")); - titleLabel->setText(tr("Unknown Peer")); trustLabel->setText(tr("Unknown Peer")); - nameLabel->setText(tr("Unknown Peer")); - idLabel->setText(tr("Unknown Peer")); locLabel->setText(tr("Unknown Peer")); ipLabel->setText(tr("Unknown Peer")); connLabel->setText(tr("Unknown Peer")); - lastLabel->setText(tr("Unknown Peer")); chatButton->setEnabled(false); diff --git a/retroshare-gui/src/gui/feeds/PeerItem.h b/retroshare-gui/src/gui/feeds/PeerItem.h index 551659fec..88340e4d4 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.h +++ b/retroshare-gui/src/gui/feeds/PeerItem.h @@ -27,8 +27,12 @@ const uint32_t PEER_TYPE_STD = 0x0001; const uint32_t PEER_TYPE_CONNECT = 0x0002; -const uint32_t PEER_TYPE_HELLO = 0x0003; /* failed Connect Attempt */ -const uint32_t PEER_TYPE_NEW_FOF = 0x0004; /* new Friend of Friend */ +const uint32_t PEER_TYPE_NEW_FOF = 0x0003; /* new Friend of Friend */ + +const uint32_t PEER_TYPE_HELLO = 0x0004; /* failed Connect Attempt */ +const uint32_t PEER_TYPE_AUTH_DENIED = 0x0005; /* failed outgoing attempt */ +const uint32_t PEER_TYPE_UNKNOWN_IN = 0x0006; /* failed incoming with unknown peer */ +const uint32_t PEER_TYPE_UNKNOWN_OUT = 0x0007; /* failed outgoing with unknown peer */ class FeedHolder;