blob: eeb196a35bbf83da30e3af38276c52f19abc94d7 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_POPUP_MENU_MEDIATOR_H_
#define IOS_CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_POPUP_MENU_MEDIATOR_H_
#import <Foundation/Foundation.h>
namespace translate {
class TranslateInfoBarDelegate;
}
@class LanguageSelectionContext;
@protocol LanguageSelectionHandler;
@protocol PopupMenuConsumer;
@protocol TranslateNotificationHandler;
@protocol TranslateOptionSelectionHandler;
class WebStateList;
// Translate popup menu types.
typedef NS_ENUM(NSInteger, TranslatePopupMenuType) {
TranslatePopupMenuTypeLanguageSelection,
TranslatePopupMenuTypeTranslateOptionSelection,
};
// Mediator object to configure and provide data for the translate infobar's
// language selection and translate option popup menus.
@interface TranslatePopupMenuMediator : NSObject
// |selectionHandler| presents and dismisses the language selection UI as well
// as the translate option selection UI. |notificationHandler| presents and
// dismisses translate related notification UI.
- (instancetype)
initWithSelectionHandler:
(id<LanguageSelectionHandler, TranslateOptionSelectionHandler>)
selectionHandler
notificationHandler:
(id<TranslateNotificationHandler>)notificationHandler
NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
// Disconnects the mediator.
- (void)disconnect;
// Type of the translate popup menu.
@property(nonatomic, assign) TranslatePopupMenuType type;
// The WebStateList that this mediator observes.
@property(nonatomic, assign) WebStateList* webStateList;
// Provides a list of available languages as well as the current source and
// target languages.
@property(nonatomic, assign)
const translate::TranslateInfoBarDelegate* infobarDelegate;
// Index of the language unavailable for selection depending on if the language
// selection UI is being populated for the source or the target language.
@property(nonatomic, assign) NSUInteger unavailableLanguageIndex;
// The consumer to be configured with this mediator.
@property(nonatomic, weak) id<PopupMenuConsumer> consumer;
@end
#endif // IOS_CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_POPUP_MENU_MEDIATOR_H_