Commit graph

191 commits

Author SHA1 Message Date
Jens Jerosch
fda04fd114 emojier: update to unicode emoji version v18.0 2026-11-01 11:15:14 -05:00
l10n daemon script
74914f1ce3 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-10-17 01:57:20 +00:00
l10n daemon script
4ce137deb1 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-10-04 01:48:16 +00:00
Jakob Petsovits
bdb6c62cdf Fix automoc warnings
Should not include "*.moc" headers when the .cpp defines no Q_OBJECT.
The "moc_*.cpp" include, for Q_OBJECTs from the header file, remains.
2026-10-02 03:30:01 -04:00
l10n daemon script
3ea0146c5d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-09-21 01:40:15 +00:00
Tobias Ozór
97dae0a54e Emojier: Fix incorrect buttons/placeholder when search gives no results
When no emojis are found for the current search, Emojier switches to the
'All' page, but doesn't hide the 'Clear History' button, doesn't show the
'Skin Tone' button, and displays an incorrect placeholder message.
2026-09-17 12:24:36 -04:00
Christoph Wolk
0fe4c7170d emojier: go back to search field on Arrow Up
Arrow Down from the search field goes to the main gridView, but Arrow
Up from there doesn't go back. Our previous implementation using
KeyNavigation broke during refactoring, and was half-replaced.

Instead, fix the KeyNavigation, and make the handover pattern a bit
more obvious with a comment (similar to how we have them in a couple
of other places)
2026-09-07 07:26:09 +00:00
l10n daemon script
36ba2855a9 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-08-23 01:41:15 +00:00
Tobias Ozór
5b8c6a28c6 emojier: Use consistent emoji order
Most emojis and their variants in the "People" category follow the order
"Person, Man, Woman". But for a few, the order is random.
Also, for the "Select Variant" pop-up feature, Emojier expects variants
with mixed skin tones to be placed near the base emoji or variants with
only one skin tone. Emoji Version 17 adds six emojis that do not follow
this ordering, breaking the feature.

Sort the emojis by this pattern.
2026-08-12 11:15:41 -04:00
Christoph Grüninger
15781c1689 Prevent detaching temporary from Qt conatainers
Found by Clazy (detaching-temporary).
2026-07-29 07:58:29 +00:00
Jason Uithol
5d6be2cec1 emojier: allow zooming the emoji grid
You can now zoom with Ctrl+scroll, keyboard shortcuts, and toolbar buttons.
This enlarges or shrinks the cells of the emoji grid, clamped between 1.5 and
8 grid units. Plain scrolling is unaffected and still scrolls the list.

The glyph font size is derived from the cell height instead of a fixed point
size, so it scales with the zoom (this also lets the inert minimumPointSize be
dropped). Size changes are coalesced on a short throttle so a fast wheel spin
triggers at most one relayout per frame instead of one per event. The skin-tone
variant popup tracks the same size.
2026-07-27 15:45:42 -04:00
Christoph Wolk
9aa61a48c4 emojier: make window large enough for sidebar
Emojier tries to set the minimum window height to be large enough to fit
the full sidebar, to avoid having it be covered up by a scroll bar. The
required minimum size for this does not seem to be available (the
implicitHeight changes with window size), so we compute it from the
contentHeight and adjust for differences between explicit and implicit
header sizes. The problem now is that the explicit header size may be
fractional, but windows can't be; at least in some situations the window
ends up too small by a third of a pixel or so, which makes it uselessly
scrollable - the scrollbar is shown, but can't actually be moved because
we can't move it by fractions of a pixel (or even if we can, that would
be completely invisible).

Instead, round up the explicit header size to the nearest full pixel.

BUG: 523090
FIXED-IN: 6.7.4
2026-07-27 05:23:54 +00:00
l10n daemon script
afd5437432 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-07-26 01:39:25 +00:00
Akseli Lahtinen
84784ea3f7
emojier: Focus emojiView on downPressed when using search
When in search field, pressing down arrow should focus
the emoji view. This ensures the active focus is changed.

BUG: 523254
FIXED-IN: 6.7.4
2026-07-20 13:18:55 +03:00
Christoph Grüninger
e7dfe6cf61 Prevent detaching in range-based for-loop
Make container const.
Found by Clazy (range-loop-detach).
2026-07-19 16:30:11 +02:00
Christoph Grüninger
606724cd8e Prevent detaching in range-based for-loop
Use std::as_const.
Found by Clazy (range-loop-detach).
2026-07-19 16:28:57 +02:00
l10n daemon script
3350347453 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-07-19 01:41:19 +00:00
Jens Jerosch
97dff0155c emojier: update unicode emojis to 17.0 2026-07-01 10:37:13 -04:00
Kai Uwe Broulik
9ecceb767d emojier: Fix i18n use
i18n doesn't work with "arg" but instead you supply the
arguments as varargs to the i18n function itself.

BUG: 520827
2026-06-01 08:00:22 +00:00
Arjen Hiemstra
f18a41271a emojier: Port CategoryPage to using Kirigami.Action instead of a custom toolbar
All the functionality required by the toolbar here is provided by
Kirigami, with some of it working better than the implementation here.
So make use of the standardised solutions, reducing code and making some
things such as the "skin tone" menu button work better.

The only drawback is that we can no longer increase the size of the selected
skin tone emoji, because that would require a completely custom delegate
that would need to re-implement all the logic of the menu button again.
2026-05-12 12:38:44 +00:00
Arjen Hiemstra
e90e91d02a emojier: Add a change signal to CategoryModelFilter::category
Otherwise QML bindings depending on this property won't get updated
properly.
2026-05-12 12:38:44 +00:00
Arjen Hiemstra
8f03dbab9e emojier: Set category to "All" or "Recent" when on those pages
This allows always using the category to find out where we are rather
than needing to rely on title comparisons.
2026-05-12 12:38:44 +00:00
l10n daemon script
7b853f79aa SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-05-08 01:40:03 +00:00
l10n daemon script
b9862a5491 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-03-14 01:39:20 +00:00
l10n daemon script
8198e419ae SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-02-28 01:42:10 +00:00
l10n daemon script
9a3c072a87 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-02-11 01:41:36 +00:00
l10n daemon script
d287cea212 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-02-03 01:44:19 +00:00
Christoph Wolk
5f1564280c emojier: port away from deprecated invalidateFilter()
invalidateFilter() is deprecated and should be replaced by
beginFilterChange() and endFilterChange().
2026-01-29 17:13:36 +00:00
l10n daemon script
6f5634a144 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-01-29 01:40:03 +00:00
Tobias Ozór
ee36ca663d emojier: add mixed skin tone grouping
This commit removes emojis with mixed skin tone modifiers from the main
view. Instead, they are grouped in a dialog and filtered by the current
preferred skin tone.
2026-01-27 09:02:35 -07:00
Tobias Ozór
970f7312c8 emojier: use clearer tone counter variable names 2026-01-27 09:02:35 -07:00
l10n daemon script
1ed8fa8b14 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2026-01-20 01:38:01 +00:00
Philipp Kiemle
79ef6a99d5 emojier/app: Add i18n context to translatable string 2026-01-12 23:48:21 +01:00
Christoph Wolk
9c1becd7bb add translation contexts
This change adds translation contexts to all translatable strings in qml
files that did not have any. Occasionally, the existing translation
contexts are updated for consistency with the newly added ones.

The string themselves are unchanged, save for one instance where the
Accessible strings were somewhat awkward and were a bit streamlined, and
one set of accessible  strings in PanelConfiguration that were not
marked as translatable, but are now.

Co-authored-by: Nate Graham <nate@kde.org>
2026-01-07 10:44:24 +00:00
Tobias Ozór
3012fb8345 emojier: add skin tone filter
The 'People and Body' category, is with 2261 emojis, by far the category
with the most emojis. Most of these are variants in skin tone.
By hiding 1615 of these variants and by showing only one type of variant
at a time, it's easier to discover emojis in the category/all view.
2026-01-02 09:30:09 +00:00
Christoph Wolk
f7cb36418a emojier: only show clear history button on Recent page
Amends 2d36238182

The clear history button in the page header should only show on the
Recent page, but a flipped boolean value made it appear also for
regular category pages (but not the All Emojis page).

This change restores the original behavior.
2025-12-23 09:25:48 -07:00
l10n daemon script
af70df6494 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2025-12-22 01:36:20 +00:00
Christoph Wolk
d4a9dfe8a1 emojier/app: use regular highlight for currentItem
The emoji GridView currently uses the highlighted delegate style for the
currentItem; in QQC2 a solid color. We typically use this style to show
some persistent state (e.g. the currently open page from a sidebar with
delegates), and for  simple selection of items in a list or grid we use
the regular view highlight (in QQC2, currently a solid outline with a
transparent background).

This change switches emojier to the second style.
2025-12-12 17:13:03 +00:00
Christoph Wolk
2d36238182 emojier/app: don't create unnecessary new pages.
All page loading actions in Emojier are implemented as replacing the
current page with a new one. This causes a warning on startup (as we're
trying to replace a page on an empty pageStack) and is generally not
necessary, as all the pages are the same, they just differ in some
properties.

So we can just create the page once and have the switching actions swap
out the relevant bits in that page, as we already do when a page is
switching to searching all data when nothing is found in the selected
category. This resolves the runtime warnings, saves the overhead of
having to create new pages, and allows a small interface convenience -
the user can now type a search term and then click the sidebar to choose
a category and only show results from that category. Before, the user's
search term would be cleared by the new page being loaded.
2025-12-12 17:13:03 +00:00
Christoph Wolk
0c27c2b4ba emojier/app: avoid binding loop
Setting the minimumHeight for the window causes a binding loop. The
precise cause is unclear, but it involves depending on both height and
implicitHeight, either by itself is fine.

We can avoid this by setting the binding imperatively in
Component.onCompleted.
2025-12-12 17:13:03 +00:00
Christoph Wolk
ca5cca85ba emojier/app: use less confusing collapsible binding.
The globalDrawer's collapsible property is bound to
!topContent.activeFocus. topContent is not an item but a list of
QObjects, so it does not have an activeFocus property, so this
is just !undefined. It's also not clear what this is even supposed
to do, the app does not set any topContent for the globalDrawer so
there's nothing in the list that could have activeFocus.

Just set it to always true.
2025-12-12 17:13:03 +00:00
Christoph Wolk
f9efdf1990 emojier/app: centralize setting data set and page title
The model, category, and page title of the CategoryPages are all
set from Emojier.qml... except when the user searches in a restricted
emoji set and the app switches to full search, then it happens from
inside CategoryPage. This means that the full model will have to be
either be accessed through an unqualified lookup from there or
explicitly passed to the page, and feels like improper separation of
concerns.

Instead, we provide a signal by which the page can request being
switched to the full data set, and handle all cases of setting the
data set and page title in one place, Emojier.qml.
2025-12-12 17:13:03 +00:00
Christoph Wolk
617c3708fb emojier/app: properly separate copy handling
Emojier's handling of copying is implemented in three different places
spread across both source files. As we want to modify the recents model
and access the window to show passive notifications, it makes sense to
handle this all centrally in the main app, and have the active page
signal it as needed. This allows for a less direct coupling of intent
and implementation, and helps reduce the coupling between both
components while reducing implementation duplication.
2025-12-12 17:13:03 +00:00
Christoph Wolk
8d975f1958 emojier: make screenreader-accessible
Emojier's category page sets default focus on the search field and sets
a forwardTo on the grid view to pass arrow keys and other interaction
keys that should operate on the view or delegate there. This works, but
means that focus always remains on the search field, and screen readers
are not informed about the currently selected item, giving no feedback
to the user and letting the explicitly set accessible properties on the
delegate go to waste.

Instead, we switch to regular handling where the delegate actually
receives focus, and set a forwardTo in the other direction, so that keys
the view/delgate do not handle are passed to the search field, allowing
modification of the search string from outside the search field. We
replace the remnant of a key passing mechanism, as using a forward
allows us to centralize the search modification behavior in one place,
rather than having two implementations that work differently. We also
make the Clear History button (sometimes) next to the search field
arrow key-accessible.
2025-12-12 17:13:03 +00:00
Christoph Wolk
b6645205f5 emojier/app: merge CategoryAction into Emoijier.qml
The delegate for creating category actions is its own small qml file.
Some parts of the action require access to data from the caller, which
means unqualified lookups or passing lots of extra information to the
delegate. Some of what is there is also essentially duplicated (such
as setting a string property category that is exactly the same as the
already existing property modelData.

It's easier, clearer, and less code to just merge the delegate into the
single place where it's used.
2025-12-12 17:13:03 +00:00
Christoph Wolk
128455fb60 emojier/app: switch to required properties
Emojier uses injected properties for its delegates. This is not
recommended and causes linter warnings.

This change switches this to required properties, which also allows
us to use ComponentBehavior: Bound to further reduce linter warnings.
2025-12-12 17:13:03 +00:00
Christoph Wolk
de680e193d emojier/app: basic linting
Low-hanging fruit:

- qualify access where easily possible
- use correct number of parameters
- remove unused imports/add required imports
- explicit types
2025-12-12 17:13:03 +00:00
Christoph Wolk
da2c646b31 replace Qt.application.layoutDirection with Application singleton
qmllint fails to properly handle the Qt.application property
(QTBUG-119643). Upstream recommends using the Application singleton
instead, as it resolves issues with the types (which are variable
depending on the imported modules) and is more accessible for tooling
(codereview qtdeclarative/+/350080). The main use for Qt.application
in p-d is to access the layoutDirection.

This change ports p-d to using the Application singleton.
2025-12-08 13:20:37 +01:00
l10n daemon script
b9fdbda1fb SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2025-11-11 01:35:57 +00:00
Nicolas Fella
cdf899dd58 Use better way to disable session management 2025-11-06 20:39:38 +01:00