QOL: Chores.

Final beta before release 1.0.
This commit is contained in:
zontreck 2025-05-17 12:36:31 -07:00
parent ac7a5c885d
commit 8293ddeb68
10 changed files with 98 additions and 49 deletions

View file

@ -24,6 +24,7 @@ The app does not store data locally, due to the way android permissions function
# Implementation
- [ ] Application Icon for mobile and web favicon
- [x] Basic UI
- [x] Permissions
- [x] Automatic updates
@ -32,10 +33,11 @@ The app does not store data locally, due to the way android permissions function
- [x] Track driving hours
- [x] Track trips
- [x] Track stops/deliveries
- [x] Track trip base pay
- [x] Track each delivery's tips
- [ ] Map marker for each stop/delivery with text saying "Trip #X/DropOff #X\nBase Pay: $$$; Tip: $$$"
- [ ] Basic version of the app in readonly mode when deployed on a web server.
- [ ] Backend server
- [ ] PHP?
- [ ] Dart based?
- [x] ~~Track trip base pay~~
- [x] ~~Track each delivery's tips~~
- [x] Track total pay
- [x] Map marker for each stop/delivery with text saying "Trip #X/DropOff #X ~~\nBase Pay: [amount]; Tip: [amount]~~
- [x] Basic version of the app in readonly mode when deployed on a web server.
- [x] Backend server
- [x] PHP
- [ ] ~~Dart based?~~

View file

@ -13,7 +13,7 @@
<application
android:label="timetrack"
android:label="Time Tracker"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity

View file

@ -9,7 +9,7 @@ class TTConsts {
static get SESSION_SERVER =>
"https://api.zontreck.com/timetrack/$UPDATE_CHANNEL/timetrack.php";
static const VERSION = "1.0.0-beta.9";
static const VERSION = "1.0.0-beta.10";
static bool UPDATE_AVAILABLE = false;
static UpdateChannel UPDATE_CHANNEL = UpdateChannel.beta;

View file

@ -247,13 +247,15 @@ class SessionData {
StartTime = DateTime.parse(jsMap['start'] as String);
}
if (jsMap.containsKey("end"))
if (jsMap.containsKey("end")) {
EndTime = DateTime.parse(jsMap["end"] as String);
}
if (jsMap.containsKey("totalPay"))
if (jsMap.containsKey("totalPay")) {
TotalPay = jsMap["totalPay"] as double;
else
} else {
TotalPay = null;
}
IsReadOnly = true;

View file

@ -4,6 +4,7 @@ import 'package:libacflutter/Constants.dart';
import 'package:libacflutter/Prompt.dart';
import 'package:timetrack/consts.dart';
import 'package:timetrack/data.dart';
import 'package:url_launcher/url_launcher.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@ -91,6 +92,19 @@ class _HomePageState extends State<HomePage> {
setState(() {});
},
),
ListTile(
title: Text("Source Code"),
subtitle: Text("Licensed under the GPLv3"),
leading: Icon(Icons.code_rounded),
onTap: () async {
final Uri url = Uri.parse(
'https://git.zontreck.com/AriasCreations/TimeTracker',
);
if (!await launchUrl(url)) {
throw Exception('Could not launch $url');
}
},
),
/*
ListTile(
title: Text("RESET APP SESSION"),

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:libacflutter/Constants.dart';
import 'package:timetrack/consts.dart';
import 'package:timetrack/data.dart';
import 'package:url_launcher/url_launcher.dart';
class WebMain extends StatefulWidget {
const WebMain({super.key});
@ -66,6 +67,35 @@ class _WebMain extends State<WebMain> {
setState(() {});
},
),
ListTile(
title: Text("Source Code"),
subtitle: Text("Licensed under the GPLv3"),
leading: Icon(Icons.code_rounded),
onTap: () async {
final Uri url = Uri.parse(
'https://git.zontreck.com/AriasCreations/TimeTracker',
);
if (!await launchUrl(url)) {
throw Exception('Could not launch $url');
}
},
),
ListTile(
title: Text("Download Mobile App"),
subtitle: Text(
"Click to go to the download page, from there you will want the APK file.",
),
leading: Icon(Icons.download),
onTap: () async {
final Uri url = Uri.parse(
"https://ci.zontreck.com/job/Projects/job/Dart/job/Time%20Tracker/",
);
if (!await launchUrl(url)) {
throw Exception("Could not launch $url");
}
},
),
],
),
),

View file

@ -40,11 +40,11 @@ static void my_application_activate(GApplication* application) {
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "timetrack");
gtk_header_bar_set_title(header_bar, "Time Tracker");
gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else {
gtk_window_set_title(window, "timetrack");
gtk_window_set_title(window, "Time Tracker");
}
gtk_window_set_default_size(window, 1280, 720);

View file

@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0-beta.9
version: 1.0.0-beta.10
environment:
sdk: ^3.7.2
@ -46,6 +46,7 @@ dependencies:
flutter_map: ^8.1.1
latlong2: ^0.9.1
flutter_map_tile_caching: ^10.1.1
url_launcher: ^6.3.1
dev_dependencies:
flutter_test:

View file

@ -18,7 +18,7 @@
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="A new Flutter project.">
<meta name="description" content="A simple, yet effective GPS, time, and mile tracker">
<!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes">

View file

@ -1,11 +1,11 @@
{
"name": "timetrack",
"name": "Time Tracker",
"short_name": "timetrack",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",
"theme_color": "#0175C2",
"description": "A new Flutter project.",
"description": "A simple, yet effective GPS, time, and mile tracker",
"orientation": "portrait-primary",
"prefer_related_applications": false,
"icons": [