← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3233: add some icons in the transfer list

 

------------------------------------------------------------
revno: 3233
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Fri 2013-03-22 17:30:58 +0100
message:
  add some icons in the transfer list
modified:
  win32/TransferView.cpp
  win32/TransferView.h
  win32/WinUtil.cpp
  win32/WinUtil.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/TransferView.cpp'
--- win32/TransferView.cpp	2013-03-22 15:34:41 +0000
+++ win32/TransferView.cpp	2013-03-22 16:30:58 +0000
@@ -59,17 +59,15 @@
 TransferView::TransferView(dwt::Widget* parent, TabViewPtr mdi_) :
 	dwt::Container(parent),
 	transfers(0),
-	mdi(mdi_)
+	mdi(mdi_),
+	downloadIcon(WinUtil::createIcon(IDI_DOWNLOAD, 16)),
+	uploadIcon(WinUtil::createIcon(IDI_UPLOAD, 16))
 {
 	create();
 	setHelpId(IDH_TRANSFERS);
 
 	transfers = addChild(WidgetTransfers::Seed(WinUtil::Seeds::table));
 
-	/*arrows = new dwt::ImageList(dwt::Point(16, 16));
-	arrows->add(*WinUtil::createIcon(IDI_DOWNLOAD, 16));
-	arrows->add(*WinUtil::createIcon(IDI_UPLOAD, 16));
-	transfers->setSmallImageList(arrows);*/
 	transfers->setSmallImageList(WinUtil::fileImages);
 
 	WinUtil::makeColumns(transfers, columns, COLUMN_LAST, SETTING(TRANSFERS_ORDER), SETTING(TRANSFERS_WIDTHS));
@@ -151,7 +149,7 @@
 }
 
 int64_t TransferView::ItemInfo::timeleft() const {
-	return speed == 0 ? 0 : (size - transferred) / speed;
+	return speed == 0 ? 0 : static_cast<double>(size - transferred) / speed;
 }
 
 TransferView::ConnectionInfo::ConnectionInfo(const HintedUser& u, TransferInfo& parent) :
@@ -173,6 +171,10 @@
 	return other.parent.download == parent.download && other.getUser() == getUser();
 }
 
+int TransferView::ConnectionInfo::getImage(int col) const {
+	return col == COLUMN_FILE ? WinUtil::TRANSFER_ICON_USER : ItemInfo::getImage(col);
+}
+
 void TransferView::ConnectionInfo::update(const UpdateInfo& ui) {
 	if(ui.updateMask & UpdateInfo::MASK_FILE) {
 		if(ui.path != parent.path) {
@@ -266,7 +268,7 @@
 }
 
 int TransferView::TransferInfo::getImage(int col) const {
-	return col == COLUMN_FILE ? WinUtil::getFileIcon(path) : -1;
+	return col == COLUMN_FILE ? WinUtil::getFileIcon(path) : ItemInfo::getImage(col);
 }
 
 void TransferView::TransferInfo::update() {
@@ -440,7 +442,9 @@
 	}
 }
 
-namespace { void drawProgress(HDC hdc, const dwt::Rectangle& rcItem, int item, int column, const tstring& text, double pos, bool download) {
+namespace { void drawProgress(HDC hdc, const dwt::Rectangle& rcItem, int item, int column,
+	const dwt::IconPtr& icon, const tstring& text, double pos, bool download)
+{
 	// draw something nice...
 	COLORREF barBase = download ? SETTING(DOWNLOAD_BG_COLOR) : SETTING(UPLOAD_BG_COLOR);
 	COLORREF bgBase = WinUtil::bgColor;
@@ -473,6 +477,19 @@
 	rc.size.x -= 2;
 	rc.size.y -= 1;
 
+	{
+		// draw the icon then shift the rect.
+		const long iconSize = 16;
+		const long iconTextSpace = 2;
+
+		dwt::Rectangle iconRect { rc.left(), rc.top() + std::max(rc.height() - iconSize, 0L) / 2, iconSize, iconSize };
+
+		canvas.drawIcon(icon, iconRect);
+
+		rc.pos.x += iconSize + iconTextSpace;
+		rc.size.x -= iconSize + iconTextSpace;
+	}
+
 	dwt::Rectangle textRect;
 
 	{
@@ -549,8 +566,10 @@
 			auto connInfo = dynamic_cast<const ConnectionInfo*>(&info);
 			if((!connInfo || connInfo->status == ConnectionInfo::STATUS_RUNNING) && info.size > 0 && info.transferred >= 0) {
 				int item = static_cast<int>(data.nmcd.dwItemSpec);
-				drawProgress(data.nmcd.hdc, transfers->getRect(item, col, LVIR_BOUNDS), item, col, info.getText(col),
-					static_cast<double>(info.transferred) / static_cast<double>(info.size), info.transfer().download);
+				drawProgress(data.nmcd.hdc, transfers->getRect(item, col, LVIR_BOUNDS), item, col,
+					info.transfer().download ? downloadIcon : uploadIcon, info.getText(col),
+					static_cast<double>(info.transferred) / static_cast<double>(info.size),
+					info.transfer().download);
 				return CDRF_SKIPDEFAULT;
 			}
 		}

=== modified file 'win32/TransferView.h'
--- win32/TransferView.h	2013-03-22 14:59:39 +0000
+++ win32/TransferView.h	2013-03-22 16:30:58 +0000
@@ -79,11 +79,6 @@
 		REMOVE_CONNECTION
 	};
 
-	enum {
-		IMAGE_DOWNLOAD = 0,
-		IMAGE_UPLOAD
-	};
-
 	struct TransferInfo;
 	struct UpdateInfo;
 
@@ -120,6 +115,8 @@
 
 		bool operator==(const ConnectionInfo& other) const;
 
+		int getImage(int col) const;
+
 		void update(const UpdateInfo& ui);
 
 		TransferInfo& transfer();
@@ -209,7 +206,9 @@
 									  objects stored by this container, hence the std::list. */
 
 	TabViewPtr mdi;
-	dwt::ImageListPtr arrows;
+
+	const dwt::IconPtr downloadIcon;
+	const dwt::IconPtr uploadIcon;
 
 	bool startup;
 

=== modified file 'win32/WinUtil.cpp'
--- win32/WinUtil.cpp	2013-02-03 22:26:48 +0000
+++ win32/WinUtil.cpp	2013-03-22 16:30:58 +0000
@@ -106,14 +106,14 @@
 dwt::FontPtr WinUtil::font;
 dwt::FontPtr WinUtil::uploadFont;
 dwt::FontPtr WinUtil::downloadFont;
-unordered_map<string, dwt::FontPtr> WinUtil::userMatchFonts;
+decltype(WinUtil::userMatchFonts) WinUtil::userMatchFonts;
 dwt::ImageListPtr WinUtil::fileImages;
 dwt::ImageListPtr WinUtil::userImages;
+decltype(WinUtil::fileIndexes) WinUtil::fileIndexes;
 TStringList WinUtil::lastDirs;
 MainWindow* WinUtil::mainWindow = 0;
 bool WinUtil::urlDcADCRegistered = false;
 bool WinUtil::urlMagnetRegistered = false;
-WinUtil::ImageMap WinUtil::fileIndexes;
 DWORD WinUtil::helpCookie = 0;
 tstring WinUtil::helpPath;
 StringList WinUtil::helpTexts;
@@ -200,6 +200,9 @@
 	// add the generic file icon (FILE_ICON_GENERIC).
 	fileImages->add(*createIcon(IDI_FILE, 16));
 
+	// add icons used by the transfer list (TRANSFER_ICON_*).
+	fileImages->add(*createIcon(IDI_USER, 16));
+
 	{
 		const dwt::Point size(16, 16);
 		userImages = dwt::ImageListPtr(new dwt::ImageList(size));

=== modified file 'win32/WinUtil.h'
--- win32/WinUtil.h	2013-01-21 18:43:48 +0000
+++ win32/WinUtil.h	2013-03-22 16:30:58 +0000
@@ -82,11 +82,14 @@
 class WinUtil {
 public:
 	// pre-defined icon indexes used by the "fileImages" image list - see also getFileIcon.
+	// also contains icons used by the transfer list.
 	enum {
 		DIR_ICON,
 		DIR_ICON_INCOMPLETE,
 
-		FILE_ICON_GENERIC
+		FILE_ICON_GENERIC,
+
+		TRANSFER_ICON_USER
 	};
 
 	// icon indexes to use with the "userImages" image list.
@@ -138,12 +141,10 @@
 	static tstring commands;
 	static dwt::ImageListPtr fileImages;
 	static dwt::ImageListPtr userImages;
+	static unordered_map<string, size_t> fileIndexes;
 	static TStringList lastDirs;
 	static MainWindow* mainWindow;
 
-	typedef unordered_map<string, size_t> ImageMap;
-	static ImageMap fileIndexes;
-
 	struct Seeds {
 		static const Button::Seed button;
 		static const ComboBox::Seed comboBox;