Update module docs

This commit is contained in:
MM20 2022-12-13 18:14:16 +01:00
parent 7a739fcf23
commit 491ef9168c
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
4 changed files with 346 additions and 326 deletions

View File

@ -86,16 +86,16 @@ task projectDependencyGraph {
traits.add('shape=box') traits.add('shape=box')
} }
if (multiplatformProjects.contains(project)) { if (project.getPath().startsWith(":core")) {
traits.add('fillcolor="#ffd2b3"') traits.add('fillcolor="#94c1ff"')
} else if (jsProjects.contains(project)) { } else if (project.getPath().startsWith(":app")) {
traits.add('fillcolor="#ffffba"')
} else if (androidProjects.contains(project)) {
traits.add('fillcolor="#baffc9"') traits.add('fillcolor="#baffc9"')
} else if (javaProjects.contains(project)) { } else if (project.getPath().startsWith(":data")) {
traits.add('fillcolor="#ffb3ba"') traits.add('fillcolor="#fff694"')
} else { } else if (project.getPath().startsWith(":services")) {
traits.add('fillcolor="#eeeeee"') traits.add('fillcolor="#ff9498"')
} else if (project.getPath().startsWith(":libs")) {
traits.add('fillcolor="#ad94ff"')
} }
dot << " \"${project.path}\" [${traits.join(", ")}];\n" dot << " \"${project.path}\" [${traits.join(", ")}];\n"

View File

@ -4,45 +4,53 @@ sidebar_position: 3
# Modules # Modules
The source code consists of a number of Gradle submodules which all depend on each other in some way or another: The project contains of multiple Gradle modules. The structure is kinde scuffed because I didn't know shit when I
started this project so future refacorings are to be expected. This is the current structure:
- `:app`:
- `:app`: The app module. Contains almost nothing except for the `Application` class (`de.mm20.launcher2.LauncherApplication`)
- `:ui`: Contains almost the entire user interface (except for account sign-in UIs). The only module that uses Jetpack Compose.
- `:services`: Higher level APIs for the app's business logic
- `:accounts`: Common APIs to manage different account types (Google, Microsoft, Nextcloud, …)
- `:backup`: Backup and restore functionality
- `:badges`: Provide different types of badges that are displayed on app icons
- `:icons`: Used to retrieve icons for items. Handles icon packs, themed icons and also custom icons (on a higher level)
- `:music`: Manage media sessions and extract metadata
- `:search`: The search.
- `:tags`: Edit, copy and delete tags
- `:data`: Lower level APIs for CRUD operations for different kinds of data. Most of these should be refactored.
- `:applications`: Installed apps and app search
- `:appshortcuts`: Query apps shortcuts for apps and shortcut search
- `:calendar`: query calendar events for the calendar widget and calendar search
- `:calculator`: Implements the calculator. Should probably be moved to `:services`
- `:unitconverter`: Unit and currency converter. Should probably be moved to `:services`
- `:contacts`: Query contacts on the device
- `:currencies`: APIs to fetch currency conversion rates, used by `:data:unitconverter`
- `:customattrs`: common (low-level) APIs to store per-app customizations (custom labels, custom icons, tags)
- `:favorites`: Handles pinned, frequently used and hidden items and serialization / deserialization of items. Depends on most of the search modules (`:applications`, `:calendar`, `:contacts`, etc.)´. This module needs to be refactored and split into at least two different modules.
- `:files`: Manage and find files (local and cloud)
- `:notifications`: APIs to read notifications. Contains the app's `NotificationListenerService`
- `:websites`: Website search
- `:weather`: APIs to fetch weather data
- `:widgets`: Manages configuration of widgets (which widgets and which order). Actual widget implementation (for built-in widgets) is in `:ui`.
- `:wikipedia`: APIs to search Wikipedia
- `:core`
- `:base`: Commonly used data classes, helper functions and utilities. Also icon resources (if they do not need localization).
- `:i18n`: All resources that require localization. Mainly strings but can also be used for icon resources if they need localization.
- `:ktx`: Commonly used Kotlin extension functions
- `:compat`: Compatibility helpers for old Android versions
- `:crashreporter`: Crash reporter; based on https://github.com/MindorksOpenSource/CrashReporter
- `:permissions`: Request and observe permission status for this app
- `:preferences`: Store user preferences; uses AndroidX Datastore
- `:database`: the launcher database, uses AndroidX Room
- `:libs`: Somewhat standalone modules and 3rd party libraries that do not depend on `:core:base`
- `:g-services`: Google APIs and Google sign-in; used by `:accounts` and `:files`
- `:ms-services`: Microsoft APIs and Microsoft sign-in; used by `:accounts` and `:files`
- `:material-color-utilities`: This library: https://github.com/material-foundation/material-color-utilities (not available as Gradle package yet)
- `:webdav`: common APIs for WebDAV search, used by `:nextcloud` and `:owncloud`
- `:nextcloud`: Nextcloud APIs and Nextcloud sign-in; used by `:accounts` and `:files`
- `:owncloud`: Owncloud APIs and Owncloud sign-in; used by `:accounts` and `:files`
- `:accounts`: Common APIs to manage different account types (Google, Microsoft, Nextcloud, …)
- `:app`: The app module. Contains almost nothing except for the `Application` class (`de.mm20.launcher2.LauncherApplication`)
- `:applications`: Installed apps and app search
- `:appshortcuts`: Query apps shortcuts for apps and shortcut search
- `:backup`: Backup and restore functionality
- `:badges`: Provide different types of badges that are displayed on app icons
- `:base`: Commonly used data classes, helper functions and utilities. Also icon resources (if they do not need localization).
- `:calculator`: Implements the calculator
- `:calendar`: query calendar events for the calendar widget and calendar search
- `:compat`: Compatibility helpers for old Android versions
- `:contacts`: Query contacts on the device
- `:crashreporter`: Crash reporter; based on https://github.com/MindorksOpenSource/CrashReporter
- `:currencies`: APIs to fetch currency conversion rates, used by `:unitconverter`
- `:customattrs`: common (low-level) APIs to store per-app customizations (custom labels, custom icons, tags)
- `:database`: the launcher database, uses AndroidX Room
- `:favorites`: Handles pinned, frequently used and hidden items and serialization / deserialization of items. Depends on most of the search modules (`:apps`, `:calendar`, `:contacts`, etc.)
- `:files`: Manage and find files (local and cloud)
- `:g-services`: Google APIs and Google sign-in; used by `:accounts` and `:files`
- `:i18n`: All resources that require localization. Mainly strings but can also be used for icon resources if they need localization.
- `:icons`: Used to retrieve icons for items. Handles icon packs, themed icons and also custom icons (on a higher level)
- `:ktx`: Commonly used Kotlin extension functions
- `:material-color-utilities`: This library: https://github.com/material-foundation/material-color-utilities (not available as Gradle package yet)
- `:ms-services`: Microsoft APIs and Microsoft sign-in; used by `:accounts` and `:files`
- `:music`: Manage media sessions and extract metadata
- `:nextcloud`: Nextcloud APIs and Nextcloud sign-in; used by `:accounts` and `:files`
- `:notifications`: APIs to read notifications. Contains the app's `NotificationListenerService`
- `:owncloud`: Owncloud APIs and Owncloud sign-in; used by `:accounts` and `:files`
- `:permissions`: Request and observe permission status for this app
- `:preferences`: Store user preferences; uses AndroidX Datastore
- `:search`: The search. Also websearches.
- `:ui`: Contains almost the entire user interface (except for account sign-in UIs). Uses Jetpack Compose.
- `:unitconverter`: Unit and currency converter
- `:weather`: APIs to fetch weather data
- `:webdav`: common APIs for WebDAV search, used by `:nextcloud` and `:owncloud`
- `:websites`: Website search
- `:widgets`: Manages configuration of widgets (which widgets and which order). Actual widget implementation (for built-in widgets) is in `:ui`.
- `:wikipedia`: APIs to search Wikipedia
Most of the modules have a `Module.kt` file in their root which contains Koin definitions to make the APIs accessable for other modules. Most of the modules have a `Module.kt` file in their root which contains Koin definitions to make the APIs accessable for other modules.

View File

@ -5,288 +5,300 @@ digraph {
# Projects # Projects
":accounts" [fillcolor="#baffc9"]; ":app:app" [fillcolor="#baffc9"];
":app" [fillcolor="#baffc9"]; ":app:ui" [fillcolor="#baffc9"];
":applications" [fillcolor="#baffc9"]; ":core:base" [fillcolor="#94c1ff"];
":appshortcuts" [fillcolor="#baffc9"]; ":core:compat" [fillcolor="#94c1ff"];
":backup" [fillcolor="#baffc9"]; ":core:crashreporter" [fillcolor="#94c1ff"];
":badges" [fillcolor="#baffc9"]; ":core:database" [fillcolor="#94c1ff"];
":base" [fillcolor="#baffc9"]; ":core:i18n" [fillcolor="#94c1ff"];
":calculator" [fillcolor="#baffc9"]; ":core:ktx" [fillcolor="#94c1ff"];
":calendar" [fillcolor="#baffc9"]; ":core:permissions" [fillcolor="#94c1ff"];
":compat" [fillcolor="#baffc9"]; ":core:preferences" [fillcolor="#94c1ff"];
":contacts" [fillcolor="#baffc9"]; ":data:applications" [fillcolor="#fff694"];
":crashreporter" [fillcolor="#baffc9"]; ":data:appshortcuts" [fillcolor="#fff694"];
":currencies" [fillcolor="#baffc9"]; ":data:calculator" [fillcolor="#fff694"];
":customattrs" [fillcolor="#baffc9"]; ":data:calendar" [fillcolor="#fff694"];
":database" [fillcolor="#baffc9"]; ":data:contacts" [fillcolor="#fff694"];
":favorites" [fillcolor="#baffc9"]; ":data:currencies" [fillcolor="#fff694"];
":files" [fillcolor="#baffc9"]; ":data:customattrs" [fillcolor="#fff694"];
":g-services" [fillcolor="#baffc9"]; ":data:favorites" [fillcolor="#fff694"];
":i18n" [fillcolor="#baffc9"]; ":data:files" [fillcolor="#fff694"];
":icons" [fillcolor="#baffc9"]; ":data:notifications" [fillcolor="#fff694"];
":ktx" [fillcolor="#baffc9"]; ":data:search-actions" [fillcolor="#fff694"];
":material-color-utilities" [fillcolor="#baffc9"]; ":data:unitconverter" [fillcolor="#fff694"];
":ms-services" [fillcolor="#baffc9"]; ":data:weather" [fillcolor="#fff694"];
":music" [fillcolor="#baffc9"]; ":data:websites" [fillcolor="#fff694"];
":nextcloud" [fillcolor="#baffc9"]; ":data:widgets" [fillcolor="#fff694"];
":notifications" [fillcolor="#baffc9"]; ":data:wikipedia" [fillcolor="#fff694"];
":owncloud" [fillcolor="#baffc9"]; ":libs:g-services" [fillcolor="#ad94ff"];
":permissions" [fillcolor="#baffc9"]; ":libs:material-color-utilities" [fillcolor="#ad94ff"];
":preferences" [fillcolor="#baffc9"]; ":libs:ms-services" [fillcolor="#ad94ff"];
":search" [fillcolor="#baffc9"]; ":libs:nextcloud" [fillcolor="#ad94ff"];
":ui" [fillcolor="#baffc9"]; ":libs:owncloud" [fillcolor="#ad94ff"];
":unitconverter" [fillcolor="#baffc9"]; ":libs:webdav" [fillcolor="#ad94ff"];
":weather" [fillcolor="#baffc9"]; ":services:accounts" [fillcolor="#ff9498"];
":webdav" [fillcolor="#baffc9"]; ":services:backup" [fillcolor="#ff9498"];
":websites" [fillcolor="#baffc9"]; ":services:badges" [fillcolor="#ff9498"];
":widgets" [fillcolor="#baffc9"]; ":services:icons" [fillcolor="#ff9498"];
":wikipedia" [fillcolor="#baffc9"]; ":services:music" [fillcolor="#ff9498"];
":services:search" [fillcolor="#ff9498"];
":services:tags" [fillcolor="#ff9498"];
{rank = same;} {rank = same;}
# Dependencies # Dependencies
":accounts" -> ":accounts" ":app:app" -> ":app:app"
":accounts" -> ":g-services" [style=dotted] ":app:app" -> ":services:accounts" [style=dotted]
":accounts" -> ":ms-services" [style=dotted] ":app:app" -> ":data:applications" [style=dotted]
":accounts" -> ":owncloud" [style=dotted] ":app:app" -> ":data:appshortcuts" [style=dotted]
":accounts" -> ":nextcloud" [style=dotted] ":app:app" -> ":services:backup" [style=dotted]
":app" -> ":app" ":app:app" -> ":services:badges" [style=dotted]
":app" -> ":accounts" [style=dotted] ":app:app" -> ":core:base" [style=dotted]
":app" -> ":applications" [style=dotted] ":app:app" -> ":data:calculator" [style=dotted]
":app" -> ":appshortcuts" [style=dotted] ":app:app" -> ":data:calendar" [style=dotted]
":app" -> ":backup" [style=dotted] ":app:app" -> ":data:contacts" [style=dotted]
":app" -> ":badges" [style=dotted] ":app:app" -> ":core:crashreporter" [style=dotted]
":app" -> ":base" [style=dotted] ":app:app" -> ":data:currencies" [style=dotted]
":app" -> ":calculator" [style=dotted] ":app:app" -> ":data:customattrs" [style=dotted]
":app" -> ":calendar" [style=dotted] ":app:app" -> ":data:favorites" [style=dotted]
":app" -> ":contacts" [style=dotted] ":app:app" -> ":data:files" [style=dotted]
":app" -> ":crashreporter" [style=dotted] ":app:app" -> ":libs:g-services" [style=dotted]
":app" -> ":currencies" [style=dotted] ":app:app" -> ":core:i18n" [style=dotted]
":app" -> ":customattrs" [style=dotted] ":app:app" -> ":services:icons" [style=dotted]
":app" -> ":favorites" [style=dotted] ":app:app" -> ":core:ktx" [style=dotted]
":app" -> ":files" [style=dotted] ":app:app" -> ":libs:ms-services" [style=dotted]
":app" -> ":g-services" [style=dotted] ":app:app" -> ":services:music" [style=dotted]
":app" -> ":i18n" [style=dotted] ":app:app" -> ":libs:nextcloud" [style=dotted]
":app" -> ":icons" [style=dotted] ":app:app" -> ":data:notifications" [style=dotted]
":app" -> ":ktx" [style=dotted] ":app:app" -> ":libs:owncloud" [style=dotted]
":app" -> ":ms-services" [style=dotted] ":app:app" -> ":core:permissions" [style=dotted]
":app" -> ":music" [style=dotted] ":app:app" -> ":core:preferences" [style=dotted]
":app" -> ":nextcloud" [style=dotted] ":app:app" -> ":services:search" [style=dotted]
":app" -> ":notifications" [style=dotted] ":app:app" -> ":data:unitconverter" [style=dotted]
":app" -> ":owncloud" [style=dotted] ":app:app" -> ":app:ui" [style=dotted]
":app" -> ":permissions" [style=dotted] ":app:app" -> ":data:weather" [style=dotted]
":app" -> ":preferences" [style=dotted] ":app:app" -> ":data:websites" [style=dotted]
":app" -> ":search" [style=dotted] ":app:app" -> ":data:widgets" [style=dotted]
":app" -> ":unitconverter" [style=dotted] ":app:app" -> ":data:wikipedia" [style=dotted]
":app" -> ":ui" [style=dotted] ":app:app" -> ":core:database" [style=dotted]
":app" -> ":weather" [style=dotted] ":app:app" -> ":data:search-actions" [style=dotted]
":app" -> ":websites" [style=dotted] ":app:ui" -> ":app:ui"
":app" -> ":widgets" [style=dotted] ":app:ui" -> ":libs:material-color-utilities" [style=dotted]
":app" -> ":wikipedia" [style=dotted] ":app:ui" -> ":core:base" [style=dotted]
":app" -> ":database" [style=dotted] ":app:ui" -> ":core:i18n" [style=dotted]
":applications" -> ":applications" ":app:ui" -> ":core:compat" [style=dotted]
":applications" -> ":base" [style=dotted] ":app:ui" -> ":core:ktx" [style=dotted]
":applications" -> ":ktx" [style=dotted] ":app:ui" -> ":services:icons" [style=dotted]
":applications" -> ":compat" [style=dotted] ":app:ui" -> ":services:music" [style=dotted]
":appshortcuts" -> ":appshortcuts" ":app:ui" -> ":data:weather" [style=dotted]
":appshortcuts" -> ":applications" [style=dotted] ":app:ui" -> ":data:calendar" [style=dotted]
":appshortcuts" -> ":permissions" [style=dotted] ":app:ui" -> ":services:search" [style=dotted]
":appshortcuts" -> ":base" [style=dotted] ":app:ui" -> ":core:preferences" [style=dotted]
":appshortcuts" -> ":ktx" [style=dotted] ":app:ui" -> ":data:applications" [style=dotted]
":backup" -> ":backup" ":app:ui" -> ":data:appshortcuts" [style=dotted]
":backup" -> ":favorites" [style=dotted] ":app:ui" -> ":data:calculator" [style=dotted]
":backup" -> ":widgets" [style=dotted] ":app:ui" -> ":data:files" [style=dotted]
":backup" -> ":search" [style=dotted] ":app:ui" -> ":data:widgets" [style=dotted]
":backup" -> ":preferences" [style=dotted] ":app:ui" -> ":data:favorites" [style=dotted]
":backup" -> ":ktx" [style=dotted] ":app:ui" -> ":data:wikipedia" [style=dotted]
":backup" -> ":customattrs" [style=dotted] ":app:ui" -> ":services:badges" [style=dotted]
":badges" -> ":badges" ":app:ui" -> ":core:crashreporter" [style=dotted]
":badges" -> ":ktx" [style=dotted] ":app:ui" -> ":data:notifications" [style=dotted]
":badges" -> ":applications" [style=dotted] ":app:ui" -> ":data:contacts" [style=dotted]
":badges" -> ":appshortcuts" [style=dotted] ":app:ui" -> ":core:permissions" [style=dotted]
":badges" -> ":notifications" [style=dotted] ":app:ui" -> ":data:websites" [style=dotted]
":badges" -> ":preferences" [style=dotted] ":app:ui" -> ":data:unitconverter" [style=dotted]
":badges" -> ":base" [style=dotted] ":app:ui" -> ":libs:nextcloud" [style=dotted]
":badges" -> ":files" [style=dotted] ":app:ui" -> ":libs:g-services" [style=dotted]
":base" -> ":base" ":app:ui" -> ":libs:ms-services" [style=dotted]
":base" -> ":ktx" [style=dotted] ":app:ui" -> ":libs:owncloud" [style=dotted]
":base" -> ":i18n" [style=dotted] ":app:ui" -> ":services:accounts" [style=dotted]
":calculator" -> ":calculator" ":app:ui" -> ":services:backup" [style=dotted]
":calculator" -> ":base" [style=dotted] ":app:ui" -> ":data:search-actions" [style=dotted]
":calendar" -> ":calendar" ":core:base" -> ":core:base"
":calendar" -> ":ktx" [style=dotted] ":core:base" -> ":core:ktx" [style=dotted]
":calendar" -> ":base" [style=dotted] ":core:base" -> ":core:i18n" [style=dotted]
":calendar" -> ":permissions" [style=dotted] ":core:compat" -> ":core:compat"
":calendar" -> ":material-color-utilities" [style=dotted] ":core:crashreporter" -> ":core:crashreporter"
":compat" -> ":compat" ":core:crashreporter" -> ":core:base" [style=dotted]
":contacts" -> ":contacts" ":core:database" -> ":core:database"
":contacts" -> ":ktx" [style=dotted] ":core:database" -> ":core:i18n" [style=dotted]
":contacts" -> ":base" [style=dotted] ":core:database" -> ":core:ktx" [style=dotted]
":contacts" -> ":permissions" [style=dotted] ":core:i18n" -> ":core:i18n"
":crashreporter" -> ":crashreporter" ":core:ktx" -> ":core:ktx"
":crashreporter" -> ":base" [style=dotted] ":core:permissions" -> ":core:permissions"
":currencies" -> ":currencies" ":core:permissions" -> ":core:ktx" [style=dotted]
":currencies" -> ":ktx" [style=dotted] ":core:permissions" -> ":core:base" [style=dotted]
":currencies" -> ":i18n" [style=dotted] ":core:permissions" -> ":core:crashreporter" [style=dotted]
":currencies" -> ":database" [style=dotted] ":core:preferences" -> ":core:preferences"
":currencies" -> ":crashreporter" [style=dotted] ":core:preferences" -> ":core:ktx" [style=dotted]
":customattrs" -> ":customattrs" ":core:preferences" -> ":core:i18n" [style=dotted]
":customattrs" -> ":database" [style=dotted] ":core:preferences" -> ":core:base" [style=dotted]
":customattrs" -> ":base" [style=dotted] ":core:preferences" -> ":core:crashreporter" [style=dotted]
":customattrs" -> ":ktx" [style=dotted] ":core:preferences" -> ":libs:material-color-utilities" [style=dotted]
":customattrs" -> ":crashreporter" [style=dotted] ":data:applications" -> ":data:applications"
":customattrs" -> ":favorites" [style=dotted] ":data:applications" -> ":core:base" [style=dotted]
":database" -> ":database" ":data:applications" -> ":core:ktx" [style=dotted]
":database" -> ":i18n" [style=dotted] ":data:applications" -> ":core:compat" [style=dotted]
":database" -> ":ktx" [style=dotted] ":data:appshortcuts" -> ":data:appshortcuts"
":favorites" -> ":favorites" ":data:appshortcuts" -> ":data:applications" [style=dotted]
":favorites" -> ":base" [style=dotted] ":data:appshortcuts" -> ":core:permissions" [style=dotted]
":favorites" -> ":calendar" [style=dotted] ":data:appshortcuts" -> ":core:base" [style=dotted]
":favorites" -> ":database" [style=dotted] ":data:appshortcuts" -> ":core:ktx" [style=dotted]
":favorites" -> ":preferences" [style=dotted] ":data:calculator" -> ":data:calculator"
":favorites" -> ":applications" [style=dotted] ":data:calculator" -> ":core:base" [style=dotted]
":favorites" -> ":appshortcuts" [style=dotted] ":data:calendar" -> ":data:calendar"
":favorites" -> ":contacts" [style=dotted] ":data:calendar" -> ":core:ktx" [style=dotted]
":favorites" -> ":ktx" [style=dotted] ":data:calendar" -> ":core:base" [style=dotted]
":favorites" -> ":files" [style=dotted] ":data:calendar" -> ":core:permissions" [style=dotted]
":favorites" -> ":websites" [style=dotted] ":data:calendar" -> ":libs:material-color-utilities" [style=dotted]
":favorites" -> ":wikipedia" [style=dotted] ":data:contacts" -> ":data:contacts"
":favorites" -> ":badges" [style=dotted] ":data:contacts" -> ":core:ktx" [style=dotted]
":favorites" -> ":crashreporter" [style=dotted] ":data:contacts" -> ":core:base" [style=dotted]
":files" -> ":files" ":data:contacts" -> ":core:permissions" [style=dotted]
":files" -> ":base" [style=dotted] ":data:currencies" -> ":data:currencies"
":files" -> ":ktx" [style=dotted] ":data:currencies" -> ":core:ktx" [style=dotted]
":files" -> ":ms-services" [style=dotted] ":data:currencies" -> ":core:i18n" [style=dotted]
":files" -> ":g-services" [style=dotted] ":data:currencies" -> ":core:database" [style=dotted]
":files" -> ":nextcloud" [style=dotted] ":data:currencies" -> ":core:crashreporter" [style=dotted]
":files" -> ":owncloud" [style=dotted] ":data:customattrs" -> ":data:customattrs"
":files" -> ":i18n" [style=dotted] ":data:customattrs" -> ":core:database" [style=dotted]
":files" -> ":permissions" [style=dotted] ":data:customattrs" -> ":core:base" [style=dotted]
":g-services" -> ":g-services" ":data:customattrs" -> ":core:ktx" [style=dotted]
":g-services" -> ":i18n" [style=dotted] ":data:customattrs" -> ":core:crashreporter" [style=dotted]
":g-services" -> ":crashreporter" [style=dotted] ":data:customattrs" -> ":data:favorites" [style=dotted]
":i18n" -> ":i18n" ":data:favorites" -> ":data:favorites"
":icons" -> ":customattrs" ":data:favorites" -> ":core:base" [style=dotted]
":icons" -> ":icons" ":data:favorites" -> ":data:calendar" [style=dotted]
":icons" -> ":database" [style=dotted] ":data:favorites" -> ":core:database" [style=dotted]
":icons" -> ":preferences" [style=dotted] ":data:favorites" -> ":core:preferences" [style=dotted]
":icons" -> ":ktx" [style=dotted] ":data:favorites" -> ":data:applications" [style=dotted]
":icons" -> ":base" [style=dotted] ":data:favorites" -> ":data:appshortcuts" [style=dotted]
":icons" -> ":applications" [style=dotted] ":data:favorites" -> ":data:contacts" [style=dotted]
":icons" -> ":crashreporter" [style=dotted] ":data:favorites" -> ":core:ktx" [style=dotted]
":ktx" -> ":ktx" ":data:favorites" -> ":data:files" [style=dotted]
":material-color-utilities" -> ":material-color-utilities" ":data:favorites" -> ":data:websites" [style=dotted]
":ms-services" -> ":ms-services" ":data:favorites" -> ":data:wikipedia" [style=dotted]
":ms-services" -> ":crashreporter" [style=dotted] ":data:favorites" -> ":services:badges" [style=dotted]
":ms-services" -> ":preferences" [style=dotted] ":data:favorites" -> ":core:crashreporter" [style=dotted]
":music" -> ":music" ":data:files" -> ":data:files"
":music" -> ":ktx" [style=dotted] ":data:files" -> ":core:base" [style=dotted]
":music" -> ":preferences" [style=dotted] ":data:files" -> ":core:ktx" [style=dotted]
":music" -> ":notifications" [style=dotted] ":data:files" -> ":libs:ms-services" [style=dotted]
":music" -> ":crashreporter" [style=dotted] ":data:files" -> ":libs:g-services" [style=dotted]
":nextcloud" -> ":webdav" ":data:files" -> ":libs:nextcloud" [style=dotted]
":nextcloud" -> ":nextcloud" ":data:files" -> ":libs:owncloud" [style=dotted]
":nextcloud" -> ":base" [style=dotted] ":data:files" -> ":core:i18n" [style=dotted]
":nextcloud" -> ":i18n" [style=dotted] ":data:files" -> ":core:permissions" [style=dotted]
":notifications" -> ":notifications" ":data:notifications" -> ":data:notifications"
":notifications" -> ":preferences" [style=dotted] ":data:notifications" -> ":core:permissions" [style=dotted]
":notifications" -> ":permissions" [style=dotted] ":data:search-actions" -> ":data:search-actions"
":owncloud" -> ":webdav" ":data:search-actions" -> ":core:base" [style=dotted]
":owncloud" -> ":owncloud" ":data:search-actions" -> ":core:database" [style=dotted]
":owncloud" -> ":base" [style=dotted] ":data:search-actions" -> ":core:ktx" [style=dotted]
":owncloud" -> ":crashreporter" [style=dotted] ":data:search-actions" -> ":core:preferences" [style=dotted]
":owncloud" -> ":ktx" [style=dotted] ":data:search-actions" -> ":core:crashreporter" [style=dotted]
":owncloud" -> ":i18n" [style=dotted] ":data:unitconverter" -> ":data:unitconverter"
":permissions" -> ":permissions" ":data:unitconverter" -> ":core:preferences" [style=dotted]
":permissions" -> ":ktx" [style=dotted] ":data:unitconverter" -> ":data:currencies" [style=dotted]
":permissions" -> ":base" [style=dotted] ":data:unitconverter" -> ":core:base" [style=dotted]
":permissions" -> ":crashreporter" [style=dotted] ":data:unitconverter" -> ":core:i18n" [style=dotted]
":preferences" -> ":preferences" ":data:weather" -> ":data:weather"
":preferences" -> ":ktx" [style=dotted] ":data:weather" -> ":core:database" [style=dotted]
":preferences" -> ":i18n" [style=dotted] ":data:weather" -> ":core:ktx" [style=dotted]
":preferences" -> ":base" [style=dotted] ":data:weather" -> ":core:crashreporter" [style=dotted]
":preferences" -> ":crashreporter" [style=dotted] ":data:weather" -> ":core:preferences" [style=dotted]
":preferences" -> ":material-color-utilities" [style=dotted] ":data:weather" -> ":core:permissions" [style=dotted]
":search" -> ":search" ":data:weather" -> ":core:i18n" [style=dotted]
":search" -> ":applications" [style=dotted] ":data:websites" -> ":data:websites"
":search" -> ":appshortcuts" [style=dotted] ":data:websites" -> ":core:base" [style=dotted]
":search" -> ":calculator" [style=dotted] ":data:websites" -> ":core:ktx" [style=dotted]
":search" -> ":calendar" [style=dotted] ":data:widgets" -> ":data:widgets"
":search" -> ":contacts" [style=dotted] ":data:widgets" -> ":data:weather" [style=dotted]
":search" -> ":files" [style=dotted] ":data:widgets" -> ":data:calendar" [style=dotted]
":search" -> ":unitconverter" [style=dotted] ":data:widgets" -> ":services:music" [style=dotted]
":search" -> ":websites" [style=dotted] ":data:widgets" -> ":core:ktx" [style=dotted]
":search" -> ":wikipedia" [style=dotted] ":data:widgets" -> ":core:base" [style=dotted]
":search" -> ":customattrs" [style=dotted] ":data:widgets" -> ":core:preferences" [style=dotted]
":search" -> ":base" [style=dotted] ":data:widgets" -> ":core:database" [style=dotted]
":search" -> ":database" [style=dotted] ":data:widgets" -> ":core:crashreporter" [style=dotted]
":search" -> ":preferences" [style=dotted] ":data:wikipedia" -> ":data:wikipedia"
":search" -> ":crashreporter" [style=dotted] ":data:wikipedia" -> ":core:preferences" [style=dotted]
":search" -> ":ktx" [style=dotted] ":data:wikipedia" -> ":core:base" [style=dotted]
":ui" -> ":ui" ":data:wikipedia" -> ":core:ktx" [style=dotted]
":ui" -> ":material-color-utilities" [style=dotted] ":data:wikipedia" -> ":core:crashreporter" [style=dotted]
":ui" -> ":base" [style=dotted] ":libs:g-services" -> ":libs:g-services"
":ui" -> ":i18n" [style=dotted] ":libs:g-services" -> ":core:i18n" [style=dotted]
":ui" -> ":compat" [style=dotted] ":libs:g-services" -> ":core:crashreporter" [style=dotted]
":ui" -> ":ktx" [style=dotted] ":libs:material-color-utilities" -> ":libs:material-color-utilities"
":ui" -> ":icons" [style=dotted] ":libs:ms-services" -> ":libs:ms-services"
":ui" -> ":music" [style=dotted] ":libs:ms-services" -> ":core:crashreporter" [style=dotted]
":ui" -> ":weather" [style=dotted] ":libs:nextcloud" -> ":libs:webdav"
":ui" -> ":calendar" [style=dotted] ":libs:nextcloud" -> ":libs:nextcloud"
":ui" -> ":search" [style=dotted] ":libs:nextcloud" -> ":core:i18n" [style=dotted]
":ui" -> ":preferences" [style=dotted] ":libs:owncloud" -> ":libs:webdav"
":ui" -> ":applications" [style=dotted] ":libs:owncloud" -> ":libs:owncloud"
":ui" -> ":appshortcuts" [style=dotted] ":libs:owncloud" -> ":core:crashreporter" [style=dotted]
":ui" -> ":calculator" [style=dotted] ":libs:owncloud" -> ":core:ktx" [style=dotted]
":ui" -> ":files" [style=dotted] ":libs:owncloud" -> ":core:i18n" [style=dotted]
":ui" -> ":widgets" [style=dotted] ":libs:webdav" -> ":libs:webdav"
":ui" -> ":favorites" [style=dotted] ":libs:webdav" -> ":core:crashreporter" [style=dotted]
":ui" -> ":wikipedia" [style=dotted] ":libs:webdav" -> ":core:ktx" [style=dotted]
":ui" -> ":badges" [style=dotted] ":services:accounts" -> ":services:accounts"
":ui" -> ":crashreporter" [style=dotted] ":services:accounts" -> ":libs:g-services" [style=dotted]
":ui" -> ":notifications" [style=dotted] ":services:accounts" -> ":libs:ms-services" [style=dotted]
":ui" -> ":contacts" [style=dotted] ":services:accounts" -> ":libs:owncloud" [style=dotted]
":ui" -> ":permissions" [style=dotted] ":services:accounts" -> ":libs:nextcloud" [style=dotted]
":ui" -> ":websites" [style=dotted] ":services:backup" -> ":services:backup"
":ui" -> ":unitconverter" [style=dotted] ":services:backup" -> ":data:favorites" [style=dotted]
":ui" -> ":nextcloud" [style=dotted] ":services:backup" -> ":data:widgets" [style=dotted]
":ui" -> ":g-services" [style=dotted] ":services:backup" -> ":data:search-actions" [style=dotted]
":ui" -> ":ms-services" [style=dotted] ":services:backup" -> ":core:preferences" [style=dotted]
":ui" -> ":owncloud" [style=dotted] ":services:backup" -> ":core:ktx" [style=dotted]
":ui" -> ":accounts" [style=dotted] ":services:backup" -> ":data:customattrs" [style=dotted]
":ui" -> ":backup" [style=dotted] ":services:badges" -> ":services:badges"
":unitconverter" -> ":unitconverter" ":services:badges" -> ":core:ktx" [style=dotted]
":unitconverter" -> ":preferences" [style=dotted] ":services:badges" -> ":data:applications" [style=dotted]
":unitconverter" -> ":currencies" [style=dotted] ":services:badges" -> ":data:appshortcuts" [style=dotted]
":unitconverter" -> ":base" [style=dotted] ":services:badges" -> ":data:notifications" [style=dotted]
":unitconverter" -> ":i18n" [style=dotted] ":services:badges" -> ":core:preferences" [style=dotted]
":weather" -> ":weather" ":services:badges" -> ":core:base" [style=dotted]
":weather" -> ":database" [style=dotted] ":services:badges" -> ":data:files" [style=dotted]
":weather" -> ":ktx" [style=dotted] ":services:icons" -> ":data:customattrs"
":weather" -> ":crashreporter" [style=dotted] ":services:icons" -> ":services:icons"
":weather" -> ":preferences" [style=dotted] ":services:icons" -> ":core:database" [style=dotted]
":weather" -> ":permissions" [style=dotted] ":services:icons" -> ":core:preferences" [style=dotted]
":weather" -> ":i18n" [style=dotted] ":services:icons" -> ":core:ktx" [style=dotted]
":webdav" -> ":webdav" ":services:icons" -> ":core:base" [style=dotted]
":webdav" -> ":crashreporter" [style=dotted] ":services:icons" -> ":data:applications" [style=dotted]
":webdav" -> ":ktx" [style=dotted] ":services:icons" -> ":core:crashreporter" [style=dotted]
":websites" -> ":websites" ":services:music" -> ":services:music"
":websites" -> ":base" [style=dotted] ":services:music" -> ":core:ktx" [style=dotted]
":websites" -> ":ktx" [style=dotted] ":services:music" -> ":core:preferences" [style=dotted]
":widgets" -> ":widgets" ":services:music" -> ":data:notifications" [style=dotted]
":widgets" -> ":weather" [style=dotted] ":services:music" -> ":core:crashreporter" [style=dotted]
":widgets" -> ":calendar" [style=dotted] ":services:search" -> ":services:search"
":widgets" -> ":music" [style=dotted] ":services:search" -> ":data:applications" [style=dotted]
":widgets" -> ":ktx" [style=dotted] ":services:search" -> ":data:appshortcuts" [style=dotted]
":widgets" -> ":base" [style=dotted] ":services:search" -> ":data:calculator" [style=dotted]
":widgets" -> ":preferences" [style=dotted] ":services:search" -> ":data:calendar" [style=dotted]
":widgets" -> ":database" [style=dotted] ":services:search" -> ":data:contacts" [style=dotted]
":widgets" -> ":crashreporter" [style=dotted] ":services:search" -> ":data:files" [style=dotted]
":wikipedia" -> ":wikipedia" ":services:search" -> ":data:unitconverter" [style=dotted]
":wikipedia" -> ":preferences" [style=dotted] ":services:search" -> ":data:websites" [style=dotted]
":wikipedia" -> ":base" [style=dotted] ":services:search" -> ":data:wikipedia" [style=dotted]
":wikipedia" -> ":ktx" [style=dotted] ":services:search" -> ":data:customattrs" [style=dotted]
":wikipedia" -> ":crashreporter" [style=dotted] ":services:search" -> ":data:search-actions" [style=dotted]
":services:search" -> ":core:base" [style=dotted]
":services:search" -> ":core:database" [style=dotted]
":services:search" -> ":core:preferences" [style=dotted]
":services:search" -> ":core:crashreporter" [style=dotted]
":services:search" -> ":core:ktx" [style=dotted]
":services:tags" -> ":services:tags"
":services:tags" -> ":core:preferences" [style=dotted]
":services:tags" -> ":core:base" [style=dotted]
":services:tags" -> ":core:ktx" [style=dotted]
":services:tags" -> ":core:crashreporter" [style=dotted]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB