From 481449a53dd3f97d9c80a62b90c190bec5b9747e Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 11 Mar 2025 09:49:06 +0200 Subject: [PATCH 1/4] add app tools folder to calendar and move appointments in it --- .../calendar/{ => app_tools}/appointments.dart | 10 +++++----- .../lib/mih_packages/calendar/mzansi_calendar.dart | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) rename Frontend/lib/mih_packages/calendar/{ => app_tools}/appointments.dart (97%) diff --git a/Frontend/lib/mih_packages/calendar/appointments.dart b/Frontend/lib/mih_packages/calendar/app_tools/appointments.dart similarity index 97% rename from Frontend/lib/mih_packages/calendar/appointments.dart rename to Frontend/lib/mih_packages/calendar/app_tools/appointments.dart index 2b65057c..f7e28dbe 100644 --- a/Frontend/lib/mih_packages/calendar/appointments.dart +++ b/Frontend/lib/mih_packages/calendar/app_tools/appointments.dart @@ -12,12 +12,12 @@ import 'package:Mzansi_Innovation_Hub/mih_objects/business.dart'; import 'package:Mzansi_Innovation_Hub/mih_objects/business_user.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/calendar/builder/build_appointment_list.dart'; import 'package:flutter/material.dart'; -import '../../main.dart'; +import '../../../main.dart'; -import '../../mih_components/mih_calendar.dart'; -import '../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; -import '../../mih_env/env.dart'; -import '../../mih_objects/app_user.dart'; +import '../../../mih_components/mih_calendar.dart'; +import '../../../mih_components/mih_pop_up_messages/mih_loading_circle.dart'; +import '../../../mih_env/env.dart'; +import '../../../mih_objects/app_user.dart'; class Appointments extends StatefulWidget { final AppUser signedInUser; diff --git a/Frontend/lib/mih_packages/calendar/mzansi_calendar.dart b/Frontend/lib/mih_packages/calendar/mzansi_calendar.dart index 4485808d..18b7f16e 100644 --- a/Frontend/lib/mih_packages/calendar/mzansi_calendar.dart +++ b/Frontend/lib/mih_packages/calendar/mzansi_calendar.dart @@ -2,7 +2,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_action.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_tools.dart'; import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart'; -import 'package:Mzansi_Innovation_Hub/mih_packages/calendar/appointments.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/calendar/app_tools/appointments.dart'; import 'package:flutter/material.dart'; class MzansiCalendar extends StatefulWidget { From c43ea4977d4c043849eb12daf0d63f7f44c6a984 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 11 Mar 2025 10:19:14 +0200 Subject: [PATCH 2/4] move tools into app_tools folder --- .../calculator/app_tools/simple_calc.dart | 304 ++++++++++++++++++ .../calculator/{ => app_tools}/tip_calc.dart | 175 +++++----- .../mih_packages/calculator/simple_calc.dart | 283 ---------------- 3 files changed, 398 insertions(+), 364 deletions(-) create mode 100644 Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart rename Frontend/lib/mih_packages/calculator/{ => app_tools}/tip_calc.dart (73%) delete mode 100644 Frontend/lib/mih_packages/calculator/simple_calc.dart diff --git a/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart b/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart new file mode 100644 index 00000000..03714c87 --- /dev/null +++ b/Frontend/lib/mih_packages/calculator/app_tools/simple_calc.dart @@ -0,0 +1,304 @@ +import 'package:Mzansi_Innovation_Hub/main.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; +import 'package:flutter/material.dart'; +import 'package:math_expressions/math_expressions.dart'; + +class SimpleCalc extends StatefulWidget { + const SimpleCalc({super.key}); + + @override + State createState() => _SimpleCalcState(); +} + +class _SimpleCalcState extends State { + var userInput = ''; + var answer = '0'; + + // Array of button + final List buttons = [ + 'C', + '(', + ')', + 'D', + '7', + '8', + '9', + '/', + '4', + '5', + '6', + 'x', + '1', + '2', + '3', + '-', + '0', + '.', + '=', + '+', + ]; + +// function to calculate the input operation + void equalPressed() { + String finaluserinput = userInput; + finaluserinput = userInput.replaceAll('x', '*'); + + Parser p = Parser(); + Expression exp = p.parse(finaluserinput); + ContextModel cm = ContextModel(); + double eval = exp.evaluate(EvaluationType.REAL, cm); + answer = eval.toString(); + } + + @override + Widget build(BuildContext context) { + return MihAppToolBody( + borderOn: false, + bodyItem: getBody(), + ); + } + + Widget getBody() { + double width = MediaQuery.sizeOf(context).width; + double height = MediaQuery.sizeOf(context).height; + var padding = MediaQuery.paddingOf(context); + double newheight = height - padding.top - padding.bottom; + print("width: $width"); + print("height: $height"); + print("newheight: $newheight"); + double calcWidth = 500; + if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") { + if (height < 700) { + calcWidth = 300; + } + } + return Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Simple Calculator", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), + Divider( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + Container( + //color: Colors.white, + padding: const EdgeInsets.all(20), + alignment: Alignment.centerRight, + child: Text( + userInput, + style: TextStyle( + fontSize: 18, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), + ), + Container( + width: double.infinity, + //color: Colors.white, + padding: const EdgeInsets.all(15), + alignment: Alignment.centerRight, + child: Text( + answer, + style: TextStyle( + fontSize: 30, + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + fontWeight: FontWeight.bold), + ), + ), + Container( + alignment: Alignment.centerRight, + child: SizedBox( + width: calcWidth, + child: GridView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + // padding: EdgeInsets.only( + // left: width / 10, + // right: width / 10, + // bottom: height / 15, + // //top: 20, + // ), + // shrinkWrap: true, + itemCount: buttons.length, + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 4, + //mainAxisExtent: 150, + ), + itemBuilder: (context, index) { + // Clear Button + if (index == 0) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput = ''; + answer = '0'; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + + // +/- button + else if (index == 1) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput += buttons[index]; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // % Button + else if (index == 2) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput += buttons[index]; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // Delete Button + else if (index == 3) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput = + userInput.substring(0, userInput.length - 1); + }); + }, + buttonText: buttons[index], + buttonColor: + MzanziInnovationHub.of(context)!.theme.errorColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // Equal_to Button + else if (index == 18) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + equalPressed(); + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .successColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // +, -, / x buttons + else if (index == 7 || + index == 11 || + index == 15 || + index == 19) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + if (answer == "0") { + setState(() { + userInput += buttons[index]; + }); + } else { + setState(() { + userInput = answer; + answer = "0"; + userInput += buttons[index]; + }); + } + // setState(() { + // userInput += buttons[index]; + // }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .messageTextColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + // other buttons + else { + return Padding( + padding: const EdgeInsets.all(4.0), + child: MIHButton( + onTap: () { + setState(() { + userInput += buttons[index]; + }); + }, + buttonText: buttons[index], + buttonColor: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + textColor: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ); + } + }, + ), + ), + ), + ], + ), + ); + } +} diff --git a/Frontend/lib/mih_packages/calculator/tip_calc.dart b/Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart similarity index 73% rename from Frontend/lib/mih_packages/calculator/tip_calc.dart rename to Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart index 3e8e2e4e..f63f81eb 100644 --- a/Frontend/lib/mih_packages/calculator/tip_calc.dart +++ b/Frontend/lib/mih_packages/calculator/app_tools/tip_calc.dart @@ -3,6 +3,7 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_ import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_number_input.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_window.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih-app_tool_body.dart'; import 'package:Mzansi_Innovation_Hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -260,91 +261,103 @@ class _TipCalcState extends State { @override Widget build(BuildContext context) { - return Column( - mainAxisSize: MainAxisSize.max, - children: [ - Text( - "Tip Calculator", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + return MihAppToolBody( + borderOn: false, + bodyItem: getBody(), + ); + } + + Widget getBody() { + return Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + Text( + "Tip Calculator", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), ), - ), - Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - MIHNumberField( - controller: billAmountController, - hintText: "Bill Amount", - editable: true, - required: true, - enableDecimal: true, - ), - const SizedBox(height: 10), - MIHNumberField( - controller: tipPercentageController, - hintText: "Tip %", - editable: true, - required: true, - enableDecimal: false, - ), - const SizedBox(height: 10), - MIHDropdownField( - controller: splitBillController, - hintText: "Split Bill", - dropdownOptions: const ["Yes", "No"], - required: true, - editable: true, - enableSearch: false, - ), - const SizedBox(height: 10), - ValueListenableBuilder( - valueListenable: splitValue, - builder: (BuildContext context, String value, Widget? child) { - return Visibility( - visible: value == "Yes", - child: Column( - children: [ - MIHNumberField( - controller: noPeopleController, - hintText: "No. of People", - editable: true, - required: true, - enableDecimal: false, - ), - const SizedBox(height: 10), - ], - ), - ); - }, - ), - SizedBox( - width: double.infinity, - height: 50, - child: MIHButton( - onTap: () { - validateInput(); + Divider( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), + const SizedBox(height: 10), + MIHNumberField( + controller: billAmountController, + hintText: "Bill Amount", + editable: true, + required: true, + enableDecimal: true, + ), + const SizedBox(height: 10), + MIHNumberField( + controller: tipPercentageController, + hintText: "Tip %", + editable: true, + required: true, + enableDecimal: false, + ), + const SizedBox(height: 10), + MIHDropdownField( + controller: splitBillController, + hintText: "Split Bill", + dropdownOptions: const ["Yes", "No"], + required: true, + editable: true, + enableSearch: false, + ), + const SizedBox(height: 10), + ValueListenableBuilder( + valueListenable: splitValue, + builder: (BuildContext context, String value, Widget? child) { + return Visibility( + visible: value == "Yes", + child: Column( + children: [ + MIHNumberField( + controller: noPeopleController, + hintText: "No. of People", + editable: true, + required: true, + enableDecimal: false, + ), + const SizedBox(height: 10), + ], + ), + ); }, - buttonText: "Calculate", - buttonColor: MzanziInnovationHub.of(context)!.theme.successColor(), - textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), ), - ), - const SizedBox(height: 10), - SizedBox( - width: double.infinity, - height: 50, - child: MIHButton( - onTap: () { - clearInput(); - }, - buttonText: "Clear", - buttonColor: MzanziInnovationHub.of(context)!.theme.errorColor(), - textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + SizedBox( + width: double.infinity, + height: 50, + child: MIHButton( + onTap: () { + validateInput(); + }, + buttonText: "Calculate", + buttonColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), ), - ), - ], + const SizedBox(height: 10), + SizedBox( + width: double.infinity, + height: 50, + child: MIHButton( + onTap: () { + clearInput(); + }, + buttonText: "Clear", + buttonColor: MzanziInnovationHub.of(context)!.theme.errorColor(), + textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + ), + ], + ), ); } } diff --git a/Frontend/lib/mih_packages/calculator/simple_calc.dart b/Frontend/lib/mih_packages/calculator/simple_calc.dart deleted file mode 100644 index 495353e6..00000000 --- a/Frontend/lib/mih_packages/calculator/simple_calc.dart +++ /dev/null @@ -1,283 +0,0 @@ -import 'package:Mzansi_Innovation_Hub/main.dart'; -import 'package:Mzansi_Innovation_Hub/mih_components/mih_inputs_and_buttons/mih_button.dart'; -import 'package:flutter/material.dart'; -import 'package:math_expressions/math_expressions.dart'; - -class SimpleCalc extends StatefulWidget { - const SimpleCalc({super.key}); - - @override - State createState() => _SimpleCalcState(); -} - -class _SimpleCalcState extends State { - var userInput = ''; - var answer = '0'; - - // Array of button - final List buttons = [ - 'C', - '(', - ')', - 'D', - '7', - '8', - '9', - '/', - '4', - '5', - '6', - 'x', - '1', - '2', - '3', - '-', - '0', - '.', - '=', - '+', - ]; - -// function to calculate the input operation - void equalPressed() { - String finaluserinput = userInput; - finaluserinput = userInput.replaceAll('x', '*'); - - Parser p = Parser(); - Expression exp = p.parse(finaluserinput); - ContextModel cm = ContextModel(); - double eval = exp.evaluate(EvaluationType.REAL, cm); - answer = eval.toString(); - } - - @override - Widget build(BuildContext context) { - double width = MediaQuery.sizeOf(context).width; - double height = MediaQuery.sizeOf(context).height; - var padding = MediaQuery.paddingOf(context); - double newheight = height - padding.top - padding.bottom; - print("width: $width"); - print("height: $height"); - print("newheight: $newheight"); - double calcWidth = 500; - if (MzanziInnovationHub.of(context)!.theme.screenType == "desktop") { - if (height < 700) { - calcWidth = 300; - } - } - return Column( - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - "Simple Calculator", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - ), - Divider(color: MzanziInnovationHub.of(context)!.theme.secondaryColor()), - const SizedBox(height: 10), - Container( - //color: Colors.white, - padding: const EdgeInsets.all(20), - alignment: Alignment.centerRight, - child: Text( - userInput, - style: TextStyle( - fontSize: 18, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - ), - ), - Container( - width: double.infinity, - //color: Colors.white, - padding: const EdgeInsets.all(15), - alignment: Alignment.centerRight, - child: Text( - answer, - style: TextStyle( - fontSize: 30, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - fontWeight: FontWeight.bold), - ), - ), - Container( - alignment: Alignment.centerRight, - child: SizedBox( - width: calcWidth, - child: GridView.builder( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - // padding: EdgeInsets.only( - // left: width / 10, - // right: width / 10, - // bottom: height / 15, - // //top: 20, - // ), - // shrinkWrap: true, - itemCount: buttons.length, - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 4, - //mainAxisExtent: 150, - ), - itemBuilder: (context, index) { - // Clear Button - if (index == 0) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput = ''; - answer = '0'; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - - // +/- button - else if (index == 1) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput += buttons[index]; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // % Button - else if (index == 2) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput += buttons[index]; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // Delete Button - else if (index == 3) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput = - userInput.substring(0, userInput.length - 1); - }); - }, - buttonText: buttons[index], - buttonColor: - MzanziInnovationHub.of(context)!.theme.errorColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // Equal_to Button - else if (index == 18) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - equalPressed(); - }); - }, - buttonText: buttons[index], - buttonColor: - MzanziInnovationHub.of(context)!.theme.successColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // +, -, / x buttons - else if (index == 7 || - index == 11 || - index == 15 || - index == 19) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - if (answer == "0") { - setState(() { - userInput += buttons[index]; - }); - } else { - setState(() { - userInput = answer; - answer = "0"; - userInput += buttons[index]; - }); - } - // setState(() { - // userInput += buttons[index]; - // }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .messageTextColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - // other buttons - else { - return Padding( - padding: const EdgeInsets.all(4.0), - child: MIHButton( - onTap: () { - setState(() { - userInput += buttons[index]; - }); - }, - buttonText: buttons[index], - buttonColor: MzanziInnovationHub.of(context)! - .theme - .secondaryColor(), - textColor: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ); - } - }, - ), - ), - ), - ], - ); - } -} From 2d4f8427d90d726b221e1c663941f801bb712822 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 11 Mar 2025 10:19:44 +0200 Subject: [PATCH 3/4] create new start file --- .../calculator/mih_calculator.dart | 213 ++++-------------- 1 file changed, 44 insertions(+), 169 deletions(-) diff --git a/Frontend/lib/mih_packages/calculator/mih_calculator.dart b/Frontend/lib/mih_packages/calculator/mih_calculator.dart index 72555d9c..0a7d11ab 100644 --- a/Frontend/lib/mih_packages/calculator/mih_calculator.dart +++ b/Frontend/lib/mih_packages/calculator/mih_calculator.dart @@ -1,12 +1,9 @@ -import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_action.dart'; -import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_body.dart'; -import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_header.dart'; -import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_layout_builder.dart'; -import 'package:Mzansi_Innovation_Hub/mih_objects/arguments.dart'; -import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/simple_calc.dart'; -import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/tip_calc.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_action.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/mih_app_tools.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/app_tools/simple_calc.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/app_tools/tip_calc.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_swipe_detector/flutter_swipe_detector.dart'; class MIHCalculator extends StatefulWidget { final bool personalSelected; @@ -22,177 +19,55 @@ class MIHCalculator extends StatefulWidget { class _MIHCalculatorState extends State { int _selectedIndex = 0; - MIHAction getActionButton() { - return MIHAction( + @override + Widget build(BuildContext context) { + return MihApp( + appActionButton: getAction(), + appTools: getTools(), + appBody: getToolBody(), + selectedbodyIndex: _selectedIndex, + onIndexChange: (newValue) { + setState(() { + _selectedIndex = newValue; + }); + print("Index: $_selectedIndex"); + }, + ); + } + + MihAppAction getAction() { + return MihAppAction( icon: const Icon(Icons.arrow_back), iconSize: 35, onTap: () { Navigator.of(context).pop(); - Navigator.of(context).popAndPushNamed( - '/', - arguments: AuthArguments(widget.personalSelected, false), - ); }, ); } - MIHHeader getHeader() { - return const MIHHeader( - headerAlignment: MainAxisAlignment.center, - headerItems: [ - Text( - "", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 25, - ), - ), - ], + MihAppTools getTools() { + Map temp = {}; + temp[const Icon(Icons.calculate)] = () { + setState(() { + _selectedIndex = 0; + }); + }; + temp[const Icon(Icons.money)] = () { + setState(() { + _selectedIndex = 1; + }); + }; + return MihAppTools( + tools: temp, + selcetedIndex: _selectedIndex, ); } - MIHHeader getSecAction() { - return MIHHeader( - headerAlignment: MainAxisAlignment.end, - headerItems: [ - //============ Simple Calc ================ - Visibility( - visible: _selectedIndex != 0, - child: IconButton( - onPressed: () { - setState(() { - _selectedIndex = 0; - }); - }, - icon: const Icon( - Icons.calculate, - size: 35, - ), - ), - ), - Visibility( - visible: _selectedIndex == 0, - child: IconButton.filled( - iconSize: 35, - onPressed: () { - setState(() { - _selectedIndex = 0; - }); - }, - icon: const Icon( - Icons.calculate, - ), - ), - ), - //============ Tip Calc ================ - Visibility( - visible: _selectedIndex != 1, - child: IconButton( - onPressed: () { - setState(() { - _selectedIndex = 1; - }); - }, - icon: const Icon( - Icons.money, - size: 35, - ), - ), - ), - Visibility( - visible: _selectedIndex == 1, - child: IconButton.filled( - onPressed: () { - setState(() { - _selectedIndex = 1; - }); - }, - icon: const Icon( - Icons.money, - size: 35, - ), - ), - ), - // //============ Patient Files ================ - // Visibility( - // visible: _selectedIndex != 2, - // child: IconButton( - // onPressed: () { - // setState(() { - // _selectedIndex = 2; - // }); - // }, - // icon: const Icon( - // Icons.file_present, - // size: 35, - // ), - // ), - // ), - // Visibility( - // visible: _selectedIndex == 2, - // child: IconButton.filled( - // onPressed: () { - // setState(() { - // _selectedIndex = 2; - // }); - // }, - // icon: const Icon( - // Icons.file_present, - // size: 35, - // ), - // ), - // ), - ], - ); - } - - MIHBody getBody() { - return MIHBody( - borderOn: true, - bodyItems: [showSelection(_selectedIndex)], - ); - } - - Widget showSelection(int index) { - if (index == 0) { - return const SimpleCalc(); - } else if (index == 1) { - return const TipCalc(); - } else { - return const Placeholder(); - } - } - - @override - Widget build(BuildContext context) { - return SwipeDetector( - onSwipeLeft: (offset) { - if (_selectedIndex < 1) { - setState(() { - _selectedIndex += 1; - }); - } - //print("swipe left"); - }, - onSwipeRight: (offset) { - if (_selectedIndex > 0) { - setState(() { - _selectedIndex -= 1; - }); - } - //print("swipe right"); - }, - child: MIHLayoutBuilder( - actionButton: getActionButton(), - header: getHeader(), - secondaryActionButton: getSecAction(), - body: getBody(), - actionDrawer: null, - secondaryActionDrawer: null, - bottomNavBar: null, - pullDownToRefresh: false, - onPullDown: () async {}, - ), - ); + List getToolBody() { + List toolBodies = [ + const SimpleCalc(), + const TipCalc(), + ]; + return toolBodies; } } From 575108fdb5950bc754cac6e7084e4c214b4525b2 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Tue, 11 Mar 2025 10:19:51 +0200 Subject: [PATCH 4/4] update route --- Frontend/lib/mih_router/routeGenerator.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/lib/mih_router/routeGenerator.dart b/Frontend/lib/mih_router/routeGenerator.dart index ef613938..8b2c1b77 100644 --- a/Frontend/lib/mih_router/routeGenerator.dart +++ b/Frontend/lib/mih_router/routeGenerator.dart @@ -2,8 +2,8 @@ import 'package:Mzansi_Innovation_Hub/mih_components/mih_package/test/package_te import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/about_mih.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/mih_privacy_polocy_external.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/about_mih/mih_policy_tos_ext/mih_terms_of_service_external.dart'; -import 'package:Mzansi_Innovation_Hub/mih_packages/calendar/mzansi_calendar.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/calculator/mih_calculator.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/calendar/mzansi_calendar.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_ai/mzansi_ai.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_wallet/components/mih_barcode_scanner.dart'; import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_wallet/mih_wallet.dart';