Index: chrome/browser/ui/views/new_task_manager_view.h |
diff --git a/chrome/browser/ui/views/new_task_manager_view.h b/chrome/browser/ui/views/new_task_manager_view.h |
index 2d4d03884030377fc9ba756eb30c3e3956af58c8..2291d8af02e06293993967e8a0d560c02d20c6e4 100644 |
--- a/chrome/browser/ui/views/new_task_manager_view.h |
+++ b/chrome/browser/ui/views/new_task_manager_view.h |
@@ -26,6 +26,44 @@ class View; |
namespace task_management { |
+// A collection of data to be used in the construction of a task manager table |
+// column. |
+struct TableColumnData { |
+ // The generated ID of the column. These can change from one build to another. |
+ // Their values are controlled by the generation from generated_resources.grd. |
+ int id; |
+ |
+ // The alignment of the text displayed in this column. |
+ ui::TableColumn::Alignment align; |
+ |
+ // |width| and |percent| used to define the size of the column. See |
+ // ui::TableColumn::width and ui::TableColumn::percent for details. |
+ int width; |
+ float percent; |
+ |
+ // Is the column sortable. |
+ bool sortable; |
+ |
+ // Is the initial sort order ascending? |
+ bool initial_sort_is_ascending; |
+ |
+ // The default visibility of this column at startup of the table if no |
+ // visibility is stored for it in the prefs. |
+ bool default_visibility; |
+}; |
+ |
+// The task manager table columns and their properties. |
+extern const TableColumnData kColumns[]; |
+extern const size_t kColumnsSize; |
+ |
+// Session Restore Keys. |
+extern const char kSortColumnIdKey[]; |
+extern const char kSortIsAscendingKey[]; |
+ |
+// Returns the |column_id| as a string value to be used as keys in the user |
+// preferences. |
+std::string GetColumnIdAsString(int column_id); |
+ |
// The new task manager UI container. |
class NewTaskManagerView |
: public views::ButtonListener, |
@@ -85,10 +123,13 @@ class NewTaskManagerView |
void ExecuteCommand(int id, int event_flags) override; |
private: |
+ friend class NewTaskManagerViewTest; |
class TableModel; |
explicit NewTaskManagerView(chrome::HostDesktopType desktop_type); |
+ static NewTaskManagerView* GetInstanceForTests(); |
+ |
// Creates the child controls. |
void Init(); |
@@ -101,10 +142,26 @@ class NewTaskManagerView |
// Restores saved "always on top" state from a previous session. |
void RetriveSavedAlwaysOnTopState(); |
+ // Restores the saved columns settings from a previous session into |
+ // |columns_settings_| and updates the table view. |
+ void RetrieveSavedColumnsSettingsAndUpdateTable(); |
+ |
+ // Stores the current values in |column_settings_| to the user prefs so that |
+ // it can be restored later next time the task manager view is opened. |
+ void StoreColumnsSettings(); |
+ |
+ void ToggleColumnVisibility(int column_id); |
+ |
scoped_ptr<NewTaskManagerView::TableModel> table_model_; |
scoped_ptr<views::MenuRunner> menu_runner_; |
+ // Contains either the column settings retrieved from user preferences if it |
+ // exists, or the default column settings. |
+ // The columns settings are the visible columns and the last sorted column |
+ // and the direction of the sort. |
+ scoped_ptr<base::DictionaryValue> columns_settings_; |
+ |
// We need to own the text of the menu, the Windows API does not copy it. |
base::string16 always_on_top_menu_text_; |