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

Side by Side Diff: chrome/browser/gtk/options/geolocation_content_exceptions_window.cc

Issue 1539021: Geolocation exceptions window, Windows.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/gtk/options/geolocation_content_exceptions_window.h" 5 #include "chrome/browser/gtk/options/geolocation_content_exceptions_window.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/geolocation/geolocation_content_settings_map.h" 10 #include "chrome/browser/geolocation/geolocation_content_settings_map.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 136
137 std::wstring action = model_->GetText(row, IDS_EXCEPTIONS_ACTION_HEADER); 137 std::wstring action = model_->GetText(row, IDS_EXCEPTIONS_ACTION_HEADER);
138 gtk_list_store_set(list_store_, iter, COL_ACTION, 138 gtk_list_store_set(list_store_, iter, COL_ACTION,
139 WideToUTF8(action).c_str(), -1); 139 WideToUTF8(action).c_str(), -1);
140 } 140 }
141 141
142 void GeolocationContentExceptionsWindow::UpdateButtonState() { 142 void GeolocationContentExceptionsWindow::UpdateButtonState() {
143 int row_count = gtk_tree_model_iter_n_children( 143 int row_count = gtk_tree_model_iter_n_children(
144 GTK_TREE_MODEL(list_store_), NULL); 144 GTK_TREE_MODEL(list_store_), NULL);
145 145
146 gtk_widget_set_sensitive(remove_button_, CountSelectedRemovable() >= 1); 146 GeolocationContentSettingsTableModel::Rows rows;
147 GetSelectedRows(&rows);
148 gtk_widget_set_sensitive(remove_button_, model_->CanRemoveExceptions(rows));
147 gtk_widget_set_sensitive(remove_all_button_, row_count > 0); 149 gtk_widget_set_sensitive(remove_all_button_, row_count > 0);
148 } 150 }
149 151
150 void GeolocationContentExceptionsWindow::GetSelectedRemovableIndicies( 152 void GeolocationContentExceptionsWindow::GetSelectedRows(
151 std::set<int>* indicies) { 153 GeolocationContentSettingsTableModel::Rows* rows) {
152 gtk_tree::GetSelectedIndicies(treeview_selection_, indicies);
153
154 for (std::set<int>::iterator i = indicies->begin(); i != indicies->end(); ) {
155 std::set<int>::iterator prev = i;
156 ++i;
157 if (!model_->CanRemoveException(*prev))
158 indicies->erase(prev);
159 }
160 }
161
162 int GeolocationContentExceptionsWindow::CountSelectedRemovable() {
163 std::set<int> indicies; 154 std::set<int> indicies;
164 GetSelectedRemovableIndicies(&indicies); 155 gtk_tree::GetSelectedIndicies(treeview_selection_, &indicies);
165 return indicies.size(); 156 for (std::set<int>::iterator i = indicies.begin(); i != indicies.end(); ++i)
157 rows->insert(*i);
166 } 158 }
167 159
168 void GeolocationContentExceptionsWindow::Remove(GtkWidget* widget) { 160 void GeolocationContentExceptionsWindow::Remove(GtkWidget* widget) {
169 std::set<int> indicies; 161 GeolocationContentSettingsTableModel::Rows rows;
170 GetSelectedRemovableIndicies(&indicies); 162 GetSelectedRows(&rows);
171 163 model_->RemoveExceptions(rows);
172 for (std::set<int>::reverse_iterator i = indicies.rbegin();
173 i != indicies.rend(); ++i) {
174 model_->RemoveException(*i);
175 }
176
177 UpdateButtonState(); 164 UpdateButtonState();
178 } 165 }
179 166
180 void GeolocationContentExceptionsWindow::RemoveAll(GtkWidget* widget) { 167 void GeolocationContentExceptionsWindow::RemoveAll(GtkWidget* widget) {
181 model_->RemoveAll(); 168 model_->RemoveAll();
182 UpdateButtonState(); 169 UpdateButtonState();
183 } 170 }
184 171
185 void GeolocationContentExceptionsWindow::OnWindowDestroy(GtkWidget* widget) { 172 void GeolocationContentExceptionsWindow::OnWindowDestroy(GtkWidget* widget) {
186 instance = NULL; 173 instance = NULL;
187 MessageLoop::current()->DeleteSoon(FROM_HERE, this); 174 MessageLoop::current()->DeleteSoon(FROM_HERE, this);
188 } 175 }
189 176
190 void GeolocationContentExceptionsWindow::OnTreeSelectionChanged( 177 void GeolocationContentExceptionsWindow::OnTreeSelectionChanged(
191 GtkWidget* selection) { 178 GtkWidget* selection) {
192 UpdateButtonState(); 179 UpdateButtonState();
193 } 180 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698