1// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_COCOA_ABOUT_WINDOW_CONTROLLER_H_
6#define CHROME_BROWSER_UI_COCOA_ABOUT_WINDOW_CONTROLLER_H_
7#pragma once
8
9#import <AppKit/AppKit.h>
10
11@class BackgroundTileView;
12class Profile;
13
14// This simple subclass of |NSTextView| just doesn't show the (text) cursor
15// (|NSTextView| displays the cursor with full keyboard accessibility enabled).
16@interface AboutLegalTextView : NSTextView
17@end
18
19// A window controller that handles the About box.
20@interface AboutWindowController : NSWindowController {
21 @private
22  IBOutlet NSTextField* version_;
23  IBOutlet BackgroundTileView* backgroundView_;
24  IBOutlet NSImageView* logoView_;
25  IBOutlet NSView* legalBlock_;
26  IBOutlet AboutLegalTextView* legalText_;
27
28  // updateBlock_ holds the update image or throbber, update text, and update
29  // button.
30  IBOutlet NSView* updateBlock_;
31
32  IBOutlet NSProgressIndicator* spinner_;
33  IBOutlet NSImageView* updateStatusIndicator_;
34  IBOutlet NSTextField* updateText_;
35  IBOutlet NSButton* updateNowButton_;
36  IBOutlet NSButton* promoteButton_;
37
38  Profile* profile_;  // Weak, probably the default profile.
39
40  // The window frame height.  During an animation, this will contain the
41  // height being animated to.
42  CGFloat windowHeight_;
43}
44
45// Initialize the controller with the given profile, but does not show it.
46// Callers still need to call showWindow: to put it on screen.
47- (id)initWithProfile:(Profile*)profile;
48
49// Trigger an update right now, as initiated by a button.
50- (IBAction)updateNow:(id)sender;
51
52// Install a system Keystone if necessary and promote the ticket to a system
53// ticket.
54- (IBAction)promoteUpdater:(id)sender;
55
56@end  // @interface AboutWindowController
57
58@interface AboutWindowController(JustForTesting)
59
60- (NSTextView*)legalText;
61- (NSButton*)updateButton;
62- (NSTextField*)updateText;
63
64// Returns an NSAttributedString that contains locale-specific legal text.
65+ (NSAttributedString*)legalTextBlock;
66
67@end  // @interface AboutWindowController(JustForTesting)
68
69#endif  // CHROME_BROWSER_UI_COCOA_ABOUT_WINDOW_CONTROLLER_H_
70