Skip to content

Commit

Permalink
v.0.11.1 (#27)
Browse files Browse the repository at this point in the history
- adds german translations
- adds ukrainian translations by @mondstern
- adds translation link in configurations
- fixes crash on startup #29 from @chromer by @pabloscloud

Co-authored-by: pabloscloud <[email protected]>
Reviewed-on: https://codeberg.org/pabloscloud/Overload/pulls/27
  • Loading branch information
pabloscloud and pablo03v committed Oct 10, 2023
1 parent eae4132 commit ef2a17a
Show file tree
Hide file tree
Showing 19 changed files with 257 additions and 44 deletions.
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[![Translation status](https://translate.codeberg.org/widget/overload/android/svg-badge.svg)](https://translate.codeberg.org/engage/overload/)

# Overload

Expand All @@ -8,7 +9,7 @@ Overload is a user-friendly native app designed to facilitate time tracking for

Contributions are always welcome!

Just create issues and pull requests ;)
Just create issues and pull requests or help [translating](https://translate.codeberg.org/engage/overload/) on Weblate :)


## Features
Expand All @@ -19,6 +20,7 @@ Just create issues and pull requests ;)
- scroll through days with ease
- backup your data as .csv
- import backups
- set goals


## Feedback
Expand All @@ -30,6 +32,9 @@ Feedback and suggestions are more than welcome! Please reach out by creating an

<a href="https://f-droid.org/app/cloud.pablos.overload"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" width="170"></a>

Alternatively go to the releases tab on Codeberg and download an apk.


## Authors

- [@pabloscloud](https://pablos.cloud)
Expand Down Expand Up @@ -70,4 +75,12 @@ This project draws inspiration from the jetpack compose sample [Reply](https://g
Open your files app, choose the backup file, and locate the share icon or text. Tapping this icon will bring up a menu displaying various apps for sharing. From the list, select Overload to initiate the import. Wait until the import is finished, indicated by a completion message.

### Why does Overload rely on the Systems Sharesheet to import a backup?
Overload utilises the Systems Sharesheet for importing backups instead of requesting broad access to all files on your device. This approach avoids the need to seek permissions that could undermine trust in the project. Moreover, Overload's reliance on the Sharesheet ensures that the app only gains access to the specific file it requires, eliminating the necessity for extensive permissions.
Overload utilises the Systems Sharesheet for importing backups instead of requesting broad access to all files on your device. This approach avoids the need to seek permissions that could undermine trust in the project. Moreover, Overload's reliance on the Sharesheet ensures that the app only gains access to the specific file it requires, eliminating the necessity for extensive permissions.


### What are ongoing pauses?
By showing the duration between the last item and the current time you can determine how long you stopped or paused working since then. You can plan how much longer your pause is at any given moment as the duration updates in real time.

### Why can't I delete an ongoing pause? {#delete-pause}
You cannot delete ongoing pauses as they are only there to indicate a pause will be created once you hit start again. If you will not hit start until the next day it will be gone and will not count against your goal. By deleting items that occurred beforehand, you can hide the pause.
Imagine you're using the app to track your work hours. You take a break, and an ongoing pause is created. If you get ill during the day or decide not to work on the day for any other reason, the ongoing pause will vanish without affecting your work-time goal.
6 changes: 3 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ android {

defaultConfig {
applicationId = "cloud.pablos.overload"
minSdk = libs.versions.minSdk.get().toInt()
minSdk = 26
targetSdk = 34
versionCode = 110
versionName = "0.11.0"
versionCode = 111
versionName = "0.11.1"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

Expand Down
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 110,
"versionName": "0.11.0",
"versionCode": 111,
"versionName": "0.11.1",
"outputFile": "app-release.apk"
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ data class OverloadTopLevelDestination(
val selectedIcon: ImageVector,
val unselectedIcon: ImageVector,
val iconTextId: Int,
val label: String,
)

class OverloadNavigationActions(private val navController: NavHostController) {
Expand Down Expand Up @@ -51,20 +50,17 @@ val TOP_LEVEL_DESTINATIONS = listOf(
selectedIcon = Icons.Filled.CalendarToday,
unselectedIcon = Icons.Outlined.CalendarToday,
iconTextId = R.string.home,
label = "Home",
),
OverloadTopLevelDestination(
route = OverloadRoute.CALENDAR,
selectedIcon = Icons.Filled.CalendarMonth,
unselectedIcon = Icons.Outlined.CalendarMonth,
iconTextId = R.string.calendar,
label = "Calendar",
),
OverloadTopLevelDestination(
route = OverloadRoute.CONFIGURATIONS,
selectedIcon = Icons.Filled.Settings,
unselectedIcon = Icons.Outlined.Settings,
iconTextId = R.string.configurations,
label = "Configurations",
),
)
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,14 @@ fun OverloadBottomNavigationBar(
)
},
label = {
val label = when (overloadDestination.route) {
"Home" -> { stringResource(id = R.string.home) }
"Calendar" -> { stringResource(id = R.string.calendar) }
"Configurations" -> { stringResource(id = R.string.configurations) }
else -> { stringResource(id = R.string.unknown_day) }
}
TextView(
text = overloadDestination.label,
text = label,
fontSize = MaterialTheme.typography.labelLarge.fontSize,
fontWeight =
if (selectedDestination == overloadDestination.route) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@ import androidx.compose.material.icons.rounded.Code
import androidx.compose.material.icons.rounded.Copyright
import androidx.compose.material.icons.rounded.EmojiNature
import androidx.compose.material.icons.rounded.PestControl
import androidx.compose.material.icons.rounded.Translate
import androidx.compose.material.icons.rounded.Unarchive
import androidx.compose.material.icons.rounded.Work
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
Expand Down Expand Up @@ -292,6 +294,16 @@ fun ConfigurationsTab(state: ItemState) {
)
}

// About Translations
item {
ConfigurationsTabItem(
title = stringResource(id = R.string.translate),
description = stringResource(id = R.string.translate_descr),
link = "https://codeberg.org/pabloscloud/Overload/raw/branch/main/LICENSE".toUri(),
icon = Icons.Rounded.Translate,
)
}

// About License
item {
ConfigurationsTabItem(
Expand Down Expand Up @@ -491,7 +503,7 @@ fun ConfigurationTitle(
fun ConfigurationDescription(
text: String,
) {
TextView(
Text(
text = text,
fontSize = MaterialTheme.typography.bodyMedium.fontSize,
color = MaterialTheme.colorScheme.onBackground,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ fun ConfigurationsTabItem(
modifier = Modifier.padding(horizontal = 8.dp),
)
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier.fillMaxWidth(),
) {
Column {
Expand Down Expand Up @@ -99,7 +101,7 @@ fun ConfigurationsTabItem(
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier.fillMaxWidth(),
) {
Column {
Column(modifier = Modifier.weight(1f)) {
ConfigurationTitle(title)
ConfigurationDescription(description)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ fun ConfigurationsTabPauseGoalDialog(onClose: () -> Unit) {
hours = it.toIntOrNull()
},
singleLine = true,
suffix = { Text(text = "hours") },
suffix = { Text(text = stringResource(R.string.hours)) },
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
),
Expand All @@ -100,7 +100,7 @@ fun ConfigurationsTabPauseGoalDialog(onClose: () -> Unit) {
minutes = it.toIntOrNull()
},
singleLine = true,
suffix = { Text(text = "minutes") },
suffix = { Text(text = stringResource(R.string.minutes)) },
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
),
Expand Down Expand Up @@ -144,7 +144,7 @@ fun ConfigurationsTabPauseGoalDialog(onClose: () -> Unit) {
disabledContentColor = MaterialTheme.colorScheme.onSurface,
),
) {
Text(text = "Cancel")
Text(text = stringResource(R.string.cancel))
}
},
modifier = Modifier.padding(16.dp),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ fun ConfigurationsTabWorkGoalDialog(onClose: () -> Unit) {
hours = it.toIntOrNull()
},
singleLine = true,
suffix = { Text(text = "hours") },
suffix = { Text(text = stringResource(R.string.hours)) },
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
),
Expand All @@ -100,7 +100,7 @@ fun ConfigurationsTabWorkGoalDialog(onClose: () -> Unit) {
minutes = it.toIntOrNull()
},
singleLine = true,
suffix = { Text(text = "minutes") },
suffix = { Text(text = stringResource(R.string.minutes)) },
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
),
Expand Down Expand Up @@ -144,7 +144,7 @@ fun ConfigurationsTabWorkGoalDialog(onClose: () -> Unit) {
disabledContentColor = MaterialTheme.colorScheme.onSurface,
),
) {
Text(text = "Cancel")
Text(text = stringResource(R.string.cancel))
}
},
modifier = Modifier.padding(16.dp),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ fun HomeTabProgress(
Column(
modifier = Modifier.padding(horizontal = 10.dp),
) {
TextView(title)
TextView(title, maxLines = 2)
TextView(subtitle)
}
}
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/java/cloud/pablos/overload/ui/views/TextView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ fun TextView(
fontWeight: FontWeight = FontWeight.Normal,
color: Color = Color.Unspecified,
align: TextAlign = TextAlign.Left,
maxLines: Int = 1
) {
Text(
text = text,
fontSize = fontSize,
fontWeight = fontWeight,
color = color,
maxLines = 1,
maxLines = maxLines,
overflow = TextOverflow.Ellipsis,
textAlign = align,
modifier = modifier,
Expand Down
95 changes: 95 additions & 0 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="select_all_items_of_selected_day">wähle alle Einträge des ausgewählten Tages aus</string>
<string name="storage">Speicher</string>
<string name="delete_pause_descr">Du kannst diese laufende Pause nicht löschen. Sie dient nur dazu, anzuzeigen, dass eine Pause erstellt wird, sobald du auf „Start“ drückst. Wenn du bis morgen nicht auf „Start“ drückst, wird sie verschwinden und hat daher keinen Einfluss auf dein Ziel.</string>
<string name="close">Schließen</string>
<string name="save">Speichern</string>
<string name="goals">Ziele</string>
<string name="system_logs_descr">Füge dem Absturzberichte meinen Systembericht hinzu</string>
<string name="crash_reports_descr">Frage danach Absturzberichte zu senden</string>
<string name="get_out_of_isDeleting">deaktiviert den Löschmodus</string>
<string name="system_logs">Systemberichte</string>
<string name="backup_descr">Speichere regelmäßig Sicherheitskopien an einem sicheren Ort!</string>
<string name="friday">Freitag</string>
<string name="tuesday">Dienstag</string>
<string name="acra_toastText">Absturz erkannt. Bitte helfe mit dem Senden einer E-Mail!</string>
<string name="import_descr">Stelle Daten aus einer Sicherung her</string>
<string name="import_backup">Sicherung wiederherstellen</string>
<string name="learn_more">Mehr erfahren…</string>
<string name="sourcecode_descr">Möchtest du das Innere sehen\? Nur zu!</string>
<string name="pause">Pause</string>
<string name="delete_items_forever">Einträge für immer löschen</string>
<string name="edit">Bearbeiten</string>
<string name="pick_work_goal">Arbeitsziel setzen</string>
<string name="acra_mailBody">Absturz erkannt. Bitte helfe uns, uns zu verbessern, indem du diese E-Mail sendest, damit wir das Problem so schnell wie möglich beheben können.
\nBitte entschuldige! Das Absenden ist für die Behebung dieses Problems unerlässlich.
\n
\nBeschreibung – Was hast du getan, bevor die App abstürzte\?
\n
\n
\nSchritte zur Reproduktion – Kannst du beschreiben, wie wir den Fehler reproduzieren können\?
\n
\n
\nBildmaterial – Bitte füge Screenshots oder Bildschirmaufzeichnungen bei.
\n
\n
\nKürzliche Änderungen – Hast du kürzlich die App aktualisiert oder Geräteeinstellungen geändert\?
\n
\n
\nHäufigkeit – Wie oft kommt dieser Absturz vor\?
\n
\n
\nDanke für deine Geduld!</string>
<string name="wednesday">Mittwoch</string>
<string name="monday">Montag</string>
<string name="unknown_day">Unbekannter Tag</string>
<string name="start">Start</string>
<string name="license_descr">GNU GPL v3</string>
<string name="issue_reports">Fehler melden</string>
<string name="stop">Stop</string>
<string name="import_failure">Sicherung konnte nicht wiederhergestellt werden</string>
<string name="select_year">Jahr auswählen</string>
<string name="pick_pause_goal">Pausenziel setzen</string>
<string name="work">Arbeit</string>
<string name="backup">Sichern</string>
<string name="license">Lizenz</string>
<string name="issue_reports_descr">Ist etwas komisch\? Melde es!</string>
<string name="about">Über</string>
<string name="work_goal_descr">Setze für die Arbeit ein Ziel</string>
<string name="acra_mailTo">[email protected]</string>
<string name="open_link_with">Öffne den Link mit</string>
<string name="import_backup_descr">Um Daten in die App zu importieren, benutze bitte das Sharesheet von anderen Apps. Damit kann die App sicher auf die freigegebenen Daten zugreifen und diese in Ihre Datenbank importieren.</string>
<string name="configurations">Konfigurationen</string>
<string name="sunday">Sonntag</string>
<string name="no_items_subtitle">Es gibt für diesen Tag keine Einträge.</string>
<string name="crash_reports">Absturzberichte</string>
<string name="home">Startseite</string>
<string name="yesterday">Gestern</string>
<string name="navigation_drawer">Navigationsleiste</string>
<string name="arrow_forward">Pfeil nach vorne, der die Richtung beider Zeiten von Anfang bis Ende beschreibt</string>
<string name="delete_pause">Pause löschen</string>
<string name="deselect_all_items_of_selected_day">wähle alle Einträge des ausgewählten Tages ab</string>
<string name="analytics">Analysen</string>
<string name="no_items_title">Keine Einträge gefunden</string>
<string name="saturday">Samstag</string>
<string name="work_left">Übrige Arbeitszeit</string>
<string name="sourcecode">Quellcode</string>
<string name="itemCount_selected">ausgewählt</string>
<string name="import_success">Sicherung erfolgreich wiederhergestellt</string>
<string name="pause_goal_descr">Setze ein Ziel für deine Pausen</string>
<string name="thursday">Donnerstag</string>
<string name="footer">mit ❤️ von pabloscloud erstellt</string>
<string name="calendar">Kalender</string>
<string name="today">Heute</string>
<string name="pause_left">Übrige Pause</string>
<string name="import_ol">Wiederherstellen</string>
<string name="unknown_tab">Unbekannter Tab</string>
<string name="hours">Stunden</string>
<string name="minutes">Minuten</string>
<string name="cancel">Abbrechen</string>
<string name="acra_mailSubject" translatable="false">Overload Crash</string>
<string name="app_name" translatable="false">Overload</string>
<string name="translate">Übersetzen</string>
<string name="translate_descr">Möchtest du übersetzen helfen\? Danke!</string>
</resources>
Loading

0 comments on commit ef2a17a

Please sign in to comment.