Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: chrome/browser/ui/webui/options2/chromeos/display_options_handler.cc

Issue 10836046: Allow offset for secondary display position in chrome://settings/display. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/options2/chromeos/display_options_handler.h" 5 #include "chrome/browser/ui/webui/options2/chromeos/display_options_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "ash/display/display_controller.h" 9 #include "ash/display/display_controller.h"
10 #include "ash/display/output_configurator_animation.h" 10 #include "ash/display/output_configurator_animation.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 // So here just uses 'Display 1' or 'Display 2' for their names. 123 // So here just uses 'Display 1' or 'Display 2' for their names.
124 // TODO(mukai,oshima): support vendor/model names and use it. 124 // TODO(mukai,oshima): support vendor/model names and use it.
125 js_display->SetString("name", base::StringPrintf( 125 js_display->SetString("name", base::StringPrintf(
126 "Display %d", static_cast<int>(i) + 1)); 126 "Display %d", static_cast<int>(i) + 1));
127 displays.Set(i, js_display); 127 displays.Set(i, js_display);
128 } 128 }
129 129
130 PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 130 PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
131 base::FundamentalValue layout( 131 base::FundamentalValue layout(
132 pref_service->GetInteger(prefs::kSecondaryDisplayLayout)); 132 pref_service->GetInteger(prefs::kSecondaryDisplayLayout));
133 base::FundamentalValue offset(
134 pref_service->GetInteger(prefs::kSecondaryDisplayOffset));
133 135
134 web_ui()->CallJavascriptFunction( 136 web_ui()->CallJavascriptFunction(
135 "options.DisplayOptions.setDisplayInfo", 137 "options.DisplayOptions.setDisplayInfo",
136 mirroring, displays, layout); 138 mirroring, displays, layout, offset);
137 } 139 }
138 140
139 void DisplayOptionsHandler::FadeOutForMirroringFinished(bool is_mirroring) { 141 void DisplayOptionsHandler::FadeOutForMirroringFinished(bool is_mirroring) {
140 // We use 'PRIMARY_ONLY' for non-mirroring state for now. 142 // We use 'PRIMARY_ONLY' for non-mirroring state for now.
141 // TODO(mukai): fix this and support multiple display modes. 143 // TODO(mukai): fix this and support multiple display modes.
142 chromeos::OutputState new_state = 144 chromeos::OutputState new_state =
143 is_mirroring ? STATE_DUAL_MIRROR : STATE_DUAL_PRIMARY_ONLY; 145 is_mirroring ? STATE_DUAL_MIRROR : STATE_DUAL_PRIMARY_ONLY;
144 ash::Shell::GetInstance()->output_configurator()->SetDisplayMode(new_state); 146 ash::Shell::GetInstance()->output_configurator()->SetDisplayMode(new_state);
145 SendDisplayInfo(); 147 SendDisplayInfo();
146 // Not necessary to start fade-in animation. OutputConfigurator will do that. 148 // Not necessary to start fade-in animation. OutputConfigurator will do that.
147 } 149 }
148 150
149 void DisplayOptionsHandler::FadeOutForDisplayLayoutFinished(int layout) { 151 void DisplayOptionsHandler::FadeOutForDisplayLayoutFinished(
152 int layout, int offset) {
150 PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 153 PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
151 pref_service->SetInteger(prefs::kSecondaryDisplayLayout, layout); 154 pref_service->SetInteger(prefs::kSecondaryDisplayLayout, layout);
155 pref_service->SetInteger(prefs::kSecondaryDisplayOffset, offset);
152 SendDisplayInfo(); 156 SendDisplayInfo();
153 ash::Shell::GetInstance()->output_configurator_animation()-> 157 ash::Shell::GetInstance()->output_configurator_animation()->
154 StartFadeInAnimation(); 158 StartFadeInAnimation();
155 } 159 }
156 160
157 void DisplayOptionsHandler::HandleDisplayInfo( 161 void DisplayOptionsHandler::HandleDisplayInfo(
158 const base::ListValue* unused_args) { 162 const base::ListValue* unused_args) {
159 SendDisplayInfo(); 163 SendDisplayInfo();
160 } 164 }
161 165
162 void DisplayOptionsHandler::HandleMirroring(const base::ListValue* args) { 166 void DisplayOptionsHandler::HandleMirroring(const base::ListValue* args) {
163 DCHECK(!args->empty()); 167 DCHECK(!args->empty());
164 bool is_mirroring = false; 168 bool is_mirroring = false;
165 args->GetBoolean(0, &is_mirroring); 169 args->GetBoolean(0, &is_mirroring);
166 ash::Shell::GetInstance()->output_configurator_animation()-> 170 ash::Shell::GetInstance()->output_configurator_animation()->
167 StartFadeOutAnimation(base::Bind( 171 StartFadeOutAnimation(base::Bind(
168 &DisplayOptionsHandler::FadeOutForMirroringFinished, 172 &DisplayOptionsHandler::FadeOutForMirroringFinished,
169 base::Unretained(this), 173 base::Unretained(this),
170 is_mirroring)); 174 is_mirroring));
171 } 175 }
172 176
173 void DisplayOptionsHandler::HandleDisplayLayout(const base::ListValue* args) { 177 void DisplayOptionsHandler::HandleDisplayLayout(const base::ListValue* args) {
174 double layout = -1; 178 double layout = -1;
175 if (!args->GetDouble(0, &layout)) { 179 double offset = -1;
180 if (!args->GetDouble(0, &layout) || !args->GetDouble(1, &offset)) {
176 LOG(ERROR) << "Invalid parameter"; 181 LOG(ERROR) << "Invalid parameter";
182 SendDisplayInfo();
177 return; 183 return;
178 } 184 }
179 DCHECK_LE(DisplayController::TOP, layout); 185 DCHECK_LE(DisplayController::TOP, layout);
180 DCHECK_GE(DisplayController::LEFT, layout); 186 DCHECK_GE(DisplayController::LEFT, layout);
181 ash::Shell::GetInstance()->output_configurator_animation()-> 187 ash::Shell::GetInstance()->output_configurator_animation()->
182 StartFadeOutAnimation(base::Bind( 188 StartFadeOutAnimation(base::Bind(
183 &DisplayOptionsHandler::FadeOutForDisplayLayoutFinished, 189 &DisplayOptionsHandler::FadeOutForDisplayLayoutFinished,
184 base::Unretained(this), 190 base::Unretained(this),
185 static_cast<int>(layout))); 191 static_cast<int>(layout),
192 static_cast<int>(offset)));
186 } 193 }
187 194
188 } // namespace options2 195 } // namespace options2
189 } // namespace chromeos 196 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options2/chromeos/display_options_handler.h ('k') | chrome/common/pref_names.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698