autofill_popup_view.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// Copyright (c) 2012 The Chromium Authors. All rights reserved. 230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// Use of this source code is governed by a BSD-style license that can be 330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// found in the LICENSE file. 430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#ifndef CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_ 630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#define CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_ 730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#include "ui/gfx/native_widget_types.h" 930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 1030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace gfx { 1130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass Rect; 1230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 1330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 1430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace ui { 1530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass KeyEvent; 1630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} 1730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 1830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunnamespace autofill { 1930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 2030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass AutofillPopupController; 2130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 2230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// The interface for creating and controlling a platform-dependent 2330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun// AutofillPopupView. 2430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurunclass AutofillPopupView { 2530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun public: 2630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // The size of the border around the entire results popup, in pixels. 2730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kBorderThickness = 1; 2830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 2930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // The minimum amount of padding between the Autofill name and subtext, 3030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // in pixels. 3130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const size_t kNamePadding = 15; 3230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 3330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // The amount of padding between icons in pixels. 3430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kIconPadding = 5; 3530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 3630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // The amount of padding at the end of the popup in pixels. 3730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kEndPadding = 3; 3830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 3930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Height of the delete icon in pixels. 4030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kDeleteIconHeight = 16; 4130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 4230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Width of the delete icon in pixels. 4330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kDeleteIconWidth = 16; 4430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 4530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Height of the Autofill icons in pixels. 4630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kAutofillIconHeight = 16; 4730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 4830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Width of the Autofill icons in pixels. 4930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static const int kAutofillIconWidth = 25; 5030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 5130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Displays the Autofill popup and fills it in with data from the controller. 5230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun virtual void Show() = 0; 5330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 5430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Hides the popup from view. This will cause the popup to be deleted. 5530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // TODO(csharp): Make Hide a pure virtual function again, once hide_call_ is 5630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // removed. 5730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun virtual void Hide(); 5830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 5930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Invalidates the given row and redraw it. 6030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun virtual void InvalidateRow(size_t row) = 0; 6130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 6230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Refreshes the position of the popup. 6330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun virtual void UpdateBoundsAndRedrawPopup() = 0; 6430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 6530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Factory function for creating the view. 6630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun static AutofillPopupView* Create(AutofillPopupController* controller); 6730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 6830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun protected: 6930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun AutofillPopupView(); 7030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun virtual ~AutofillPopupView(); 7130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 7230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun private: 7330d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // Used to check that the hide function was called, to check that the class 7430d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // is only destroyed through the Hide function. Remove after Dev channel 7530d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun // release. 7630d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun bool hide_called_; 7730d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun}; 7830d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 7930d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun} // namespace autofill 8030d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun 8130d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun#endif // CHROME_BROWSER_UI_AUTOFILL_AUTOFILL_POPUP_VIEW_H_ 8230d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cdSelim Gurun