1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BAR_INSTRUCTIONS_GTK_H_
6#define CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BAR_INSTRUCTIONS_GTK_H_
7#pragma once
8
9#include "base/basictypes.h"
10#include "content/common/notification_observer.h"
11#include "content/common/notification_registrar.h"
12#include "ui/base/gtk/gtk_signal.h"
13
14typedef struct _GtkWidget GtkWidget;
15class GtkThemeService;
16class Profile;
17
18class BookmarkBarInstructionsGtk : public NotificationObserver {
19 public:
20  // The delegate is notified once the user clicks on the link to import
21  // bookmarks.
22  class Delegate {
23   public:
24    virtual void ShowImportDialog() = 0;
25
26   protected:
27    virtual ~Delegate() {}
28  };
29
30  explicit BookmarkBarInstructionsGtk(Delegate* delegate, Profile* profile);
31
32  // Get the native widget.
33  GtkWidget* widget() const { return instructions_hbox_; }
34
35 private:
36  // Overridden from NotificationObserver:
37  virtual void Observe(NotificationType type,
38                       const NotificationSource& source,
39                       const NotificationDetails& details);
40
41  CHROMEGTK_CALLBACK_0(BookmarkBarInstructionsGtk, void, OnButtonClick);
42
43  // Sets the correct color for |instructions_label_| and |instructions_link_|.
44  void UpdateColors();
45
46  Delegate* delegate_;
47
48  Profile* profile_;
49
50  GtkThemeService* theme_service_;
51
52  // HBox that holds the the label and link of bookmark bar import promotion.
53  GtkWidget* instructions_hbox_;
54  GtkWidget* instructions_label_;
55  GtkWidget* instructions_link_;
56
57  NotificationRegistrar registrar_;
58
59  DISALLOW_COPY_AND_ASSIGN(BookmarkBarInstructionsGtk);
60};
61
62#endif  // CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BAR_INSTRUCTIONS_GTK_H_
63