├── settings.gradle ├── metadata └── en-US │ ├── title.txt │ ├── images │ ├── icon.png │ ├── icon-raw.png │ └── phoneScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ └── 9.png │ └── short_description.txt ├── .gitignore ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── app ├── src │ ├── main │ │ ├── ic_launcher-playstore.png │ │ ├── res │ │ │ ├── drawable │ │ │ │ ├── backup_ok.png │ │ │ │ ├── backup_not_ok.png │ │ │ │ ├── widget_preview.png │ │ │ │ ├── side_nav_bar.xml │ │ │ │ ├── ic_navigate_arrow_left.xml │ │ │ │ ├── item_drawable.xml │ │ │ │ ├── widget_background.xml │ │ │ │ ├── ic_calendar_recenter_left.xml │ │ │ │ ├── ic_calendar_recenter_right.xml │ │ │ │ ├── ic_navigate_arrow_right.xml │ │ │ │ ├── ic_download.xml │ │ │ │ ├── ic_menu_box_closed.xml │ │ │ │ └── ic_menu_box_open.xml │ │ │ ├── drawable-hdpi │ │ │ │ ├── ic_play.png │ │ │ │ ├── ic_stop.png │ │ │ │ ├── ic_menu_add.png │ │ │ │ ├── ic_menu_edit.png │ │ │ │ ├── ic_menu_mark.png │ │ │ │ ├── ic_menu_star.png │ │ │ │ ├── ic_menu_agenda.png │ │ │ │ ├── ic_menu_compass.png │ │ │ │ ├── ic_menu_delete.png │ │ │ │ ├── ic_menu_forward.png │ │ │ │ ├── ic_menu_revert.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_menu_info_details.png │ │ │ │ ├── ic_menu_mylocation.png │ │ │ │ ├── ic_menu_preferences.png │ │ │ │ ├── ic_menu_sort_by_size.png │ │ │ │ └── ic_menu_close_clear_cancel.png │ │ │ ├── drawable-ldpi │ │ │ │ ├── ic_play.png │ │ │ │ ├── ic_stop.png │ │ │ │ ├── ic_menu_add.png │ │ │ │ ├── ic_menu_edit.png │ │ │ │ ├── ic_menu_mark.png │ │ │ │ ├── ic_menu_star.png │ │ │ │ ├── ic_menu_agenda.png │ │ │ │ ├── ic_menu_compass.png │ │ │ │ ├── ic_menu_delete.png │ │ │ │ ├── ic_menu_forward.png │ │ │ │ ├── ic_menu_revert.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_menu_info_details.png │ │ │ │ ├── ic_menu_mylocation.png │ │ │ │ ├── ic_menu_preferences.png │ │ │ │ ├── ic_menu_sort_by_size.png │ │ │ │ └── ic_menu_close_clear_cancel.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── ic_play.png │ │ │ │ ├── ic_stop.png │ │ │ │ ├── ic_menu_add.png │ │ │ │ ├── ic_menu_edit.png │ │ │ │ ├── ic_menu_mark.png │ │ │ │ ├── ic_menu_star.png │ │ │ │ ├── ic_menu_agenda.png │ │ │ │ ├── ic_menu_compass.png │ │ │ │ ├── ic_menu_delete.png │ │ │ │ ├── ic_menu_forward.png │ │ │ │ ├── ic_menu_revert.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_menu_info_details.png │ │ │ │ ├── ic_menu_mylocation.png │ │ │ │ ├── ic_menu_preferences.png │ │ │ │ ├── ic_menu_sort_by_size.png │ │ │ │ └── ic_menu_close_clear_cancel.png │ │ │ ├── xml │ │ │ │ ├── shortcuts.xml │ │ │ │ ├── provider_paths.xml │ │ │ │ └── widget_info.xml │ │ │ ├── drawable-xhdpi │ │ │ │ ├── ic_play.png │ │ │ │ ├── ic_stop.png │ │ │ │ ├── ic_menu_add.png │ │ │ │ ├── ic_menu_agenda.png │ │ │ │ ├── ic_menu_delete.png │ │ │ │ ├── ic_menu_edit.png │ │ │ │ ├── ic_menu_mark.png │ │ │ │ ├── ic_menu_revert.png │ │ │ │ ├── ic_menu_star.png │ │ │ │ ├── ic_menu_compass.png │ │ │ │ ├── ic_menu_forward.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_menu_mylocation.png │ │ │ │ ├── ic_menu_preferences.png │ │ │ │ ├── ic_menu_info_details.png │ │ │ │ ├── ic_menu_sort_by_size.png │ │ │ │ └── ic_menu_close_clear_cancel.png │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── ic_play.png │ │ │ │ ├── ic_stop.png │ │ │ │ ├── ic_menu_add.png │ │ │ │ ├── ic_menu_edit.png │ │ │ │ ├── ic_menu_mark.png │ │ │ │ ├── ic_menu_star.png │ │ │ │ ├── ic_menu_agenda.png │ │ │ │ ├── ic_menu_compass.png │ │ │ │ ├── ic_menu_delete.png │ │ │ │ ├── ic_menu_forward.png │ │ │ │ ├── ic_menu_revert.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_menu_mylocation.png │ │ │ │ ├── ic_menu_info_details.png │ │ │ │ ├── ic_menu_preferences.png │ │ │ │ ├── ic_menu_sort_by_size.png │ │ │ │ └── ic_menu_close_clear_cancel.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ ├── ic_play.png │ │ │ │ ├── ic_stop.png │ │ │ │ ├── ic_menu_add.png │ │ │ │ ├── ic_menu_edit.png │ │ │ │ ├── ic_menu_mark.png │ │ │ │ ├── ic_menu_star.png │ │ │ │ ├── ic_menu_agenda.png │ │ │ │ ├── ic_menu_delete.png │ │ │ │ ├── ic_menu_revert.png │ │ │ │ ├── ic_menu_compass.png │ │ │ │ ├── ic_menu_forward.png │ │ │ │ ├── ic_notification.png │ │ │ │ ├── ic_menu_mylocation.png │ │ │ │ ├── ic_menu_preferences.png │ │ │ │ ├── ic_menu_info_details.png │ │ │ │ ├── ic_menu_sort_by_size.png │ │ │ │ └── ic_menu_close_clear_cancel.png │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ ├── raw │ │ │ │ └── about.txt │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ ├── values │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── styles.xml │ │ │ │ └── themes.xml │ │ │ ├── menu │ │ │ │ ├── list_context_menu.xml │ │ │ │ └── activity_main_drawer.xml │ │ │ ├── layout │ │ │ │ ├── tasks_activity.xml │ │ │ │ ├── list_item_spinner.xml │ │ │ │ ├── options_activity.xml │ │ │ │ ├── list_activity.xml │ │ │ │ ├── message.xml │ │ │ │ ├── list_item_separator.xml │ │ │ │ ├── list_item_inactive.xml │ │ │ │ ├── view_timezone_select.xml │ │ │ │ ├── report_preview.xml │ │ │ │ ├── activity_debug.xml │ │ │ │ ├── activity_upgrade.xml │ │ │ │ ├── about.xml │ │ │ │ ├── nav_header_main.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── list_item.xml │ │ │ │ ├── widget.xml │ │ │ │ ├── widget_day.xml │ │ │ │ └── widget_night.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values-sw360dp │ │ │ │ └── preference.xml │ │ │ ├── drawable-sizes.txt │ │ │ ├── xml-v31 │ │ │ │ └── widget_info.xml │ │ │ ├── xml-v25 │ │ │ │ └── shortcuts.xml │ │ │ └── values-night │ │ │ │ └── themes.xml │ │ └── java │ │ │ └── org │ │ │ └── zephyrsoft │ │ │ └── trackworktime │ │ │ ├── eventlist │ │ │ ├── BaseEventItem.java │ │ │ ├── EventSeparatorViewHolder.java │ │ │ ├── EventSeparatorItem.java │ │ │ ├── EventViewHolder.java │ │ │ ├── EventItemMapper.java │ │ │ └── EventItem.java │ │ │ ├── util │ │ │ ├── Updatable.java │ │ │ ├── StringExtractionMethod.java │ │ │ ├── FileUtil.java │ │ │ ├── GenericFileProvider.java │ │ │ ├── ForeignCall.java │ │ │ ├── SeparatorIdentificationMethod.java │ │ │ ├── ThemeUtil.java │ │ │ ├── PermissionCollector.java │ │ │ ├── ExternalNotificationManager.java │ │ │ └── TinylogAndLogcatLogger.java │ │ │ ├── database │ │ │ └── MigrationCallback.java │ │ │ ├── model │ │ │ ├── PeriodEnum.java │ │ │ ├── NightMode.java │ │ │ ├── Report.java │ │ │ ├── TimeInfo.java │ │ │ ├── Unit.java │ │ │ ├── Range.java │ │ │ ├── Base.java │ │ │ ├── Week.java │ │ │ ├── CalcCacheEntry.java │ │ │ ├── TargetWrapper.java │ │ │ ├── WeekState.java │ │ │ └── Target.java │ │ │ ├── location │ │ │ ├── LocationCallback.java │ │ │ ├── Result.java │ │ │ ├── CoordinateUtil.java │ │ │ └── TrackingMethod.java │ │ │ ├── Watchdog.java │ │ │ ├── BootCompletedReceiver.java │ │ │ ├── weektimes │ │ │ ├── WeekStateLoaderFactory.java │ │ │ ├── WeekStateLoader.java │ │ │ ├── WeekStateCalculatorFactory.java │ │ │ ├── WeekIndexConverter.java │ │ │ └── WeekTimesViewHolder.java │ │ │ ├── options │ │ │ ├── Check.java │ │ │ ├── TimePreferenceDialogFragment.java │ │ │ ├── TimeZonePreference.java │ │ │ ├── DurationPreference.java │ │ │ ├── FlexiIntervalPreference.java │ │ │ ├── CheckIntervalPreference.java │ │ │ ├── TimePreference.java │ │ │ └── DurationPreferenceDialogFragment.java │ │ │ ├── backup │ │ │ ├── WorkTimeTrackerBackupAgentHelper.java │ │ │ └── WorkTimeTrackerBackupManager.java │ │ │ ├── AutomaticBackup.java │ │ │ ├── ui │ │ │ └── TargetTimeValidityCheck.java │ │ │ ├── ShortcutReceiver.java │ │ │ ├── DebugActivity.java │ │ │ ├── UpgradeActivity.java │ │ │ ├── editevent │ │ │ └── TimeTextViewController.java │ │ │ ├── MessageActivity.java │ │ │ └── report │ │ │ ├── ReportPreviewActivity.java │ │ │ ├── TaskAndHint.java │ │ │ ├── TimeSumsHolder.java │ │ │ └── TargetDaysHolder.java │ ├── test │ │ └── java │ │ │ └── org │ │ │ └── zephyrsoft │ │ │ └── trackworktime │ │ │ ├── util │ │ │ └── DateTimeUtilTest.java │ │ │ ├── options │ │ │ └── DataTypeTest.java │ │ │ └── model │ │ │ └── TimeSumTest.java │ └── androidTest │ │ └── java │ │ └── org │ │ └── zephyrsoft │ │ └── trackworktime │ │ └── ClearAppDataRule.java └── lint.xml ├── gradle.properties ├── .woodpecker ├── renovate.yaml └── build+release.yaml └── gradlew.bat /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /metadata/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Track Work Time 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | local.properties 4 | .idea 5 | .DS_Store 6 | build 7 | /captures 8 | -------------------------------------------------------------------------------- /metadata/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/icon.png -------------------------------------------------------------------------------- /metadata/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Record your work time. Categorize it with different tasks. Generate reports. 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /metadata/en-US/images/icon-raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/icon-raw.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/backup_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable/backup_ok.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_stop.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_stop.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_stop.png -------------------------------------------------------------------------------- /app/src/main/res/xml/shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_stop.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_stop.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_stop.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/backup_not_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable/backup_not_ok.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/widget_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable/widget_preview.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/5.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/6.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/7.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/8.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/metadata/en-US/images/phoneScreenshots/9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_mark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_star.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_mark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_star.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_mark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_star.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_add.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/raw/about.txt: -------------------------------------------------------------------------------- 1 |
2 |

{0}

3 | 4 | Version {1}
5 |
6 | Feedback (in English or German):
7 | {2}
8 |
9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_agenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_agenda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_forward.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_revert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_agenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_agenda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_forward.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_revert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_agenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_agenda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_forward.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_revert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_agenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_agenda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_mark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_revert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_star.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_mark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_star.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_mark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_star.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_forward.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_agenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_agenda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_forward.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_revert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_agenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_agenda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_revert.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_info_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_info_details.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_mylocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_mylocation.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_preferences.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_sort_by_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_sort_by_size.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_info_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_info_details.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_mylocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_mylocation.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_preferences.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_sort_by_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_sort_by_size.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_info_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_info_details.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_mylocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_mylocation.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_preferences.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_sort_by_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_sort_by_size.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_mylocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_mylocation.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_preferences.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_mylocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_mylocation.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_compass.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_forward.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_notification.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_info_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_info_details.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_sort_by_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_sort_by_size.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_info_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_info_details.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_preferences.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_sort_by_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_sort_by_size.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_mylocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_mylocation.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_preferences.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_info_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_info_details.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_sort_by_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_sort_by_size.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_close_clear_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-hdpi/ic_menu_close_clear_cancel.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/ic_menu_close_clear_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-ldpi/ic_menu_close_clear_cancel.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_close_clear_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-mdpi/ic_menu_close_clear_cancel.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_close_clear_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xhdpi/ic_menu_close_clear_cancel.png -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_close_clear_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_close_clear_cancel.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_close_clear_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathisdt/trackworktime/HEAD/app/src/main/res/drawable-xxxhdpi/ic_menu_close_clear_cancel.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/side_nav_bar.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigate_arrow_left.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/item_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/widget_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/list_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip 3 | distributionPath=wrapper/dists 4 | zipStorePath=wrapper/dists 5 | distributionSha256Sum=72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_calendar_recenter_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/tasks_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_calendar_recenter_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigate_arrow_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values-sw360dp/preference.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 0dp 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_item_spinner.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-sizes.txt: -------------------------------------------------------------------------------- 1 | 2 | 36x36 (0.75x) for low-density (ldpi) 3 | 48x48 (1.0x baseline) for medium-density (mdpi) 4 | 72x72 (1.5x) for high-density (hdpi) 5 | 96x96 (2.0x) for extra-high-density (xhdpi) 6 | 144x144 (3.0x) for extra-extra-high-density (xxhdpi) 7 | 192x192 (4.0x) for extra-extra-extra-high-density (xxxhdpi) 8 | 9 | Source: https://developer.android.com/training/multiscreen/screendensities 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_download.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/eventlist/BaseEventItem.java: -------------------------------------------------------------------------------- 1 | package org.zephyrsoft.trackworktime.eventlist; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public abstract class BaseEventItem { 6 | 7 | public abstract int getId(); 8 | public abstract boolean isSameContentAs(@NonNull BaseEventItem other); 9 | 10 | public boolean isSameIdAs(@NonNull BaseEventItem other) { 11 | return getId() == other.getId(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml-v31/widget_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/xml/widget_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/options_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/message.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | app_title=Track Work Time 2 | 3 | # customize to create multiple versions of the app to install in parallel 4 | app_suffix= 5 | 6 | # use appropriate AndroidX library instead of a Support Library 7 | android.useAndroidX=true 8 | # automatic migrating of third-party libraries to AndroidX not needed 9 | android.enableJetifier=false 10 | # Github Actions don't reserve enough memory without this: 11 | org.gradle.jvmargs=-XX:MaxMetaspaceSize=512m 12 | # generate transitive resource classes 13 | android.nonTransitiveRClass=false 14 | # keep resource IDs final 15 | android.nonFinalResIds=false 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_box_closed.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_item_separator.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/eventlist/EventSeparatorViewHolder.java: -------------------------------------------------------------------------------- 1 | package org.zephyrsoft.trackworktime.eventlist; 2 | 3 | import androidx.recyclerview.widget.RecyclerView.ViewHolder; 4 | 5 | import org.zephyrsoft.trackworktime.databinding.ListItemSeparatorBinding; 6 | 7 | public class EventSeparatorViewHolder extends ViewHolder { 8 | private final ListItemSeparatorBinding binding; 9 | 10 | public EventSeparatorViewHolder(ListItemSeparatorBinding binding) { 11 | super(binding.getRoot()); 12 | this.binding = binding; 13 | } 14 | 15 | public void bind(EventSeparatorItem item) { 16 | binding.title.setText(item.getTitle()); 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_item_inactive.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 32dp 7 | 8dp 8 | 176dp 9 | 16dp 10 | 8dp 11 | 6dp 12 | 2dp 13 | 14 | 5dp 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_box_open.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_timezone_select.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/eventlist/EventSeparatorItem.java: -------------------------------------------------------------------------------- 1 | package org.zephyrsoft.trackworktime.eventlist; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public class EventSeparatorItem extends BaseEventItem { 6 | 7 | private final int id; 8 | private final String caption; 9 | 10 | @NonNull 11 | public String getTitle() { 12 | return caption; 13 | } 14 | 15 | @Override 16 | public int getId() { 17 | return id; 18 | } 19 | 20 | public EventSeparatorItem(@NonNull String caption) { 21 | this.id = caption.hashCode(); 22 | this.caption = caption; 23 | } 24 | 25 | @Override 26 | public boolean isSameContentAs(@NonNull BaseEventItem other) { 27 | if (!(other instanceof EventSeparatorItem)) { 28 | return false; 29 | } 30 | return getId() == other.getId(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/util/Updatable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | /** 19 | * Something that can be updated. 20 | */ 21 | public interface Updatable { 22 | void update(); 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/database/MigrationCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.database; 17 | 18 | public interface MigrationCallback { 19 | void onProgressUpdate(int value); 20 | 21 | void migrationDone(); 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/res/xml-v25/shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /.woodpecker/renovate.yaml: -------------------------------------------------------------------------------- 1 | when: 2 | - event: [ cron ] 3 | 4 | clone: 5 | - name: clone 6 | image: woodpeckerci/plugin-git 7 | settings: 8 | depth: 0 9 | partial: false 10 | recursive: true 11 | 12 | steps: 13 | - name: renovate 14 | when: 15 | - event: cron 16 | cron: "renovate" # a cron with this name has to exist in the Woodpecker repo, e.g. with expression "30 3 * * *" 17 | depends_on: [] 18 | image: renovate/renovate 19 | commands: | 20 | renovate $${CI_REPO} 21 | environment: 22 | RENOVATE_PLATFORM: forgejo 23 | RENOVATE_ENDPOINT: https://codeberg.org 24 | RENOVATE_ONBOARDING: false 25 | RENOVATE_REQUIRE_CONFIG: optional 26 | RENOVATE_AUTO_APPROVE: true 27 | RENOVATE_AUTOMERGE: true 28 | RENOVATE_AUTOMERGE_STRATEGY: fast-forward 29 | LOG_LEVEL: debug 30 | RENOVATE_TOKEN: 31 | from_secret: RENOVATE_TOKEN 32 | GITHUB_COM_TOKEN: 33 | from_secret: GITHUB_COM_TOKEN 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/model/PeriodEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.model; 17 | 18 | /** 19 | * Range for which a {@link TimeSum} is valid / should be calculated. 20 | */ 21 | public enum PeriodEnum { 22 | /** only one day */ 23 | DAY, 24 | /** one week */ 25 | WEEK, 26 | /** one month */ 27 | MONTH, 28 | /** all time */ 29 | ALL_TIME 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/util/StringExtractionMethod.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | /** 19 | * Represents a method how the {@link FlexibleArrayAdapter} extracts the text from an object. 20 | */ 21 | public interface StringExtractionMethod { 22 | 23 | /** 24 | * Extract the text from the given object. 25 | */ 26 | String extractText(T object); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/util/FileUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | import java.io.IOException; 19 | import java.io.InputStream; 20 | import java.io.OutputStream; 21 | 22 | public class FileUtil { 23 | 24 | public static void copy(InputStream in, OutputStream out) throws IOException { 25 | byte[] buffer = new byte[1024]; 26 | int read; 27 | while((read = in.read(buffer)) != -1) { 28 | out.write(buffer, 0, read); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/report_preview.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 17 | 18 | 21 | 22 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/location/LocationCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.location; 17 | 18 | /** 19 | * Location-getting callback hook (as closures are not there yet). 20 | */ 21 | public interface LocationCallback { 22 | 23 | /** 24 | * Called when the current location was found. 25 | */ 26 | void callback(double latitude, double longitude, int tolerance); 27 | 28 | /** 29 | * Called when an error happens. 30 | */ 31 | void error(Throwable t); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/model/NightMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.model; 17 | 18 | public enum NightMode { 19 | SYSTEM_DEFAULT(-1), 20 | LIGHT_MODE(1), 21 | DARK_MODE(2); 22 | 23 | /** 24 | * see {@code xml/strings.xml}, entry {@code nightModeValues} 25 | */ 26 | private final int value; 27 | 28 | NightMode(int value) { 29 | this.value = value; 30 | } 31 | 32 | public int getValue() { 33 | return value; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/test/java/org/zephyrsoft/trackworktime/util/DateTimeUtilTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | import static com.google.common.truth.Truth.assertThat; 19 | 20 | import org.junit.Test; 21 | 22 | import java.time.LocalTime; 23 | 24 | public class DateTimeUtilTest { 25 | 26 | @Test 27 | public void parseTimeForToday() { 28 | LocalTime toTest = DateTimeUtil.parseTime(""); 29 | assertThat(toTest.getHour()).isEqualTo(0); 30 | assertThat(toTest.getMinute()).isEqualTo(0); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/util/GenericFileProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | import androidx.core.content.FileProvider; 19 | 20 | /** 21 | * Extend FileProvider to make sure our FileProvider doesn't conflict with any FileProviders declared 22 | * in imported dependencies as described at https://commonsware.com/blog/2017/06/27/fileprovider-libraries.html 23 | */ 24 | public class GenericFileProvider extends FileProvider { 25 | // do nothing different than the extended class 26 | } 27 | -------------------------------------------------------------------------------- /app/src/test/java/org/zephyrsoft/trackworktime/options/DataTypeTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.options; 17 | 18 | import org.junit.Test; 19 | 20 | import static org.junit.Assert.assertTrue; 21 | import static org.zephyrsoft.trackworktime.options.DataType.HOUR_MINUTE; 22 | 23 | public class DataTypeTest { 24 | 25 | @Test 26 | public void hourMinute() { 27 | assertTrue(HOUR_MINUTE.validate("-1:55")); 28 | assertTrue(HOUR_MINUTE.validate("1:00")); 29 | assertTrue(HOUR_MINUTE.validate("1:29")); 30 | assertTrue(HOUR_MINUTE.validate("37:30")); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/location/Result.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.location; 17 | 18 | /** 19 | * Result which gets returned by {@link LocationTracker#startTrackingByLocation(double, double, double, boolean)}. 20 | */ 21 | public enum Result { 22 | 23 | /** successfully started the tracking */ 24 | SUCCESS, 25 | 26 | /** could not start the tracking because is was already running */ 27 | FAILURE_ALREADY_RUNNING, 28 | 29 | /** could not start the tracking, the app doesn't have the necessary rights */ 30 | FAILURE_INSUFFICIENT_RIGHTS 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/model/Report.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.model; 17 | 18 | import androidx.annotation.NonNull; 19 | 20 | import java.io.Serializable; 21 | 22 | public final class Report implements Serializable { 23 | private final String name; 24 | private final String data; 25 | 26 | public Report(String name, String data) { 27 | this.name = name; 28 | this.data = data; 29 | } 30 | 31 | public @NonNull String getName() { 32 | return name; 33 | } 34 | 35 | public @NonNull String getData() { 36 | return data; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/model/TimeInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.model; 17 | 18 | public class TimeInfo { 19 | private long actual = 0; 20 | private long target = 0; 21 | 22 | public Long getActual() { 23 | return actual; 24 | } 25 | 26 | public void setActual(long actual) { 27 | this.actual = actual; 28 | } 29 | 30 | public Long getTarget() { 31 | return target; 32 | } 33 | 34 | public void setTarget(long target) { 35 | this.target = target; 36 | } 37 | 38 | public Long getBalance() { 39 | return actual - target; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #b2df3a 5 | #98c520 6 | #769a19 7 | #556e12 8 | #1C2406 9 | #111604 10 | #6334de 11 | #4d1fc0 12 | #2B1271 13 | #d0d0d0 14 | #DB4A4A 15 | #800000 16 | #000000 17 | #ffffff 18 | #a0a0a0 19 | #303030 20 | #2b2b2b 21 | #ffffff 22 | #4c4b4d 23 | #ff444444 24 | #5CFF16 25 | #00FFC4 26 | #FFD603 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/location/CoordinateUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.location; 17 | 18 | import java.math.BigDecimal; 19 | 20 | /** 21 | * Helper for handling geo-coordinates. 22 | */ 23 | public class CoordinateUtil { 24 | 25 | /** 26 | * Round a coordinate with arbitrary precision to a value that makes sense. 27 | */ 28 | public static String roundCoordinate(double coordinate) { 29 | BigDecimal ret = new BigDecimal(String.valueOf(coordinate)); 30 | ret = ret.setScale(6, BigDecimal.ROUND_HALF_UP); 31 | return ret.toPlainString(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/model/Unit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.model; 17 | 18 | import android.content.Context; 19 | 20 | import org.zephyrsoft.trackworktime.R; 21 | 22 | public enum Unit { 23 | NULL(R.string.reportUnitNull), 24 | DAY(R.string.reportUnitDay), 25 | WEEK(R.string.reportUnitWeek), 26 | MONTH(R.string.reportUnitMonth), 27 | YEAR(R.string.reportUnitYear); 28 | 29 | private final int name; 30 | 31 | Unit(int name) { 32 | this.name = name; 33 | } 34 | 35 | public String getName(Context context) { 36 | return context.getString(name); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/model/Range.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.model; 17 | 18 | import android.content.Context; 19 | 20 | import org.zephyrsoft.trackworktime.R; 21 | 22 | public enum Range { 23 | LAST(R.string.reportRangeLast), 24 | CURRENT(R.string.reportRangeCurrent), 25 | LAST_AND_CURRENT(R.string.reportRangeLastAndCurrent), 26 | ALL_DATA(R.string.reportRangeAllData); 27 | 28 | private final int name; 29 | 30 | Range(int name) { 31 | this.name = name; 32 | } 33 | 34 | public String getName(Context context) { 35 | return context.getString(name); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/util/ForeignCall.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | import java.lang.annotation.ElementType; 19 | import java.lang.annotation.Retention; 20 | import java.lang.annotation.RetentionPolicy; 21 | import java.lang.annotation.Target; 22 | 23 | /** 24 | * Marks methods which are allowed to be called from another class. Primarily used in activities 25 | * (where methods normally are not called from other classes but only from the UI). 26 | */ 27 | @Target(ElementType.METHOD) 28 | @Retention(RetentionPolicy.RUNTIME) 29 | public @interface ForeignCall { 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/Watchdog.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime; 17 | 18 | import android.content.BroadcastReceiver; 19 | import android.content.Context; 20 | import android.content.Intent; 21 | 22 | import org.zephyrsoft.trackworktime.location.LocationTrackerService; 23 | 24 | /** 25 | * Watchdog, e.g. for {@link LocationTrackerService}. It gets periodic intents scheduled by {@link Basics}. 26 | */ 27 | public class Watchdog extends BroadcastReceiver { 28 | 29 | @Override 30 | public void onReceive(Context context, Intent intent) { 31 | Basics.get(context).periodicHook(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/util/SeparatorIdentificationMethod.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime.util; 17 | 18 | /** 19 | * Identifies the separators in a list. As this interface extends {@link StringExtractionMethod}, it can also extract 20 | * the text of the separators. 21 | */ 22 | public interface SeparatorIdentificationMethod extends StringExtractionMethod { 23 | 24 | /** 25 | * Decides if the given object is a separator (and should be rendered as such). 26 | */ 27 | boolean isSeparator(T object); 28 | 29 | @Override 30 | default String extractText(T object) { 31 | return ""; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/eventlist/EventViewHolder.java: -------------------------------------------------------------------------------- 1 | package org.zephyrsoft.trackworktime.eventlist; 2 | 3 | import androidx.recyclerview.selection.ItemDetailsLookup; 4 | import androidx.recyclerview.widget.RecyclerView.ViewHolder; 5 | 6 | import org.zephyrsoft.trackworktime.databinding.ListItemBinding; 7 | import org.zephyrsoft.trackworktime.model.Event; 8 | 9 | import java.util.function.Consumer; 10 | 11 | public class EventViewHolder extends ViewHolder { 12 | private final ListItemBinding binding; 13 | 14 | public EventViewHolder(ListItemBinding binding) { 15 | super(binding.getRoot()); 16 | this.binding = binding; 17 | } 18 | 19 | public void bind(EventItem item, boolean isSelected, Consumer onClick) { 20 | binding.time.setText(item.getTime()); 21 | binding.type.setText(item.getType()); 22 | binding.task.setText(item.getTask()); 23 | itemView.setActivated(isSelected); 24 | itemView.setOnClickListener(v -> onClick.accept(item.getEvent())); 25 | } 26 | 27 | public ItemDetailsLookup.ItemDetails getItemDetails() { 28 | return new ItemDetailsLookup.ItemDetails<>() { 29 | @Override 30 | public int getPosition() { 31 | return getBindingAdapterPosition(); 32 | } 33 | 34 | @Override 35 | public Long getSelectionKey() { 36 | return getItemId(); 37 | } 38 | }; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/org/zephyrsoft/trackworktime/BootCompletedReceiver.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of TrackWorkTime (TWT). 3 | * 4 | * TWT is free software: you can redistribute it and/or modify it 5 | * under the terms of the GNU General Public License 3.0 as published by 6 | * the Free Software Foundation. 7 | * 8 | * TWT is distributed in the hope that it will be useful, but 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License 3.0 for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 3.0 14 | * along with TWT. If not, see . 15 | */ 16 | package org.zephyrsoft.trackworktime; 17 | 18 | import android.content.BroadcastReceiver; 19 | import android.content.Context; 20 | import android.content.Intent; 21 | 22 | import org.pmw.tinylog.Logger; 23 | 24 | /** 25 | * Gets intents when the device boot is completed and - if the app was moved to an external storage 26 | * - when the externalized app becomes available (again). 27 | */ 28 | public class BootCompletedReceiver extends BroadcastReceiver { 29 | 30 | @Override 31 | public void onReceive(Context context, Intent intent) { 32 | Logger.debug("BootCompletedReceiver received intent: {}", intent); 33 | Basics.get(context).schedulePeriodicIntents(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_debug.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 12 | 18 | 19 | 25 | 26 | 27 |