15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/menu/menu_config.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/layout.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/native_theme/native_theme_aura.h"
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/resources/grit/ui_resources.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/menu/menu_image_util.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace {
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(OS_CHROMEOS)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static const int kMenuCornerRadiusForAura = 2;
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#else
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochstatic const int kMenuCornerRadiusForAura = 0;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_WIN)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MenuConfig::Init(const ui::NativeTheme* theme) {
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (theme == ui::NativeThemeAura::instance())
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    InitAura(theme);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MenuConfig::InitAura(const ui::NativeTheme* theme) {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  submenu_horizontal_inset = 1;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  arrow_to_edge_padding = 20;
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  arrow_width = rb.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).Width();
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  gfx::ImageSkia check = GetMenuCheckImage(false);
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  check_height = check.height();
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  item_min_height = 29;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  separator_spacing_height = 7;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  separator_lower_height = 8;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  separator_upper_height = 8;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  label_to_arrow_padding = 20;
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  label_to_minor_text_padding = 20;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  always_use_icon_to_label_padding = true;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  align_arrow_and_shortcut = true;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  offset_context_menus = true;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  corner_radius = kMenuCornerRadiusForAura;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_WIN)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const MenuConfig& MenuConfig::instance(const ui::NativeTheme* theme) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static MenuConfig* views_instance = NULL;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!views_instance)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    views_instance = new MenuConfig(theme ?
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        theme : ui::NativeTheme::instance());
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *views_instance;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace views
63