← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2316: add more menu titles

 

------------------------------------------------------------
revno: 2316
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Wed 2010-12-01 18:58:05 +0100
message:
  add more menu titles
modified:
  win32/DirectoryListingFrame.cpp
  win32/DirectoryListingFrame.h
  win32/FinishedFrameBase.h
  win32/PublicHubsFrame.cpp
  win32/PublicHubsFrame.h
  win32/QueueFrame.cpp
  win32/SystemFrame.cpp
  win32/TransferView.cpp
  win32/TransferView.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 'win32/DirectoryListingFrame.cpp'
--- win32/DirectoryListingFrame.cpp	2010-11-21 15:59:18 +0000
+++ win32/DirectoryListingFrame.cpp	2010-12-01 17:58:05 +0000
@@ -386,6 +386,8 @@
 ShellMenuPtr DirectoryListingFrame::makeSingleMenu(ItemInfo* ii) {
 	ShellMenuPtr menu = addChild(ShellMenu::Seed());
 
+	menu->setTitle(escapeMenu(ii->getText(COLUMN_FILENAME)), WinUtil::fileImages->getIcon(ii->getImage()));
+
 	menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), dwt::IconPtr(), true, true);
 	addTargets(menu, ii);
 
@@ -410,6 +412,9 @@
 ShellMenuPtr DirectoryListingFrame::makeMultiMenu() {
 	ShellMenuPtr menu = addChild(ShellMenu::Seed());
 
+	size_t sel = files->countSelected();
+	menu->setTitle(str(TF_("%1% items") % sel), getParent()->getIcon(this));
+
 	menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), dwt::IconPtr(), true, true);
 	addTargets(menu);
 	addUserCommands(menu);
@@ -417,9 +422,12 @@
 	return menu;
 }
 
-ShellMenuPtr DirectoryListingFrame::makeDirMenu() {
+ShellMenuPtr DirectoryListingFrame::makeDirMenu(ItemInfo* ii) {
 	ShellMenuPtr menu = addChild(ShellMenu::Seed());
 
+	menu->setTitle(escapeMenu(ii ? ii->getText(COLUMN_FILENAME) : getText()),
+		ii ? WinUtil::fileImages->getIcon(ii->getImage()) : getParent()->getIcon(this));
+
 	menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), dwt::IconPtr(), true, true);
 	addTargets(menu);
 	return menu;
@@ -429,14 +437,14 @@
 	prepareMenu(parent, UserCommand::CONTEXT_FILELIST, ClientManager::getInstance()->getHubs(dl->getUser().user->getCID(), dl->getUser().hint));
 }
 
-void DirectoryListingFrame::addShellPaths(const ShellMenuPtr& menu, vector<ItemInfo*> sel) {
+void DirectoryListingFrame::addShellPaths(const ShellMenuPtr& menu, const vector<ItemInfo*>& sel) {
 	StringList ShellMenuPaths;
-	for(vector<ItemInfo*>::const_iterator i = sel.begin(), iend = sel.end(); i != iend; ++i) {
+	for(auto i = sel.cbegin(), iend = sel.cend(); i != iend; ++i) {
 		ItemInfo* ii = *i;
 		StringList paths;
 		switch(ii->type) {
-				case ItemInfo::FILE: paths = dl->getLocalPaths(ii->file); break;
-				case ItemInfo::DIRECTORY: paths = dl->getLocalPaths(ii->dir); break;
+			case ItemInfo::FILE: paths = dl->getLocalPaths(ii->file); break;
+			case ItemInfo::DIRECTORY: paths = dl->getLocalPaths(ii->dir); break;
 		}
 		if(!paths.empty())
 			ShellMenuPaths.insert(ShellMenuPaths.end(), paths.begin(), paths.end());
@@ -500,7 +508,7 @@
 
 		if(dl->getUser() == ClientManager::getInstance()->getMe()) {
 			vector<ItemInfo*> sel;
-			for(std::vector<unsigned>::const_iterator i = selected.begin(), iend = selected.end(); i != iend; ++i)
+			for(auto i = selected.cbegin(), iend = selected.cend(); i != iend; ++i)
 				sel.push_back(files->getData(*i));
 			addShellPaths(menu, sel);
 		}
@@ -522,12 +530,11 @@
 	}
 
 	if(dirs->getSelected()) {
-		ShellMenuPtr menu = makeDirMenu();
+		ItemInfo* ii = dirs->getSelectedData();
+		ShellMenuPtr menu = makeDirMenu(ii);
 
-		if(dl->getUser() == ClientManager::getInstance()->getMe()) {
-			ItemInfo* ii = dirs->getSelectedData();
-			if(ii)
-				addShellPaths(menu, vector<ItemInfo*>(1, ii));
+		if(ii && dl->getUser() == ClientManager::getInstance()->getMe()) {
+			addShellPaths(menu, vector<ItemInfo*>(1, ii));
 		}
 
 		addUserMenu(menu);

=== modified file 'win32/DirectoryListingFrame.h'
--- win32/DirectoryListingFrame.h	2010-11-21 15:59:18 +0000
+++ win32/DirectoryListingFrame.h	2010-12-01 17:58:05 +0000
@@ -200,13 +200,13 @@
 
 	ShellMenuPtr makeSingleMenu(ItemInfo* ii);
 	ShellMenuPtr makeMultiMenu();
-	ShellMenuPtr makeDirMenu();
+	ShellMenuPtr makeDirMenu(ItemInfo* ii);
 
 	void runUserCommand(const UserCommand& uc);
 
 	void addTargets(const MenuPtr& menu, ItemInfo* ii = 0);
 	void addUserCommands(const MenuPtr& menu);
-	void addShellPaths(const ShellMenuPtr& menu, vector<ItemInfo*> sel);
+	void addShellPaths(const ShellMenuPtr& menu, const vector<ItemInfo*>& sel);
 	void addUserMenu(const MenuPtr& menu);
 
 	void handleFind();

=== modified file 'win32/FinishedFrameBase.h'
--- win32/FinishedFrameBase.h	2010-08-06 21:02:04 +0000
+++ win32/FinishedFrameBase.h	2010-12-01 17:58:05 +0000
@@ -419,15 +419,18 @@
 	};
 
 	bool handleFilesContextMenu(dwt::ScreenCoordinate pt) {
-		if(files->hasSelected()) {
+		size_t sel = files->countSelected();
+		if(sel) {
 			if(pt.x() == -1 && pt.y() == -1) {
 				pt = files->getContextMenuPos();
 			}
 
 			FileChecker checker = files->forEachSelectedT(FileChecker());
+			auto selData = (sel == 1) ? files->getSelectedData() : 0;
 
 			ShellMenuPtr menu = filesWindow->addChild(ShellMenu::Seed());
-
+			menu->setTitle(selData ? escapeMenu(selData->getText(FILES_COLUMN_FILE)) : str(TF_("%1% files") % sel),
+				selData ? WinUtil::fileImages->getIcon(selData->getImage()) : tabs->getIcon(filesWindow));
 			menu->appendItem(T_("&View as text"), std::bind(&ThisType::handleViewAsText, this), dwt::IconPtr(), checker.allFilesExist && !checker.isBz2);
 			menu->appendItem(T_("&Open"), std::bind(&ThisType::handleOpenFile, this), dwt::IconPtr(), checker.allFilesExist, true);
 			menu->appendItem(T_("Open &folder"), std::bind(&ThisType::handleOpenFolder, this));
@@ -445,12 +448,17 @@
 	}
 
 	bool handleUsersContextMenu(dwt::ScreenCoordinate pt) {
-		if(users->hasSelected()) {
+		size_t sel = users->countSelected();
+		if(sel) {
 			if(pt.x() == -1 && pt.y() == -1) {
 				pt = users->getContextMenuPos();
 			}
 
+			auto selData = (sel == 1) ? users->getSelectedData() : 0;
+
 			dwt::MenuPtr menu = usersWindow->addChild(WinUtil::Seeds::menu);
+			menu->setTitle(selData ? escapeMenu(selData->getText(USERS_COLUMN_NICK)) : str(TF_("%1% users") % sel),
+				selData ? WinUtil::userImages->getIcon(selData->getImage()) : tabs->getIcon(usersWindow));
 			menu->appendItem(T_("&Remove"), std::bind(&ThisType::handleRemoveUsers, this));
 			menu->appendItem(T_("Remove &all"), std::bind(&ThisType::handleRemoveAll, this));
 			menu->appendSeparator();

=== modified file 'win32/PublicHubsFrame.cpp'
--- win32/PublicHubsFrame.cpp	2010-11-25 18:35:55 +0000
+++ win32/PublicHubsFrame.cpp	2010-12-01 17:58:05 +0000
@@ -428,6 +428,7 @@
 		}
 
 		MenuPtr menu = addChild(WinUtil::Seeds::menu);
+		menu->setTitle(escapeMenu(hubs->getSelectedData()->getText(COLUMN_NAME)), getParent()->getIcon(this));
 		menu->appendItem(T_("&Connect"), std::bind(&PublicHubsFrame::handleConnect, this), dwt::IconPtr(), true, true);
 		menu->appendItem(T_("Add To &Favorites"), std::bind(&PublicHubsFrame::handleAdd, this), WinUtil::menuIcon(IDI_FAVORITE_HUBS));
 		menu->appendItem(T_("Copy &address to clipboard"), std::bind(&PublicHubsFrame::handleCopyHub, this));

=== modified file 'win32/PublicHubsFrame.h'
--- win32/PublicHubsFrame.h	2010-09-30 17:34:28 +0000
+++ win32/PublicHubsFrame.h	2010-12-01 17:58:05 +0000
@@ -84,7 +84,10 @@
 		static int compareItems(const HubInfo* a, const HubInfo* b, int col);
 		const tstring& getText(int column) const { return columns[column]; }
 		int getImage() const { return 0; }
+
 		const HubEntry* entry;
+
+	private:
 		tstring columns[COLUMN_LAST];
 	};
 

=== modified file 'win32/QueueFrame.cpp'
--- win32/QueueFrame.cpp	2010-11-30 18:21:53 +0000
+++ win32/QueueFrame.cpp	2010-12-01 17:58:05 +0000
@@ -849,6 +849,8 @@
 MenuPtr QueueFrame::makeSingleMenu(QueueItemInfo* qii) {
 	MenuPtr menu = addChild(WinUtil::Seeds::menu);
 
+	menu->setTitle(escapeMenu(qii->getText(COLUMN_TARGET)), WinUtil::fileImages->getIcon(qii->getImage()));
+
 	WinUtil::addHashItems(menu, qii->getTTH(), Text::toT(Util::getFileName(qii->getTarget())), qii->getSize());
 	menu->appendItem(T_("&Move/Rename"), std::bind(&QueueFrame::handleMove, this));
 	menu->appendItem(T_("Re&check integrity"), std::bind(&QueueFrame::handleRecheck, this));
@@ -865,6 +867,10 @@
 
 MenuPtr QueueFrame::makeMultiMenu() {
 	MenuPtr menu = addChild(WinUtil::Seeds::menu);
+
+	size_t sel = files->countSelected();
+	menu->setTitle(str(TF_("%1% files") % sel), getParent()->getIcon(this));
+
 	menu->appendItem(T_("&Move/Rename"), std::bind(&QueueFrame::handleMove, this));
 	menu->appendItem(T_("Re&check integrity"), std::bind(&QueueFrame::handleRecheck, this));
 	addPriorityMenu(menu);
@@ -876,6 +882,10 @@
 MenuPtr QueueFrame::makeDirMenu() {
 	MenuPtr menu = addChild(WinUtil::Seeds::menu);
 
+	auto selData = dirs->getSelectedData();
+	menu->setTitle(escapeMenu(selData ? selData->getText() : getText()),
+		selData ? WinUtil::fileImages->getIcon(selData->getImage()) : getParent()->getIcon(this));
+
 	addPriorityMenu(menu);
 	menu->appendItem(T_("&Move/Rename"), std::bind(&QueueFrame::handleMove, this));
 	menu->appendSeparator();
@@ -946,7 +956,8 @@
 }
 
 bool QueueFrame::handleFilesContextMenu(dwt::ScreenCoordinate pt) {
-	if(files->countSelected() > 0) {
+	size_t sel = files->countSelected();
+	if(sel) {
 		if(pt.x() == -1 || pt.y() == -1) {
 			pt = files->getContextMenuPos();
 		}
@@ -960,8 +971,8 @@
 		} else {
 			contextMenu = makeMultiMenu();
 		}
+
 		contextMenu->open(pt);
-
 		return true;
 	}
 	return false;
@@ -977,8 +988,8 @@
 	if(dirs->hasSelected()) {
 		usingDirMenu = true;
 		MenuPtr contextMenu = makeDirMenu();
+
 		contextMenu->open(pt);
-
 		return true;
 	}
 

=== modified file 'win32/SystemFrame.cpp'
--- win32/SystemFrame.cpp	2010-07-10 14:36:48 +0000
+++ win32/SystemFrame.cpp	2010-12-01 17:58:05 +0000
@@ -97,6 +97,7 @@
 	string path_a = Text::fromT(path);
 	if(File::getSize(path_a) != -1) {
 		ShellMenuPtr menu = addChild(ShellMenu::Seed());
+		menu->setTitle(escapeMenu(path), WinUtil::fileImages->getIcon(WinUtil::getIconIndex(path)));
 		menu->appendItem(T_("&Open"), std::bind(&WinUtil::openFile, path), dwt::IconPtr(), true, true);
 		menu->appendItem(T_("Open &folder"), std::bind(&WinUtil::openFolder, path));
 		menu->appendShellMenu(StringList(1, path_a));

=== modified file 'win32/TransferView.cpp'
--- win32/TransferView.cpp	2010-10-20 20:49:31 +0000
+++ win32/TransferView.cpp	2010-12-01 17:58:05 +0000
@@ -183,47 +183,62 @@
 	return 0;
 }
 
-MenuPtr TransferView::makeContextMenu(ConnectionInfo* ii) {
-	MenuPtr menu = addChild(WinUtil::Seeds::menu);
-
-	appendUserItems(mdi, menu, false);
-	menu->appendSeparator();
-
-	menu->appendItem(T_("&Force attempt"), std::bind(&TransferView::handleForce, this));
-	menu->appendItem(T_("Copy &nick to clipboard"), std::bind(&TransferView::handleCopyNick, this));
-	menu->appendSeparator();
-	menu->appendItem(T_("&Disconnect"), std::bind(&TransferView::handleDisconnect, this));
-
-	return menu;
-}
-
 bool TransferView::handleConnectionsMenu(dwt::ScreenCoordinate pt) {
-	if (connections->hasSelected()) {
+	size_t sel = connections->countSelected();
+	if(sel) {
 		if(pt.x() == -1 && pt.y() == -1) {
 			pt = connections->getContextMenuPos();
 		}
 
-		/// @todo Fix multiple selection menu...
-		ConnectionInfo* ii = connections->getSelectedData();
-		MenuPtr contextMenu = makeContextMenu(ii);
-		contextMenu->open(pt);
-
+		auto selData = (sel == 1) ? connections->getSelectedData() : 0;
+
+		MenuPtr menu = addChild(WinUtil::Seeds::menu);
+
+		menu->setTitle(selData ? escapeMenu(selData->getText(CONNECTION_COLUMN_USER)) : str(TF_("%1% users") % sel),
+			selData ? arrows->getIcon(selData->getImage()) : 0);
+
+		appendUserItems(mdi, menu, false);
+		menu->appendSeparator();
+
+		menu->appendItem(T_("&Force attempt"), std::bind(&TransferView::handleForce, this));
+		menu->appendItem(T_("Copy &nick to clipboard"), std::bind(&TransferView::handleCopyNick, this));
+		menu->appendSeparator();
+		menu->appendItem(T_("&Disconnect"), std::bind(&TransferView::handleDisconnect, this));
+
+		menu->open(pt);
 		return true;
 	}
 	return false;
 }
 
 bool TransferView::handleDownloadsMenu(dwt::ScreenCoordinate pt) {
-	if (downloads->countSelected() == 1) {
+	size_t sel = downloads->countSelected();
+	if(sel) {
 		if(pt.x() == -1 && pt.y() == -1) {
 			pt = downloads->getContextMenuPos();
 		}
 
+		auto selData = (sel == 1) ? downloads->getSelectedData() : 0;
+
 		MenuPtr menu = addChild(WinUtil::Seeds::menu);
-		DownloadInfo* di = downloads->getSelectedData();
-		WinUtil::addHashItems(menu, di->tth, di->columns[DOWNLOAD_COLUMN_FILE], di->size);
+
+		menu->setTitle(selData ? escapeMenu(selData->getText(DOWNLOAD_COLUMN_FILE)) : str(TF_("%1% files") % sel),
+			selData ? WinUtil::fileImages->getIcon(selData->getImage()) : 0);
+
+		if(selData) {
+			WinUtil::addHashItems(menu, selData->tth, selData->getText(DOWNLOAD_COLUMN_FILE), selData->size);
+		} else {
+			for(size_t i = 0; i < sel; ++i) {
+				selData = downloads->getData(i);
+				if(selData) {
+					const tstring& file = selData->getText(DOWNLOAD_COLUMN_FILE);
+					WinUtil::addHashItems(menu->appendPopup(file, WinUtil::fileImages->getIcon(selData->getImage())),
+						selData->tth, file, selData->size);
+				}
+			}
+		}
+
 		menu->open(pt);
-
 		return true;
 	}
 	return false;

=== modified file 'win32/TransferView.h'
--- win32/TransferView.h	2010-10-20 20:49:31 +0000
+++ win32/TransferView.h	2010-12-01 17:58:05 +0000
@@ -265,8 +265,6 @@
 	bool handleKeyDown(int c);
 	void handleDblClicked();
 
-	MenuPtr makeContextMenu(ConnectionInfo* ii);
-
 	int find(const string& path);
 
 	void layout();