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: ~Delegate()27 virtual ~Delegate() {} 28 }; 29 30 explicit BookmarkBarInstructionsGtk(Delegate* delegate, Profile* profile); 31 32 // Get the native widget. 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