From 45228099bd876a82c06eeed0d29c7622439e3941 Mon Sep 17 00:00:00 2001 From: sBubshait Date: Sun, 3 Aug 2025 10:06:53 +0300 Subject: [PATCH] feat: Settings page add Information and Help pages --- frontend/app_info.txt | 11 ++ frontend/assets/app_info.txt | 16 ++ frontend/lib/screens/information_screen.dart | 181 +++++++++++++++++++ frontend/lib/screens/support_screen.dart | 163 +++++++++++++++++ frontend/pubspec.yaml | 2 + 5 files changed, 373 insertions(+) create mode 100644 frontend/app_info.txt create mode 100644 frontend/assets/app_info.txt create mode 100644 frontend/lib/screens/information_screen.dart create mode 100644 frontend/lib/screens/support_screen.dart diff --git a/frontend/app_info.txt b/frontend/app_info.txt new file mode 100644 index 0000000..89f5596 --- /dev/null +++ b/frontend/app_info.txt @@ -0,0 +1,11 @@ +Wesal App - Connecting Colleagues + +Wesal (وصال) is a social networking mobile application designed specifically for connecting colleagues and transforming workplace social interactions. The app name is Arabic for "connection" or "union." + +It is a platform that enhances communication and collaboration among division members allowing them to build deeper connections and share experiences beyond formal work-related discussions. + +The app was fully developed by Saleh Bubshait within the COD/DPSD/ERP Mgmt Group. However, the app was proposed by Weed Batarfi and Insijam team. + +The app is being minimally maintained but is not actively developed at the moment as the developer is currently on assignment. For any help or inquiries, please reach out to the DPSD/ERP Mgmt Group. + +Thank you for using Wesal! \ No newline at end of file diff --git a/frontend/assets/app_info.txt b/frontend/assets/app_info.txt new file mode 100644 index 0000000..6a0710c --- /dev/null +++ b/frontend/assets/app_info.txt @@ -0,0 +1,16 @@ +Wesal App - Connecting Colleagues + +Wesal (وصال) is a social networking mobile application designed specifically for connecting colleagues and transforming workplace social interactions. The app name is Arabic for "connection" or "union." + +Features: +• Social feed for sharing updates and thoughts +• Event invitations and RSVP management +• Real-time notifications for engagement +• Profile management and customization +• Secure authentication and data protection + +This application was developed to foster better communication and stronger relationships among team members, making workplace collaboration more enjoyable and effective. + +For technical support or account-related inquiries, please contact the ERP Management Group from your official company email address. + +Thank you for using Wesal! \ No newline at end of file diff --git a/frontend/lib/screens/information_screen.dart b/frontend/lib/screens/information_screen.dart new file mode 100644 index 0000000..abb583b --- /dev/null +++ b/frontend/lib/screens/information_screen.dart @@ -0,0 +1,181 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class InformationScreen extends StatefulWidget { + const InformationScreen({Key? key}) : super(key: key); + + @override + _InformationScreenState createState() => _InformationScreenState(); +} + +class _InformationScreenState extends State { + String appInfo = ''; + bool isLoading = true; + + @override + void initState() { + super.initState(); + _loadAppInfo(); + } + + Future _loadAppInfo() async { + try { + final String info = await rootBundle.loadString('assets/app_info.txt'); + setState(() { + appInfo = info; + isLoading = false; + }); + } catch (e) { + print('Error loading app info: $e'); + setState(() { + appInfo = 'Unable to load app information.'; + isLoading = false; + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text( + 'Information', + style: TextStyle(fontWeight: FontWeight.w600), + ), + backgroundColor: Colors.white, + foregroundColor: Color(0xFF6A4C93), + elevation: 0, + bottom: PreferredSize( + preferredSize: Size.fromHeight(1), + child: Container(height: 1, color: Colors.grey[200]), + ), + ), + body: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [Color(0xFF32B0A5), Color(0xFF4600B9)], + ), + ), + child: SafeArea( + child: Padding( + padding: EdgeInsets.all(24), + child: Column( + children: [ + Expanded( + child: SingleChildScrollView( + child: Column( + children: [ + SizedBox(height: 20), + + // App Logo + Container( + padding: EdgeInsets.all(24), + child: Text( + 'وصال', + style: TextStyle( + fontFamily: 'Blaka', + fontSize: 80, + fontWeight: FontWeight.w200, + color: Colors.white, + shadows: [ + Shadow( + offset: Offset(2, 2), + blurRadius: 4, + color: Colors.black.withOpacity(0.3), + ), + ], + ), + ), + ), + + SizedBox(height: 20), + + // App Version + Container( + padding: EdgeInsets.symmetric( + horizontal: 20, + vertical: 8, + ), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + 'Version 1.0.0', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + color: Colors.white, + ), + ), + ), + + SizedBox(height: 40), + + // App Information + Container( + padding: EdgeInsets.all(24), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.1), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: Colors.white.withOpacity(0.3), + ), + ), + child: isLoading + ? Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + Colors.white, + ), + ), + ) + : Text( + appInfo, + style: TextStyle( + fontSize: 16, + color: Colors.white.withOpacity(0.9), + height: 1.6, + ), + textAlign: TextAlign.center, + ), + ), + // Additional info + ], + ), + ), + ), + + SizedBox(height: 24), + Container( + width: double.infinity, + height: 56, + child: ElevatedButton( + onPressed: () => Navigator.of(context).pop(), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.white, + foregroundColor: Color(0xFF6A4C93), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + elevation: 4, + ), + child: Text( + 'Back to Settings', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/frontend/lib/screens/support_screen.dart b/frontend/lib/screens/support_screen.dart new file mode 100644 index 0000000..9df5818 --- /dev/null +++ b/frontend/lib/screens/support_screen.dart @@ -0,0 +1,163 @@ +import 'package:flutter/material.dart'; + +class SupportScreen extends StatelessWidget { + const SupportScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Support', style: TextStyle(fontWeight: FontWeight.w600)), + backgroundColor: Colors.white, + foregroundColor: Color(0xFF6A4C93), + elevation: 0, + bottom: PreferredSize( + preferredSize: Size.fromHeight(1), + child: Container(height: 1, color: Colors.grey[200]), + ), + ), + body: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color(0xFF32B0A5), + Color(0xFF4600B9), + ], + ), + ), + child: SafeArea( + child: Padding( + padding: EdgeInsets.all(24), + child: Column( + children: [ + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 120, + height: 120, + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + shape: BoxShape.circle, + ), + child: Icon( + Icons.contact_support, + size: 60, + color: Colors.white, + ), + ), + + SizedBox(height: 40), + + Text( + 'Need Help?', + style: TextStyle( + fontSize: 32, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + + SizedBox(height: 16), + + Text( + 'We\'re here to help you!', + style: TextStyle( + fontSize: 18, + color: Colors.white.withOpacity(0.9), + ), + ), + + SizedBox(height: 40), + + Container( + padding: EdgeInsets.all(24), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.1), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: Colors.white.withOpacity(0.3), + ), + ), + child: Column( + children: [ + Icon( + Icons.email_outlined, + size: 40, + color: Colors.white, + ), + SizedBox(height: 16), + Text( + 'Contact Support', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w600, + color: Colors.white, + ), + ), + SizedBox(height: 12), + Text( + 'For account creation, password reset, or any other assistance, please contact ERP Management Group from your official company email address.', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 16, + color: Colors.white.withOpacity(0.9), + height: 1.4, + ), + ), + SizedBox(height: 20), + Container( + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.2), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + 'ERP Management Group', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ], + ), + ), + + Container( + width: double.infinity, + height: 56, + child: ElevatedButton( + onPressed: () => Navigator.of(context).pop(), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.white, + foregroundColor: Color(0xFF6A4C93), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + elevation: 4, + ), + child: Text( + 'Back to Settings', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/pubspec.yaml b/frontend/pubspec.yaml index b2c33a1..63ab27a 100644 --- a/frontend/pubspec.yaml +++ b/frontend/pubspec.yaml @@ -25,6 +25,8 @@ dev_dependencies: flutter: uses-material-design: true + assets: + - assets/app_info.txt fonts: - family: Blaka fonts: