| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/status_icons/status_icon_win.h" | 5 #include "chrome/browser/ui/views/status_icons/status_icon_win.h" |
| 6 | 6 |
| 7 #include "base/strings/string_number_conversions.h" | 7 #include "base/strings/string_number_conversions.h" |
| 8 #include "base/win/windows_version.h" | 8 #include "base/win/windows_version.h" |
| 9 #include "chrome/browser/ui/views/status_icons/status_tray_win.h" | 9 #include "chrome/browser/ui/views/status_icons/status_tray_win.h" |
| 10 #include "third_party/skia/include/core/SkBitmap.h" | 10 #include "third_party/skia/include/core/SkBitmap.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 } | 75 } |
| 76 | 76 |
| 77 void StatusIconWin::ResetIcon() { | 77 void StatusIconWin::ResetIcon() { |
| 78 NOTIFYICONDATA icon_data; | 78 NOTIFYICONDATA icon_data; |
| 79 InitIconData(&icon_data); | 79 InitIconData(&icon_data); |
| 80 // Delete any previously existing icon. | 80 // Delete any previously existing icon. |
| 81 Shell_NotifyIcon(NIM_DELETE, &icon_data); | 81 Shell_NotifyIcon(NIM_DELETE, &icon_data); |
| 82 InitIconData(&icon_data); | 82 InitIconData(&icon_data); |
| 83 icon_data.uFlags = NIF_MESSAGE; | 83 icon_data.uFlags = NIF_MESSAGE; |
| 84 icon_data.uCallbackMessage = message_id_; | 84 icon_data.uCallbackMessage = message_id_; |
| 85 icon_data.hIcon = icon_.Get(); | 85 icon_data.hIcon = icon_.get(); |
| 86 // If we have an image, then set the NIF_ICON flag, which tells | 86 // If we have an image, then set the NIF_ICON flag, which tells |
| 87 // Shell_NotifyIcon() to set the image for the status icon it creates. | 87 // Shell_NotifyIcon() to set the image for the status icon it creates. |
| 88 if (icon_data.hIcon) | 88 if (icon_data.hIcon) |
| 89 icon_data.uFlags |= NIF_ICON; | 89 icon_data.uFlags |= NIF_ICON; |
| 90 // Re-add our icon. | 90 // Re-add our icon. |
| 91 BOOL result = Shell_NotifyIcon(NIM_ADD, &icon_data); | 91 BOOL result = Shell_NotifyIcon(NIM_ADD, &icon_data); |
| 92 if (!result) | 92 if (!result) |
| 93 LOG(WARNING) << "Unable to re-create status tray icon."; | 93 LOG(WARNING) << "Unable to re-create status tray icon."; |
| 94 } | 94 } |
| 95 | 95 |
| 96 void StatusIconWin::SetImage(const gfx::ImageSkia& image) { | 96 void StatusIconWin::SetImage(const gfx::ImageSkia& image) { |
| 97 // Create the icon. | 97 // Create the icon. |
| 98 NOTIFYICONDATA icon_data; | 98 NOTIFYICONDATA icon_data; |
| 99 InitIconData(&icon_data); | 99 InitIconData(&icon_data); |
| 100 icon_data.uFlags = NIF_ICON; | 100 icon_data.uFlags = NIF_ICON; |
| 101 icon_.Set(IconUtil::CreateHICONFromSkBitmap(*image.bitmap())); | 101 icon_.reset(IconUtil::CreateHICONFromSkBitmap(*image.bitmap())); |
| 102 icon_data.hIcon = icon_.Get(); | 102 icon_data.hIcon = icon_.get(); |
| 103 BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data); | 103 BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data); |
| 104 if (!result) | 104 if (!result) |
| 105 LOG(WARNING) << "Error setting status tray icon image"; | 105 LOG(WARNING) << "Error setting status tray icon image"; |
| 106 } | 106 } |
| 107 | 107 |
| 108 void StatusIconWin::SetToolTip(const base::string16& tool_tip) { | 108 void StatusIconWin::SetToolTip(const base::string16& tool_tip) { |
| 109 // Create the icon. | 109 // Create the icon. |
| 110 NOTIFYICONDATA icon_data; | 110 NOTIFYICONDATA icon_data; |
| 111 InitIconData(&icon_data); | 111 InitIconData(&icon_data); |
| 112 icon_data.uFlags = NIF_TIP; | 112 icon_data.uFlags = NIF_TIP; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 124 NOTIFYICONDATA icon_data; | 124 NOTIFYICONDATA icon_data; |
| 125 InitIconData(&icon_data); | 125 InitIconData(&icon_data); |
| 126 icon_data.uFlags = NIF_INFO; | 126 icon_data.uFlags = NIF_INFO; |
| 127 icon_data.dwInfoFlags = NIIF_INFO; | 127 icon_data.dwInfoFlags = NIIF_INFO; |
| 128 wcscpy_s(icon_data.szInfoTitle, title.c_str()); | 128 wcscpy_s(icon_data.szInfoTitle, title.c_str()); |
| 129 wcscpy_s(icon_data.szInfo, contents.c_str()); | 129 wcscpy_s(icon_data.szInfo, contents.c_str()); |
| 130 icon_data.uTimeout = 0; | 130 icon_data.uTimeout = 0; |
| 131 | 131 |
| 132 base::win::Version win_version = base::win::GetVersion(); | 132 base::win::Version win_version = base::win::GetVersion(); |
| 133 if (!icon.isNull() && win_version != base::win::VERSION_PRE_XP) { | 133 if (!icon.isNull() && win_version != base::win::VERSION_PRE_XP) { |
| 134 balloon_icon_.Set(IconUtil::CreateHICONFromSkBitmap(*icon.bitmap())); | 134 balloon_icon_.reset(IconUtil::CreateHICONFromSkBitmap(*icon.bitmap())); |
| 135 if (win_version >= base::win::VERSION_VISTA) { | 135 if (win_version >= base::win::VERSION_VISTA) { |
| 136 icon_data.hBalloonIcon = balloon_icon_.Get(); | 136 icon_data.hBalloonIcon = balloon_icon_.get(); |
| 137 icon_data.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON; | 137 icon_data.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON; |
| 138 } else { | 138 } else { |
| 139 icon_data.hIcon = balloon_icon_.Get(); | 139 icon_data.hIcon = balloon_icon_.get(); |
| 140 icon_data.uFlags |= NIF_ICON; | 140 icon_data.uFlags |= NIF_ICON; |
| 141 icon_data.dwInfoFlags = NIIF_USER; | 141 icon_data.dwInfoFlags = NIIF_USER; |
| 142 } | 142 } |
| 143 } | 143 } |
| 144 | 144 |
| 145 BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data); | 145 BOOL result = Shell_NotifyIcon(NIM_MODIFY, &icon_data); |
| 146 if (!result) | 146 if (!result) |
| 147 LOG(WARNING) << "Unable to create status tray balloon."; | 147 LOG(WARNING) << "Unable to create status tray balloon."; |
| 148 } | 148 } |
| 149 | 149 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 167 memset(icon_data, 0, sizeof(NOTIFYICONDATA)); | 167 memset(icon_data, 0, sizeof(NOTIFYICONDATA)); |
| 168 icon_data->cbSize = sizeof(NOTIFYICONDATA); | 168 icon_data->cbSize = sizeof(NOTIFYICONDATA); |
| 169 } else { | 169 } else { |
| 170 memset(icon_data, 0, NOTIFYICONDATA_V3_SIZE); | 170 memset(icon_data, 0, NOTIFYICONDATA_V3_SIZE); |
| 171 icon_data->cbSize = NOTIFYICONDATA_V3_SIZE; | 171 icon_data->cbSize = NOTIFYICONDATA_V3_SIZE; |
| 172 } | 172 } |
| 173 | 173 |
| 174 icon_data->hWnd = window_; | 174 icon_data->hWnd = window_; |
| 175 icon_data->uID = icon_id_; | 175 icon_data->uID = icon_id_; |
| 176 } | 176 } |
| OLD | NEW |