diff options
author | Joseph Donofry <joedonofry@gmail.com> | 2020-05-13 20:19:15 -0400 |
---|---|---|
committer | Joseph Donofry <joedonofry@gmail.com> | 2020-05-13 20:19:15 -0400 |
commit | ff7468e6d567db73b490a9e728138bf3faefc3eb (patch) | |
tree | 477befcb460c7048f944e69f2e25889165b00851 | |
parent | Update translations for new emoji picker (diff) | |
download | nheko-ff7468e6d567db73b490a9e728138bf3faefc3eb.tar.xz |
Update emoji picker and translations
-rw-r--r-- | resources/icons/emoji-categories/search.png | bin | 0 -> 573 bytes | |||
-rw-r--r-- | resources/icons/emoji-categories/search@2x.png | bin | 0 -> 1172 bytes | |||
-rw-r--r-- | resources/icons/ui/search.png | bin | 0 -> 573 bytes | |||
-rw-r--r-- | resources/icons/ui/search@2x.png | bin | 0 -> 1172 bytes | |||
-rw-r--r-- | resources/langs/nheko_de.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_el.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_en.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_fi.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_fr.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_ja.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_nl.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_pl.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_ru.ts | 10 | ||||
-rw-r--r-- | resources/langs/nheko_zh_CN.ts | 10 | ||||
-rw-r--r-- | resources/qml/TimelineRow.qml | 1 | ||||
-rw-r--r-- | resources/qml/TimelineView.qml | 13 | ||||
-rw-r--r-- | resources/qml/emoji/EmojiButton.qml | 15 | ||||
-rw-r--r-- | resources/qml/emoji/EmojiPicker.qml | 215 | ||||
-rw-r--r-- | resources/res.qrc | 2 | ||||
-rwxr-xr-x | scripts/generate_icns.sh | 38 |
20 files changed, 247 insertions, 137 deletions
diff --git a/resources/icons/emoji-categories/search.png b/resources/icons/emoji-categories/search.png new file mode 100644 index 00000000..f101ba9c --- /dev/null +++ b/resources/icons/emoji-categories/search.png Binary files differdiff --git a/resources/icons/emoji-categories/search@2x.png b/resources/icons/emoji-categories/search@2x.png new file mode 100644 index 00000000..2604db45 --- /dev/null +++ b/resources/icons/emoji-categories/search@2x.png Binary files differdiff --git a/resources/icons/ui/search.png b/resources/icons/ui/search.png new file mode 100644 index 00000000..f101ba9c --- /dev/null +++ b/resources/icons/ui/search.png Binary files differdiff --git a/resources/icons/ui/search@2x.png b/resources/icons/ui/search@2x.png new file mode 100644 index 00000000..2604db45 --- /dev/null +++ b/resources/icons/ui/search@2x.png Binary files differdiff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts index 8b726f24..ee1e4dd5 100644 --- a/resources/langs/nheko_de.ts +++ b/resources/langs/nheko_de.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -751,7 +751,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation>Antworten</translation> </message> @@ -764,7 +764,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts index 890b6b65..c5351ef3 100644 --- a/resources/langs/nheko_el.ts +++ b/resources/langs/nheko_el.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -751,7 +751,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -764,7 +764,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts index f5b667d0..0220ee09 100644 --- a/resources/langs/nheko_en.ts +++ b/resources/langs/nheko_en.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -751,7 +751,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation>Reply</translation> </message> @@ -764,7 +764,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts index b3669974..712d8ef9 100644 --- a/resources/langs/nheko_fi.ts +++ b/resources/langs/nheko_fi.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -751,7 +751,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -764,7 +764,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts index 4a00158c..c21fda28 100644 --- a/resources/langs/nheko_fr.ts +++ b/resources/langs/nheko_fr.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -752,7 +752,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -765,7 +765,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts index 5df8b142..4101ea2d 100644 --- a/resources/langs/nheko_ja.ts +++ b/resources/langs/nheko_ja.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -750,7 +750,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation>θΏδΏ‘</translation> </message> @@ -763,7 +763,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts index 1880bd2c..dc19fd4e 100644 --- a/resources/langs/nheko_nl.ts +++ b/resources/langs/nheko_nl.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -751,7 +751,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -764,7 +764,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts index 9e938a04..a2d7ca11 100644 --- a/resources/langs/nheko_pl.ts +++ b/resources/langs/nheko_pl.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -752,7 +752,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -765,7 +765,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts index f6594988..178301a3 100644 --- a/resources/langs/nheko_ru.ts +++ b/resources/langs/nheko_ru.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -752,7 +752,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -765,7 +765,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts index edcbdeee..b0f6728d 100644 --- a/resources/langs/nheko_zh_CN.ts +++ b/resources/langs/nheko_zh_CN.ts @@ -189,13 +189,13 @@ <context> <name>EmojiPicker</name> <message> - <location filename="../qml/emoji/EmojiPicker.qml" line="+33"/> - <location line="+133"/> + <location filename="../qml/emoji/EmojiPicker.qml" line="+104"/> + <location line="+135"/> <source>Search</source> <translation type="unfinished"></translation> </message> <message> - <location line="-16"/> + <location line="-42"/> <source>People</source> <translation type="unfinished"></translation> </message> @@ -750,7 +750,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+16"/> <source>Reply</source> <translation type="unfinished"></translation> </message> @@ -763,7 +763,7 @@ <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+52"/> + <location filename="../qml/TimelineView.qml" line="+65"/> <source>React</source> <translation type="unfinished"></translation> </message> diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml index afde7a2a..214f2002 100644 --- a/resources/qml/TimelineRow.qml +++ b/resources/qml/TimelineRow.qml @@ -81,6 +81,7 @@ MouseArea { hoverEnabled: true ToolTip.visible: hovered ToolTip.text: qsTr("React") + emojiPicker: emojiPopup // onClicked: chat.model.reactAction(model.id) } ImageButton { diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index 9a360726..edb25441 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -6,8 +6,10 @@ import QtQuick.Window 2.2 import Qt.labs.settings 1.0 import im.nheko 1.0 +import im.nheko.EmojiModel 1.0 import "./delegates" +import "./emoji" Page { property var colors: currentActivePalette @@ -34,6 +36,17 @@ Page { property bool buttons: true } + EmojiPicker { + id: emojiPopup + width: 7 * 52 + 20 + height: 6 * 52 + colors: palette + model: EmojiProxyModel { + category: Emoji.Category.People + sourceModel: EmojiModel {} + } + } + Menu { id: messageContextMenu modal: true diff --git a/resources/qml/emoji/EmojiButton.qml b/resources/qml/emoji/EmojiButton.qml index 51d5628c..0940adfe 100644 --- a/resources/qml/emoji/EmojiButton.qml +++ b/resources/qml/emoji/EmojiButton.qml @@ -7,21 +7,10 @@ import "../" ImageButton { property var colors: currentActivePalette + property var emojiPicker image: ":/icons/icons/ui/smile.png" id: emojiButton - onClicked: emojiPopup.open() + onClicked: emojiPicker.visible ? emojiPicker.close() : emojiPicker.show(emojiButton) - EmojiPicker { - id: emojiPopup - x: Math.round((emojiButton.width - width) / 2) - y: emojiButton.height - width: 7 * 52 - height: 6 * 52 - colors: emojiButton.colors - model: EmojiProxyModel { - category: Emoji.Category.People - sourceModel: EmojiModel {} - } - } } \ No newline at end of file diff --git a/resources/qml/emoji/EmojiPicker.qml b/resources/qml/emoji/EmojiPicker.qml index 6d04edf8..3a0eb365 100644 --- a/resources/qml/emoji/EmojiPicker.qml +++ b/resources/qml/emoji/EmojiPicker.qml @@ -1,6 +1,7 @@ import QtQuick 2.9 import QtQuick.Controls 2.9 import QtQuick.Layouts 1.3 +import QtGraphicalEffects 1.9 import im.nheko 1.0 import im.nheko.EmojiModel 1.0 @@ -8,6 +9,13 @@ import im.nheko.EmojiModel 1.0 import "../" Popup { + + function show(showAt) { + parent = showAt + x = Math.round((showAt.width - width) / 2) + y = showAt.height + open() + } property var colors property alias model: gridView.model property var textArea @@ -16,54 +24,31 @@ Popup { id: emojiPopup margins: 0 + bottomPadding: 1 + leftPadding: 1 + rightPadding: 1 modal: true focus: true - closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside ColumnLayout { + id: columnView anchors.fill: parent - - // Search field - TextField { - id: emojiSearch - Layout.alignment: Qt.AlignVCenter - Layout.preferredWidth: parent.width - 4 - visible: emojiPopup.model.category === Emoji.Category.Search - placeholderText: qsTr("Search") - selectByMouse: true - rightPadding: clearSearch.width - - Timer { - id: searchTimer - interval: 350 // tweak as needed? - onTriggered: emojiPopup.model.filter = emojiSearch.text - } - - ToolButton { - id: clearSearch - anchors { - verticalCenter: parent.verticalCenter - right: parent.right - } - // clear the default hover effects. - background: Item {} - visible: emojiSearch.text !== '' - icon.source: "image://colorimage/:/icons/icons/ui/round-remove-button.png?" + (clearSearch.hovered ? colors.highlight : colors.buttonText) - focusPolicy: Qt.NoFocus - onClicked: emojiSearch.clear() - } - - onTextChanged: searchTimer.restart() - onVisibleChanged: if (visible) forceActiveFocus() - } + spacing: 0 + Layout.bottomMargin: 0 + Layout.leftMargin: 3 + Layout.rightMargin: 3 + Layout.topMargin: 2 // emoji grid GridView { id: gridView + Layout.preferredHeight: emojiPopup.height Layout.fillWidth: true Layout.fillHeight: true + Layout.leftMargin: 4 cellWidth: 52 cellHeight: 52 @@ -76,12 +61,12 @@ Popup { delegate: AbstractButton { width: 48 height: 48 - contentItem: Text { horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter - - font.pointSize: 36 + font.family: settings.emoji_font_family + + font.pixelSize: 36 text: model.unicode } @@ -94,53 +79,115 @@ Popup { hoverEnabled: true ToolTip.text: model.shortName ToolTip.visible: hovered + + // give the emoji a little oomf + DropShadow { + width: parent.width; + height: parent.height; + horizontalOffset: 3 + verticalOffset: 3 + radius: 8.0 + samples: 17 + color: "#80000000" + source: parent.contentItem + } // TODO: emit a signal and maybe add favorites at some point? //onClicked: textArea.insert(textArea.cursorPosition, modelData.unicode) } - ScrollBar.vertical: ScrollBar {} + // Search field + header: TextField { + id: emojiSearch + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: emojiScroll.width + 4 + placeholderText: qsTr("Search") + selectByMouse: true + rightPadding: clearSearch.width + + Timer { + id: searchTimer + interval: 350 // tweak as needed? + onTriggered: { + emojiPopup.model.filter = emojiSearch.text + emojiPopup.model.category = Emoji.Category.Search + } + } + + ToolButton { + id: clearSearch + anchors { + verticalCenter: parent.verticalCenter + right: parent.right + } + // clear the default hover effects. + background: Item {} + visible: emojiSearch.text !== '' + icon.source: "image://colorimage/:/icons/icons/ui/round-remove-button.png?" + (clearSearch.hovered ? colors.highlight : colors.buttonText) + focusPolicy: Qt.NoFocus + onClicked: emojiSearch.clear() + } + + onTextChanged: searchTimer.restart() + onVisibleChanged: if (visible) forceActiveFocus() + } + + ScrollBar.vertical: ScrollBar { + id: emojiScroll + } } // Separator Rectangle { Layout.fillWidth: true - Layout.preferredHeight: 2 + Layout.preferredHeight: 1 - color: emojiPopup.colors.highlight + color: emojiPopup.colors.dark } // Category picker row - Row { + RowLayout { + Layout.bottomMargin: 0 + Layout.preferredHeight: 42 + implicitHeight: 42 + Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom + // Display the normal categories Repeater { model: ListModel { // TODO: Would like to get 'simple' icons for the categories - ListElement { label: "π"; category: Emoji.Category.People } - ListElement { label: "π²"; category: Emoji.Category.Nature } - ListElement { label: "π"; category: Emoji.Category.Food } - ListElement { label: "π"; category: Emoji.Category.Activity } - ListElement { label: "π "; category: Emoji.Category.Travel } - ListElement { label: "π‘"; category: Emoji.Category.Objects } - ListElement { label: "π£"; category: Emoji.Category.Symbols } - ListElement { label: "π"; category: Emoji.Category.Flags } - ListElement { label: "π"; category: Emoji.Category.Search } + ListElement { image: ":/icons/icons/emoji-categories/people.png"; category: Emoji.Category.People } + ListElement { image: ":/icons/icons/emoji-categories/nature.png"; category: Emoji.Category.Nature } + ListElement { image: ":/icons/icons/emoji-categories/foods.png"; category: Emoji.Category.Food } + ListElement { image: ":/icons/icons/emoji-categories/activity.png"; category: Emoji.Category.Activity } + ListElement { image: ":/icons/icons/emoji-categories/travel.png"; category: Emoji.Category.Travel } + ListElement { image: ":/icons/icons/emoji-categories/objects.png"; category: Emoji.Category.Objects } + ListElement { image: ":/icons/icons/emoji-categories/symbols.png"; category: Emoji.Category.Symbols } + ListElement { image: ":/icons/icons/emoji-categories/flags.png"; category: Emoji.Category.Flags } } delegate: AbstractButton { - width: 40 - height: 40 - - contentItem: Text { - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Layout.preferredWidth: 36 + Layout.preferredHeight: 36 - font.pointSize: 30 - text: model.label + contentItem: Image { + horizontalAlignment: Image.AlignHCenter + verticalAlignment: Image.AlignVCenter + fillMode: Image.Pad + smooth: true + sourceSize.width: 32 + sourceSize.height: 32 + source: "image://colorimage/" + model.image + "?" + (hovered ? colors.highlight : colors.buttonText) } background: Rectangle { anchors.fill: parent - color: emojiPopup.model.category === model.category ? colors.highlight : 'transparent' + property real highlightHue: colors.highlight.hslHue + property real highlightSat: colors.highlight.hslSaturation + property real highlightLight: colors.highlight.hslLightness + + color: emojiPopup.model.category === model.category ? Qt.hsla(highlightHue, highlightSat, highlightLight, 0.25) : 'transparent' radius: 5 + border.color: emojiPopup.model.category === model.category ? colors.highlight : 'transparent' } hoverEnabled: true @@ -162,13 +209,55 @@ Popup { return qsTr('Symbols'); case Emoji.Category.Flags: return qsTr('Flags'); - case Emoji.Category.Search: - return qsTr('Search'); } } ToolTip.visible: hovered - onClicked: emojiPopup.model.category = model.category + onClicked: { + emojiPopup.model.category = model.category + } + } + } + + // Separator + Rectangle { + Layout.fillHeight: true + Layout.preferredWidth: 1 + implicitWidth: 1 + height: parent.height + + color: emojiPopup.colors.dark + } + + // Search Button is special + AbstractButton { + id: searchBtn + hoverEnabled: true + Layout.alignment: Qt.AlignRight + Layout.bottomMargin: 0 + + ToolTip.text: qsTr("Search") + ToolTip.visible: hovered + onClicked: { + // clear any filters + emojiPopup.model.category = Emoji.Category.Search + gridView.positionViewAtBeginning() + emojiSearch.forceActiveFocus() + } + Layout.preferredWidth: 36 + Layout.preferredHeight: 36 + implicitWidth: 36 + implicitHeight: 36 + + contentItem: Image { + anchors.right: parent.right + horizontalAlignment: Image.AlignHCenter + verticalAlignment: Image.AlignVCenter + fillMode: Image.Pad + smooth: true + sourceSize.width: 32 + sourceSize.height: 32 + source: "image://colorimage/:/icons/icons/ui/search.png?" + (parent.hovered ? colors.highlight : colors.buttonText) } } } diff --git a/resources/res.qrc b/resources/res.qrc index a48d0410..008ff551 100644 --- a/resources/res.qrc +++ b/resources/res.qrc @@ -20,6 +20,8 @@ <file>icons/ui/checkmark@2x.png</file> <file>icons/ui/cursor.png</file> <file>icons/ui/cursor@2x.png</file> + <file>icons/ui/search.png</file> + <file>icons/ui/search@2x.png</file> <file>icons/ui/settings.png</file> <file>icons/ui/settings@2x.png</file> <file>icons/ui/smile.png</file> diff --git a/scripts/generate_icns.sh b/scripts/generate_icns.sh index 98a5e68f..9563b704 100755 --- a/scripts/generate_icns.sh +++ b/scripts/generate_icns.sh @@ -9,19 +9,35 @@ set -eu INPUT=$1 OUTPUT=nheko +filename=$(basename -- "$1") +extension="${filename##*.}" + mkdir ${OUTPUT}.iconset -sips -z 16 16 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16.png -sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16@2x.png -sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32.png -sips -z 64 64 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32@2x.png -sips -z 128 128 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128.png -sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128@2x.png -sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256.png -sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256@2x.png -sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_512x512.png - -cp "${INPUT}" ${OUTPUT}.iconset/icon_512x512@2x.png +if [ extension = "svg" ]; then + rsvg-convert -h 16 "${INPUT}" > ${OUTPUT}.iconset/icon_16x16.png + rsvg-convert -h 32 "${INPUT}" > ${OUTPUT}.iconset/icon_16x16@2x.png + rsvg-convert -h 32 "${INPUT}" > ${OUTPUT}.iconset/icon_32x32.png + rsvg-convert -h 64 "${INPUT}" > ${OUTPUT}.iconset/icon_32x32@2x.png + rsvg-convert -h 128 "${INPUT}" > ${OUTPUT}.iconset/icon_128x128.png + rsvg-convert -h 256 "${INPUT}" > ${OUTPUT}.iconset/icon_128x128@2x.png + rsvg-convert -h 256 "${INPUT}" > ${OUTPUT}.iconset/icon_256x256.png + rsvg-convert -h 512 "${INPUT}" > ${OUTPUT}.iconset/icon_256x256@2x.png + rsvg-convert -h 512 "${INPUT}" > ${OUTPUT}.iconset/icon_512x512.png + rsvg-convert -h 1024 "${INPUT}" > ${OUTPUT}.iconset/icon_512x512@2x.png +else + sips -z 16 16 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16.png + sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16@2x.png + sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32.png + sips -z 64 64 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32@2x.png + sips -z 128 128 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128.png + sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128@2x.png + sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256.png + sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256@2x.png + sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_512x512.png + + cp "${INPUT}" ${OUTPUT}.iconset/icon_512x512@2x.png +fi iconutil -c icns ${OUTPUT}.iconset |