← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2404: Icon support for sub-items in lists

 

------------------------------------------------------------
revno: 2404
committer: Jacek Sieka <arnetheduck@xxxxxxxxx>
branch nick: dcplusplus
timestamp: Sun 2011-01-30 14:28:11 +0100
message:
  Icon support for sub-items in lists
modified:
  dwt/src/widgets/Table.cpp
  win32/DirectoryListingFrame.cpp
  win32/DirectoryListingFrame.h
  win32/FavHubGroupsDlg.cpp
  win32/FavHubGroupsDlg.h
  win32/FinishedFrameBase.h
  win32/HubFrame.cpp
  win32/HubFrame.h
  win32/PublicHubsFrame.h
  win32/QueueFrame.cpp
  win32/QueueFrame.h
  win32/SearchFrame.cpp
  win32/SearchFrame.h
  win32/TransferView.cpp
  win32/TransferView.h
  win32/TypedTable.h
  win32/UsersFrame.h
  win32/WinUtil.cpp


--
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 'dwt/src/widgets/Table.cpp'
--- dwt/src/widgets/Table.cpp	2011-01-27 23:46:12 +0000
+++ dwt/src/widgets/Table.cpp	2011-01-30 13:28:11 +0000
@@ -52,7 +52,7 @@
 Table::Seed::Seed() :
 	BaseType::Seed(WS_CHILD | WS_TABSTOP | LVS_REPORT),
 	font(new Font(DefaultGuiFont)),
-	lvStyle(0)
+	lvStyle(LVS_EX_DOUBLEBUFFER | LVS_EX_SUBITEMIMAGES)
 {
 }
 
@@ -240,7 +240,7 @@
 	}
 
 	// now insert sub-items (for columns)
-	lvi.mask = LVIF_TEXT;
+	lvi.mask = LVIF_TEXT | LVIF_IMAGE;
 	lvi.iSubItem = 1;
 	for(std::vector<tstring>::const_iterator i = row.begin() + 1, iend = row.end(); i != iend; ++i) {
 		lvi.pszText = const_cast<LPTSTR>(i->c_str());

=== modified file 'win32/DirectoryListingFrame.cpp'
--- win32/DirectoryListingFrame.cpp	2011-01-12 14:38:02 +0000
+++ win32/DirectoryListingFrame.cpp	2011-01-30 13:28:11 +0000
@@ -53,7 +53,11 @@
 
 TStringList DirectoryListingFrame::lastSearches;
 
-int DirectoryListingFrame::ItemInfo::getImage() const {
+int DirectoryListingFrame::ItemInfo::getImage(int col) const {
+	if(col != 0) {
+		return -1;
+	}
+
 	if(type == DIRECTORY || type == USER) {
 		return dir->getComplete() ? WinUtil::DIR_ICON : WinUtil::DIR_ICON_INCOMPLETE;
 	}
@@ -481,7 +485,7 @@
 ShellMenuPtr DirectoryListingFrame::makeSingleMenu(ItemInfo* ii) {
 	ShellMenuPtr menu = addChild(ShellMenu::Seed());
 
-	menu->setTitle(escapeMenu(ii->getText(COLUMN_FILENAME)), WinUtil::fileImages->getIcon(ii->getImage()));
+	menu->setTitle(escapeMenu(ii->getText(COLUMN_FILENAME)), WinUtil::fileImages->getIcon(ii->getImage(0)));
 
 	menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), WinUtil::menuIcon(IDI_DOWNLOAD), true, true);
 	addTargets(menu, ii);
@@ -521,7 +525,7 @@
 	ShellMenuPtr menu = addChild(ShellMenu::Seed());
 
 	menu->setTitle(escapeMenu(ii ? ii->getText(COLUMN_FILENAME) : getText()),
-		ii ? WinUtil::fileImages->getIcon(ii->getImage()) : getParent()->getIcon(this));
+		ii ? WinUtil::fileImages->getIcon(ii->getImage(0)) : getParent()->getIcon(this));
 
 	menu->appendItem(T_("&Download"), std::bind(&DirectoryListingFrame::handleDownload, this), WinUtil::menuIcon(IDI_DOWNLOAD), true, true);
 	addTargets(menu);

=== modified file 'win32/DirectoryListingFrame.h'
--- win32/DirectoryListingFrame.h	2011-01-10 21:49:08 +0000
+++ win32/DirectoryListingFrame.h	2011-01-30 13:28:11 +0000
@@ -132,10 +132,10 @@
 			return columns[COLUMN_FILENAME];
 		}
 
-		int getImage() const;
+		int getImage(int col = 0) const;
 
 		int getSelectedImage() const {
-			return getImage();
+			return getImage(0);
 		}
 
 		const tstring& getText(int col) const {

=== modified file 'win32/FavHubGroupsDlg.cpp'
--- win32/FavHubGroupsDlg.cpp	2011-01-02 17:12:02 +0000
+++ win32/FavHubGroupsDlg.cpp	2011-01-30 13:28:11 +0000
@@ -66,8 +66,8 @@
 	return columns[col];
 }
 
-int FavHubGroupsDlg::GroupInfo::getImage() const {
-	return 0;
+int FavHubGroupsDlg::GroupInfo::getImage(int) const {
+	return -1;
 }
 
 int FavHubGroupsDlg::GroupInfo::compareItems(const GroupInfo* a, const GroupInfo* b, int col) {

=== modified file 'win32/FavHubGroupsDlg.h'
--- win32/FavHubGroupsDlg.h	2011-01-02 17:12:02 +0000
+++ win32/FavHubGroupsDlg.h	2011-01-30 13:28:11 +0000
@@ -45,7 +45,7 @@
 		GroupInfo(const FavHubGroup& group_);
 
 		const tstring& getText(int col) const;
-		int getImage() const;
+		int getImage(int) const;
 
 		static int compareItems(const GroupInfo* a, const GroupInfo* b, int col);
 

=== modified file 'win32/FinishedFrameBase.h'
--- win32/FinishedFrameBase.h	2011-01-29 14:15:43 +0000
+++ win32/FinishedFrameBase.h	2011-01-30 13:28:11 +0000
@@ -257,8 +257,8 @@
 		const tstring& getText(int col) const {
 			return columns[col];
 		}
-		int getImage() const {
-			return WinUtil::getFileIcon(Text::toT(file));
+		int getImage(int col) const {
+			return col == 0 ? WinUtil::getFileIcon(Text::toT(file)) : -1;
 		}
 
 		static int compareItems(FileInfo* a, FileInfo* b, int col) {
@@ -338,7 +338,7 @@
 		const tstring& getText(int col) const {
 			return columns[col];
 		}
-		int getImage() const {
+		int getImage(int) const {
 			return 0;
 		}
 
@@ -437,7 +437,7 @@
 
 			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));
+				selData ? WinUtil::fileImages->getIcon(selData->getImage(0)) : 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));
@@ -465,7 +465,7 @@
 
 			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));
+				selData ? WinUtil::userImages->getIcon(selData->getImage(0)) : 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/HubFrame.cpp'
--- win32/HubFrame.cpp	2011-01-09 22:09:24 +0000
+++ win32/HubFrame.cpp	2011-01-30 13:28:11 +0000
@@ -707,7 +707,11 @@
 	return ChatType::handleMessageKeyDown(c);
 }
 
-int HubFrame::UserInfo::getImage() const {
+int HubFrame::UserInfo::getImage(int col) const {
+	if(col != 0) {
+		return -1;
+	}
+
 	int image = identity.isBot() ? WinUtil::USER_ICON_BOT : identity.isAway() ? WinUtil::USER_ICON_AWAY : WinUtil::USER_ICON;
 	image *= WinUtil::USER_ICON_MOD_START * WinUtil::USER_ICON_MOD_START;
 

=== modified file 'win32/HubFrame.h'
--- win32/HubFrame.h	2011-01-09 14:54:10 +0000
+++ win32/HubFrame.h	2011-01-30 13:28:11 +0000
@@ -121,7 +121,7 @@
 		const tstring& getText(int col) const {
 			return columns[col];
 		}
-		int getImage() const;
+		int getImage(int col) const;
 
 		static int compareItems(const UserInfo* a, const UserInfo* b, int col);
 		bool update(const Identity& identity, int sortCol);

=== modified file 'win32/PublicHubsFrame.h'
--- win32/PublicHubsFrame.h	2011-01-09 14:54:10 +0000
+++ win32/PublicHubsFrame.h	2011-01-30 13:28:11 +0000
@@ -83,7 +83,7 @@
 
 		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; }
+		int getImage(int) const { return 0; }
 
 		const HubEntry* entry;
 

=== modified file 'win32/QueueFrame.cpp'
--- win32/QueueFrame.cpp	2011-01-09 14:54:10 +0000
+++ win32/QueueFrame.cpp	2011-01-30 13:28:11 +0000
@@ -425,8 +425,8 @@
 
 }
 
-int QueueFrame::DirItemInfo::getImage() {
-	return WinUtil::DIR_ICON;
+int QueueFrame::DirItemInfo::getImage(int col) {
+	return col == 0 ? WinUtil::DIR_ICON : -1;
 }
 
 int QueueFrame::DirItemInfo::getSelectedImage() {
@@ -848,7 +848,7 @@
 MenuPtr QueueFrame::makeSingleMenu(QueueItemInfo* qii) {
 	MenuPtr menu = addChild(WinUtil::Seeds::menu);
 
-	menu->setTitle(escapeMenu(qii->getText(COLUMN_TARGET)), WinUtil::fileImages->getIcon(qii->getImage()));
+	menu->setTitle(escapeMenu(qii->getText(COLUMN_TARGET)), WinUtil::fileImages->getIcon(qii->getImage(0)));
 
 	WinUtil::addHashItems(menu, qii->getTTH(), Text::toT(Util::getFileName(qii->getTarget())), qii->getSize());
 	menu->appendItem(T_("&Move/Rename"), std::bind(&QueueFrame::handleMove, this));
@@ -883,7 +883,7 @@
 
 	auto selData = dirs->getSelectedData();
 	menu->setTitle(escapeMenu(selData ? selData->getText() : getText()),
-		selData ? WinUtil::fileImages->getIcon(selData->getImage()) : getParent()->getIcon(this));
+		selData ? WinUtil::fileImages->getIcon(selData->getImage(0)) : getParent()->getIcon(this));
 
 	addPriorityMenu(menu);
 	menu->appendItem(T_("&Move/Rename"), std::bind(&QueueFrame::handleMove, this));

=== modified file 'win32/QueueFrame.h'
--- win32/QueueFrame.h	2011-01-09 14:54:10 +0000
+++ win32/QueueFrame.h	2011-01-30 13:28:11 +0000
@@ -73,7 +73,7 @@
 		DirItemInfo(const string& dir);
 		DirItemInfo(const string& dir_, const tstring& text_) : dir(dir_), text(text_) { }
 		const tstring& getText() const { return text; }
-		int getImage();
+		int getImage(int col = 0);
 		int getSelectedImage();
 		const string& getDir() const { return dir; }
 	private:
@@ -128,8 +128,8 @@
 			return getDisplay()->columns[col];
 		}
 
-		int getImage() const {
-			return WinUtil::getFileIcon(Text::toT(getTarget()));
+		int getImage(int col) const {
+			return col == 0 ? WinUtil::getFileIcon(Text::toT(getTarget())) : -1;
 		}
 
 		static int compareItems(QueueItemInfo* a, QueueItemInfo* b, int col) {

=== modified file 'win32/SearchFrame.cpp'
--- win32/SearchFrame.cpp	2011-01-29 14:15:43 +0000
+++ win32/SearchFrame.cpp	2011-01-30 13:28:11 +0000
@@ -49,7 +49,11 @@
 
 SearchFrame::FrameSet SearchFrame::frames;
 
-int SearchFrame::SearchInfo::getImage() {
+int SearchFrame::SearchInfo::getImage(int col) const {
+	if(col != 0) {
+		return -1;
+	}
+
 	const SearchResultPtr& sr = srs[0];
 	return sr->getType() == SearchResult::TYPE_FILE ? WinUtil::getFileIcon(Text::toT(sr->getFile())) : WinUtil::DIR_ICON;
 }

=== modified file 'win32/SearchFrame.h'
--- win32/SearchFrame.h	2011-01-09 14:54:10 +0000
+++ win32/SearchFrame.h	2011-01-30 13:28:11 +0000
@@ -120,7 +120,7 @@
 		};
 
 		const tstring& getText(int col) const { return columns[col]; }
-		int getImage();
+		int getImage(int col) const;
 
 		static int compareItems(SearchInfo* a, SearchInfo* b, int col);
 
@@ -140,7 +140,7 @@
 		const tstring& getText(int col) const {
 			return (col == 0) ? name : Util::emptyStringT;
 		}
-		int getImage() const {
+		int getImage(int) const {
 			return 0;
 		}
 		static int compareItems(HubInfo* a, HubInfo* b, int col) {

=== modified file 'win32/TransferView.cpp'
--- win32/TransferView.cpp	2011-01-09 14:54:10 +0000
+++ win32/TransferView.cpp	2011-01-30 13:28:11 +0000
@@ -197,7 +197,7 @@
 		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);
+			selData ? arrows->getIcon(selData->getImage(0)) : 0);
 
 		appendUserItems(mdi, menu, false);
 		menu->appendSeparator();
@@ -225,7 +225,7 @@
 		MenuPtr menu = addChild(WinUtil::Seeds::menu);
 
 		menu->setTitle(selData ? escapeMenu(selData->getText(DOWNLOAD_COLUMN_FILE)) : str(TF_("%1% files") % sel),
-			selData ? WinUtil::fileImages->getIcon(selData->getImage()) : 0);
+			selData ? WinUtil::fileImages->getIcon(selData->getImage(0)) : 0);
 
 		if(selData) {
 			WinUtil::addHashItems(menu, selData->tth, selData->getText(DOWNLOAD_COLUMN_FILE), selData->size);
@@ -234,7 +234,7 @@
 				selData = downloads->getData(i);
 				if(selData) {
 					const tstring& file = selData->getText(DOWNLOAD_COLUMN_FILE);
-					WinUtil::addHashItems(menu->appendPopup(file, WinUtil::fileImages->getIcon(selData->getImage())),
+					WinUtil::addHashItems(menu->appendPopup(file, WinUtil::fileImages->getIcon(selData->getImage(0))),
 						selData->tth, file, selData->size);
 				}
 			}
@@ -667,8 +667,8 @@
 	update();
 }
 
-int TransferView::DownloadInfo::getImage() const {
-	return WinUtil::getFileIcon(Text::toT(path));
+int TransferView::DownloadInfo::getImage(int col) const {
+	return col == 0 ? WinUtil::getFileIcon(Text::toT(path)) : -1;
 }
 
 void TransferView::DownloadInfo::update(const TransferView::TickInfo& ti) {

=== modified file 'win32/TransferView.h'
--- win32/TransferView.h	2011-01-09 14:54:10 +0000
+++ win32/TransferView.h	2011-01-30 13:28:11 +0000
@@ -129,8 +129,8 @@
 		const tstring& getText(int col) const {
 			return columns[col];
 		}
-		int getImage() const {
-			return download ? IMAGE_DOWNLOAD : IMAGE_UPLOAD;
+		int getImage(int col) const {
+			return col == 0 ? (download ? IMAGE_DOWNLOAD : IMAGE_UPLOAD) : -1;
 		}
 
 		static int compareItems(ConnectionInfo* a, ConnectionInfo* b, int col);
@@ -202,7 +202,7 @@
 			return columns[col];
 		}
 
-		int getImage() const;
+		int getImage(int col) const;
 
 		static int compareItems(DownloadInfo* a, DownloadInfo* b, int col) {
 			switch(col) {

=== modified file 'win32/TypedTable.h'
--- win32/TypedTable.h	2011-01-02 17:12:02 +0000
+++ win32/TypedTable.h	2011-01-30 13:28:11 +0000
@@ -197,7 +197,7 @@
 		}
 		if(nm->item.mask & LVIF_IMAGE) {
 			ContentType* content = reinterpret_cast<ContentType*>(nm->item.lParam);
-			nm->item.iImage = content->getImage();
+			nm->item.iImage = content->getImage(nm->item.iSubItem);
 		}
 		return true;
 	}

=== modified file 'win32/UsersFrame.h'
--- win32/UsersFrame.h	2011-01-29 14:15:43 +0000
+++ win32/UsersFrame.h	2011-01-30 13:28:11 +0000
@@ -79,7 +79,7 @@
 			return columns[col];
 		}
 
-		int getImage() const {
+		int getImage(int col) const {
 			return 0;
 		}
 

=== modified file 'win32/WinUtil.cpp'
--- win32/WinUtil.cpp	2011-01-29 14:15:43 +0000
+++ win32/WinUtil.cpp	2011-01-30 13:28:11 +0000
@@ -230,7 +230,7 @@
 
 	xTable.style |= WS_HSCROLL | WS_VSCROLL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS;
 	xTable.exStyle = WS_EX_CLIENTEDGE;
-	xTable.lvStyle = LVS_EX_HEADERDRAGDROP | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP | LVS_EX_DOUBLEBUFFER;
+	xTable.lvStyle = LVS_EX_HEADERDRAGDROP | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP | LVS_EX_DOUBLEBUFFER | LVS_EX_SUBITEMIMAGES;
 	xTable.font = font;
 
 	xtextBox.exStyle = WS_EX_CLIENTEDGE;