Skip to content

Commit

Permalink
v.0.17.0
Browse files Browse the repository at this point in the history
- adds category support
- fixes an issue where the app wouldn't switch to the correct year on tablets
- updates links and resources
- bump libs
- bump version
  • Loading branch information
pablo03v committed Apr 15, 2024
1 parent ede97fd commit 7d381f8
Show file tree
Hide file tree
Showing 101 changed files with 3,361 additions and 1,353 deletions.
57 changes: 28 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Translation status](https://translate.codeberg.org/widget/overload/android/svg-badge.svg)](https://translate.codeberg.org/engage/overload/)
[![Translation status](https://badges.crowdin.net/overload/localized.svg)](https://crowdin.com/project/overload)

# Overload

Expand All @@ -9,18 +9,18 @@ Overload is an Android (8.0+) application which allows you to capture timespans

Contributions are always welcome!

Just create issues and pull requests in the dev-branch or help [translating](https://translate.codeberg.org/engage/overload/) on Weblate :)
Just create issues and pull requests in the dev-branch or help [translating](https://crowdin.com/project/overload) on Crowdin :)


## Features

- create and manage categories with colors, emojis and goals
- create time spans
- automatically creates pauses in between
- delete time spans - on-by-one or all-together
- scroll through days with ease
- backup your data
- import backups
- set goals


## Feedback
Expand All @@ -41,59 +41,58 @@ Feedback and suggestions are more than welcome! Please reach out by creating an

## Authors

- [@pabloscloud](https://codeberg.org/pabloscloud)
- [@pabloscloud](https://github.com/pabloscloud)

### Translators
### Kudos

#### Translators

- [@mondstern](https://codeberg.org/mondstern)
- [@Vistaus](https://codeberg.org/Vistaus)
- [@0que](https://codeberg.org/0que)

#### Projects

This project is forked from the jetpack compose sample [Reply](https://github.com/android/compose-samples/tree/main/Reply), which is licensed under the Apache License, Version 2.0.

I used portions of the code of the lovely material you style RSS reader [ReadYou](https://github.com/Ashinch/ReadYou) for the color picker which is licensed under GNU GPLv3. Thanks for the [allowed use](https://github.com/Ashinch/ReadYou/discussions/687) [(archive.org)](https://web.archive.org/web/20240414115828/https://github.com/Ashinch/ReadYou/discussions/687).


## Screenshots

<table>
<tr>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/1.png" alt="Screenshot 1"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/2.png" alt="Screenshot 2"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/3.png" alt="Screenshot 3"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/4.png" alt="Screenshot 4"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/1.png" alt="Screenshot 1"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/2.png" alt="Screenshot 2"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/3.png" alt="Screenshot 3"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/4.png" alt="Screenshot 4"></td>
</tr>
<tr>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/5.png" alt="Screenshot 1"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/6.png" alt="Screenshot 2"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/7.png" alt="Screenshot 3"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/8.png" alt="Screenshot 4"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/5.png" alt="Screenshot 1"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/6.png" alt="Screenshot 2"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/7.png" alt="Screenshot 3"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/8.png" alt="Screenshot 4"></td>
</tr>
<tr>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/9.png" alt="Screenshot 1"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/10.png" alt="Screenshot 2"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/11.png" alt="Screenshot 3"></td>
<td><img src="https://codeberg.org/pabloscloud/Overload/raw/branch/main/screenshots/12.png" alt="Screenshot 4"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/9.png" alt="Screenshot 1"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/10.png" alt="Screenshot 2"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/11.png" alt="Screenshot 3"></td>
<td><img src="https://github.com/pabloscloud/Overload/raw/main/screenshots/12.png" alt="Screenshot 4"></td>
</tr>
</table>


## FAQ

### How do I import a backup? {#import-backup}
### How do I import a .csv backup?
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.


### 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}
### Why can't I delete an ongoing 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.

### Why does the app annoy me with a popup to adjust the end? {#spread-across-days}
### Why does the app annoy me with a popup to adjust the end?
Sometimes we forget stuff. Sometimes we do stuff across days - like sleeping. Nevertheless when an item is still ongoing from yesterday or days before yesterday, you need to set an end or confirm you want to spread the item across multiple days. The popup will be gone once there are no more ongoing items from the past days ;)


## Related

This project draws inspiration from the jetpack compose sample [Reply](https://github.com/android/compose-samples/tree/main/Reply), which is licensed under the Apache License, Version 2.0.
8 changes: 4 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ android {
applicationId = "cloud.pablos.overload"
minSdk = 26
targetSdk = 34
versionCode = 160
versionName = "0.16.0"
versionCode = 170
versionName = "0.17.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

kapt {
arguments {
arg("room.schemaLocation", "")
arg("room.exportSchema", "false")
arg("room.schemaLocation", "$projectDir/schemas")
arg("room.exportSchema", "true")
}
}
}
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": 160,
"versionName": "0.16.0",
"versionCode": 170,
"versionName": "0.17.0",
"outputFile": "app-release.apk"
}
],
Expand Down
58 changes: 58 additions & 0 deletions app/schemas/cloud.pablos.overload.data.OverloadDatabase/1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "dd6c87d009809e7cd6f2f504a6eba8d2",
"entities": [
{
"tableName": "items",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `startTime` TEXT NOT NULL, `endTime` TEXT NOT NULL, `ongoing` INTEGER NOT NULL, `pause` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "startTime",
"columnName": "startTime",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "endTime",
"columnName": "endTime",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "ongoing",
"columnName": "ongoing",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "pause",
"columnName": "pause",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'dd6c87d009809e7cd6f2f504a6eba8d2')"
]
}
}
121 changes: 121 additions & 0 deletions app/schemas/cloud.pablos.overload.data.OverloadDatabase/2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
{
"formatVersion": 1,
"database": {
"version": 2,
"identityHash": "484ddb3056be6218a18539a4d1875f90",
"entities": [
{
"tableName": "categories",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `color` INTEGER NOT NULL, `emoji` TEXT NOT NULL, `goal1` INTEGER NOT NULL, `goal2` INTEGER NOT NULL, `isDefault` INTEGER NOT NULL, `name` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "color",
"columnName": "color",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "emoji",
"columnName": "emoji",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "goal1",
"columnName": "goal1",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "goal2",
"columnName": "goal2",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "isDefault",
"columnName": "isDefault",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "items",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `startTime` TEXT NOT NULL, `endTime` TEXT NOT NULL, `ongoing` INTEGER NOT NULL, `pause` INTEGER NOT NULL, `categoryId` INTEGER NOT NULL DEFAULT 1)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "startTime",
"columnName": "startTime",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "endTime",
"columnName": "endTime",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "ongoing",
"columnName": "ongoing",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "pause",
"columnName": "pause",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "categoryId",
"columnName": "categoryId",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '484ddb3056be6218a18539a4d1875f90')"
]
}
}
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,4 @@
android:resource="@xml/file_paths" />
</provider>
</application>

</manifest>
Loading

0 comments on commit 7d381f8

Please sign in to comment.