Home | History | Annotate | Download | only in views
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_
      6 #define CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/compiler_specific.h"
     10 #include "build/build_config.h"
     11 #include "ui/accessibility/ax_enums.h"
     12 #include "ui/views/views_delegate.h"
     13 
     14 class ChromeViewsDelegate : public views::ViewsDelegate {
     15  public:
     16   ChromeViewsDelegate();
     17   virtual ~ChromeViewsDelegate();
     18 
     19   // views::ViewsDelegate:
     20   virtual void SaveWindowPlacement(const views::Widget* window,
     21                                    const std::string& window_name,
     22                                    const gfx::Rect& bounds,
     23                                    ui::WindowShowState show_state) OVERRIDE;
     24   virtual bool GetSavedWindowPlacement(
     25       const views::Widget* widget,
     26       const std::string& window_name,
     27       gfx::Rect* bounds,
     28       ui::WindowShowState* show_state) const OVERRIDE;
     29   virtual void NotifyAccessibilityEvent(
     30       views::View* view, ui::AXEvent event_type) OVERRIDE;
     31   virtual void NotifyMenuItemFocused(const base::string16& menu_name,
     32                                      const base::string16& menu_item_name,
     33                                      int item_index,
     34                                      int item_count,
     35                                      bool has_submenu) OVERRIDE;
     36 #if defined(OS_WIN)
     37   virtual HICON GetDefaultWindowIcon() const OVERRIDE;
     38   virtual bool IsWindowInMetro(gfx::NativeWindow window) const OVERRIDE;
     39 #elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
     40   virtual gfx::ImageSkia* GetDefaultWindowIcon() const OVERRIDE;
     41 #endif
     42 
     43 #if defined(USE_ASH)
     44   virtual views::NonClientFrameView* CreateDefaultNonClientFrameView(
     45       views::Widget* widget) OVERRIDE;
     46 #endif
     47   virtual void AddRef() OVERRIDE;
     48   virtual void ReleaseRef() OVERRIDE;
     49   virtual void OnBeforeWidgetInit(
     50       views::Widget::InitParams* params,
     51       views::internal::NativeWidgetDelegate* delegate) OVERRIDE;
     52 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
     53   virtual bool WindowManagerProvidesTitleBar(bool maximized) OVERRIDE;
     54 #endif
     55 #if defined(USE_AURA)
     56   virtual ui::ContextFactory* GetContextFactory() OVERRIDE;
     57 #endif
     58 #if defined(OS_WIN)
     59   virtual int GetAppbarAutohideEdges(HMONITOR monitor,
     60                                      const base::Closure& callback) OVERRIDE;
     61 #endif
     62 
     63  private:
     64 #if defined(OS_WIN)
     65   typedef std::map<HMONITOR, int> AppbarAutohideEdgeMap;
     66 
     67   // Callback on main thread with the edges. |returned_edges| is the value that
     68   // was returned from the call to GetAutohideEdges() that initiated the lookup.
     69   void OnGotAppbarAutohideEdges(const base::Closure& callback,
     70                                 HMONITOR monitor,
     71                                 int returned_edges,
     72                                 int edges);
     73 #endif
     74 
     75   // Function to retrieve default opacity value mainly based on platform
     76   // and desktop context.
     77   views::Widget::InitParams::WindowOpacity GetOpacityForInitParams(
     78       const views::Widget::InitParams& params);
     79 
     80 #if defined(OS_WIN)
     81   AppbarAutohideEdgeMap appbar_autohide_edge_map_;
     82   // If true we're in the process of notifying a callback from
     83   // GetAutohideEdges().start a new query.
     84   bool in_autohide_edges_callback_;
     85 
     86   base::WeakPtrFactory<ChromeViewsDelegate> weak_factory_;
     87 #endif
     88 
     89   DISALLOW_COPY_AND_ASSIGN(ChromeViewsDelegate);
     90 };
     91 
     92 #endif  // CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_
     93