1// Copyright (c) 2011 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_SPEECH_INPUT_WINDOW_CONTROLLER_H_
6#define CHROME_BROWSER_UI_COCOA_SPEECH_INPUT_WINDOW_CONTROLLER_H_
7#pragma once
8
9#import <Cocoa/Cocoa.h>
10
11#include "chrome/browser/speech/speech_input_bubble.h"
12#include "chrome/browser/ui/cocoa/base_bubble_controller.h"
13
14// Controller for the speech input bubble window. This bubble window gets
15// displayed when the user starts speech input in a html input element.
16@interface SpeechInputWindowController : BaseBubbleController {
17 @private
18  SpeechInputBubble::Delegate* delegate_;  // weak.
19  SpeechInputBubbleBase::DisplayMode displayMode_;
20
21  // References below are weak, being obtained from the nib.
22  IBOutlet NSImageView* iconImage_;
23  IBOutlet NSTextField* instructionLabel_;
24  IBOutlet NSButton* cancelButton_;
25  IBOutlet NSButton* tryAgainButton_;
26  IBOutlet NSButton* micSettingsButton_;
27}
28
29// Initialize the window. |anchoredAt| is in screen coordinates.
30- (id)initWithParentWindow:(NSWindow*)parentWindow
31                  delegate:(SpeechInputBubbleDelegate*)delegate
32                anchoredAt:(NSPoint)anchoredAt;
33
34// Handler for the cancel button.
35- (IBAction)cancel:(id)sender;
36
37// Handler for the try again button.
38- (IBAction)tryAgain:(id)sender;
39
40// Handler for the mic settings button.
41- (IBAction)micSettings:(id)sender;
42
43// Updates the UI with data related to the given display mode.
44- (void)updateLayout:(SpeechInputBubbleBase::DisplayMode)mode
45         messageText:(const string16&)messageText
46           iconImage:(NSImage*)iconImage;
47
48// Makes the speech input bubble visible on screen.
49- (void)show;
50
51// Hides the speech input bubble away from screen. This does NOT release the
52// controller and the window.
53- (void)hide;
54
55// Sets the image to be displayed in the bubble's status ImageView. A future
56// call to updateLayout may change the image.
57// TODO(satish): Clean that up and move it into the platform independent
58// SpeechInputBubbleBase class.
59- (void)setImage:(NSImage*)image;
60
61@end
62
63#endif  // CHROME_BROWSER_UI_COCOA_SPEECH_INPUT_WINDOW_CONTROLLER_H_
64