Commit Graph

116 Commits

Author SHA1 Message Date
c824b100b6 Make the clock agenda's calendars and row count configurable
The agenda part filtered calendars through the search settings and always
collapsed after four rows. It now has its own selection: an exclusion set
(`clockWidgetCalendarPartExcludedCalendars`, empty = all) that is added to the
search settings' exclusions, because the picker only offers calendars those
settings leave enabled.

The row cap is `clockWidgetCalendarPartMaxRows` (1..8, default 4); the agenda
shows that many events and then a "+N more events" row if more are left, so
with the default five events now render as four rows plus "+1 more event"
instead of three plus "+2".

Both are configured in `ConfigureCalendarPart`, shown by the clock sheet while
the Events part is enabled: a slider, a Calendars row that expands into a
colour-tinted checkbox per calendar, and a button to Settings -> Search ->
Calendar (new `ROUTE_SEARCH_CALENDARS`) for calendars the search settings
disable. A missing calendar permission shows a banner with a Grant button.

New setting fields default to the previous behaviour, so no datastore
migration is needed.
2026-09-17 08:56:55 +02:00
61f3424de5 Stop the weather worker pinning location for providers that manage it
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Breezy Weather resolves its own location and pushes weather updates, but
WeatherUpdateWorker only looked at autoLocation before requesting a location.
BreezyWeatherProvider.getWeatherData() is a noop that always returns null, so
the worker then returned Result.retry() forever and never set lastUpdate -
which meant the update interval check could never short-circuit it either.

Every attempt called getLastKnownLocation(), which registers GPS *and* network
listeners at a one second interval and held them for up to ten minutes, so the
location stack never idled. On the phone this showed up as ~46k delivered fixes,
`*location*` wakelocks held ~99% of the time and Doze never engaging at all.

- expose the selected provider's managedLocation in WeatherSettingsData
- skip and cancel the weather work for providers that manage their own location
- give up on a fix after two minutes instead of ten
- LocationsRepository: don't collect the location flow when location search is
  off or not permitted. As a combineTransform argument it was always collected,
  so every search query registered GPS and network listeners for up to 30s.

Bump to 1.40.2-typing.8 (versionCode 2026091201).
2026-09-12 15:19:10 +02:00
6ae31fe92b Show an agenda in the clock widget's dynamic zone, with multiple slots
The dynamic zone showed exactly one part: the highest ranked of the enabled
ones. It now shows up to `clockWidgetDynamicZoneSlots` of them (default 1),
adjustable with a slider in the clock widget settings whose maximum is the
number of enabled parts. `ClockWidgetVM.getActiveParts()` returns that sorted
list, and both clock layouts render it (stacked under the clock, or next to it
in the horizontal layout).

On top of that the zone has an "Events" part (`clockWidgetCalendarPart`, off by
default) that shows today's agenda: events that are still running or upcoming
today, plus today's all-day events. At most four rows; when there are more, the
last row is a "+N more events" hint that opens the calendar app. Tapping a row
opens the event through `CalendarEvent.launch()`.

A row is three fixed-width columns that are pure layout, not drawn: a dot in the
calendar's colour, the time, and the title (ellipsized when it does not fit).
Times are always times, never dates - an all-day event renders "all-day" - and
the block is centred under the clock. The columns line up across rows, and the
time is left-aligned within its column.

The part ranks 70 when an event is running or starts within half an hour, 30
while events are left today and 0 on an empty day, so the date keeps the slot
when there is nothing to show. It reloads itself through a ContentObserver on
CalendarContract.Events and a 15 minute ticker, because unlike the calendar
widget it is on screen all the time. Tasks (`CalendarEvent.isTask`) are filtered
out for now; a tasks part can reuse this once tasks are configured.

Verified on the Titan 2: with the part enabled and three slots, the home screen
shows the agenda (two all-day events and a timed one) above the date part.
2026-09-11 12:25:09 +02:00
0f53f7ecdf Open the search when typing on a physical keyboard
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Typing on a physical keyboard while the home screen is shown now opens the
search page and inserts the typed character, so the launcher can be used
without touching the screen. It works for any printable key, appends the
characters in order even when the user types faster than the launcher can
recompose, and the search bar can still be tapped to edit the query with
the on-screen keyboard as usual.

While the search is driven by the keyboard, the search bar's text field is
left unfocused on purpose: a focused text field would make the system show
the on-screen keyboard, which is not wanted when there is a physical
keyboard. The handler therefore inserts and deletes characters itself,
including backspace and enter (to launch the best match).

The behaviour is controlled by a new "Search on typing" preference in
Settings -> Search, which is enabled by default.

Implementation notes:
- The key events are intercepted in SharedLauncherActivity.dispatchKeyEvent,
  which is the only place that sees hardware key events while no view has
  focus. The scaffold installs the handler while it is shown.
- Key events are not forwarded to the search bar's text field, so the
  characters are inserted into the search view model directly.
- SearchBar keeps a TextFieldValue instead of a String so that the cursor
  moves to the end of the text when the value is changed from the outside.
  Without this the next typed character ended up in front of the text.
2026-09-10 11:45:14 +02:00
MM20
17f8906f26 add setting to exclude apps from shortcuts search 2026-08-23 17:55:08 +02:00
MM20
64dc66aadb Update dependencies, change java version to 11, update Gradle 2026-08-12 23:42:41 +02:00
MM20
8b50c8349d add currency settings 2026-06-29 19:13:30 +02:00
MM20
ded17a1af3 Add launcher settings gesture action 2026-06-20 17:09:32 +02:00
MM20
9953139619 invert hide app details preference 2026-05-31 13:32:46 +02:00
Snow
9017a06239 feat : Add setting to toggle app version visibility in grid popup (#1843)
* Add gridAppVersion setting and wiring

* Implement app version visibility toggle in grid popup

* Add hideAppDetails setting and wiring

* feat : add hideAppDetails toggle and remove gridShowAppVersion
2026-05-31 13:22:32 +02:00
MM20
06982b6e5a Specify compile sdk minor version
Close #1867
2026-04-14 20:00:45 +02:00
MM20
b9c227be23 Redesign gesture settings 2026-04-06 12:07:29 +02:00
MM20
37fa1697dd Migrate to Android Gradle Plugin 9 2026-03-28 16:02:54 +01:00
DemonicSavage
bc579d9ae1 Added "always show battery" toggle to clock widget (#1799)
* Added "always show battery" toggle

* Newline at end

* Removed comment

* Added newline

* Removed... newline? Github UI, come on now...

Removed unnecessary newline at the end of the file.

* Made setting into a list

* Added migration

---------

Co-authored-by: Valerie <15646950+MM2-0@users.noreply.github.com>
2026-03-13 15:41:28 +01:00
MM20
77eb927ab2 Add support for different calendar systems, add secondary calendar 2026-03-06 19:36:58 +01:00
Fidel Montesino
adfff23e67 Multiple widget panels (#1805)
* Initial approach

* Add a new setting so users can choose the amount of widgets screens

* Extract indexed string

* Remove unnecessary Migration6

* Make HomeComponent use the Default widget id

* Add defaultParentId to initial widgets for fresh launch

* Fix migration path
2026-02-16 19:46:01 +01:00
MM20
8ba55f8345 Use Google Sans Flex as the default font 2026-01-30 15:33:07 +01:00
MM20
a68ae78835 Add switch preference to enable feed 2026-01-06 21:56:20 +01:00
MM20
664419b3c4 [WIP] Add experimental feed support 2026-01-05 23:45:20 +01:00
MM20
e313931b4b Add Smartspacer integration 2026-01-03 00:21:02 +01:00
MM20
67167de2da Add transliteration support for non-latin scripts 2025-12-15 23:00:40 +01:00
MM20
7566170e0b use 12h/24h preference in calendar results 2025-11-30 14:20:25 +01:00
MM20
e70e3ce5dd Use 12h/24h preference in weather widget 2025-11-29 23:23:55 +01:00
MM20
6d1be70837 Use measurement system preference for location search 2025-11-29 23:02:03 +01:00
MM20
4e05d845b2 fix 2025-11-29 20:55:29 +01:00
MM20
774f5411d5 remove old imperial preference 2025-11-29 20:50:47 +01:00
MM20
8094843972 Add measurement system preference 2025-11-29 20:49:54 +01:00
MM20
fba652581a Move time format preference to locale settings screen 2025-11-23 20:19:43 +01:00
MM20
5dc9361a58 Add preference to hide all apps when search is empty
Close #1679
2025-11-16 13:56:11 +01:00
MM20
df1442bd1e Change clock fill height default value 2025-10-19 16:38:40 +02:00
André
a9b1ad2b40 Add dock rows setting to choose how many rows to display on the home screen (#1520) 2025-10-18 14:14:45 +02:00
MM20
cda81b9610 Fix initial settings 2025-09-28 15:44:48 +02:00
psyvern
fd2ca476df Monospaced clock (#1588) 2025-08-29 14:21:13 +02:00
MM20
d4549069b8 modernize gradle scripts 2025-08-16 16:34:03 +02:00
MM20
aca734e228 Wipe settings if file is corrupted 2025-08-16 12:49:40 +02:00
MM20
8ae2fc93fc Bring back clock widget fill height option
Close #1493
2025-07-13 20:55:29 +02:00
shtrophic
8cf2d625a7 AnalogClock: add option to show tick marks (#1334)
* AnalogClock: add option to show tick marks

* Refactor as data class with settings in WatchFaceSelector.kt
2025-07-04 12:01:08 +02:00
MM20
da8416a58c (feat) custom typography schemes 2025-06-18 22:28:13 +02:00
MM20
167be6e34d (feat) transparency schemes 2025-06-14 17:17:07 +02:00
MM20
5525609355 Add material 3 high contrast theme 2025-06-10 18:41:18 +02:00
MM20
c4ec894add Revert "Remove home button gesture"
This reverts commit 99fd69d5d9.
2025-06-03 18:27:13 +02:00
MM20
cfb7bb0c72 (feat) shape schemes 2025-06-01 17:13:12 +02:00
MM20
99fd69d5d9 Remove home button gesture
- It causes more problems than it solves
- Who even uses 3 button nav in 2025?

Close #1436
2025-05-28 21:46:45 +02:00
Valerie
a24d1b8798 Layout rewrite please read https://github.com/MM2-0/Kvaesitso/discussions/1431
Rewrite of the underlying layout and gesture handling
2025-05-27 00:02:12 +02:00
MM20
ee9312a887 Add contact plugin settings 2025-04-06 14:10:48 +02:00
MM20
cab93f87aa Restructure contacts search for plugins 2025-04-05 17:18:22 +02:00
KorigamiK
2c2c88b93c Feat: App list view (#1170)
* Feat: grid icon visibility settings and migration support

* fix: remove unnecessary padding

* Feat: Create List View Settings

* fix FavoritesPartProvider

* small fix

* fix favorites

* Remove useless datastore migration

* Change app list default value

* Revert migration 3

* Hide list icon preference if list is not enabled

* Use ListResults for app list

---------

Co-authored-by: MM20 <15646950+MM2-0@users.noreply.github.com>
2025-04-02 19:59:13 +02:00
Christoph
bceae1aa58 ContactItem improvements (#1324)
* ContactRepository: try to deduplicate phoneNumbers in a smart way

* AndroidManifest: use CALL_PHONE permission to allow for making phone calls

* Implement CallOnTap with contact results

- contact activities that require permissions we do not have are not
  listed
- add CallOnTap setting for phone number results on search behind
  contacts settings

* utilize PhoneNumberUtils

* navroute settings/search/contacts

* queryIntentActivities -> resolveActivity

* localization

* Code formatting

* Wrap contact search settings in preference category

---------

Co-authored-by: MM20 <15646950+MM2-0@users.noreply.github.com>
2025-03-29 17:18:30 +01:00
MM20
b4056df5c2 Simplify calendar search settings when no plugins are installed 2025-03-24 23:31:16 +01:00
Oscar Ronberg
5240431348 Add style to BinaryClock for 24-hour time (#1190)
* Add style to BinaryClock for 24-hour time

* Use global time format preference for all clock widget styles

* Add support for time format preference to remaining clock styles

---------

Co-authored-by: MM20 <15646950+MM2-0@users.noreply.github.com>
2025-02-24 18:56:19 +01:00