diff --git a/lib/Activities.dart b/lib/Activities.dart index 8a4d816..aabfce4 100644 --- a/lib/Activities.dart +++ b/lib/Activities.dart @@ -61,6 +61,7 @@ class _ActivitiesState extends State { @override Widget build(BuildContext context) { // progressDialog = ProgressDialog(context: context); + List activities = PrintTasks(); return Scaffold( floatingActionButton: FloatingActionButton.extended( onPressed: () { @@ -154,10 +155,16 @@ class _ActivitiesState extends State { drawer: Main.navDrawer(context, 2), body: Container( padding: EdgeInsets.all(0), - child: SingleChildScrollView( - child: Column( - children: PrintTasks(), - )))); + child: ListView.builder( + itemCount: activities.length, + itemBuilder: (context, index){ + return activities[index]; + }) + // SingleChildScrollView( + // child: Column( + // children: PrintTasks(), + // )) + )); } @@ -268,7 +275,7 @@ class _ActivitiesState extends State { Container( alignment: Alignment.bottomLeft, padding: const EdgeInsets.all(8), - child: Text('Gap of : $gap'), + child: Text('Untracked period $gap'), ), Row( children: [ @@ -366,6 +373,7 @@ class _ActivitiesState extends State { Widget ActivityCard(BuildContext context, String name, DateTime sTime, DateTime eTime, bool productive, Color color, Activity activity, int totalMinutes) { DateFormat dateFormat = DateFormat("HH:mm"); int thisMinutes = (activity.endTime.difference(activity.startTime).inMinutes); + int timePercentage = ((thisMinutes / totalMinutes) * 100).toInt(); // print("$thisMinutes / $totalMinutes"); bool containsMetadata = ((activity.metadata ?? 'null') != 'null') && ((activity.metadata ?? '').isNotEmpty); @@ -396,7 +404,7 @@ class _ActivitiesState extends State { child: Card( // color: color, - elevation: 20, + elevation: 30, shadowColor: color, child: InkWell( onTap: () { diff --git a/lib/Projects.dart b/lib/Projects.dart new file mode 100644 index 0000000..38425da --- /dev/null +++ b/lib/Projects.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'User.dart' as User; +import 'main.dart'; +class Projects extends StatefulWidget { + const Projects({Key? key}) : super(key: key); + + @override + State createState() => _ProjectsState(); +} + +class _ProjectsState extends State { + @override + Widget build(BuildContext context) { + return SafeArea(child: Scaffold( + floatingActionButton: FloatingActionButton.extended( + onPressed: () { + // Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewTodo())).then((value) => {User.refreshUserData().then((va) => {})}); + }, + label: Text("New Project"), + icon: Icon(Icons.add)), + appBar: AppBar( + title: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: [Icon(Icons.work_outline_sharp, color: Theme.of(context).primaryColor), SizedBox(width: 10), Text('Projects')]), + Row( + children: [ + (User.offline) + ? Icon(Icons.signal_cellular_connected_no_internet_4_bar_outlined) + : InkWell( + onTap: () { + setState(() { + //LoadStats(); + }); + }, + child: Icon(Icons.refresh, size: 30), + ) + ], + ) + ], + ), + //Container(color: Colors.red,child: Text("Offline",style:TextStyle(fontSize: 5))), + ], + )), + drawer: navDrawer(context, 7), + body: Container( + padding: EdgeInsets.all(10), + child: Column( + children: [ + ProjectCard('This app'), + ProjectCard('Sneaky Peaky'), + ProjectCard('Zombie MP'), + ProjectCard('Pico pico') + ], + ), + ), + )); + } + + Widget ProjectCard(String name){ + return Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children:[ + Expanded( + child: Card( + child:InkWell( + onTap: (){}, + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Icon(Icons.work), + Text(name), + Container( + decoration: BoxDecoration( + color: Colors.green, + borderRadius: BorderRadius.circular(8) + ), + child:Padding( + padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 2), + child: Text("Work"), + )) + ], + ), + ), + ) + ) + ) + ] + ); + } + + Widget prioritySeperator(String text){ + return Padding( + padding: const EdgeInsets.fromLTRB(15,15,15,0), + child: Row( + children: [Text(text,style:TextStyle(fontSize: 18, color: Colors.grey))], + ), + ); + } +} diff --git a/lib/Todo.dart b/lib/Todo.dart index b351ed2..254d1ed 100644 --- a/lib/Todo.dart +++ b/lib/Todo.dart @@ -14,7 +14,7 @@ class _TodoPageState extends State { return SafeArea(child: Scaffold( floatingActionButton: FloatingActionButton.extended( onPressed: () { - // Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewActivity())).then((value) => {User.refreshUserData().then((va) => LoadStats())}); + // Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewTodo())).then((value) => {User.refreshUserData().then((va) => {})}); }, label: Text("New Todo"), icon: Icon(Icons.add)), diff --git a/lib/User.dart b/lib/User.dart index d96e017..ab87f0f 100644 --- a/lib/User.dart +++ b/lib/User.dart @@ -353,9 +353,15 @@ Future> GetActivities(bool forceOffline) async { if(eTime.day!=sTime.day){ DateTime midnight = DateTime(eTime.year,eTime.month,eTime.day,0,0,0); - - _activities.add(Activity(taskType, midnight, eTime, metadata: metadata,tStartTime: sTime)); - _activities.add(Activity(taskType, sTime, midnight, metadata: metadata,tEndTime: eTime)); + int firstHalf = eTime.difference(midnight).inMinutes; + int secondHalf = midnight.difference(sTime).inMinutes; + // print("${taskType.name} first half : $firstHalf -> second half: $secondHalf"); + if(firstHalf>1){ + _activities.add(Activity(taskType, midnight, eTime, metadata: metadata,tStartTime: sTime)); + } + if(secondHalf > 1) { + _activities.add(Activity(taskType, sTime, midnight, metadata: metadata, tEndTime: eTime)); + } }else{ _activities.add(Activity(taskType, DateTime.parse(startTime), DateTime.parse(endTime), metadata: metadata)); } diff --git a/lib/main.dart b/lib/main.dart index 2cccfa1..1daa7ad 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:tasktracker/Categories.dart'; +import 'package:tasktracker/Projects.dart'; import 'package:tasktracker/Todo.dart'; import 'package:tasktracker/Welcome.dart'; import 'package:tasktracker/splash.dart'; @@ -95,7 +96,7 @@ class MyApp extends StatelessWidget { '/Categories': (context) => const Categories(), '/Activities': (context) => const Activities(), '/Settings': (context) => const SettingsPage(), - '/Todo':(context)=> const TodoPage() + '/Projects':(context)=> const Projects() }); }); } @@ -282,6 +283,10 @@ class _MyHomePageState extends State { trackedTime += value; }); int untrackedTime = 1440-trackedTime; + if(untrackedTime<0){ + User.refreshUserData().then((val)=>LoadStats()); + print("Shit went wrong!"); + } print("Tracked time : $trackedTime"); dailyData.sort((a, b) { @@ -718,15 +723,26 @@ Drawer navDrawer(BuildContext context, int pageIndex) { Divider(), ListTile( selected: (pageIndex == 7), - title: Text('TODO'), - leading: Icon(Icons.check, color: Theme.of(context).primaryColor), + title: Text('Projects'), + leading: Icon(Icons.work_outline_sharp, color: Theme.of(context).primaryColor), onTap: () { if (pageIndex == 7) { return; } - Navigator.of(context).pushReplacementNamed('/Todo'); + Navigator.of(context).pushReplacementNamed('/Projects'); }, ), + // ListTile( + // selected: (pageIndex == 7), + // title: Text('TODO'), + // leading: Icon(Icons.check, color: Theme.of(context).primaryColor), + // onTap: () { + // if (pageIndex == 7) { + // return; + // } + // // Navigator.of(context).pushReplacementNamed('/Todo'); + // }, + // ), Divider(), ListTile( selected: (pageIndex == 5), diff --git a/lib/splash.dart b/lib/splash.dart index 843937f..4c4454d 100644 --- a/lib/splash.dart +++ b/lib/splash.dart @@ -94,10 +94,17 @@ class _SplashScreenState extends State { padding: EdgeInsets.all(80), child: Column( mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Image(image: AssetImage('images/logo.png')), - SpinKitPouringHourGlass(color: Colors.white) + Container(), + Column( + children: [ + Image(image: AssetImage('images/logo.png')), + SpinKitPouringHourGlass(color: Colors.white), + ], + ), + DefaultTextStyle(style: TextStyle(fontSize: 15,color: Colors.white,fontStyle: FontStyle.italic), + child: Text('If you lie to me, That means you lie to yourself\n\n -This app (2022)',)) // Text('Loading', style:TextStyle(color: Colors.grey, fontSize: 20,fontStyle: FontStyle.italic)) ])); }