| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ash/shelf/shelf_util.h" |
| |
| #include "ash/shelf/shelf_constants.h" |
| #include "ui/aura/window_property.h" |
| |
| DECLARE_WINDOW_PROPERTY_TYPE(ash::ShelfID); |
| DECLARE_WINDOW_PROPERTY_TYPE(ash::ShelfItemDetails*); |
| |
| namespace ash { |
| |
| DEFINE_WINDOW_PROPERTY_KEY(ShelfID, kShelfID, kInvalidShelfID); |
| |
| // ShelfItemDetails for kShelfItemDetaildKey is owned by the window |
| // and will be freed automatically. |
| DEFINE_OWNED_WINDOW_PROPERTY_KEY(ShelfItemDetails, |
| kShelfItemDetailsKey, |
| NULL); |
| |
| void SetShelfIDForWindow(ShelfID id, aura::Window* window) { |
| if (!window) |
| return; |
| |
| window->SetProperty(kShelfID, id); |
| } |
| |
| ShelfID GetShelfIDForWindow(const aura::Window* window) { |
| DCHECK(window); |
| return window->GetProperty(kShelfID); |
| } |
| |
| void SetShelfItemDetailsForWindow(aura::Window* window, |
| const ShelfItemDetails& details) { |
| // |item_details| is owned by |window|. |
| ShelfItemDetails* item_details = new ShelfItemDetails(details); |
| window->SetProperty(kShelfItemDetailsKey, item_details); |
| } |
| |
| void SetShelfItemDetailsForDialogWindow(aura::Window* window, |
| int image_resource_id) { |
| // |item_details| is owned by |window|. |
| ShelfItemDetails* item_details = new ShelfItemDetails; |
| item_details->type = TYPE_DIALOG; |
| item_details->image_resource_id = image_resource_id; |
| item_details->title = window->title(); |
| window->SetProperty(kShelfItemDetailsKey, item_details); |
| } |
| |
| void ClearShelfItemDetailsForWindow(aura::Window* window) { |
| window->ClearProperty(kShelfItemDetailsKey); |
| } |
| |
| const ShelfItemDetails* GetShelfItemDetailsForWindow( |
| aura::Window* window) { |
| return window->GetProperty(kShelfItemDetailsKey); |
| } |
| |
| } // namespace ash |