← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3371: Add connectivity status for hubs to the favorite hubs window

 

------------------------------------------------------------
revno: 3371
committer: Fredrik Ullner <ullner@xxxxxxxxx>
branch nick: dcplusplus
timestamp: Fri 2013-11-29 18:42:21 +0100
message:
  Add connectivity status for hubs to the favorite hubs window
modified:
  changelog.txt
  dcpp/ClientManager.cpp
  dcpp/ClientManager.h
  win32/FavHubsFrame.cpp
  win32/FavHubsFrame.h


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'changelog.txt'
--- changelog.txt	2013-11-29 17:18:43 +0000
+++ changelog.txt	2013-11-29 17:42:21 +0000
@@ -4,6 +4,7 @@
 * [L#250238] Remove queued files that are already shared when DC++ starts (ullner)
 * [L#309815] Hub icon will change depending on user status (user/registered/operator) (ullner)
 * [L#721513] Transferview: Added "Remove file from queue" menu option and "Force attempt" is now only available for downloads (ullner)
+* [L#210217] Add connectivity status for hubs to the favorite hubs window (ullner)
 
 -- 0.831 2013-11-11 --
 * [L#1249810] Fix NMDC TTH search responses (emtee)

=== modified file 'dcpp/ClientManager.cpp'
--- dcpp/ClientManager.cpp	2013-09-22 13:51:20 +0000
+++ dcpp/ClientManager.cpp	2013-11-29 17:42:21 +0000
@@ -206,6 +206,17 @@
 	return false;
 }
 
+bool ClientManager::isHubConnected(const string& aUrl) const {
+	Lock l(cs);
+
+	for(auto i: clients) {
+		if(i->getHubUrl() == aUrl) {
+			return i->isConnected();
+		}
+	}
+	return false;
+}
+
 string ClientManager::findHub(const string& ipPort) const {
 	Lock l(cs);
 

=== modified file 'dcpp/ClientManager.h'
--- dcpp/ClientManager.h	2013-09-15 16:39:42 +0000
+++ dcpp/ClientManager.h	2013-11-29 17:42:21 +0000
@@ -78,6 +78,7 @@
 	string getOfflineNick(const CID& cid) const;
 
 	bool isConnected(const string& aUrl) const;
+	bool isHubConnected(const string& aUrl) const;
 
 	void search(int aSizeMode, int64_t aSize, int aFileType, const string& aString, const string& aToken);
 	void search(StringList& who, int aSizeMode, int64_t aSize, int aFileType, const string& aString, const string& aToken, const StringList& aExtList);

=== modified file 'win32/FavHubsFrame.cpp'
--- win32/FavHubsFrame.cpp	2013-01-21 18:43:48 +0000
+++ win32/FavHubsFrame.cpp	2013-11-29 17:42:21 +0000
@@ -22,6 +22,8 @@
 #include <set>
 
 #include <dcpp/FavoriteManager.h>
+#include <dcpp/ClientManager.h>
+#include <dcpp/Util.h>
 #include <dcpp/version.h>
 
 #include <dwt/widgets/Grid.h>
@@ -42,6 +44,7 @@
 const string& FavHubsFrame::getId() const { return id; }
 
 static const ColumnInfo hubsColumns[] = {
+	{ N_("Status"), 25, false },
 	{ N_("Name"), 200, false },
 	{ N_("Description"), 290, false },
 	{ N_("Nick"), 125, false },
@@ -56,7 +59,7 @@
 grid(0),
 hubs(0)
 {
-	grid = addChild(Grid::Seed(2, 8));
+	grid = addChild(Grid::Seed(2, 9));
 	grid->column(0).mode = GridInfo::FILL;
 	grid->column(1).mode = GridInfo::FILL;
 	grid->column(2).mode = GridInfo::FILL;
@@ -65,6 +68,7 @@
 	grid->column(5).mode = GridInfo::FILL;
 	grid->column(6).mode = GridInfo::FILL;
 	grid->column(7).mode = GridInfo::FILL;
+	grid->column(8).mode = GridInfo::FILL;
 	grid->row(0).mode = GridInfo::FILL;
 	grid->row(0).align = GridInfo::STRETCH;
 
@@ -72,7 +76,7 @@
 		Table::Seed cs = WinUtil::Seeds::table;
 		cs.style |= LVS_NOSORTHEADER;
 		hubs = grid->addChild(cs);
-		grid->setWidget(hubs, 0, 0, 1, 8);
+		grid->setWidget(hubs, 0, 0, 1, 9);
 		addWidget(hubs);
 
 		WinUtil::makeColumns(hubs, hubsColumns, COLUMN_LAST, SETTING(FAVHUBSFRAME_ORDER), SETTING(FAVHUBSFRAME_WIDTHS));
@@ -152,6 +156,7 @@
 	fillList();
 
 	FavoriteManager::getInstance()->addListener(this);
+	ClientManager::getInstance()->addListener(this);
 }
 
 FavHubsFrame::~FavHubsFrame() {
@@ -168,6 +173,7 @@
 
 bool FavHubsFrame::preClosing() {
 	FavoriteManager::getInstance()->removeListener(this);
+	ClientManager::getInstance()->removeListener(this);
 	return true;
 }
 
@@ -403,7 +409,14 @@
 		} else
 			index = -1;
 
+		auto statusText = Util::emptyStringT;
+		if(ClientManager::getInstance()->isHubConnected(entry->getServer()))
+		{
+			statusText = T_("Connected");
+		}
+
 		TStringList l;
+		l.push_back(statusText);
 		l.push_back(Text::toT(entry->getName()));
 		l.push_back(Text::toT(entry->getHubDescription()));
 		l.push_back(Text::toT(entry->get(HubSettings::Nick)));
@@ -444,3 +457,13 @@
 void FavHubsFrame::on(FavoriteRemoved, const FavoriteHubEntryPtr e) noexcept {
 	hubs->erase(hubs->findData(reinterpret_cast<LPARAM>(e)));
 }
+
+void FavHubsFrame::on(ClientManagerListener::ClientConnected, Client*) noexcept
+{
+	callAsync([=] { refresh(); });
+}
+
+void FavHubsFrame::on(ClientManagerListener::ClientDisconnected, Client*) noexcept
+{
+	callAsync([=] { refresh(); });
+}

=== modified file 'win32/FavHubsFrame.h'
--- win32/FavHubsFrame.h	2013-01-18 21:28:38 +0000
+++ win32/FavHubsFrame.h	2013-11-29 17:42:21 +0000
@@ -20,12 +20,14 @@
 #define DCPLUSPLUS_WIN32_FAV_HUBS_FRAME_H
 
 #include <dcpp/FavoriteManagerListener.h>
+#include <dcpp/ClientManagerListener.h>
 
 #include "StaticFrame.h"
 
 class FavHubsFrame :
 	public StaticFrame<FavHubsFrame>,
-	private FavoriteManagerListener
+	private FavoriteManagerListener,
+	private ClientManagerListener
 {
 	typedef StaticFrame<FavHubsFrame> BaseType;
 public:
@@ -52,7 +54,8 @@
 private:
 	enum {
 		COLUMN_FIRST,
-		COLUMN_NAME = COLUMN_FIRST,
+		COLUMN_STATUS = COLUMN_FIRST,
+		COLUMN_NAME,
 		COLUMN_DESCRIPTION,
 		COLUMN_NICK,
 		COLUMN_PASSWORD,
@@ -97,8 +100,13 @@
 	void select(const FavoriteHubEntryList& entries);
 	void openSelected();
 
+	// FavoriteManagerListener
 	virtual void on(FavoriteAdded, const FavoriteHubEntryPtr e) noexcept;
 	virtual void on(FavoriteRemoved, const FavoriteHubEntryPtr e) noexcept;
+
+	// ClientManagerListener
+	virtual void on(ClientManagerListener::ClientConnected, Client*) noexcept;
+	virtual void on(ClientManagerListener::ClientDisconnected, Client*) noexcept;
 };
 
 #endif // !defined(DCPLUSPLUS_WIN32_FAV_HUBS_FRAME_H)