Decouple TaskbarHost from NativeWindow

This commit is contained in:
Cheng Zhao 2015-08-06 11:10:34 +08:00
parent 8f8c3aef87
commit a28f70e85c
8 changed files with 52 additions and 56 deletions

View file

@ -58,15 +58,14 @@ bool GetThumbarButtonFlags(const std::vector<std::string>& flags,
} // namespace
TaskbarHost::TaskbarHost(HWND window) : is_initialized_(false),
window_(window) {
TaskbarHost::TaskbarHost() : is_initialized_(false) {
}
TaskbarHost::~TaskbarHost() {
}
bool TaskbarHost::SetThumbarButtons(
const std::vector<atom::NativeWindow::ThumbarButton>& buttons) {
HWND window, const std::vector<ThumbarButton>& buttons) {
if (buttons.size() > kMaxButtonsCount)
return false;
@ -114,10 +113,10 @@ bool TaskbarHost::SetThumbarButtons(
if (!is_initialized_) {
is_initialized_ = true;
is_success = taskbar->ThumbBarAddButtons(
window_, buttons.size(), thumb_buttons) == S_OK;
window, buttons.size(), thumb_buttons) == S_OK;
} else {
is_success = taskbar->ThumbBarUpdateButtons(
window_, kMaxButtonsCount, thumb_buttons) == S_OK;
window, kMaxButtonsCount, thumb_buttons) == S_OK;
}
// Release thumb_buttons' icons, the taskbar makes its own copy.

View file

@ -10,28 +10,33 @@
#include <map>
#include <vector>
#include "atom/browser/native_window.h"
#include "base/callback.h"
#include "ui/gfx/image/image.h"
namespace atom {
class TaskbarHost {
public:
explicit TaskbarHost(HWND window);
~TaskbarHost();
struct ThumbarButton {
std::string tooltip;
gfx::Image icon;
std::vector<std::string> flags;
base::Closure clicked_callback;
};
TaskbarHost();
virtual ~TaskbarHost();
bool SetThumbarButtons(
const std::vector<NativeWindow::ThumbarButton>& buttons);
HWND window, const std::vector<ThumbarButton>& buttons);
bool HandleThumbarButtonEvent(int button_id);
private:
using ThumbarButtonClickedCallbackMap = std::map<
int, NativeWindow::ThumbarButtonClickedCallback>;
using ThumbarButtonClickedCallbackMap = std::map<int, base::Closure>;
ThumbarButtonClickedCallbackMap thumbar_button_clicked_callback_map_;
bool is_initialized_;
HWND window_;
DISALLOW_COPY_AND_ASSIGN(TaskbarHost);
};