/chromium/chrome/browser/ui/views/task_manager_view.h
https://github.com/ric2b/Vivaldi-browser · C Header · 130 lines · 77 code · 32 blank · 21 comment · 0 complexity · 5f0de478a86ceb8c5ec634830b6b0129 MD5 · raw file
- // Copyright 2015 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.
- #ifndef CHROME_BROWSER_UI_VIEWS_TASK_MANAGER_VIEW_H_
- #define CHROME_BROWSER_UI_VIEWS_TASK_MANAGER_VIEW_H_
- #include <vector>
- #include "base/macros.h"
- #include "chrome/browser/ui/task_manager/task_manager_table_model.h"
- #include "ui/base/models/simple_menu_model.h"
- #include "ui/base/models/table_model.h"
- #include "ui/views/context_menu_controller.h"
- #include "ui/views/controls/menu/menu_runner.h"
- #include "ui/views/controls/table/table_grouper.h"
- #include "ui/views/controls/table/table_view_observer.h"
- #include "ui/views/metadata/metadata_header_macros.h"
- #include "ui/views/window/dialog_delegate.h"
- class Browser;
- namespace views {
- class TableView;
- class View;
- } // namespace views
- namespace task_manager {
- // The new task manager UI container.
- class TaskManagerView : public TableViewDelegate,
- public views::DialogDelegateView,
- public views::TableGrouper,
- public views::TableViewObserver,
- public views::ContextMenuController,
- public ui::SimpleMenuModel::Delegate {
- public:
- METADATA_HEADER(TaskManagerView);
- TaskManagerView(const TaskManagerView&) = delete;
- TaskManagerView& operator=(const TaskManagerView&) = delete;
- ~TaskManagerView() override;
- // Shows the Task Manager window, or re-activates an existing one.
- static task_manager::TaskManagerTableModel* Show(Browser* browser);
- // Hides the Task Manager if it is showing.
- static void Hide();
- // task_manager::TableViewDelegate:
- bool IsColumnVisible(int column_id) const override;
- void SetColumnVisibility(int column_id, bool new_visibility) override;
- bool IsTableSorted() const override;
- TableSortDescriptor GetSortDescriptor() const override;
- void SetSortDescriptor(const TableSortDescriptor& descriptor) override;
- // views::View:
- gfx::Size CalculatePreferredSize() const override;
- bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
- // views::DialogDelegateView:
- views::View* GetInitiallyFocusedView() override;
- bool ExecuteWindowsCommand(int command_id) override;
- gfx::ImageSkia GetWindowIcon() override;
- std::string GetWindowName() const override;
- bool Accept() override;
- bool IsDialogButtonEnabled(ui::DialogButton button) const override;
- void WindowClosing() override;
- // views::TableGrouper:
- void GetGroupRange(int model_index, views::GroupRange* range) override;
- // views::TableViewObserver:
- void OnSelectionChanged() override;
- void OnDoubleClick() override;
- void OnKeyDown(ui::KeyboardCode keycode) override;
- // views::ContextMenuController:
- void ShowContextMenuForViewImpl(views::View* source,
- const gfx::Point& point,
- ui::MenuSourceType source_type) override;
- // ui::SimpleMenuModel::Delegate:
- bool IsCommandIdChecked(int id) const override;
- bool IsCommandIdEnabled(int id) const override;
- void ExecuteCommand(int id, int event_flags) override;
- void MenuClosed(ui::SimpleMenuModel* source) override;
- private:
- friend class TaskManagerViewTest;
- TaskManagerView();
- static TaskManagerView* GetInstanceForTests();
- // Creates the child controls.
- void Init();
- // Initializes the state of the always-on-top setting as the window is shown.
- void InitAlwaysOnTopState();
- // Activates the tab associated with the selected row.
- void ActivateSelectedTab();
- // Selects the active tab in the specified browser window.
- void SelectTaskOfActiveTab(Browser* browser);
- // Restores saved "always on top" state from a previous session.
- void RetrieveSavedAlwaysOnTopState();
- std::unique_ptr<TaskManagerTableModel> table_model_;
- std::unique_ptr<ui::SimpleMenuModel> menu_model_;
- std::unique_ptr<views::MenuRunner> menu_runner_;
- // We need to own the text of the menu, the Windows API does not copy it.
- std::u16string always_on_top_menu_text_;
- views::TableView* tab_table_;
- views::View* tab_table_parent_;
- // all possible columns, not necessarily visible
- std::vector<ui::TableColumn> columns_;
- // True when the Task Manager window should be shown on top of other windows.
- bool is_always_on_top_;
- };
- } // namespace task_manager
- #endif // CHROME_BROWSER_UI_VIEWS_TASK_MANAGER_VIEW_H_