← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2533: add icons in balloons

 

------------------------------------------------------------
revno: 2533
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Fri 2011-05-27 13:03:29 +0200
message:
  add icons in balloons
modified:
  changelog.txt
  win32/HubFrame.cpp
  win32/MainWindow.cpp
  win32/MainWindow.h
  win32/NotificationsPage.cpp
  win32/NotificationsPage.h
  win32/PrivateFrame.cpp
  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 'changelog.txt'
--- changelog.txt	2011-05-06 22:46:06 +0000
+++ changelog.txt	2011-05-27 11:03:29 +0000
@@ -24,7 +24,7 @@
 * Increase the max bandwidth limit from 32 MiB/s to 1 GiB/s
 * More icons (many from the Crystal Clear project, thanks to them)
 * Add notifications via balloon popups and sound (poy)
-* Fix taskbar thumbnails and "Aero Peek" live previews when DC++ is elevated (poy)
+* Fix taskbar tab previews when DC++ is elevated (poy)
 * When holding shift at start, hubs are opened but not connected to (poy)
 
 -- 0.782 2011-03-05 --

=== modified file 'win32/HubFrame.cpp'
--- win32/HubFrame.cpp	2011-05-06 22:46:06 +0000
+++ win32/HubFrame.cpp	2011-05-27 11:03:29 +0000
@@ -463,7 +463,7 @@
 void HubFrame::addChat(const tstring& aLine) {
 	ChatType::addChat(client, aLine);
 
-	WinUtil::notify(SettingsManager::SOUND_MAIN_CHAT, SettingsManager::BALLOON_MAIN_CHAT, T_("Main chat message"), aLine);
+	WinUtil::notify(WinUtil::NOTIFICATION_MAIN_CHAT, aLine);
 	setDirty(SettingsManager::BOLD_HUB);
 
 	if(BOOLSETTING(LOG_MAIN_CHAT)) {

=== modified file 'win32/MainWindow.cpp'
--- win32/MainWindow.cpp	2011-05-06 22:46:06 +0000
+++ win32/MainWindow.cpp	2011-05-27 11:03:29 +0000
@@ -586,8 +586,8 @@
 	return false;
 }
 
-void MainWindow::notify(const tstring& title, const tstring& message) {
-	notifier->addMessage(_T("DC++ - ") + title, message);
+void MainWindow::notify(const tstring& title, const tstring& message, const dwt::IconPtr& balloonIcon) {
+	notifier->addMessage(_T("DC++ - ") + title, message, balloonIcon);
 }
 
 void MainWindow::setStaticWindowState(const string& id, bool open) {
@@ -1515,8 +1515,7 @@
 			auto user = qi->getDownloads()[0]->getHintedUser();
 			callAsync([this, file, dir, user, speed] {
 				DirectoryListingFrame::openWindow(getTabView(), Text::toT(file), Text::toT(dir), user, speed);
-				WinUtil::notify(SettingsManager::SOUND_FINISHED_FL, SettingsManager::BALLOON_FINISHED_FL,
-					T_("File list downloaded"), Text::toT(Util::getFileName(file)));
+				WinUtil::notify(WinUtil::NOTIFICATION_FINISHED_FL, Text::toT(Util::getFileName(file)));
 			});
 
 		} else if(qi->isSet(QueueItem::FLAG_TEXT)) {
@@ -1531,8 +1530,7 @@
 	if(!qi->isSet(QueueItem::FLAG_USER_LIST)) {
 		auto file = qi->getTarget();
 		callAsync([file] {
-			WinUtil::notify(SettingsManager::SOUND_FINISHED_DL, SettingsManager::BALLOON_FINISHED_DL,
-				T_("Download finished"), Text::toT(file));
+			WinUtil::notify(WinUtil::NOTIFICATION_FINISHED_DL, Text::toT(file));
 		});
 	}
 }

=== modified file 'win32/MainWindow.h'
--- win32/MainWindow.h	2011-05-06 22:46:06 +0000
+++ win32/MainWindow.h	2011-05-27 11:03:29 +0000
@@ -64,7 +64,7 @@
 
 	void handleSettings();
 
-	void notify(const tstring& title, const tstring& message);
+	void notify(const tstring& title, const tstring& message, const dwt::IconPtr& balloonIcon = 0);
 	void setStaticWindowState(const string& id, bool open);
 	void TrayPM();
 

=== modified file 'win32/NotificationsPage.cpp'
--- win32/NotificationsPage.cpp	2011-05-04 19:32:00 +0000
+++ win32/NotificationsPage.cpp	2011-05-27 11:03:29 +0000
@@ -27,25 +27,11 @@
 
 #include "resource.h"
 #include "MainWindow.h"
-#include "WinUtil.h"
 
 using dwt::Grid;
 using dwt::GridInfo;
 using dwt::LoadDialog;
 
-NotificationsPage::Option NotificationsPage::options[] = {
-	{ N_("Download finished"), SettingsManager::SOUND_FINISHED_DL, Util::emptyStringT,
-	SettingsManager::BALLOON_FINISHED_DL, 0, IDH_SETTINGS_NOTIFICATIONS_FINISHED_DL },
-	{ N_("File list downloaded"), SettingsManager::SOUND_FINISHED_FL, Util::emptyStringT,
-	SettingsManager::BALLOON_FINISHED_FL, 0, IDH_SETTINGS_NOTIFICATIONS_FINISHED_FL },
-	{ N_("Main chat message received"), SettingsManager::SOUND_MAIN_CHAT, Util::emptyStringT,
-	SettingsManager::BALLOON_MAIN_CHAT, 0, IDH_SETTINGS_NOTIFICATIONS_MAIN_CHAT },
-	{ N_("Private message received"), SettingsManager::SOUND_PM, Util::emptyStringT,
-	SettingsManager::BALLOON_PM, 0, IDH_SETTINGS_NOTIFICATIONS_PM },
-	{ N_("Private message window opened"), SettingsManager::SOUND_PM_WINDOW, Util::emptyStringT,
-	SettingsManager::BALLOON_PM_WINDOW, 0, IDH_SETTINGS_NOTIFICATIONS_PM_WINDOW }
-};
-
 static const ColumnInfo columns[] = {
 	{ "", 0, false },
 	{ N_("Event"), 100, false },
@@ -65,6 +51,12 @@
 {
 	setHelpId(IDH_NOTIFICATIONSPAGE);
 
+	options[WinUtil::NOTIFICATION_FINISHED_DL].helpId = IDH_SETTINGS_NOTIFICATIONS_FINISHED_DL;
+	options[WinUtil::NOTIFICATION_FINISHED_FL].helpId = IDH_SETTINGS_NOTIFICATIONS_FINISHED_FL;
+	options[WinUtil::NOTIFICATION_MAIN_CHAT].helpId = IDH_SETTINGS_NOTIFICATIONS_MAIN_CHAT;
+	options[WinUtil::NOTIFICATION_PM].helpId = IDH_SETTINGS_NOTIFICATIONS_PM;
+	options[WinUtil::NOTIFICATION_PM_WINDOW].helpId = IDH_SETTINGS_NOTIFICATIONS_PM_WINDOW;
+
 	grid->column(0).mode = GridInfo::FILL;
 	grid->row(0).mode = GridInfo::FILL;
 	grid->row(0).align = GridInfo::STRETCH;
@@ -137,12 +129,12 @@
 
 	WinUtil::makeColumns(table, columns, COLUMN_LAST);
 
-	for(size_t i = 0, n = sizeof(options) / sizeof(Option); i < n; ++i) {
-		options[i].sound = Text::toT(SettingsManager::getInstance()->get((SettingsManager::StrSetting)options[i].soundSetting));
-		options[i].balloon = SettingsManager::getInstance()->get((SettingsManager::IntSetting)options[i].balloonSetting);
+	for(size_t i = 0; i < WinUtil::NOTIFICATION_LAST; ++i) {
+		options[i].sound = Text::toT(SettingsManager::getInstance()->get((SettingsManager::StrSetting)WinUtil::notifications[i].sound));
+		options[i].balloon = SettingsManager::getInstance()->get((SettingsManager::IntSetting)WinUtil::notifications[i].balloon);
 
 		TStringList row(COLUMN_LAST);
-		row[COLUMN_TEXT] = T_(options[i].text);
+		row[COLUMN_TEXT] = T_(WinUtil::notifications[i].title);
 		table->insert(row);
 
 		updateSound(i);
@@ -170,8 +162,8 @@
 void NotificationsPage::write() {
 	SettingsManager* settings = SettingsManager::getInstance();
 	for(size_t i = 0, n = sizeof(options) / sizeof(Option); i < n; ++i) {
-		settings->set((SettingsManager::StrSetting)options[i].soundSetting, Text::fromT(options[i].sound));
-		settings->set((SettingsManager::IntSetting)options[i].balloonSetting, options[i].balloon);
+		settings->set((SettingsManager::StrSetting)WinUtil::notifications[i].sound, Text::fromT(options[i].sound));
+		settings->set((SettingsManager::IntSetting)WinUtil::notifications[i].balloon, options[i].balloon);
 	}
 }
 

=== modified file 'win32/NotificationsPage.h'
--- win32/NotificationsPage.h	2011-04-25 21:52:03 +0000
+++ win32/NotificationsPage.h	2011-05-27 11:03:29 +0000
@@ -20,6 +20,7 @@
 #define DCPLUSPLUS_WIN32_NOTIFICATIONS_PAGE_H
 
 #include "PropPage.h"
+#include "WinUtil.h"
 
 class NotificationsPage : public PropPage
 {
@@ -32,14 +33,12 @@
 
 private:
 	struct Option {
-		const char* text;
-		int soundSetting;
 		tstring sound;
-		int balloonSetting;
 		int balloon;
 		unsigned helpId;
+		Option() : balloon(0), helpId(0) { }
 	};
-	static Option options[];
+	Option options[WinUtil::NOTIFICATION_LAST];
 
 	enum {
 		COLUMN_DUMMY, // so that the first column doesn't have a blank space.

=== modified file 'win32/PrivateFrame.cpp'
--- win32/PrivateFrame.cpp	2011-05-04 19:32:00 +0000
+++ win32/PrivateFrame.cpp	2011-05-27 11:03:29 +0000
@@ -69,10 +69,10 @@
 			if(!(BOOLSETTING(NO_AWAYMSG_TO_BOTS) && user->isSet(User::BOT)))
 				p->sendMessage(Text::toT(Util::getAwayMessage()));
 		}
-		WinUtil::notify(SettingsManager::SOUND_PM_WINDOW, SettingsManager::BALLOON_PM_WINDOW, T_("Private message window"), aMessage);
+		WinUtil::notify(WinUtil::NOTIFICATION_PM_WINDOW, aMessage);
 	} else {
 		i->second->addChat(aMessage);
-		WinUtil::notify(SettingsManager::SOUND_PM, SettingsManager::BALLOON_PM, T_("Private message"), aMessage);
+		WinUtil::notify(WinUtil::NOTIFICATION_PM, aMessage);
 	}
 }
 

=== modified file 'win32/WinUtil.cpp'
--- win32/WinUtil.cpp	2011-05-06 21:57:07 +0000
+++ win32/WinUtil.cpp	2011-05-27 11:03:29 +0000
@@ -82,6 +82,14 @@
 // def taken from <gettextP.h>
 extern "C" const char *_nl_locale_name_default(void);
 
+WinUtil::Notification WinUtil::notifications[NOTIFICATION_LAST] = {
+	{ SettingsManager::SOUND_FINISHED_DL, SettingsManager::BALLOON_FINISHED_DL, N_("Download finished"), IDI_DOWNLOAD },
+	{ SettingsManager::SOUND_FINISHED_FL, SettingsManager::BALLOON_FINISHED_FL, N_("File list downloaded"), IDI_DIRECTORY },
+	{ SettingsManager::SOUND_MAIN_CHAT, SettingsManager::BALLOON_MAIN_CHAT, N_("Main chat message received"), IDI_BALLOON },
+	{ SettingsManager::SOUND_PM, SettingsManager::BALLOON_PM, N_("Private message received"), IDI_PRIVATE },
+	{ SettingsManager::SOUND_PM_WINDOW, SettingsManager::BALLOON_PM_WINDOW, N_("Private message window opened"), IDI_PRIVATE }
+};
+
 tstring WinUtil::tth;
 dwt::BrushPtr WinUtil::bgBrush;
 COLORREF WinUtil::textColor = 0;
@@ -548,15 +556,17 @@
 	return true;
 }
 
-void WinUtil::notify(int soundSetting, int balloonSetting, const tstring& balloonTitle, const tstring& balloonText) {
-	const string& s = SettingsManager::getInstance()->get((SettingsManager::StrSetting)soundSetting);
+void WinUtil::notify(NotificationType notification, const tstring& balloonText) {
+	const auto& n = notifications[notification];
+
+	const string& s = SettingsManager::getInstance()->get((SettingsManager::StrSetting)n.sound);
 	if(!s.empty()) {
 		playSound(Text::toT(s));
 	}
 
-	int b = SettingsManager::getInstance()->get((SettingsManager::IntSetting)balloonSetting);
+	int b = SettingsManager::getInstance()->get((SettingsManager::IntSetting)n.balloon);
 	if(b == SettingsManager::BALLOON_ALWAYS || (b == SettingsManager::BALLOON_BACKGROUND && !mainWindow->onForeground())) {
-		mainWindow->notify(balloonTitle, balloonText);
+		mainWindow->notify(Text::toT(n.title), balloonText, createIcon(n.icon, 16));
 	}
 }
 

=== modified file 'win32/WinUtil.h'
--- win32/WinUtil.h	2011-05-04 19:32:00 +0000
+++ win32/WinUtil.h	2011-05-27 11:03:29 +0000
@@ -97,6 +97,25 @@
 		USER_ICON_LAST
 	};
 
+	enum NotificationType {
+		NOTIFICATION_FINISHED_DL,
+		NOTIFICATION_FINISHED_FL,
+		NOTIFICATION_MAIN_CHAT,
+		NOTIFICATION_PM,
+		NOTIFICATION_PM_WINDOW,
+
+		NOTIFICATION_LAST
+	};
+
+	struct Notification {
+		int sound;
+		int balloon;
+		const char* title;
+		unsigned icon;
+	};
+
+	static Notification notifications[NOTIFICATION_LAST];
+
 	static tstring tth;
 
 	static dwt::BrushPtr bgBrush;
@@ -162,7 +181,7 @@
 	 */
 	static bool checkCommand(tstring& cmd, tstring& param, tstring& message, tstring& status, bool& thirdPerson);
 
-	static void notify(int soundSetting, int balloonSetting, const tstring& balloonTitle, const tstring& balloonText);
+	static void notify(NotificationType notification, const tstring& balloonText);
 	static void playSound(const tstring& sound);
 
 	static void openFile(const tstring& file);