blob: b3c4c2cd6d768efb6ab4b97456e670ccfeadef10 [file] [log] [blame]
// Copyright (c) 2012 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.
#include <string>
#include <vector>
#include "base/callback_forward.h"
#include "base/files/file_path.h"
#include "base/strings/string16.h"
#include "base/time/time.h"
#include "ui/app_list/app_list_export.h"
namespace base {
class FilePath;
namespace gfx {
class ImageSkia;
class Size;
#if defined(TOOLKIT_VIEWS)
namespace views {
class View;
namespace app_list {
class AppListModel;
class AppListViewDelegateObserver;
class SearchResult;
class SpeechUIModel;
class APP_LIST_EXPORT AppListViewDelegate {
// A user of the app list.
struct APP_LIST_EXPORT User {
User(const User& other);
// Whether or not this user is the current user of the app list.
bool active;
// The name of this user.
base::string16 name;
// The email address of this user.
base::string16 email;
// The path to this user's profile directory.
base::FilePath profile_path;
typedef std::vector<User> Users;
virtual ~AppListViewDelegate() {}
// Whether to force the use of a native desktop widget when the app list
// window is first created.
virtual bool ForceNativeDesktop() const = 0;
// Sets the delegate to use the profile at |profile_path|. This is currently
// only used by non-Ash Windows.
virtual void SetProfileByPath(const base::FilePath& profile_path) = 0;
// Gets the model associated with the view delegate. The model may be owned
// by the delegate, or owned elsewhere (e.g. a profile keyed service).
virtual AppListModel* GetModel() = 0;
// Gets the SpeechUIModel for the app list. Owned by the AppListViewDelegate.
virtual SpeechUIModel* GetSpeechUI() = 0;
// Gets a path to a shortcut for the given app. Returns asynchronously as the
// shortcut may not exist yet.
virtual void GetShortcutPathForApp(
const std::string& app_id,
const base::Callback<void(const base::FilePath&)>& callback) = 0;
// Invoked to start a new search. Delegate collects query input from
// SearchBoxModel and populates SearchResults. Both models are sub models
// of AppListModel.
virtual void StartSearch() = 0;
// Invoked to stop the current search.
virtual void StopSearch() = 0;
// Invoked to open the search result.
virtual void OpenSearchResult(SearchResult* result,
bool auto_launch,
int event_flags) = 0;
// Called to invoke a custom action on |result|. |action_index| corresponds
// to the index of an icon in |result.action_icons()|.
virtual void InvokeSearchResultAction(SearchResult* result,
int action_index,
int event_flags) = 0;
// Gets the timeout for auto-launching the first search result, or 0 if the
// auto-launch should not happen for the current search session.
virtual base::TimeDelta GetAutoLaunchTimeout() = 0;
// Invoked when the auto-launch is canceled by the user action.
virtual void AutoLaunchCanceled() = 0;
// Invoked when the app list UI is created.
virtual void ViewInitialized() = 0;
// Invoked to dismiss app list. This may leave the view open but hidden from
// the user.
virtual void Dismiss() = 0;
// Invoked when the app list is closing.
virtual void ViewClosing() = 0;
// Open the settings UI.
virtual void OpenSettings() = 0;
// Open the help UI.
virtual void OpenHelp() = 0;
// Open the feedback UI.
virtual void OpenFeedback() = 0;
// Invoked to toggle the status of speech recognition.
virtual void StartSpeechRecognition() = 0;
virtual void StopSpeechRecognition() = 0;
// Shows the app list for the profile specified by |profile_path|.
virtual void ShowForProfileByPath(const base::FilePath& profile_path) = 0;
#if defined(TOOLKIT_VIEWS)
// Creates the web view for the start page. The caller takes the ownership of
// the returned view.
virtual views::View* CreateStartPageWebView(const gfx::Size& size) = 0;
// Creates the web views for the user-specified custom pages. The caller takes
// ownership of the returned views.
virtual std::vector<views::View*> CreateCustomPageWebViews(
const gfx::Size& size) = 0;
// Invoked when the custom launcher page's animation changes.
virtual void CustomLauncherPageAnimationChanged(double progress) = 0;
// Invoked when the custom launcher page's subpage should be popped.
virtual void CustomLauncherPagePopSubpage() = 0;
// Returns true if the delegate supports speech recognition.
virtual bool IsSpeechRecognitionEnabled() = 0;
// Returns the list of users (for AppListMenu).
virtual const Users& GetUsers() const = 0;
// Returns true if the app list should be centered and in landscape mode.
virtual bool ShouldCenterWindow() const = 0;
// Adds/removes an observer for profile changes.
virtual void AddObserver(AppListViewDelegateObserver* observer) {}
virtual void RemoveObserver(AppListViewDelegateObserver* observer) {}
#if !defined(OS_CHROMEOS)
// Methods to retrieve properties of the message displayed on the app launcher
// above the apps grid.
virtual base::string16 GetMessageTitle() const;
// Returns the message text (with the placeholder symbol removed).
// |message_break| is set to the index where the placeholder was in the
// string.
virtual base::string16 GetMessageText(size_t* message_break) const;
virtual base::string16 GetAppsShortcutName() const;
virtual base::string16 GetLearnMoreText() const;
virtual base::string16 GetLearnMoreLink() const;
virtual gfx::ImageSkia* GetAppsIcon() const;
virtual void OpenLearnMoreLink();
} // namespace app_list