#ifndef UI_VIEWS_LINUX_UI_LINUX_UI_H_
#define UI_VIEWS_LINUX_UI_LINUX_UI_H_
#include <string>
#include "third_party/skia/include/core/SkColor.h"
#include "ui/base/ime/linux/linux_input_method_context_factory.h"
#include "ui/events/x/text_edit_key_bindings_delegate_x11.h"
#include "ui/gfx/linux_font_delegate.h"
#include "ui/shell_dialogs/linux_shell_dialog.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/linux_ui/status_icon_linux.h"
#include "ui/views/views_export.h"
namespace gfx {
class Image;
}
namespace ui {
class NativeTheme;
}
namespace views {
class Border;
class LabelButton;
class View;
class NativeThemeChangeObserver;
class WindowButtonOrderObserver;
class VIEWS_EXPORT LinuxUI : public ui::LinuxInputMethodContextFactory,
public gfx::LinuxFontDelegate,
public ui::LinuxShellDialog,
public ui::TextEditKeyBindingsDelegateX11 {
public:
virtual ~LinuxUI() {}
static void SetInstance(LinuxUI* instance);
static LinuxUI* instance();
virtual void Initialize() = 0;
virtual gfx::Image GetThemeImageNamed(int id) const = 0;
virtual bool GetColor(int id, SkColor* color) const = 0;
virtual bool HasCustomImage(int id) const = 0;
virtual SkColor GetFocusRingColor() const = 0;
virtual SkColor GetThumbActiveColor() const = 0;
virtual SkColor GetThumbInactiveColor() const = 0;
virtual SkColor GetTrackColor() const = 0;
virtual SkColor GetActiveSelectionBgColor() const = 0;
virtual SkColor GetActiveSelectionFgColor() const = 0;
virtual SkColor GetInactiveSelectionBgColor() const = 0;
virtual SkColor GetInactiveSelectionFgColor() const = 0;
virtual double GetCursorBlinkInterval() const = 0;
virtual ui::NativeTheme* GetNativeTheme() const = 0;
virtual bool GetDefaultUsesSystemTheme() const = 0;
virtual void SetDownloadCount(int count) const = 0;
virtual void SetProgressFraction(float percentage) const = 0;
virtual bool IsStatusIconSupported() const = 0;
virtual scoped_ptr<StatusIconLinux> CreateLinuxStatusIcon(
const gfx::ImageSkia& image,
const base::string16& tool_tip) const = 0;
virtual gfx::Image GetIconForContentType(
const std::string& content_type, int size) const = 0;
virtual scoped_ptr<Border> CreateNativeBorder(
views::LabelButton* owning_button,
scoped_ptr<views::Border> border) = 0;
virtual void AddWindowButtonOrderObserver(
WindowButtonOrderObserver* observer) = 0;
virtual void RemoveWindowButtonOrderObserver(
WindowButtonOrderObserver* observer) = 0;
virtual void AddNativeThemeChangeObserver(
NativeThemeChangeObserver* observer) = 0;
virtual void RemoveNativeThemeChangeObserver(
NativeThemeChangeObserver* observer) = 0;
virtual bool UnityIsRunning() = 0;
virtual void NotifyWindowManagerStartupComplete() = 0;
};
}
#endif