blob: a8e04cf1764d67c3b538d237de64cfae0c08d1ff [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_QUICK_INSERT_QUICK_INSERT_SEARCH_RESULT_H_
#define ASH_QUICK_INSERT_QUICK_INSERT_SEARCH_RESULT_H_
#include <cstddef>
#include <optional>
#include <string>
#include <string_view>
#include <variant>
#include <vector>
#include "ash/ash_export.h"
#include "ash/quick_insert/quick_insert_category.h"
#include "base/files/file_path.h"
#include "base/unguessable_token.h"
#include "ui/base/models/image_model.h"
#include "url/gurl.h"
namespace chromeos::editor_menu {
enum class PresetQueryCategory;
}
namespace ash {
struct ASH_EXPORT QuickInsertTextResult {
enum class Source {
kUnknown, // This should only be used for tests.
kDate,
kMath,
kCaseTransform,
kOmnibox,
};
std::u16string primary_text;
std::u16string secondary_text;
ui::ImageModel icon;
Source source;
explicit QuickInsertTextResult(std::u16string_view text,
QuickInsertTextResult::Source source =
QuickInsertTextResult::Source::kUnknown);
explicit QuickInsertTextResult(std::u16string_view primary_text,
std::u16string_view secondary_text,
ui::ImageModel icon,
Source source);
QuickInsertTextResult(const QuickInsertTextResult&);
QuickInsertTextResult& operator=(const QuickInsertTextResult&);
QuickInsertTextResult(QuickInsertTextResult&&);
QuickInsertTextResult& operator=(QuickInsertTextResult&&);
~QuickInsertTextResult();
bool operator==(const QuickInsertTextResult&) const;
};
struct ASH_EXPORT QuickInsertSearchRequestResult {
std::u16string primary_text;
std::u16string secondary_text;
ui::ImageModel icon;
explicit QuickInsertSearchRequestResult(std::u16string_view primary_text,
std::u16string_view secondary_text,
ui::ImageModel icon);
QuickInsertSearchRequestResult(const QuickInsertSearchRequestResult&);
QuickInsertSearchRequestResult& operator=(
const QuickInsertSearchRequestResult&);
QuickInsertSearchRequestResult(QuickInsertSearchRequestResult&&);
QuickInsertSearchRequestResult& operator=(QuickInsertSearchRequestResult&&);
~QuickInsertSearchRequestResult();
bool operator==(const QuickInsertSearchRequestResult&) const;
};
struct ASH_EXPORT QuickInsertEmojiResult {
enum class Type { kEmoji, kSymbol, kEmoticon };
Type type;
std::u16string text;
std::u16string name;
static QuickInsertEmojiResult Emoji(std::u16string_view text,
std::u16string name = u"");
static QuickInsertEmojiResult Symbol(std::u16string_view text,
std::u16string name = u"");
static QuickInsertEmojiResult Emoticon(std::u16string_view text,
std::u16string name = u"");
explicit QuickInsertEmojiResult(Type type,
std::u16string_view text,
std::u16string name);
QuickInsertEmojiResult(const QuickInsertEmojiResult&);
QuickInsertEmojiResult& operator=(const QuickInsertEmojiResult&);
QuickInsertEmojiResult(QuickInsertEmojiResult&&);
QuickInsertEmojiResult& operator=(QuickInsertEmojiResult&&);
~QuickInsertEmojiResult();
bool operator==(const QuickInsertEmojiResult&) const;
};
struct ASH_EXPORT QuickInsertGifResult {
QuickInsertGifResult(const GURL& preview_url,
const GURL& preview_image_url,
const gfx::Size& preview_dimensions,
const GURL& full_url,
const gfx::Size& full_dimensions,
std::u16string content_description,
size_t rank = 0);
QuickInsertGifResult(const QuickInsertGifResult&);
QuickInsertGifResult& operator=(const QuickInsertGifResult&);
QuickInsertGifResult(QuickInsertGifResult&&);
QuickInsertGifResult& operator=(QuickInsertGifResult&&);
~QuickInsertGifResult();
// A url to an animated preview gif media source.
GURL preview_url;
// A url to an unanimated preview image of the gif media source.
GURL preview_image_url;
// Width and height of the GIF at `preview_url`.
gfx::Size preview_dimensions;
// A url to a full-sized gif media source.
GURL full_url;
// Width and height of the GIF at `full_url`.
gfx::Size full_dimensions;
// A textual description of the content, primarily used for accessibility
// features.
std::u16string content_description;
// The index of this result within the results, starting from 0.
size_t rank;
bool operator==(const QuickInsertGifResult&) const;
};
struct ASH_EXPORT QuickInsertClipboardResult {
enum class DisplayFormat {
kFile,
kText,
kImage,
kHtml,
};
// Unique ID that specifies which item in the clipboard this refers to.
base::UnguessableToken item_id;
DisplayFormat display_format;
// If this is 1, `display_text` should be the filename of the file.
size_t file_count;
std::u16string display_text;
std::optional<ui::ImageModel> display_image;
bool is_recent;
explicit QuickInsertClipboardResult(
base::UnguessableToken item_id,
DisplayFormat display_format,
size_t file_count,
std::u16string display_text,
std::optional<ui::ImageModel> display_image,
bool is_recent);
QuickInsertClipboardResult(const QuickInsertClipboardResult&);
QuickInsertClipboardResult& operator=(const QuickInsertClipboardResult&);
QuickInsertClipboardResult(QuickInsertClipboardResult&&);
QuickInsertClipboardResult& operator=(QuickInsertClipboardResult&&);
~QuickInsertClipboardResult();
bool operator==(const QuickInsertClipboardResult&) const;
};
struct ASH_EXPORT QuickInsertBrowsingHistoryResult {
GURL url;
std::u16string title;
ui::ImageModel icon;
bool best_match;
explicit QuickInsertBrowsingHistoryResult(GURL url,
std::u16string title,
ui::ImageModel icon,
bool best_match = false);
QuickInsertBrowsingHistoryResult(const QuickInsertBrowsingHistoryResult&);
QuickInsertBrowsingHistoryResult& operator=(
const QuickInsertBrowsingHistoryResult&);
QuickInsertBrowsingHistoryResult(QuickInsertBrowsingHistoryResult&&);
QuickInsertBrowsingHistoryResult& operator=(
QuickInsertBrowsingHistoryResult&&);
~QuickInsertBrowsingHistoryResult();
bool operator==(const QuickInsertBrowsingHistoryResult&) const;
};
struct ASH_EXPORT QuickInsertLocalFileResult {
std::u16string title;
base::FilePath file_path;
bool best_match;
explicit QuickInsertLocalFileResult(std::u16string title,
base::FilePath file_path,
bool best_match = false);
QuickInsertLocalFileResult(const QuickInsertLocalFileResult&);
QuickInsertLocalFileResult& operator=(const QuickInsertLocalFileResult&);
QuickInsertLocalFileResult(QuickInsertLocalFileResult&&);
QuickInsertLocalFileResult& operator=(QuickInsertLocalFileResult&&);
~QuickInsertLocalFileResult();
bool operator==(const QuickInsertLocalFileResult&) const;
};
struct ASH_EXPORT QuickInsertDriveFileResult {
std::optional<std::string> id;
std::u16string title;
GURL url;
base::FilePath file_path;
bool best_match;
explicit QuickInsertDriveFileResult(std::optional<std::string> id,
std::u16string title,
GURL url,
base::FilePath file_path,
bool best_match = false);
QuickInsertDriveFileResult(const QuickInsertDriveFileResult&);
QuickInsertDriveFileResult& operator=(const QuickInsertDriveFileResult&);
QuickInsertDriveFileResult(QuickInsertDriveFileResult&&);
QuickInsertDriveFileResult& operator=(QuickInsertDriveFileResult&&);
~QuickInsertDriveFileResult();
bool operator==(const QuickInsertDriveFileResult&) const;
};
struct ASH_EXPORT QuickInsertCategoryResult {
QuickInsertCategory category;
explicit QuickInsertCategoryResult(QuickInsertCategory category);
QuickInsertCategoryResult(const QuickInsertCategoryResult&);
QuickInsertCategoryResult& operator=(const QuickInsertCategoryResult&);
QuickInsertCategoryResult(QuickInsertCategoryResult&&);
QuickInsertCategoryResult& operator=(QuickInsertCategoryResult&&);
~QuickInsertCategoryResult();
bool operator==(const QuickInsertCategoryResult&) const;
};
struct ASH_EXPORT QuickInsertEditorResult {
enum class Mode { kWrite, kRewrite };
Mode mode;
std::u16string display_name;
std::optional<chromeos::editor_menu::PresetQueryCategory> category;
std::optional<std::string> preset_query_id;
QuickInsertEditorResult(
Mode mode,
std::u16string display_name,
std::optional<chromeos::editor_menu::PresetQueryCategory> category,
std::optional<std::string> preset_query_id);
QuickInsertEditorResult(const QuickInsertEditorResult&);
QuickInsertEditorResult& operator=(const QuickInsertEditorResult&);
QuickInsertEditorResult(QuickInsertEditorResult&&);
QuickInsertEditorResult& operator=(QuickInsertEditorResult&&);
~QuickInsertEditorResult();
bool operator==(const QuickInsertEditorResult&) const;
};
struct ASH_EXPORT QuickInsertLobsterResult {
enum class Mode { kNoSelection, kWithSelection };
Mode mode;
std::u16string display_name;
QuickInsertLobsterResult(Mode mode, std::u16string display_name);
QuickInsertLobsterResult(const QuickInsertLobsterResult&);
QuickInsertLobsterResult& operator=(const QuickInsertLobsterResult&);
QuickInsertLobsterResult(QuickInsertLobsterResult&&);
QuickInsertLobsterResult& operator=(QuickInsertLobsterResult&&);
~QuickInsertLobsterResult();
bool operator==(const QuickInsertLobsterResult&) const;
};
struct ASH_EXPORT QuickInsertNewWindowResult {
enum Type {
kDoc,
kSheet,
kSlide,
kChrome,
};
Type type;
explicit QuickInsertNewWindowResult(Type type);
QuickInsertNewWindowResult(const QuickInsertNewWindowResult&);
QuickInsertNewWindowResult& operator=(const QuickInsertNewWindowResult&);
QuickInsertNewWindowResult(QuickInsertNewWindowResult&&);
QuickInsertNewWindowResult& operator=(QuickInsertNewWindowResult&&);
~QuickInsertNewWindowResult();
bool operator==(const QuickInsertNewWindowResult&) const;
};
struct ASH_EXPORT QuickInsertCapsLockResult {
enum class Shortcut {
kAltLauncher,
kAltSearch,
kFnQuickInsert,
};
bool enabled;
Shortcut shortcut;
explicit QuickInsertCapsLockResult(bool enabled, Shortcut shortcut);
QuickInsertCapsLockResult(const QuickInsertCapsLockResult&);
QuickInsertCapsLockResult& operator=(const QuickInsertCapsLockResult&);
QuickInsertCapsLockResult(QuickInsertCapsLockResult&&);
QuickInsertCapsLockResult& operator=(QuickInsertCapsLockResult&&);
~QuickInsertCapsLockResult();
bool operator==(const QuickInsertCapsLockResult&) const;
};
struct ASH_EXPORT QuickInsertCaseTransformResult {
enum Type {
kUpperCase,
kLowerCase,
kTitleCase,
};
Type type;
explicit QuickInsertCaseTransformResult(Type type);
QuickInsertCaseTransformResult(const QuickInsertCaseTransformResult&);
QuickInsertCaseTransformResult& operator=(
const QuickInsertCaseTransformResult&);
QuickInsertCaseTransformResult(QuickInsertCaseTransformResult&&);
QuickInsertCaseTransformResult& operator=(QuickInsertCaseTransformResult&&);
~QuickInsertCaseTransformResult();
bool operator==(const QuickInsertCaseTransformResult&) const;
};
using QuickInsertSearchResult = std::variant<QuickInsertTextResult,
QuickInsertSearchRequestResult,
QuickInsertEmojiResult,
QuickInsertGifResult,
QuickInsertClipboardResult,
QuickInsertBrowsingHistoryResult,
QuickInsertLocalFileResult,
QuickInsertDriveFileResult,
QuickInsertCategoryResult,
QuickInsertEditorResult,
QuickInsertLobsterResult,
QuickInsertNewWindowResult,
QuickInsertCapsLockResult,
QuickInsertCaseTransformResult>;
} // namespace ash
#endif // ASH_QUICK_INSERT_QUICK_INSERT_SEARCH_RESULT_H_