| 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 #ifndef CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_ACTIONS_MODEL_H_ | 5 #ifndef CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_ACTIONS_MODEL_H_ |
| 6 #define CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_ACTIONS_MODEL_H_ | 6 #define CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_ACTIONS_MODEL_H_ |
| 7 | 7 |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
| 10 #include "base/observer_list.h" | 10 #include "base/observer_list.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 class PrefService; | 21 class PrefService; |
| 22 class Profile; | 22 class Profile; |
| 23 class ToolbarActionsBar; | 23 class ToolbarActionsBar; |
| 24 class ToolbarActionViewController; | 24 class ToolbarActionViewController; |
| 25 | 25 |
| 26 namespace extensions { | 26 namespace extensions { |
| 27 class ExtensionRegistry; | 27 class ExtensionRegistry; |
| 28 class ExtensionSet; | 28 class ExtensionSet; |
| 29 } | 29 } |
| 30 | 30 |
| 31 // Model for the browser actions toolbar. | 31 // Model for the browser actions toolbar. This is a per-profile instance, and |
| 32 // manages the user's global preferences. |
| 33 // Each browser window will attempt to show browser actions as specified by this |
| 34 // model, but if the window is too narrow, actions may end up pushed into the |
| 35 // overflow menu on a per-window basis. Callers interested in the arrangement of |
| 36 // actions in a particular window should check that window's instance of |
| 37 // ToolbarActionsBar, which is responsible for the per-window layout. |
| 32 class ToolbarActionsModel : public extensions::ExtensionActionAPI::Observer, | 38 class ToolbarActionsModel : public extensions::ExtensionActionAPI::Observer, |
| 33 public extensions::ExtensionRegistryObserver, | 39 public extensions::ExtensionRegistryObserver, |
| 34 public KeyedService { | 40 public KeyedService { |
| 35 public: | 41 public: |
| 36 // The different options for highlighting. | 42 // The different options for highlighting. |
| 37 enum HighlightType { | 43 enum HighlightType { |
| 38 HIGHLIGHT_NONE, | 44 HIGHLIGHT_NONE, |
| 39 HIGHLIGHT_INFO, | 45 HIGHLIGHT_INFO, |
| 40 HIGHLIGHT_WARNING, | 46 HIGHLIGHT_WARNING, |
| 41 }; | 47 }; |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 void RemoveObserver(Observer* observer); | 122 void RemoveObserver(Observer* observer); |
| 117 | 123 |
| 118 // Moves the given action with |id|'s icon to the given |index|. | 124 // Moves the given action with |id|'s icon to the given |index|. |
| 119 void MoveActionIcon(const std::string& id, size_t index); | 125 void MoveActionIcon(const std::string& id, size_t index); |
| 120 | 126 |
| 121 // Sets the number of action icons that should be visible. | 127 // Sets the number of action icons that should be visible. |
| 122 // If count == size(), this will set the visible icon count to -1, meaning | 128 // If count == size(), this will set the visible icon count to -1, meaning |
| 123 // "show all actions". | 129 // "show all actions". |
| 124 void SetVisibleIconCount(size_t count); | 130 void SetVisibleIconCount(size_t count); |
| 125 | 131 |
| 132 // Note that this (and all_icons_visible()) are the global default, but are |
| 133 // inappropriate for determining a specific window's state - for that, use |
| 134 // the ToolbarActionsBar. |
| 126 size_t visible_icon_count() const { | 135 size_t visible_icon_count() const { |
| 127 // We have guards around this because |visible_icon_count_| can be set by | 136 // We have guards around this because |visible_icon_count_| can be set by |
| 128 // prefs/sync, and we want to ensure that the icon count returned is within | 137 // prefs/sync, and we want to ensure that the icon count returned is within |
| 129 // bounds. | 138 // bounds. |
| 130 return visible_icon_count_ == -1 | 139 return visible_icon_count_ == -1 |
| 131 ? toolbar_items().size() | 140 ? toolbar_items().size() |
| 132 : std::min(static_cast<size_t>(visible_icon_count_), | 141 : std::min(static_cast<size_t>(visible_icon_count_), |
| 133 toolbar_items().size()); | 142 toolbar_items().size()); |
| 134 } | 143 } |
| 135 | |
| 136 bool all_icons_visible() const { | 144 bool all_icons_visible() const { |
| 137 return visible_icon_count() == toolbar_items().size(); | 145 return visible_icon_count() == toolbar_items().size(); |
| 138 } | 146 } |
| 139 | 147 |
| 140 bool actions_initialized() const { return actions_initialized_; } | 148 bool actions_initialized() const { return actions_initialized_; } |
| 141 | 149 |
| 142 ScopedVector<ToolbarActionViewController> CreateActions( | 150 ScopedVector<ToolbarActionViewController> CreateActions( |
| 143 Browser* browser, | 151 Browser* browser, |
| 144 ToolbarActionsBar* bar); | 152 ToolbarActionsBar* bar); |
| 145 | 153 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 // For observing change of toolbar order preference by external entity (sync). | 287 // For observing change of toolbar order preference by external entity (sync). |
| 280 PrefChangeRegistrar pref_change_registrar_; | 288 PrefChangeRegistrar pref_change_registrar_; |
| 281 base::Closure pref_change_callback_; | 289 base::Closure pref_change_callback_; |
| 282 | 290 |
| 283 base::WeakPtrFactory<ToolbarActionsModel> weak_ptr_factory_; | 291 base::WeakPtrFactory<ToolbarActionsModel> weak_ptr_factory_; |
| 284 | 292 |
| 285 DISALLOW_COPY_AND_ASSIGN(ToolbarActionsModel); | 293 DISALLOW_COPY_AND_ASSIGN(ToolbarActionsModel); |
| 286 }; | 294 }; |
| 287 | 295 |
| 288 #endif // CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_ACTIONS_MODEL_H_ | 296 #endif // CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_ACTIONS_MODEL_H_ |
| OLD | NEW |