Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,12 @@ android {
productFlavors {
production {
dimension "default"
applicationId "com.ccextractor.taskwarrior"
applicationId "com.ccextractor.taskwarriorflutter"
signingConfig keystoreProperties.isEmpty() ? signingConfigs.debug : signingConfigs.production
}
nightly {
dimension "default"
applicationId "com.ccextractor.taskwarrior.nightly"
applicationId "com.ccextractor.taskwarriorflutter.nightly"
versionNameSuffix "-nightly"
signingConfig nightlyKeystoreProperties.isEmpty() ? signingConfigs.debug : signingConfigs.nightly
}
Expand Down
2 changes: 1 addition & 1 deletion android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
</intent-filter>
</activity>

<receiver android:name="TaskWarriorWidgetProvider"
<receiver android:name=".TaskWarriorWidgetProvider"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
Expand Down
Binary file not shown.
Binary file not shown.
10 changes: 5 additions & 5 deletions lib/app/modules/about/views/about_page_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,17 @@ import 'package:taskwarrior/app/utils/language/sentence_manager.dart';

class AboutPageAppBar extends StatelessWidget implements PreferredSizeWidget {
final AboutController aboutController;
const AboutPageAppBar({required this.aboutController,super.key});
const AboutPageAppBar({required this.aboutController, super.key});

@override
Widget build(BuildContext context) {
return AppBar(
centerTitle: true,
backgroundColor: TaskWarriorColors.kprimaryBackgroundColor,
title: Text(
SentenceManager(
currentLanguage: aboutController.selectedLanguage.value)
.sentences
.aboutPageAppBarTitle,
SentenceManager(currentLanguage: aboutController.selectedLanguage.value)
.sentences
.aboutPageAppBarTitle,
// style: GoogleFonts.poppins(color: TaskWarriorColors.white),
style: TextStyle(
fontFamily: FontFamily.poppins,
Expand All @@ -31,6 +30,7 @@ class AboutPageAppBar extends StatelessWidget implements PreferredSizeWidget {
child: Icon(
Icons.chevron_left,
color: TaskWarriorColors.white,
size: 35,
),
),
);
Expand Down
26 changes: 26 additions & 0 deletions lib/app/modules/home/controllers/home_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:home_widget/home_widget.dart';
import 'package:loggy/loggy.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:taskwarrior/app/models/filters.dart';

Expand Down Expand Up @@ -35,6 +36,7 @@ import 'package:taskwarrior/app/v3/db/task_database.dart';
import 'package:taskwarrior/app/v3/db/update.dart';
import 'package:taskwarrior/app/v3/models/task.dart';
import 'package:taskwarrior/app/v3/net/fetch.dart';
import 'package:taskwarrior/rust_bridge/api.dart';
import 'package:textfield_tags/textfield_tags.dart';
import 'package:taskwarrior/app/utils/themes/theme_extension.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
Expand Down Expand Up @@ -101,6 +103,30 @@ class HomeController extends GetxController {
widgetController.update();
}
});
ever(splashController.currentProfile, (_) {
if (splashController.getMode(splashController.currentProfile.value) !=
"TW3") {
refreshTaskWithNewProfile();
}
if (Platform.isAndroid) {
WidgetController widgetController = Get.put(WidgetController());
widgetController.fetchAllData();
widgetController.updateWidget();
}
});
tryRust();
}

Future<void> tryRust() async {
Directory? someDir = await getDownloadsDirectory();

addTask(taskdbDirPath: someDir != null ? someDir.path : "", map: {
'description': "some task from bridge 2",
"uuid": "270750a0-1801-4a24-8b29-a7aaf62fc74d"
});

debugPrint(await getAllTasksJson(
taskdbDirPath: someDir != null ? someDir.path : ""));
}

Future<List<String>> getUniqueProjects() async {
Expand Down
89 changes: 87 additions & 2 deletions lib/app/modules/home/views/add_task_bottom_sheet_new.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,18 @@ import 'package:taskwarrior/app/utils/taskfunctions/add_task_dialog_utils.dart';
import 'package:taskwarrior/app/utils/taskfunctions/tags.dart';
import 'package:taskwarrior/app/utils/taskfunctions/taskparser.dart';
import 'package:taskwarrior/app/utils/themes/theme_extension.dart';
import 'package:taskwarrior/app/v3/champion/Replica.dart';
import 'package:taskwarrior/app/v3/models/task.dart';

class AddTaskBottomSheet extends StatelessWidget {
final HomeController homeController;
final bool forTaskC;
final bool forReplica;
const AddTaskBottomSheet(
{required this.homeController, super.key, this.forTaskC = false});
{required this.homeController,
super.key,
this.forTaskC = false,
this.forReplica = false});

@override
Widget build(BuildContext context) {
Expand Down Expand Up @@ -66,6 +71,8 @@ class AddTaskBottomSheet extends StatelessWidget {
onPressed: () {
if (forTaskC) {
onSaveButtonClickedTaskC(context);
} else if (forReplica) {
onSaveButtonClickedForReplica(context);
} else {
onSaveButtonClicked(context);
}
Expand Down Expand Up @@ -354,7 +361,6 @@ class AddTaskBottomSheet extends StatelessWidget {
}

void onSaveButtonClicked(BuildContext context) async {
// print(homeController.formKey.currentState);
if (homeController.formKey.currentState!.validate()) {
try {
var task = taskParser(homeController.namecontroller.text)
Expand Down Expand Up @@ -432,4 +438,83 @@ class AddTaskBottomSheet extends StatelessWidget {
}
}
}

void onSaveButtonClickedForReplica(BuildContext context) async {
if (homeController.formKey.currentState!.validate()) {
try {
var task = taskParser(homeController.namecontroller.text)
.rebuild((b) =>
b..due = getDueDate(homeController.selectedDates)?.toUtc())
.rebuild((p) => p..priority = homeController.priority.value)
.rebuild((t) => t..project = homeController.projectcontroller.text)
.rebuild((t) =>
t..wait = getWaitDate(homeController.selectedDates)?.toUtc())
.rebuild((t) =>
t..until = getUntilDate(homeController.selectedDates)?.toUtc())
.rebuild((t) => t
..scheduled =
getSchedDate(homeController.selectedDates)?.toUtc());
if (homeController.tags.isNotEmpty) {
task = task.rebuild((t) => t..tags.replace(homeController.tags));
}
await Replica.addTaskToReplica(task);
homeController.namecontroller.text = '';
homeController.projectcontroller.text = '';
homeController.dueString.value = "";
homeController.priority.value = 'X';
homeController.tagcontroller.text = '';
homeController.tags.value = [];
homeController.update();
Get.back();
if (Platform.isAndroid) {
WidgetController widgetController = Get.put(WidgetController());
widgetController.fetchAllData();
widgetController.update();
}

homeController.update();

ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
SentenceManager(
currentLanguage: homeController.selectedLanguage.value)
.sentences
.addTaskTaskAddedSuccessfully,
style: TextStyle(
color: AppSettings.isDarkMode
? TaskWarriorColors.kprimaryTextColor
: TaskWarriorColors.kLightPrimaryTextColor,
),
),
backgroundColor: AppSettings.isDarkMode
? TaskWarriorColors.ksecondaryBackgroundColor
: TaskWarriorColors.kLightSecondaryBackgroundColor,
duration: const Duration(seconds: 2)));

final SharedPreferences prefs = await SharedPreferences.getInstance();
bool? value;
value = prefs.getBool('sync-OnTaskCreate') ?? false;
// late InheritedStorage storageWidget;
// storageWidget = StorageWidget.of(context);
var storageWidget = Get.find<HomeController>();
if (value) {
storageWidget.synchronize(context, true);
}
} on FormatException catch (e) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
e.message,
style: TextStyle(
color: AppSettings.isDarkMode
? TaskWarriorColors.kprimaryTextColor
: TaskWarriorColors.kLightPrimaryTextColor,
),
),
backgroundColor: AppSettings.isDarkMode
? TaskWarriorColors.ksecondaryBackgroundColor
: TaskWarriorColors.kLightSecondaryBackgroundColor,
duration: const Duration(seconds: 2)));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class HomePageFloatingActionButton extends StatelessWidget {
),
onPressed: () => (controller.taskchampion.value)
? (showModalBottomSheet(
backgroundColor: tColors.dialogBackgroundColor,
context: context,
isScrollControlled: true,
shape: const RoundedRectangleBorder(
Expand All @@ -47,6 +48,7 @@ class HomePageFloatingActionButton extends StatelessWidget {
}
}))
: (showModalBottomSheet(
backgroundColor: tColors.dialogBackgroundColor,
context: context,
isScrollControlled: true,
shape: const RoundedRectangleBorder(
Expand Down
115 changes: 17 additions & 98 deletions lib/app/modules/home/views/nav_drawer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,18 @@ class NavDrawer extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
SentenceManager(
currentLanguage:
homeController.selectedLanguage.value)
.sentences
.homePageMenu,
style: TextStyle(
fontSize: TaskWarriorFonts.fontSizeExtraLarge,
fontWeight: TaskWarriorFonts.bold,
color: tColors.primaryTextColor,
),
),
Obx(() => Text(
SentenceManager(
currentLanguage:
homeController.selectedLanguage.value)
.sentences
.homePageMenu,
style: TextStyle(
fontSize: TaskWarriorFonts.fontSizeExtraLarge,
fontWeight: TaskWarriorFonts.bold,
color: tColors.primaryTextColor,
),
)),
Padding(
padding: const EdgeInsets.only(right: 10),
child: ThemeSwitcherClipper(
Expand Down Expand Up @@ -78,98 +78,17 @@ class NavDrawer extends StatelessWidget {
color: tColors.dialogBackgroundColor,
height: Get.height * 0.03,
),
Visibility(
visible: homeController.taskchampion.value,
child: NavDrawerMenuItem(
icon: Icons.task_alt,
Obx(
() => NavDrawerMenuItem(
icon: Icons.person_rounded,
text: SentenceManager(
currentLanguage: homeController.selectedLanguage.value,
).sentences.ccsyncCredentials,
).sentences.navDrawerProfile,
onTap: () {
Get.toNamed(Routes.MANAGE_TASK_CHAMPION_CREDS);
Get.toNamed(Routes.PROFILE);
},
),
),
Visibility(
visible: homeController.taskchampion.value,
child: NavDrawerMenuItem(
icon: Icons.delete,
text: SentenceManager(
currentLanguage: homeController.selectedLanguage.value,
).sentences.deleteTaskTitle,
onTap: () {
showDialog<void>(
context: context,
builder: (BuildContext context) {
return Utils.showAlertDialog(
title: Text(
SentenceManager(
currentLanguage:
homeController.selectedLanguage.value,
).sentences.deleteTaskConfirmation,
style: TextStyle(
color: tColors.primaryTextColor,
),
),
content: Text(
SentenceManager(
currentLanguage:
homeController.selectedLanguage.value,
).sentences.deleteTaskWarning,
style: TextStyle(
color: tColors.primaryDisabledTextColor,
),
),
actions: <Widget>[
TextButton(
child: Text(
SentenceManager(
currentLanguage:
homeController.selectedLanguage.value,
).sentences.homePageCancel,
style: TextStyle(
color: tColors.primaryTextColor,
),
),
onPressed: () {
Navigator.of(context).pop(); // Close the dialog
},
),
TextButton(
child: Text(
SentenceManager(
currentLanguage:
homeController.selectedLanguage.value,
).sentences.navDrawerConfirm,
style: TextStyle(
color: tColors.primaryTextColor,
),
),
onPressed: () {
homeController.deleteAllTasksInDB();
Navigator.of(context).pop(); // Close the dialog
},
),
],
);
},
);
}),
),
Visibility(
visible: !homeController.taskchampion.value,
child: Obx(
() => NavDrawerMenuItem(
icon: Icons.person_rounded,
text: SentenceManager(
currentLanguage: homeController.selectedLanguage.value,
).sentences.navDrawerProfile,
onTap: () {
Get.toNamed(Routes.PROFILE);
},
),
),
),
Visibility(
visible: !homeController.taskchampion.value,
child: Obx(
Expand Down
Loading