The date can be changed using scrolling or the buttons provided. It does not animate the view though. With this MR I have tried to implement this. Though the goal here is not just animating the view. The user can now flick the view as well to change date. There is already https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1843 this MR that does all of this and more. But there was many controversial changes and the code was a mess. The way animation was being handled could be improved. This is a much more smaller version of that MR. I have tried to make as less changes as possible to the MonthView since it is already very messy. All I have done is creating a new component and wrapped the views in that component. The code changes not as much in the MonthView as it seems in the diff. Here's what I am talking about:

This allows the user to choose between automatically determined font size
(the default, and the current behavior), and completely manual font settings.
The UI refactor and layout code changes necessary for this feature also
happily fix a few bugs along the way.
BUG: 413394
BUG: 421548
BUG: 395468
FIXED-IN: 5.26
Plasmoid.self is a relatively recent thing, but it saves code from hacks
such as this property just for the sake of putting an onChanged handler
for it.
This is a common snippet of code in applets. It prevents applet from
re-expanding again when user clicks on the compact representation when
the applet is already expanded and located on a desktop containment.
See also: 79bcefdd35
FIXED-IN: 5.24.7 5.25.4 5.26
The previous names did not communicate what those variables were
responsible for.
Hopefully this can make things more understandable and help making
this bit of code more maintainable.
This commit adds a new option to the "Copy to Clipboard" menu that
shows the date with seconds when "show seconds" is not enabled and
without seconds when "show seconds" is enabled.
BUG: 453111
This commit organizes the "Copy to Clipboard" options and removes
a lot of duplicated options when "show seconds" is enabled.
It also makes the code more readable. :)
BUG: 453111
dateTimeChanged is called every second. This in turn checks if the date
has changed. If so we call setupLabels which updates the clock.
The date label used to use main.currentTime which is a value set in the
binding of the timeLabel's text property. The order of this being
updated vs running this code is undefined.
Bug 1: We compare an ever so slightly different date source to the one
used in the date text label.
Bug 2: We are not necessarily updating the date label with the most
updated time.
Overall we can't mix declarative and imperative design patterns. This
patch commits to being imperative and introduces a function to get the
current time so that the date label and time label will always get the
most up to date value even if they update from different trigers.
BUG: 452554
FIXED-IN: 5.24.5
We use a checkmark icon for the notifications applet since having no
unread notifications is considered a good thing. In this busy modern
world, having no scheduled events on a particular day can be considered
in the same way, so let's use a checkmark icon here too.
Unlike when the clock is in a panel, there is plenty of space when it is
on the desktop. This means that we can safely let the date string word
wrap rather than shrink.
BUG: 450632
FIXED-IN: 5.24.3
Sad that we still need to do this because the patch to fix that bug
never got merged because it failed to adjust a failing test, and has
bitrotted in the two years since then.
BUG: 448387
FIXED-IN: 5.24.1