Home | History | Annotate | Download | only in bookmarks
      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 
     14 typedef struct _GtkWidget GtkWidget;
     15 class GtkThemeService;
     16 class Profile;
     17 
     18 class 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