This uses the newly introduced API in plasma-framework to use a custom calendar
header in the applet header and moves the events and timezone information to the
left column and the calendar to the right column.
We ported units to use the PlasmaCore.Units singleton earlier; now it's
time to do the same thing for PlasmaCore.Theme.
There are no UI changes or regressions detected.
The positioning here was funky as if it was trying to to do something
clever, but instead all it did was cause the text to overlap with the
first list item entry with certain combinations of font size and window
size. Instead let's just do the typical thing.
The context property version is slower to access and won't be supported
in Qt6. Let's port away from it and use the singleton version instead.
Here was my full process for making this change:
1. Made the change with `find . -name '*.qml' | xargs perl -pi -e 's/units\./PlasmaCore\.Units\./g'`
2. Verified no more occurrences with `grep -r " units."`
3. Made sure this didn't change any comments in a silly way by inspecting the output of `git diff | grep "+ " | grep "//"`
4. Manually inspected the full git diff to make sure there were no other unintentional or silly changes (there were none)
5. verified that all changed files have the PlasmaCore import with the correct name with `for FILE in `git status | grep modified | cut -d ":" -f 3`; do grep -q "as PlasmaCore" $FILE || echo "$FILE needs the PlasmaCore import"; done`
a699acd3ff introduced a syntax error,
which prevented the time zone config dialog of the digital clock applet
from being shown:
"file:///usr/share/plasma/plasmoids/org.kde.plasma.digitalclock/
contents/ui/configTimeZones.qml:144:38: Expected token `:'"
I assume the intention was to only show the check box if there are
multiple timezones configured, so "visible" should be the forgotten
property.
After the rest of the UI changes made to the applet and the time zone
config page, I don't think users will be confused by the differences
between the timezone displayed in the clock, and the systemwide local
timezone anymore. Therefore, it should be safe enough to bring back the
wheely time feature.
BUG: 431977
This is the paradigm we use for highlighting the current/selected item
in various other contexts, and Kirigami.BasicListItem has built-in
facilities for it. Let's use them.
At the time this custom delegate was implemented, Kirigami.BasicListitem
didn't have the ability to easily display custom items inside itself.
Now it does, so we can port to that to save some code and increase
consistency.
The appearance is virtually identical and the UX remains the same with
the exception that you can now select an item by clicking anywhere on
the background, not just on one of the radio buttons.
the Text.Fit sizing policy will size the font in order to fit given a fixed
size of the label, but it can't really cause the other way around which we need:
cause a vertical resize in order to accomodate a larger font.
In order to fake that, we fix the date label to an arbitrary tall height
(will overflow outside the applet) and then size the applet based on the label contentheight instead,
leaving the invisible part of the label outside.
In order to avoid the huge text it used to have, limit the maximum size to an arbitrarly
small value, in this case
Math.min(0.7 * timeLabel.height, theme.defaultFont.pixelSize * 1.4)
BUG:417852
FIXED-IN: 5.21
The agenda view is only shown when at least one event source is active.
When going from 0 to 1 active sources the view wasn't updated correctly.
This was because the visibility of rightColumn was bound to the
visibility of its child, but since the visibility of the parent affects
the visibility of its childred (https://doc.qt.io/qt-5/qml-qtquick-item.html#visible-prop) that resulted in a broken binding.
Bind to the source property directly to avoid this
BUG: 431433
Qt 5.14 introduced new restoreMode mandatory property. Fix warnings like this one:
QML Binding: Not restoring previous value because restoreMode has not been set.
We do this sometimes, but not consistenly.
The benefit is twofold.
First it improves the diff when adding new values since no existing line needs to be touched.
Second it prevents clang-format from collapsing the definition into a single line, which is undesired for large enums.
Right now we have a usability problem: the Digital Clock applet has two
ways to let you change the timezone displayed in the applet itself, but
has no easy link to the correct way to change the timezone systemwide. As
a result, users change the timezone in the clock and wonder why times are
wrong everywhere else throughout the OS.
This commit removes the feature of changing the timezone in just the
clock, and replaces it with an overhauled Time Zones page in the config
dialog and a new button in the popup that links you to the Date & Time
KCM where you can change the systemwide time zone in the correct way.
I anticipate that this may cause some grumbling from people who currently
use the "mouse wheel to cycle through timezones" behavior, but now that
all the timezones and their times are displayed prominently in the popup,
you can just click on the applet to show the popup instead of rolling the
mouse wheel over it to cycle through times; it's different, but no worse.
BUG: 428096
FIXED-IN: 5.21
Qt 5.15 introduced new syntax for defining Connections. Fix warnings like this one:
QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
Because the content is manufactured from scratch, we need to set the
height manually, or else everything will get scrunched together.
BUG: 427281
FIXED-IN: 5.20
This begins the process of porting plasma-workspace to PlasmaComponents3. At
this point, only the relatively easy work is done. Every file not ported
now has been given the reason for still using PC2 in a comment on the import
line so you can see at a glance what the blocker is by running
`grep -r "org.kde.plasma.components 2.0"` in the repo.
Everything is tested and there are no breakages or functional regressions. In
the process, a few unused imports are removed.
Here are the remaining PC3 omissions blocking what's left from getting easily
ported:
- No Highlight
- No ListItem
- No PageStack
- No ContextMenu
- No QueryDialog
- No ModelContextMenu
- TabBar has no left and right tab states
- ToolButton has no built-in method to show a menu when clicked
Many applets shouldn't actually appear on the phone, like
devicenotifier, the battery applet, the systray and so on
Populate all desktop files of the plasmoids with the proper
formfactors. on the desktop we keep showing everything.
on the phone most of those applets will be filtered out
Also take into account of the formfactors when populating the available
categories, wo we don't have the risk of seeing empty categories
We got some user complaints about the new Calendar pop-up, saying that
it used too much space, which honestly is a reasonable critique.
This MR tweaks the layout in the following ways:
- Reduce paddings from units.largeSpacing to units.smallSpacing
- Replace the huge custom date header with a standardized PlasmoidHeader
containing the current locale's standard long date and the pin button
- Move the events view from under the calendar into the column to the
right of the calendar, sharing space with the list of clocks
- Increase space efficiency of Events view by removing the per-event-type section headers
Hopefully this should address concerns with the 5.19 layout. I think it
does look much nicer, myself.