diff --git a/Modules/Panels/Launcher/Providers/EmojiProvider.qml b/Modules/Panels/Launcher/Providers/EmojiProvider.qml index 949b06edc..4a6e572b3 100644 --- a/Modules/Panels/Launcher/Providers/EmojiProvider.qml +++ b/Modules/Panels/Launcher/Providers/EmojiProvider.qml @@ -23,22 +23,24 @@ Item { readonly property string emptyBrowsingMessage: selectedCategory === "recent" ? I18n.tr("launcher.providers.emoji-no-recent") : "" property var categoryIcons: ({ - "recent": "clock", - "people": "user", - "animals": "paw", - "nature": "leaf", - "food": "apple", - "activity": "run", - "travel": "plane", - "objects": "home", - "symbols": "star", - "flags": "flag" - }) + "all": "apps", + "recent": "clock", + "people": "user", + "animals": "paw", + "nature": "leaf", + "food": "apple", + "activity": "run", + "travel": "plane", + "objects": "home", + "symbols": "star", + "flags": "flag" + }) - property var categories: ["recent", "people", "animals", "nature", "food", "activity", "travel", "objects", "symbols", "flags"] + property var categories: ["all", "recent", "people", "animals", "nature", "food", "activity", "travel", "objects", "symbols", "flags"] function getCategoryName(category) { const names = { + "all": I18n.tr("launcher.categories.emoji-all"), "recent": I18n.tr("launcher.categories.emoji-recent"), "people": I18n.tr("launcher.categories.emoji-people"), "animals": I18n.tr("launcher.categories.emoji-animals"), @@ -88,17 +90,17 @@ Item { // Return available commands when user types ">" function commands() { return [ - { - "name": ">emoji", - "description": I18n.tr("launcher.providers.emoji-search-description"), - "icon": iconMode === "tabler" ? "mood-smile" : "face-smile", - "isTablerIcon": true, - "isImage": false, - "onActivate": function () { - launcher.setSearchText(">emoji "); - } - } - ]; + { + "name": ">emoji", + "description": I18n.tr("launcher.providers.emoji-search-description"), + "icon": iconMode === "tabler" ? "mood-smile" : "face-smile", + "isTablerIcon": true, + "isImage": false, + "onActivate": function () { + launcher.setSearchText(">emoji "); + } + } + ]; } // Get search results @@ -109,27 +111,24 @@ Item { if (!EmojiService.loaded) { return [ - { - "name": I18n.tr("launcher.providers.emoji-loading"), - "description": I18n.tr("launcher.providers.emoji-loading-description"), - "icon": iconMode === "tabler" ? "refresh" : "view-refresh", - "isTablerIcon": true, - "isImage": false, - "onActivate": function () {} - } - ]; + { + "name": I18n.tr("launcher.providers.emoji-loading"), + "description": I18n.tr("launcher.providers.emoji-loading-description"), + "icon": iconMode === "tabler" ? "refresh" : "view-refresh", + "isTablerIcon": true, + "isImage": false, + "onActivate": function () {} + } + ]; } var query = searchText.slice(6).trim(); + var emojis = []; - if (query === "") { - showsCategories = true; - var emojis = EmojiService.getEmojisByCategory(selectedCategory); - return emojis.map(formatEmojiEntry); + if (query !== "" || selectedCategory === "all") { + emojis = EmojiService.search(query); } else { - showsCategories = false; - var emojis = EmojiService.search(query); - return emojis.map(formatEmojiEntry); + emojis = EmojiService.getEmojisByCategory(selectedCategory); } } diff --git a/Services/Keyboard/EmojiService.qml b/Services/Keyboard/EmojiService.qml index c992447ba..72745a843 100644 --- a/Services/Keyboard/EmojiService.qml +++ b/Services/Keyboard/EmojiService.qml @@ -27,23 +27,23 @@ Singleton { if (!query || query.trim() === "") { // Return popular/recently used emojis, fallback to all emojis sorted by usage - return _getPopularEmojis(50); + return emojis; } const terms = query.toLowerCase().split(" ").filter(t => t); const results = emojis.filter(emoji => { - for (let term of terms) { - const emojiMatch = emoji.emoji.toLowerCase().includes(term); - const nameMatch = emoji.name.toLowerCase().includes(term); - const keywordMatch = emoji.keywords.some(kw => kw.toLowerCase().includes(term)); - const categoryMatch = emoji.category.toLowerCase().includes(term); + for (let term of terms) { + const emojiMatch = emoji.emoji.toLowerCase().includes(term); + const nameMatch = emoji.name.toLowerCase().includes(term); + const keywordMatch = emoji.keywords.some(kw => kw.toLowerCase().includes(term)); + const categoryMatch = emoji.category.toLowerCase().includes(term); - if (!emojiMatch && !nameMatch && !keywordMatch && !categoryMatch) { - return false; - } - } - return true; - }); + if (!emojiMatch && !nameMatch && !keywordMatch && !categoryMatch) { + return false; + } + } + return true; + }); return results; } @@ -97,9 +97,9 @@ Singleton { var categories = []; for (var cat in categoryCounts) { categories.push({ - name: cat, - count: categoryCounts[cat] - }); + name: cat, + count: categoryCounts[cat] + }); } return categories;