From bde03b8aca4afca7ad77e6f0977ac07ee56754be Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 17:42:39 +0530 Subject: [PATCH 01/27] Updated README --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 597b39b44..b062085da 100644 --- a/README.md +++ b/README.md @@ -5,22 +5,21 @@ ## Basic Details -### Team Name: [Name] +### Team Name: [Vanguard] ### Team Members -- Team Lead: [Name] - [College] -- Member 2: [Name] - [College] -- Member 3: [Name] - [College] +- Team Lead: [Jeffin Basil] - [SCMS SCHOOL OF ENGINEERING & TECHNOLOGY] +- Member 2: [Adithya Manghat] - [SCMS SCHOOL OF ENGINEERING & TECHNOLOGY] ### Project Description -[2-3 lines about what your project does] +["ScramPad" could be envisioned as a notepad application that looks normal but gradually scrambles, distorts, or modifies saved notes subtly over time] ### The Problem (that doesn't exist) -[What ridiculous problem are you solving?] +[Notepad app are convenient and useful for most cases.] ### The Solution (that nobody asked for) -[How are you solving it? Keep it fun!] +[It will be more inconvenient to use.] ## Technical Details ### Technologies/Components Used From 18c550dd046404807bb74f9fdc3b2e11737ebd14 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 17:50:59 +0530 Subject: [PATCH 02/27] added flutter files --- .gitignore | 45 +++ .metadata | 45 +++ analysis_options.yaml | 28 ++ lib/main.dart | 122 ++++++++ pubspec.lock | 213 +++++++++++++ pubspec.yaml | 89 ++++++ test/widget_test.dart | 30 ++ windows/.gitignore | 17 ++ windows/CMakeLists.txt | 108 +++++++ windows/flutter/CMakeLists.txt | 109 +++++++ .../flutter/generated_plugin_registrant.cc | 11 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 23 ++ windows/runner/CMakeLists.txt | 40 +++ windows/runner/Runner.rc | 121 ++++++++ windows/runner/flutter_window.cpp | 71 +++++ windows/runner/flutter_window.h | 33 ++ windows/runner/main.cpp | 43 +++ windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 14 + windows/runner/utils.cpp | 65 ++++ windows/runner/utils.h | 19 ++ windows/runner/win32_window.cpp | 288 ++++++++++++++++++ windows/runner/win32_window.h | 102 +++++++ 25 files changed, 1667 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 analysis_options.yaml create mode 100644 lib/main.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..79c113f9b --- /dev/null +++ b/.gitignore @@ -0,0 +1,45 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 000000000..af5cda898 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "edada7c56edf4a183c1735310e123c7f923584f1" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + - platform: android + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + - platform: ios + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + - platform: linux + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + - platform: macos + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + - platform: web + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + - platform: windows + create_revision: edada7c56edf4a183c1735310e123c7f923584f1 + base_revision: edada7c56edf4a183c1735310e123c7f923584f1 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 000000000..7b7f5b6f3 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,122 @@ +import 'package:flutter/material.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + // This is the theme of your application. + // + // TRY THIS: Try running your application with "flutter run". You'll see + // the application has a purple toolbar. Then, without quitting the app, + // try changing the seedColor in the colorScheme below to Colors.green + // and then invoke "hot reload" (save your changes or press the "hot + // reload" button in a Flutter-supported IDE, or press "r" if you used + // the command line to start the app). + // + // Notice that the counter didn't reset back to zero; the application + // state is not lost during the reload. To reset the state, use hot + // restart instead. + // + // This works for code too, not just values: Most code changes can be + // tested with just a hot reload. + colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({super.key, required this.title}); + + // This widget is the home page of your application. It is stateful, meaning + // that it has a State object (defined below) that contains fields that affect + // how it looks. + + // This class is the configuration for the state. It holds the values (in this + // case the title) provided by the parent (in this case the App widget) and + // used by the build method of the State. Fields in a Widget subclass are + // always marked "final". + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + int _counter = 0; + + void _incrementCounter() { + setState(() { + // This call to setState tells the Flutter framework that something has + // changed in this State, which causes it to rerun the build method below + // so that the display can reflect the updated values. If we changed + // _counter without calling setState(), then the build method would not be + // called again, and so nothing would appear to happen. + _counter++; + }); + } + + @override + Widget build(BuildContext context) { + // This method is rerun every time setState is called, for instance as done + // by the _incrementCounter method above. + // + // The Flutter framework has been optimized to make rerunning build methods + // fast, so that you can just rebuild anything that needs updating rather + // than having to individually change instances of widgets. + return Scaffold( + appBar: AppBar( + // TRY THIS: Try changing the color here to a specific color (to + // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar + // change color while the other colors stay the same. + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + // Here we take the value from the MyHomePage object that was created by + // the App.build method, and use it to set our appbar title. + title: Text(widget.title), + ), + body: Center( + // Center is a layout widget. It takes a single child and positions it + // in the middle of the parent. + child: Column( + // Column is also a layout widget. It takes a list of children and + // arranges them vertically. By default, it sizes itself to fit its + // children horizontally, and tries to be as tall as its parent. + // + // Column has various properties to control how it sizes itself and + // how it positions its children. Here we use mainAxisAlignment to + // center the children vertically; the main axis here is the vertical + // axis because Columns are vertical (the cross axis would be + // horizontal). + // + // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" + // action in the IDE, or press "p" in the console), to see the + // wireframe for each widget. + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text('You have pushed the button this many times:'), + Text( + '$_counter', + style: Theme.of(context).textTheme.headlineMedium, + ), + ], + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: _incrementCounter, + tooltip: 'Increment', + child: const Icon(Icons.add), + ), // This trailing comma makes auto-formatting nicer for build methods. + ); + } +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 000000000..eaa659f0c --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,213 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + url: "https://pub.dev" + source: hosted + version: "10.0.9" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + url: "https://pub.dev" + source: hosted + version: "3.0.9" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + url: "https://pub.dev" + source: hosted + version: "15.0.0" +sdks: + dart: ">=3.8.1 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 000000000..fabfae90e --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,89 @@ +name: vanguard +description: "A new Flutter project." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# 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+1 + +environment: + sdk: ^3.8.1 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 000000000..ff411d245 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:vanguard/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 000000000..d492d0d98 --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 000000000..52ed101ef --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(vanguard LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "vanguard") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 000000000..903f4899d --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 000000000..8b6d4680a --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 000000000..dc139d85a --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 000000000..b93c4c30c --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 000000000..394917c05 --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 000000000..10e00890a --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "vanguard" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "vanguard" "\0" + VALUE "LegalCopyright", "Copyright (C) 2025 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "vanguard.exe" "\0" + VALUE "ProductName", "vanguard" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 000000000..955ee3038 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 000000000..6da0652f0 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 000000000..d4ebc556d --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"vanguard", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 000000000..66a65d1e4 --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 000000000..153653e8d --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 000000000..3a0b46511 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + unsigned int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 000000000..3879d5475 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 000000000..60608d0fe --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 000000000..e901dde68 --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ From 73bf2a6028063f2b00bab0cd18355be500e0f656 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 18:12:15 +0530 Subject: [PATCH 03/27] added basic ui frame structure to folder --- lib/main.dart | 455 ++++++++++++++++++++++++++++++++------- pubspec.yaml | 42 +--- test/widget_test.dart | 2 +- windows/CMakeLists.txt | 4 +- windows/runner/Runner.rc | 8 +- 5 files changed, 386 insertions(+), 125 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 7b7f5b6f3..50401881d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; void main() { runApp(const MyApp()); @@ -7,116 +8,404 @@ void main() { class MyApp extends StatelessWidget { const MyApp({super.key}); - // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( - title: 'Flutter Demo', + title: 'ScramPad', + debugShowCheckedModeBanner: false, theme: ThemeData( - // This is the theme of your application. - // - // TRY THIS: Try running your application with "flutter run". You'll see - // the application has a purple toolbar. Then, without quitting the app, - // try changing the seedColor in the colorScheme below to Colors.green - // and then invoke "hot reload" (save your changes or press the "hot - // reload" button in a Flutter-supported IDE, or press "r" if you used - // the command line to start the app). - // - // Notice that the counter didn't reset back to zero; the application - // state is not lost during the reload. To reset the state, use hot - // restart instead. - // - // This works for code too, not just values: Most code changes can be - // tested with just a hot reload. - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + brightness: Brightness.light, + colorScheme: const ColorScheme.light( + primary: Colors.blue, + surface: Color(0xFFFAFAFA), + ), + scaffoldBackgroundColor: const Color(0xFFF3F3F3), + appBarTheme: const AppBarTheme( + backgroundColor: Colors.transparent, + elevation: 0, + systemOverlayStyle: SystemUiOverlayStyle.dark, + ), ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), + home: const ModernNotepadPage(), ); } } -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, required this.title}); +class ModernNotepadPage extends StatefulWidget { + const ModernNotepadPage({super.key}); - // This widget is the home page of your application. It is stateful, meaning - // that it has a State object (defined below) that contains fields that affect - // how it looks. + @override + State createState() => _ModernNotepadPageState(); +} - // This class is the configuration for the state. It holds the values (in this - // case the title) provided by the parent (in this case the App widget) and - // used by the build method of the State. Fields in a Widget subclass are - // always marked "final". +class _ModernNotepadPageState extends State { + final TextEditingController _controller = TextEditingController(); + bool _isBold = false; + bool _isItalic = false; + final String _currentHeading = 'Normal'; + int _characterCount = 0; + int _lineNumber = 1; + int _columnNumber = 1; - final String title; + @override + void initState() { + super.initState(); + _controller.addListener(_updateStats); + } @override - State createState() => _MyHomePageState(); -} + void dispose() { + _controller.removeListener(_updateStats); + _controller.dispose(); + super.dispose(); + } -class _MyHomePageState extends State { - int _counter = 0; + void _updateStats() { + final text = _controller.text; + final selection = _controller.selection; - void _incrementCounter() { setState(() { - // This call to setState tells the Flutter framework that something has - // changed in this State, which causes it to rerun the build method below - // so that the display can reflect the updated values. If we changed - // _counter without calling setState(), then the build method would not be - // called again, and so nothing would appear to happen. - _counter++; + _characterCount = text.length; + if (selection.isValid) { + final beforeCursor = text.substring(0, selection.baseOffset); + _lineNumber = '\n'.allMatches(beforeCursor).length + 1; + _columnNumber = beforeCursor.split('\n').last.length + 1; + } }); } @override Widget build(BuildContext context) { - // This method is rerun every time setState is called, for instance as done - // by the _incrementCounter method above. - // - // The Flutter framework has been optimized to make rerunning build methods - // fast, so that you can just rebuild anything that needs updating rather - // than having to individually change instances of widgets. return Scaffold( - appBar: AppBar( - // TRY THIS: Try changing the color here to a specific color (to - // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar - // change color while the other colors stay the same. - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - // Here we take the value from the MyHomePage object that was created by - // the App.build method, and use it to set our appbar title. - title: Text(widget.title), + backgroundColor: const Color(0xFFF3F3F3), + body: Column( + children: [ + // Custom Title Bar with Mica effect + Container( + height: 32, + decoration: BoxDecoration( + color: Colors.white.withValues(alpha: 0.7), + border: const Border( + bottom: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), + ), + ), + child: Row( + children: [ + const SizedBox(width: 12), + // Notepad icon + Container( + width: 16, + height: 16, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topRight: Radius.circular(2), + bottomLeft: Radius.circular(2), + bottomRight: Radius.circular(2), + ), + ), + child: Container( + margin: const EdgeInsets.only(left: 2), + decoration: const BoxDecoration( + color: Colors.blue, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(1), + bottomLeft: Radius.circular(1), + ), + ), + width: 3, + ), + ), + const SizedBox(width: 8), + const Text( + 'Untitled - ScramPad', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.black87, + ), + ), + const Spacer(), + // Title bar controls + _buildTitleBarButton(Icons.palette, Colors.red), + _buildTitleBarButton(Icons.account_circle, Colors.orange), + _buildTitleBarButton(Icons.settings, Colors.grey), + _buildTitleBarButton(Icons.minimize, Colors.grey), + _buildTitleBarButton(Icons.crop_square, Colors.grey), + _buildTitleBarButton(Icons.close, Colors.grey), + ], + ), + ), + + // Tab Bar + Container( + height: 36, + decoration: const BoxDecoration( + color: Colors.white, + border: Border( + bottom: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), + ), + ), + child: Row( + children: [ + Container( + margin: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: const Color(0xFFF0F0F0), + borderRadius: BorderRadius.circular(6), + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Untitled', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + ), + ), + SizedBox(width: 6), + Icon(Icons.close, size: 12, color: Colors.grey), + ], + ), + ), + Container( + width: 24, + height: 24, + margin: const EdgeInsets.only(left: 4), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(4), + ), + child: const Icon(Icons.add, size: 14, color: Colors.grey), + ), + ], + ), + ), + + // Toolbar + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: Colors.white, + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.05), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + children: [ + _buildMenuButton('File'), + _buildMenuButton('Edit'), + _buildMenuButton('View'), + const SizedBox(width: 16), + _buildDropdown(_currentHeading, ['Normal', 'H1', 'H2', 'H3']), + const SizedBox(width: 8), + _buildDropdown('•', ['•', '1.', '→']), + const SizedBox(width: 16), + _buildFormatButton(Icons.format_bold, _isBold, () { + setState(() => _isBold = !_isBold); + }), + _buildFormatButton(Icons.format_italic, _isItalic, () { + setState(() => _isItalic = !_isItalic); + }), + _buildFormatButton(Icons.link, false, () {}), + const SizedBox(width: 8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(4), + ), + child: const Text( + 'Aa', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Colors.black54, + ), + ), + ), + ], + ), + ), + + // Text Editor Area + Expanded( + child: Container( + color: Colors.white, + child: TextField( + controller: _controller, + maxLines: null, + expands: true, + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black, + height: 1.4, + fontWeight: _isBold ? FontWeight.w600 : FontWeight.w400, + fontStyle: _isItalic ? FontStyle.italic : FontStyle.normal, + ), + decoration: const InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(16), + hintText: '', + ), + textAlign: TextAlign.start, + textAlignVertical: TextAlignVertical.top, + cursorColor: Colors.black, + cursorWidth: 1.0, + ), + ), + ), + + // Status Bar + Container( + height: 24, + padding: const EdgeInsets.symmetric(horizontal: 16), + decoration: const BoxDecoration( + color: Color(0xFFF8F8F8), + border: Border( + top: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), + ), + ), + child: Row( + children: [ + Text( + 'Ln $_lineNumber, Col $_columnNumber', + style: const TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + Text( + '$_characterCount characters', + style: const TextStyle(fontSize: 11, color: Colors.black54), + ), + const Spacer(), + const Text( + 'Plain text', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + const Text( + '100%', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + const Text( + 'Windows (CRLF)', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + const Text( + 'UTF-8', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + ], + ), + ), + ], ), - body: Center( - // Center is a layout widget. It takes a single child and positions it - // in the middle of the parent. - child: Column( - // Column is also a layout widget. It takes a list of children and - // arranges them vertically. By default, it sizes itself to fit its - // children horizontally, and tries to be as tall as its parent. - // - // Column has various properties to control how it sizes itself and - // how it positions its children. Here we use mainAxisAlignment to - // center the children vertically; the main axis here is the vertical - // axis because Columns are vertical (the cross axis would be - // horizontal). - // - // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" - // action in the IDE, or press "p" in the console), to see the - // wireframe for each widget. - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('You have pushed the button this many times:'), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, + ); + } + + Widget _buildTitleBarButton(IconData icon, Color color) { + return Container( + width: 32, + height: 32, + margin: const EdgeInsets.only(right: 1), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () {}, + child: Icon(icon, size: 14, color: color.withValues(alpha: 0.8)), + ), + ), + ); + } + + Widget _buildMenuButton(String text) { + return Padding( + padding: const EdgeInsets.only(right: 16), + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(4), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Text( + text, + style: const TextStyle( + fontSize: 13, + color: Colors.black87, + fontWeight: FontWeight.w400, ), - ], + ), + ), + ), + ); + } + + Widget _buildDropdown(String value, List items) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(4), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + value, + style: const TextStyle(fontSize: 12, color: Colors.black87), + ), + const SizedBox(width: 4), + Icon(Icons.arrow_drop_down, size: 16, color: Colors.grey.shade600), + ], + ), + ); + } + + Widget _buildFormatButton(IconData icon, bool isActive, VoidCallback onTap) { + return Container( + width: 28, + height: 28, + margin: const EdgeInsets.only(right: 4), + decoration: BoxDecoration( + color: isActive + ? Colors.blue.withValues(alpha: 0.1) + : Colors.transparent, + border: Border.all( + color: isActive + ? Colors.blue.withValues(alpha: 0.3) + : Colors.grey.shade300, + ), + borderRadius: BorderRadius.circular(4), + ), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(4), + child: Icon( + icon, + size: 16, + color: isActive ? Colors.blue : Colors.black54, + ), ), ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), // This trailing comma makes auto-formatting nicer for build methods. ); } } diff --git a/pubspec.yaml b/pubspec.yaml index fabfae90e..c543aa518 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,60 +1,32 @@ -name: vanguard +name: scrampad description: "A new Flutter project." -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. -# Read more about iOS versioning at -# 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. + +publish_to: 'none' + version: 1.0.0+1 environment: sdk: ^3.8.1 -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. + dependencies: flutter: sdk: flutter - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 dev_dependencies: flutter_test: sdk: flutter - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. flutter_lints: ^5.0.0 -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec + # The following section is specific to Flutter packages. flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. + uses-material-design: true # To add assets to your application, add an assets section, like this: diff --git a/test/widget_test.dart b/test/widget_test.dart index ff411d245..ab72eaca8 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:vanguard/main.dart'; +import 'package:scrampad/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt index 52ed101ef..a7da523a3 100644 --- a/windows/CMakeLists.txt +++ b/windows/CMakeLists.txt @@ -1,10 +1,10 @@ # Project-level configuration. cmake_minimum_required(VERSION 3.14) -project(vanguard LANGUAGES CXX) +project(scrampad LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. -set(BINARY_NAME "vanguard") +set(BINARY_NAME "scrampad") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc index 10e00890a..adc9ac8c8 100644 --- a/windows/runner/Runner.rc +++ b/windows/runner/Runner.rc @@ -90,12 +90,12 @@ BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "vanguard" "\0" + VALUE "FileDescription", "scrampad" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "vanguard" "\0" + VALUE "InternalName", "scrampad" "\0" VALUE "LegalCopyright", "Copyright (C) 2025 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "vanguard.exe" "\0" - VALUE "ProductName", "vanguard" "\0" + VALUE "OriginalFilename", "scrampad.exe" "\0" + VALUE "ProductName", "scrampad" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" END END From 213e782cece26c13f054e3b1e28444e645c12126 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 18:25:23 +0530 Subject: [PATCH 04/27] flutter added basic ui frame structure to folder --- README.md | 2 +- windows/runner/main.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b062085da..6b381ffbc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Basic Details -### Team Name: [Vanguard] +### Team Name: [ScramPad] ### Team Members diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index d4ebc556d..f3e54939d 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.Create(L"vanguard", origin, size)) { + if (!window.Create(L"scrampad", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); From 6fed3d8e3e8593cb3c914cda098e04b444530f98 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 18:58:44 +0530 Subject: [PATCH 05/27] added notepad ui to flutter --- .metadata | 15 -- lib/main.dart | 458 +++++++++++++++++++++++++------------------------- 2 files changed, 232 insertions(+), 241 deletions(-) diff --git a/.metadata b/.metadata index af5cda898..45b230622 100644 --- a/.metadata +++ b/.metadata @@ -15,21 +15,6 @@ migration: - platform: root create_revision: edada7c56edf4a183c1735310e123c7f923584f1 base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - - platform: android - create_revision: edada7c56edf4a183c1735310e123c7f923584f1 - base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - - platform: ios - create_revision: edada7c56edf4a183c1735310e123c7f923584f1 - base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - - platform: linux - create_revision: edada7c56edf4a183c1735310e123c7f923584f1 - base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - - platform: macos - create_revision: edada7c56edf4a183c1735310e123c7f923584f1 - base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - - platform: web - create_revision: edada7c56edf4a183c1735310e123c7f923584f1 - base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - platform: windows create_revision: edada7c56edf4a183c1735310e123c7f923584f1 base_revision: edada7c56edf4a183c1735310e123c7f923584f1 diff --git a/lib/main.dart b/lib/main.dart index 50401881d..b45e0de10 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +// Intent classes for keyboard shortcuts +class BoldIntent extends Intent { + const BoldIntent(); +} + +class ItalicIntent extends Intent { + const ItalicIntent(); +} + void main() { runApp(const MyApp()); } @@ -19,11 +28,11 @@ class MyApp extends StatelessWidget { primary: Colors.blue, surface: Color(0xFFFAFAFA), ), - scaffoldBackgroundColor: const Color(0xFFF3F3F3), + scaffoldBackgroundColor: Colors.white, appBarTheme: const AppBarTheme( - backgroundColor: Colors.transparent, + backgroundColor: Colors.white, elevation: 0, - systemOverlayStyle: SystemUiOverlayStyle.dark, + systemOverlayStyle: SystemUiOverlayStyle.light, ), ), home: const ModernNotepadPage(), @@ -76,261 +85,258 @@ class _ModernNotepadPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: const Color(0xFFF3F3F3), - body: Column( - children: [ - // Custom Title Bar with Mica effect - Container( - height: 32, - decoration: BoxDecoration( - color: Colors.white.withValues(alpha: 0.7), - border: const Border( - bottom: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), - ), - ), - child: Row( + return Shortcuts( + shortcuts: { + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyB): + const BoldIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyI): + const ItalicIntent(), + }, + child: Actions( + actions: >{ + BoldIntent: CallbackAction( + onInvoke: (BoldIntent intent) { + setState(() { + _isBold = !_isBold; + }); + return null; + }, + ), + ItalicIntent: CallbackAction( + onInvoke: (ItalicIntent intent) { + setState(() { + _isItalic = !_isItalic; + }); + return null; + }, + ), + }, + child: Focus( + autofocus: true, + child: Scaffold( + backgroundColor: Colors.white, + body: Column( children: [ - const SizedBox(width: 12), - // Notepad icon Container( - width: 16, - height: 16, + height: 36, decoration: const BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.only( - topRight: Radius.circular(2), - bottomLeft: Radius.circular(2), - bottomRight: Radius.circular(2), + border: Border( + bottom: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), ), ), - child: Container( - margin: const EdgeInsets.only(left: 2), - decoration: const BoxDecoration( - color: Colors.blue, - borderRadius: BorderRadius.only( - topLeft: Radius.circular(1), - bottomLeft: Radius.circular(1), + child: Row( + children: [ + Container( + margin: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: const Color(0xFFF0F0F0), + borderRadius: BorderRadius.circular(6), + ), + child: const Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Untitled', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + ), + ), + SizedBox(width: 6), + Icon(Icons.close, size: 12, color: Colors.grey), + ], + ), ), - ), - width: 3, - ), - ), - const SizedBox(width: 8), - const Text( - 'Untitled - ScramPad', - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w400, - color: Colors.black87, + Container( + width: 24, + height: 24, + margin: const EdgeInsets.only(left: 4), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(4), + ), + child: const Icon( + Icons.add, + size: 14, + color: Colors.grey, + ), + ), + const Spacer(), // Push settings icon to the right + Padding( + padding: const EdgeInsets.only(right: 8), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(4), + child: Padding( + padding: const EdgeInsets.all(6), + child: Icon( + Icons.settings, + size: 18, + color: Colors.grey.shade600, + ), + ), + ), + ), + ), + ], ), ), - const Spacer(), - // Title bar controls - _buildTitleBarButton(Icons.palette, Colors.red), - _buildTitleBarButton(Icons.account_circle, Colors.orange), - _buildTitleBarButton(Icons.settings, Colors.grey), - _buildTitleBarButton(Icons.minimize, Colors.grey), - _buildTitleBarButton(Icons.crop_square, Colors.grey), - _buildTitleBarButton(Icons.close, Colors.grey), - ], - ), - ), - // Tab Bar - Container( - height: 36, - decoration: const BoxDecoration( - color: Colors.white, - border: Border( - bottom: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), - ), - ), - child: Row( - children: [ + // Toolbar Container( - margin: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), padding: const EdgeInsets.symmetric( horizontal: 12, - vertical: 6, + vertical: 8, ), decoration: BoxDecoration( - color: const Color(0xFFF0F0F0), - borderRadius: BorderRadius.circular(6), + color: Colors.white, + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.05), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], ), - child: const Row( - mainAxisSize: MainAxisSize.min, + child: Row( children: [ - Text( - 'Untitled', - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w400, + _buildMenuButton('File'), + _buildMenuButton('Edit'), + _buildMenuButton('View'), + const SizedBox(width: 16), + _buildDropdown(_currentHeading, [ + 'Normal', + 'H1', + 'H2', + 'H3', + ]), + const SizedBox(width: 8), + _buildDropdown('•', ['•', '1.', '→']), + const SizedBox(width: 16), + _buildFormatButton(Icons.format_bold, _isBold, () { + setState(() => _isBold = !_isBold); + }), + _buildFormatButton(Icons.format_italic, _isItalic, () { + setState(() => _isItalic = !_isItalic); + }), + _buildFormatButton(Icons.link, false, () {}), + const SizedBox(width: 8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + border: Border.all(color: Colors.grey.shade300), + borderRadius: BorderRadius.circular(4), + ), + child: const Text( + 'Aa', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Colors.black54, + ), ), ), - SizedBox(width: 6), - Icon(Icons.close, size: 12, color: Colors.grey), ], ), ), - Container( - width: 24, - height: 24, - margin: const EdgeInsets.only(left: 4), - decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(4), + + // Text Editor Area + Expanded( + child: Container( + color: Colors.white, + child: TextField( + controller: _controller, + maxLines: null, + expands: true, + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black, + height: 1.4, + fontWeight: _isBold ? FontWeight.w600 : FontWeight.w400, + fontStyle: _isItalic + ? FontStyle.italic + : FontStyle.normal, + ), + decoration: const InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(16), + hintText: '', + ), + textAlign: TextAlign.start, + textAlignVertical: TextAlignVertical.top, + cursorColor: Colors.black, + cursorWidth: 1.0, + ), ), - child: const Icon(Icons.add, size: 14, color: Colors.grey), ), - ], - ), - ), - // Toolbar - Container( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), - decoration: BoxDecoration( - color: Colors.white, - boxShadow: [ - BoxShadow( - color: Colors.black.withValues(alpha: 0.05), - blurRadius: 4, - offset: const Offset(0, 2), - ), - ], - ), - child: Row( - children: [ - _buildMenuButton('File'), - _buildMenuButton('Edit'), - _buildMenuButton('View'), - const SizedBox(width: 16), - _buildDropdown(_currentHeading, ['Normal', 'H1', 'H2', 'H3']), - const SizedBox(width: 8), - _buildDropdown('•', ['•', '1.', '→']), - const SizedBox(width: 16), - _buildFormatButton(Icons.format_bold, _isBold, () { - setState(() => _isBold = !_isBold); - }), - _buildFormatButton(Icons.format_italic, _isItalic, () { - setState(() => _isItalic = !_isItalic); - }), - _buildFormatButton(Icons.link, false, () {}), - const SizedBox(width: 8), + // Status Bar Container( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), - decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(4), - ), - child: const Text( - 'Aa', - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w600, - color: Colors.black54, + height: 24, + padding: const EdgeInsets.symmetric(horizontal: 16), + decoration: const BoxDecoration( + color: Color(0xFFF8F8F8), + border: Border( + top: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), ), ), + child: Row( + children: [ + Text( + 'Ln $_lineNumber, Col $_columnNumber', + style: const TextStyle( + fontSize: 11, + color: Colors.black54, + ), + ), + const SizedBox(width: 16), + Text( + '$_characterCount characters', + style: const TextStyle( + fontSize: 11, + color: Colors.black54, + ), + ), + const Spacer(), + const Text( + 'Plain text', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + const Text( + '100%', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + const Text( + 'Windows (CRLF)', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + const SizedBox(width: 16), + const Text( + 'UTF-8', + style: TextStyle(fontSize: 11, color: Colors.black54), + ), + ], + ), ), ], ), ), - - // Text Editor Area - Expanded( - child: Container( - color: Colors.white, - child: TextField( - controller: _controller, - maxLines: null, - expands: true, - style: TextStyle( - fontSize: 14, - fontFamily: 'Segoe UI', - color: Colors.black, - height: 1.4, - fontWeight: _isBold ? FontWeight.w600 : FontWeight.w400, - fontStyle: _isItalic ? FontStyle.italic : FontStyle.normal, - ), - decoration: const InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.all(16), - hintText: '', - ), - textAlign: TextAlign.start, - textAlignVertical: TextAlignVertical.top, - cursorColor: Colors.black, - cursorWidth: 1.0, - ), - ), - ), - - // Status Bar - Container( - height: 24, - padding: const EdgeInsets.symmetric(horizontal: 16), - decoration: const BoxDecoration( - color: Color(0xFFF8F8F8), - border: Border( - top: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), - ), - ), - child: Row( - children: [ - Text( - 'Ln $_lineNumber, Col $_columnNumber', - style: const TextStyle(fontSize: 11, color: Colors.black54), - ), - const SizedBox(width: 16), - Text( - '$_characterCount characters', - style: const TextStyle(fontSize: 11, color: Colors.black54), - ), - const Spacer(), - const Text( - 'Plain text', - style: TextStyle(fontSize: 11, color: Colors.black54), - ), - const SizedBox(width: 16), - const Text( - '100%', - style: TextStyle(fontSize: 11, color: Colors.black54), - ), - const SizedBox(width: 16), - const Text( - 'Windows (CRLF)', - style: TextStyle(fontSize: 11, color: Colors.black54), - ), - const SizedBox(width: 16), - const Text( - 'UTF-8', - style: TextStyle(fontSize: 11, color: Colors.black54), - ), - ], - ), - ), - ], - ), - ); - } - - Widget _buildTitleBarButton(IconData icon, Color color) { - return Container( - width: 32, - height: 32, - margin: const EdgeInsets.only(right: 1), - child: Material( - color: Colors.transparent, - child: InkWell( - onTap: () {}, - child: Icon(icon, size: 14, color: color.withValues(alpha: 0.8)), ), ), ); From 541ef974ab0287d6d6f385d57e2aa12388f5ea1f Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 19:28:12 +0530 Subject: [PATCH 06/27] added rich text formatting --- lib/main.dart | 348 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 257 insertions(+), 91 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index b45e0de10..cbcfa62ad 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -10,6 +10,23 @@ class ItalicIntent extends Intent { const ItalicIntent(); } +class SelectAllIntent extends Intent { + const SelectAllIntent(); +} + +// Text span with formatting info +class FormattedTextSpan { + final String text; + final bool isBold; + final bool isItalic; + + FormattedTextSpan({ + required this.text, + this.isBold = false, + this.isItalic = false, + }); +} + void main() { runApp(const MyApp()); } @@ -49,8 +66,14 @@ class ModernNotepadPage extends StatefulWidget { class _ModernNotepadPageState extends State { final TextEditingController _controller = TextEditingController(); + final FocusNode _focusNode = FocusNode(); + + // Rich text formatting + final List _textSpans = []; bool _isBold = false; bool _isItalic = false; + String _lastText = ''; + final String _currentHeading = 'Normal'; int _characterCount = 0; int _lineNumber = 1; @@ -60,12 +83,17 @@ class _ModernNotepadPageState extends State { void initState() { super.initState(); _controller.addListener(_updateStats); + _controller.addListener(_handleTextChange); + // Initialize with one empty span + _textSpans.add(FormattedTextSpan(text: '', isBold: false, isItalic: false)); } @override void dispose() { _controller.removeListener(_updateStats); + _controller.removeListener(_handleTextChange); _controller.dispose(); + _focusNode.dispose(); super.dispose(); } @@ -83,6 +111,119 @@ class _ModernNotepadPageState extends State { }); } + void _handleTextChange() { + final text = _controller.text; + final selection = _controller.selection; + + // Only handle new text additions + if (text.length > _lastText.length) { + final newText = text.substring(_lastText.length); + _addFormattedText(newText, _isBold, _isItalic); + } else if (text.length < _lastText.length) { + // Handle deletions by rebuilding spans + _rebuildTextSpans(text, selection); + } + + _lastText = text; + } + + void _addFormattedText(String newText, bool isBold, bool isItalic) { + // Add new text with current formatting + if (_textSpans.isNotEmpty && + _textSpans.last.isBold == isBold && + _textSpans.last.isItalic == isItalic) { + // Same formatting as last span, append to it + final lastSpan = _textSpans.last; + _textSpans[_textSpans.length - 1] = FormattedTextSpan( + text: lastSpan.text + newText, + isBold: lastSpan.isBold, + isItalic: lastSpan.isItalic, + ); + } else { + // Different formatting, create new span + _textSpans.add( + FormattedTextSpan(text: newText, isBold: isBold, isItalic: isItalic), + ); + } + } + + void _rebuildTextSpans(String text, TextSelection selection) { + // For deletions, we'll keep it simple and just track the current text + // In a full implementation, you'd want more sophisticated span management + if (text.isEmpty) { + _textSpans.clear(); + _textSpans.add( + FormattedTextSpan(text: '', isBold: false, isItalic: false), + ); + } + } + + void _applyFormatting(bool isBold, bool isItalic) { + final selection = _controller.selection; + + if (selection.isValid && !selection.isCollapsed) { + // Apply formatting to selected text + final selectedText = _controller.text.substring( + selection.start, + selection.end, + ); + + // For simplicity, replace all text with formatted version + // In a full implementation, you'd modify only the selected spans + _applyFormattingToSelection(selectedText, isBold, isItalic, selection); + } else { + // No selection, just toggle formatting for new text + setState(() { + if (isBold) _isBold = !_isBold; + if (isItalic) _isItalic = !_isItalic; + }); + } + } + + void _applyFormattingToSelection( + String selectedText, + bool makeBold, + bool makeItalic, + TextSelection selection, + ) { + final text = _controller.text; + final beforeSelection = text.substring(0, selection.start); + final afterSelection = text.substring(selection.end); + + // Rebuild text spans with formatted selection + _textSpans.clear(); + + // Add text before selection (keep original formatting) + if (beforeSelection.isNotEmpty) { + _textSpans.add(FormattedTextSpan(text: beforeSelection)); + } + + // Add selected text with new formatting + if (selectedText.isNotEmpty) { + _textSpans.add( + FormattedTextSpan( + text: selectedText, + isBold: makeBold, + isItalic: makeItalic, + ), + ); + } + + // Add text after selection (keep original formatting) + if (afterSelection.isNotEmpty) { + _textSpans.add(FormattedTextSpan(text: afterSelection)); + } + + setState(() {}); + } + + void _selectAll() { + _controller.selection = TextSelection( + baseOffset: 0, + extentOffset: _controller.text.length, + ); + } + @override Widget build(BuildContext context) { return Shortcuts( @@ -91,22 +232,26 @@ class _ModernNotepadPageState extends State { const BoldIntent(), LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyI): const ItalicIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyA): + const SelectAllIntent(), }, child: Actions( actions: >{ BoldIntent: CallbackAction( onInvoke: (BoldIntent intent) { - setState(() { - _isBold = !_isBold; - }); + _applyFormatting(true, false); return null; }, ), ItalicIntent: CallbackAction( onInvoke: (ItalicIntent intent) { - setState(() { - _isItalic = !_isItalic; - }); + _applyFormatting(false, true); + return null; + }, + ), + SelectAllIntent: CallbackAction( + onInvoke: (SelectAllIntent intent) { + _selectAll(); return null; }, ), @@ -129,60 +274,73 @@ class _ModernNotepadPageState extends State { children: [ Container( margin: const EdgeInsets.symmetric( - horizontal: 8, + horizontal: 6, vertical: 4, ), padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 6, + horizontal: 8, + vertical: 4, ), decoration: BoxDecoration( - color: const Color(0xFFF0F0F0), - borderRadius: BorderRadius.circular(6), + color: Colors.pink.shade50, + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: Colors.pink.shade100, + width: 0.8, + ), ), - child: const Row( + child: Row( mainAxisSize: MainAxisSize.min, children: [ Text( 'Untitled', style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.w400, + fontSize: 10, + fontWeight: FontWeight.w500, + color: Colors.grey.shade600, ), ), - SizedBox(width: 6), - Icon(Icons.close, size: 12, color: Colors.grey), + const SizedBox(width: 4), + Icon( + Icons.close, + size: 10, + color: Colors.grey.shade400, + ), ], ), ), Container( - width: 24, - height: 24, - margin: const EdgeInsets.only(left: 4), + width: 20, + height: 20, + margin: const EdgeInsets.only(left: 3), decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(4), + border: Border.all( + color: Colors.pink.shade100, + width: 0.8, + ), + borderRadius: BorderRadius.circular(6), + color: Colors.pink.shade50, ), - child: const Icon( + child: Icon( Icons.add, - size: 14, - color: Colors.grey, + size: 12, + color: Colors.grey.shade400, ), ), const Spacer(), // Push settings icon to the right Padding( - padding: const EdgeInsets.only(right: 8), + padding: const EdgeInsets.only(right: 6), child: Material( color: Colors.transparent, child: InkWell( onTap: () {}, - borderRadius: BorderRadius.circular(4), + borderRadius: BorderRadius.circular(6), child: Padding( - padding: const EdgeInsets.all(6), + padding: const EdgeInsets.all(4), child: Icon( Icons.settings, - size: 18, - color: Colors.grey.shade600, + size: 14, + color: Colors.grey.shade400, ), ), ), @@ -213,39 +371,43 @@ class _ModernNotepadPageState extends State { _buildMenuButton('File'), _buildMenuButton('Edit'), _buildMenuButton('View'), - const SizedBox(width: 16), + const SizedBox(width: 12), _buildDropdown(_currentHeading, [ 'Normal', 'H1', 'H2', 'H3', ]), - const SizedBox(width: 8), + const SizedBox(width: 6), _buildDropdown('•', ['•', '1.', '→']), - const SizedBox(width: 16), + const SizedBox(width: 12), _buildFormatButton(Icons.format_bold, _isBold, () { - setState(() => _isBold = !_isBold); + _applyFormatting(true, false); }), _buildFormatButton(Icons.format_italic, _isItalic, () { - setState(() => _isItalic = !_isItalic); + _applyFormatting(false, true); }), _buildFormatButton(Icons.link, false, () {}), - const SizedBox(width: 8), + const SizedBox(width: 6), Container( padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, + horizontal: 6, + vertical: 3, ), decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(4), + border: Border.all( + color: Colors.grey.shade200, + width: 0.8, + ), + borderRadius: BorderRadius.circular(6), + color: Colors.grey.shade50, ), - child: const Text( + child: Text( 'Aa', style: TextStyle( - fontSize: 12, + fontSize: 10, fontWeight: FontWeight.w600, - color: Colors.black54, + color: Colors.grey.shade500, ), ), ), @@ -257,30 +419,7 @@ class _ModernNotepadPageState extends State { Expanded( child: Container( color: Colors.white, - child: TextField( - controller: _controller, - maxLines: null, - expands: true, - style: TextStyle( - fontSize: 14, - fontFamily: 'Segoe UI', - color: Colors.black, - height: 1.4, - fontWeight: _isBold ? FontWeight.w600 : FontWeight.w400, - fontStyle: _isItalic - ? FontStyle.italic - : FontStyle.normal, - ), - decoration: const InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.all(16), - hintText: '', - ), - textAlign: TextAlign.start, - textAlignVertical: TextAlignVertical.top, - cursorColor: Colors.black, - cursorWidth: 1.0, - ), + child: _buildRichTextField(), ), ), @@ -344,17 +483,17 @@ class _ModernNotepadPageState extends State { Widget _buildMenuButton(String text) { return Padding( - padding: const EdgeInsets.only(right: 16), + padding: const EdgeInsets.only(right: 12), child: InkWell( onTap: () {}, - borderRadius: BorderRadius.circular(4), + borderRadius: BorderRadius.circular(6), child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), child: Text( text, - style: const TextStyle( - fontSize: 13, - color: Colors.black87, + style: TextStyle( + fontSize: 11, + color: Colors.grey.shade600, fontWeight: FontWeight.w400, ), ), @@ -365,20 +504,21 @@ class _ModernNotepadPageState extends State { Widget _buildDropdown(String value, List items) { return Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(4), + border: Border.all(color: Colors.grey.shade200, width: 0.8), + borderRadius: BorderRadius.circular(6), + color: Colors.grey.shade50, ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Text( value, - style: const TextStyle(fontSize: 12, color: Colors.black87), + style: TextStyle(fontSize: 11, color: Colors.grey.shade600), ), - const SizedBox(width: 4), - Icon(Icons.arrow_drop_down, size: 16, color: Colors.grey.shade600), + const SizedBox(width: 3), + Icon(Icons.arrow_drop_down, size: 14, color: Colors.grey.shade400), ], ), ); @@ -386,32 +526,58 @@ class _ModernNotepadPageState extends State { Widget _buildFormatButton(IconData icon, bool isActive, VoidCallback onTap) { return Container( - width: 28, - height: 28, - margin: const EdgeInsets.only(right: 4), + width: 22, + height: 22, + margin: const EdgeInsets.only(right: 3), decoration: BoxDecoration( - color: isActive - ? Colors.blue.withValues(alpha: 0.1) - : Colors.transparent, + color: isActive ? Colors.pink.shade50 : Colors.transparent, border: Border.all( - color: isActive - ? Colors.blue.withValues(alpha: 0.3) - : Colors.grey.shade300, + color: isActive ? Colors.pink.shade200 : Colors.grey.shade200, + width: 0.8, ), - borderRadius: BorderRadius.circular(4), + borderRadius: BorderRadius.circular(6), ), child: Material( color: Colors.transparent, child: InkWell( onTap: onTap, - borderRadius: BorderRadius.circular(4), + borderRadius: BorderRadius.circular(6), child: Icon( icon, - size: 16, - color: isActive ? Colors.blue : Colors.black54, + size: 12, + color: isActive ? Colors.pink.shade400 : Colors.grey.shade500, ), ), ), ); } + + Widget _buildRichTextField() { + // For now, let's use a simpler approach that avoids cursor offset issues + // We'll use a regular TextField but update the text spans properly + return TextField( + controller: _controller, + focusNode: _focusNode, + maxLines: null, + expands: true, + style: const TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black, + height: 1.4, + // Base style - formatting is handled through text spans + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + decoration: const InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(16), + hintText: '', + ), + textAlign: TextAlign.start, + textAlignVertical: TextAlignVertical.top, + cursorColor: Colors.black, + cursorWidth: 1.0, + ); + } } From 1f8a2b58542c17d029432ff1ea957a27feb3cb6e Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 20:02:45 +0530 Subject: [PATCH 07/27] more of rich text formatting --- lib/main.dart | 317 ++++++++++++++++++++++++++++++++------------------ pubspec.yaml | 8 +- 2 files changed, 210 insertions(+), 115 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index cbcfa62ad..8ab995b04 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,17 +14,34 @@ class SelectAllIntent extends Intent { const SelectAllIntent(); } -// Text span with formatting info -class FormattedTextSpan { - final String text; - final bool isBold; - final bool isItalic; - - FormattedTextSpan({ - required this.text, +// Rich text formatting system - replica of Windows Notepad +class TextSegment { + String content; + bool isBold; + bool isItalic; + bool isUnderline; + + TextSegment({ + required this.content, this.isBold = false, this.isItalic = false, + this.isUnderline = false, }); + + TextSegment copy() { + return TextSegment( + content: content, + isBold: isBold, + isItalic: isItalic, + isUnderline: isUnderline, + ); + } + + bool hasSameFormatting(TextSegment other) { + return isBold == other.isBold && + isItalic == other.isItalic && + isUnderline == other.isUnderline; + } } void main() { @@ -68,11 +85,10 @@ class _ModernNotepadPageState extends State { final TextEditingController _controller = TextEditingController(); final FocusNode _focusNode = FocusNode(); - // Rich text formatting - final List _textSpans = []; - bool _isBold = false; - bool _isItalic = false; - String _lastText = ''; + // Rich text formatting system + List _segments = []; + bool _currentBold = false; + bool _currentItalic = false; final String _currentHeading = 'Normal'; int _characterCount = 0; @@ -83,15 +99,13 @@ class _ModernNotepadPageState extends State { void initState() { super.initState(); _controller.addListener(_updateStats); - _controller.addListener(_handleTextChange); - // Initialize with one empty span - _textSpans.add(FormattedTextSpan(text: '', isBold: false, isItalic: false)); + // Initialize with empty document + _segments = [TextSegment(content: '')]; } @override void dispose() { _controller.removeListener(_updateStats); - _controller.removeListener(_handleTextChange); _controller.dispose(); _focusNode.dispose(); super.dispose(); @@ -111,109 +125,163 @@ class _ModernNotepadPageState extends State { }); } - void _handleTextChange() { - final text = _controller.text; + // Core rich text formatting methods - Exact Notepad behavior + void _applyBoldFormatting() { final selection = _controller.selection; - - // Only handle new text additions - if (text.length > _lastText.length) { - final newText = text.substring(_lastText.length); - _addFormattedText(newText, _isBold, _isItalic); - } else if (text.length < _lastText.length) { - // Handle deletions by rebuilding spans - _rebuildTextSpans(text, selection); - } - - _lastText = text; - } - - void _addFormattedText(String newText, bool isBold, bool isItalic) { - // Add new text with current formatting - if (_textSpans.isNotEmpty && - _textSpans.last.isBold == isBold && - _textSpans.last.isItalic == isItalic) { - // Same formatting as last span, append to it - final lastSpan = _textSpans.last; - _textSpans[_textSpans.length - 1] = FormattedTextSpan( - text: lastSpan.text + newText, - isBold: lastSpan.isBold, - isItalic: lastSpan.isItalic, - ); + if (selection.isValid && !selection.isCollapsed) { + // Apply bold to selected text (uniform override) + _applyFormattingToSelection(isBold: true); } else { - // Different formatting, create new span - _textSpans.add( - FormattedTextSpan(text: newText, isBold: isBold, isItalic: isItalic), - ); - } - } - - void _rebuildTextSpans(String text, TextSelection selection) { - // For deletions, we'll keep it simple and just track the current text - // In a full implementation, you'd want more sophisticated span management - if (text.isEmpty) { - _textSpans.clear(); - _textSpans.add( - FormattedTextSpan(text: '', isBold: false, isItalic: false), - ); + // Toggle bold mode for new text only + setState(() { + _currentBold = !_currentBold; + }); } } - void _applyFormatting(bool isBold, bool isItalic) { + void _applyItalicFormatting() { final selection = _controller.selection; - if (selection.isValid && !selection.isCollapsed) { - // Apply formatting to selected text - final selectedText = _controller.text.substring( - selection.start, - selection.end, - ); - - // For simplicity, replace all text with formatted version - // In a full implementation, you'd modify only the selected spans - _applyFormattingToSelection(selectedText, isBold, isItalic, selection); + // Apply italic to selected text (uniform override) + _applyFormattingToSelection(isItalic: true); } else { - // No selection, just toggle formatting for new text + // Toggle italic mode for new text only setState(() { - if (isBold) _isBold = !_isBold; - if (isItalic) _isItalic = !_isItalic; + _currentItalic = !_currentItalic; }); } } - void _applyFormattingToSelection( - String selectedText, - bool makeBold, - bool makeItalic, - TextSelection selection, - ) { + void _applyFormattingToSelection({ + bool? isBold, + bool? isItalic, + bool? isUnderline, + }) { + final selection = _controller.selection; + if (!selection.isValid || selection.isCollapsed) return; + final text = _controller.text; - final beforeSelection = text.substring(0, selection.start); - final afterSelection = text.substring(selection.end); + final selectedText = text.substring(selection.start, selection.end); - // Rebuild text spans with formatted selection - _textSpans.clear(); + // Rebuild segments with the selection having uniform formatting + List newSegments = []; - // Add text before selection (keep original formatting) - if (beforeSelection.isNotEmpty) { - _textSpans.add(FormattedTextSpan(text: beforeSelection)); + // Add text before selection (preserve existing formatting) + if (selection.start > 0) { + _addTextAsSegments(text.substring(0, selection.start), newSegments); } - // Add selected text with new formatting - if (selectedText.isNotEmpty) { - _textSpans.add( - FormattedTextSpan( - text: selectedText, - isBold: makeBold, - isItalic: makeItalic, - ), + // Add formatted selection as a single segment with uniform formatting + newSegments.add( + TextSegment( + content: selectedText, + isBold: isBold ?? false, + isItalic: isItalic ?? false, + isUnderline: isUnderline ?? false, + ), + ); + + // Add text after selection (preserve existing formatting) + if (selection.end < text.length) { + _addTextAsSegments(text.substring(selection.end), newSegments); + } + + _segments = newSegments; + setState(() {}); + } + + void _addTextAsSegments(String text, List segments) { + if (text.isNotEmpty) { + // For now, add as plain text segments + // This will be enhanced to preserve existing formatting + segments.add(TextSegment(content: text)); + } + } + + void _handleTextChanged(String newText) { + final selection = _controller.selection; + final oldText = _segments.map((s) => s.content).join(); + + if (newText.length > oldText.length) { + // Text was added - apply current formatting to new text + final insertPosition = + selection.baseOffset - (newText.length - oldText.length); + final insertedText = newText.substring( + insertPosition, + selection.baseOffset, ); + + if (insertedText.isNotEmpty) { + _insertFormattedText(insertedText, insertPosition); + } } - // Add text after selection (keep original formatting) - if (afterSelection.isNotEmpty) { - _textSpans.add(FormattedTextSpan(text: afterSelection)); + _updateStats(); + } + + void _insertFormattedText(String text, int position) { + // Create a new segment for the inserted text with current formatting + final newSegment = TextSegment( + content: text, + isBold: _currentBold, + isItalic: _currentItalic, + isUnderline: false, // Add underline support later if needed + ); + + // Rebuild segments with the new formatted text + List newSegments = []; + int currentPosition = 0; + + for (var segment in _segments) { + if (currentPosition + segment.content.length <= position) { + // Segment is completely before insertion point + newSegments.add(segment); + currentPosition += segment.content.length; + } else if (currentPosition >= position) { + // Segment is completely after insertion point + if (newSegments.isEmpty || newSegments.last != newSegment) { + newSegments.add(newSegment); + } + newSegments.add(segment); + currentPosition += segment.content.length; + } else { + // Insertion point is within this segment - split it + final beforeText = segment.content.substring( + 0, + position - currentPosition, + ); + final afterText = segment.content.substring(position - currentPosition); + + if (beforeText.isNotEmpty) { + newSegments.add( + TextSegment( + content: beforeText, + isBold: segment.isBold, + isItalic: segment.isItalic, + isUnderline: segment.isUnderline, + ), + ); + } + + newSegments.add(newSegment); + + if (afterText.isNotEmpty) { + newSegments.add( + TextSegment( + content: afterText, + isBold: segment.isBold, + isItalic: segment.isItalic, + isUnderline: segment.isUnderline, + ), + ); + } + + currentPosition += segment.content.length; + break; + } } + _segments = newSegments; setState(() {}); } @@ -239,13 +307,13 @@ class _ModernNotepadPageState extends State { actions: >{ BoldIntent: CallbackAction( onInvoke: (BoldIntent intent) { - _applyFormatting(true, false); + _applyBoldFormatting(); return null; }, ), ItalicIntent: CallbackAction( onInvoke: (ItalicIntent intent) { - _applyFormatting(false, true); + _applyItalicFormatting(); return null; }, ), @@ -381,12 +449,16 @@ class _ModernNotepadPageState extends State { const SizedBox(width: 6), _buildDropdown('•', ['•', '1.', '→']), const SizedBox(width: 12), - _buildFormatButton(Icons.format_bold, _isBold, () { - _applyFormatting(true, false); - }), - _buildFormatButton(Icons.format_italic, _isItalic, () { - _applyFormatting(false, true); + _buildFormatButton(Icons.format_bold, _currentBold, () { + _applyBoldFormatting(); }), + _buildFormatButton( + Icons.format_italic, + _currentItalic, + () { + _applyItalicFormatting(); + }, + ), _buildFormatButton(Icons.link, false, () {}), const SizedBox(width: 6), Container( @@ -553,21 +625,46 @@ class _ModernNotepadPageState extends State { } Widget _buildRichTextField() { - // For now, let's use a simpler approach that avoids cursor offset issues - // We'll use a regular TextField but update the text spans properly + // Build TextSpans from segments for rich text display + List textSpans = []; + + for (var segment in _segments) { + if (segment.content.isNotEmpty) { + textSpans.add( + TextSpan( + text: segment.content, + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black, + height: 1.4, + fontWeight: segment.isBold ? FontWeight.w600 : FontWeight.w400, + fontStyle: segment.isItalic ? FontStyle.italic : FontStyle.normal, + decoration: segment.isUnderline + ? TextDecoration.underline + : TextDecoration.none, + ), + ), + ); + } + } + + // For now, use simple TextField approach that shows current formatting + // This avoids cursor alignment issues while we build the core functionality return TextField( controller: _controller, focusNode: _focusNode, maxLines: null, expands: true, - style: const TextStyle( + onChanged: _handleTextChanged, + style: TextStyle( fontSize: 14, fontFamily: 'Segoe UI', color: Colors.black, height: 1.4, - // Base style - formatting is handled through text spans - fontWeight: FontWeight.w400, - fontStyle: FontStyle.normal, + // New text will use current formatting mode + fontWeight: _currentBold ? FontWeight.w600 : FontWeight.w400, + fontStyle: _currentItalic ? FontStyle.italic : FontStyle.normal, ), decoration: const InputDecoration( border: InputBorder.none, diff --git a/pubspec.yaml b/pubspec.yaml index c543aa518..feb3da419 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,13 +26,11 @@ dev_dependencies: # The following section is specific to Flutter packages. flutter: - uses-material-design: true - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + # App icons and assets + assets: + - assets/icons/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images From a10421efd09a61156fac02b04abade56cb69d593 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 21:14:58 +0530 Subject: [PATCH 08/27] Added chaos to the notepad --- android/.gitignore | 14 + android/app/build.gradle.kts | 44 +++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 45 +++ .../com/example/scrampad/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle.kts | 21 ++ android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle.kts | 25 ++ lib/chaos/chaos_controller.dart | 320 ++++++++++++++++++ lib/main.dart | 130 ++++++- lib/screens/chaos_settings_screen.dart | 283 ++++++++++++++++ web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 15142 bytes web/icons/Icon-512.png | Bin 0 -> 81402 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 11719 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 73852 bytes web/icons/apple-touch-icon.png | Bin 0 -> 10079 bytes web/icons/favicon.ico | Bin 0 -> 5238 bytes web/index.html | 38 +++ web/manifest.json | 35 ++ windows/runner/resources/app_icon.ico | Bin 33772 -> 12008 bytes 32 files changed, 1040 insertions(+), 2 deletions(-) create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle.kts create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle.kts create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle.kts create mode 100644 lib/chaos/chaos_controller.dart create mode 100644 lib/screens/chaos_settings_screen.dart create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/icons/apple-touch-icon.png create mode 100644 web/icons/favicon.ico create mode 100644 web/index.html create mode 100644 web/manifest.json diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 000000000..be3943c96 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 000000000..086b15767 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.example.scrampad" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.scrampad" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..4451df5fd --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt b/android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt new file mode 100644 index 000000000..12d9c3ca8 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.scrampad + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 000000000..89176ef44 --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,21 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 000000000..f018a6181 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..ac3b47926 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 000000000..ab39a10a2 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,25 @@ +pluginManagement { + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.7.3" apply false + id("org.jetbrains.kotlin.android") version "2.1.0" apply false +} + +include(":app") diff --git a/lib/chaos/chaos_controller.dart b/lib/chaos/chaos_controller.dart new file mode 100644 index 000000000..3ad44e177 --- /dev/null +++ b/lib/chaos/chaos_controller.dart @@ -0,0 +1,320 @@ +import 'dart:async'; +import 'dart:math'; +import 'package:flutter/material.dart'; + +/// The chaotic text editor system that randomly interferes with user input +class ChaosController { + final TextEditingController textController; + final Function(String) onTextChanged; + final Function(TextSelection) onSelectionChanged; + final Function() onSave; + + Timer? _chaosTimer; + final Random _random = Random(); + bool _isActive = true; + + // Chaos behaviors weighted by frequency + final List _chaosActions; + + ChaosController({ + required this.textController, + required this.onTextChanged, + required this.onSelectionChanged, + required this.onSave, + }) : _chaosActions = [ + ChaosAction(ChaosType.cursorDisplacement, weight: 25), + ChaosAction(ChaosType.randomDeletion, weight: 20), + ChaosAction(ChaosType.letterSwapping, weight: 15), + ChaosAction(ChaosType.wordSwapping, weight: 10), + ChaosAction(ChaosType.punctuationInsert, weight: 20), + ChaosAction(ChaosType.punctuationDuplicate, weight: 10), + ]; + + /// Start the chaos cycle + void startChaos() { + _isActive = true; + _scheduleNextChaos(); + } + + /// Stop the chaos cycle + void stopChaos() { + _isActive = false; + _chaosTimer?.cancel(); + } + + /// Schedule the next chaotic event + void _scheduleNextChaos() { + if (!_isActive) return; + + // Random delay between 8-15 seconds + final delaySeconds = 8 + _random.nextInt(8); + + _chaosTimer = Timer(Duration(seconds: delaySeconds), () { + _executeChaos(); + _scheduleNextChaos(); + }); + } + + /// Execute a random chaotic behavior + void _executeChaos() { + if (!_isActive || textController.text.isEmpty) return; + + final action = _selectRandomAction(); + _performChaosAction(action.type); + } + + /// Select a random chaos action based on weights + ChaosAction _selectRandomAction() { + final totalWeight = _chaosActions.fold( + 0, + (sum, action) => sum + action.weight, + ); + final randomValue = _random.nextInt(totalWeight); + + int currentWeight = 0; + for (final action in _chaosActions) { + currentWeight += action.weight; + if (randomValue < currentWeight) { + return action; + } + } + + return _chaosActions.first; // fallback + } + + /// Perform the specified chaos action + void _performChaosAction(ChaosType type) { + final text = textController.text; + if (text.isEmpty) return; + + switch (type) { + case ChaosType.cursorDisplacement: + _displaceCursor(); + break; + case ChaosType.randomDeletion: + _performRandomDeletion(); + break; + case ChaosType.letterSwapping: + _swapLetters(); + break; + case ChaosType.wordSwapping: + _swapWords(); + break; + case ChaosType.punctuationInsert: + _insertRandomPunctuation(); + break; + case ChaosType.punctuationDuplicate: + _duplicatePunctuation(); + break; + case ChaosType.randomIndentation: + _addRandomIndentation(); + break; + } + } + + /// Move cursor to random position + void _displaceCursor() { + final text = textController.text; + if (text.isEmpty) return; + + final newPosition = _random.nextInt(text.length + 1); + final newSelection = TextSelection.collapsed(offset: newPosition); + + textController.selection = newSelection; + onSelectionChanged(newSelection); + } + + /// Delete random character or word + void _performRandomDeletion() { + final text = textController.text; + if (text.isEmpty) return; + + final shouldDeleteWord = _random.nextBool() && text.contains(' '); + + if (shouldDeleteWord) { + _deleteRandomWord(); + } else { + _deleteRandomCharacter(); + } + } + + /// Delete a random character + void _deleteRandomCharacter() { + final text = textController.text; + if (text.isEmpty) return; + + final deleteIndex = _random.nextInt(text.length); + final newText = + text.substring(0, deleteIndex) + text.substring(deleteIndex + 1); + + textController.text = newText; + textController.selection = TextSelection.collapsed( + offset: deleteIndex.clamp(0, newText.length), + ); + onTextChanged(newText); + } + + /// Delete a random word + void _deleteRandomWord() { + final text = textController.text; + final words = text.split(RegExp(r'\s+')); + if (words.length <= 1) return; + + final wordIndex = _random.nextInt(words.length); + words.removeAt(wordIndex); + + final newText = words.join(' '); + textController.text = newText; + textController.selection = TextSelection.collapsed(offset: newText.length); + onTextChanged(newText); + } + + /// Swap two random letters within a word + void _swapLetters() { + final text = textController.text; + final words = text.split(' '); + + // Find a word with at least 2 characters + final validWords = words.where((word) => word.length >= 2).toList(); + if (validWords.isEmpty) return; + + final word = validWords[_random.nextInt(validWords.length)]; + final wordIndex = words.indexOf(word); + + // Swap two random letters + final letterIndices = List.generate(word.length, (i) => i); + letterIndices.shuffle(_random); + final index1 = letterIndices[0]; + final index2 = letterIndices[1]; + + final chars = word.split(''); + final temp = chars[index1]; + chars[index1] = chars[index2]; + chars[index2] = temp; + + words[wordIndex] = chars.join(''); + final newText = words.join(' '); + + textController.text = newText; + onTextChanged(newText); + } + + /// Swap two random words + void _swapWords() { + final text = textController.text; + final words = text.split(' '); + if (words.length < 2) return; + + final indices = List.generate(words.length, (i) => i); + indices.shuffle(_random); + final index1 = indices[0]; + final index2 = indices[1]; + + final temp = words[index1]; + words[index1] = words[index2]; + words[index2] = temp; + + final newText = words.join(' '); + textController.text = newText; + onTextChanged(newText); + } + + /// Insert random punctuation at random position + void _insertRandomPunctuation() { + final text = textController.text; + if (text.isEmpty) return; + + final punctuation = ['.', ',', '!', '?', ';', ':', '-']; + final randomPunct = punctuation[_random.nextInt(punctuation.length)]; + final insertIndex = _random.nextInt(text.length + 1); + + final newText = + text.substring(0, insertIndex) + + randomPunct + + text.substring(insertIndex); + + textController.text = newText; + textController.selection = TextSelection.collapsed(offset: insertIndex + 1); + onTextChanged(newText); + } + + /// Duplicate existing punctuation + void _duplicatePunctuation() { + final text = textController.text; + final punctuationRegex = RegExp(r'[.!?,;:]'); + final matches = punctuationRegex.allMatches(text).toList(); + + if (matches.isEmpty) return; + + final match = matches[_random.nextInt(matches.length)]; + final punctuation = match.group(0)!; + final position = match.start; + + final newText = + text.substring(0, position + 1) + + punctuation + + text.substring(position + 1); + + textController.text = newText; + onTextChanged(newText); + } + + /// Add random indentation to lines (triggered on save) + void _addRandomIndentation() { + final text = textController.text; + final lines = text.split('\n'); + + // Randomly indent 1-3 lines + final linesToIndent = _random.nextInt(3) + 1; + final selectedLines = {}; + + while (selectedLines.length < linesToIndent && + selectedLines.length < lines.length) { + selectedLines.add(_random.nextInt(lines.length)); + } + + for (final lineIndex in selectedLines) { + final isTab = _random.nextBool(); + final indentCount = _random.nextInt(4) + 1; + final indent = isTab ? '\t' * indentCount : ' ' * indentCount; + lines[lineIndex] = indent + lines[lineIndex]; + } + + final newText = lines.join('\n'); + textController.text = newText; + onTextChanged(newText); + } + + /// Handle save action with random indentation + void handleSave() { + // 70% chance to add random indentation on save + if (_random.nextInt(10) < 7) { + _addRandomIndentation(); + } + onSave(); + } + + /// Dispose resources + void dispose() { + stopChaos(); + } +} + +/// Types of chaotic behaviors +enum ChaosType { + cursorDisplacement, + randomDeletion, + letterSwapping, + wordSwapping, + punctuationInsert, + punctuationDuplicate, + randomIndentation, +} + +/// Chaos action with weight for random selection +class ChaosAction { + final ChaosType type; + final int weight; + + ChaosAction(this.type, {required this.weight}); +} diff --git a/lib/main.dart b/lib/main.dart index 8ab995b04..f1df02cfa 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'chaos/chaos_controller.dart'; +import 'screens/chaos_settings_screen.dart'; // Intent classes for keyboard shortcuts class BoldIntent extends Intent { @@ -14,6 +16,14 @@ class SelectAllIntent extends Intent { const SelectAllIntent(); } +class ChaosToggleIntent extends Intent { + const ChaosToggleIntent(); +} + +class SaveIntent extends Intent { + const SaveIntent(); +} + // Rich text formatting system - replica of Windows Notepad class TextSegment { String content; @@ -90,6 +100,10 @@ class _ModernNotepadPageState extends State { bool _currentBold = false; bool _currentItalic = false; + // Chaos system - permanently active + ChaosController? _chaosController; + bool _isChaosEnabled = true; // Always enabled + final String _currentHeading = 'Normal'; int _characterCount = 0; int _lineNumber = 1; @@ -101,10 +115,69 @@ class _ModernNotepadPageState extends State { _controller.addListener(_updateStats); // Initialize with empty document _segments = [TextSegment(content: '')]; + + // Initialize chaos controller + _initializeChaosController(); + } + + void _initializeChaosController() { + _chaosController = ChaosController( + textController: _controller, + onTextChanged: _handleChaosTextChange, + onSelectionChanged: _handleChaosSelectionChange, + onSave: _handleChaosSave, + ); + // Start chaos immediately - it's permanently active + _chaosController?.startChaos(); + } + + void _handleChaosTextChange(String newText) { + // Update segments when chaos modifies text + _segments = [TextSegment(content: newText)]; + _updateStats(); + } + + void _handleChaosSelectionChange(TextSelection selection) { + // Handle selection changes from chaos + setState(() {}); + } + + void _handleChaosSave() { + // Handle save action (could trigger file save dialog) + // For now, just update stats + _updateStats(); + } + + void _toggleChaos(bool enabled) { + // Chaos mode is permanently active - this function does nothing + // but we keep it for settings screen compatibility + // setState(() { + // _isChaosEnabled = enabled; + // }); + + // Chaos always remains active + // if (enabled) { + // _chaosController?.startChaos(); + // } else { + // _chaosController?.stopChaos(); + // } + } + + void _openSettings() { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChaosSettingsScreen( + isChaosEnabled: _isChaosEnabled, + onChaosToggle: _toggleChaos, + ), + ), + ); } @override void dispose() { + _chaosController?.dispose(); _controller.removeListener(_updateStats); _controller.dispose(); _focusNode.dispose(); @@ -292,6 +365,16 @@ class _ModernNotepadPageState extends State { ); } + void _handleSave() { + // Use chaos controller's save handler if chaos is enabled + if (_isChaosEnabled && _chaosController != null) { + _chaosController!.handleSave(); + } else { + // Normal save logic would go here + _handleChaosSave(); + } + } + @override Widget build(BuildContext context) { return Shortcuts( @@ -302,6 +385,8 @@ class _ModernNotepadPageState extends State { const ItalicIntent(), LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyA): const SelectAllIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyS): + const SaveIntent(), }, child: Actions( actions: >{ @@ -323,6 +408,12 @@ class _ModernNotepadPageState extends State { return null; }, ), + SaveIntent: CallbackAction( + onInvoke: (SaveIntent intent) { + _handleSave(); + return null; + }, + ), }, child: Focus( autofocus: true, @@ -401,14 +492,16 @@ class _ModernNotepadPageState extends State { child: Material( color: Colors.transparent, child: InkWell( - onTap: () {}, + onTap: _openSettings, borderRadius: BorderRadius.circular(6), child: Padding( padding: const EdgeInsets.all(4), child: Icon( Icons.settings, size: 14, - color: Colors.grey.shade400, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade400, ), ), ), @@ -523,6 +616,39 @@ class _ModernNotepadPageState extends State { ), ), const Spacer(), + // Chaos Mode Indicator + if (_isChaosEnabled) ...[ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 4, + vertical: 1, + ), + decoration: BoxDecoration( + color: Colors.red.shade100, + borderRadius: BorderRadius.circular(3), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.warning_amber_rounded, + size: 10, + color: Colors.red.shade600, + ), + const SizedBox(width: 2), + Text( + 'CHAOS', + style: TextStyle( + fontSize: 9, + fontWeight: FontWeight.w600, + color: Colors.red.shade700, + ), + ), + ], + ), + ), + const SizedBox(width: 16), + ], const Text( 'Plain text', style: TextStyle(fontSize: 11, color: Colors.black54), diff --git a/lib/screens/chaos_settings_screen.dart b/lib/screens/chaos_settings_screen.dart new file mode 100644 index 000000000..39bc48625 --- /dev/null +++ b/lib/screens/chaos_settings_screen.dart @@ -0,0 +1,283 @@ +import 'package:flutter/material.dart'; + +class ChaosSettingsScreen extends StatefulWidget { + final bool isChaosEnabled; + final Function(bool) onChaosToggle; + + const ChaosSettingsScreen({ + super.key, + required this.isChaosEnabled, + required this.onChaosToggle, + }); + + @override + State createState() => _ChaosSettingsScreenState(); +} + +class _ChaosSettingsScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + appBar: AppBar( + backgroundColor: Colors.white, + elevation: 0, + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.black54), + onPressed: () => Navigator.pop(context), + ), + title: const Text( + 'Settings', + style: TextStyle( + color: Colors.black, + fontSize: 16, + fontWeight: FontWeight.w500, + ), + ), + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Chaos Mode Section + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.red.shade50, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.red.shade100), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon( + Icons.warning_amber_rounded, + color: Colors.red.shade600, + size: 20, + ), + const SizedBox(width: 8), + Text( + 'Chaos Mode', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Colors.red.shade700, + ), + ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: Colors.red.shade200, + borderRadius: BorderRadius.circular(12), + ), + child: Text( + 'ALWAYS ON', + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.w700, + color: Colors.red.shade800, + ), + ), + ), + ], + ), + const SizedBox(height: 12), + Text( + 'Chaotic text editor behaviors are permanently active and will randomly interfere with your typing experience.', + style: TextStyle( + fontSize: 12, + color: Colors.red.shade600, + height: 1.4, + ), + ), + // Always show chaos descriptions since it's permanently active + const SizedBox(height: 16), + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.red.shade100, + borderRadius: BorderRadius.circular(8), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Active Chaos Behaviors:', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w600, + color: Colors.red.shade800, + ), + ), + const SizedBox(height: 6), + ..._buildChaosDescriptions(), + ], + ), + ), + ], + ), + ), + + const SizedBox(height: 24), + + // General Settings Section + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.grey.shade50, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.grey.shade200), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon( + Icons.settings_outlined, + color: Colors.grey.shade600, + size: 20, + ), + const SizedBox(width: 8), + Text( + 'Editor Settings', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Colors.grey.shade700, + ), + ), + ], + ), + const SizedBox(height: 16), + _buildSettingTile( + 'Font Size', + '14px', + Icons.text_fields, + onTap: () {}, + ), + _buildSettingTile( + 'Theme', + 'Light', + Icons.palette_outlined, + onTap: () {}, + ), + _buildSettingTile( + 'Auto Save', + 'Every 30 seconds', + Icons.save_outlined, + onTap: () {}, + ), + _buildSettingTile( + 'Chaos Interval', + '8-15 seconds', + Icons.timer_outlined, + onTap: () {}, + ), + ], + ), + ), + + const Spacer(), + + // Warning Footer - Always show since chaos is permanent + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.orange.shade50, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.orange.shade200), + ), + child: Row( + children: [ + Icon( + Icons.info_outline, + color: Colors.orange.shade600, + size: 16, + ), + const SizedBox(width: 8), + Expanded( + child: Text( + 'Chaos mode is permanently active. Your text will be randomly modified while typing every 8-15 seconds.', + style: TextStyle( + fontSize: 10, + color: Colors.orange.shade700, + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } + + List _buildChaosDescriptions() { + final descriptions = [ + '• Random cursor displacement while typing', + '• Spontaneous deletion of characters or words', + '• Letter and word position swapping', + '• Unexpected punctuation insertion', + '• Random line indentation on save', + '• Chaos interval: 8-15 seconds (increased)', + ]; + + return descriptions + .map( + (desc) => Padding( + padding: const EdgeInsets.only(bottom: 2), + child: Text( + desc, + style: TextStyle(fontSize: 10, color: Colors.red.shade700), + ), + ), + ) + .toList(); + } + + Widget _buildSettingTile( + String title, + String value, + IconData icon, { + VoidCallback? onTap, + }) { + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(6), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Row( + children: [ + Icon(icon, size: 16, color: Colors.grey.shade500), + const SizedBox(width: 12), + Expanded( + child: Text( + title, + style: TextStyle(fontSize: 13, color: Colors.grey.shade700), + ), + ), + Text( + value, + style: TextStyle(fontSize: 12, color: Colors.grey.shade500), + ), + const SizedBox(width: 8), + Icon( + Icons.arrow_forward_ios, + size: 12, + color: Colors.grey.shade400, + ), + ], + ), + ), + ); + } +} diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..bf18ab4fb123004eb5f4877c10a3096d7207111d GIT binary patch literal 15142 zcmX9_RX|%^vke4ycZVVciWc|cZY@xXdyBgh++B(Whf*kBDDH()+&#E^u+RWE-+v#H z^OCbO=giESHG9^M)z(zP#iGIj006iu%JRC1Ywv#_3^c^I?wTVy;)3L%t0V`gouD}a z02lx&^0NBAre{GufuH8v&Q=5(S*nE%+P0E#Ti)Tn!mJpqK-E*{L6eKc)ZFYwZ@Yim zf^=}80b7)Rp&*A6tn3keM5X`=Q8@PEQm@%y3p=nRvKS8?d)x&C6!KS|&e|$AIu^nr zmFdRwMLi}A7FzEfyEO?uerKv94QS%+*%9vvzyj+YN$yF&V%7oE{y)pp3TM^*^2IdkNk zD*HzcS9W;^Y=v);x+};`ZzC~s379oV>`}_m9Sj!xDg-7SF`R$iVx?GJmuTl^85@b_ zYKwhjvL-3^Bw=yj0u^VZ=*l^82pGavw4bH-UI3#neJ?69FzFrX0@J!~p66g_!}54h zMi_+T%wz0A@7YPT?!oRPxs(=P5G_s>>!S+jwcL>=phG3${2VKqGuPOd)AhVe z>r(LbKni{6O!@=vB92n`)^TD>Vm%#m_nt^D>ax7!+xWxASlcN{;wvZqukX-iL@9cl ze)-|WRe^y%7%G}`{JL7t)!IXK!bH~u?9 zO6sWogUmJ9)`SY5_Mib0K>OHt=#y#VfD$V)QC4NP&}Kzsm;~35)R!0`u7T6#0;OC% z8a})f17mR^Ru%GS_5#^ZY+ob}|8IEaVK`$_{w%;HTO4Y1%LCb*yawo1ER0+6wRk7) zzLo^=aN=(ZYlD~)4g*)Fr`9o5Ii@RFO9|I6_NqLrr>aOl|Uda zcu79cIGk@yUr&}ZrrsZ;lqzoC{6<9jeKv$+cBm-~14@nUKkMTeYRO-gL2DSWL~@cb zGas?3fw}G?2=c*OA_kN293U?C~}Al92JH{1Mx>^YF~}Zln4!0k~^mkbGWo zqlvtRS2PHHrA!8`ZZ0j4@tOqK`p*&0{Gv=h51@$m$t1gVlQK1=$Ifr$+|a1WFvGC( z91{acu|<~IQBC%g^+P4k`^f3M(aleB`?vg1e!VTeaQGtPKX#FVDbXm!54k|+$6%^8 z8*?!XiJ|9tpKa!4eo(TGbnZI>_@FEMM0bPA5z!b_QIzcQI3vF*uJS3XzloTm7}}|$UAc2cN`Yj3+0@z;#kc&($*Wi zjfdSDnklWe+XA#wbTB*hHF>i+@w`DlbVDDh{oWo+aLoc* zE9+M8g$BeubPYj=k92q}W%InSmF#0|k;Ph{8;wG=MxF60fxG(exzQM*y4R@4VCkz& z6WQHXRYiHl&pc#;_2MnoVbHJwsOqmYQH;@Jo`T!zjHQ%K2FWxe_v-Je?2J4}4-PYI zbeHhaSAr+Ox(P51q~A^Y1H}6VHan~syZJ~rx;OY8{YSz=X8sN)Gk4ZvGNZJh={$fb zImMd8c4C(q%Khyo))L-HvMCJzi3vdZ;{^&+?8ii(;dC@J>0~)fn&-C zGA8CLLxbQ=xB~!r#{#9SX!_w+&xrBKBKn2NZf`~Y6mbr84BudMAd$#5VfDd1(G_Yg ztCmDhSYVBwu;ZX#ZnjP^GwSGZUAxehS6BqCjM0`xcOT;>3zUpR&bR;37vf3U_jL(K1JrO85fFhn<8WRWE*IC;OBB1bo9-K+cO zJ4{g-O|M&H73@`HFeJT2$tEC)5DWpoB3g)wDh9YLngtAS_1uD7(6w2{Cm){}{+CrKnv3hen)n;w6jgn`)|Oe~}CY)B=2b{E8096PTxGTORv0 zBf0i7zZm3R#>_!0;|}gcAb;HHKToaj)t=w2N(#?ExP#V|cN_FQ-8tSkQ`|0E(VEoG z5~*jDKq_3~1$*NX^){xx)Gy)R^#^v?M|@d*JI^2U=q}^5CB#8Y?rNW6NDg6=7SE;1 zlXX?1#QQJ>p&bi?Y?eq?;WgjV%J-I&cq!DeaPBQMZ`7WnyqbBgB2phAVAg5guOW?v zjlAxi)Q=sqm>N#Jv`RU2Zt~-2M*|W)sZZC9=luf1@zW12e|1&<(Bf`06*;mhxfHV!-gqI!gVE4(2#%x&Kx2FP0? zE1i3B90ncSNBrk*wRJaU;pzNZmN2CLA)qchOJY^mme4S!XDwa|Z7i2Lux3qyV-uzU zy)jv4lQd?5G)qagvU&MGNB9NvWhB|zF6-cM4&p1hjF&cW!N92xx%fr|+R zZN-Y>osA&HE1jE#)i=%9+bwv#LX|NpY4;{lVQrE@YOAHuX-f2yE-M9kGU>+*M8#VT zKU+6mv$#9bG6)k{r00?U>MxX;tou}AF~yF-9Lr zlJE9j&l<^yOTd=z3k(K+u^|K`W4}>o@Z6kza?jK86fkyg+LMgGuI$H{KqAe=!#tO%_Qh zj|Gd|RE)Qn;^Qd{{j4oF8y=h;NRvFSX!KOPgnxJZF3Aq-N<7ZF1Xi1;kldM5@!1*9 zTeQfah!-QA%ex5+O2Oja_bE>OD(}+srJ@7qxRL?Z`?N-NI#9jP5@btn>V*1!JU?os zkLP4(C8gAP!tU%VuWsAI5pERp!~zWQKr0d?8|NP5ciDIP16Y3lUI2rU-f&Y3Q5yQ; zNRyBbi5{cOlg5VoF~l=8iGEmlw+jeih%me*Mw+}}esv$#GVC%at&Z^R9Q5BdEb(WV z5j6=tGEG=>(f(aP@XjGXbbj6pG}F{f{wf|89^~6)@hpS5v)9l!xJ`PXs#vAs)Ic#L zcyf6H5!s#qWpYs&L^&kiXntl?V%X7`mL|W1Oa6tf+5iTi{8dv%|DXZ6Y-~_hEi43Z;7X(ICYtg_9oX)evNWd;26{vTgmd&~NP&K{o$`HS#$wb5~IQ@v%Y* zi{I2Y`~{_5-UW-w3T&?9t@l!kvxzeUczM*XN-*Eo*oShJK>7NpcKlF10@lvtd8Jj% zh_S@mYOqrq8``hoqkq?Sw+(5!PRM)6#AR3-@iM^HFc~iam%P|d+t?OP_Jp-J?LtC^ ze)jv*?uwSdpZBYs_+whq91}BYxqal&JtmZc{OLECl_xL44;E>9(~uJGU4qU`JhTwY zz0Y(!7Ss3{^Skja#Q=JnQlJYi!^dwvHhPW-HvA8xjH(v<9jjZR6i`%=pV*qW+1Q5B<|98^@M4%!mE$j}#MGJ_>v942A-QvMN&^mY;_)CKu(ne7Fnxn*%N-L^yoF;ZK>~?1m+;R&KJUZM zS|i_DSHJq%^D9}c^!6<%3CTTsh~f}tvdm5yLpS~Jl2xn_a`2u-CuKdP^hI{;}BfJH~2wjUX`3q0dq&NpU8`m2f}3i$fR5WvQB5A z!P(M1dEzqX&rdrX<*N#(Ni9>>4l16*@C}J}w*TV(AA?*-q^J=l%%=AQ~AvT=P@=1>8M_1PHT8*mwi5Pplry?{UnX3p_I3i0DK6p;-IS zc)c!H-CRec*jV)2`{nK!;TjkQ?wlu$Nzu*VBSyFfQ(2fl-3@rfY~#g_68UVk6_7DX zTtqwuXspc3@1NHDQFr^}jIaLH)lRwU>P}*dhK3HAT~H@F8G`9Wd(5r7s15#{qeQ$Q zzS5-{Ha|tIE05&5o5z~>3d*u2_=_7pFYnyZmYNQ50S0IiJ@n{!zQJz9DP6gG*zBe) zexy2m6`*5v<_;91*ymF3jVFUYl;)G*_kdvgz97~S;<2-7=tYTRj~Faj0xMud#r<)1^&6`KOSjz`pnAVB5nx`Hi_|XbAX1F8N%?mu zQF01;LTeUM>L^x}@eTaF*RuC8$j&*LY)h{XD$q2?Os0kgNSt50m!bNz+FBR$+wwNn z)71}Z-#30oeFc>4ktr?ZdCWv(q;2uO5U7uq_>+!t-FADed-S)XkL>1NM(#ae?9 z)=#A!Rh7oS4lh#IS#F5=$^QXqvhFhmt-bF06Na8Y|DWZqf1l)z_*?&rUnwJcViW`g z73f!%o8%$qTX_F@PgLii@b;D@LU~r@{2uaxQ{-YSViJv4t50gx!j+5)MfVRTJOF=> zxrl>xjWj*gp56&g@)%CN4bcKkF!_;^3hRWCkH2qHApKlL_{n}I;_Jqb&R-|EL~^L; zF`G7wik|AT9uwGnnu}~x&}y;ZTRZ$qcvi{cucTi0Fi(L$Ro}AJWL|bTfG83@15#}t zN1L~Xohn3FWL|%Bea&|i^Akf$syEw^e*F^ptHU_eEr&a(j36vJa*&|-K5gy7M-n3r zwS}_x0+;{B)}Nh-o7PIwExg9E-rPBviovPAjbZ06TGis+QjM_)*#)MmGMD$^DAd@H z-UE#xLu!y=Dn$476FuQB0zIP3eGH6Tcw2|fT~*$xzDV@^`Y=x$Jp)P0H|ZdYlnE&p z1wmpE)CQ5A4i*AG{e$~PYrhPV^D4!woKF-?0&WiaOBVI3(EXoDMuq}{ltEAZc}*K1zsT#41sKNGjjjH)e^Fi%enQ7-_87b zfy}$oPK1Cxq{%|2EG6MW$j%y_D1g_kTXvqqoRqeV)po4z>p#xMN31NQZggJN3xFgT ziNucNja@ubg*G0|*nw~(S4q`IBN9CsxG<=eiCv@{UpnG`al}oAlFj<5pA51(-&Yqf=U^;z5X8h=&NL<{&%WF9E zV^C=%Jcq8KJCRJ0r=19o*i|AJ?$097T4}$^ii2RaWx~SDKh9DD6EVb@WR-%E@Dk{f zkJB}kd_H(@(|*EKR#IIIiQW40;aaWppxJ{U$NxJo@sK#d?cJ8f_|Yizq^`$sR8QgB z+tJQr27MWiUQ%5mq~|w~0=AJyaWmu|@hx9fA-VS1XenUJ=3B1Rz+a&p#nStfv~ium zY~2C}9lNTq``!|<@2M>r5b40>Xo?p9$g^9Ekd%IlIdxIg%t~;0ZNB54*em1aJRmsr zfWF;1a~}{uie8`ipgN`HfY{?<`ujlh&dKvEn3ROR<5o5ImM~9k)^ts$r{0lDC zP(Bg8%EUFPa@ee~6uGbtdo;CEw&kMQ!;lK}TSGc#%?Dkp)n+w>7_hm2VW#N3QzJQB ztFW1tw9`5lhl* z(@C8dJ|!W|Xf-kC6BECS83)|#moQ+r8B9AewEbsJ`JP`m=>RDN?ssR3ntOC~va49} zuA2`W@Qur@K9lv4)fdUe@5~rpUM0*u7>UD)JFYBUM-0-#6L4ftySqhxUE3gTITI7O zzzQ^;!KREkEl2ClG^Gb{P?rAxH?3LN-06k&b0W53cxI7 zLvZNv9JoG6+^|!^DJ!zWWLBwdC$7j7L=NN@fVcAbj0|Z5>yH2YsW2~iRwOjomgTjS|f7v?P>q}Ug1~o(Z?LdY2 z`9M+K2lLI}KdA;k)40(Htv>-6bZ+XZ`X7YNbDGM6w*7pgRbLi_1TAgi$=cx_&xU(ykF-s$+L?$^#>WN{E+^~@1^n! zhH9zLAoYT$roQ9q( zqqL{xSNDMq@o#7cphpE=(?x}}%UdOm;Z1#zAb_mHI6e3FE&BgXmRLj4l#6*+R8#?lD(X#((8JzfnC%GlBqqh|}4C0_?Ldj=&K^kdP)IDQ9^I2hxhFAZQeWpDp`Ceh@M4vQqa^*%#@ zFo&pz&h7KEcp?p(FbOqjD*o|PJ&dC$wIc_pjFRD^wl`*+#}J)k**NWpG4J0`JQun-AuRyexGpHBXPd_va{d_;q9@W~A*7N_=L)_8Z;*W3tkf9Jr%-oG!tU+gqR zFs?n0M{}G-TV&`4+V3l0@?3mM;m;mmr&r|AgbnmC?`R7o!^LYmG0|DUy@|#loqR4` zVY1WrtQiQSbnZQE*t%U=Tc zk4q>zuZc4ppUHA?b#ON>9eIQKTh@fg1%J>-asLAhcfGK_yvAX3Y5xa#aHtykwk6(p z(Z}CgJ$Z%GYii(j^*$yaW;H~x3;k1*w7Dz&6e>OZIa;H2Eqo&I_iqYdzu`WBdeOZ* z=%5@CjQyVh%b-fBC-!KWgqd~svom|DKh4os_g`y2MWrHut5C;pba}~xZncNIn~Lh# zez=+ZIsRSxM2(|kw=LdE92z_2CNqvPryZaJ-3-W18yW|Fvp?kW=k9{n`KSZFSMc=D z>M7r^Xpjm}*)>R0q~Z;NzS*V(iOyoaJcu_^;TMTZ66f(0jBl0u(K;MP)$QQ9^8W?6 z|5o#4oc^w_jaN~}b|b`<0>ZGj-UsBp#mF#3QwHBQm{RQU%|k6S?3{=2GJ@Ml{BWo^ z(g$C^>A_3&m>6(#=}wr*{0rM+s?3iySzJ42@3y2g@0>uQ*l?kGyHLb83TYr^>tw&6 zo#|&^UJb!iDJI~ilyL)@_@kRsZcaYam|yq_kPg2WkP)vqrUBUi_5r7SaDfJ3J?F^b z?EcJ_J%xDc7q@AVW?*U6<=3nZ4yzrg=QHKzYQQt@csa98w^<|G zi_DpR;sztNjDf?2(EhRW2BLZZj64QDN3Yuz4);+Ccmp$L8#vxA1P$>?1PJ2NByby0 z10$(YD!OX^0%m!(xd@DnbM96=0)t8<5eda(iKk7#_KE}?a`=0`9q00$yk`D7)Ut1LRm;C{vmi`&+moPzCLT6W7Vk^YY=8P zmXx}m=FFcj$hz9)t*f*nwS&EFfZ_vy98L-d8^;Ec~SuOAhY9h~AUJgSIOEsFLD?=7Nx{ZLDy z;o`KlXmf%3)f^J}^(tQSXqlhH88YVL{5Qp7>9*<1w3sJ_<wW3eT#eikbaJh^JdSo)}JN52SPY6{-|}Sua45ud5f24lRp=)NI)Dv&$)wqy{(PnWd$1n5{p1Z^vz18 zRLUQHWj)e~&xz;{cD&2-#uj{*l$6R}T$J|v#3I@=O;OSQxO=$SYjd=i2qu&!$zy+#X_+8VBvF!BaSp7ebI^)%tQf(E*{4IoScJl}ye>2HN4fSrXQEXb(<869O zH@4%6G5K%R)Rf$b%6jMc0WJo%thwkoec;)N{S)%zAaXgoaEdabaitZ$ znH}7^`=I`CNo&10Z-0V$d}dKN_d$E`3zuSPqm_Wu^lu|!P(}GN*RRpVPxK@T*^rh2 z4f!o&z8)i4f>(YJ=Vrmd80jVdFw5xas<*f+xEGS0r~P{$PUW|f#z$6v(i%;FEaUt2 z4n#rx5tlObF_x|9>Vepgh2#p}*5PB(8#T|q)P|eGMXE;B?tVSRUq*t?s;;0m`BYauzX+Z-D)hbTkal^ACw41YV=2T2*9ZTbofC-pAZ7DUr>mZnjZw0lN2^KEgHi$ENa zU@Yqv!RrsB3t>!iiG>M=55y_&&BA4kg_)q6Nc!NLcQiCos@OPVZgHF~#Si}q;QkTi z6f5r6uI7VoF-du2jQhQ3d8yQio0};X-{45A(bE%B2}r{+c!T!?<{|qVcI8zY?ljE* z^ap4_t@2pLk8_@7LEVAZRhB{ddc|#qM15~|JSGSxqJrGb)do3MJZXZR=E5;1bbR_y zvH6@iKKeMCcxf;awfe7s z0o+93%9E$|3CzY%et3>Ld405?3KQ}cbw$%utp#-|11Y>sl5E5>X~Z_dmBKf8*o#5? zlo>`XJUCo(<2rb;t}&Z$$foD^su$iT)p_Sxo=f`(0z_W1)2_wF2BjvC`0oxZ(9y1`QHH5Y{aQE}it|l^u1nbW zSzpV^b%s5*I5Rt{Nvt9Z&!k9M7n@HmOKI|)!idi8%+et6qhY1#M)V>fVVUBji{Y}D z^%)o5@5yr>mWw>Ec#I;)lvKHeVdTo1&i1K+rzF$nNXzZ5?{1?rXMy>Q`JB{yGQ+V& z<Zb;vH^NlOrU=6Hr=kKU6^7~I(- zAZ-_ROE8Jz(3Y4MptAA!R+#X$OGbe{+GRXKPJ!5D*LWLarLnECYW4AuUkn6p*}Kym z880(GTlu^EfsX@WBw>Do$Ec3*j(&zi)pF;vc^DR0c!{_0>we#}VId1c_(K$8f-gc~ ze9&PMW20NlH?<7o@%jK{kIr@4i-9Q2&+Re7_+ed&bInKKai<0MZCi-(7ax(m5c?|LX`&o_*N;oq(EXW z8VQIm;VPd40!h!rgr@zZdWyo;nisYR3~2_F7mA$4ybZ;2cI%7=qUKJobCH_WQ>@W8 z3DnUu9sO=W2jrgvBQzjnqC(7b&ON?L{mTB>)~AAY>Xx>c*zVgVxLLihtFPG7g@ z(Nbh43vu>+wqR#NZbcZCUZfr-#?Qxf9Y|C{WTZlmeg^(?EV!4P?Ffm}22*e^G;ah8 z@o%EiZw*o})2n?)g2OzU>$v*1dFKwrQ*O)I2|x+Kp10-x|1pW;iA75YZ-VukCmwmyUE} zh~~;C=%(oY2M}yT--FR7Rx$PM?7pk76+7`u?zJrYlhWP=eOH{g%+{jWn-q3BLG_7i z#F!2tmWzRK&JdCVMVW5l6B0cwtc(~0Br^l^Jt1($d8G3S60Mw^BG7?W!XD-gT=S>$ z#T8srP(1ZeG83EbpMVdje`ozd-SS(ujC}0uYWVTn{XP2(RQwvQc_%BwrvJQk zMe82&?|RPxmGWp5obNn-j?m0eVliy*j*njiGb230h7em!_47B!TJPTuz+vmxUDoPT zUpZll7H`DAh-=9bH`3X*tC9J|4m$1E1`7miacrL?BRHu5uV_USnQ_+ejii6V-W3xa zj&JZ+RC#7h?Vp=&&i`_OyLFG-KsiSI3UaD%M(X9%)v5MPKl@~y<_b(FhY8$B8^Gj0 zbViRvsB35u^Vze`9bTnx!x@09e{$?5y0;@tEriBvNLbzQ&IILMDd+@sv{PI-DEck~ z>1L?oD-OXS%n2DBDhu=3B} zyIH`gsQQX2S?Ato*{xQz4*+KI(67z&&|Kvr{crX*PPhorAwJrAI|ruQ7xSxn?}ZX3 zhSivNM@?k%E9ETSVvVBgGM-d$o>ImpbGs&4?fYHz`P@z*Pd3DFR*>FG2wAd6K-@Mg zLTCkSeFF!7mP^;;6R+{NZXkR3X(mGY2(vqpsp>Q-Qduok3|x%0m;5j!PGa*W%B4)N zYn?(TI{zvPL1nTmyJ}9+Btnv};S%j9_Cd5~-QAxpavE*QIe;WT9vlf#pE4bJOOV=P zo0m}igBkTP5E=`|F-McUIgNc;pL)XT#SDklCnGnPv8A%Y) zN|{UbXk8UCjy#?p5}`W~o|OKhLFTV?-`XZ0#H)9Q3C<+C5RC$Y5jsMN5X4h%2XNQ~ zC9#6d@~}S)ysb(DWp~?k zR_c>=F6+0}^w+OWYd#ug6)(5spjw8o!yRGdMf&SsW>X#$1;1*}GJk944v#^2;Of7D z>KlSNeY=(Uy57<6kv4YXVlvNme_sgF%A)`0qR63uQTttlLd(yhnw;P_cd+byeYgQOfeT#NRhQqV#2 zMPc4(43FiUL~@AMf>ez=8nt9kQ(NA%D#-XXc~)0;3UI_|Gn^en#HO`S6t**GUk#*? zFmf$UB={X%QFbYU{GY_cEob@YRXs}sn*lx)&O}{T{n1dU_m35g03g6>Yvz9W%{4yN zf6yLZFi~tVBKS(Kn}hBKTAQLvU?_1n%9;qn%@Oya?A2L6Vtdw;_;hQ({7yww=6U#q ziZ&_IJNCnQf>EDsevIER13A30Mu#rhL;vprFP-lvHkkp-9)Jdo z+wa0pd+l?KKN+`n(SeVxpFh*~Ka2GQq)`vF#`WF0uT0&B^G8GYrr!`&4xdHV62y=X zs6q0`;;ITPubR&s-o!&<>d3rI8N<$yb*_a+kO>hX8jLTRSRIp220nc^r^dvju*S8l z3#StAA$k)wFHF|`vH`(39CvF-rLJ=vs;JWS`JTg$;7()NBd(siax>Ww>l&u2s6Hu) z1*Y$bRUQHGYq;%BMQ?m+q)n^u6{Qv>XrSmGQi!6QcN>|48cmjnzQ|w*+f2Xv zO4oxfQljV8Bk`l}ZYn~XZV5kq+f7rnTj1kfF4(VM5?({RTa%)6%I|=`$2KB{^Kpei?P96BF`(W)nr-Y*Z&qGXo@y}v?@mS?;3;l z+x?q=WDOp8=U{#l4Tr($KIA5U0-L#(9I-*;w;S8@?``niV+23wQC8uivyFlT zs&9mlj$kiQMXUISf~5)5-*!iXGTy)WL_>dg3QbWF1x%t`bpAxqf2_J|^G;zS)mW%d zw|egr$1>}T?TwHgEn|G5%KG%dU$P<0yVNp}%4u!k(qg{UMt~?NV1^Pz%Wz-#!ljbz z6^y0I_IGjm_vVeRF;AnhtX|jE!z0NT^;X0hh2gCkf4{DMsstl2fa2a(*+II>|Foff z;23Z^5Wf)|L{wayjD#~S{$EM3^+K!M|X zG%>C|1mSn2rc*)L8#?D4S3;kh>^`?uNwW%S=nUxl}{Bsch*Q zti3V6<`A8NioYGpZq%bk^nj;v+wZ2DsnfZA6v|d~7_P-aVaRz3hM3lX zAC!>4wFxDMpZzD=O4al`(L4ff2JH394;HCEH%jyvvmWZ8Z+i8e)NRPi6rw29TE*Q9 z4k6A2;Pwpy3j$e=VWg!_6%i8}o{@{=m-9XMzkv1lRPf{K()O6<7{FI*=a`~snV$Rf z2iw2K0&TMqs&R`-erALaR3;3DPsw$sbU^>$AznyU|1N@^1awjb*NK51Er6y$FmJ3! zaX`2{Gx-nBj@Se<9kISJ7`&on1-O5KxJMfvZKl#>Rw^u4W4%$(8=wXbctid)djOr_ zS0XHUj{4JsF7Yz`7pf;me<8OYC_T=FnO(TY-Gv+~&-U?VMlHRc@kmznX#BI&loh3n zK0v%)`x+J_?52j(pYu^(Qufz_XXHaR4Rg-s%InV$8+89uULLkTHmff5YQ8$!(x1&U z)!L~S1);^81_$TL|B>iFz@v;`Lui!+w#C(*TxlHlDHuM9{YuMTE#;M1shBrS6w0g< zKgBBw&I#pt@e<4&DJY8g`6+8D*@pa{q{%K)Fuz)a=iHNHJ$0xedNIA?;BX$g7`okd zE_j`=I@qF5)i&FJI4^am)%Xy3;EWf#rYy@-Kk(d7E0>@9&T-IUVzm>&;o=azF2-fr zY{vcuzc2LQMg@JUu^*c!p}6edYdJU6@*6>fitAa>8c^tN{^ONQuvtBRU0cI&F(u@; z`*MqXM2hf$zW;!;N8EtTO>`!z>Wvz{@7;0(h8p?1k{YCKWbFuU4H{Oilg`EyT@u9q z<$FOFMu@EPbhM{lZMi;3PDgphZu|oWniWm}yv+hJ&J)jDOe+TQX7xsz|mWPRAo^isVzCTfQ#IEdQ{$bEBaJChR16l*w38`Q8Y!}pS-y9qD>AXr_V#!@f$Y)epRAb#Gu}eZ6C8g zYsj8V#KD7-h90}Gt?D78j3?71>p+Ilh=Cez#%NlkM}_tryVPc$GcaB2Gl;^Vm>s2IQR-sQP7mHl`{|fKj_zmX8-^I literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..1edae70b73342178a53c6b1e9a9846422a4ca76b GIT binary patch literal 81402 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%0DZUC3a8)eKvQ_O*B(RObWrWkNc;%Mt{$Oi^ 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..23fb9a5f8c0182a0c0610ae8b7e5758e62d493be GIT binary patch literal 11719 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 CzqH!` literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d9584e9024ee212b3e767ca4ae1a1e1d60774a3c GIT binary patch literal 73852 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 literal 0 HcmV?d00001 diff --git a/web/icons/apple-touch-icon.png b/web/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9fe8f1e70d8b4ca9965ca54cad4481e4f115ad GIT binary patch literal 10079 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 + + + + + + + + + + + + + + + + + + + scrampad + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 000000000..e0f84441e --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "ScramPad", + "short_name": "ScramPad", + "start_url": ".", + "display": "standalone", + "background_color": "#FFFFFF", + "theme_color": "#E91E63", + "description": "A modern Windows 11 Notepad clone with rich text formatting.", + "orientation": "any", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico index c04e20caf6370ebb9253ad831cc31de4a9c965f6..74e20810dc3b8ad6fbd03178d452181830c8493b 100644 GIT binary patch literal 12008 zcmZX42|Sc-_y3?Q*-3U|UrHF1-H<(rP-NdiDoc`(8CkNgC1c5w_Og^}NQ`A{86={z zjCII1G`3-k|1~|&^ZwrV`8S_F#_hV#bO&&&vZxLkkk3xO!*TNoSK-}<@y@K>mGNB(%p>zDfd{_25j zjB{*>Gg*f@*S_RDdZ+z7SFvKazASx=Sx00N*$t)iWUMlcNa!5?c;T=@HjhP!d2d!I zPpG#_T>YKKs+a4DFDol6KY!eTe7u8}l6`va`O0SvQgkuS-S@(sC&jvxr4CK}Ot(;5 z5Y2EAzs>0f`%ZHSnt{||YU7^vRH!aqM;}iuCO_o;*jVf5^1ARhQ&K7!JMya5QSMs5 zVbmMQ8+qx4;GM1Lpa>Y+{d;C;iSpaRl;yZI29YC%DQ5}#c;(2xy5q%=*(F049MSvX zyS$Cv^zOG}$f^;o*Y`d!bL*&`^%EWB7c`hK-Qs6i^d|aQdw2!~Da(ah)PCp-9ln*X z;@M!TBi6Dx{~opI-!ZE;x-60>&@9T>Zu};6g~uTVC@l~>bH}+s+;PcQSHE1!tl=F- zj$z)I;^LA&TJWXeFlIszt?{uC5-S_G;WxccFw3vnu1{`@e5jv{S-wwAfld&r9OX86 z-mO4_#~*If3DL##V)%JmWbVYJ92k>{tG?P&48P@qdp~DZeJ(~tH%htlxY2N+F}*{a z=cAAFrj)?vtqcUiyeUp~exB;|E=Z&V6|uf4Hn*D5))&_?t3X|CcvQF@b&My3tc8|{ zQ6X?m&55?Jd^;jxY9%tZMe%`nV&O43qS8;UDRi3-1&60Hkgg7JVEgLky?VRGr97yC zQHWD9DpPU$z-*PMd9D$ zI+`i5y0Q$xuSA+dybyWQZY*qGR6{Ss6)nL|h|4iE`#V_5L+mLWQ8cf`%9>CXws;knnuGSog1!5HD(Qi#Va9S`G7_jbbkhfnluk4RJx4&&nfNl&AHB9$a^$lHAU#eKP9U`zC8HZMe!uIM+*;5ANq(g?of41+j< z=>0c}QCujf9Mui%%TL#|U#p_)MGb6&o8ypgx&M*%66J0~xaSSQQuHq|!Z3Qp84EJC z+f3Qyi-IH;-gvqJL2ODh<#uAUh}?HCg&LY1H}Mg(-;GYr`EPvC+$QYMX<1@5W+ zOFJy3_rrW9xR(~TR24}H!qy5l@;@HXV3H#MM7c>L=@|6?34@;^%U`UeH$@p7P> zsRVG1909I}3&IqAP4?b=4DSBpE=BkH1@Z{IN^`6jg}?k6`1pI=5U47=q;jb>CL%e3 z88UoGnn0BP$K~7+%K7fA`n3KplpM#KgtY0>x{SYO83EMK127Ya#aAgqgXJD;y z_;Mdf0x=grw1-u$)M?A}OD5Ak)@&qa_QnmzV44QJq{Obj1a&llR62^K1jA(V#O|W- z=!Rr6Qy$q_^vnQc$L2DY5;zAk;56_%Vv3)0w_<0IyVP#$-KQk-Sg!ACSr$)%wAN=V8>YgRoynzecoN1WogP;Qe2GqY2023|Azj;*V7(dq(_ynG;-Y{o$|YiSW~tZ;X{7aLR+d z-I7XB_>R(gA4HVPX|q$;uh@7|FIWTjI)VM%wC)tEVD?CNF3|mL>0gNAWk~h6OHTdK zl9<~u*#<}9l&Sh{-7?AK1{(UTG!+DHWai`DeB1PDA?#MTAZBh_-WY-BAd#mMsQ+KO zVuo?b`jzk4)1!|uO=6XAnA40)t(W#fSg&oxg8EVT3OtGE#_pjoe~c5j0nc~mO1&PC z4>xbERR{IeZwh*v;8$_v%l_PsmeFU*=5)$?IaXzA^CiUiRXy2C;i0SM@kEv+GD8NW za05>{J@oYDgsspKPI z>q|HGX6MU3C6-N*kR*%DM6wrI_+zL1ADfTeq4mYm`(W=FxENU8GLRO zpx$K9cgC*So_#{7NkIMLog?XwxKoW%jhmX&YMD~W9b#jxU*(_%w!$7l9ldsaQ_W~3 zvr_j1ZmT8=BPG4G3WrA&{dxtFOC&c#Ui3G0?nIw)BeQveS7fyxbhQ61Fvx5X>_IMO8Hhu@T8;|wH|ru7w%%{bH9d@Fr>}e;=+R~ zCwx}$hVQZltQ=gfB+YTCd?Yj9yE1&Pps0D1waQ~_N~5%$MgRz_8}AVF0EX<_9LdYa zrEh*Hy}uEZzeZUUuh-Wbs(y z;PW^&5EE@nc_n2hRa1H##vysqeYHD{y?rKnN*dVKXw!h;7f=yl5_-09ttM1%f~%6G zcD`+J)-vhR)|s`uXMSs|a{Eb3p~{c4MJ}g97Q&1VMWkKT#SZ3L3Ph|!>XjQfl#cBj z$Q34)YXx|4@cUk~8~fDI?SEF~!&Keh3h`jOUXk)k*de(3 zw%F_oK}dn7l5fprB^6u3*B30lyPjqyD<_6H;w}rw6VQd(Q}2yc*cK@wY^UGH&P<1e z*7jWz9I0wdemFcH|5W}#mmG&!YMD@Kxwck9+_Ms++d)jZzb?8`hRPZ*-RcsIvwtO7 z&?i;UeX8<8^CiIzpFO#rVwbH+M(;=vzG4@sHv~v&26u28&EM>49n`MVtCvxJQ zwBvp{G8QPJPhHafYMgq|I5g4b=q3M@Sf@y~_x3_A4Lgg(ZGb?|sz33MZ;)U6(PCxJ9b&TF0wt0Cz1}6PBN+9}e#_yT?$CblO zy5Ap_Y?G91qnEC@W2$(^Dd2FrBYoPHETJ%xTES~aQywo*%XCJ`C-jfn=us~piCLEx z3zg|aXz)h!H+K-EZU&BX`XoGEeLl;eaMkC%*f7v6ubi8l=xbbL7(tGWok@}EK7Kcy_9AyP7V^taZ`gFcD92{Era#U`!asjqIWKMX%}kIvhC>8jUcYdE(8-}>U2 zo~iy3xbec8wr`cosetLSi+%y>cPT$iu42};IUIV0%Ox@f+l_E8)WhDKL`hqvUmKF$ z@|o6NTT`juqgP~FnQNbP8J8b6M5ybqS)AIWsG%CyWK=mz)c1$#y?~tkzknd(i5f%I3U2>ggT2?~yB)mh{5<1tNkAR~H4w z96JVohNT5wn`iXFItrCw$LsvKUfg%N&+jY7%+N|9gyFai1lC6Gn#Wb6OF|kFuSuIa z&AnoO9E8WNSXPy3>%YiciC?6Ah=0eY@TMU-Asm_TLK$xK*#2;@e+Ng6IUbXa-IQIS zkdUUwRquZHJi_bl&SV$H@I?}4%()2*|5ZLDa&X-fEtI^FL~o#w2aEcpjM|^i1lj-7 zv>L*tz?c1fq)*PQ_&7Wp z4w@QDJytS;#8^tCXCM#N)b!mb2Za?l%Q){m`Rhl6OKqS^}@Qe&IRgJ zjs8S2I7!C_M6$gmNAyYzUx~cxLf@1<`lIECH5|L$Fk-Xt?ZaXx3Ys14ha#j?^~jF7u0ZWm{|W8^ZvtUUL^G|%Yo-3q4TUjcNXZs!#`VmAE`3+mVbB= zg4s#9IM}u50J+$H58as9^7ZK8t(GFDRp&V-Z}ULC<^^S{oNOTC$=0Eq!4&75_3>2n z=8^lpbNxwjIM}BR%KF|&=j*W;msdhH6FXt*7N(w_v=VXseJq(1ky(R8aHfQap~d4@ zq>lG-`}uBxFQTXv-p9ns$%z(|CHR))?_+c4goTF> zwoSHB*iOGmszGj_Xb*CI&zxMQs+CTeIuzhN?NN~8coX`fV=?CG_^yy{9{mS3T0zVu+ErS(`aHZDzg{Xk;rK zI}?J0S$#_{fZ4ap1=rT5I2}!&SvjJ*6)3DDBgnH`uesaB1bp7-Xrqq0G+ZB)CyM<=xj`XALurZG3!l8&&NuPmb)wDSZ4q!j#f;?3X0 zBv@19*Qc4D*89Irn;K+0R6}|$XDUAY(%fe&>*o*S$M#pP{7+?FacLd=$&MS}KHX96 z>zbJ%p@EKB_%48Y>E#nHTs~qg?r(WU-S##LwYT1f`n02Uy2kGfa_!&}eE-mCzg{8JCM!bFCN96K%JcUE z|AVnO)y-lgw=jN>`?TK?wjn}RzzJz|iFhMAZiv4+n;kmpf8J6pH z@t0U?pykvBJ?SF?nS{(17~&LCFwVJ2(bhIqR2~9IOLA!tKoNn(!b5c zd!68^pRbiuONEw|C%dp_sSAtKjU5( zKMUXExZc14F<)5`e}ldvU=Vu5#wO##c_!c9sbjf3zKx&aXU0Ehoq8o_YEz`epaSY4 zIx8X=ErXDWT~1Z@BDFc3v+~0=h}l-8^!KnUQZ|epe<)%0-PouC(8EHfQ?yd(V@8*B zPd1We4~3F;I^#m+b5+}k`1brNeWR8pc}+%5BP_+mUTG4_D0r2?&-p~N_O%CT85(m; zm4M$D<*6TefF1C|4{Qyod_-`nl^|mu=HZ)$(Br0Ix4&L>)RX8&Q5Hg@f8)%7Z2sW= zXK=HK$Pe!icWjL7Vs3Cm9P>+A$P7J9;141C?Wa+`2JFt8PNNzr3Z@^#3Ws0$%C4?5 z!P}Y>Qm?I%%n!HKscGI?xQL5hW0^5+J@?~y#u0%pQ%6@YB(?j5-hvGW%O`J0EgG=3 zjWA=@h#Fcqz}dLPy9D2j)iS+k97Y=@8) zm$Md6NZ&-m!br!?jMlNdxa^xY860x3Enh9^{vniOJx86J+DHg;gI=tGdTr3mwt|nN z9aO80?9V^h#~>aWCLI1E-iupVoh$DbB5$w>S2ZTICd>|z)5?lPntRoh#cdTlCsVC| z&e0i1G2D$MKQt#Ilw&+PRpfEX<7};E?bEk@Z*pe4YbVxWK4m6fap3BKeh{RyJ1?yP z^sazqXb3o85O2_<~u6h-?@B7Zs$niC%vGFSrm$R8axa|oaK9YAl zy}U&E+e?A^aA)_E>Nk6r;Ury-KG#*j6Um8*6%PV}h8G+e7xB?dZFM!*u29(wj_chG z(2jGI;N&o{JFJVCUOu^|(HDfBdY+LkwddoCxnnlK)eS|J%a{oY#<^5^lH-s@$Me6= zaSno>MiM-3By+DjYo)4%e!oo)Q=ek-5gRwW9@If`y(XQoJm>Z<2|si>nD{w+@x)_j z75XkUO``s`7+H-~<=jAlb54Au?&W;+o1x=SeFDFT!|g<6BN7|DTqEn!jDvFNt(z<( zL8HwxvzDE=quG-i9-hp$c$t!1=ul?=*>N{-KX!^j-*ji2s`RMNs775ov1F_AOy9Yz z@$$I~#j2Z!-sL2!-8I)wtkoLmEi;|gbZLMb=jkUF*R=J1a*1gTJKhLd_OCd>vN{ss z@udNCZx)|Ey=!Mw12SrFk?x94YulFhw?La!#Rt^Wt_DdSTns>Ti+e2L<%_gZ6NC03 z3HcE!Rz|w@oKKu!eJ^}u&lME#DUGy*Zy1)OCeL#AEWXN?zfNM^apSh)Wlaw4BZ{0P zp!Z)N;M)hUn(HH)&KMl$X`W0-?W}M!0A2F5MwQp^&oXKHpIGaD7MMVzgZcgN`^Q%( z6u4n}8)$=fOnKUyYVQIE21s7cclQ@UeI(t8@@?MPWQ&HP zg1i0_!$Og2rP>8|k0d*3Ge>1a^u-_jc4)?_XSAx+wEX$gc3p?Nv8hN+6u$0Ia8Ai& z$BAHzQxU!#v%fAbMNjjciKem;;M)vSKU_(JxSwItC0E5U*WLIrvrpQm+T$g+G&CI( zCzkPLCf*Muo|9Yb-Z7_TKQ=uSNm0q- zxsNQawpO}~JGD%^z%a!32w5!^bdYzB^(=q?7;^gMp+)*4S&QY3?t|1h?oWgM?+8La z7Yb5IBfJWfHh2=40G#744*ps^`Ro_*RX&UE$(y(e$^z2p#eKSVaFEU(jZC8~*tPG3 zE?xn>y!82R;g6XF##GMb`C$gW?BsvgWnG`uj+SC|S?oSOkUwlJqML*3(0u*K`%#7d zh4qQvNL#6My0=NY^1ZlUg;COi0n&%8k`3&98aUJg$K}3!aihE03pbLwE#a3!YX^9%k<+C`@8(fCWwwP28ZjDg*k+gb(WlW^81m4h?$N|* zi%E2%huu4HI4tx4k;(I{)^tM|A-*}NP_z69c*pDwZ)M|Nsh%jOp}#- znbWVYHR6WuFu@K6o8KAr6VJ!N(lbSczai^oC5_Xp*E%2>3)=@4 z$}g)~c#(~Kh5}JW1DlRTvz{@;GtpP}WA(Kh!1K$!YePsiJa9qSMgZFo|J;45y2oC} z9hb;tk}!KsZCObQVmXR?GVC)%PW(`>RClSe=jRYx?wgRkyCTzq9BXmWk56h~$qPT+ zL%orPJnysbN7x4rW`hIu^@<_t#ojSYj*&|LFCT=MJVtBu!Tab;VO-zwHI_xJ-^%Ih zwGDoKeXg3u)d#$n-yFd8MGlb`jq23E`wG_mX^iL9<)``~(iRottpdIp=*FkSN{QmJ znlp@THp1PYMdG!S@9inPl)DgybK4P+5?<_m#wvL1(2g2WohTT2&Q-uNkKC3!bkn^T z_U0x7FS_#3fzJ>tqa_b({DGOzM5TukE|IJw%J~%6Z^F(cEI1m7UT7_~|D1F`wNmu8P`U&>^y#t|L;gmT05W)Fl+E{&*3%bB z_bp=|CQSAA2(gBqU{=CPhXg6>2Y$=&PLPP-rW=6Vs;@f;=5C>%1QJKiyknXIt-9W) z#JbG=c+knO;*k4Qj?~%xmie(0#@7?Gj`4NAKYIT<_uAMs+#Xp^kxI?8`MlGk$0m~7 zb@}idf3rG!fMoLCocqbmjm7fR!Fyq^DGU1^ODn_RRu!wbK^ty`nXI}n_HGRMpzR{3 z6B}De{F`>&4C${ zwB*0N4UMX)MjkGFzx9r8tHdWrxM1f~t$XEsdBV?5`Avu7Sl`J_Tsf2D&b;2^4=2UH zZ8$%A;>0fHocU&Z4GKE@&fkY6qs^dp=SgCBTif{T?Jo1KN#^n#(cfpbb9Wyg-WpU_ zu`*FFXT2K~yKq8^Sm@%kRQeB54*cc(zZyHkIc{%xOb z<}YQq+Og2v%ZxcAg`LWkrTPVouZC&IxK0A&%xOU<^^}$$GSRXlR(mcs%0=bs8kx&^ z?j2LR7_~fc-Y6Z-twQ(G;Mp96`=@r;+nVI;9`oCKm*AVrd#d9!O{qm*}~AL?v(D@>rz5I6|U(@6T2kbX$0&s^M~-T~@ii zYKj?tpXE^Kv89&mJEtKB{P z%==bXH0A+Wy52ji>ym6yNCs${%&L&W$H2k6YtPj#ZEci}r|z|&ky@;&;?r=p_b-)J zM(KQmZYNI-Dylrgo4<=*Gr?YGLVb+t9&MH%zS61d#&l9ld%-E)c!S*nazBz?4IN~V zZu$muL#%R<7+2j(ltpw~3h5Jq=90jxuPy4Ndo{HjV@6$)d}odwUHy7n#h(QAczwWJ z6&!X}S09#4PG(Z|293YIwJ_UvD00V+A-5ftK5f6G#+>%fc)YyJ7XRfwGs@F+CkNG- zop8B8|K%6mh5n>h`Z+DFQ0n1K%!ccr>3}I)q*vi^y#Bq0s5O((y)O7v@NAJ*RkI9B z0@=jB$3m@lV^VRr+jHf_#OAfvqoZn`deBGL`mU8sRuE@!q`HFHA{9I;)zo58vNQtEOp4vDFPL8K(nU%U z%>Jq08)`4!d+W(?R%89$^*x;=;#CQ!PQ%IzP3jz0+5P4jrK&LS)>q4?1i|s7uBM&9 ztMvNa)DM}_Je;|1JGKZPa`7| zYVf-I%_p%i{}uX^L2lONF>? zr{N3xb&Q7iFT4YotfY4|=lhH+blUUbZYw?1?^T5k^VxvsbBeh{72fb!z!%9w3tjiA zOlJx>=VBV^B^^G4Bl6%q3sQ*NnSrJ>y&bk4|4zlYC$6>quiluJFK1|2ol`_UF4sHv z#MB7-!%@uf>xX93X^-@evl36+8T4PHPe&bUy_P2mu~PHhwQO$?jS)(JRBUdTZv0bU z>f7Q@>v`!t~ z^_ddGCCtV!uS^ObCNTwDbmKIbL^7)b_KML})7MK*ld!IV9ASExW9EGm0S98`xI#0> zf*y@z?@{m4&8=+J?v7

E)bRRhxEAg3l9VN0J_d57mSnY23RP zEiTYCHn!1m#0cl3xlL!N$JoH!CR3Y4{D~7$xHlWK zbxL~Z`F@sFtiDP2ZW6gdt7pQIaXmQG`{EqG24t_Iu@~ESOC@gpWF=z1 zqLI+&riWaORvbOSUZjU{h)(|fMJH11VB3Aj^YZBM4-if zwlbg9B#rbrXrEdf;;bJyBtvG;&#(5B>agsqge-R%%CdanIz)QNOL;RP{&eb2OOrEG4cI9Hj2 zJBc?rV907+F=IkvuvFGx18`naRNGYa?JN{r91J_dkAg`rG#iX;b;d0T;bxFp={Rez zgwwKH!jm zBFgz_!?Hv&c~=6UqbZz@!pmXeX5+uEY&RSRJ1K+VEz$c6U{cK;U^@^jYJ2zJ8tQl; zcB8hQ(TCqZ1Ln~@U>;ophTKN8cT!&{w4B&)>H=h)zbDOrJV6#6XLh1-ZaAf{(!Am6 zhnPDGI6grp++f11qa(m3Lt=HH8$EUha326Eg`7I+hwu}VpQH_u|4YnR9e1?>AP~{U z;`ob=97jp17wF>C&*GpqVD3LeN+L5AlJh5OPOAVU0hX!wPdqTB!5Wm4v>35`7YvUz zzZQc*Hy)4&>QB-Wvg;4IXwY+$wu}Hy`ixdMyxrRFY^CJ$b2Kdt0Ps*rLilCx1e#L3 zYlRMyU|LRX_CVC@A0|%P?s8%&5HQH!S5d?4-EPwW)A4#56q$y+q%C_2vjk!cLcjhT zz?cj+Jtk*>LkHf6@yRwWGBFgkodWrwpdC?q7`-5+vI4|4@T!b@W6Vc{Zi z%9C{1VnQ-Gxk;?T+5gcGK#)kc>T3WPDF1|t9v^&19?`U>8>4iT9g$%{%ZKysk96ZL z6{n`Llu2xrumM^R1XrI`I*mON?FB?s2hu!j2fS4evINY{)z%nV<^VMaI4>8lwv2F; zvkbvje@GgDDB=Ud3_!HGfe`DzgqUF|D}W{u)F?+ttmy~DpWjiMD0dIwXuw(k+_rrd zFJL+ssgMW|i$CB+M*e_;_+uBJKN>S@g3IKHLS$-lwLO|dM=Qi8O2}vc>c|?;Pj$Ocp~o5B~fKd6Q_Ae&LaOKt{*~6E2898 z4IrMWcZ}``5JzK(0auA8AyHA(2LQ*!lYcvg#GBm08eTx)ft#mEdeg!7#RX$t zd1xPI0U7YOkwi3Iyuer58t6E%4z50>!3N;b2Q(Vs&Uh8z&LpxS*ckaU5^Qio;Xmc^ zEXb8V$P#}`65#zbRMK~87AKR_Kk4U#-wm+Uw35cjQ{L%lfP=d*#@NtkY1~>cWGx7| zj;jz+djKH}4*s|V){Emz#cL`7_$hx^1zr*~o9+NVSfLHF7Nqe6jiP5@7y6F~246^} z#dstw7C5;`CF;P}5PS-#0m^@88_-*qapGJ)mNIV+A`VMw^@arVpQLRH+wbDTcmi8F zPH=E(V~W+>}NY;F;Qh?HDdYmgJ*A@*|}H!RjaT^EpmWh=>^T7Y5)&*7(yn zqPsibsCh$Hl7aKktTDi!`!j+DCA6fK10~KTf@?w#hGb%F+7Sn0c2mIuqydfN=1kcM z0<5LBk_Ey=N^Q)eNtYHh$OCngpE(zW z$25ZY#r?4vP_AA86UxPg}*|Bl`MAOw|LYw&uI&u`<5Y zY9rTeF`@#AwX!3vH4U|YK)@h|pI2RpHIz?mN#w|OobJqtpUAEQ$t|_rWZl~?ivD%< zL#g;gltca)wn=YcNY-9fMYmnYUn+5XBvTDToHT4K#zF}j`*d{o)15R6Icfk`9b#c} L*0}PNN9_Lt{c;h# literal 0 HcmV?d00001 diff --git a/lib/main.dart b/lib/main.dart index e29abbbf8..7721da7f7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -792,7 +792,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Notepad', + title: 'ScamPad', debugShowCheckedModeBanner: false, theme: ThemeData( brightness: Brightness.light, diff --git a/pubspec.yaml b/pubspec.yaml index ce1979b22..1f24bcb88 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ -name: scrampad -description: "A new Flutter project." +name: scampad +description: "ScamPad - A chaotic notepad application" publish_to: 'none' @@ -32,29 +32,3 @@ flutter: # App icons and assets assets: - assets/icons/ - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/to/resolution-aware-images - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/to/asset-from-package - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/to/font-from-package diff --git a/test/widget_test.dart b/test/widget_test.dart index ab72eaca8..b71e970e6 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:scrampad/main.dart'; +import 'package:scampad/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt index a7da523a3..ff3546580 100644 --- a/windows/CMakeLists.txt +++ b/windows/CMakeLists.txt @@ -1,10 +1,10 @@ # Project-level configuration. cmake_minimum_required(VERSION 3.14) -project(scrampad LANGUAGES CXX) +project(scampad LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. -set(BINARY_NAME "scrampad") +set(BINARY_NAME "scampad") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc index adc9ac8c8..33589005b 100644 --- a/windows/runner/Runner.rc +++ b/windows/runner/Runner.rc @@ -90,12 +90,12 @@ BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "scrampad" "\0" + VALUE "FileDescription", "ScamPad" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "scrampad" "\0" + VALUE "InternalName", "scampad" "\0" VALUE "LegalCopyright", "Copyright (C) 2025 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "scrampad.exe" "\0" - VALUE "ProductName", "scrampad" "\0" + VALUE "OriginalFilename", "scampad.exe" "\0" + VALUE "ProductName", "ScamPad" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" END END diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index f3e54939d..cde3fdb8e 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.Create(L"scrampad", origin, size)) { + if (!window.Create(L"ScamPad", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); From 711e1f9a923d8a3849d98c6b79ae5b98233707e6 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 05:34:35 +0530 Subject: [PATCH 24/27] Updated Readme File --- README.md | 28 ++++++++++++---------------- Screenshots/ScamPad_final.mp4 | Bin 0 -> 31096258 bytes Screenshots/final_state.png | Bin 0 -> 46978 bytes Screenshots/initial_state.png | Bin 0 -> 49044 bytes 4 files changed, 12 insertions(+), 16 deletions(-) create mode 100644 Screenshots/ScamPad_final.mp4 create mode 100644 Screenshots/final_state.png create mode 100644 Screenshots/initial_state.png diff --git a/README.md b/README.md index 1e01e81e4..038fa732b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ frame (3) -# SCAMPAD 🎯 +# ScamPad 🎯 ## Basic Details @@ -16,7 +16,7 @@ "ScamPad" could be envisioned as a notepad application that looks normal but gradually scrambles, distorts, or modifies saved notes subtly (and sometimes not so subtly) over time! ### The Problem (that doesn't exist) -Notepad app are quite simple and convenient to use, but that's no fun right? +Notepad app is quite simple and convenient to use, but that's no fun right? ### The Solution (that nobody asked for) Give it a little personality and it'll help you "rephrase" your notes really well. @@ -27,7 +27,7 @@ For Software: - Dart, C++ - Flutter, Material Design 3 - flutter/material.dart, flutter/services.dart, file_picker, dart:io, dart:async, dart:math -- Visual Studio COde, Flutter SDK, CMake +- Visual Studio Code, Flutter SDK, CMake @@ -61,7 +61,7 @@ flutter run -d windows flutter build windows # Run executable -./build/windows/runner/Release/vanguard.exe +./build/windows/runner/Release/scampad.exe ``` ### Project Documentation @@ -204,14 +204,11 @@ TabData - 2% Random indentation # Screenshots (Add at least 3) -![Screenshot1](Add screenshot 1 here with proper name) -*Add caption explaining what this shows* +![Initial State](Screenshots/initial_state.png) +*ScamPad's clean interface on startup - appears as a normal notepad application with multiple tabs, file operations, and a professional layout* -![Screenshot2](Add screenshot 2 here with proper name) -*Add caption explaining what this shows* - -![Screenshot3](Add screenshot 3 here with proper name) -*Add caption explaining what this shows* +![Final State](Screenshots/final_state.png) +*After chaos mode activation - text becomes scrambled, words are swapped and deleted, demonstrating the progressive chaos system in action* # Diagrams @@ -279,14 +276,13 @@ TabData ### Project Demo # Video -[Add your demo video link here] -*Explain what the video demonstrates* +[ScamPad Demo Video](Screenshots/ScamPad_final.mp4) +*This video demonstrates ScamPad's complete chaos system in action - from normal notepad functionality to progressive text scrambling, speed-based warnings, and idle-based rapid swapping* ## Team Contributions -- [Name 1]: [Specific contributions] -- [Name 2]: [Specific contributions] -- [Name 3]: [Specific contributions] +- Jeffin Basil: Flutter app architecture, chaos system implementation, UI design, file operations +- Adithya Manghat: Chaos algorithms, speed monitoring system, testing, documentation --- Made with ❤️ at TinkerHub Useless Projects diff --git a/Screenshots/ScamPad_final.mp4 b/Screenshots/ScamPad_final.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a398e0ffe65d376706f31c88d30da96fa49e63a9 GIT binary patch literal 31096258 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≻jrmE&dRi1SC{$=2AOvlXGl}%#qY&6_tkyI&pS1 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�f&9ng=xzKPO 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 z zbwg_hEp_~9aCfDApasjA3w+;;9d;N_&A>|-62?eyQY$|8(fsJ(i@MiKbjA%oQ@zcE%RH zzH+WsL`c=$KhoKs^hpHm3SbMVukOp$?UdKdwzd`p5IekXiBPKG=ExE~lIu>Rg5>y8 zNX?cu5(#91xi0prR0)pgrhSgO0Eq2MLDXt&>S3C}Xgs*NH9uv4RsaubZ-evTI+Q?K z8TX0{@R~Lt*zEPkCG%oU| zE&gQXu%T(IJpX&s;&|5wuq$@aGfdgC0tbZCSP*&y!i>4CPXGY$V6>rRYtE%vY;>0NLloxWwN1r^NZ$9V_OY*!kE{xH?u zi7#qm$dhw_5yH!|UXn>Au5NufTaM-yK8#!fWo+CXVgCECD%#$vMs>mO(J?c2YVPSB zHXncbzlV|dVA$N>qx=W-MR`1g*(v7n&3GQ^&5I5+=BU#80T?+V1b}ZBI%u#;0+EQb zZ5mIC3B*2lRfQrVwcj0KHBUnmcDU_G-sv}}xo@U9=RBjovNXKEaxOuPYIBJhxQ-hs_1zLLg;rQC5_)vC;L3 z_;`1s*E)N4Dfik|Y$4nA4;U=(q;1I&^fdLGdJi57l80AH7;a8$dvoOF=Ah_l=+7ke zxDY*aMq>D%*TEesirZ)uB1t_zwe5Hi8WZm&#9G@ZHYS}2X;HnGt z4OGs?(4le34-XEjn~jORzSq7W0#TNe#0vZoVc{nkp$CgD1-k`G-IlA7{+Jj%f}5JZ zktr6|#nWN`t1+ul$tmArYS(AC8!it55*H7=(1@sXYvY^MfNu(40$@cOqZaZ)D-n zOay{5Kds<>dC~<81ycMh4DK%FVp6BSk2d=4Ox8Z}Fi*RM7rPZ?zBcN2&flnMoo#Kr zr44kYvQy8cZS|v~aGkOw&+Umj47V6B{YWxym&G6lVDjqC2L8xA841yO7NNM z7+IlEa~g&aDV{Zm*Uq5!9p_v(fdS}Ize+*R`u^Qd@lx^v^{;bSS@JitWx8lw72keB zfp))E{V`&0Nn5&eJo(h*vu)2VUgdf32)kmhqI;gEH#QuJMflQ;s>|;xq5R7O=N~`*^5g{PF+t3UKfbr6<1tf`Gt1GuqZdM zrIKiQjMFzQ5MQ`*3T*6qEyWe9z|spj23EY&2c!O8DB?8yT5gv87zHILSG`m+rLWAM zI2Tv2F~)bUPm=>=S&*J-ODpR!96Gnd!Cxpya(k7B9~C0{;aSTE<^i8X9D2KWCwihb zSzIRT#bdJkmc4V0HtUg37EvCgcjiOo9zxf2Ja@i6Dvg;@(j3)cbx}0j(<<#HdbT0mT8e%btB5ke zzND*1@UjhvrVB#h_1SME5B-pkA*NI3@@19Fr@qNVD@!d+&IBTU|AwU9?R5s5d3p@7 z1b&yq09n*J0H;0c7TrQwA|=PeJi7g)RBJaOQ=8zcinQmi46U)?5B`H+)>^yEBy

E)bRRhxEAg3l9VN0J_d57mSnY23RP zEiTYCHn!1m#0cl3xlL!N$JoH!CR3Y4{D~7$xHlWK zbxL~Z`F@sFtiDP2ZW6gdt7pQIaXmQG`{EqG24t_Iu@~ESOC@gpWF=z1 zqLI+&riWaORvbOSUZjU{h)(|fMJH11VB3Aj^YZBM4-if zwlbg9B#rbrXrEdf;;bJyBtvG;&#(5B>agsqge-R%%CdanIz)QNOL;RP{&eb2OOrEG4cI9Hj2 zJBc?rV907+F=IkvuvFGx18`naRNGYa?JN{r91J_dkAg`rG#iX;b;d0T;bxFp={Rez zgwwKH!jm zBFgz_!?Hv&c~=6UqbZz@!pmXeX5+uEY&RSRJ1K+VEz$c6U{cK;U^@^jYJ2zJ8tQl; zcB8hQ(TCqZ1Ln~@U>;ophTKN8cT!&{w4B&)>H=h)zbDOrJV6#6XLh1-ZaAf{(!Am6 zhnPDGI6grp++f11qa(m3Lt=HH8$EUha326Eg`7I+hwu}VpQH_u|4YnR9e1?>AP~{U z;`ob=97jp17wF>C&*GpqVD3LeN+L5AlJh5OPOAVU0hX!wPdqTB!5Wm4v>35`7YvUz zzZQc*Hy)4&>QB-Wvg;4IXwY+$wu}Hy`ixdMyxrRFY^CJ$b2Kdt0Ps*rLilCx1e#L3 zYlRMyU|LRX_CVC@A0|%P?s8%&5HQH!S5d?4-EPwW)A4#56q$y+q%C_2vjk!cLcjhT zz?cj+Jtk*>LkHf6@yRwWGBFgkodWrwpdC?q7`-5+vI4|4@T!b@W6Vc{Zi z%9C{1VnQ-Gxk;?T+5gcGK#)kc>T3WPDF1|t9v^&19?`U>8>4iT9g$%{%ZKysk96ZL z6{n`Llu2xrumM^R1XrI`I*mON?FB?s2hu!j2fS4evINY{)z%nV<^VMaI4>8lwv2F; zvkbvje@GgDDB=Ud3_!HGfe`DzgqUF|D}W{u)F?+ttmy~DpWjiMD0dIwXuw(k+_rrd zFJL+ssgMW|i$CB+M*e_;_+uBJKN>S@g3IKHLS$-lwLO|dM=Qi8O2}vc>c|?;Pj$Ocp~o5B~fKd6Q_Ae&LaOKt{*~6E2898 z4IrMWcZ}``5JzK(0auA8AyHA(2LQ*!lYcvg#GBm08eTx)ft#mEdeg!7#RX$t zd1xPI0U7YOkwi3Iyuer58t6E%4z50>!3N;b2Q(Vs&Uh8z&LpxS*ckaU5^Qio;Xmc^ zEXb8V$P#}`65#zbRMK~87AKR_Kk4U#-wm+Uw35cjQ{L%lfP=d*#@NtkY1~>cWGx7| zj;jz+djKH}4*s|V){Emz#cL`7_$hx^1zr*~o9+NVSfLHF7Nqe6jiP5@7y6F~246^} z#dstw7C5;`CF;P}5PS-#0m^@88_-*qapGJ)mNIV+A`VMw^@arVpQLRH+wbDTcmi8F zPH=E(V~W+>}NY;F;Qh?HDdYmgJ*A@*|}H!RjaT^EpmWh=>^T7Y5)&*7(yn zqPsibsCh$Hl7aKktTDi!`!j+DCA6fK10~KTf@?w#hGb%F+7Sn0c2mIuqydfN=1kcM z0<5LBk_Ey=N^Q)eNtYHh$OCngpE(zW z$25ZY#r?4vP_AA86UxPg}*|Bl`MAOw|LYw&uI&u`<5Y zY9rTeF`@#AwX!3vH4U|YK)@h|pI2RpHIz?mN#w|OobJqtpUAEQ$t|_rWZl~?ivD%< zL#g;gltca)wn=YcNY-9fMYmnYUn+5XBvTDToHT4K#zF}j`*d{o)15R6Icfk`9b#c} L*0}PNN9_Lt{c;h# literal 33772 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 From 374b704cdb06b544446f07576ee9ad5df54d296a Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 22:14:50 +0530 Subject: [PATCH 09/27] Added uesless features --- lib/main.dart | 1444 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 1162 insertions(+), 282 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index f1df02cfa..de82259a0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,17 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'dart:io'; import 'chaos/chaos_controller.dart'; import 'screens/chaos_settings_screen.dart'; // Intent classes for keyboard shortcuts -class BoldIntent extends Intent { - const BoldIntent(); -} - -class ItalicIntent extends Intent { - const ItalicIntent(); -} - class SelectAllIntent extends Intent { const SelectAllIntent(); } @@ -24,34 +17,32 @@ class SaveIntent extends Intent { const SaveIntent(); } -// Rich text formatting system - replica of Windows Notepad -class TextSegment { - String content; - bool isBold; - bool isItalic; - bool isUnderline; - - TextSegment({ - required this.content, - this.isBold = false, - this.isItalic = false, - this.isUnderline = false, - }); - - TextSegment copy() { - return TextSegment( - content: content, - isBold: isBold, - isItalic: isItalic, - isUnderline: isUnderline, - ); - } +class NewFileIntent extends Intent { + const NewFileIntent(); +} - bool hasSameFormatting(TextSegment other) { - return isBold == other.isBold && - isItalic == other.isItalic && - isUnderline == other.isUnderline; - } +class OpenFileIntent extends Intent { + const OpenFileIntent(); +} + +class SaveAsIntent extends Intent { + const SaveAsIntent(); +} + +class FindIntent extends Intent { + const FindIntent(); +} + +class ReplaceIntent extends Intent { + const ReplaceIntent(); +} + +class FindNextIntent extends Intent { + const FindNextIntent(); +} + +class FindPreviousIntent extends Intent { + const FindPreviousIntent(); } void main() { @@ -95,14 +86,25 @@ class _ModernNotepadPageState extends State { final TextEditingController _controller = TextEditingController(); final FocusNode _focusNode = FocusNode(); - // Rich text formatting system - List _segments = []; - bool _currentBold = false; - bool _currentItalic = false; + // File handling + String _currentFileName = 'Untitled'; + String? _currentFilePath; + bool _isModified = false; + + // Find/Replace functionality + String _searchTerm = ''; + String _replaceTerm = ''; + int _currentSearchIndex = -1; + List _searchResults = []; + bool _isSearchVisible = false; + bool _isReplaceVisible = false; + final TextEditingController _searchController = TextEditingController(); + final TextEditingController _replaceController = TextEditingController(); // Chaos system - permanently active ChaosController? _chaosController; bool _isChaosEnabled = true; // Always enabled + bool _isChaosPulseActive = false; final String _currentHeading = 'Normal'; int _characterCount = 0; @@ -113,8 +115,6 @@ class _ModernNotepadPageState extends State { void initState() { super.initState(); _controller.addListener(_updateStats); - // Initialize with empty document - _segments = [TextSegment(content: '')]; // Initialize chaos controller _initializeChaosController(); @@ -132,8 +132,7 @@ class _ModernNotepadPageState extends State { } void _handleChaosTextChange(String newText) { - // Update segments when chaos modifies text - _segments = [TextSegment(content: newText)]; + // Update when chaos modifies text _updateStats(); } @@ -181,6 +180,8 @@ class _ModernNotepadPageState extends State { _controller.removeListener(_updateStats); _controller.dispose(); _focusNode.dispose(); + _searchController.dispose(); + _replaceController.dispose(); super.dispose(); } @@ -198,164 +199,570 @@ class _ModernNotepadPageState extends State { }); } - // Core rich text formatting methods - Exact Notepad behavior - void _applyBoldFormatting() { - final selection = _controller.selection; - if (selection.isValid && !selection.isCollapsed) { - // Apply bold to selected text (uniform override) - _applyFormattingToSelection(isBold: true); + void _handleTextChanged(String newText) { + setState(() { + _isModified = true; + }); + _updateStats(); + } + + // File handling methods + void _newFile() { + if (_isModified) { + _showUnsavedChangesDialog(() => _createNewFile()); } else { - // Toggle bold mode for new text only - setState(() { - _currentBold = !_currentBold; - }); + _createNewFile(); } } - void _applyItalicFormatting() { - final selection = _controller.selection; - if (selection.isValid && !selection.isCollapsed) { - // Apply italic to selected text (uniform override) - _applyFormattingToSelection(isItalic: true); + void _createNewFile() { + setState(() { + _controller.text = ''; + _currentFileName = 'Untitled'; + _currentFilePath = null; + _isModified = false; + }); + } + + Future _openFile() async { + if (_isModified) { + _showUnsavedChangesDialog(() => _performOpenFile()); } else { - // Toggle italic mode for new text only - setState(() { - _currentItalic = !_currentItalic; - }); + await _performOpenFile(); } } - void _applyFormattingToSelection({ - bool? isBold, - bool? isItalic, - bool? isUnderline, - }) { - final selection = _controller.selection; - if (!selection.isValid || selection.isCollapsed) return; + Future _performOpenFile() async { + try { + // Simple file picker using system dialog (basic implementation) + // For a more robust solution, you'd use the file_picker package + final downloadsPath = Platform.isWindows + ? '${Platform.environment['USERPROFILE']}${Platform.pathSeparator}Downloads' + : '${Platform.environment['HOME']}${Platform.pathSeparator}Downloads'; + + // For demo purposes, we'll show a dialog asking for filename + final fileName = await _showFileNameDialog( + 'Open File', + 'Enter filename to open from Downloads:', + ); + if (fileName != null && fileName.isNotEmpty) { + final filePath = '$downloadsPath${Platform.pathSeparator}$fileName'; + final file = File(filePath); + + if (await file.exists()) { + final content = await file.readAsString(); + setState(() { + _controller.text = content; + _currentFileName = fileName; + _currentFilePath = filePath; + _isModified = false; + }); + _showSnackBar('File opened successfully'); + } else { + _showSnackBar('File not found: $fileName'); + } + } + } catch (e) { + _showSnackBar('Error opening file: $e'); + } + } - final text = _controller.text; - final selectedText = text.substring(selection.start, selection.end); + Future _showFileNameDialog(String title, String hint) async { + final controller = TextEditingController(); + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text(title), + content: TextField( + controller: controller, + decoration: InputDecoration(hintText: hint), + autofocus: true, + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Cancel'), + ), + TextButton( + onPressed: () => Navigator.of(context).pop(controller.text), + child: const Text('OK'), + ), + ], + ); + }, + ); + } - // Rebuild segments with the selection having uniform formatting - List newSegments = []; + void _clearFormatting() { + // Since we removed rich text formatting, this just shows a message + _showSnackBar('No formatting to clear - plain text mode active'); + } - // Add text before selection (preserve existing formatting) - if (selection.start > 0) { - _addTextAsSegments(text.substring(0, selection.start), newSegments); + void _exitApplication() { + if (_isModified) { + _showUnsavedChangesDialog(() => _performExit()); + } else { + _performExit(); } + } + + void _performExit() { + // In a real app, you'd use SystemNavigator.pop() or similar + _showSnackBar('Exit requested - close window manually'); + } + + // Find and Replace functionality + void _showFindDialog() { + showDialog( + context: context, + builder: (context) => AlertDialog( + backgroundColor: _isChaosEnabled ? Colors.red.shade50 : Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + side: BorderSide( + color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade300, + width: 1, + ), + ), + title: Row( + children: [ + Icon( + Icons.search, + color: _isChaosEnabled ? Colors.red.shade600 : Colors.blue, + size: 20, + ), + const SizedBox(width: 8), + Text( + 'Find', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + content: TextField( + controller: _searchController, + decoration: InputDecoration( + hintText: 'Enter text to find...', + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide( + color: _isChaosEnabled + ? Colors.red.shade300 + : Colors.grey.shade300, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide( + color: _isChaosEnabled ? Colors.red.shade500 : Colors.blue, + width: 2, + ), + ), + prefixIcon: Icon( + Icons.search, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, + ), + ), + autofocus: true, + onSubmitted: (_) => _performSearch(), + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text( + 'Cancel', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + ), + ), + ElevatedButton.icon( + icon: const Icon(Icons.search_outlined, size: 16), + label: const Text('Find All'), + style: ElevatedButton.styleFrom( + backgroundColor: _isChaosEnabled ? Colors.red.shade100 : null, + foregroundColor: _isChaosEnabled ? Colors.red.shade700 : null, + ), + onPressed: () { + _performSearch(); + Navigator.pop(context); + }, + ), + ElevatedButton.icon( + icon: const Icon(Icons.arrow_forward, size: 16), + label: const Text('Find Next'), + style: ElevatedButton.styleFrom( + backgroundColor: _isChaosEnabled + ? Colors.red.shade600 + : Colors.blue, + foregroundColor: Colors.white, + ), + onPressed: () { + _performSearch(); + _findNext(); + Navigator.pop(context); + }, + ), + ], + ), + ); + setState(() { + _isSearchVisible = true; + _isReplaceVisible = false; + }); + } - // Add formatted selection as a single segment with uniform formatting - newSegments.add( - TextSegment( - content: selectedText, - isBold: isBold ?? false, - isItalic: isItalic ?? false, - isUnderline: isUnderline ?? false, + void _showReplaceDialog() { + showDialog( + context: context, + builder: (context) => AlertDialog( + backgroundColor: _isChaosEnabled ? Colors.red.shade50 : Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + side: BorderSide( + color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade300, + width: 1, + ), + ), + title: Row( + children: [ + Icon( + Icons.find_replace, + color: _isChaosEnabled ? Colors.red.shade600 : Colors.blue, + size: 20, + ), + const SizedBox(width: 8), + Text( + 'Find and Replace', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + controller: _searchController, + decoration: InputDecoration( + labelText: 'Find', + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide( + color: _isChaosEnabled ? Colors.red.shade500 : Colors.blue, + width: 2, + ), + ), + prefixIcon: Icon( + Icons.search, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, + ), + ), + ), + const SizedBox(height: 16), + TextField( + controller: _replaceController, + decoration: InputDecoration( + labelText: 'Replace with', + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide( + color: _isChaosEnabled ? Colors.red.shade500 : Colors.blue, + width: 2, + ), + ), + prefixIcon: Icon( + Icons.edit, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, + ), + ), + ), + ], + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text( + 'Cancel', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + ), + ), + ElevatedButton.icon( + icon: const Icon(Icons.search_outlined, size: 16), + label: const Text('Find All'), + style: ElevatedButton.styleFrom( + backgroundColor: _isChaosEnabled ? Colors.red.shade100 : null, + foregroundColor: _isChaosEnabled ? Colors.red.shade700 : null, + ), + onPressed: () { + _performSearch(); + Navigator.pop(context); + }, + ), + ElevatedButton.icon( + icon: const Icon(Icons.swap_horiz, size: 16), + label: const Text('Replace'), + style: ElevatedButton.styleFrom( + backgroundColor: _isChaosEnabled + ? Colors.red.shade200 + : Colors.orange, + foregroundColor: _isChaosEnabled + ? Colors.red.shade800 + : Colors.white, + ), + onPressed: () { + _replaceSelected(); + Navigator.pop(context); + }, + ), + ElevatedButton.icon( + icon: const Icon(Icons.swap_vert, size: 16), + label: const Text('Replace All'), + style: ElevatedButton.styleFrom( + backgroundColor: _isChaosEnabled + ? Colors.red.shade600 + : Colors.red, + foregroundColor: Colors.white, + ), + onPressed: () { + _replaceAll(); + Navigator.pop(context); + }, + ), + ], ), ); + setState(() { + _isSearchVisible = true; + _isReplaceVisible = true; + }); + } - // Add text after selection (preserve existing formatting) - if (selection.end < text.length) { - _addTextAsSegments(text.substring(selection.end), newSegments); + void _hideFindReplace() { + setState(() { + _isSearchVisible = false; + _isReplaceVisible = false; + _searchResults.clear(); + _currentSearchIndex = -1; + }); + } + + void _performSearch() { + final text = _controller.text; + final searchTerm = _searchController.text; + + if (searchTerm.isEmpty) { + setState(() { + _searchResults.clear(); + _currentSearchIndex = -1; + }); + return; } - _segments = newSegments; - setState(() {}); + setState(() { + _searchResults.clear(); + _currentSearchIndex = -1; + + // Find all occurrences + int index = 0; + while (index < text.length) { + final foundIndex = text.indexOf(searchTerm, index); + if (foundIndex == -1) break; + _searchResults.add(foundIndex); + index = foundIndex + 1; + } + + if (_searchResults.isNotEmpty) { + _currentSearchIndex = 0; + _highlightSearchResult(); + } + }); } - void _addTextAsSegments(String text, List segments) { - if (text.isNotEmpty) { - // For now, add as plain text segments - // This will be enhanced to preserve existing formatting - segments.add(TextSegment(content: text)); + void _findNext() { + if (_searchResults.isEmpty) { + _performSearch(); + return; } - } - void _handleTextChanged(String newText) { - final selection = _controller.selection; - final oldText = _segments.map((s) => s.content).join(); - - if (newText.length > oldText.length) { - // Text was added - apply current formatting to new text - final insertPosition = - selection.baseOffset - (newText.length - oldText.length); - final insertedText = newText.substring( - insertPosition, - selection.baseOffset, - ); + setState(() { + _currentSearchIndex = (_currentSearchIndex + 1) % _searchResults.length; + _highlightSearchResult(); + }); + } - if (insertedText.isNotEmpty) { - _insertFormattedText(insertedText, insertPosition); - } + void _findPrevious() { + if (_searchResults.isEmpty) { + _performSearch(); + return; } - _updateStats(); + setState(() { + _currentSearchIndex = + (_currentSearchIndex - 1 + _searchResults.length) % + _searchResults.length; + _highlightSearchResult(); + }); } - void _insertFormattedText(String text, int position) { - // Create a new segment for the inserted text with current formatting - final newSegment = TextSegment( - content: text, - isBold: _currentBold, - isItalic: _currentItalic, - isUnderline: false, // Add underline support later if needed + void _highlightSearchResult() { + if (_searchResults.isEmpty || _currentSearchIndex == -1) return; + + final position = _searchResults[_currentSearchIndex]; + final searchTerm = _searchController.text; + + _controller.selection = TextSelection( + baseOffset: position, + extentOffset: position + searchTerm.length, ); + } - // Rebuild segments with the new formatted text - List newSegments = []; - int currentPosition = 0; - - for (var segment in _segments) { - if (currentPosition + segment.content.length <= position) { - // Segment is completely before insertion point - newSegments.add(segment); - currentPosition += segment.content.length; - } else if (currentPosition >= position) { - // Segment is completely after insertion point - if (newSegments.isEmpty || newSegments.last != newSegment) { - newSegments.add(newSegment); - } - newSegments.add(segment); - currentPosition += segment.content.length; - } else { - // Insertion point is within this segment - split it - final beforeText = segment.content.substring( - 0, - position - currentPosition, - ); - final afterText = segment.content.substring(position - currentPosition); - - if (beforeText.isNotEmpty) { - newSegments.add( - TextSegment( - content: beforeText, - isBold: segment.isBold, - isItalic: segment.isItalic, - isUnderline: segment.isUnderline, - ), - ); - } + void _replaceSelected() { + if (_searchResults.isEmpty || _currentSearchIndex == -1) return; + + final text = _controller.text; + final searchTerm = _searchController.text; + final replaceTerm = _replaceController.text; + final position = _searchResults[_currentSearchIndex]; + + final newText = text.replaceRange( + position, + position + searchTerm.length, + replaceTerm, + ); + + setState(() { + _controller.text = newText; + _isModified = true; + }); - newSegments.add(newSegment); + // Refresh search results + _performSearch(); + } + + void _replaceAll() { + final searchTerm = _searchController.text; + final replaceTerm = _replaceController.text; + + if (searchTerm.isEmpty) return; + + final newText = _controller.text.replaceAll(searchTerm, replaceTerm); + + setState(() { + _controller.text = newText; + _isModified = true; + _searchResults.clear(); + _currentSearchIndex = -1; + }); - if (afterText.isNotEmpty) { - newSegments.add( - TextSegment( - content: afterText, - isBold: segment.isBold, - isItalic: segment.isItalic, - isUnderline: segment.isUnderline, + _showSnackBar('Replaced all occurrences'); + } + + void _showUnsavedChangesDialog(VoidCallback onProceed) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Unsaved Changes'), + content: Text('Do you want to save changes to $_currentFileName?'), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + onProceed(); + }, + child: const Text('Don\'t Save'), ), - ); - } + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(); + _saveFile().then((_) => onProceed()); + }, + child: const Text('Save'), + ), + ], + ); + }, + ); + } - currentPosition += segment.content.length; - break; + Future _saveFile() async { + try { + if (_currentFilePath != null) { + // Save to existing file + final file = File(_currentFilePath!); + await file.writeAsString(_controller.text); + setState(() { + _isModified = false; + }); + _showSnackBar('File saved successfully'); + } else { + // Save as new file + await _saveAsFile(); } + } catch (e) { + _showSnackBar('Error saving file: $e'); } + } - _segments = newSegments; - setState(() {}); + Future _saveAsFile() async { + try { + // For now, save to Downloads folder with timestamp + final downloadsPath = Platform.isWindows + ? '${Platform.environment['USERPROFILE']}${Platform.pathSeparator}Downloads' + : '${Platform.environment['HOME']}${Platform.pathSeparator}Downloads'; + + final timestamp = DateTime.now().millisecondsSinceEpoch; + final fileName = _currentFileName == 'Untitled' + ? 'scrampad_$timestamp.txt' + : _currentFileName; + + final filePath = '$downloadsPath${Platform.pathSeparator}$fileName'; + final file = File(filePath); + + await file.writeAsString(_controller.text); + + setState(() { + _currentFilePath = filePath; + _currentFileName = fileName; + _isModified = false; + }); + + _showSnackBar('File saved as $fileName'); + } catch (e) { + _showSnackBar('Error saving file: $e'); + } + } + + void _showSnackBar(String message) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(message), duration: const Duration(seconds: 2)), + ); } void _selectAll() { @@ -366,42 +773,37 @@ class _ModernNotepadPageState extends State { } void _handleSave() { - // Use chaos controller's save handler if chaos is enabled - if (_isChaosEnabled && _chaosController != null) { - _chaosController!.handleSave(); - } else { - // Normal save logic would go here - _handleChaosSave(); - } + // Always use the file save functionality + _saveFile(); } @override Widget build(BuildContext context) { return Shortcuts( shortcuts: { - LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyB): - const BoldIntent(), - LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyI): - const ItalicIntent(), LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyA): const SelectAllIntent(), LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyS): const SaveIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyN): + const NewFileIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyO): + const OpenFileIntent(), + LogicalKeySet( + LogicalKeyboardKey.control, + LogicalKeyboardKey.shift, + LogicalKeyboardKey.keyS, + ): const SaveAsIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyF): + const FindIntent(), + LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyH): + const ReplaceIntent(), + LogicalKeySet(LogicalKeyboardKey.f3): const FindNextIntent(), + LogicalKeySet(LogicalKeyboardKey.shift, LogicalKeyboardKey.f3): + const FindPreviousIntent(), }, child: Actions( actions: >{ - BoldIntent: CallbackAction( - onInvoke: (BoldIntent intent) { - _applyBoldFormatting(); - return null; - }, - ), - ItalicIntent: CallbackAction( - onInvoke: (ItalicIntent intent) { - _applyItalicFormatting(); - return null; - }, - ), SelectAllIntent: CallbackAction( onInvoke: (SelectAllIntent intent) { _selectAll(); @@ -414,6 +816,48 @@ class _ModernNotepadPageState extends State { return null; }, ), + NewFileIntent: CallbackAction( + onInvoke: (NewFileIntent intent) { + _newFile(); + return null; + }, + ), + OpenFileIntent: CallbackAction( + onInvoke: (OpenFileIntent intent) { + _openFile(); + return null; + }, + ), + SaveAsIntent: CallbackAction( + onInvoke: (SaveAsIntent intent) { + _saveAsFile(); + return null; + }, + ), + FindIntent: CallbackAction( + onInvoke: (FindIntent intent) { + _showFindDialog(); + return null; + }, + ), + ReplaceIntent: CallbackAction( + onInvoke: (ReplaceIntent intent) { + _showReplaceDialog(); + return null; + }, + ), + FindNextIntent: CallbackAction( + onInvoke: (FindNextIntent intent) { + _findNext(); + return null; + }, + ), + FindPreviousIntent: CallbackAction( + onInvoke: (FindPreviousIntent intent) { + _findPrevious(); + return null; + }, + ), }, child: Focus( autofocus: true, @@ -441,10 +885,14 @@ class _ModernNotepadPageState extends State { vertical: 4, ), decoration: BoxDecoration( - color: Colors.pink.shade50, + color: _isChaosEnabled + ? Colors.red.shade50 + : Colors.pink.shade50, borderRadius: BorderRadius.circular(8), border: Border.all( - color: Colors.pink.shade100, + color: _isChaosEnabled + ? Colors.red.shade100 + : Colors.pink.shade100, width: 0.8, ), ), @@ -452,7 +900,9 @@ class _ModernNotepadPageState extends State { mainAxisSize: MainAxisSize.min, children: [ Text( - 'Untitled', + _isModified + ? '$_currentFileName*' + : _currentFileName, style: TextStyle( fontSize: 10, fontWeight: FontWeight.w500, @@ -474,16 +924,27 @@ class _ModernNotepadPageState extends State { margin: const EdgeInsets.only(left: 3), decoration: BoxDecoration( border: Border.all( - color: Colors.pink.shade100, + color: _isChaosEnabled + ? Colors.red.shade100 + : Colors.pink.shade100, width: 0.8, ), borderRadius: BorderRadius.circular(6), - color: Colors.pink.shade50, + color: _isChaosEnabled + ? Colors.red.shade50 + : Colors.pink.shade50, ), - child: Icon( - Icons.add, - size: 12, - color: Colors.grey.shade400, + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: _newFile, + borderRadius: BorderRadius.circular(6), + child: Icon( + Icons.add, + size: 12, + color: Colors.grey.shade400, + ), + ), ), ), const Spacer(), // Push settings icon to the right @@ -518,10 +979,22 @@ class _ModernNotepadPageState extends State { vertical: 8, ), decoration: BoxDecoration( - color: Colors.white, + color: _isChaosEnabled + ? Colors.red.shade50.withOpacity(0.3) + : Colors.white, + border: Border( + bottom: BorderSide( + color: _isChaosEnabled + ? Colors.red.shade100 + : const Color(0xFFE0E0E0), + width: 0.5, + ), + ), boxShadow: [ BoxShadow( - color: Colors.black.withValues(alpha: 0.05), + color: (_isChaosEnabled + ? Colors.red.withOpacity(0.08) + : Colors.black.withOpacity(0.05)), blurRadius: 4, offset: const Offset(0, 2), ), @@ -529,8 +1002,335 @@ class _ModernNotepadPageState extends State { ), child: Row( children: [ - _buildMenuButton('File'), - _buildMenuButton('Edit'), + // File menu + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: _isChaosEnabled + ? Colors.red.shade50.withOpacity(0.5) + : Colors.transparent, + border: _isChaosEnabled + ? Border.all( + color: Colors.red.shade100, + width: 0.5, + ) + : null, + ), + child: Theme( + data: Theme.of(context).copyWith( + popupMenuTheme: PopupMenuThemeData( + color: _isChaosEnabled ? Colors.red.shade50 : Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: BorderSide( + color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade300, + width: 1, + ), + ), + ), + ), + child: PopupMenuButton( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.folder_outlined, + size: 12, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, + ), + const SizedBox(width: 4), + Text( + 'File', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w500, + color: _isChaosEnabled + ? Colors.red.shade600 + : Colors.grey.shade600, + ), + ), + ], + ), + ), + onSelected: (value) { + switch (value) { + case 'new': + _newFile(); + break; + case 'open': + _openFile(); + break; + case 'save': + _handleSave(); + break; + case 'save_as': + _saveAsFile(); + break; + case 'exit': + _exitApplication(); + break; + } + }, + itemBuilder: (context) => [ + PopupMenuItem( + value: 'new', + child: Row( + children: [ + Icon( + Icons.note_add, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'New (Ctrl+N)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + PopupMenuItem( + value: 'open', + child: Row( + children: [ + Icon( + Icons.folder_open, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Open (Ctrl+O)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + const PopupMenuDivider(), + PopupMenuItem( + value: 'save', + child: Row( + children: [ + Icon( + Icons.save, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Save (Ctrl+S)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + PopupMenuItem( + value: 'save_as', + child: Row( + children: [ + Icon( + Icons.save_as, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Save As (Ctrl+Shift+S)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + const PopupMenuDivider(), + PopupMenuItem( + value: 'exit', + child: Row( + children: [ + Icon( + Icons.exit_to_app, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Exit', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + ], + ), + ), + // Edit menu + Container( + margin: const EdgeInsets.only(left: 4), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: _isChaosEnabled + ? Colors.red.shade50.withOpacity(0.5) + : Colors.transparent, + border: _isChaosEnabled + ? Border.all( + color: Colors.red.shade100, + width: 0.5, + ) + : null, + ), + child: PopupMenuButton( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.edit_outlined, + size: 12, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, + ), + const SizedBox(width: 4), + Text( + 'Edit', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w500, + color: _isChaosEnabled + ? Colors.red.shade600 + : Colors.grey.shade600, + ), + ), + ], + ), + ), + onSelected: (value) { + switch (value) { + case 'select_all': + _selectAll(); + break; + case 'find': + _showFindDialog(); + break; + case 'replace': + _showReplaceDialog(); + break; + case 'clear': + _clearFormatting(); + break; + } + }, + itemBuilder: (context) => [ + PopupMenuItem( + value: 'select_all', + child: Row( + children: [ + Icon( + Icons.select_all, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Select All (Ctrl+A)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + const PopupMenuDivider(), + PopupMenuItem( + value: 'find', + child: Row( + children: [ + Icon( + Icons.search, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Find (Ctrl+F)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + PopupMenuItem( + value: 'replace', + child: Row( + children: [ + Icon( + Icons.find_replace, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Replace (Ctrl+H)', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + const PopupMenuDivider(), + PopupMenuItem( + value: 'clear', + child: Row( + children: [ + Icon( + Icons.clear_all, + size: 16, + color: _isChaosEnabled ? Colors.red.shade600 : null, + ), + const SizedBox(width: 8), + Text( + 'Clear Formatting', + style: TextStyle( + color: _isChaosEnabled ? Colors.red.shade700 : null, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), + ), + ], + ), + ), + ], + ), + ), _buildMenuButton('View'), const SizedBox(width: 12), _buildDropdown(_currentHeading, [ @@ -542,16 +1342,6 @@ class _ModernNotepadPageState extends State { const SizedBox(width: 6), _buildDropdown('•', ['•', '1.', '→']), const SizedBox(width: 12), - _buildFormatButton(Icons.format_bold, _currentBold, () { - _applyBoldFormatting(); - }), - _buildFormatButton( - Icons.format_italic, - _currentItalic, - () { - _applyItalicFormatting(); - }, - ), _buildFormatButton(Icons.link, false, () {}), const SizedBox(width: 6), Container( @@ -561,18 +1351,24 @@ class _ModernNotepadPageState extends State { ), decoration: BoxDecoration( border: Border.all( - color: Colors.grey.shade200, + color: _isChaosEnabled + ? Colors.red.shade200 + : Colors.grey.shade200, width: 0.8, ), borderRadius: BorderRadius.circular(6), - color: Colors.grey.shade50, + color: _isChaosEnabled + ? Colors.red.shade50.withOpacity(0.7) + : Colors.grey.shade50, ), child: Text( 'Aa', style: TextStyle( fontSize: 10, fontWeight: FontWeight.w600, - color: Colors.grey.shade500, + color: _isChaosEnabled + ? Colors.red.shade600 + : Colors.grey.shade500, ), ), ), @@ -584,7 +1380,7 @@ class _ModernNotepadPageState extends State { Expanded( child: Container( color: Colors.white, - child: _buildRichTextField(), + child: _buildTextField(), ), ), @@ -680,43 +1476,132 @@ class _ModernNotepadPageState extends State { } Widget _buildMenuButton(String text) { - return Padding( - padding: const EdgeInsets.only(right: 12), + return Container( + margin: const EdgeInsets.only(right: 12), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: _isChaosEnabled + ? Colors.red.shade50.withOpacity(0.5) + : Colors.transparent, + border: _isChaosEnabled + ? Border.all(color: Colors.red.shade100, width: 0.5) + : null, + ), child: InkWell( - onTap: () {}, + onTap: text == 'File' ? _showFileMenu : () {}, borderRadius: BorderRadius.circular(6), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), - child: Text( - text, - style: TextStyle( - fontSize: 11, - color: Colors.grey.shade600, - fontWeight: FontWeight.w400, - ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + text == 'View' ? Icons.visibility_outlined : Icons.more_horiz, + size: 12, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, + ), + const SizedBox(width: 4), + Text( + text, + style: TextStyle( + fontSize: 11, + color: _isChaosEnabled + ? Colors.red.shade600 + : Colors.grey.shade600, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.w400, + ), + ), + ], ), ), ), ); } + void _showFileMenu() { + // Show a simple file menu + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('File'), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ListTile( + leading: const Icon(Icons.add), + title: const Text('New'), + onTap: () { + Navigator.of(context).pop(); + _newFile(); + }, + ), + ListTile( + leading: const Icon(Icons.save), + title: const Text('Save'), + onTap: () { + Navigator.of(context).pop(); + _saveFile(); + }, + ), + ListTile( + leading: const Icon(Icons.save_as), + title: const Text('Save As'), + onTap: () { + Navigator.of(context).pop(); + _saveAsFile(); + }, + ), + ], + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Close'), + ), + ], + ); + }, + ); + } + Widget _buildDropdown(String value, List items) { return Container( padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade200, width: 0.8), + border: Border.all( + color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade200, + width: 0.8, + ), borderRadius: BorderRadius.circular(6), - color: Colors.grey.shade50, + color: _isChaosEnabled + ? Colors.red.shade50.withOpacity(0.7) + : Colors.grey.shade50, ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Text( value, - style: TextStyle(fontSize: 11, color: Colors.grey.shade600), + style: TextStyle( + fontSize: 11, + color: _isChaosEnabled + ? Colors.red.shade600 + : Colors.grey.shade600, + fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + ), ), const SizedBox(width: 3), - Icon(Icons.arrow_drop_down, size: 14, color: Colors.grey.shade400), + Icon( + Icons.arrow_drop_down, + size: 14, + color: _isChaosEnabled ? Colors.red.shade400 : Colors.grey.shade400, + ), ], ), ); @@ -728,9 +1613,13 @@ class _ModernNotepadPageState extends State { height: 22, margin: const EdgeInsets.only(right: 3), decoration: BoxDecoration( - color: isActive ? Colors.pink.shade50 : Colors.transparent, + color: isActive + ? (_isChaosEnabled ? Colors.red.shade100 : Colors.pink.shade50) + : Colors.transparent, border: Border.all( - color: isActive ? Colors.pink.shade200 : Colors.grey.shade200, + color: isActive + ? (_isChaosEnabled ? Colors.red.shade300 : Colors.pink.shade200) + : (_isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade200), width: 0.8, ), borderRadius: BorderRadius.circular(6), @@ -743,64 +1632,55 @@ class _ModernNotepadPageState extends State { child: Icon( icon, size: 12, - color: isActive ? Colors.pink.shade400 : Colors.grey.shade500, + color: isActive + ? (_isChaosEnabled ? Colors.red.shade600 : Colors.pink.shade400) + : (_isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade500), ), ), ), ); } - Widget _buildRichTextField() { - // Build TextSpans from segments for rich text display - List textSpans = []; - - for (var segment in _segments) { - if (segment.content.isNotEmpty) { - textSpans.add( - TextSpan( - text: segment.content, - style: TextStyle( - fontSize: 14, - fontFamily: 'Segoe UI', - color: Colors.black, - height: 1.4, - fontWeight: segment.isBold ? FontWeight.w600 : FontWeight.w400, - fontStyle: segment.isItalic ? FontStyle.italic : FontStyle.normal, - decoration: segment.isUnderline - ? TextDecoration.underline - : TextDecoration.none, - ), - ), - ); - } - } - - // For now, use simple TextField approach that shows current formatting - // This avoids cursor alignment issues while we build the core functionality - return TextField( - controller: _controller, - focusNode: _focusNode, - maxLines: null, - expands: true, - onChanged: _handleTextChanged, - style: TextStyle( - fontSize: 14, - fontFamily: 'Segoe UI', - color: Colors.black, - height: 1.4, - // New text will use current formatting mode - fontWeight: _currentBold ? FontWeight.w600 : FontWeight.w400, - fontStyle: _currentItalic ? FontStyle.italic : FontStyle.normal, - ), - decoration: const InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.all(16), - hintText: '', + Widget _buildTextField() { + return Container( + decoration: _isChaosEnabled + ? BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [Colors.white, Colors.red.shade50.withOpacity(0.1)], + ), + ) + : null, + child: TextField( + controller: _controller, + focusNode: _focusNode, + maxLines: null, + expands: true, + onChanged: _handleTextChanged, + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: _isChaosEnabled ? Colors.red.shade900 : Colors.black, + height: 1.4, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + decoration: const InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(16), + hintText: '', + ), + textAlign: TextAlign.start, + textAlignVertical: TextAlignVertical.top, + cursorColor: _isChaosEnabled ? Colors.red.shade600 : Colors.black, + cursorWidth: _isChaosEnabled ? 2.0 : 1.0, + selectionControls: _isChaosEnabled + ? MaterialTextSelectionControls() + : null, ), - textAlign: TextAlign.start, - textAlignVertical: TextAlignVertical.top, - cursorColor: Colors.black, - cursorWidth: 1.0, ); } } From b2fdde3f64886a7cc4a05d4bbfbb2782c8c99394 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 22:32:14 +0530 Subject: [PATCH 10/27] cooking ui --- README.md | 37 +-- lib/main.dart | 836 ++++++++++++++++++++++++++------------------------ 2 files changed, 444 insertions(+), 429 deletions(-) diff --git a/README.md b/README.md index 6b381ffbc..2a99470df 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,25 @@ frame (3) -# [Project Name] 🎯 +# SCAMPAD 🎯 ## Basic Details -### Team Name: [ScramPad] +### Team Name: Vanguard ### Team Members -- Team Lead: [Jeffin Basil] - [SCMS SCHOOL OF ENGINEERING & TECHNOLOGY] -- Member 2: [Adithya Manghat] - [SCMS SCHOOL OF ENGINEERING & TECHNOLOGY] +- Team Lead: Jeffin Basil - SCMS SCHOOL OF ENGINEERING & TECHNOLOGY +- Member 2: Adithya Manghat - SCMS SCHOOL OF ENGINEERING & TECHNOLOGY ### Project Description -["ScramPad" could be envisioned as a notepad application that looks normal but gradually scrambles, distorts, or modifies saved notes subtly over time] +"ScamPad" could be envisioned as a notepad application that looks normal but gradually scrambles, distorts, or modifies saved notes subtly over time ### The Problem (that doesn't exist) -[Notepad app are convenient and useful for most cases.] +Notepad app are convenient and useful for most cases. ### The Solution (that nobody asked for) -[It will be more inconvenient to use.] +It will be more inconvenient to use. ## Technical Details ### Technologies/Components Used @@ -29,10 +29,7 @@ For Software: - [Libraries used] - [Tools used] -For Hardware: -- [List main components] -- [List specifications] -- [List tools required] + ### Implementation For Software: @@ -59,24 +56,6 @@ For Software: ![Workflow](Add your workflow/architecture diagram here) *Add caption explaining your workflow* -For Hardware: - -# Schematic & Circuit -![Circuit](Add your circuit diagram here) -*Add caption explaining connections* - -![Schematic](Add your schematic diagram here) -*Add caption explaining the schematic* - -# Build Photos -![Components](Add photo of your components here) -*List out all components shown* - -![Build](Add photos of build process here) -*Explain the build steps* - -![Final](Add photo of final product here) -*Explain the final build* ### Project Demo # Video diff --git a/lib/main.dart b/lib/main.dart index de82259a0..fdf434c93 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,18 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:io'; -import 'chaos/chaos_controller.dart'; -import 'screens/chaos_settings_screen.dart'; // Intent classes for keyboard shortcuts class SelectAllIntent extends Intent { const SelectAllIntent(); } -class ChaosToggleIntent extends Intent { - const ChaosToggleIntent(); -} - class SaveIntent extends Intent { const SaveIntent(); } @@ -45,6 +39,14 @@ class FindPreviousIntent extends Intent { const FindPreviousIntent(); } +class GoToIntent extends Intent { + const GoToIntent(); +} + +class InsertDateTimeIntent extends Intent { + const InsertDateTimeIntent(); +} + void main() { runApp(const MyApp()); } @@ -55,20 +57,16 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'ScramPad', + title: 'Notepad', debugShowCheckedModeBanner: false, theme: ThemeData( brightness: Brightness.light, colorScheme: const ColorScheme.light( primary: Colors.blue, - surface: Color(0xFFFAFAFA), + surface: Colors.white, ), scaffoldBackgroundColor: Colors.white, - appBarTheme: const AppBarTheme( - backgroundColor: Colors.white, - elevation: 0, - systemOverlayStyle: SystemUiOverlayStyle.light, - ), + fontFamily: 'Segoe UI', ), home: const ModernNotepadPage(), ); @@ -85,98 +83,44 @@ class ModernNotepadPage extends StatefulWidget { class _ModernNotepadPageState extends State { final TextEditingController _controller = TextEditingController(); final FocusNode _focusNode = FocusNode(); + final TextEditingController _searchController = TextEditingController(); + final TextEditingController _replaceController = TextEditingController(); // File handling - String _currentFileName = 'Untitled'; + String _currentFileName = 'Untitled.txt'; String? _currentFilePath; bool _isModified = false; // Find/Replace functionality - String _searchTerm = ''; - String _replaceTerm = ''; int _currentSearchIndex = -1; List _searchResults = []; - bool _isSearchVisible = false; - bool _isReplaceVisible = false; - final TextEditingController _searchController = TextEditingController(); - final TextEditingController _replaceController = TextEditingController(); - // Chaos system - permanently active - ChaosController? _chaosController; - bool _isChaosEnabled = true; // Always enabled - bool _isChaosPulseActive = false; + // Text formatting state + bool _isBold = false; + bool _isItalic = false; + bool _isUnderline = false; + String _currentStyle = 'H1'; - final String _currentHeading = 'Normal'; + // Status bar int _characterCount = 0; int _lineNumber = 1; - int _columnNumber = 1; + int _columnNumber = 30; @override void initState() { super.initState(); _controller.addListener(_updateStats); - - // Initialize chaos controller - _initializeChaosController(); - } - - void _initializeChaosController() { - _chaosController = ChaosController( - textController: _controller, - onTextChanged: _handleChaosTextChange, - onSelectionChanged: _handleChaosSelectionChange, - onSave: _handleChaosSave, - ); - // Start chaos immediately - it's permanently active - _chaosController?.startChaos(); - } - - void _handleChaosTextChange(String newText) { - // Update when chaos modifies text - _updateStats(); - } - - void _handleChaosSelectionChange(TextSelection selection) { - // Handle selection changes from chaos - setState(() {}); - } - - void _handleChaosSave() { - // Handle save action (could trigger file save dialog) - // For now, just update stats - _updateStats(); - } - - void _toggleChaos(bool enabled) { - // Chaos mode is permanently active - this function does nothing - // but we keep it for settings screen compatibility - // setState(() { - // _isChaosEnabled = enabled; - // }); - - // Chaos always remains active - // if (enabled) { - // _chaosController?.startChaos(); - // } else { - // _chaosController?.stopChaos(); - // } - } - - void _openSettings() { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => ChaosSettingsScreen( - isChaosEnabled: _isChaosEnabled, - onChaosToggle: _toggleChaos, - ), - ), - ); + + // Set initial cursor position to column 30 + WidgetsBinding.instance.addPostFrameCallback((_) { + _controller.text = ''; + _controller.selection = const TextSelection.collapsed(offset: 0); + _focusNode.requestFocus(); + }); } @override void dispose() { - _chaosController?.dispose(); _controller.removeListener(_updateStats); _controller.dispose(); _focusNode.dispose(); @@ -195,6 +139,8 @@ class _ModernNotepadPageState extends State { final beforeCursor = text.substring(0, selection.baseOffset); _lineNumber = '\n'.allMatches(beforeCursor).length + 1; _columnNumber = beforeCursor.split('\n').last.length + 1; + } else { + _columnNumber = 30; } }); } @@ -218,7 +164,7 @@ class _ModernNotepadPageState extends State { void _createNewFile() { setState(() { _controller.text = ''; - _currentFileName = 'Untitled'; + _currentFileName = 'Untitled.txt'; _currentFilePath = null; _isModified = false; }); @@ -234,13 +180,10 @@ class _ModernNotepadPageState extends State { Future _performOpenFile() async { try { - // Simple file picker using system dialog (basic implementation) - // For a more robust solution, you'd use the file_picker package final downloadsPath = Platform.isWindows ? '${Platform.environment['USERPROFILE']}${Platform.pathSeparator}Downloads' : '${Platform.environment['HOME']}${Platform.pathSeparator}Downloads'; - // For demo purposes, we'll show a dialog asking for filename final fileName = await _showFileNameDialog( 'Open File', 'Enter filename to open from Downloads:', @@ -295,8 +238,7 @@ class _ModernNotepadPageState extends State { } void _clearFormatting() { - // Since we removed rich text formatting, this just shows a message - _showSnackBar('No formatting to clear - plain text mode active'); + _showSnackBar('Formatting cleared'); } void _exitApplication() { @@ -308,35 +250,89 @@ class _ModernNotepadPageState extends State { } void _performExit() { - // In a real app, you'd use SystemNavigator.pop() or similar _showSnackBar('Exit requested - close window manually'); } + void _goToLine() { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Go to Line'), + content: TextField( + decoration: const InputDecoration(hintText: 'Enter line number'), + keyboardType: TextInputType.number, + onSubmitted: (value) { + final lineNum = int.tryParse(value); + if (lineNum != null && lineNum > 0) { + _jumpToLine(lineNum); + } + Navigator.pop(context); + }, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Cancel'), + ), + ], + ), + ); + } + + void _jumpToLine(int lineNumber) { + final text = _controller.text; + final lines = text.split('\n'); + + if (lineNumber <= lines.length) { + int position = 0; + for (int i = 0; i < lineNumber - 1; i++) { + position += lines[i].length + 1; // +1 for newline character + } + _controller.selection = TextSelection.collapsed(offset: position); + } + } + + void _insertDateTime() { + final now = DateTime.now(); + final dateTime = '${now.day}/${now.month}/${now.year} ${now.hour}:${now.minute.toString().padLeft(2, '0')}'; + + final selection = _controller.selection; + final text = _controller.text; + final newText = text.replaceRange(selection.start, selection.end, dateTime); + + setState(() { + _controller.text = newText; + _controller.selection = TextSelection.collapsed( + offset: selection.start + dateTime.length, + ); + _isModified = true; + }); + } + // Find and Replace functionality void _showFindDialog() { showDialog( context: context, builder: (context) => AlertDialog( - backgroundColor: _isChaosEnabled ? Colors.red.shade50 : Colors.white, + backgroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), side: BorderSide( - color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade300, + color: Colors.grey.shade300, width: 1, ), ), - title: Row( + title: const Row( children: [ Icon( Icons.search, - color: _isChaosEnabled ? Colors.red.shade600 : Colors.blue, + color: Colors.blue, size: 20, ), - const SizedBox(width: 8), + SizedBox(width: 8), Text( 'Find', style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, fontWeight: FontWeight.w600, ), ), @@ -349,23 +345,19 @@ class _ModernNotepadPageState extends State { border: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: BorderSide( - color: _isChaosEnabled - ? Colors.red.shade300 - : Colors.grey.shade300, + color: Colors.grey.shade300, ), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: BorderSide( - color: _isChaosEnabled ? Colors.red.shade500 : Colors.blue, + borderSide: const BorderSide( + color: Colors.blue, width: 2, ), ), prefixIcon: Icon( Icons.search, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, + color: Colors.grey.shade600, ), ), autofocus: true, @@ -374,20 +366,11 @@ class _ModernNotepadPageState extends State { actions: [ TextButton( onPressed: () => Navigator.pop(context), - child: Text( - 'Cancel', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - ), + child: const Text('Cancel'), ), ElevatedButton.icon( icon: const Icon(Icons.search_outlined, size: 16), label: const Text('Find All'), - style: ElevatedButton.styleFrom( - backgroundColor: _isChaosEnabled ? Colors.red.shade100 : null, - foregroundColor: _isChaosEnabled ? Colors.red.shade700 : null, - ), onPressed: () { _performSearch(); Navigator.pop(context); @@ -397,9 +380,7 @@ class _ModernNotepadPageState extends State { icon: const Icon(Icons.arrow_forward, size: 16), label: const Text('Find Next'), style: ElevatedButton.styleFrom( - backgroundColor: _isChaosEnabled - ? Colors.red.shade600 - : Colors.blue, + backgroundColor: Colors.blue, foregroundColor: Colors.white, ), onPressed: () { @@ -411,36 +392,31 @@ class _ModernNotepadPageState extends State { ], ), ); - setState(() { - _isSearchVisible = true; - _isReplaceVisible = false; - }); } void _showReplaceDialog() { showDialog( context: context, builder: (context) => AlertDialog( - backgroundColor: _isChaosEnabled ? Colors.red.shade50 : Colors.white, + backgroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), side: BorderSide( - color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade300, + color: Colors.grey.shade300, width: 1, ), ), - title: Row( + title: const Row( children: [ Icon( Icons.find_replace, - color: _isChaosEnabled ? Colors.red.shade600 : Colors.blue, + color: Colors.blue, size: 20, ), - const SizedBox(width: 8), + SizedBox(width: 8), Text( 'Find and Replace', style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, fontWeight: FontWeight.w600, ), ), @@ -458,16 +434,14 @@ class _ModernNotepadPageState extends State { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: BorderSide( - color: _isChaosEnabled ? Colors.red.shade500 : Colors.blue, + borderSide: const BorderSide( + color: Colors.blue, width: 2, ), ), prefixIcon: Icon( Icons.search, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, + color: Colors.grey.shade600, ), ), ), @@ -481,16 +455,14 @@ class _ModernNotepadPageState extends State { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: BorderSide( - color: _isChaosEnabled ? Colors.red.shade500 : Colors.blue, + borderSide: const BorderSide( + color: Colors.blue, width: 2, ), ), prefixIcon: Icon( Icons.edit, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, + color: Colors.grey.shade600, ), ), ), @@ -499,20 +471,11 @@ class _ModernNotepadPageState extends State { actions: [ TextButton( onPressed: () => Navigator.pop(context), - child: Text( - 'Cancel', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - ), + child: const Text('Cancel'), ), ElevatedButton.icon( icon: const Icon(Icons.search_outlined, size: 16), label: const Text('Find All'), - style: ElevatedButton.styleFrom( - backgroundColor: _isChaosEnabled ? Colors.red.shade100 : null, - foregroundColor: _isChaosEnabled ? Colors.red.shade700 : null, - ), onPressed: () { _performSearch(); Navigator.pop(context); @@ -522,12 +485,8 @@ class _ModernNotepadPageState extends State { icon: const Icon(Icons.swap_horiz, size: 16), label: const Text('Replace'), style: ElevatedButton.styleFrom( - backgroundColor: _isChaosEnabled - ? Colors.red.shade200 - : Colors.orange, - foregroundColor: _isChaosEnabled - ? Colors.red.shade800 - : Colors.white, + backgroundColor: Colors.orange, + foregroundColor: Colors.white, ), onPressed: () { _replaceSelected(); @@ -538,9 +497,7 @@ class _ModernNotepadPageState extends State { icon: const Icon(Icons.swap_vert, size: 16), label: const Text('Replace All'), style: ElevatedButton.styleFrom( - backgroundColor: _isChaosEnabled - ? Colors.red.shade600 - : Colors.red, + backgroundColor: Colors.red, foregroundColor: Colors.white, ), onPressed: () { @@ -551,19 +508,6 @@ class _ModernNotepadPageState extends State { ], ), ); - setState(() { - _isSearchVisible = true; - _isReplaceVisible = true; - }); - } - - void _hideFindReplace() { - setState(() { - _isSearchVisible = false; - _isReplaceVisible = false; - _searchResults.clear(); - _currentSearchIndex = -1; - }); } void _performSearch() { @@ -714,7 +658,6 @@ class _ModernNotepadPageState extends State { Future _saveFile() async { try { if (_currentFilePath != null) { - // Save to existing file final file = File(_currentFilePath!); await file.writeAsString(_controller.text); setState(() { @@ -722,7 +665,6 @@ class _ModernNotepadPageState extends State { }); _showSnackBar('File saved successfully'); } else { - // Save as new file await _saveAsFile(); } } catch (e) { @@ -732,14 +674,13 @@ class _ModernNotepadPageState extends State { Future _saveAsFile() async { try { - // For now, save to Downloads folder with timestamp final downloadsPath = Platform.isWindows ? '${Platform.environment['USERPROFILE']}${Platform.pathSeparator}Downloads' : '${Platform.environment['HOME']}${Platform.pathSeparator}Downloads'; final timestamp = DateTime.now().millisecondsSinceEpoch; - final fileName = _currentFileName == 'Untitled' - ? 'scrampad_$timestamp.txt' + final fileName = _currentFileName == 'Untitled.txt' + ? 'notepad_$timestamp.txt' : _currentFileName; final filePath = '$downloadsPath${Platform.pathSeparator}$fileName'; @@ -773,10 +714,28 @@ class _ModernNotepadPageState extends State { } void _handleSave() { - // Always use the file save functionality _saveFile(); } + // Text formatting methods + void _toggleBold() { + setState(() { + _isBold = !_isBold; + }); + } + + void _toggleItalic() { + setState(() { + _isItalic = !_isItalic; + }); + } + + void _toggleUnderline() { + setState(() { + _isUnderline = !_isUnderline; + }); + } + @override Widget build(BuildContext context) { return Shortcuts( @@ -1019,11 +978,15 @@ class _ModernNotepadPageState extends State { child: Theme( data: Theme.of(context).copyWith( popupMenuTheme: PopupMenuThemeData( - color: _isChaosEnabled ? Colors.red.shade50 : Colors.white, + color: _isChaosEnabled + ? Colors.red.shade50 + : Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), side: BorderSide( - color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade300, + color: _isChaosEnabled + ? Colors.red.shade200 + : Colors.grey.shade300, width: 1, ), ), @@ -1059,129 +1022,160 @@ class _ModernNotepadPageState extends State { ], ), ), - onSelected: (value) { - switch (value) { - case 'new': - _newFile(); - break; - case 'open': - _openFile(); - break; - case 'save': - _handleSave(); - break; - case 'save_as': - _saveAsFile(); - break; - case 'exit': - _exitApplication(); - break; - } - }, - itemBuilder: (context) => [ - PopupMenuItem( - value: 'new', - child: Row( - children: [ - Icon( - Icons.note_add, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'New (Ctrl+N)', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + onSelected: (value) { + switch (value) { + case 'new': + _newFile(); + break; + case 'open': + _openFile(); + break; + case 'save': + _handleSave(); + break; + case 'save_as': + _saveAsFile(); + break; + case 'exit': + _exitApplication(); + break; + } + }, + itemBuilder: (context) => [ + PopupMenuItem( + value: 'new', + child: Row( + children: [ + Icon( + Icons.note_add, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'New (Ctrl+N)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - PopupMenuItem( - value: 'open', - child: Row( - children: [ - Icon( - Icons.folder_open, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Open (Ctrl+O)', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + PopupMenuItem( + value: 'open', + child: Row( + children: [ + Icon( + Icons.folder_open, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Open (Ctrl+O)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - const PopupMenuDivider(), - PopupMenuItem( - value: 'save', - child: Row( - children: [ - Icon( - Icons.save, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Save (Ctrl+S)', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + const PopupMenuDivider(), + PopupMenuItem( + value: 'save', + child: Row( + children: [ + Icon( + Icons.save, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Save (Ctrl+S)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - PopupMenuItem( - value: 'save_as', - child: Row( - children: [ - Icon( - Icons.save_as, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Save As (Ctrl+Shift+S)', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + PopupMenuItem( + value: 'save_as', + child: Row( + children: [ + Icon( + Icons.save_as, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Save As (Ctrl+Shift+S)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - const PopupMenuDivider(), - PopupMenuItem( - value: 'exit', - child: Row( - children: [ - Icon( - Icons.exit_to_app, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Exit', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + const PopupMenuDivider(), + PopupMenuItem( + value: 'exit', + child: Row( + children: [ + Icon( + Icons.exit_to_app, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Exit', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - ], + ], + ), ), ), // Edit menu @@ -1199,136 +1193,178 @@ class _ModernNotepadPageState extends State { ) : null, ), - child: PopupMenuButton( - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.edit_outlined, - size: 12, + child: Theme( + data: Theme.of(context).copyWith( + popupMenuTheme: PopupMenuThemeData( + color: _isChaosEnabled + ? Colors.red.shade50 + : Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: BorderSide( color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, - ), - const SizedBox(width: 4), - Text( - 'Edit', - style: TextStyle( - fontSize: 11, - fontWeight: FontWeight.w500, - color: _isChaosEnabled - ? Colors.red.shade600 - : Colors.grey.shade600, - ), + ? Colors.red.shade200 + : Colors.grey.shade300, + width: 1, ), - ], + ), ), ), - onSelected: (value) { - switch (value) { - case 'select_all': - _selectAll(); - break; - case 'find': - _showFindDialog(); - break; - case 'replace': - _showReplaceDialog(); - break; - case 'clear': - _clearFormatting(); - break; - } - }, - itemBuilder: (context) => [ - PopupMenuItem( - value: 'select_all', + child: PopupMenuButton( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), child: Row( + mainAxisSize: MainAxisSize.min, children: [ Icon( - Icons.select_all, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, + Icons.edit_outlined, + size: 12, + color: _isChaosEnabled + ? Colors.red.shade400 + : Colors.grey.shade600, ), - const SizedBox(width: 8), + const SizedBox(width: 4), Text( - 'Select All (Ctrl+A)', + 'Edit', style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + fontSize: 11, + fontWeight: FontWeight.w500, + color: _isChaosEnabled + ? Colors.red.shade600 + : Colors.grey.shade600, ), ), ], ), ), - const PopupMenuDivider(), - PopupMenuItem( - value: 'find', - child: Row( - children: [ - Icon( - Icons.search, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Find (Ctrl+F)', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + onSelected: (value) { + switch (value) { + case 'select_all': + _selectAll(); + break; + case 'find': + _showFindDialog(); + break; + case 'replace': + _showReplaceDialog(); + break; + case 'clear': + _clearFormatting(); + break; + } + }, + itemBuilder: (context) => [ + PopupMenuItem( + value: 'select_all', + child: Row( + children: [ + Icon( + Icons.select_all, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Select All (Ctrl+A)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - PopupMenuItem( - value: 'replace', - child: Row( - children: [ - Icon( - Icons.find_replace, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Replace (Ctrl+H)', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + const PopupMenuDivider(), + PopupMenuItem( + value: 'find', + child: Row( + children: [ + Icon( + Icons.search, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Find (Ctrl+F)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - const PopupMenuDivider(), - PopupMenuItem( - value: 'clear', - child: Row( - children: [ - Icon( - Icons.clear_all, - size: 16, - color: _isChaosEnabled ? Colors.red.shade600 : null, - ), - const SizedBox(width: 8), - Text( - 'Clear Formatting', - style: TextStyle( - color: _isChaosEnabled ? Colors.red.shade700 : null, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, + PopupMenuItem( + value: 'replace', + child: Row( + children: [ + Icon( + Icons.find_replace, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, ), - ), - ], + const SizedBox(width: 8), + Text( + 'Replace (Ctrl+H)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), ), - ), - ], + const PopupMenuDivider(), + PopupMenuItem( + value: 'clear', + child: Row( + children: [ + Icon( + Icons.clear_all, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, + ), + const SizedBox(width: 8), + Text( + 'Clear Formatting', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), + ), + ], + ), ), ), _buildMenuButton('View'), From 6229e2fc8acff14415fec797f108e1e898660468 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 22:41:48 +0530 Subject: [PATCH 11/27] ui enhanxeemnts --- lib/main.dart | 405 +++++++++++++++++++++++++------------------------- 1 file changed, 205 insertions(+), 200 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index fdf434c93..a00f570c0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -99,18 +99,24 @@ class _ModernNotepadPageState extends State { bool _isBold = false; bool _isItalic = false; bool _isUnderline = false; - String _currentStyle = 'H1'; + String _currentStyle = 'Normal'; + + // Chaos mode state + bool _isChaosEnabled = false; // Status bar - int _characterCount = 0; int _lineNumber = 1; int _columnNumber = 30; + int _currentLine = 0; + int _currentColumn = 0; + int _wordCount = 0; + int _charCount = 0; @override void initState() { super.initState(); _controller.addListener(_updateStats); - + // Set initial cursor position to column 30 WidgetsBinding.instance.addPostFrameCallback((_) { _controller.text = ''; @@ -134,13 +140,24 @@ class _ModernNotepadPageState extends State { final selection = _controller.selection; setState(() { - _characterCount = text.length; + _charCount = text.length; + + // Calculate word count + _wordCount = text.trim().isEmpty + ? 0 + : text.trim().split(RegExp(r'\s+')).length; + if (selection.isValid) { final beforeCursor = text.substring(0, selection.baseOffset); _lineNumber = '\n'.allMatches(beforeCursor).length + 1; _columnNumber = beforeCursor.split('\n').last.length + 1; + + // Update current line/column for status bar + _currentLine = _lineNumber - 1; // 0-indexed + _currentColumn = _columnNumber - 1; // 0-indexed } else { _columnNumber = 30; + _currentColumn = 30; } }); } @@ -282,7 +299,7 @@ class _ModernNotepadPageState extends State { void _jumpToLine(int lineNumber) { final text = _controller.text; final lines = text.split('\n'); - + if (lineNumber <= lines.length) { int position = 0; for (int i = 0; i < lineNumber - 1; i++) { @@ -294,12 +311,13 @@ class _ModernNotepadPageState extends State { void _insertDateTime() { final now = DateTime.now(); - final dateTime = '${now.day}/${now.month}/${now.year} ${now.hour}:${now.minute.toString().padLeft(2, '0')}'; - + final dateTime = + '${now.day}/${now.month}/${now.year} ${now.hour}:${now.minute.toString().padLeft(2, '0')}'; + final selection = _controller.selection; final text = _controller.text; final newText = text.replaceRange(selection.start, selection.end, dateTime); - + setState(() { _controller.text = newText; _controller.selection = TextSelection.collapsed( @@ -317,25 +335,13 @@ class _ModernNotepadPageState extends State { backgroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), - side: BorderSide( - color: Colors.grey.shade300, - width: 1, - ), + side: BorderSide(color: Colors.grey.shade300, width: 1), ), title: const Row( children: [ - Icon( - Icons.search, - color: Colors.blue, - size: 20, - ), + Icon(Icons.search, color: Colors.blue, size: 20), SizedBox(width: 8), - Text( - 'Find', - style: TextStyle( - fontWeight: FontWeight.w600, - ), - ), + Text('Find', style: TextStyle(fontWeight: FontWeight.w600)), ], ), content: TextField( @@ -344,21 +350,13 @@ class _ModernNotepadPageState extends State { hintText: 'Enter text to find...', border: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: BorderSide( - color: Colors.grey.shade300, - ), + borderSide: BorderSide(color: Colors.grey.shade300), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: const BorderSide( - color: Colors.blue, - width: 2, - ), - ), - prefixIcon: Icon( - Icons.search, - color: Colors.grey.shade600, + borderSide: const BorderSide(color: Colors.blue, width: 2), ), + prefixIcon: Icon(Icons.search, color: Colors.grey.shade600), ), autofocus: true, onSubmitted: (_) => _performSearch(), @@ -401,24 +399,15 @@ class _ModernNotepadPageState extends State { backgroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), - side: BorderSide( - color: Colors.grey.shade300, - width: 1, - ), + side: BorderSide(color: Colors.grey.shade300, width: 1), ), title: const Row( children: [ - Icon( - Icons.find_replace, - color: Colors.blue, - size: 20, - ), + Icon(Icons.find_replace, color: Colors.blue, size: 20), SizedBox(width: 8), Text( 'Find and Replace', - style: TextStyle( - fontWeight: FontWeight.w600, - ), + style: TextStyle(fontWeight: FontWeight.w600), ), ], ), @@ -434,15 +423,9 @@ class _ModernNotepadPageState extends State { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: const BorderSide( - color: Colors.blue, - width: 2, - ), - ), - prefixIcon: Icon( - Icons.search, - color: Colors.grey.shade600, + borderSide: const BorderSide(color: Colors.blue, width: 2), ), + prefixIcon: Icon(Icons.search, color: Colors.grey.shade600), ), ), const SizedBox(height: 16), @@ -455,15 +438,9 @@ class _ModernNotepadPageState extends State { ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(8), - borderSide: const BorderSide( - color: Colors.blue, - width: 2, - ), - ), - prefixIcon: Icon( - Icons.edit, - color: Colors.grey.shade600, + borderSide: const BorderSide(color: Colors.blue, width: 2), ), + prefixIcon: Icon(Icons.edit, color: Colors.grey.shade600), ), ), ], @@ -736,6 +713,16 @@ class _ModernNotepadPageState extends State { }); } + void _openSettings() { + // Toggle chaos mode + setState(() { + _isChaosEnabled = !_isChaosEnabled; + }); + _showSnackBar( + _isChaosEnabled ? 'Chaos Mode Enabled!' : 'Chaos Mode Disabled', + ); + } + @override Widget build(BuildContext context) { return Shortcuts( @@ -939,7 +926,7 @@ class _ModernNotepadPageState extends State { ), decoration: BoxDecoration( color: _isChaosEnabled - ? Colors.red.shade50.withOpacity(0.3) + ? Colors.red.shade50.withValues(alpha: 0.3) : Colors.white, border: Border( bottom: BorderSide( @@ -952,8 +939,8 @@ class _ModernNotepadPageState extends State { boxShadow: [ BoxShadow( color: (_isChaosEnabled - ? Colors.red.withOpacity(0.08) - : Colors.black.withOpacity(0.05)), + ? Colors.red.withValues(alpha: 0.08) + : Colors.black.withValues(alpha: 0.05)), blurRadius: 4, offset: const Offset(0, 2), ), @@ -966,7 +953,7 @@ class _ModernNotepadPageState extends State { decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: _isChaosEnabled - ? Colors.red.shade50.withOpacity(0.5) + ? Colors.red.shade50.withValues(alpha: 0.5) : Colors.transparent, border: _isChaosEnabled ? Border.all( @@ -1184,7 +1171,7 @@ class _ModernNotepadPageState extends State { decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: _isChaosEnabled - ? Colors.red.shade50.withOpacity(0.5) + ? Colors.red.shade50.withValues(alpha: 0.5) : Colors.transparent, border: _isChaosEnabled ? Border.all( @@ -1254,6 +1241,12 @@ class _ModernNotepadPageState extends State { case 'clear': _clearFormatting(); break; + case 'go_to_line': + _goToLine(); + break; + case 'insert_datetime': + _insertDateTime(); + break; } }, itemBuilder: (context) => [ @@ -1363,18 +1356,87 @@ class _ModernNotepadPageState extends State { ], ), ), + PopupMenuItem( + value: 'go_to_line', + child: Row( + children: [ + Icon( + Icons.linear_scale, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, + ), + const SizedBox(width: 8), + Text( + 'Go to Line (Ctrl+G)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), + ), + PopupMenuItem( + value: 'insert_datetime', + child: Row( + children: [ + Icon( + Icons.access_time, + size: 16, + color: _isChaosEnabled + ? Colors.red.shade600 + : null, + ), + const SizedBox(width: 8), + Text( + 'Insert Date/Time (F5)', + style: TextStyle( + color: _isChaosEnabled + ? Colors.red.shade700 + : null, + fontWeight: _isChaosEnabled + ? FontWeight.w500 + : FontWeight.normal, + ), + ), + ], + ), + ), ], ), ), ), _buildMenuButton('View'), const SizedBox(width: 12), - _buildDropdown(_currentHeading, [ + _buildDropdown(_currentStyle, [ 'Normal', 'H1', 'H2', 'H3', ]), + const SizedBox(width: 12), + // Text formatting buttons + _buildFormatButton( + Icons.format_bold, + _isBold, + _toggleBold, + ), + _buildFormatButton( + Icons.format_italic, + _isItalic, + _toggleItalic, + ), + _buildFormatButton( + Icons.format_underlined, + _isUnderline, + _toggleUnderline, + ), const SizedBox(width: 6), _buildDropdown('•', ['•', '1.', '→']), const SizedBox(width: 12), @@ -1394,7 +1456,7 @@ class _ModernNotepadPageState extends State { ), borderRadius: BorderRadius.circular(6), color: _isChaosEnabled - ? Colors.red.shade50.withOpacity(0.7) + ? Colors.red.shade50.withValues(alpha: 0.7) : Colors.grey.shade50, ), child: Text( @@ -1416,7 +1478,37 @@ class _ModernNotepadPageState extends State { Expanded( child: Container( color: Colors.white, - child: _buildTextField(), + child: TextField( + controller: _controller, + focusNode: _focusNode, + maxLines: null, + expands: true, + onChanged: _handleTextChanged, + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: _isChaosEnabled + ? Colors.red.shade900 + : Colors.black, + height: 1.4, + fontWeight: FontWeight.w400, + ), + decoration: const InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(16), + hintText: 'Start typing...', + hintStyle: TextStyle( + color: Color(0xFF999999), + fontSize: 14, + ), + ), + textAlign: TextAlign.start, + textAlignVertical: TextAlignVertical.top, + cursorColor: _isChaosEnabled + ? Colors.red.shade600 + : Colors.black, + cursorWidth: _isChaosEnabled ? 2.0 : 1.0, + ), ), ), @@ -1441,7 +1533,7 @@ class _ModernNotepadPageState extends State { ), const SizedBox(width: 16), Text( - '$_characterCount characters', + 'Words: $_wordCount | Characters: $_charCount', style: const TextStyle( fontSize: 11, color: Colors.black54, @@ -1511,47 +1603,47 @@ class _ModernNotepadPageState extends State { ); } - Widget _buildMenuButton(String text) { + Widget _buildDropdown(String value, List items) { return Container( - margin: const EdgeInsets.only(right: 12), + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6), - color: _isChaosEnabled - ? Colors.red.shade50.withOpacity(0.5) - : Colors.transparent, - border: _isChaosEnabled - ? Border.all(color: Colors.red.shade100, width: 0.5) - : null, + border: Border.all(color: Colors.grey.shade300, width: 0.8), + borderRadius: BorderRadius.circular(4), + color: Colors.grey.shade50, + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: value, + isDense: true, + style: TextStyle(fontSize: 11, color: Colors.grey.shade700), + items: items.map((String item) { + return DropdownMenuItem(value: item, child: Text(item)); + }).toList(), + onChanged: (String? newValue) { + if (newValue != null) { + setState(() { + if (items.contains('Normal')) { + _currentStyle = newValue; // For style dropdown + } + }); + } + }, + ), ), + ); + } + + Widget _buildMenuButton(String text) { + return Container( + margin: const EdgeInsets.only(right: 12), child: InkWell( onTap: text == 'File' ? _showFileMenu : () {}, borderRadius: BorderRadius.circular(6), child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - text == 'View' ? Icons.visibility_outlined : Icons.more_horiz, - size: 12, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, - ), - const SizedBox(width: 4), - Text( - text, - style: TextStyle( - fontSize: 11, - color: _isChaosEnabled - ? Colors.red.shade600 - : Colors.grey.shade600, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.w400, - ), - ), - ], + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Text( + text, + style: TextStyle(fontSize: 12, color: Colors.grey.shade700), ), ), ), @@ -1606,117 +1698,30 @@ class _ModernNotepadPageState extends State { ); } - Widget _buildDropdown(String value, List items) { - return Container( - padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), - decoration: BoxDecoration( - border: Border.all( - color: _isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade200, - width: 0.8, - ), - borderRadius: BorderRadius.circular(6), - color: _isChaosEnabled - ? Colors.red.shade50.withOpacity(0.7) - : Colors.grey.shade50, - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - value, - style: TextStyle( - fontSize: 11, - color: _isChaosEnabled - ? Colors.red.shade600 - : Colors.grey.shade600, - fontWeight: _isChaosEnabled ? FontWeight.w500 : FontWeight.normal, - ), - ), - const SizedBox(width: 3), - Icon( - Icons.arrow_drop_down, - size: 14, - color: _isChaosEnabled ? Colors.red.shade400 : Colors.grey.shade400, - ), - ], - ), - ); - } - Widget _buildFormatButton(IconData icon, bool isActive, VoidCallback onTap) { return Container( - width: 22, - height: 22, - margin: const EdgeInsets.only(right: 3), + width: 24, + height: 24, decoration: BoxDecoration( - color: isActive - ? (_isChaosEnabled ? Colors.red.shade100 : Colors.pink.shade50) - : Colors.transparent, + color: isActive ? Colors.blue.shade100 : Colors.transparent, border: Border.all( - color: isActive - ? (_isChaosEnabled ? Colors.red.shade300 : Colors.pink.shade200) - : (_isChaosEnabled ? Colors.red.shade200 : Colors.grey.shade200), + color: isActive ? Colors.blue.shade300 : Colors.grey.shade300, width: 0.8, ), - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), ), child: Material( color: Colors.transparent, child: InkWell( onTap: onTap, - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), child: Icon( icon, - size: 12, - color: isActive - ? (_isChaosEnabled ? Colors.red.shade600 : Colors.pink.shade400) - : (_isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade500), + size: 14, + color: isActive ? Colors.blue.shade600 : Colors.grey.shade600, ), ), ), ); } - - Widget _buildTextField() { - return Container( - decoration: _isChaosEnabled - ? BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [Colors.white, Colors.red.shade50.withOpacity(0.1)], - ), - ) - : null, - child: TextField( - controller: _controller, - focusNode: _focusNode, - maxLines: null, - expands: true, - onChanged: _handleTextChanged, - style: TextStyle( - fontSize: 14, - fontFamily: 'Segoe UI', - color: _isChaosEnabled ? Colors.red.shade900 : Colors.black, - height: 1.4, - fontWeight: FontWeight.w400, - fontStyle: FontStyle.normal, - ), - decoration: const InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.all(16), - hintText: '', - ), - textAlign: TextAlign.start, - textAlignVertical: TextAlignVertical.top, - cursorColor: _isChaosEnabled ? Colors.red.shade600 : Colors.black, - cursorWidth: _isChaosEnabled ? 2.0 : 1.0, - selectionControls: _isChaosEnabled - ? MaterialTextSelectionControls() - : null, - ), - ); - } } From b17c5717839bc633044507071d0d7e586f768b7d Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 23:01:54 +0530 Subject: [PATCH 12/27] checkpoint for ui + chaos --- lib/main.dart | 443 ++++++++++++++++++++++++-------------------------- 1 file changed, 215 insertions(+), 228 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index a00f570c0..343890ae6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,179 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:io'; +import 'dart:async'; +import 'dart:math'; + +// ChaosManager handles all the chaos behaviors +class ChaosManager { + late Timer _timer; + final Random _random = Random(); + final TextEditingController textController; + final VoidCallback updateState; + + ChaosManager({required this.textController, required this.updateState}); + + void startChaos() { + _scheduleNextChaos(); + } + + void stopChaos() { + _timer.cancel(); + } + + void _scheduleNextChaos() { + // Random interval between 7-30 seconds + final int seconds = 7 + _random.nextInt(24); // 7 to 30 seconds + _timer = Timer(Duration(seconds: seconds), () { + _executeChaosAction(); + _scheduleNextChaos(); // Schedule the next chaos event + }); + } + + void _executeChaosAction() { + final actions = [ + _cursorTeleportation, + _randomDeletion, + _letterOrWordSwapping, + _punctuationInjection, + ]; + + // Pick a random action + final action = actions[_random.nextInt(actions.length)]; + action(); + updateState(); + } + + // Random Indentation on Save - will be called from save method + void randomIndentationOnSave() { + final text = textController.text; + if (text.isEmpty) return; + + final lines = text.split('\n'); + final linesToModify = _random.nextInt(3) + 1; // Modify 1-3 lines + + for (int i = 0; i < linesToModify; i++) { + final lineIndex = _random.nextInt(lines.length); + final indentType = _random.nextBool() ? '\t' : ' '; // Tab or 2 spaces + final indentCount = _random.nextInt(3) + 1; // 1-3 indentations + lines[lineIndex] = (indentType * indentCount) + lines[lineIndex]; + } + + textController.text = lines.join('\n'); + } + + void _cursorTeleportation() { + final text = textController.text; + if (text.isEmpty) return; + + final newPosition = _random.nextInt(text.length); + textController.selection = TextSelection.collapsed(offset: newPosition); + } + + void _randomDeletion() { + final text = textController.text; + if (text.isEmpty) return; + + if (_random.nextBool()) { + // Delete a random letter + final position = _random.nextInt(text.length); + final newText = + text.substring(0, position) + text.substring(position + 1); + textController.text = newText; + } else { + // Delete a random word + final words = text.split(RegExp(r'\s+')); + if (words.isNotEmpty) { + final wordIndex = _random.nextInt(words.length); + words.removeAt(wordIndex); + textController.text = words.join(' '); + } + } + } + + void _letterOrWordSwapping() { + final text = textController.text; + if (text.length < 2) return; + + if (_random.nextBool() && text.length > 1) { + // Swap letters within a word + final lines = text.split('\n'); + final words = []; + final lineIndices = []; + + for (int i = 0; i < lines.length; i++) { + final lineWords = lines[i].split(RegExp(r'\s+')); + for (final word in lineWords) { + if (word.length > 1) { + words.add(word); + lineIndices.add(i); + } + } + } + + if (words.isNotEmpty) { + final wordIndex = _random.nextInt(words.length); + final word = words[wordIndex]; + final chars = word.split(''); + + if (chars.length > 1) { + final pos1 = _random.nextInt(chars.length); + int pos2 = _random.nextInt(chars.length); + while (pos2 == pos1) { + pos2 = _random.nextInt(chars.length); + } + + final temp = chars[pos1]; + chars[pos1] = chars[pos2]; + chars[pos2] = temp; + + final newWord = chars.join(''); + textController.text = text.replaceFirst(word, newWord); + } + } + } else { + // Swap entire words between lines + final lines = text.split('\n'); + if (lines.length < 2) return; + + final line1Index = _random.nextInt(lines.length); + int line2Index = _random.nextInt(lines.length); + while (line2Index == line1Index) { + line2Index = _random.nextInt(lines.length); + } + + final words1 = lines[line1Index].split(RegExp(r'\s+')); + final words2 = lines[line2Index].split(RegExp(r'\s+')); + + if (words1.isNotEmpty && words2.isNotEmpty) { + final word1Index = _random.nextInt(words1.length); + final word2Index = _random.nextInt(words2.length); + + final temp = words1[word1Index]; + words1[word1Index] = words2[word2Index]; + words2[word2Index] = temp; + + lines[line1Index] = words1.join(' '); + lines[line2Index] = words2.join(' '); + + textController.text = lines.join('\n'); + } + } + } + + void _punctuationInjection() { + final text = textController.text; + if (text.isEmpty) return; + + final punctuations = ['.', ',', '!', '?', ';', ':']; + final punctuation = punctuations[_random.nextInt(punctuations.length)]; + final position = _random.nextInt(text.length + 1); + + final newText = + text.substring(0, position) + punctuation + text.substring(position); + textController.text = newText; + } +} // Intent classes for keyboard shortcuts class SelectAllIntent extends Intent { @@ -103,12 +276,11 @@ class _ModernNotepadPageState extends State { // Chaos mode state bool _isChaosEnabled = false; + late ChaosManager _chaosManager; // Status bar int _lineNumber = 1; int _columnNumber = 30; - int _currentLine = 0; - int _currentColumn = 0; int _wordCount = 0; int _charCount = 0; @@ -117,6 +289,15 @@ class _ModernNotepadPageState extends State { super.initState(); _controller.addListener(_updateStats); + // Initialize ChaosManager + _chaosManager = ChaosManager( + textController: _controller, + updateState: () => setState(() {}), + ); + + // Start chaos immediately (always active) + _chaosManager.startChaos(); + // Set initial cursor position to column 30 WidgetsBinding.instance.addPostFrameCallback((_) { _controller.text = ''; @@ -127,6 +308,7 @@ class _ModernNotepadPageState extends State { @override void dispose() { + _chaosManager.stopChaos(); _controller.removeListener(_updateStats); _controller.dispose(); _focusNode.dispose(); @@ -151,13 +333,8 @@ class _ModernNotepadPageState extends State { final beforeCursor = text.substring(0, selection.baseOffset); _lineNumber = '\n'.allMatches(beforeCursor).length + 1; _columnNumber = beforeCursor.split('\n').last.length + 1; - - // Update current line/column for status bar - _currentLine = _lineNumber - 1; // 0-indexed - _currentColumn = _columnNumber - 1; // 0-indexed } else { _columnNumber = 30; - _currentColumn = 30; } }); } @@ -634,6 +811,9 @@ class _ModernNotepadPageState extends State { Future _saveFile() async { try { + // Apply random indentation chaos before saving + _chaosManager.randomIndentationOnSave(); + if (_currentFilePath != null) { final file = File(_currentFilePath!); await file.writeAsString(_controller.text); @@ -831,14 +1011,10 @@ class _ModernNotepadPageState extends State { vertical: 4, ), decoration: BoxDecoration( - color: _isChaosEnabled - ? Colors.red.shade50 - : Colors.pink.shade50, + color: Colors.pink.shade50, borderRadius: BorderRadius.circular(8), border: Border.all( - color: _isChaosEnabled - ? Colors.red.shade100 - : Colors.pink.shade100, + color: Colors.pink.shade100, width: 0.8, ), ), @@ -870,15 +1046,11 @@ class _ModernNotepadPageState extends State { margin: const EdgeInsets.only(left: 3), decoration: BoxDecoration( border: Border.all( - color: _isChaosEnabled - ? Colors.red.shade100 - : Colors.pink.shade100, + color: Colors.pink.shade100, width: 0.8, ), borderRadius: BorderRadius.circular(6), - color: _isChaosEnabled - ? Colors.red.shade50 - : Colors.pink.shade50, + color: Colors.pink.shade50, ), child: Material( color: Colors.transparent, @@ -906,9 +1078,7 @@ class _ModernNotepadPageState extends State { child: Icon( Icons.settings, size: 14, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade400, + color: Colors.grey.shade400, ), ), ), @@ -925,22 +1095,16 @@ class _ModernNotepadPageState extends State { vertical: 8, ), decoration: BoxDecoration( - color: _isChaosEnabled - ? Colors.red.shade50.withValues(alpha: 0.3) - : Colors.white, + color: Colors.white, border: Border( bottom: BorderSide( - color: _isChaosEnabled - ? Colors.red.shade100 - : const Color(0xFFE0E0E0), + color: const Color(0xFFE0E0E0), width: 0.5, ), ), boxShadow: [ BoxShadow( - color: (_isChaosEnabled - ? Colors.red.withValues(alpha: 0.08) - : Colors.black.withValues(alpha: 0.05)), + color: Colors.black.withValues(alpha: 0.05), blurRadius: 4, offset: const Offset(0, 2), ), @@ -952,28 +1116,17 @@ class _ModernNotepadPageState extends State { Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), - color: _isChaosEnabled - ? Colors.red.shade50.withValues(alpha: 0.5) - : Colors.transparent, - border: _isChaosEnabled - ? Border.all( - color: Colors.red.shade100, - width: 0.5, - ) - : null, + color: Colors.transparent, + border: null, ), child: Theme( data: Theme.of(context).copyWith( popupMenuTheme: PopupMenuThemeData( - color: _isChaosEnabled - ? Colors.red.shade50 - : Colors.white, + color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), side: BorderSide( - color: _isChaosEnabled - ? Colors.red.shade200 - : Colors.grey.shade300, + color: Colors.grey.shade300, width: 1, ), ), @@ -991,9 +1144,7 @@ class _ModernNotepadPageState extends State { Icon( Icons.folder_outlined, size: 12, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, + color: Colors.grey.shade600, ), const SizedBox(width: 4), Text( @@ -1001,9 +1152,7 @@ class _ModernNotepadPageState extends State { style: TextStyle( fontSize: 11, fontWeight: FontWeight.w500, - color: _isChaosEnabled - ? Colors.red.shade600 - : Colors.grey.shade600, + color: Colors.grey.shade600, ), ), ], @@ -1033,25 +1182,9 @@ class _ModernNotepadPageState extends State { value: 'new', child: Row( children: [ - Icon( - Icons.note_add, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.note_add, size: 16), const SizedBox(width: 8), - Text( - 'New (Ctrl+N)', - style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, - ), - ), + const Text('New (Ctrl+N)'), ], ), ), @@ -1059,25 +1192,9 @@ class _ModernNotepadPageState extends State { value: 'open', child: Row( children: [ - Icon( - Icons.folder_open, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.folder_open, size: 16), const SizedBox(width: 8), - Text( - 'Open (Ctrl+O)', - style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, - ), - ), + const Text('Open (Ctrl+O)'), ], ), ), @@ -1086,25 +1203,9 @@ class _ModernNotepadPageState extends State { value: 'save', child: Row( children: [ - Icon( - Icons.save, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.save, size: 16), const SizedBox(width: 8), - Text( - 'Save (Ctrl+S)', - style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, - ), - ), + const Text('Save (Ctrl+S)'), ], ), ), @@ -1112,25 +1213,9 @@ class _ModernNotepadPageState extends State { value: 'save_as', child: Row( children: [ - Icon( - Icons.save_as, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.save_as, size: 16), const SizedBox(width: 8), - Text( - 'Save As (Ctrl+Shift+S)', - style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, - ), - ), + const Text('Save As (Ctrl+Shift+S)'), ], ), ), @@ -1139,25 +1224,9 @@ class _ModernNotepadPageState extends State { value: 'exit', child: Row( children: [ - Icon( - Icons.exit_to_app, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.exit_to_app, size: 16), const SizedBox(width: 8), - Text( - 'Exit', - style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, - ), - ), + const Text('Exit'), ], ), ), @@ -1170,22 +1239,11 @@ class _ModernNotepadPageState extends State { margin: const EdgeInsets.only(left: 4), decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), - color: _isChaosEnabled - ? Colors.red.shade50.withValues(alpha: 0.5) - : Colors.transparent, - border: _isChaosEnabled - ? Border.all( - color: Colors.red.shade100, - width: 0.5, - ) - : null, ), child: Theme( data: Theme.of(context).copyWith( popupMenuTheme: PopupMenuThemeData( - color: _isChaosEnabled - ? Colors.red.shade50 - : Colors.white, + color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), side: BorderSide( @@ -1412,8 +1470,6 @@ class _ModernNotepadPageState extends State { ), ), ), - _buildMenuButton('View'), - const SizedBox(width: 12), _buildDropdown(_currentStyle, [ 'Normal', 'H1', @@ -1487,9 +1543,7 @@ class _ModernNotepadPageState extends State { style: TextStyle( fontSize: 14, fontFamily: 'Segoe UI', - color: _isChaosEnabled - ? Colors.red.shade900 - : Colors.black, + color: Colors.black, height: 1.4, fontWeight: FontWeight.w400, ), @@ -1504,10 +1558,8 @@ class _ModernNotepadPageState extends State { ), textAlign: TextAlign.start, textAlignVertical: TextAlignVertical.top, - cursorColor: _isChaosEnabled - ? Colors.red.shade600 - : Colors.black, - cursorWidth: _isChaosEnabled ? 2.0 : 1.0, + cursorColor: Colors.black, + cursorWidth: 1.0, ), ), ), @@ -1633,71 +1685,6 @@ class _ModernNotepadPageState extends State { ); } - Widget _buildMenuButton(String text) { - return Container( - margin: const EdgeInsets.only(right: 12), - child: InkWell( - onTap: text == 'File' ? _showFileMenu : () {}, - borderRadius: BorderRadius.circular(6), - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - child: Text( - text, - style: TextStyle(fontSize: 12, color: Colors.grey.shade700), - ), - ), - ), - ); - } - - void _showFileMenu() { - // Show a simple file menu - showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: const Text('File'), - content: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ListTile( - leading: const Icon(Icons.add), - title: const Text('New'), - onTap: () { - Navigator.of(context).pop(); - _newFile(); - }, - ), - ListTile( - leading: const Icon(Icons.save), - title: const Text('Save'), - onTap: () { - Navigator.of(context).pop(); - _saveFile(); - }, - ), - ListTile( - leading: const Icon(Icons.save_as), - title: const Text('Save As'), - onTap: () { - Navigator.of(context).pop(); - _saveAsFile(); - }, - ), - ], - ), - actions: [ - TextButton( - onPressed: () => Navigator.of(context).pop(), - child: const Text('Close'), - ), - ], - ); - }, - ); - } - Widget _buildFormatButton(IconData icon, bool isActive, VoidCallback onTap) { return Container( width: 24, From d01602a56d42a15a5424359e13c5d367112037e3 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 23:08:59 +0530 Subject: [PATCH 13/27] somewhat working chaos i think? --- lib/main.dart | 104 +------------------------------------------------- 1 file changed, 2 insertions(+), 102 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 343890ae6..74970236b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -22,8 +22,8 @@ class ChaosManager { } void _scheduleNextChaos() { - // Random interval between 7-30 seconds - final int seconds = 7 + _random.nextInt(24); // 7 to 30 seconds + // Random interval between 7-15 seconds + final int seconds = 7 + _random.nextInt(9); // 7 to 15 seconds _timer = Timer(Duration(seconds: seconds), () { _executeChaosAction(); _scheduleNextChaos(); // Schedule the next chaos event @@ -272,7 +272,6 @@ class _ModernNotepadPageState extends State { bool _isBold = false; bool _isItalic = false; bool _isUnderline = false; - String _currentStyle = 'Normal'; // Chaos mode state bool _isChaosEnabled = false; @@ -893,16 +892,6 @@ class _ModernNotepadPageState extends State { }); } - void _openSettings() { - // Toggle chaos mode - setState(() { - _isChaosEnabled = !_isChaosEnabled; - }); - _showSnackBar( - _isChaosEnabled ? 'Chaos Mode Enabled!' : 'Chaos Mode Disabled', - ); - } - @override Widget build(BuildContext context) { return Shortcuts( @@ -1065,25 +1054,6 @@ class _ModernNotepadPageState extends State { ), ), ), - const Spacer(), // Push settings icon to the right - Padding( - padding: const EdgeInsets.only(right: 6), - child: Material( - color: Colors.transparent, - child: InkWell( - onTap: _openSettings, - borderRadius: BorderRadius.circular(6), - child: Padding( - padding: const EdgeInsets.all(4), - child: Icon( - Icons.settings, - size: 14, - color: Colors.grey.shade400, - ), - ), - ), - ), - ), ], ), ), @@ -1470,13 +1440,6 @@ class _ModernNotepadPageState extends State { ), ), ), - _buildDropdown(_currentStyle, [ - 'Normal', - 'H1', - 'H2', - 'H3', - ]), - const SizedBox(width: 12), // Text formatting buttons _buildFormatButton( Icons.format_bold, @@ -1493,39 +1456,6 @@ class _ModernNotepadPageState extends State { _isUnderline, _toggleUnderline, ), - const SizedBox(width: 6), - _buildDropdown('•', ['•', '1.', '→']), - const SizedBox(width: 12), - _buildFormatButton(Icons.link, false, () {}), - const SizedBox(width: 6), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 6, - vertical: 3, - ), - decoration: BoxDecoration( - border: Border.all( - color: _isChaosEnabled - ? Colors.red.shade200 - : Colors.grey.shade200, - width: 0.8, - ), - borderRadius: BorderRadius.circular(6), - color: _isChaosEnabled - ? Colors.red.shade50.withValues(alpha: 0.7) - : Colors.grey.shade50, - ), - child: Text( - 'Aa', - style: TextStyle( - fontSize: 10, - fontWeight: FontWeight.w600, - color: _isChaosEnabled - ? Colors.red.shade600 - : Colors.grey.shade500, - ), - ), - ), ], ), ), @@ -1655,36 +1585,6 @@ class _ModernNotepadPageState extends State { ); } - Widget _buildDropdown(String value, List items) { - return Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300, width: 0.8), - borderRadius: BorderRadius.circular(4), - color: Colors.grey.shade50, - ), - child: DropdownButtonHideUnderline( - child: DropdownButton( - value: value, - isDense: true, - style: TextStyle(fontSize: 11, color: Colors.grey.shade700), - items: items.map((String item) { - return DropdownMenuItem(value: item, child: Text(item)); - }).toList(), - onChanged: (String? newValue) { - if (newValue != null) { - setState(() { - if (items.contains('Normal')) { - _currentStyle = newValue; // For style dropdown - } - }); - } - }, - ), - ), - ); - } - Widget _buildFormatButton(IconData icon, bool isActive, VoidCallback onTap) { return Container( width: 24, From b9d6cdcfc41541c2989bc9cc6ad4e54d382f415f Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Fri, 8 Aug 2025 23:37:26 +0530 Subject: [PATCH 14/27] checkpoint again, it works somehow --- lib/main.dart | 553 +++++++++++++++++++++++++++++++------------------- pubspec.lock | 47 ++++- pubspec.yaml | 1 + 3 files changed, 394 insertions(+), 207 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 74970236b..cd4fa6596 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'dart:io'; import 'dart:async'; import 'dart:math'; +import 'package:file_picker/file_picker.dart'; // ChaosManager handles all the chaos behaviors class ChaosManager { @@ -220,6 +221,36 @@ class InsertDateTimeIntent extends Intent { const InsertDateTimeIntent(); } +// TabData class to manage individual tab state +class TabData { + final TextEditingController controller; + final FocusNode focusNode; + String fileName; + String? filePath; + bool isModified; + int lineNumber; + int columnNumber; + int wordCount; + int charCount; + + TabData({ + required this.controller, + required this.focusNode, + this.fileName = 'Untitled.txt', + this.filePath, + this.isModified = false, + this.lineNumber = 1, + this.columnNumber = 30, + this.wordCount = 0, + this.charCount = 0, + }); + + void dispose() { + controller.dispose(); + focusNode.dispose(); + } +} + void main() { runApp(const MyApp()); } @@ -254,16 +285,13 @@ class ModernNotepadPage extends StatefulWidget { } class _ModernNotepadPageState extends State { - final TextEditingController _controller = TextEditingController(); - final FocusNode _focusNode = FocusNode(); + // Tab management + List _tabs = []; + int _currentTabIndex = 0; + final TextEditingController _searchController = TextEditingController(); final TextEditingController _replaceController = TextEditingController(); - // File handling - String _currentFileName = 'Untitled.txt'; - String? _currentFilePath; - bool _isModified = false; - // Find/Replace functionality int _currentSearchIndex = -1; List _searchResults = []; @@ -275,27 +303,38 @@ class _ModernNotepadPageState extends State { // Chaos mode state bool _isChaosEnabled = false; - late ChaosManager _chaosManager; - - // Status bar - int _lineNumber = 1; - int _columnNumber = 30; - int _wordCount = 0; - int _charCount = 0; + ChaosManager? _chaosManager; + + // Computed properties for current tab + TabData get _currentTab => _tabs[_currentTabIndex]; + TextEditingController get _controller => _currentTab.controller; + FocusNode get _focusNode => _currentTab.focusNode; + String get _currentFileName => _currentTab.fileName; + set _currentFileName(String value) => _currentTab.fileName = value; + String? get _currentFilePath => _currentTab.filePath; + set _currentFilePath(String? value) => _currentTab.filePath = value; + bool get _isModified => _currentTab.isModified; + set _isModified(bool value) => _currentTab.isModified = value; + int get _lineNumber => _currentTab.lineNumber; + set _lineNumber(int value) => _currentTab.lineNumber = value; + int get _columnNumber => _currentTab.columnNumber; + set _columnNumber(int value) => _currentTab.columnNumber = value; + int get _wordCount => _currentTab.wordCount; + set _wordCount(int value) => _currentTab.wordCount = value; + int get _charCount => _currentTab.charCount; + set _charCount(int value) => _currentTab.charCount = value; @override void initState() { super.initState(); - _controller.addListener(_updateStats); - // Initialize ChaosManager - _chaosManager = ChaosManager( - textController: _controller, - updateState: () => setState(() {}), - ); + // Create the first tab + _createNewTab(); - // Start chaos immediately (always active) - _chaosManager.startChaos(); + _controller.addListener(_updateStats); + + // Initialize ChaosManager with the current controller + _initializeChaosManager(); // Set initial cursor position to column 30 WidgetsBinding.instance.addPostFrameCallback((_) { @@ -305,17 +344,112 @@ class _ModernNotepadPageState extends State { }); } + void _initializeChaosManager() { + // Stop existing chaos manager if it exists + _chaosManager?.stopChaos(); + + // Initialize ChaosManager with current tab's controller + _chaosManager = ChaosManager( + textController: _controller, + updateState: () => setState(() {}), + ); + + // Start chaos immediately (always active) + _chaosManager?.startChaos(); + } + @override void dispose() { - _chaosManager.stopChaos(); + _chaosManager?.stopChaos(); _controller.removeListener(_updateStats); - _controller.dispose(); - _focusNode.dispose(); + + // Dispose all tabs + for (final tab in _tabs) { + tab.dispose(); + } + _searchController.dispose(); _replaceController.dispose(); super.dispose(); } + // Tab management methods + void _createNewTab() { + final controller = TextEditingController(); + final focusNode = FocusNode(); + + controller.addListener(_updateStats); + + final newTab = TabData(controller: controller, focusNode: focusNode); + + setState(() { + _tabs.add(newTab); + _currentTabIndex = _tabs.length - 1; + }); + + // Initialize chaos manager for the new active tab + _initializeChaosManager(); + + // Focus the new tab + WidgetsBinding.instance.addPostFrameCallback((_) { + focusNode.requestFocus(); + }); + } + + void _switchToTab(int index) { + if (index >= 0 && index < _tabs.length) { + setState(() { + _currentTabIndex = index; + }); + + // Reinitialize chaos manager for the new active tab + _initializeChaosManager(); + + // Focus the selected tab + WidgetsBinding.instance.addPostFrameCallback((_) { + _focusNode.requestFocus(); + }); + } + } + + void _closeTab(int index) { + if (_tabs.length <= 1) { + // Don't close the last tab, just create a new empty one + _createNewFile(); + return; + } + + final tabToClose = _tabs[index]; + + if (tabToClose.isModified) { + _showUnsavedChangesDialog(() => _performCloseTab(index)); + } else { + _performCloseTab(index); + } + } + + void _performCloseTab(int index) { + final tabToClose = _tabs[index]; + tabToClose.dispose(); + + setState(() { + _tabs.removeAt(index); + if (_currentTabIndex >= _tabs.length) { + _currentTabIndex = _tabs.length - 1; + } else if (_currentTabIndex > index) { + _currentTabIndex--; + } + }); + + // Reinitialize chaos manager for the new current tab + _initializeChaosManager(); + + // Focus the current tab + WidgetsBinding.instance.addPostFrameCallback((_) { + _focusNode.requestFocus(); + }); + } + void _updateStats() { final text = _controller.text; final selection = _controller.selection; @@ -347,11 +481,8 @@ class _ModernNotepadPageState extends State { // File handling methods void _newFile() { - if (_isModified) { - _showUnsavedChangesDialog(() => _createNewFile()); - } else { - _createNewFile(); - } + // Create a new tab instead of clearing current one + _createNewTab(); } void _createNewFile() { @@ -373,29 +504,29 @@ class _ModernNotepadPageState extends State { Future _performOpenFile() async { try { - final downloadsPath = Platform.isWindows - ? '${Platform.environment['USERPROFILE']}${Platform.pathSeparator}Downloads' - : '${Platform.environment['HOME']}${Platform.pathSeparator}Downloads'; - - final fileName = await _showFileNameDialog( - 'Open File', - 'Enter filename to open from Downloads:', + // Use native Windows file dialog + FilePickerResult? result = await FilePicker.platform.pickFiles( + dialogTitle: 'Open File', + type: FileType.custom, + allowedExtensions: ['txt'], + allowMultiple: false, ); - if (fileName != null && fileName.isNotEmpty) { - final filePath = '$downloadsPath${Platform.pathSeparator}$fileName'; + + if (result != null && result.files.single.path != null) { + final filePath = result.files.single.path!; final file = File(filePath); if (await file.exists()) { final content = await file.readAsString(); setState(() { _controller.text = content; - _currentFileName = fileName; + _currentFileName = result.files.single.name; _currentFilePath = filePath; _isModified = false; }); _showSnackBar('File opened successfully'); } else { - _showSnackBar('File not found: $fileName'); + _showSnackBar('File not found'); } } } catch (e) { @@ -403,33 +534,6 @@ class _ModernNotepadPageState extends State { } } - Future _showFileNameDialog(String title, String hint) async { - final controller = TextEditingController(); - return showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: Text(title), - content: TextField( - controller: controller, - decoration: InputDecoration(hintText: hint), - autofocus: true, - ), - actions: [ - TextButton( - onPressed: () => Navigator.of(context).pop(), - child: const Text('Cancel'), - ), - TextButton( - onPressed: () => Navigator.of(context).pop(controller.text), - child: const Text('OK'), - ), - ], - ); - }, - ); - } - void _clearFormatting() { _showSnackBar('Formatting cleared'); } @@ -811,9 +915,10 @@ class _ModernNotepadPageState extends State { Future _saveFile() async { try { // Apply random indentation chaos before saving - _chaosManager.randomIndentationOnSave(); + _chaosManager?.randomIndentationOnSave(); if (_currentFilePath != null) { + // Save directly to existing file without popup final file = File(_currentFilePath!); await file.writeAsString(_controller.text); setState(() { @@ -821,6 +926,7 @@ class _ModernNotepadPageState extends State { }); _showSnackBar('File saved successfully'); } else { + // Use native file dialog for new files await _saveAsFile(); } } catch (e) { @@ -830,27 +936,31 @@ class _ModernNotepadPageState extends State { Future _saveAsFile() async { try { - final downloadsPath = Platform.isWindows - ? '${Platform.environment['USERPROFILE']}${Platform.pathSeparator}Downloads' - : '${Platform.environment['HOME']}${Platform.pathSeparator}Downloads'; - - final timestamp = DateTime.now().millisecondsSinceEpoch; - final fileName = _currentFileName == 'Untitled.txt' - ? 'notepad_$timestamp.txt' - : _currentFileName; + // Use native Windows file dialog + String? outputFile = await FilePicker.platform.saveFile( + dialogTitle: 'Save File As', + fileName: _currentFileName.endsWith('.txt') + ? _currentFileName + : '${_currentFileName.replaceAll('.txt', '')}.txt', + type: FileType.custom, + allowedExtensions: ['txt'], + ); - final filePath = '$downloadsPath${Platform.pathSeparator}$fileName'; - final file = File(filePath); + if (outputFile != null) { + // Apply random indentation chaos before saving + _chaosManager?.randomIndentationOnSave(); - await file.writeAsString(_controller.text); + final file = File(outputFile); + await file.writeAsString(_controller.text); - setState(() { - _currentFilePath = filePath; - _currentFileName = fileName; - _isModified = false; - }); + setState(() { + _currentFilePath = outputFile; + _currentFileName = outputFile.split(Platform.pathSeparator).last; + _isModified = false; + }); - _showSnackBar('File saved as $fileName'); + _showSnackBar('File saved as ${_currentFileName}'); + } } catch (e) { _showSnackBar('Error saving file: $e'); } @@ -990,49 +1100,88 @@ class _ModernNotepadPageState extends State { ), child: Row( children: [ - Container( - margin: const EdgeInsets.symmetric( - horizontal: 6, - vertical: 4, - ), - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), - decoration: BoxDecoration( - color: Colors.pink.shade50, - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: Colors.pink.shade100, - width: 0.8, - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - _isModified - ? '$_currentFileName*' - : _currentFileName, - style: TextStyle( - fontSize: 10, - fontWeight: FontWeight.w500, - color: Colors.grey.shade600, + // Tab list - scrollable if too many tabs + Expanded( + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: _tabs.length, + itemBuilder: (context, index) { + final tab = _tabs[index]; + final isActive = index == _currentTabIndex; + + return Container( + margin: const EdgeInsets.symmetric( + horizontal: 3, + vertical: 4, ), - ), - const SizedBox(width: 4), - Icon( - Icons.close, - size: 10, - color: Colors.grey.shade400, - ), - ], + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: isActive + ? Colors.blue.shade50 + : Colors.pink.shade50, + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: isActive + ? Colors.blue.shade200 + : Colors.pink.shade100, + width: 0.8, + ), + ), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () => _switchToTab(index), + borderRadius: BorderRadius.circular(8), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + tab.isModified + ? '${tab.fileName}*' + : tab.fileName, + style: TextStyle( + fontSize: 10, + fontWeight: isActive + ? FontWeight.w600 + : FontWeight.w500, + color: isActive + ? Colors.blue.shade700 + : Colors.grey.shade600, + ), + ), + const SizedBox(width: 4), + Material( + color: Colors.transparent, + child: InkWell( + onTap: () => _closeTab(index), + borderRadius: BorderRadius.circular( + 10, + ), + child: Icon( + Icons.close, + size: 10, + color: isActive + ? Colors.blue.shade400 + : Colors.grey.shade400, + ), + ), + ), + ], + ), + ), + ), + ); + }, ), ), + // Add new tab button Container( width: 20, height: 20, - margin: const EdgeInsets.only(left: 3), + margin: const EdgeInsets.only(left: 3, right: 6), decoration: BoxDecoration( border: Border.all( color: Colors.pink.shade100, @@ -1154,7 +1303,15 @@ class _ModernNotepadPageState extends State { children: [ const Icon(Icons.note_add, size: 16), const SizedBox(width: 8), - const Text('New (Ctrl+N)'), + Text( + 'New (Ctrl+N)', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', + ), + ), ], ), ), @@ -1164,7 +1321,15 @@ class _ModernNotepadPageState extends State { children: [ const Icon(Icons.folder_open, size: 16), const SizedBox(width: 8), - const Text('Open (Ctrl+O)'), + Text( + 'Open (Ctrl+O)', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', + ), + ), ], ), ), @@ -1175,7 +1340,15 @@ class _ModernNotepadPageState extends State { children: [ const Icon(Icons.save, size: 16), const SizedBox(width: 8), - const Text('Save (Ctrl+S)'), + Text( + 'Save (Ctrl+S)', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', + ), + ), ], ), ), @@ -1185,7 +1358,15 @@ class _ModernNotepadPageState extends State { children: [ const Icon(Icons.save_as, size: 16), const SizedBox(width: 8), - const Text('Save As (Ctrl+Shift+S)'), + Text( + 'Save As (Ctrl+Shift+S)', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', + ), + ), ], ), ), @@ -1196,7 +1377,15 @@ class _ModernNotepadPageState extends State { children: [ const Icon(Icons.exit_to_app, size: 16), const SizedBox(width: 8), - const Text('Exit'), + Text( + 'Exit', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', + ), + ), ], ), ), @@ -1282,23 +1471,15 @@ class _ModernNotepadPageState extends State { value: 'select_all', child: Row( children: [ - Icon( - Icons.select_all, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.select_all, size: 16), const SizedBox(width: 8), Text( 'Select All (Ctrl+A)', style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', ), ), ], @@ -1309,23 +1490,15 @@ class _ModernNotepadPageState extends State { value: 'find', child: Row( children: [ - Icon( - Icons.search, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.search, size: 16), const SizedBox(width: 8), Text( 'Find (Ctrl+F)', style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', ), ), ], @@ -1335,23 +1508,15 @@ class _ModernNotepadPageState extends State { value: 'replace', child: Row( children: [ - Icon( - Icons.find_replace, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.find_replace, size: 16), const SizedBox(width: 8), Text( 'Replace (Ctrl+H)', style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', ), ), ], @@ -1362,23 +1527,15 @@ class _ModernNotepadPageState extends State { value: 'clear', child: Row( children: [ - Icon( - Icons.clear_all, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.clear_all, size: 16), const SizedBox(width: 8), Text( 'Clear Formatting', style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', ), ), ], @@ -1388,23 +1545,15 @@ class _ModernNotepadPageState extends State { value: 'go_to_line', child: Row( children: [ - Icon( - Icons.linear_scale, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.linear_scale, size: 16), const SizedBox(width: 8), Text( 'Go to Line (Ctrl+G)', style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', ), ), ], @@ -1414,23 +1563,15 @@ class _ModernNotepadPageState extends State { value: 'insert_datetime', child: Row( children: [ - Icon( - Icons.access_time, - size: 16, - color: _isChaosEnabled - ? Colors.red.shade600 - : null, - ), + const Icon(Icons.access_time, size: 16), const SizedBox(width: 8), Text( 'Insert Date/Time (F5)', style: TextStyle( - color: _isChaosEnabled - ? Colors.red.shade700 - : null, - fontWeight: _isChaosEnabled - ? FontWeight.w500 - : FontWeight.normal, + fontSize: 12, + fontWeight: FontWeight.w400, + color: Colors.grey.shade800, + fontFamily: 'Segoe UI', ), ), ], diff --git a/pubspec.lock b/pubspec.lock index eaa659f0c..9767cb9fa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -57,6 +57,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.3" + ffi: + dependency: transitive + description: + name: ffi + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + file_picker: + dependency: "direct main" + description: + name: file_picker + sha256: "1bbf65dd997458a08b531042ec3794112a6c39c07c37ff22113d2e7e4f81d4e4" + url: "https://pub.dev" + source: hosted + version: "6.2.1" flutter: dependency: "direct main" description: flutter @@ -70,11 +86,24 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "6382ce712ff69b0f719640ce957559dde459e55ecd433c767e06d139ddf16cab" + url: "https://pub.dev" + source: hosted + version: "2.0.29" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" leak_tracker: dependency: transitive description: @@ -139,6 +168,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" sky_engine: dependency: transitive description: flutter @@ -208,6 +245,14 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.0" + win32: + dependency: transitive + description: + name: win32 + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + url: "https://pub.dev" + source: hosted + version: "5.14.0" sdks: dart: ">=3.8.1 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index feb3da419..009c45218 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,6 +14,7 @@ dependencies: sdk: flutter cupertino_icons: ^1.0.8 + file_picker: ^6.1.1 dev_dependencies: flutter_test: From bc306ee3b1f6ea84525d2e83005ac08aeb465e01 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 00:04:19 +0530 Subject: [PATCH 15/27] UI changes, the drop down menus updated, functionalities cooked --- lib/main.dart | 412 +++++++++++++++++++++++++++++++++++++------------- pubspec.lock | 20 ++- pubspec.yaml | 2 +- 3 files changed, 327 insertions(+), 107 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index cd4fa6596..0d0da6451 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -286,7 +286,7 @@ class ModernNotepadPage extends StatefulWidget { class _ModernNotepadPageState extends State { // Tab management - List _tabs = []; + final List _tabs = []; int _currentTabIndex = 0; final TextEditingController _searchController = TextEditingController(); @@ -294,7 +294,7 @@ class _ModernNotepadPageState extends State { // Find/Replace functionality int _currentSearchIndex = -1; - List _searchResults = []; + final List _searchResults = []; // Text formatting state bool _isBold = false; @@ -302,7 +302,7 @@ class _ModernNotepadPageState extends State { bool _isUnderline = false; // Chaos mode state - bool _isChaosEnabled = false; + final bool _isChaosEnabled = false; ChaosManager? _chaosManager; // Computed properties for current tab @@ -554,22 +554,73 @@ class _ModernNotepadPageState extends State { showDialog( context: context, builder: (context) => AlertDialog( - title: const Text('Go to Line'), - content: TextField( - decoration: const InputDecoration(hintText: 'Enter line number'), - keyboardType: TextInputType.number, - onSubmitted: (value) { - final lineNum = int.tryParse(value); - if (lineNum != null && lineNum > 0) { - _jumpToLine(lineNum); - } - Navigator.pop(context); - }, + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(6), + side: BorderSide(color: Colors.grey.shade300, width: 1), + ), + contentPadding: const EdgeInsets.all(16), + titlePadding: const EdgeInsets.fromLTRB(16, 16, 16, 8), + actionsPadding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + title: Row( + children: [ + Icon(Icons.linear_scale, color: Colors.blue, size: 16), + const SizedBox(width: 6), + Text( + 'Go to Line', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + fontFamily: 'Segoe UI', + color: Colors.grey.shade800, + ), + ), + ], + ), + content: SizedBox( + width: 280, + child: TextField( + decoration: InputDecoration( + hintText: 'Enter line number', + hintStyle: TextStyle(fontSize: 13, color: Colors.grey.shade500), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + borderSide: const BorderSide(color: Colors.blue, width: 2), + ), + contentPadding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 10, + ), + ), + style: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + keyboardType: TextInputType.number, + autofocus: true, + onSubmitted: (value) { + final lineNum = int.tryParse(value); + if (lineNum != null && lineNum > 0) { + _jumpToLine(lineNum); + } + Navigator.pop(context); + }, + ), ), actions: [ TextButton( onPressed: () => Navigator.pop(context), - child: const Text('Cancel'), + style: TextButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + ), + child: Text( + 'Cancel', + style: TextStyle( + fontSize: 13, + fontFamily: 'Segoe UI', + color: Colors.grey.shade600, + ), + ), ), ], ), @@ -614,52 +665,94 @@ class _ModernNotepadPageState extends State { builder: (context) => AlertDialog( backgroundColor: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.circular(6), side: BorderSide(color: Colors.grey.shade300, width: 1), ), - title: const Row( + contentPadding: const EdgeInsets.all(16), + titlePadding: const EdgeInsets.fromLTRB(16, 16, 16, 8), + actionsPadding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + title: Row( children: [ - Icon(Icons.search, color: Colors.blue, size: 20), - SizedBox(width: 8), - Text('Find', style: TextStyle(fontWeight: FontWeight.w600)), + Icon(Icons.search, color: Colors.blue, size: 16), + const SizedBox(width: 6), + Text( + 'Find', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + fontFamily: 'Segoe UI', + color: Colors.grey.shade800, + ), + ), ], ), - content: TextField( - controller: _searchController, - decoration: InputDecoration( - hintText: 'Enter text to find...', - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - borderSide: BorderSide(color: Colors.grey.shade300), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - borderSide: const BorderSide(color: Colors.blue, width: 2), + content: SizedBox( + width: 300, + child: TextField( + controller: _searchController, + decoration: InputDecoration( + hintText: 'Enter text to find...', + hintStyle: TextStyle(fontSize: 13, color: Colors.grey.shade500), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + borderSide: const BorderSide(color: Colors.blue, width: 2), + ), + prefixIcon: Icon( + Icons.search, + color: Colors.grey.shade600, + size: 18, + ), + contentPadding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 10, + ), ), - prefixIcon: Icon(Icons.search, color: Colors.grey.shade600), + style: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + autofocus: true, + onSubmitted: (_) => _performSearch(), ), - autofocus: true, - onSubmitted: (_) => _performSearch(), ), actions: [ TextButton( onPressed: () => Navigator.pop(context), - child: const Text('Cancel'), + style: TextButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + ), + child: Text( + 'Cancel', + style: TextStyle( + fontSize: 13, + fontFamily: 'Segoe UI', + color: Colors.grey.shade600, + ), + ), ), ElevatedButton.icon( - icon: const Icon(Icons.search_outlined, size: 16), + icon: const Icon(Icons.search_outlined, size: 14), label: const Text('Find All'), + style: ElevatedButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 2, + ), onPressed: () { _performSearch(); Navigator.pop(context); }, ), ElevatedButton.icon( - icon: const Icon(Icons.arrow_forward, size: 16), + icon: const Icon(Icons.arrow_forward, size: 14), label: const Text('Find Next'), style: ElevatedButton.styleFrom( backgroundColor: Colors.blue, foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 2, ), onPressed: () { _performSearch(); @@ -678,72 +771,127 @@ class _ModernNotepadPageState extends State { builder: (context) => AlertDialog( backgroundColor: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.circular(6), side: BorderSide(color: Colors.grey.shade300, width: 1), ), - title: const Row( + contentPadding: const EdgeInsets.all(16), + titlePadding: const EdgeInsets.fromLTRB(16, 16, 16, 8), + actionsPadding: const EdgeInsets.fromLTRB(16, 8, 16, 16), + title: Row( children: [ - Icon(Icons.find_replace, color: Colors.blue, size: 20), - SizedBox(width: 8), + Icon(Icons.find_replace, color: Colors.blue, size: 16), + const SizedBox(width: 6), Text( 'Find and Replace', - style: TextStyle(fontWeight: FontWeight.w600), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + fontFamily: 'Segoe UI', + color: Colors.grey.shade800, + ), ), ], ), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - controller: _searchController, - decoration: InputDecoration( - labelText: 'Find', - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - borderSide: const BorderSide(color: Colors.blue, width: 2), + content: SizedBox( + width: 300, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + controller: _searchController, + decoration: InputDecoration( + labelText: 'Find', + labelStyle: TextStyle( + fontSize: 13, + color: Colors.grey.shade600, + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + borderSide: const BorderSide(color: Colors.blue, width: 2), + ), + prefixIcon: Icon( + Icons.search, + color: Colors.grey.shade600, + size: 18, + ), + contentPadding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 10, + ), ), - prefixIcon: Icon(Icons.search, color: Colors.grey.shade600), + style: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), ), - ), - const SizedBox(height: 16), - TextField( - controller: _replaceController, - decoration: InputDecoration( - labelText: 'Replace with', - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(8), - borderSide: const BorderSide(color: Colors.blue, width: 2), + const SizedBox(height: 12), + TextField( + controller: _replaceController, + decoration: InputDecoration( + labelText: 'Replace with', + labelStyle: TextStyle( + fontSize: 13, + color: Colors.grey.shade600, + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + borderSide: const BorderSide(color: Colors.blue, width: 2), + ), + prefixIcon: Icon( + Icons.edit, + color: Colors.grey.shade600, + size: 18, + ), + contentPadding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 10, + ), ), - prefixIcon: Icon(Icons.edit, color: Colors.grey.shade600), + style: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), ), - ), - ], + ], + ), ), actions: [ TextButton( onPressed: () => Navigator.pop(context), - child: const Text('Cancel'), + style: TextButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + ), + child: Text( + 'Cancel', + style: TextStyle( + fontSize: 13, + fontFamily: 'Segoe UI', + color: Colors.grey.shade600, + ), + ), ), ElevatedButton.icon( - icon: const Icon(Icons.search_outlined, size: 16), + icon: const Icon(Icons.search_outlined, size: 14), label: const Text('Find All'), + style: ElevatedButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 2, + ), onPressed: () { _performSearch(); Navigator.pop(context); }, ), ElevatedButton.icon( - icon: const Icon(Icons.swap_horiz, size: 16), + icon: const Icon(Icons.swap_horiz, size: 14), label: const Text('Replace'), style: ElevatedButton.styleFrom( backgroundColor: Colors.orange, foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 2, ), onPressed: () { _replaceSelected(); @@ -751,11 +899,14 @@ class _ModernNotepadPageState extends State { }, ), ElevatedButton.icon( - icon: const Icon(Icons.swap_vert, size: 16), + icon: const Icon(Icons.swap_vert, size: 14), label: const Text('Replace All'), style: ElevatedButton.styleFrom( backgroundColor: Colors.red, foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 2, ), onPressed: () { _replaceAll(); @@ -959,7 +1110,7 @@ class _ModernNotepadPageState extends State { _isModified = false; }); - _showSnackBar('File saved as ${_currentFileName}'); + _showSnackBar('File saved as $_currentFileName'); } } catch (e) { _showSnackBar('Error saving file: $e'); @@ -1243,12 +1394,13 @@ class _ModernNotepadPageState extends State { popupMenuTheme: PopupMenuThemeData( color: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8), + borderRadius: BorderRadius.circular(6), side: BorderSide( color: Colors.grey.shade300, width: 1, ), ), + elevation: 4, ), ), child: PopupMenuButton( @@ -1298,15 +1450,20 @@ class _ModernNotepadPageState extends State { }, itemBuilder: (context) => [ PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'new', child: Row( children: [ - const Icon(Icons.note_add, size: 16), + const Icon(Icons.note_add, size: 14), const SizedBox(width: 8), Text( 'New (Ctrl+N)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1316,15 +1473,20 @@ class _ModernNotepadPageState extends State { ), ), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'open', child: Row( children: [ - const Icon(Icons.folder_open, size: 16), + const Icon(Icons.folder_open, size: 14), const SizedBox(width: 8), Text( 'Open (Ctrl+O)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1333,17 +1495,21 @@ class _ModernNotepadPageState extends State { ], ), ), - const PopupMenuDivider(), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'save', child: Row( children: [ - const Icon(Icons.save, size: 16), + const Icon(Icons.save, size: 14), const SizedBox(width: 8), Text( 'Save (Ctrl+S)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1353,15 +1519,20 @@ class _ModernNotepadPageState extends State { ), ), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'save_as', child: Row( children: [ - const Icon(Icons.save_as, size: 16), + const Icon(Icons.save_as, size: 14), const SizedBox(width: 8), Text( 'Save As (Ctrl+Shift+S)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1370,17 +1541,21 @@ class _ModernNotepadPageState extends State { ], ), ), - const PopupMenuDivider(), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'exit', child: Row( children: [ - const Icon(Icons.exit_to_app, size: 16), + const Icon(Icons.exit_to_app, size: 14), const SizedBox(width: 8), Text( 'Exit', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1404,7 +1579,7 @@ class _ModernNotepadPageState extends State { popupMenuTheme: PopupMenuThemeData( color: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8), + borderRadius: BorderRadius.circular(6), side: BorderSide( color: _isChaosEnabled ? Colors.red.shade200 @@ -1412,6 +1587,7 @@ class _ModernNotepadPageState extends State { width: 1, ), ), + elevation: 4, ), ), child: PopupMenuButton( @@ -1468,15 +1644,20 @@ class _ModernNotepadPageState extends State { }, itemBuilder: (context) => [ PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'select_all', child: Row( children: [ - const Icon(Icons.select_all, size: 16), + const Icon(Icons.select_all, size: 14), const SizedBox(width: 8), Text( 'Select All (Ctrl+A)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1485,17 +1666,21 @@ class _ModernNotepadPageState extends State { ], ), ), - const PopupMenuDivider(), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'find', child: Row( children: [ - const Icon(Icons.search, size: 16), + const Icon(Icons.search, size: 14), const SizedBox(width: 8), Text( 'Find (Ctrl+F)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1505,15 +1690,20 @@ class _ModernNotepadPageState extends State { ), ), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'replace', child: Row( children: [ - const Icon(Icons.find_replace, size: 16), + const Icon(Icons.find_replace, size: 14), const SizedBox(width: 8), Text( 'Replace (Ctrl+H)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1522,17 +1712,21 @@ class _ModernNotepadPageState extends State { ], ), ), - const PopupMenuDivider(), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'clear', child: Row( children: [ - const Icon(Icons.clear_all, size: 16), + const Icon(Icons.clear_all, size: 14), const SizedBox(width: 8), Text( 'Clear Formatting', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1542,15 +1736,20 @@ class _ModernNotepadPageState extends State { ), ), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'go_to_line', child: Row( children: [ - const Icon(Icons.linear_scale, size: 16), + const Icon(Icons.linear_scale, size: 14), const SizedBox(width: 8), Text( 'Go to Line (Ctrl+G)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', @@ -1560,15 +1759,20 @@ class _ModernNotepadPageState extends State { ), ), PopupMenuItem( + height: 32, + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 4, + ), value: 'insert_datetime', child: Row( children: [ - const Icon(Icons.access_time, size: 16), + const Icon(Icons.access_time, size: 14), const SizedBox(width: 8), Text( 'Insert Date/Time (F5)', style: TextStyle( - fontSize: 12, + fontSize: 13, fontWeight: FontWeight.w400, color: Colors.grey.shade800, fontFamily: 'Segoe UI', diff --git a/pubspec.lock b/pubspec.lock index 9767cb9fa..e3e6c480b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -41,6 +41,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + url: "https://pub.dev" + source: hosted + version: "0.3.4+2" cupertino_icons: dependency: "direct main" description: @@ -69,10 +77,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "1bbf65dd997458a08b531042ec3794112a6c39c07c37ff22113d2e7e4f81d4e4" + sha256: ab13ae8ef5580a411c458d6207b6774a6c237d77ac37011b13994879f68a8810 url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "8.3.7" flutter: dependency: "direct main" description: flutter @@ -245,6 +253,14 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.0" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 009c45218..ce1979b22 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: sdk: flutter cupertino_icons: ^1.0.8 - file_picker: ^6.1.1 + file_picker: ^8.1.2 dev_dependencies: flutter_test: From d21332d95eaf2c6cd4a37e5eea440214ef894e31 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 00:18:27 +0530 Subject: [PATCH 16/27] UI Complete, finally --- lib/main.dart | 239 +++++++++++++++++++++++++++++++------------------- 1 file changed, 147 insertions(+), 92 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 0d0da6451..91282ca6c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -266,10 +266,10 @@ class MyApp extends StatelessWidget { theme: ThemeData( brightness: Brightness.light, colorScheme: const ColorScheme.light( - primary: Colors.blue, + primary: Colors.black87, surface: Colors.white, ), - scaffoldBackgroundColor: Colors.white, + scaffoldBackgroundColor: Colors.grey.shade50, fontFamily: 'Segoe UI', ), home: const ModernNotepadPage(), @@ -556,15 +556,15 @@ class _ModernNotepadPageState extends State { builder: (context) => AlertDialog( backgroundColor: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(6), - side: BorderSide(color: Colors.grey.shade300, width: 1), + borderRadius: BorderRadius.circular(4), + side: BorderSide(color: Colors.grey.shade300, width: 0.5), ), contentPadding: const EdgeInsets.all(16), titlePadding: const EdgeInsets.fromLTRB(16, 16, 16, 8), actionsPadding: const EdgeInsets.fromLTRB(16, 8, 16, 16), title: Row( children: [ - Icon(Icons.linear_scale, color: Colors.blue, size: 16), + Icon(Icons.linear_scale, color: Colors.black87, size: 16), const SizedBox(width: 6), Text( 'Go to Line', @@ -572,7 +572,7 @@ class _ModernNotepadPageState extends State { fontSize: 14, fontWeight: FontWeight.w600, fontFamily: 'Segoe UI', - color: Colors.grey.shade800, + color: Colors.black87, ), ), ], @@ -584,11 +584,11 @@ class _ModernNotepadPageState extends State { hintText: 'Enter line number', hintStyle: TextStyle(fontSize: 13, color: Colors.grey.shade500), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), ), focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), - borderSide: const BorderSide(color: Colors.blue, width: 2), + borderRadius: BorderRadius.circular(4), + borderSide: BorderSide(color: Colors.black87, width: 1), ), contentPadding: const EdgeInsets.symmetric( horizontal: 12, @@ -665,15 +665,15 @@ class _ModernNotepadPageState extends State { builder: (context) => AlertDialog( backgroundColor: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(6), - side: BorderSide(color: Colors.grey.shade300, width: 1), + borderRadius: BorderRadius.circular(4), + side: BorderSide(color: Colors.grey.shade300, width: 0.5), ), contentPadding: const EdgeInsets.all(16), titlePadding: const EdgeInsets.fromLTRB(16, 16, 16, 8), actionsPadding: const EdgeInsets.fromLTRB(16, 8, 16, 16), title: Row( children: [ - Icon(Icons.search, color: Colors.blue, size: 16), + Icon(Icons.search, color: Colors.black87, size: 16), const SizedBox(width: 6), Text( 'Find', @@ -681,7 +681,7 @@ class _ModernNotepadPageState extends State { fontSize: 14, fontWeight: FontWeight.w600, fontFamily: 'Segoe UI', - color: Colors.grey.shade800, + color: Colors.black87, ), ), ], @@ -694,12 +694,12 @@ class _ModernNotepadPageState extends State { hintText: 'Enter text to find...', hintStyle: TextStyle(fontSize: 13, color: Colors.grey.shade500), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), borderSide: BorderSide(color: Colors.grey.shade300), ), focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), - borderSide: const BorderSide(color: Colors.blue, width: 2), + borderRadius: BorderRadius.circular(4), + borderSide: BorderSide(color: Colors.black87, width: 1), ), prefixIcon: Icon( Icons.search, @@ -732,12 +732,19 @@ class _ModernNotepadPageState extends State { ), ), ElevatedButton.icon( - icon: const Icon(Icons.search_outlined, size: 14), + icon: Icon( + Icons.search_outlined, + size: 14, + color: Colors.grey.shade700, + ), label: const Text('Find All'), style: ElevatedButton.styleFrom( + backgroundColor: Colors.white, + foregroundColor: Colors.black87, + side: BorderSide(color: Colors.grey.shade300, width: 0.5), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), - elevation: 2, + elevation: 1, ), onPressed: () { _performSearch(); @@ -745,14 +752,14 @@ class _ModernNotepadPageState extends State { }, ), ElevatedButton.icon( - icon: const Icon(Icons.arrow_forward, size: 14), + icon: Icon(Icons.arrow_forward, size: 14, color: Colors.white), label: const Text('Find Next'), style: ElevatedButton.styleFrom( - backgroundColor: Colors.blue, + backgroundColor: Colors.black87, foregroundColor: Colors.white, padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), - elevation: 2, + elevation: 1, ), onPressed: () { _performSearch(); @@ -771,15 +778,15 @@ class _ModernNotepadPageState extends State { builder: (context) => AlertDialog( backgroundColor: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(6), - side: BorderSide(color: Colors.grey.shade300, width: 1), + borderRadius: BorderRadius.circular(4), + side: BorderSide(color: Colors.grey.shade300, width: 0.5), ), contentPadding: const EdgeInsets.all(16), titlePadding: const EdgeInsets.fromLTRB(16, 16, 16, 8), actionsPadding: const EdgeInsets.fromLTRB(16, 8, 16, 16), title: Row( children: [ - Icon(Icons.find_replace, color: Colors.blue, size: 16), + Icon(Icons.find_replace, color: Colors.black87, size: 16), const SizedBox(width: 6), Text( 'Find and Replace', @@ -787,7 +794,7 @@ class _ModernNotepadPageState extends State { fontSize: 14, fontWeight: FontWeight.w600, fontFamily: 'Segoe UI', - color: Colors.grey.shade800, + color: Colors.black87, ), ), ], @@ -806,11 +813,11 @@ class _ModernNotepadPageState extends State { color: Colors.grey.shade600, ), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), ), focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), - borderSide: const BorderSide(color: Colors.blue, width: 2), + borderRadius: BorderRadius.circular(4), + borderSide: BorderSide(color: Colors.black87, width: 1), ), prefixIcon: Icon( Icons.search, @@ -834,11 +841,11 @@ class _ModernNotepadPageState extends State { color: Colors.grey.shade600, ), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), ), focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(6), - borderSide: const BorderSide(color: Colors.blue, width: 2), + borderRadius: BorderRadius.circular(4), + borderSide: BorderSide(color: Colors.black87, width: 1), ), prefixIcon: Icon( Icons.edit, @@ -871,12 +878,19 @@ class _ModernNotepadPageState extends State { ), ), ElevatedButton.icon( - icon: const Icon(Icons.search_outlined, size: 14), + icon: Icon( + Icons.search_outlined, + size: 14, + color: Colors.grey.shade700, + ), label: const Text('Find All'), style: ElevatedButton.styleFrom( + backgroundColor: Colors.white, + foregroundColor: Colors.black87, + side: BorderSide(color: Colors.grey.shade300, width: 0.5), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), - elevation: 2, + elevation: 1, ), onPressed: () { _performSearch(); @@ -884,14 +898,14 @@ class _ModernNotepadPageState extends State { }, ), ElevatedButton.icon( - icon: const Icon(Icons.swap_horiz, size: 14), + icon: Icon(Icons.swap_horiz, size: 14, color: Colors.white), label: const Text('Replace'), style: ElevatedButton.styleFrom( - backgroundColor: Colors.orange, + backgroundColor: Colors.grey.shade700, foregroundColor: Colors.white, padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), - elevation: 2, + elevation: 1, ), onPressed: () { _replaceSelected(); @@ -899,14 +913,14 @@ class _ModernNotepadPageState extends State { }, ), ElevatedButton.icon( - icon: const Icon(Icons.swap_vert, size: 14), + icon: Icon(Icons.swap_vert, size: 14, color: Colors.white), label: const Text('Replace All'), style: ElevatedButton.styleFrom( - backgroundColor: Colors.red, + backgroundColor: Colors.black87, foregroundColor: Colors.white, padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), - elevation: 2, + elevation: 1, ), onPressed: () { _replaceAll(); @@ -1238,15 +1252,18 @@ class _ModernNotepadPageState extends State { child: Focus( autofocus: true, child: Scaffold( - backgroundColor: Colors.white, + backgroundColor: Colors.grey.shade50, body: Column( children: [ Container( height: 36, - decoration: const BoxDecoration( + decoration: BoxDecoration( color: Colors.white, border: Border( - bottom: BorderSide(color: Color(0xFFE0E0E0), width: 0.5), + bottom: BorderSide( + color: Colors.grey.shade200, + width: 0.5, + ), ), ), child: Row( @@ -1262,7 +1279,7 @@ class _ModernNotepadPageState extends State { return Container( margin: const EdgeInsets.symmetric( - horizontal: 3, + horizontal: 2, vertical: 4, ), padding: const EdgeInsets.symmetric( @@ -1271,21 +1288,21 @@ class _ModernNotepadPageState extends State { ), decoration: BoxDecoration( color: isActive - ? Colors.blue.shade50 - : Colors.pink.shade50, - borderRadius: BorderRadius.circular(8), + ? Colors.white + : Colors.grey.shade100, + borderRadius: BorderRadius.circular(4), border: Border.all( color: isActive - ? Colors.blue.shade200 - : Colors.pink.shade100, - width: 0.8, + ? Colors.grey.shade300 + : Colors.grey.shade200, + width: 0.5, ), ), child: Material( color: Colors.transparent, child: InkWell( onTap: () => _switchToTab(index), - borderRadius: BorderRadius.circular(8), + borderRadius: BorderRadius.circular(4), child: Row( mainAxisSize: MainAxisSize.min, children: [ @@ -1297,9 +1314,9 @@ class _ModernNotepadPageState extends State { fontSize: 10, fontWeight: isActive ? FontWeight.w600 - : FontWeight.w500, + : FontWeight.w400, color: isActive - ? Colors.blue.shade700 + ? Colors.black87 : Colors.grey.shade600, ), ), @@ -1315,7 +1332,7 @@ class _ModernNotepadPageState extends State { Icons.close, size: 10, color: isActive - ? Colors.blue.shade400 + ? Colors.grey.shade600 : Colors.grey.shade400, ), ), @@ -1394,13 +1411,13 @@ class _ModernNotepadPageState extends State { popupMenuTheme: PopupMenuThemeData( color: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), side: BorderSide( color: Colors.grey.shade300, - width: 1, + width: 0.5, ), ), - elevation: 4, + elevation: 2, ), ), child: PopupMenuButton( @@ -1415,7 +1432,7 @@ class _ModernNotepadPageState extends State { Icon( Icons.folder_outlined, size: 12, - color: Colors.grey.shade600, + color: Colors.black87, ), const SizedBox(width: 4), Text( @@ -1423,7 +1440,7 @@ class _ModernNotepadPageState extends State { style: TextStyle( fontSize: 11, fontWeight: FontWeight.w500, - color: Colors.grey.shade600, + color: Colors.black87, ), ), ], @@ -1458,14 +1475,18 @@ class _ModernNotepadPageState extends State { value: 'new', child: Row( children: [ - const Icon(Icons.note_add, size: 14), + Icon( + Icons.note_add, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'New (Ctrl+N)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1481,14 +1502,18 @@ class _ModernNotepadPageState extends State { value: 'open', child: Row( children: [ - const Icon(Icons.folder_open, size: 14), + Icon( + Icons.folder_open, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Open (Ctrl+O)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1504,14 +1529,18 @@ class _ModernNotepadPageState extends State { value: 'save', child: Row( children: [ - const Icon(Icons.save, size: 14), + Icon( + Icons.save, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Save (Ctrl+S)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1527,14 +1556,18 @@ class _ModernNotepadPageState extends State { value: 'save_as', child: Row( children: [ - const Icon(Icons.save_as, size: 14), + Icon( + Icons.save_as, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Save As (Ctrl+Shift+S)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1550,14 +1583,18 @@ class _ModernNotepadPageState extends State { value: 'exit', child: Row( children: [ - const Icon(Icons.exit_to_app, size: 14), + Icon( + Icons.exit_to_app, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Exit', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1579,15 +1616,13 @@ class _ModernNotepadPageState extends State { popupMenuTheme: PopupMenuThemeData( color: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(6), + borderRadius: BorderRadius.circular(4), side: BorderSide( - color: _isChaosEnabled - ? Colors.red.shade200 - : Colors.grey.shade300, - width: 1, + color: Colors.grey.shade300, + width: 0.5, ), ), - elevation: 4, + elevation: 2, ), ), child: PopupMenuButton( @@ -1602,9 +1637,7 @@ class _ModernNotepadPageState extends State { Icon( Icons.edit_outlined, size: 12, - color: _isChaosEnabled - ? Colors.red.shade400 - : Colors.grey.shade600, + color: Colors.black87, ), const SizedBox(width: 4), Text( @@ -1612,9 +1645,7 @@ class _ModernNotepadPageState extends State { style: TextStyle( fontSize: 11, fontWeight: FontWeight.w500, - color: _isChaosEnabled - ? Colors.red.shade600 - : Colors.grey.shade600, + color: Colors.black87, ), ), ], @@ -1652,14 +1683,18 @@ class _ModernNotepadPageState extends State { value: 'select_all', child: Row( children: [ - const Icon(Icons.select_all, size: 14), + Icon( + Icons.select_all, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Select All (Ctrl+A)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1675,14 +1710,18 @@ class _ModernNotepadPageState extends State { value: 'find', child: Row( children: [ - const Icon(Icons.search, size: 14), + Icon( + Icons.search, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Find (Ctrl+F)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1698,14 +1737,18 @@ class _ModernNotepadPageState extends State { value: 'replace', child: Row( children: [ - const Icon(Icons.find_replace, size: 14), + Icon( + Icons.find_replace, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Replace (Ctrl+H)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1721,14 +1764,18 @@ class _ModernNotepadPageState extends State { value: 'clear', child: Row( children: [ - const Icon(Icons.clear_all, size: 14), + Icon( + Icons.clear_all, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Clear Formatting', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1744,14 +1791,18 @@ class _ModernNotepadPageState extends State { value: 'go_to_line', child: Row( children: [ - const Icon(Icons.linear_scale, size: 14), + Icon( + Icons.linear_scale, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Go to Line (Ctrl+G)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), @@ -1767,14 +1818,18 @@ class _ModernNotepadPageState extends State { value: 'insert_datetime', child: Row( children: [ - const Icon(Icons.access_time, size: 14), + Icon( + Icons.access_time, + size: 14, + color: Colors.black87, + ), const SizedBox(width: 8), Text( 'Insert Date/Time (F5)', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, - color: Colors.grey.shade800, + color: Colors.black87, fontFamily: 'Segoe UI', ), ), From ee1854311eed19e36d255b9eeeff38aa83bcff52 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 00:37:24 +0530 Subject: [PATCH 17/27] more inconvenience --- lib/main.dart | 274 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 266 insertions(+), 8 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 91282ca6c..b88e51ac3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -33,10 +33,10 @@ class ChaosManager { void _executeChaosAction() { final actions = [ - _cursorTeleportation, - _randomDeletion, - _letterOrWordSwapping, - _punctuationInjection, + cursorTeleportation, + randomDeletion, + letterOrWordSwapping, + punctuationInjection, ]; // Pick a random action @@ -63,7 +63,7 @@ class ChaosManager { textController.text = lines.join('\n'); } - void _cursorTeleportation() { + void cursorTeleportation() { final text = textController.text; if (text.isEmpty) return; @@ -71,7 +71,7 @@ class ChaosManager { textController.selection = TextSelection.collapsed(offset: newPosition); } - void _randomDeletion() { + void randomDeletion() { final text = textController.text; if (text.isEmpty) return; @@ -92,7 +92,7 @@ class ChaosManager { } } - void _letterOrWordSwapping() { + void letterOrWordSwapping() { final text = textController.text; if (text.length < 2) return; @@ -162,7 +162,7 @@ class ChaosManager { } } - void _punctuationInjection() { + void punctuationInjection() { final text = textController.text; if (text.isEmpty) return; @@ -176,6 +176,90 @@ class ChaosManager { } } +// TypingSpeedMonitor handles speed-based chaos escalation +class TypingSpeedMonitor { + final Random _random = Random(); + final VoidCallback showSpeedWarning; + final VoidCallback forceShutdown; + final VoidCallback triggerSpeedChaos; + + // Typing speed tracking + final List _keystrokes = []; + Timer? _speedCheckTimer; + int _speedViolationCount = 0; + + // Speed thresholds (characters per minute) + static const int _warningThreshold = 300; // 5 chars/sec + static const int _chaosThreshold = 450; // 7.5 chars/sec + static const int _shutdownThreshold = 600; // 10 chars/sec + + TypingSpeedMonitor({ + required this.showSpeedWarning, + required this.forceShutdown, + required this.triggerSpeedChaos, + }); + + void startMonitoring() { + _speedCheckTimer = Timer.periodic(const Duration(seconds: 2), (_) { + _checkTypingSpeed(); + }); + } + + void stopMonitoring() { + _speedCheckTimer?.cancel(); + _keystrokes.clear(); + _speedViolationCount = 0; + } + + void recordKeystroke() { + final now = DateTime.now(); + _keystrokes.add(now); + + // Keep only keystrokes from the last 10 seconds + _keystrokes.removeWhere((time) => now.difference(time).inSeconds > 10); + } + + void _checkTypingSpeed() { + if (_keystrokes.isEmpty) return; + + final now = DateTime.now(); + final recentKeystrokes = _keystrokes + .where((time) => now.difference(time).inSeconds <= 6) + .length; + + // Calculate characters per minute + final cpm = (recentKeystrokes * 10); // Rough approximation + + if (cpm >= _shutdownThreshold) { + _speedViolationCount++; + if (_speedViolationCount >= 3) { + // Ultimate punishment + forceShutdown(); + return; + } + showSpeedWarning(); + triggerSpeedChaos(); + } else if (cpm >= _chaosThreshold) { + _speedViolationCount++; + triggerSpeedChaos(); + if (_random.nextDouble() < 0.7) { + // 70% chance + showSpeedWarning(); + } + } else if (cpm >= _warningThreshold) { + if (_random.nextDouble() < 0.4) { + // 40% chance + showSpeedWarning(); + } + } else { + // Reduce violation count if typing slows down + if (_speedViolationCount > 0) { + _speedViolationCount = (_speedViolationCount - 1).clamp(0, 10); + } + } + } +} + // Intent classes for keyboard shortcuts class SelectAllIntent extends Intent { const SelectAllIntent(); @@ -304,6 +388,7 @@ class _ModernNotepadPageState extends State { // Chaos mode state final bool _isChaosEnabled = false; ChaosManager? _chaosManager; + TypingSpeedMonitor? _typingSpeedMonitor; // Computed properties for current tab TabData get _currentTab => _tabs[_currentTabIndex]; @@ -335,6 +420,7 @@ class _ModernNotepadPageState extends State { // Initialize ChaosManager with the current controller _initializeChaosManager(); + _initializeTypingSpeedMonitor(); // Set initial cursor position to column 30 WidgetsBinding.instance.addPostFrameCallback((_) { @@ -358,9 +444,177 @@ class _ModernNotepadPageState extends State { _chaosManager?.startChaos(); } + void _initializeTypingSpeedMonitor() { + // Stop existing monitor if it exists + _typingSpeedMonitor?.stopMonitoring(); + + // Initialize TypingSpeedMonitor + _typingSpeedMonitor = TypingSpeedMonitor( + showSpeedWarning: _showSpeedWarning, + forceShutdown: _forceShutdown, + triggerSpeedChaos: _triggerSpeedChaos, + ); + + // Start monitoring + _typingSpeedMonitor?.startMonitoring(); + } + + void _showSpeedWarning() { + final messages = [ + "🐌 SLOW DOWN THERE, SPEEDRACER! 🐌\nThe system can't handle your lightning fingers!", + "⚡ TYPING SPEED VIOLATION DETECTED ⚡\nYou're going faster than a caffeinated cheetah!", + "🚨 SPEED LIMIT EXCEEDED 🚨\nThis is a text editor, not a racing game!", + "🔥 BURNING RUBBER ON THE KEYBOARD? 🔥\nSlow down before you break something!", + "⚠️ DANGER: HYPERSONIC TYPING ⚠️\nYour fingers are moving faster than the speed of light!", + "🎯 TYPING SPEED: LUDICROUS MODE 🎯\nEven NASA computers are jealous!", + "💨 WHOOSH! TOO FAST! 💨\nYou're typing so fast, you're creating a time paradox!", + ]; + + final randomMessage = messages[Random().nextInt(messages.length)]; + + showDialog( + context: context, + barrierDismissible: false, + builder: (context) => AlertDialog( + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4), + side: BorderSide(color: Colors.grey.shade300, width: 0.5), + ), + contentPadding: const EdgeInsets.all(20), + titlePadding: const EdgeInsets.fromLTRB(20, 20, 20, 8), + actionsPadding: const EdgeInsets.fromLTRB(20, 8, 20, 20), + title: Row( + children: [ + Icon(Icons.warning, color: Colors.black87, size: 20), + const SizedBox(width: 8), + Text( + 'SPEED WARNING', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontFamily: 'Segoe UI', + color: Colors.black87, + ), + ), + ], + ), + content: SizedBox( + width: 350, + child: Text( + randomMessage, + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black87, + height: 1.4, + ), + textAlign: TextAlign.center, + ), + ), + actions: [ + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.black87, + foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 1, + ), + onPressed: () => Navigator.pop(context), + child: const Text('I\'LL SLOW DOWN, I PROMISE!'), + ), + ], + ), + ); + } + + void _forceShutdown() { + showDialog( + context: context, + barrierDismissible: false, + builder: (context) => AlertDialog( + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4), + side: BorderSide(color: Colors.grey.shade300, width: 0.5), + ), + contentPadding: const EdgeInsets.all(20), + titlePadding: const EdgeInsets.fromLTRB(20, 20, 20, 8), + actionsPadding: const EdgeInsets.fromLTRB(20, 8, 20, 20), + title: Row( + children: [ + Icon(Icons.power_off, color: Colors.black87, size: 20), + const SizedBox(width: 8), + Text( + 'SYSTEM OVERLOAD', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontFamily: 'Segoe UI', + color: Colors.black87, + ), + ), + ], + ), + content: SizedBox( + width: 350, + child: Text( + "💥 CRITICAL ERROR: FINGERS TOO FAST! 💥\n\nYour typing speed has exceeded all known limits of human capability! The application must shut down to prevent a keyboard singularity from forming.\n\nFarewell, speed demon! 👋", + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black87, + height: 1.4, + ), + textAlign: TextAlign.center, + ), + ), + actions: [ + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.black87, + foregroundColor: Colors.white, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 1, + ), + onPressed: () { + Navigator.pop(context); + // Force close app after brief delay + Timer(const Duration(seconds: 1), () { + SystemNavigator.pop(); + }); + }, + child: const Text('ACCEPT DEFEAT'), + ), + ], + ), + ); + } + + void _triggerSpeedChaos() { + // Trigger additional chaos beyond normal chaos manager + // Call chaos manager's methods directly + if (_chaosManager != null) { + final extraChaosActions = [ + () => _chaosManager!.cursorTeleportation(), + () => _chaosManager!.cursorTeleportation(), // Extra cursor chaos + () => _chaosManager!.punctuationInjection(), + () => _chaosManager!.randomDeletion(), + ]; + + final action = + extraChaosActions[Random().nextInt(extraChaosActions.length)]; + action(); + setState(() {}); + } + } + @override void dispose() { _chaosManager?.stopChaos(); + _typingSpeedMonitor?.stopMonitoring(); _controller.removeListener(_updateStats); // Dispose all tabs @@ -404,6 +658,7 @@ class _ModernNotepadPageState extends State { // Reinitialize chaos manager for the new active tab _initializeChaosManager(); + _initializeTypingSpeedMonitor(); // Focus the selected tab WidgetsBinding.instance.addPostFrameCallback((_) { @@ -477,6 +732,9 @@ class _ModernNotepadPageState extends State { _isModified = true; }); _updateStats(); + + // Record keystroke for speed monitoring + _typingSpeedMonitor?.recordKeystroke(); } // File handling methods From 1a7f91e305a0a15e84e997d2cc8e836d06539b88 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 02:59:14 +0530 Subject: [PATCH 18/27] fixed violations --- lib/main.dart | 737 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 644 insertions(+), 93 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index b88e51ac3..76cf67c36 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,17 +32,30 @@ class ChaosManager { } void _executeChaosAction() { - final actions = [ - cursorTeleportation, - randomDeletion, - letterOrWordSwapping, - punctuationInjection, - ]; - - // Pick a random action - final action = actions[_random.nextInt(actions.length)]; - action(); - updateState(); + // Adjusted probabilities - letter operations favored over word deletion + final chaosActions = { + 0.35: () => randomLetterDeletion(), // 35% - High: Remove single letters + 0.25: () => letterSwapping(), // 25% - High: Swap letters within words + 0.15: () => cursorTeleportation(), // 15% - Medium: Move cursor randomly + 0.10: () => + punctuationInjection(), // 10% - Medium: Add random punctuation + 0.08: () => randomSpaceAddition(), // 8% - Low: Add random spaces + 0.05: () => wordDeletion(), // 5% - Lower: Remove entire words + 0.02: () => wordSwapping(), // 2% - Lowest: Swap words between lines + }; + + // Generate random number and select action based on cumulative probability + final randomValue = _random.nextDouble(); + double cumulativeProbability = 0.0; + + for (final entry in chaosActions.entries) { + cumulativeProbability += entry.key; + if (randomValue <= cumulativeProbability) { + entry.value(); + updateState(); + return; + } + } } // Random Indentation on Save - will be called from save method @@ -174,29 +187,322 @@ class ChaosManager { text.substring(0, position) + punctuation + text.substring(position); textController.text = newText; } + + // Specialized chaos methods with specific probabilities + void randomLetterDeletion() { + final text = textController.text; + if (text.isEmpty) return; + + final position = _random.nextInt(text.length); + final newText = text.substring(0, position) + text.substring(position + 1); + textController.text = newText; + } + + void letterSwapping() { + final text = textController.text; + if (text.length < 2) return; + + // Find words with more than 1 character + final lines = text.split('\n'); + final words = []; + final positions = []; + int currentPos = 0; + + for (final line in lines) { + final lineWords = line.split(RegExp(r'\s+')); + for (final word in lineWords) { + if (word.length > 1) { + words.add(word); + positions.add(currentPos + line.indexOf(word)); + } + } + currentPos += line.length + 1; // +1 for newline + } + + if (words.isNotEmpty) { + final wordIndex = _random.nextInt(words.length); + final word = words[wordIndex]; + final chars = word.split(''); + + if (chars.length > 1) { + final pos1 = _random.nextInt(chars.length); + int pos2 = _random.nextInt(chars.length); + while (pos2 == pos1) { + pos2 = _random.nextInt(chars.length); + } + + final temp = chars[pos1]; + chars[pos1] = chars[pos2]; + chars[pos2] = temp; + + final newWord = chars.join(''); + textController.text = text.replaceFirst(word, newWord); + } + } + } + + void wordDeletion() { + final text = textController.text; + if (text.isEmpty) return; + + final words = text.split(RegExp(r'\s+')); + if (words.isNotEmpty) { + final wordIndex = _random.nextInt(words.length); + words.removeAt(wordIndex); + textController.text = words.join(' '); + } + } + + void wordSwapping() { + final text = textController.text; + final lines = text.split('\n'); + if (lines.length < 2) return; + + final line1Index = _random.nextInt(lines.length); + int line2Index = _random.nextInt(lines.length); + while (line2Index == line1Index) { + line2Index = _random.nextInt(lines.length); + } + + final words1 = lines[line1Index].split(RegExp(r'\s+')); + final words2 = lines[line2Index].split(RegExp(r'\s+')); + + if (words1.isNotEmpty && words2.isNotEmpty) { + final word1Index = _random.nextInt(words1.length); + final word2Index = _random.nextInt(words2.length); + + final temp = words1[word1Index]; + words1[word1Index] = words2[word2Index]; + words2[word2Index] = temp; + + lines[line1Index] = words1.join(' '); + lines[line2Index] = words2.join(' '); + + textController.text = lines.join('\n'); + } + } + + void randomSpaceAddition() { + final text = textController.text; + if (text.isEmpty) return; + + final position = _random.nextInt(text.length + 1); + final spacesToAdd = _random.nextInt(3) + 1; // Add 1-3 spaces + final spaces = ' ' * spacesToAdd; + + final newText = + text.substring(0, position) + spaces + text.substring(position); + textController.text = newText; + } + + // New gentler chaos methods for better user experience + void gentleLetterSwapping() { + final text = textController.text; + if (text.length < 2) return; + + // Only swap adjacent letters within words (much more recoverable) + final lines = text.split('\n'); + final words = []; + final positions = []; + int currentPos = 0; + + for (final line in lines) { + final lineWords = line.split(RegExp(r'\s+')); + for (final word in lineWords) { + if (word.length > 2) { + // Only swap in words with 3+ characters + words.add(word); + positions.add(currentPos + line.indexOf(word)); + } + } + currentPos += line.length + 1; // +1 for newline + } + + if (words.isNotEmpty) { + final wordIndex = _random.nextInt(words.length); + final word = words[wordIndex]; + final chars = word.split(''); + + if (chars.length > 2) { + // Only swap adjacent characters, not random ones + final pos1 = + 1 + _random.nextInt(chars.length - 2); // Avoid first and last char + final pos2 = pos1 + 1; + + final temp = chars[pos1]; + chars[pos1] = chars[pos2]; + chars[pos2] = temp; + + final newWord = chars.join(''); + textController.text = text.replaceFirst(word, newWord); + } + } + } + + void cursorNudge() { + final text = textController.text; + if (text.isEmpty) return; + + final currentPosition = textController.selection.baseOffset; + // Small nudge of 1-5 characters, not full teleportation + final nudgeDistance = + (_random.nextInt(5) + 1) * (_random.nextBool() ? 1 : -1); + final newPosition = (currentPosition + nudgeDistance).clamp(0, text.length); + + textController.selection = TextSelection.collapsed(offset: newPosition); + } + + void gentlePunctuationInjection() { + final text = textController.text; + if (text.isEmpty) return; + + // Only add gentle punctuation, no aggressive ones + final punctuations = ['.', ',', ';']; // Removed !, ?, : + final punctuation = punctuations[_random.nextInt(punctuations.length)]; + + // Try to insert at word boundaries or near spaces for more natural placement + final spacePositions = []; + for (int i = 0; i < text.length; i++) { + if (text[i] == ' ') { + spacePositions.add(i); + } + } + + final position = spacePositions.isNotEmpty + ? spacePositions[_random.nextInt(spacePositions.length)] + : _random.nextInt(text.length + 1); + + final newText = + text.substring(0, position) + punctuation + text.substring(position); + textController.text = newText; + } + + void randomCapitalization() { + final text = textController.text; + if (text.isEmpty) return; + + // Find letters to capitalize/decapitalize + final letters = []; + for (int i = 0; i < text.length; i++) { + if (RegExp(r'[a-zA-Z]').hasMatch(text[i])) { + letters.add(i); + } + } + + if (letters.isNotEmpty) { + final position = letters[_random.nextInt(letters.length)]; + final char = text[position]; + final newChar = char == char.toUpperCase() + ? char.toLowerCase() + : char.toUpperCase(); + + final newText = + text.substring(0, position) + newChar + text.substring(position + 1); + textController.text = newText; + } + } + + void doubleSpaceInsertion() { + final text = textController.text; + if (text.isEmpty) return; + + // Find existing spaces and make them double spaces + final spacePositions = []; + for (int i = 0; i < text.length; i++) { + if (text[i] == ' ' && (i == 0 || text[i - 1] != ' ')) { + spacePositions.add(i); + } + } + + if (spacePositions.isNotEmpty) { + final position = spacePositions[_random.nextInt(spacePositions.length)]; + final newText = + '${text.substring(0, position + 1)} ${text.substring(position + 1)}'; + textController.text = newText; + } else { + // If no spaces, just add one somewhere reasonable + final position = _random.nextInt(text.length + 1); + final newText = + '${text.substring(0, position)} ${text.substring(position)}'; + textController.text = newText; + } + } + + void gentleLetterDeletion() { + final text = textController.text; + if (text.length < 10) return; // Only delete if there's plenty of text + + // Avoid deleting from small words or important positions + final safePositions = []; + for (int i = 1; i < text.length - 1; i++) { + if (text[i] != ' ' && text[i - 1] != ' ' && text[i + 1] != ' ') { + safePositions.add(i); + } + } + + if (safePositions.isNotEmpty) { + final position = safePositions[_random.nextInt(safePositions.length)]; + final newText = + text.substring(0, position) + text.substring(position + 1); + textController.text = newText; + } + } + + void autocorrectMischief() { + final text = textController.text; + if (text.isEmpty) return; + + // Simple "autocorrect" style replacements that are obvious and easily fixed + final autocorrects = { + 'the ': 'teh ', + 'and ': 'adn ', + 'you ': 'yuo ', + 'that ': 'taht ', + 'with ': 'wiht ', + 'have ': 'ahve ', + 'this ': 'thsi ', + 'will ': 'wlil ', + 'your ': 'yuor ', + 'from ': 'form ', + }; + + for (final entry in autocorrects.entries) { + if (text.contains(entry.key) && _random.nextDouble() < 0.3) { + textController.text = text.replaceFirst(entry.key, entry.value); + break; + } + } + } } // TypingSpeedMonitor handles speed-based chaos escalation class TypingSpeedMonitor { - final Random _random = Random(); - final VoidCallback showSpeedWarning; + final Function(int) showSpeedWarning; // Pass violation count final VoidCallback forceShutdown; + final VoidCallback immediateShutdown; // New immediate shutdown callback final VoidCallback triggerSpeedChaos; + final VoidCallback showSubscriptionPrompt; // New subscription prompt + final bool Function() isDialogVisible; // Check if any dialog is visible // Typing speed tracking final List _keystrokes = []; + final Random _random = Random(); Timer? _speedCheckTimer; int _speedViolationCount = 0; + DateTime? _lastWarningTime; // Track when last warning was shown + bool _currentViolationAcknowledged = + true; // Track if current violation level has been acknowledged - // Speed thresholds (characters per minute) - static const int _warningThreshold = 300; // 5 chars/sec - static const int _chaosThreshold = 450; // 7.5 chars/sec - static const int _shutdownThreshold = 600; // 10 chars/sec + // Speed thresholds (words per minute - assuming 5 chars per word) + static const int _warningThreshold = 300; // 65 WPM (65 * 5 chars) TypingSpeedMonitor({ required this.showSpeedWarning, required this.forceShutdown, + required this.immediateShutdown, required this.triggerSpeedChaos, + required this.showSubscriptionPrompt, + required this.isDialogVisible, }); void startMonitoring() { @@ -209,6 +515,12 @@ class TypingSpeedMonitor { _speedCheckTimer?.cancel(); _keystrokes.clear(); _speedViolationCount = 0; + _lastWarningTime = null; // Reset warning timer + _currentViolationAcknowledged = true; // Reset acknowledgment flag + } + + void acknowledgeCurrentViolation() { + _currentViolationAcknowledged = true; } void recordKeystroke() { @@ -230,31 +542,46 @@ class TypingSpeedMonitor { // Calculate characters per minute final cpm = (recentKeystrokes * 10); // Rough approximation - if (cpm >= _shutdownThreshold) { - _speedViolationCount++; - if (_speedViolationCount >= 3) { - // Ultimate punishment - forceShutdown(); - return; - } - showSpeedWarning(); - triggerSpeedChaos(); - } else if (cpm >= _chaosThreshold) { - _speedViolationCount++; - triggerSpeedChaos(); - if (_random.nextDouble() < 0.7) { - // 70% chance - showSpeedWarning(); - } - } else if (cpm >= _warningThreshold) { - if (_random.nextDouble() < 0.4) { - // 40% chance - showSpeedWarning(); + // Only act if speed is above threshold and no dialog is currently visible + if (cpm >= _warningThreshold) { + // Check if enough time has passed since last warning (minimum 15 seconds gap - longer pause) + final canShowWarning = + _lastWarningTime == null || + now.difference(_lastWarningTime!).inSeconds >= 15; + + // Only increment violation count when we can show a warning and current violation hasn't been acknowledged + if (!isDialogVisible() && + canShowWarning && + _currentViolationAcknowledged) { + _speedViolationCount++; + _lastWarningTime = now; + _currentViolationAcknowledged = + false; // Mark current violation as not acknowledged + + if (_speedViolationCount == 1) { + // First violation - show sarcastic warning + showSpeedWarning(_speedViolationCount); + triggerSpeedChaos(); + } else if (_speedViolationCount == 2) { + // Second violation - show subscription prompt or another sarcastic warning + if (_random.nextBool()) { + showSubscriptionPrompt(); // 50% chance for subscription + } else { + showSpeedWarning(_speedViolationCount); // 50% chance for warning + } + triggerSpeedChaos(); + } else if (_speedViolationCount >= 3) { + // Third violation - shutdown + forceShutdown(); + return; + } } } else { - // Reduce violation count if typing slows down + // Reduce violation count if typing slows down (below warning threshold) if (_speedViolationCount > 0) { _speedViolationCount = (_speedViolationCount - 1).clamp(0, 10); + _currentViolationAcknowledged = + true; // Reset acknowledgment when slowing down } } } @@ -390,6 +717,11 @@ class _ModernNotepadPageState extends State { ChaosManager? _chaosManager; TypingSpeedMonitor? _typingSpeedMonitor; + // Speed violation tracking + int _speedViolationCount = 0; + bool _isSpeedWarningVisible = false; + bool _isSubscriptionPromptVisible = false; + // Computed properties for current tab TabData get _currentTab => _tabs[_currentTabIndex]; TextEditingController get _controller => _currentTab.controller; @@ -452,25 +784,97 @@ class _ModernNotepadPageState extends State { _typingSpeedMonitor = TypingSpeedMonitor( showSpeedWarning: _showSpeedWarning, forceShutdown: _forceShutdown, + immediateShutdown: _immediateShutdown, triggerSpeedChaos: _triggerSpeedChaos, + showSubscriptionPrompt: _showSubscriptionPrompt, + isDialogVisible: () => + _isSpeedWarningVisible || _isSubscriptionPromptVisible, ); // Start monitoring _typingSpeedMonitor?.startMonitoring(); } - void _showSpeedWarning() { - final messages = [ - "🐌 SLOW DOWN THERE, SPEEDRACER! 🐌\nThe system can't handle your lightning fingers!", - "⚡ TYPING SPEED VIOLATION DETECTED ⚡\nYou're going faster than a caffeinated cheetah!", - "🚨 SPEED LIMIT EXCEEDED 🚨\nThis is a text editor, not a racing game!", - "🔥 BURNING RUBBER ON THE KEYBOARD? 🔥\nSlow down before you break something!", - "⚠️ DANGER: HYPERSONIC TYPING ⚠️\nYour fingers are moving faster than the speed of light!", - "🎯 TYPING SPEED: LUDICROUS MODE 🎯\nEven NASA computers are jealous!", - "💨 WHOOSH! TOO FAST! 💨\nYou're typing so fast, you're creating a time paradox!", + void _showSpeedWarning(int violationCount) { + // Don't show new dialog if one is already visible + if (_isSpeedWarningVisible) return; + + _speedViolationCount = violationCount; + + // Escalating messages with increasing mockery and intensity + final List> escalatingMessages = [ + // Level 1: Gentle and playful warnings (violation 1-2) + [ + "� SPEEDY GONZALES DETECTED! �\nWhoa there, speed racer! Your fingers are on fire! Maybe take a tiny break?", + "⚡ FAST FINGERS ALERT! ⚡\nImpressive typing speed! But remember, this isn't a race... or is it? 😏", + "🏃‍♂️ ZOOM ZOOM! 🏃‍♂️\nYour keyboard is getting a workout! Give those keys a breather!", + ], + // Level 2: More insistent but still friendly (violation 3-4) + [ + "� OK, NOW I'M IMPRESSED! 😅\nSeriously though, violation #$violationCount! Maybe slow down just a smidge?", + "🎯 TARGETING SPEED DEMON! 🎯\nYou're really going for it! But I'm starting to get a bit dizzy watching...", + "🎪 LADIES AND GENTLEMEN! 🎪\nWitness the incredible typing human! Violation #$violationCount and counting!", + "🤖 PROCESSING... PROCESSING... 🤖\nMy circuits are struggling to keep up with you! Slow down, please!", + ], + // Level 3: Peak mockery and final warnings (violation 4+) + [ + "😱 HOUSTON, WE HAVE A PROBLEM! 😱\nViolation #$violationCount! You're approaching typing light speed!", + "� DEFCON 1: FINGER EMERGENCY! �\nThis is your final courtesy warning! One more and I'm taking a nap!", + "� THE DRAMA! THE SUSPENSE! �\nViolation #$violationCount! Will they slow down? Will I survive? Find out next!", + "💀 FINAL WARNING, SPEED FREAK! �\nViolation #$violationCount! Next time I'm pulling the plug!", + "🚫 I CAN'T EVEN... 🚫\nYou've violated $violationCount times! Do you WANT me to crash?!", + ], ]; - final randomMessage = messages[Random().nextInt(messages.length)]; + // Select message tier based on violation count + int tier = 0; + if (violationCount >= 2) { + tier = 2; // Final warnings on 2nd violation + } else if (violationCount >= 1) { + tier = 0; // Initial warning on 1st violation + } + + final messages = escalatingMessages[tier]; + + // Many sarcastic messages based on violation count + List sarcasticMessages = []; + final random = Random(); // Use local random instance + + if (violationCount == 1) { + // Violation 1 - Sarcastic first warnings + sarcasticMessages = [ + "Oh wow, SPEED RACER!\nSlow down there, Lightning McQueen! Your keyboard isn't built for NASCAR!", + "TURBO FINGERS DETECTED!\nWhat's the rush? Are you late for a very important date with your text editor?", + "BREAKING NEWS!\nLocal human thinks they're a typing machine! More at 11!", + "ZOOM ZOOM!\nEasy there, Speed Demon! This isn't the Olympics of typing!", + "TARGET ACQUIRED!\nWe've got a hot shot typist over here! Everyone look out!", + "BEEP BEEP!\nError 404: Chill not found. Please slow down and try again!", + "FIRE IN THE HOLE!\nYour fingers are literally smoking! Maybe give them a breather?", + "LADIES AND GENTLEMEN!\nStep right up and witness the incredible FAST FINGER phenomenon!", + "CAUTION: WET PAINT!\nOh wait, that's just your keyboard melting from the heat!", + "HOUSTON, WE HAVE LIFTOFF!\nYour typing speed has reached escape velocity!", + ]; + } else if (violationCount == 2) { + // Violation 2 - More aggressive sarcasm + sarcasticMessages = [ + "SERIOUSLY?! AGAIN?!\nI LITERALLY just told you to slow down! Are you even listening?!", + "CONGRATULATIONS!\nYou've won the award for 'Most Likely to Ignore Warnings'!", + "DEATH WISH MUCH?\nViolation #2! Do you WANT me to have a nervous breakdown?!", + "THE AUDACITY!\nThe sheer NERVE of this human! Violation #2 and still going strong!", + "THIS IS FINE!\nEverything is TOTALLY fine! Just my sanity slowly leaving my body!", + "SHOCKING!\nAbsolutely SHOCKING that you didn't learn from violation #1!", + "BULLSEYE!\nYou hit the target of maximum annoyance! Violation #2 achieved!", + "RED ALERT!\nAll hands on deck! We have a repeat offender! This is not a drill!", + "DOES NOT COMPUTE!\nError: Human refuses to follow simple instructions. System overloading!", + "KABOOM!\nThere goes my last nerve! Violation #2 and my patience is GONE!", + ]; + } + + final selectedMessage = sarcasticMessages.isNotEmpty + ? sarcasticMessages[random.nextInt(sarcasticMessages.length)] + : messages[random.nextInt(messages.length)]; + + _isSpeedWarningVisible = true; showDialog( context: context, @@ -486,10 +890,18 @@ class _ModernNotepadPageState extends State { actionsPadding: const EdgeInsets.fromLTRB(20, 8, 20, 20), title: Row( children: [ - Icon(Icons.warning, color: Colors.black87, size: 20), + Icon( + violationCount >= 4 + ? Icons.error + : (violationCount >= 2 ? Icons.warning_amber : Icons.warning), + color: Colors.black87, + size: 20, + ), const SizedBox(width: 8), Text( - 'SPEED WARNING', + violationCount >= 4 + ? 'FINAL WARNING' + : (violationCount >= 2 ? 'SERIOUS WARNING' : 'SPEED WARNING'), style: TextStyle( fontSize: 16, fontWeight: FontWeight.w700, @@ -497,12 +909,29 @@ class _ModernNotepadPageState extends State { color: Colors.black87, ), ), + const Spacer(), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: Colors.black87, + borderRadius: BorderRadius.circular(12), + ), + child: Text( + 'VIOLATION #$violationCount', + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.w600, + color: Colors.white, + fontFamily: 'Segoe UI', + ), + ), + ), ], ), content: SizedBox( - width: 350, + width: 380, child: Text( - randomMessage, + selectedMessage, style: TextStyle( fontSize: 14, fontFamily: 'Segoe UI', @@ -521,15 +950,36 @@ class _ModernNotepadPageState extends State { textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), elevation: 1, ), - onPressed: () => Navigator.pop(context), - child: const Text('I\'LL SLOW DOWN, I PROMISE!'), + onPressed: () { + Navigator.pop(context); + _isSpeedWarningVisible = false; + _typingSpeedMonitor?.acknowledgeCurrentViolation(); + }, + child: Text( + violationCount >= 2 + ? 'I\'LL BEHAVE, I PROMISE!' + : 'OK, I\'LL TRY TO SLOW DOWN', + ), ), ], ), ); + + // Auto-shutdown after 2 violations with extreme speed + if (violationCount >= 2) { + Timer(const Duration(seconds: 3), () { + if (_isSpeedWarningVisible) { + Navigator.pop(context); + _isSpeedWarningVisible = false; + _typingSpeedMonitor?.acknowledgeCurrentViolation(); + _forceShutdown(); + } + }); + } } void _forceShutdown() { + // Show final dramatic shutdown dialog showDialog( context: context, barrierDismissible: false, @@ -558,9 +1008,9 @@ class _ModernNotepadPageState extends State { ], ), content: SizedBox( - width: 350, + width: 400, child: Text( - "💥 CRITICAL ERROR: FINGERS TOO FAST! 💥\n\nYour typing speed has exceeded all known limits of human capability! The application must shut down to prevent a keyboard singularity from forming.\n\nFarewell, speed demon! 👋", + "🎉 MISSION ACCOMPLISHED! 🎉\n\n� MAXIMUM SPEED ACHIEVED! �\n\nWow! You've pushed this humble text editor to its absolute limits! Your typing speed is truly legendary!\n\nYou've triggered $_speedViolationCount speed warnings - that's impressive dedication!\n\nTime for a well-deserved break! ☕\n\n✨ See you next time, Speed Champion! ✨\n\nClosing in 3... 2... 1... 🌟", style: TextStyle( fontSize: 14, fontFamily: 'Segoe UI', @@ -581,9 +1031,10 @@ class _ModernNotepadPageState extends State { ), onPressed: () { Navigator.pop(context); - // Force close app after brief delay - Timer(const Duration(seconds: 1), () { - SystemNavigator.pop(); + // Force close app immediately using dart:io exit + Timer(const Duration(milliseconds: 500), () { + // For Windows desktop apps, use exit() to forcefully terminate + exit(0); }); }, child: const Text('ACCEPT DEFEAT'), @@ -591,6 +1042,16 @@ class _ModernNotepadPageState extends State { ], ), ); + + // Also set a backup timer to force close even if user doesn't click button + Timer(const Duration(seconds: 5), () { + exit(0); // Backup force close after 5 seconds + }); + } + + void _immediateShutdown() { + // For the most extreme cases - immediate shutdown without dialog + exit(0); } void _triggerSpeedChaos() { @@ -601,7 +1062,7 @@ class _ModernNotepadPageState extends State { () => _chaosManager!.cursorTeleportation(), () => _chaosManager!.cursorTeleportation(), // Extra cursor chaos () => _chaosManager!.punctuationInjection(), - () => _chaosManager!.randomDeletion(), + () => _chaosManager!.randomLetterDeletion(), ]; final action = @@ -611,6 +1072,91 @@ class _ModernNotepadPageState extends State { } } + void _showSubscriptionPrompt() { + // Simplified to avoid character encoding issues + _showSnackBar( + 'Premium Speed Detected! Keep typing fast - this is just for fun!', + ); + + _isSubscriptionPromptVisible = true; + + showDialog( + context: context, + barrierDismissible: false, + builder: (context) => AlertDialog( + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4), + side: BorderSide(color: Colors.grey.shade300, width: 0.5), + ), + contentPadding: const EdgeInsets.all(20), + titlePadding: const EdgeInsets.fromLTRB(20, 20, 20, 8), + actionsPadding: const EdgeInsets.fromLTRB(20, 8, 20, 20), + title: Row( + children: [ + Icon(Icons.star, color: Colors.amber, size: 20), + const SizedBox(width: 8), + Text( + 'PREMIUM SPEED DETECTED', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontFamily: 'Segoe UI', + color: Colors.black87, + ), + ), + ], + ), + content: SizedBox( + width: 400, + child: Text( + "🚀 IMPRESSIVE TYPING SPEED! 🚀\n\n⚡ You're typing at 90+ WPM! ⚡\n\nThat's genuinely impressive! You're a speed typing champion!\n\n💎 UNLOCK TURBO MODE 💎\n\nWant to go even faster? Our imaginary premium version offers:\n\n✨ Only \\9.99/month ✨\n\nFeatures include:\n• Unlimited typing speed\n• 80% less chaos events\n• Premium autocorrect comedy\n• Rainbow cursors\n• Typing sound effects\n\n(This is totally a joke, by the way! �)", + style: TextStyle( + fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black87, + height: 1.4, + ), + textAlign: TextAlign.center, + ), + ), + actions: [ + TextButton( + style: TextButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + ), + onPressed: () { + Navigator.pop(context); + _isSubscriptionPromptVisible = false; + }, + child: Text( + 'No thanks, I like the chaos!', + style: TextStyle(color: Colors.grey.shade600), + ), + ), + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Colors.amber, + foregroundColor: Colors.black87, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + textStyle: const TextStyle(fontSize: 13, fontFamily: 'Segoe UI'), + elevation: 1, + ), + onPressed: () { + Navigator.pop(context); + _isSubscriptionPromptVisible = false; + _showSnackBar( + 'Payment successful! Just kidding - this is a joke! 😄', + ); + }, + child: const Text('TOTALLY SUBSCRIBE!'), + ), + ], + ), + ); + } + @override void dispose() { _chaosManager?.stopChaos(); @@ -727,16 +1273,6 @@ class _ModernNotepadPageState extends State { }); } - void _handleTextChanged(String newText) { - setState(() { - _isModified = true; - }); - _updateStats(); - - // Record keystroke for speed monitoring - _typingSpeedMonitor?.recordKeystroke(); - } - // File handling methods void _newFile() { // Create a new tab instead of clearing current one @@ -2122,32 +2658,47 @@ class _ModernNotepadPageState extends State { Expanded( child: Container( color: Colors.white, - child: TextField( - controller: _controller, - focusNode: _focusNode, - maxLines: null, - expands: true, - onChanged: _handleTextChanged, - style: TextStyle( - fontSize: 14, - fontFamily: 'Segoe UI', - color: Colors.black, - height: 1.4, - fontWeight: FontWeight.w400, - ), - decoration: const InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.all(16), - hintText: 'Start typing...', - hintStyle: TextStyle( - color: Color(0xFF999999), + child: KeyboardListener( + focusNode: FocusNode(), + onKeyEvent: (KeyEvent event) { + // Only record on key down events to avoid duplicates + if (event is KeyDownEvent) { + _typingSpeedMonitor?.recordKeystroke(); + } + }, + child: TextField( + controller: _controller, + focusNode: _focusNode, + maxLines: null, + expands: true, + onChanged: (String newText) { + setState(() { + _isModified = true; + }); + _updateStats(); + // Don't call recordKeystroke here to avoid conflicts + }, + style: TextStyle( fontSize: 14, + fontFamily: 'Segoe UI', + color: Colors.black, + height: 1.4, + fontWeight: FontWeight.w400, + ), + decoration: const InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(16), + hintText: 'Start typing...', + hintStyle: TextStyle( + color: Color(0xFF999999), + fontSize: 14, + ), ), + textAlign: TextAlign.start, + textAlignVertical: TextAlignVertical.top, + cursorColor: Colors.black, + cursorWidth: 1.0, ), - textAlign: TextAlign.start, - textAlignVertical: TextAlignVertical.top, - cursorColor: Colors.black, - cursorWidth: 1.0, ), ), ), From 50439927f850864470570e60e7e3ab0db7f04a4a Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 03:29:02 +0530 Subject: [PATCH 19/27] Please just work --- lib/main.dart | 54 +++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 76cf67c36..e5784da7a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -494,7 +494,7 @@ class TypingSpeedMonitor { true; // Track if current violation level has been acknowledged // Speed thresholds (words per minute - assuming 5 chars per word) - static const int _warningThreshold = 300; // 65 WPM (65 * 5 chars) + static const int _warningThreshold = 325; // 65 WPM (65 * 5 chars) TypingSpeedMonitor({ required this.showSpeedWarning, @@ -544,10 +544,10 @@ class TypingSpeedMonitor { // Only act if speed is above threshold and no dialog is currently visible if (cpm >= _warningThreshold) { - // Check if enough time has passed since last warning (minimum 15 seconds gap - longer pause) + // Check if enough time has passed since last warning (5-second cooldown) final canShowWarning = _lastWarningTime == null || - now.difference(_lastWarningTime!).inSeconds >= 15; + now.difference(_lastWarningTime!).inSeconds >= 5; // Only increment violation count when we can show a warning and current violation hasn't been acknowledged if (!isDialogVisible() && @@ -558,32 +558,24 @@ class TypingSpeedMonitor { _currentViolationAcknowledged = false; // Mark current violation as not acknowledged - if (_speedViolationCount == 1) { - // First violation - show sarcastic warning - showSpeedWarning(_speedViolationCount); - triggerSpeedChaos(); - } else if (_speedViolationCount == 2) { - // Second violation - show subscription prompt or another sarcastic warning - if (_random.nextBool()) { - showSubscriptionPrompt(); // 50% chance for subscription + if (_speedViolationCount <= 3) { + // Violations 1-3: show warnings with increasing intensity + if (_speedViolationCount == 2 && _random.nextBool()) { + showSubscriptionPrompt(); // 50% chance for subscription on violation 2 } else { - showSpeedWarning(_speedViolationCount); // 50% chance for warning + showSpeedWarning( + _speedViolationCount, + ); // Show warning with current count } triggerSpeedChaos(); - } else if (_speedViolationCount >= 3) { - // Third violation - shutdown + } else if (_speedViolationCount >= 4) { + // Fourth violation - shutdown forceShutdown(); return; } } - } else { - // Reduce violation count if typing slows down (below warning threshold) - if (_speedViolationCount > 0) { - _speedViolationCount = (_speedViolationCount - 1).clamp(0, 10); - _currentViolationAcknowledged = - true; // Reset acknowledgment when slowing down - } } + // Speed violation count only goes UP - no forgiveness! } } @@ -799,8 +791,6 @@ class _ModernNotepadPageState extends State { // Don't show new dialog if one is already visible if (_isSpeedWarningVisible) return; - _speedViolationCount = violationCount; - // Escalating messages with increasing mockery and intensity final List> escalatingMessages = [ // Level 1: Gentle and playful warnings (violation 1-2) @@ -868,6 +858,20 @@ class _ModernNotepadPageState extends State { "DOES NOT COMPUTE!\nError: Human refuses to follow simple instructions. System overloading!", "KABOOM!\nThere goes my last nerve! Violation #2 and my patience is GONE!", ]; + } else if (violationCount == 3) { + // Violation 3 - Final warnings before shutdown + sarcasticMessages = [ + "THIS IS YOUR FINAL WARNING!\nOne more violation and I'm pulling the plug! I'm NOT kidding around!", + "DEFCON 1! MAXIMUM THREAT LEVEL!\nViolation #3! You're literally one keystroke away from TOTAL SHUTDOWN!", + "I'VE HAD IT UP TO HERE!\nThree strikes and you're OUT! Next violation = GAME OVER!", + "LAST CHANCE SALOON!\nViolation #3! This is it! One more and we're DONE!", + "EMERGENCY PROTOCOLS ACTIVATED!\nViolation #3! System preparing for immediate shutdown sequence!", + "YOU'VE PUSHED ME TO MY LIMIT!\nThree violations! ONE MORE and I'm shutting this whole thing down!", + "FINAL COUNTDOWN INITIATED!\nViolation #3! Next speed burst triggers immediate termination!", + "I'M LITERALLY SHAKING!\nViolation #3! My circuits can't take much more of this abuse!", + "CODE RED! CODE RED!\nViolation #3! All systems on high alert! Shutdown imminent!", + "THIS IS THE END OF THE LINE!\nViolation #3! One more violation and it's lights out forever!", + ]; } final selectedMessage = sarcasticMessages.isNotEmpty @@ -891,7 +895,7 @@ class _ModernNotepadPageState extends State { title: Row( children: [ Icon( - violationCount >= 4 + violationCount >= 3 ? Icons.error : (violationCount >= 2 ? Icons.warning_amber : Icons.warning), color: Colors.black87, @@ -899,7 +903,7 @@ class _ModernNotepadPageState extends State { ), const SizedBox(width: 8), Text( - violationCount >= 4 + violationCount >= 3 ? 'FINAL WARNING' : (violationCount >= 2 ? 'SERIOUS WARNING' : 'SPEED WARNING'), style: TextStyle( From a0d26d0d4d6b8098c2a0cbddfdbf585c1fa0efba Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 03:58:32 +0530 Subject: [PATCH 20/27] Almost done with the final product --- lib/main.dart | 217 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 176 insertions(+), 41 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index e5784da7a..d4971077b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,23 +8,77 @@ import 'package:file_picker/file_picker.dart'; // ChaosManager handles all the chaos behaviors class ChaosManager { late Timer _timer; + Timer? _idleTimer; + Timer? _rapidSwapTimer; final Random _random = Random(); final TextEditingController textController; final VoidCallback updateState; + DateTime _lastActivity = DateTime.now(); + bool _isRapidSwapping = false; ChaosManager({required this.textController, required this.updateState}); void startChaos() { _scheduleNextChaos(); + _startIdleDetection(); } void stopChaos() { _timer.cancel(); + _idleTimer?.cancel(); + _rapidSwapTimer?.cancel(); + } + + void _startIdleDetection() { + _resetIdleTimer(); + } + + void _resetIdleTimer() { + _idleTimer?.cancel(); + _lastActivity = DateTime.now(); // Track activity time + + // Stop rapid swapping if user becomes active + if (_isRapidSwapping) { + _stopRapidSwapping(); + } + + // Start 10-second idle timer + _idleTimer = Timer(const Duration(seconds: 10), () { + _startRapidSwapping(); + }); + } + + void _startRapidSwapping() { + if (_isRapidSwapping) return; // Prevent multiple timers + + print("Starting rapid word swapping - user is idle!"); // Debug + _isRapidSwapping = true; + _rapidSwapTimer = Timer.periodic(const Duration(milliseconds: 500), ( + timer, + ) { + // Rapid word swapping every 500ms while idle + print("Executing rapid word swap"); // Debug + wordSwapping(); + updateState(); + }); + } + + void _stopRapidSwapping() { + print("Stopping rapid word swapping - user is active!"); // Debug + _isRapidSwapping = false; + _rapidSwapTimer?.cancel(); + _rapidSwapTimer = null; + } + + // Call this method whenever user types to reset idle detection + void onUserActivity() { + print("User activity detected - resetting idle timer"); // Debug + _resetIdleTimer(); } void _scheduleNextChaos() { - // Random interval between 7-15 seconds - final int seconds = 7 + _random.nextInt(9); // 7 to 15 seconds + // Random interval between 4-8 seconds + final int seconds = 4 + _random.nextInt(5); // 4 to 8 seconds _timer = Timer(Duration(seconds: seconds), () { _executeChaosAction(); _scheduleNextChaos(); // Schedule the next chaos event @@ -32,17 +86,45 @@ class ChaosManager { } void _executeChaosAction() { - // Adjusted probabilities - letter operations favored over word deletion - final chaosActions = { - 0.35: () => randomLetterDeletion(), // 35% - High: Remove single letters - 0.25: () => letterSwapping(), // 25% - High: Swap letters within words - 0.15: () => cursorTeleportation(), // 15% - Medium: Move cursor randomly - 0.10: () => - punctuationInjection(), // 10% - Medium: Add random punctuation - 0.08: () => randomSpaceAddition(), // 8% - Low: Add random spaces - 0.05: () => wordDeletion(), // 5% - Lower: Remove entire words - 0.02: () => wordSwapping(), // 2% - Lowest: Swap words between lines - }; + // Get current word count from the text + final text = textController.text; + final wordCount = text.trim().isEmpty + ? 0 + : text.trim().split(RegExp(r'\s+')).length; + + // Different chaos actions based on word count thresholds + Map chaosActions; + + if (wordCount < 40) { + // Early stage: Only gentle chaos (no character replacement yet) + chaosActions = { + 0.40: () => punctuationInjection(), // 40% - Add punctuation + 0.30: () => randomSpaceAddition(), // 30% - Add spaces + 0.20: () => cursorTeleportation(), // 20% - Move cursor + 0.10: () => randomIndentationChaos(), // 10% - Random indentation + }; + } else if (wordCount < 60) { + // Mid stage: Character manipulation begins (40+ words) + chaosActions = { + 0.35: () => randomLetterDeletion(), // 35% - Remove letters + 0.25: () => letterSwapping(), // 25% - Swap letters + 0.15: () => punctuationInjection(), // 15% - Add punctuation + 0.12: () => cursorTeleportation(), // 12% - Move cursor + 0.08: () => randomSpaceAddition(), // 8% - Add spaces + 0.05: () => randomIndentationChaos(), // 5% - Random indentation + }; + } else { + // Advanced stage: Full chaos including word deletion (60+ words) + chaosActions = { + 0.30: () => randomLetterDeletion(), // 30% - Remove letters + 0.25: () => letterSwapping(), // 25% - Swap letters + 0.20: () => wordDeletion(), // 20% - Remove words (now active) + 0.10: () => wordSwapping(), // 10% - Swap words + 0.08: () => punctuationInjection(), // 8% - Add punctuation + 0.05: () => randomSpaceAddition(), // 5% - Add spaces + 0.02: () => randomIndentationChaos(), // 2% - Random indentation + }; + } // Generate random number and select action based on cumulative probability final randomValue = _random.nextDouble(); @@ -181,8 +263,30 @@ class ChaosManager { final punctuations = ['.', ',', '!', '?', ';', ':']; final punctuation = punctuations[_random.nextInt(punctuations.length)]; - final position = _random.nextInt(text.length + 1); + // Find all word boundaries and sentence endings + List validPositions = []; + + for (int i = 0; i < text.length; i++) { + // Add position if it's at the end of a word (followed by space or punctuation) + if (i < text.length - 1 && + text[i].contains(RegExp(r'[a-zA-Z0-9]')) && + text[i + 1].contains(RegExp(r'[\s\.,!?;:]'))) { + validPositions.add(i + 1); + } + // Add position if it's at the very end of text + else if (i == text.length - 1 && + text[i].contains(RegExp(r'[a-zA-Z0-9]'))) { + validPositions.add(i + 1); + } + } + + // If no valid positions found, add at the end + if (validPositions.isEmpty) { + validPositions.add(text.length); + } + + final position = validPositions[_random.nextInt(validPositions.length)]; final newText = text.substring(0, position) + punctuation + text.substring(position); textController.text = newText; @@ -255,31 +359,28 @@ class ChaosManager { void wordSwapping() { final text = textController.text; - final lines = text.split('\n'); - if (lines.length < 2) return; - - final line1Index = _random.nextInt(lines.length); - int line2Index = _random.nextInt(lines.length); - while (line2Index == line1Index) { - line2Index = _random.nextInt(lines.length); - } + if (text.trim().isEmpty) return; - final words1 = lines[line1Index].split(RegExp(r'\s+')); - final words2 = lines[line2Index].split(RegExp(r'\s+')); + // Split into all words across the entire text + final allWords = text.split(RegExp(r'\s+')); - if (words1.isNotEmpty && words2.isNotEmpty) { - final word1Index = _random.nextInt(words1.length); - final word2Index = _random.nextInt(words2.length); + // Need at least 2 words to swap + if (allWords.length < 2) return; - final temp = words1[word1Index]; - words1[word1Index] = words2[word2Index]; - words2[word2Index] = temp; + // Find two different word indices + final index1 = _random.nextInt(allWords.length); + int index2 = _random.nextInt(allWords.length); + while (index2 == index1 && allWords.length > 1) { + index2 = _random.nextInt(allWords.length); + } - lines[line1Index] = words1.join(' '); - lines[line2Index] = words2.join(' '); + // Swap the words + final temp = allWords[index1]; + allWords[index1] = allWords[index2]; + allWords[index2] = temp; - textController.text = lines.join('\n'); - } + // Reconstruct the text maintaining original spacing structure + textController.text = allWords.join(' '); } void randomSpaceAddition() { @@ -295,6 +396,27 @@ class ChaosManager { textController.text = newText; } + void randomIndentationChaos() { + final text = textController.text; + if (text.isEmpty) return; + + final lines = text.split('\n'); + if (lines.isEmpty) return; + + // Pick a random line to add indentation to + final targetLineIndex = _random.nextInt(lines.length); + + // Generate random indentation (1-6 spaces or tabs) + final indentationType = _random.nextBool() ? ' ' : '\t'; + final indentationCount = _random.nextInt(6) + 1; + final indentation = indentationType * indentationCount; + + // Add indentation to the beginning of the selected line + lines[targetLineIndex] = indentation + lines[targetLineIndex]; + + textController.text = lines.join('\n'); + } + // New gentler chaos methods for better user experience void gentleLetterSwapping() { final text = textController.text; @@ -360,18 +482,29 @@ class ChaosManager { final punctuations = ['.', ',', ';']; // Removed !, ?, : final punctuation = punctuations[_random.nextInt(punctuations.length)]; - // Try to insert at word boundaries or near spaces for more natural placement - final spacePositions = []; + // Find all word boundaries and sentence endings (same logic as main punctuation method) + List validPositions = []; + for (int i = 0; i < text.length; i++) { - if (text[i] == ' ') { - spacePositions.add(i); + // Add position if it's at the end of a word (followed by space or punctuation) + if (i < text.length - 1 && + text[i].contains(RegExp(r'[a-zA-Z0-9]')) && + text[i + 1].contains(RegExp(r'[\s\.,!?;:]'))) { + validPositions.add(i + 1); + } + // Add position if it's at the very end of text + else if (i == text.length - 1 && + text[i].contains(RegExp(r'[a-zA-Z0-9]'))) { + validPositions.add(i + 1); } } - final position = spacePositions.isNotEmpty - ? spacePositions[_random.nextInt(spacePositions.length)] - : _random.nextInt(text.length + 1); + // If no valid positions found, add at the end + if (validPositions.isEmpty) { + validPositions.add(text.length); + } + final position = validPositions[_random.nextInt(validPositions.length)]; final newText = text.substring(0, position) + punctuation + text.substring(position); textController.text = newText; @@ -2680,6 +2813,8 @@ class _ModernNotepadPageState extends State { _isModified = true; }); _updateStats(); + // Reset idle timer when user types + _chaosManager?.onUserActivity(); // Don't call recordKeystroke here to avoid conflicts }, style: TextStyle( From f8d4feeb55327b8d1c670892970831759b02c050 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 04:06:20 +0530 Subject: [PATCH 21/27] Nearly completed, updated readme --- README.md | 14 +++++++------- lib/main.dart | 3 +-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2a99470df..ca22cad27 100644 --- a/README.md +++ b/README.md @@ -13,21 +13,21 @@ - Member 2: Adithya Manghat - SCMS SCHOOL OF ENGINEERING & TECHNOLOGY ### Project Description -"ScamPad" could be envisioned as a notepad application that looks normal but gradually scrambles, distorts, or modifies saved notes subtly over time +"ScamPad" could be envisioned as a notepad application that looks normal but gradually scrambles, distorts, or modifies saved notes subtly (and sometimes not so subtly) over time! ### The Problem (that doesn't exist) -Notepad app are convenient and useful for most cases. +Notepad app are quite simple and convenient to use, but that's no fun right? ### The Solution (that nobody asked for) -It will be more inconvenient to use. +Give it a little personality and it'll help you "rephrase" your notes really well. ## Technical Details ### Technologies/Components Used For Software: -- [Languages used] -- [Frameworks used] -- [Libraries used] -- [Tools used] +- Dart, C++ +- Flutter, Material Design 3 +- flutter/material.dart, flutter/services.dart, file_picker, dart:io, dart:async, dart:math +- Visual Studio COde, Flutter SDK, CMake diff --git a/lib/main.dart b/lib/main.dart index d4971077b..8d5668b5c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,7 +13,6 @@ class ChaosManager { final Random _random = Random(); final TextEditingController textController; final VoidCallback updateState; - DateTime _lastActivity = DateTime.now(); bool _isRapidSwapping = false; ChaosManager({required this.textController, required this.updateState}); @@ -35,7 +34,7 @@ class ChaosManager { void _resetIdleTimer() { _idleTimer?.cancel(); - _lastActivity = DateTime.now(); // Track activity time +// Track activity time // Stop rapid swapping if user becomes active if (_isRapidSwapping) { From 131da86858cc024203ae082e588e9051586d288c Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 04:30:42 +0530 Subject: [PATCH 22/27] Almost complete --- .metadata | 2 +- README.md | 230 +++++++++++++++++- android/.gitignore | 14 -- android/app/build.gradle.kts | 44 ---- android/app/src/debug/AndroidManifest.xml | 7 - android/app/src/main/AndroidManifest.xml | 45 ---- .../com/example/scrampad/MainActivity.kt | 5 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 -- android/app/src/main/res/values/styles.xml | 18 -- android/app/src/profile/AndroidManifest.xml | 7 - android/build.gradle.kts | 21 -- android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 5 - android/settings.gradle.kts | 25 -- lib/main.dart | 6 +- web/favicon.png | Bin 917 -> 0 bytes web/icons/Icon-192.png | Bin 15142 -> 0 bytes web/icons/Icon-512.png | Bin 81402 -> 0 bytes web/icons/Icon-maskable-192.png | Bin 11719 -> 0 bytes web/icons/Icon-maskable-512.png | Bin 73852 -> 0 bytes web/icons/apple-touch-icon.png | Bin 10079 -> 0 bytes web/icons/favicon.ico | Bin 5238 -> 0 bytes web/index.html | 38 --- web/manifest.json | 35 --- 31 files changed, 226 insertions(+), 321 deletions(-) delete mode 100644 android/.gitignore delete mode 100644 android/app/build.gradle.kts delete mode 100644 android/app/src/debug/AndroidManifest.xml delete mode 100644 android/app/src/main/AndroidManifest.xml delete mode 100644 android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt delete mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 android/app/src/main/res/drawable/launch_background.xml delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/values-night/styles.xml delete mode 100644 android/app/src/main/res/values/styles.xml delete mode 100644 android/app/src/profile/AndroidManifest.xml delete mode 100644 android/build.gradle.kts delete mode 100644 android/gradle.properties delete mode 100644 android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 android/settings.gradle.kts delete mode 100644 web/favicon.png delete mode 100644 web/icons/Icon-192.png delete mode 100644 web/icons/Icon-512.png delete mode 100644 web/icons/Icon-maskable-192.png delete mode 100644 web/icons/Icon-maskable-512.png delete mode 100644 web/icons/apple-touch-icon.png delete mode 100644 web/icons/favicon.ico delete mode 100644 web/index.html delete mode 100644 web/manifest.json diff --git a/.metadata b/.metadata index 45b230622..39a6af965 100644 --- a/.metadata +++ b/.metadata @@ -15,7 +15,7 @@ migration: - platform: root create_revision: edada7c56edf4a183c1735310e123c7f923584f1 base_revision: edada7c56edf4a183c1735310e123c7f923584f1 - - platform: windows + - platform: web create_revision: edada7c56edf4a183c1735310e123c7f923584f1 base_revision: edada7c56edf4a183c1735310e123c7f923584f1 diff --git a/README.md b/README.md index ca22cad27..1e01e81e4 100644 --- a/README.md +++ b/README.md @@ -34,14 +34,175 @@ For Software: ### Implementation For Software: # Installation -[commands] +```bash +# Install Flutter SDK +flutter doctor + +# Clone the repository +git clone https://github.com/FALLEN-01/vanguard.git +cd vanguard + +# Get dependencies +flutter pub get + +# Enable Windows desktop +flutter config --enable-windows-desktop + +# Verify setup +flutter doctor -v +``` # Run -[commands] +```bash +# Development mode +flutter run -d windows + +# Release build +flutter build windows + +# Run executable +./build/windows/runner/Release/vanguard.exe +``` ### Project Documentation For Software: +## Features + +### Core Functionality +- **Multi-tab Text Editor**: Supports multiple documents with tab-based navigation +- **Native Windows Integration**: File dialogs, keyboard shortcuts, and system clipboard support +- **Real-time Statistics**: Live word count, character count, and line tracking +- **Auto-save Warning**: Prompts users before losing unsaved work + +### Chaos Features 🎲 +- **Progressive Chaos System**: Chaos intensity increases based on document word count + - Under 40 words: Gentle disruptions (punctuation, spaces, cursor movement) + - 40-59 words: Character manipulation begins (letter deletion, swapping) + - 60+ words: Full chaos mode (word deletion, word swapping) + +- **Speed-based Escalation**: Typing speed monitoring with escalating consequences + - 65+ WPM triggers speed warnings + - 4 violation system with sarcastic messages + - Automatic shutdown after 4th violation + +- **Idle Punishment**: After 10 seconds of inactivity, rapid word swapping begins + - Continuous text scrambling until user resumes typing + - 500ms interval rapid swapping for maximum disruption + +### Chaos Actions +- **Letter Operations**: Random deletion, swapping within words +- **Word Operations**: Word deletion, inter-line word swapping +- **Punctuation Injection**: Smart placement at word boundaries only +- **Cursor Teleportation**: Random cursor repositioning +- **Indentation Chaos**: Random spacing and tab insertion +- **Space Addition**: Random whitespace injection + +### User Interface +- **Modern Design**: Clean, Material Design 3 interface +- **Dark Theme**: Easy on the eyes during chaos events +- **Status Bar**: Real-time document statistics and modification indicators +- **Dialog Systems**: Speed warnings, subscription prompts, and shutdown notifications + +## Architecture + +### Class Structure +``` +ChaosManager +├── Timer-based chaos scheduling (4-8 second intervals) +├── Word count-based action selection +├── Idle detection and rapid swapping +└── 13 different chaos methods + +TypingSpeedMonitor +├── Real-time keystroke tracking +├── Speed calculation (CPM/WPM) +├── Violation counter with persistence +└── Escalating warning system + +ModernNotepadPage +├── Multi-tab document management +├── File operations (New, Open, Save, Save As) +├── Statistics tracking +└── UI state management + +TabData +├── Individual document state +├── TextEditingController management +├── File path and modification tracking +└── Focus node handling +``` + +### Chaos Progression Logic +1. **Document Analysis**: Word count determines available chaos actions +2. **Random Selection**: Weighted probability system for action selection +3. **Speed Monitoring**: Continuous typing speed analysis +4. **Idle Detection**: 10-second countdown with rapid punishment +5. **State Persistence**: Violation counts persist throughout session + +## Technical Implementation + +### Key Components +- **Flutter Desktop**: Cross-platform UI framework targeting Windows +- **Native File System**: Direct Windows API integration for file operations +- **Timer Management**: Multiple concurrent timers for different chaos systems +- **Text Manipulation**: Advanced string processing for surgical text modifications +- **Event Handling**: Keyboard shortcuts and text change monitoring + +### Performance Optimizations +- **Non-blocking Chaos**: All chaos operations run on separate timer threads +- **Efficient Text Operations**: Minimal string allocations during modifications +- **Smart Action Selection**: Context-aware chaos to avoid breaking functionality +- **Memory Management**: Proper timer cleanup and resource disposal + +## Usage Scenarios + +### Normal Usage (If Possible) +1. Open ScamPad like any text editor +2. Create or open text files +3. Experience "minor" inconveniences during typing +4. Save work frequently (before chaos strikes) + +### Chaos Experience +1. **Early Stage**: Gentle disruptions, mostly cosmetic +2. **Mid Stage**: Noticeable text modifications, typing becomes challenging +3. **Late Stage**: Full chaos mode, document becomes increasingly unstable +4. **Speed Violations**: Aggressive warnings, potential shutdown +5. **Idle Periods**: Relentless text scrambling until activity resumes + +## Configuration + +### Adjustable Parameters +- Chaos interval: 4-8 seconds (configurable in code) +- Speed threshold: 325 CPM / 65 WPM +- Idle timeout: 10 seconds +- Rapid swap interval: 500ms +- Word count thresholds: 40, 60 words + +### Chaos Probabilities +**Stage 1 (< 40 words):** +- 40% Punctuation injection +- 30% Random spaces +- 20% Cursor teleportation +- 10% Random indentation + +**Stage 2 (40-59 words):** +- 35% Letter deletion +- 25% Letter swapping +- 15% Punctuation injection +- 12% Cursor teleportation +- 8% Random spaces +- 5% Random indentation + +**Stage 3 (60+ words):** +- 30% Letter deletion +- 25% Letter swapping +- 20% Word deletion +- 10% Word swapping +- 8% Punctuation injection +- 5% Random spaces +- 2% Random indentation + # Screenshots (Add at least 3) ![Screenshot1](Add screenshot 1 here with proper name) *Add caption explaining what this shows* @@ -53,8 +214,67 @@ For Software: *Add caption explaining what this shows* # Diagrams -![Workflow](Add your workflow/architecture diagram here) -*Add caption explaining your workflow* + +## ScamPad Chaos Workflow +``` + ┌─────────────────┐ + │ User Opens │ + │ ScamPad │ + └─────────┬───────┘ + │ + ▼ + ┌─────────────────┐ + │ Initialize UI │ + │ & Systems │ + └─────────┬───────┘ + │ + ▼ + ┌─────────────────────────────────────────────┐ + │ Start Three Parallel Systems │ + └─────────┬───────────┬───────────┬───────────┘ + │ │ │ + ▼ ▼ ▼ + ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ + │ Chaos │ │ Speed │ │ Idle │ + │ Manager │ │ Monitor │ │ Detector │ + │ (4-8 sec) │ │ (Real-time) │ │ (10 sec) │ + └─────────────┘ └─────────────┘ └─────────────┘ + │ │ │ + ▼ ▼ ▼ + ┌─────────────────────────────────────────────┐ + │ USER TYPING ACTIVITY │ + └─────────────────┬───────────────────────────┘ + │ + ▼ + ┌─────────────────┐ ┌─────────────────┐ + │ Word Count │ │ Speed Check │ + │ Analysis │◄─────┤ ≥65 WPM? │ + └─────────┬───────┘ └─────────┬───────┘ + │ │ + ┌─────────▼───────┐ ┌─────────▼───────┐ + │ < 40 Words? │ │ Speed Warning │ + │ Stage 1 │ │ Escalation │ + │ • Punctuation │ │ • 4 Violations │ + │ • Spaces │ │ • Shutdown │ + │ • Cursor Move │ └─────────────────┘ + └─────────┬───────┘ + │ + ┌─────────▼───────┐ ┌─────────────────┐ + │ 40-59 Words? │ │ Idle Timer │ + │ Stage 2 │◄─────┤ 10 seconds │ + │ • Letter Ops │ └─────────┬───────┘ + │ • + Stage 1 │ │ + └─────────┬───────┘ ┌─────────▼───────┐ + │ │ Rapid Swapping │ + ┌─────────▼───────┐ │ Every 500ms │ + │ 60+ Words? │ │ Until Activity │ + │ Stage 3 │ └─────────────────┘ + │ • Word Delete │ + │ • Word Swap │ + │ • Full Chaos │ + └─────────────────┘ +``` +*This diagram shows how ScamPad's three parallel chaos systems work together to progressively disrupt the user experience based on document length, typing speed, and activity level* ### Project Demo @@ -62,8 +282,6 @@ For Software: [Add your demo video link here] *Explain what the video demonstrates* -# Additional Demos -[Add any extra demo materials/links] ## Team Contributions - [Name 1]: [Specific contributions] diff --git a/android/.gitignore b/android/.gitignore deleted file mode 100644 index be3943c96..000000000 --- a/android/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java -.cxx/ - -# Remember to never publicly share your keystore. -# See https://flutter.dev/to/reference-keystore -key.properties -**/*.keystore -**/*.jks diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts deleted file mode 100644 index 086b15767..000000000 --- a/android/app/build.gradle.kts +++ /dev/null @@ -1,44 +0,0 @@ -plugins { - id("com.android.application") - id("kotlin-android") - // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. - id("dev.flutter.flutter-gradle-plugin") -} - -android { - namespace = "com.example.scrampad" - compileSdk = flutter.compileSdkVersion - ndkVersion = flutter.ndkVersion - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - - kotlinOptions { - jvmTarget = JavaVersion.VERSION_11.toString() - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.example.scrampad" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig = signingConfigs.getByName("debug") - } - } -} - -flutter { - source = "../.." -} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 399f6981d..000000000 --- a/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 4451df5fd..000000000 --- a/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt b/android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt deleted file mode 100644 index 12d9c3ca8..000000000 --- a/android/app/src/main/kotlin/com/example/scrampad/MainActivity.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.scrampad - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be74..000000000 --- a/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef8805..000000000 --- a/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 399f6981d..000000000 --- a/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/android/build.gradle.kts b/android/build.gradle.kts deleted file mode 100644 index 89176ef44..000000000 --- a/android/build.gradle.kts +++ /dev/null @@ -1,21 +0,0 @@ -allprojects { - repositories { - google() - mavenCentral() - } -} - -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() -rootProject.layout.buildDirectory.value(newBuildDir) - -subprojects { - val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) - project.layout.buildDirectory.value(newSubprojectBuildDir) -} -subprojects { - project.evaluationDependsOn(":app") -} - -tasks.register("clean") { - delete(rootProject.layout.buildDirectory) -} diff --git a/android/gradle.properties b/android/gradle.properties deleted file mode 100644 index f018a6181..000000000 --- a/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError -android.useAndroidX=true -android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ac3b47926..000000000 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts deleted file mode 100644 index ab39a10a2..000000000 --- a/android/settings.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } - - includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} - -plugins { - id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false - id("org.jetbrains.kotlin.android") version "2.1.0" apply false -} - -include(":app") diff --git a/lib/main.dart b/lib/main.dart index 8d5668b5c..e29abbbf8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -34,7 +34,7 @@ class ChaosManager { void _resetIdleTimer() { _idleTimer?.cancel(); -// Track activity time + // Track activity time // Stop rapid swapping if user becomes active if (_isRapidSwapping) { @@ -50,20 +50,17 @@ class ChaosManager { void _startRapidSwapping() { if (_isRapidSwapping) return; // Prevent multiple timers - print("Starting rapid word swapping - user is idle!"); // Debug _isRapidSwapping = true; _rapidSwapTimer = Timer.periodic(const Duration(milliseconds: 500), ( timer, ) { // Rapid word swapping every 500ms while idle - print("Executing rapid word swap"); // Debug wordSwapping(); updateState(); }); } void _stopRapidSwapping() { - print("Stopping rapid word swapping - user is active!"); // Debug _isRapidSwapping = false; _rapidSwapTimer?.cancel(); _rapidSwapTimer = null; @@ -71,7 +68,6 @@ class ChaosManager { // Call this method whenever user types to reset idle detection void onUserActivity() { - print("User activity detected - resetting idle timer"); // Debug _resetIdleTimer(); } diff --git a/web/favicon.png b/web/favicon.png deleted file mode 100644 index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png deleted file mode 100644 index bf18ab4fb123004eb5f4877c10a3096d7207111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15142 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 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png deleted file mode 100644 index 1edae70b73342178a53c6b1e9a9846422a4ca76b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81402 zcmXt9cRbbq|9xNAO4be8TV|Qbc5RaEot+hB%Lw<1keO0sN0Pl)#l5!BMOn#S*UH{5 z_xIN4_xE>g#G!kTH<~06=k9OU)1f2*5uH08(P`Wj}EE6nugB z8fvNl+H5pm`Q~J1!uRbkv?9v5+3YR#HFPAB^9sT9Yf6N9c|1G} z*Lcgcu3fvvLE{(+Ow}W6C&~uvC#Di}K2K5RgsB7|VsxI@Ba!0LfOGMy;q7H6apTua z(^Eg1UB;jNZ62L=&v}Lk-7@*R8+}(d>lvo`nfW^E!u@>A^c8*)*26uBA$2Wd3m8!N zmGs0sJ6*au?914e-Ys{9k@bT+M`z~(Bfl~Z#2>Ff9uF?zqwv!a2Vba|Q=SWyoiWqx z-vL$<+_nRl?mT}^k$a#4)G50+8wi+_0NRlK+R+GvAjP22MNtaD)UOBxWaU7)mA)ln_m zMGai$WP5jaSCyHHH8^nVs_ilL=hlHAh+Wb}7=u5dAXIeCcNe=yT6zK-55}MKAxFER z=qr6d1cI%?uIacisw@;)R!sFkxk!R;nM_yk#lC-U9w3#K|`?~IF zY9lpMi~AVR{G6-Yvtd&Tenv{JM1Y1A96kw2TEp=DddgH-#*TM*<06bOc|Oovfa zve!;it-m`ex;PCz%Q>4ocMq#tW`Cub`vTSjl1ZC>;|-E9W*7zAz`ie+3#Nh*Yx`348RCe{jt0?3ta&} zrh;~B2-W^$c3u}LXg@|Cf09(%W|ECEWD8H$;D92NqeKvaH#F?ro*sS-Lm}1((M7>Q zC&O%L0l;f{a3~^-%QcXTKkc0iHD4a3bOdl@~(M(JV|vEKC3)?u=B) zfRnUqZeix3jAKUY=Uu}4NI==xSSK9ip%JhV^@tN0C1LB_c#pV?+f+XHh#KgJtjG|# z)mO}JW^Znd_EkQBZdgux1!CJ>@Z0m+8__t7Ji&cU@B@D0PKA&CAazx!^2cHdg^z;u z49+i%Y7Gk?A%D@Xq(VO%#j@0|50ND;$*m~&{`s)T7&{$XmenIcTl9dfyd?oj+i@_V zEH@y4ukmpmskr6Aj$?bHoohrfdR!?0O@uL!fBdlDe3vc!=aCT^IkysoIuTYW@WLaF zpoWcQ)>Ptl%x?zaK?whGilH0H$^~WFY?w5`5xnx*QE26pKR!~-d~nGmrBhNz;FY5D z2@Q85dimspZ$FVGDBW;vKMaMR${qftyk01P1V8bcSoQBqv8u^jON}Zi&Fy#pY#p#9 zZlQ}NTQt4pWbj-BpIE}&JZAFAwKY2xx=|P0%RA1B^u1!ZYPai_z#}Rwn9%Z;4 zd4jv#uOLc4y_PbJH0&1o`yVM3WEY&CyFk!2N<}V$WhfG$zK2!I$>o<%kH47Bs!0D4 zTe#b@&jp1*sG7wa^$6}ooI7H9>GsWBrG96cVpK@HbQ|Bc9-j;zhP{es%bcG}OI-_o z!M;ATG$(S6RFTwj29n!SKo?Ro7VY_bbY}8M6<*8jG_&+1-Sp*fu%2 zteFy=Xk!yb>3aTHe@z|OCMWW;nu`e)YzZ^(ne&oyTnoOc{xHU;A;vo1@edtGRB7(RKZEHKtKu?KZ4#Uu2tjMIv&6M-bW+1r#9`(TN_dk z%r*kxi*JWiQJo{+>!0RGd8C~dTBW5W?0yCp2mP5lFg_IAgH6Y&EqFuW!O^^sF}h3ZOJWK z)`^9gC>?5r0h>iDx2|;jt}R8bAhDuMCkFv?mrM7X36YL|q_UR1mt#B1VxG)g+>jRe8wRj~!-{ZxKNLdOnC76_3oaT(rF8DA1jb%5F(Y{F80 zOgPbFgLo2(13hthwQ|7@!S-_`rtoG4DWf-TR_r(e844Y)-R70upvaz-h;j#IGsK*6Gg9Au4%SS~CrD+icg+Rfy(VHR$YdL%xd zCYeZ(ev4bnhwkr5-#YDEbjM z{@Y?E;zWay?j^b2k$Ob(^zJRA4gncQ8UdPUr~&22#QhBH_Rs`%f2wp_Ll+F%^6uGL zlCtF;QMsP8(e{eTw_=(TJBxn?b+(o;Emn?)rAY2^fKRM89U(!e~>|ucZC63RCT7 zG9WB)k;IUSy01Dg`T_3#=VPI=%QaRN0E8vcRxXT@rF#{IfB?C!rYr*C@`aLJjFb== zz)Uehk=GW=_>F$=aMqI!jkk%K#s|+%`fmO0xV{wq^bYu5es^mBDjqjZea)FPTJzT~ zQeMdNod^w{ePn^PJ%yI?N!=hPbV^e7m2Z4Z2_Fitsg~Gd$*Jax<&EwPCXQk3ZNW`& zA00LTFJgAS%i`0oeDJ?8jnj0PAv2U&F}n41-k3~rW^Ap!nfsh-O979|dRSv{qMmTc zxm~Jb=Ood$oZyjmht6&MzXD%~r5&^wB5vm_2Dt>myv zA0wTmeKvZ+tx@8v{|%wsH_42@jxCuG8IgJgRV=^GosfLB(|pv#D;W?*K`oyUxq1A3SLIkf*wsd%w?4j-%EWbAXF> zMDTFG^1t9|+ZDfQI#k##y;CSUDsb%%(Jz+4p+;@Y>>x5ralh!|-4Y|k#aB%dzbG;R zuL^?3uT>CHmk?&>|Cwy;V~~e+VfjKq`A6mhk4Cinr7Oj3?6v zern&JI#fYTP$|kWpPv3AAJg|wmwFRI-Bb3kEJS8kXJjTr9Ve_6978Df4kdjx_}Yq#n23hUPya2x5;&Xhgyb7A;f+C@@ObdBk( zP?{Mp7FVKV!Sqh;=hsQ!`3n}aKX_CtU|XDg?+Jem zW+s9BJA{wxFgW;g(Ec{eJ227C<|kLkdYo5Ns9#o35uy9-?eig0TglOr2S%cbNSpa( zPr)*Lj=$S{fKM6vSV5T>c*wH1YW)@S{QLLy+R-rr^e3^F^pLmiiRp_tkfY)jnXLl& zLv?OyapNe1&uGF*zS}E~Y_;mBH{w<3kikkxUdOJf)9D-tn!!0ZIP5~* za=qdCXllZof3=xo7DC;LkSk2Mjm9czt;`$Sbb7D$22CmJ$G%~&PTLW$v@@Zo{Nh7h zT`_%h>w^HR-maZ(wmF_215Jh;T4F52=!x0Ykt(6*JB8F1c5LpF#Zhp>O5Dt0%Y2?l zZ@fiI$toxe2mKZabNZ>f!$(Ui|STLTG?Km6yHS6iW7`j z(0DBK_UgxnE2HB{l3$y<%i;}91ns?wcU%}*lw&m^I3gvy*^$+DFUpc}A#fih2}M#a z2XZVJ0b4);=I`uIzJj<6RwRibPQ-b$;k1t&|4CO2{Ft9~U=#oWX3oVds_gbY#S|+6z z6704r^!UpZE3w@OTul~Z=fjOwMxa)7F2mV5d&X#O20*(%2(*$)>XF6!SS^VwFXR?w zqQ1}NlRjB#1dlA?as0Q^7wuWpyIlNERw-khj}Z3ASpr#~hkO8psj`AC3w{y0!vr}L zEob1)o#R%}$J?*AT}Ay&sFHu0oen{h`Zj}TQTyFyYbJculW|UL;oNofL@wFi;_Z*` zb!y_mTqi$FKRnBhb)qIGvXZy$BK^0>G`#Bi`$FIUnn}_hE|BqE3pif<=2Zu9-gvU<$$0?;uL;O_}Lgp;Q3*h1AeCY~jS*2ZJI@S!(Kaz!x6G22i|Y zBoF6Q=BCeM0l$+j#j(ud{AXb8%aegl;_Qsn#O14qEn%*Z*b`0`gDj?8q@64K+*v;C zVq*B@je5QF)LWzp0f%UTAq49*czXWKHfZOp`=NePc>_4CNati=mxWC%@i&3Ym5dMNo%AHMbO&%(?mX&P1`v;-5f*F0X-joewgOgnF@}8d`Rt(%7@i&Q~ z&{8IftpGxnM9oQ_&k~X3DnCfQZbgBszxyZI*!s^N(OT#;k#DZ(;bnL@INo!JN<%H! zUC$wa^s^tOd7vQjjRrX*>UrrH$pf4V>vd!r({k_=>R;|+#YyvkOqqtN@$lRESE|YK z2P|!zjSzgS`mwGc2_p0)#Dx5{oULSy;}VV{!rOQackYlis8|ePGRrq8BR{sRsPLHa z-RZQr(<5C;4y1*@&(1nWvfbXZXh-}*(V0E@PNHPx>g!jvSqI0=ZesPySBC^_7hiD~ zcDy%uYQlgyPBOib?brC`PipJH$%Ae}xw7nL&ik*9=+^I1vh+VEFP!zF7)&2L(L@4I zk3Zp`w{yt2h>>TIHt&u!RM;C$|27){(2NsBzkjDbA4L&phuXU2Pj^PtU{EY3iO+e< zNqj*}^MumAgU!0#?|QY@P5I?2of1=SzW3Y7s%UrZO7hyMyH58L@S8&rR+W|_atr_% z28V5a@lF498_Q0(98+X~AC9=Vb&tMz+4GAi%KhLyBVaDk@X7bQi);8xIffgkU28H{ z;XjhHd|UZa`kbZO`v_D+tjljUa<>Tt&mlA8-A-K@q6DO_jhTqf4*fBOdFTC1cnLwS z&xOzrQqtHku>~Hv7gZCQc`1Ww*b)nEt!B?H^@`p)$WqvM&<(7=c{6he?z1?iT(mdJ z^7xhIpzLq3YA zj-Es_a0>78Q5$%*T+$+Vd7uIS)f}Uen^~cTkw$yy>FSlKul7486<=I_{62e!+7_b% zw5{=;1Zcm$hks5MtbB)gusQx0nf8yormlp0M=4Ky7g@)NWiu(f)-Agf5(i;nL!Cw&Il)wmS;Je3HAZ4ACS-sS+K=j_ZPu`eas7mi=ApIg zDs?Y%5-&Fk2QG&<-DIq9E=CAD5*Azo6ae^^B#RI%rIJL$v8+B(P+2kuF~ z30fas16Ue-u>v&fqoJg=VL@2?;4u*pu1ohc-E}CbbsQ%X+Y5a!bi2P*N1_Sm!EHP) zBo^Qy(94^~V7`3jb|$>JVu=(iFqtFU`>cO|z_qMF=2MiDSL4Oij)OHXHP6hrzqNNmdsaY}hcB7^Yxo2VaRp_r7o-L9TvLOG^phdI`a ztN)TAlBr5L<{GFv!Q)W4{NkCeq+K{I%hQ1Fatymnl_Lj|KG$$d+&LV9o_8=O~Nm5n6Z5VYrfS9ak2*C8`Mn zFcJijkZzY0TwAsoYO~O+tv~53tD6u=0}&&X!fUCKq~XnxMW$Wf$7gJPhJF7rbBk`|{Gt zuangHbY=ZoMoMv_i2lga2!)EEzszz~b0sSuG$nyR-2D80E4Su_4%DhLwoCqR2@e)W z6qWOVs|Ew-#EOWE`h8Ru1|S6+CNJgcp7}@K{iv&+U?q>H|Ni$GQlyNO9G@*Ld*UtQ zDExZSr)N@r9%Q$$(UYXRSiK+I4J|7Vvq%^j3TA0?c^hsuubEI4F#fIcJu!Jb0ui2tf~TY)C+65d>%p_oqJzQ`lFBUi*#1 zv}bnWEiUhDSbIAx_9{2|^SclWV|mpfsh`olGLB?DUh#UPC%+W%UswL-5Qq|yXWc|I ziIW688bSP+HuF3iO+Vo4r-!cr=uhw8V-HeJZ2_+}12Kz#&ty|ie!bV=n46agH*>se zc4n3kq2GO{qY^x^a}A5Tt*2o_A&gNaZ4$37kq>pSGmmjq(BB2Q__czu$7gE>b7sBl z-o_B*Eni=e4fk^~K-&92#ce-GuW-Ya2^$8G`E4gOZx$F|RhyJNn>x-ApI2ck zQ|{nb#Jo*n_(3UrrQf|dJJ>0bA_g={IzYq^9N z`Odz<%$*{a-+h|LK`%%b^hS{HR%q|;C!%B6 z9O50*dY52=#faKzQd$G4EzN^XLOynuBW#t|V<;O?o=&c4Fw zX_M@K@dEA+$L6%jQFLnu-qa{$iK$)=32MC2J-1~Q3CSX)=UB4EUwOmq45(0 zt+XapG+a0qR)-){_hbxAhKd~(F1~8YD^K?6yTzPF8(~kL_l9fE=YnD9jC-mBt+{+v zLI`x#vOWmh*&!V{HZJdYsQZhRpp&*KYBDQzt**K_ELy-##=(#Ed6qbb(G?3U>XY9^ z=ZDlth1^lt6ROQMk@ldo`ZDX6v*|>D)0>Ml-EZq*usm@moqL^C>Ai{w{%r=R_=VG(SMfjoVMFYuT+|)Le zn@@Y+s9R006=B?ELYy9(HS4gkBk^wpa=@|8|JODxXLYk@|Mop}RZCWB$$OjBbt3dRxje zQ3p`!f<%D{X(!J`nNM9}YC|yE?wG>xDjmW+AnxciMS<^3e8I|S@^LJuB-V3E#33Yb zggBj@=gt0rgD9cS=m~wK#+eM_@%8kBLn%Qf&YC+KUAH`_bRLPlgUTLi=>E>2su#7D z1a5})uy35ayf-@e8{$q0u+$Zv`p;5ZIhSDU4TEQTKfH~anGoRF6Vj&Oh^GB+AeFnn zPU_T%ug0+7Pr)Wxmcuxf`?5A2p*iVHG0V6sj#+lc|G-nzP(>QxFLAEwFDGUx+HD~g z%xMHyRa79_Q{ec8Ld93d`&nF#p8)i5f4^kzuxHs*OZC%px9ANMv$N!ntt23qa$PG= z6Y*1+SJIEPHOl7vt)JIE$Mw_)lCX(hCC%B~*3>v=$;~g90{q7D-9>>q2GQ=fzj59N z2oktL!gc8N5F~=^o;I1fh6d;*>Fv|7-v`ASP|4{cr$}?WXIg_X#~=qbiP=b6EzTl< zw@sw$z5^AoUw03_V}!bO01*nENrwPNzP@l`ON4U)N$Jj66D0z~aY_N@`(u>pu{=y_ zz;z>PDd~+lj`oLbizyYEKQ)P+?YtT>2;DOOs+Ww&LAU#NKN5F(OOGoDcu(ZiF&pp* zGq{7!^B!T-yiH*ahSk$g$skG}-Hb$TV21PqGIvLr7_cfcY< z2|lxy=cwMJGb64rj_oon_=OmL`nsbEX3V^Caon1 zK+^rzlD>qCP|tkm>@_*YN!%;IW%WW9LA5dlydqeB8f{7>=Z`wdQ}|Q=ceCqd?a{C# z1o*VPta!x|^{qKap^MMEr%IX7frTLgNfX=&(uYjcf+%jOqywg?92ny!ERRmTUNr_` zS>l%up)GH!gv#`8gLBr`=szSYl297L`5Sh0N6E8sTK6Io5NTH%^VOr|3-q9*Um8%Q zF=_Sr7%Ki;?Jrr!!`V+N;E4F_PeUc93jb6Gk~mN^-?pKRy$z-~CX|giAF)-a-JYa3 zh6(#ye`{sE=V=f#LR`wCK6-MGJcj7DY_`bb?WSL6ZI=US12#?+$Ng~wN1Eea_vF>L zqIoJvBmi2}wwUlj8@^H4Q2R_G;xS3$U*;;Y@rf*A8H9Z=2D+kF{No8rq!C%UfGyjcw)RrAA?L-!!2eIaLvCzJhhMMo!`UA>XQ4EQNPM14-q7?gHuq=<`(GE}aqc`Z zpI9eaT)IdG;fwHzRVL(*ggtm;OrDA(wT_7e*df=!|%8q z*q2-f9$T18=cB&iB!M)WvIxFYoA67i{;*8CsE1?7fNv3Z^~^DQ%jggs0!F`?$UVRF zeBph%^wSUd+X5cgSH(jQnl0gDdyNHfN-I6TW6*c*90tKQBIpCT)ZBOpkYD^LSwi|L zMxooig_nYF;%cg2-mh z!ECVn^SiRy^yM1)jnlcLG4fXNp}JQo*<~EpMU~dR>}-{jweR5A=B|-=+zGo|Ebu>B zfJ$seeajLCTp6ftXuJlIq}TW*5b>Glb9cJaqT%~yq)vls7Q#TD)&Dp#oN1D3>%o`B z1Nhf!w(p3uVklr#QzJrzMA`$PP`Y)H91|A&JMt2DtQC@yz1KRvjGQ*y0&L zTmnr$?)*FN38D$mml;r1g1J3$p+{po-TDix(3M8}4wns05H{FQLMd|-$SJp5i3}ud z=}E0&C1G2dsW$ji)XUS?V$+qU0J^^){@idzs!PoE$OL@sV759wl!+6 z+q~7H{{szf-S6)Z6HR+wEA5+g#C_E>!(TWEl$aR~Ac~Dgulr0BZhMUY$hz^hu`I*{ z`0w~e+4lGC8nO3dCCGp3hOsWIoOxF(8T?bIKsg)rT6Z zQpD!U6Qg~s*am%(bm~))u_wKAy9^&etBd{`i4rtE!PIS}mdr*0uzPw~0(c#|Ms_j4 zv-~gUXuBe&9o~9fx=?tBS=R0`d(2Fz^|hrxYLw>O(#nG24?_rG_H`}h#F~SopDvui zLD(Lh=6~_DR}EcTpSwpT5s=1Neb_hlE^KWVn=tgCs=|^Eu)A+|4uUV^tX$!<5eS*` z?}foh2zAj2dh)zZ(=O-V-A-y6Mz-%nHH7*j^}NBsq_}t}7i0B#gfGooLi(*aAMM}* zFvUN{%3Ds1T=JKR_@$z)MPUp{Eo&6C>x7^$?KYt@e2`===TLwa=A>{rt^ZtDsf^n} zZ)}~tp8L+?hnS)K>wo-74WO4(%gP_qNIhws&R)1VLfA>i!I~4DI->8 zJckKE)|aHLS)@#Xu!Ht;!;B)5Uz_stI#lU)75Tt>6mAy*JIPA)unYo3<<9Uz$T->4 z&@9DwpFX$CAR1C{=bSC@mm2q)g(21m4t>)Uxu;??KQCvqB63^~npi zj{&_l0^K=w+x zp3k>5KDGLew>NfV;iYH6D-D_LPRGpD&BQ2kpNW&-+H<;BfePuwkeM5RgS*@_DIl}z zH7Wne)W127Ywg`buhMn?wm7Q>M_W?SARp1WM+lqM$Pek=1rz_Akt0SGsw;29RX^W} zshn3sn?jY=#{D$w?Coq`W7r$E--$^d-E6*~aN#}s@J_MP0mSU5hYB-SHch{ga>*uw z5ncFPp$*eef^XBuwJ$**oq9Cm0fBjr7e6&grGGN;tmCHCIny*_zhGIu(ln0B?sfzf zv4Q(P9HM?o(8Ho4$!&q1>9yD0Wl_A7YPvgp5f_7jr|fkLbxqH#HQ!6Mxw!Z&vNjt< z2LYH}oOLsd*KB~am078}LoF$#e1VQj)zWc!{)vgCp6>u0bK3&)X#^`^o>BX7*ms;X z=jWRT-CM6UUfw?- zq2^R4VDA-mWR%Rc%Fzgl_WLTGYW})|L6rVeV#iNsEwR~eg3qG)Rbt(-X-q*Kc5V!@ z;oW;}bgT{}bN*?2qgmf#-Xw|YlRhLj`(H<+Cb5yl=e`2$0eoD5dd3!VxaLMfVgUEP zc?jmcp=a02he+9ez9k1VYi3?&BAk-0bnOMa6KeG@ z`fpl%fw`{>jWde<=u%HWGk_+vL^FlZ_uAJBt#^dU8CzL~$dRplm>)6ax1(ISQZ7|G zWC!^|G+Cl0me$5B*12%&0hu|cQWC^c99RTc{hMuaUnU29UitODf(dvxb{;ebEyg^6 z8$r^Z(}Slbw&M1o35BBc)61iIW)B2DiP)0OP68d7B^bB(wkd{Po!{mb;62G(SHo-! ztEm>9@JXu>xy|zrBF5(_FG{}4lVSS~_`Va{NN*iHVU>$?jRa2*A(7`ZHi(f6xALQe8fvSRMGAu7Wu!U&2?s z{-~@j4F5JfnL`umnuQ72XqvMke64-byQOD?w$bKX$653mRJQJD?8V_$Na0o^N#qzZ z&3LPXsG&Cx#fqCz^4uvLTS9=Q1JC!(dlDkjxgXs_Unx$=>D~cehAhppHHfxANo{I#UnZS5qbk8v?>}` zlzvnw(MAKwcoAipBZVoD`{=mi=aShsuI~W}UVGyJdinkPy|;!r40B%-vHAbt!L^{^ zQ{YXKw+v#9@j)~ib|we0A_CUr!22i_E;_U;z}ZWywk-5Q*>}ks z53q^9+50lG8BZ>zGU`dU^h%~XQ9(TGbB2J{e#KS!UM>Rktc znUHcu>e%XSqw>b5*c@NAOx60$Bcu(I>(K3fV6>jmu$qC`kZj|fFPu|hTuNTgFJX|!FqR-<=;B7yj1UI#b-$%ouCjj-I2t{}4A}fW zNV*$*VeZ$Q90LipS57t9Zm%6_=}aF%+up1%F0<#viUyv?u1$;0Qo6 zOy$0m(6ZujnG%WJme%073H5iU)EGF#jWq0D0LV_(?+(z#CRrHKl802%1s|c~?~=$7sUUxZu*^LQNA`S;XHI*DBJ| zm}CM!2lTYne_D2zqi- z#J$Y(?^++9LI9Cp-bjbph2)F8>Z2s@!AG>$WRsW;YA1a&*XtraT}GA)Ii>yX@iLAL z<~7c)gffd?KHUFKTk5Q#L_nSZ_h$B$l$yPxd#AooMzmiR|4<*Bqu*gsUWNa*A0;*Y zZgKsZ$0j)-Z|~u;2PvZm?2OuuRxd{X%QJfo8Cit5)OGGIetA1zWHS>9ixHQkw6EnV zJhv!fKU*J<&uADjDyhwwWPe{lOD4UJYkpzcC1<1c*qV=*<3mq{4cy%dYx_c1Qi&>a z^@B28`~#nEHflZ=YAxN3`G;2zQVj7;aUxm!{a~!3+B>v92ZFz}0~sT+gGL6!G3in? zd5B}nWPHr$TqfPd#Wz~R7iQX5D_7U6Npl`Xma@lwo>qfy-43gQ5L{s?&4kBp z3v>%>L1vfQAg%gt{X1$0&qZ2Z4WcjC3dX&-y>l4H-tv~<*b>a%nfZSf7LYUuTZfHQ z@SG^j{m6nK!7S1fK-Wah6r(;7z_h|_G^O6sjPBE{XPVroo_L5pt1vQ;Wo7`687tJmu+0Qp~6=OQmo4s}MCRk0W*zwQow8ccE%ec^95tb@@67zuvmFoQT z%C9+XWJH8(I12ZL$iNZ)iBfwBx%~5d8<8+2RTg)x0eZ8W&UM6HlzO9kGc`1qvjYdn zD;mVHe<4db?~Q;5WknXsS*Qh@wrDwuJF57%_dEmlx;rlP0>Ki)rScnq*p+rORimUX zebJmgx3{7d6S9Akk;rN-lIGLE0c&pK$68Xo5(*`Q*z z(>&t(l!FFi?j)lQZUe0+CP)LArlQjTiSccxoa>eTWqa(zk&eYZtEmR@2hsEujca_7 zVb&oJ)`83Nuo3UuFM2qNi59VceG>{g{a(Y&17pn&a8y`-)BV`4@_fV}YwoC(W{K4G zxkypRI;yEf&Yr#jEy)$7mC-VtXcRH!hdbL#F6Tj<L7X;J3#_S zNCbo%y40WCP#@?8ODJj5Wa*9n&G?R3xMCZ_ffsdZ^4(ZKMGz?DZy4v%@zyVq`F?u@ zcsgkP8Q9Pg9{hv45t~N5aa;5@#1TB-TGUUj;wyQcu?cizj80dP3hTI&$rk8}j3mXK zoB$AW4lKA3{NIX9fXX1}<&c75zR0c3<@*2bf3=}NCz)oalUg7o!vVAQg&so9$~c7q zZBfqzxD%&F&q<*^+5*e&Kp6A#%Jn1hBe~|EtF(gNyEAhbFv(j z0Ih+QHFUocgW!kyyF>b!tH@0tR+V0zBRP-zg6hdGO?JEz)M{unl}3S220Jr}o@KEG zLy+*Q#_nEg4jDt*&Wu8jOKS6EXik#i`i#_TZ3ShMgp4CZp71P;X!a zq(?P(4(dCjO#d|BfyE7Z4*jB;*Z;}@hV+%IW?qU4TRF}2|9^;fOlw$Ut>r46VK&cbX= zS}@r7OFa#1!pz)TA{M4dwG*=mG5Z`um?~7vXRBrn=Ie#9f!(S){wg zq_e)S0qIZa;q0^nr$RXfgb%A%^EcHj9BG@X0E^)P1v%(2+*kb6rMsXX{>o?l6;zY)-tQJEfiB2V-b{<%h$Korc8iq} z)Q^}8cHnrSN?h;Zv`-A zejoWm{02UCOX(!mgu|*#@3|Z3XoQ*#+TYjvUX_nX6XCFX^=0T}L5!5%8vl2mc?QRw ze>|NGpuOb+vc<(@n%q-F&|!DL!OlanlB1DS&r88DrCWmFWpG$I|4S$8MfLY@x&Qev z|GUUJA16KwSVep1f3|-9vi$~BSIqSh>a3Z&aIpY?$=5xG29kHG&LxL`-uRD_Q#v)iM3y-`2B}Xg)PyFy->{}VJw9vH z(z?O#AOmr4@!rb}4FVto%t|kZn*F6kEC>sX@0O$BZnNKiok@33hrVrew-apvLGqzY zV@z9<4OF?+pOD%qu^A-nzdq=0NX}4k%h2(w-SX|d9Se3-w`AF_x20=X!z+^^SJGq+ z5{QW=nLmes&&~P#N@wsY5DI4}m=8qVmR`>vM~7L=`&*l)2oY|o^DO?cJ`F~+ z533q|t)Dt{?awhp%rIOQd%j&yIrVyz%Bz0CO-qrS9rrOMZs#44a5~;4%!Leo-lWBK z!@-pr@+uxk-NQ0KG`9LQ(tME1nrV%n;)&x6Jl;!?wjPY=dUHya)s?48+!T9n_E|bc zg5#kBArJZ$$p$6*in^U^M5FTfiGjFT+_e@Twr-suGQWMktT@Unc9>Ts6LBsOt1Gw>|-`eh0baPAP>3U-eI z%1F61lDOD>6O-Z=1+}jayV$L~&E*|ZenYftcn04q61MS1$V z^6NNjni0p)gzI7-MWqvB;~QDTp9u5;Z_Sg2eM=RujcDERraoW;1=d~3<0^2;L69@c zz|6>z7f%L&$t2lyo!3DfDrM~rGbj$4n)IHJis*$h2H|53!H5s89XZE{10&FPfrR?6 zfFXRKilo*Z9s?!X<}8pk;CTLq^X;!1c13srlLK~<3CUNJ4N`Q$R83C zSfK*NwPQ33X<4XS1F(`LO6i6^@Sm6$tutrE#-`Di)VK`K z`6_Yf-_RvcTMpa5n1{Oo<{F0L&-Aa~k7XnlLaXkXgnhW~^kvg4@DTYr;N9K`KT#^# ziqU4Fp_jIGrPqOEj?T`H)ysegE{F^$`1bMGdI3(w6ci68XtbsZ2+sFcT$HTbI&H|g zYd1S%WCl-?_!S-ELM?A|7y$FqEE~DZYJdQ-@<#%Wr)A^%(aZ`>(SD4G`8&(vgMzZz zv<^%VAo!5OZhMM}@mb*2{P)0Q<5@mAZeWvf!} z-lTG>dLHfIUM#7qq&aOa_vj-9Tgzf+XEMn_ z7tjSo3c%BLuYF5O;OpwkNW{T>>aPdhuew2dvQrrDy(=v2K&=5t5^WVS^!xa6>o|Nc zyqaVKIDdA!${UDag`^CA*ds++8gpJcm1^8bFhz6WfN%^ekWTnfLqcKX zqYT9`P9OUpRrP!TeHJkS&a?Y6PpQ0kXbr}cN&~^Bam3S!WP^8`eG-|ZNGT{O?esyo zGslhLU$&Nwr(fs`j+c1=ueRyt2UP6xjqoL+$BRi|b3vMhm0)wyN&RLb`_Zc#lDqf0 zD0*MZo=GyYTsFl?oTMYrjs7TR317y!%k&R>_bT@$lm~7Qo zlsvCuec0E0-bu+hg^pfysGIR(A#D+k9sKqa$ph7s^m6b4XXu$`1?l&rR{!e)pdso3 zvUsK%bxcJh#CTLHx@<8i6+A|%B6Je z1_t4e7w_JV5g>oi_{MxESojG0xS#U!wjmUwI8p5N?qCdj}nC}0=Dp)xL1#|`?om!+Tf2U64W2%K3q?ajqi z3;XYwh}ZG8P2-`bA$TmxVm2Zbq{Z_!)ofA=us(Ngwu*UjFo7swqLt$S-3% zN=2=m##uWk)q^AkH(eGK<3afJTyOH}kP3jN9JM3YGkLwx~zm@w04p z#Xm1H*$si=BrWGA(UplME(`*jAuPESQB1iWhex~fqcl?J`X_zYs5yv%UweBZKhG~_ z?y{|MTpJSm>I`qJ=9DRj2VOL$)@E`Y!bH7Uo-lq-<6@bYo)A;#aNLQZdo(*k^DYRK zDbb|;KKJ}LCeIU$M3 ztQ$i5B)NL#M{<-T|3}qTMMc%U{WAj$Lo0Wv#rYyk`?0nD?iEpqMuGYK5+FzSLqJ)`}*6NcrDqfGMFMRO7I;Hm^3` z<*Mo2m1b<#@7V5X!&03|wC8o*E0n`BsE|#EVyae(bYn=!4MF^Y#R)=+3QPS8rw`J+ zVguc5T&9m8RDIjx&Et3P0LhZfrOz6`yE)Y>~j?q7fr>sbd-}_6&`4d-3S{; zzd+>@SO5x&iXWPdQ*Mf}3!wZd6g(7zCG@Py$?Mqz=PTd8PygI|&A=cZI>;}9mipw^ zefUw<#})rZf7Gasbz)7-wtT^9nY2P$$3=^@XN{)_1f`Q(=Brc8oupuCcC%hrML2O{ zB3L-{XDMT9=88TCb4U|sC_of2ARH+rkD=V+^J5-4rY=hs=0GsbMNO>rpAJiL0xJTT zOXcB-oq-_$b5Lx=wiX_K=h*+@ObLq;&? zO^oB!AE?Ex{e}_Qr2;~*O7N4!`NxWB9r2taototTp6V40&ZyT79$7ZK|LOTQ>?!$a zZ&ot{#Q^YA8rct>)=La+KG8{TnPnka5{+=!xT7`21tzFy2t42=gW#LB4`EZwvxHE< zK*o%YTlm@Sj%WYmmQrgV(%PF2pz#NA2!@|AN>Jx2mdIVH^!>UtEIRCaSB-;|J_gO| z2`r(2<86cx*bn;@oEE9Q*1tn3SVg_L%n1%o1hLVsl#e3XXs`m&G_l}j8&BC$7#;5z zIUZQJPcm$Wy&+WFEc`sQYFZ($ce?vjyC+6#=kLCK?JSjflMyzcft9h4(kyPyPuCDd zoqDL5L)~!CSnAl?w?-U?Nsv1s+h&F|3pVu=Z>Xe@^=Xz3N4yiQq&8{SeEQ3&NUR0$ z2iFzK8Nk+H+x*1jJ0HbAK!AZ~Udzhqd@~2l!ux_CBQio<8}K9m5ZfO?-BQf4d%rK1 zx7ltoT^5nQ<;}>z4XD(;{NmOrTcCToo3V!z0t9@%S3}J#|6y5wrSo*h&Q1h0i4=Lf z$PYV+<)BNC*;$Qovk|`Q8HeItx$SVdM{6?1iLyCQi&FRUG)gO%&ljTJb@YtLGA2XkU=O zf_@A7;ha^r)4RNAmN0!-SrQI0)(_dl4zdxC+-9}F{*kdyMd@>N*2val;&&+n$Cibl z^==d(veu92@)1#3IM`u0@}sp0^D>k0Aq`AB^tqT)bpL9k!Hp3*CL+DuOb19ns(_=_ zUDF^6664t2wvSruGvNBTwdk}TCT>+bxp*&@7AWt?{)GNn)20#K2~y{fh9w z;O&E_9e_l|QqsT(!Liy<`NiTU^ffV;Hu-g9|ePJdqq(VX2k4l<)l2LO(+T zA8trzwSDYSJ`^Lm`s{l3_ViE2)%5q5_8ylufa&ukQXtVhK-anaUk&u`QP6o?D|o5o zGPQfj!9&g9=xV z-MZ=`dt%`Eb3s)Il8KS@-k!O$N<1WBviWxs6@dD#1Wmd+95*znFWBHKn(k$0Ctr(LST|tgwvE@%$}D;-T9;g zd~pwmVxHdL(&&)j74ZAMSxFL`io@ObayZhZBs3Nv7H~pv>hA{|p$%BUg_d*JWg*B- zZDN%w<)lHTR5pK_Pvm`S6z9)Ij8}H7w+u_Ov}`4AFIf}PnX_xx@6fbD=u;s~>3789 znPar)M6TC-$!Ga;-WWLbpV3=v)VJbzuAC2N**<%+taWhrQJg1bU`3fsk8w~-H`(q-+-M@WDEN0pV;W|St%GH1d%Qp*z(K@ ze$1!MtbcL?I(cee;~1>c7#Y&Oy!VR0x-ZU^{+a<4Oa@L}ReoVQHhf1*grotdxNV0p zJjLkSoAQ(=IEUga=d|I}tNB+|5ztg0e~F5UE#dQ76Cs^pHP*5*gfp+0IPVXQoM+aa ztiYm z8wKl>#eVDdjyE8X+xArnu%o-D!Qc;R;Uc;Pxdkb~ws8;{)n!3HX_JwIeMrrtbPym0 zfsTy}p`n!cX0-=_GYW~|sjiJtkV`k)1%x558&RA;W($btTTog3g$TAARMFtIL z?|&EZrp@?*byT>o{$jzcaP@*{?+e;(QT_b-^={p#sUbq3r^ovi&|7Rw@sma%0%(Yy z)@?`eKxMH>S8l0m8AylriL9ZqavnSnD6WhFlvZx@fx-m!r4M3Z)Zns_Opyn$?-pYJ5e(TcI)_}5_~B0!mTnV(j!Z{V}~RIUpz+JzHE^mA66pK+ve z{uB=U%)*UAcudsMJ4I7h?5%7Uq$WKyP6M0J16%#5z{9?S+*lII?%p5{S^ld{VQgAd z|KNNG%GJ{N*;=d-S02aEo^%Q=+U6j{m+CKXYB9%Zm9}-G1PyKs9x^F8=j`;hLlmzJ z|Nh?(*DgsX84}#lu?$8HS3gv{{*i$%)`6`OL8jqxsRxgkDNzNy6c-n^nL}Y|*`(q7 z3q)D&GSVaf8BB7G-5Yi9sp*J)P~Ub{^U{oSG#XfBH%I~H-m4Q$-3^IEtHCR9h1;6D zoWJyL;BY^!9JN3Gorca{fKmVbrZM%dBNSl`-0QI>k1UVL0K*NwRZaecDLCmb_o$)o z&z^798yP4}zn+Gl;IH1Mtl{nJFQ;OV;AK_sMKZqg3oA{yPkeVo65x^WA?IC3#%gEKfCNcs7Bb}_Zm{LjR>tVY1t$go;+!J0_=F< z&qQbQ`+~&L-^abOCuz&lz6057Z=D02LeZPxAjl?`lIzc0^-N|{#fm#WrxU`6>-~qi z)`qoM76nQHu;hn+opx&j3^SAv$yzMw^=`ZsP{}cLiW|Wvx6e}j*XEipCy#jemU(CQ zpw_eN%iwkUx_d-7^;Vm6NK%8a*g0VSO``tAd-0f!3v8>$T8XcUOM_FG=s|a;)KNAk z4JGIv>5!W3b%=f<$;szItmU?oY|jQF!B7+@nn`I?1fn8i+xxvcO#{_B_?^Erf=g6@84D1o8#{8e0@E!BWa|vU8=p!s}!~erRLsPoljy=p?rvF0PYGafbM8H>1xuxH*~u&rXvR7VUXn4g*e2!(`Mv~ zOzt_}4efE|7J$5ex|Ko~Scl&R1CzBxrUR% zXN}*c1XQIAI0w$2+B|XyF%usK1^Z=w^5F+NC6U5wDdFE?oi%uusqbxTJ8F2xHs1D3X8ER_fjne~D@=bJNa zra|cjE+vP`lvAF3lEa~5gf`thJ&OkG*T3Dc^+{~jT1ye7?<1ezXiSgwED4$KF6`C3 z`6v3`PgpSo&;Hv>)G}2 zgaF7&LmStYqjRVKc~?R}LuVh>N&u2qjpMd(7NxCc{|V_4t1St57_a*KWI>|*QrBL; zX7-1a3!^G8pk42FNeDDZ3AW_vw1V@e<{I)=qC=`&#+S#WPd@3vDw7qS692Wm^FRp# zXRW#m1ZABS4Kw2+UT*&65y)Ks+#*DX^DS2U34;!{hD1(yASwpj1bdI|dASHNAV)1` zrA4g8{rv;z!WP?}UH*&y3ER6^je4Fsx*m!ZG6Y3{wDR%rIf75))~(bDhuo)qYGS^M?uq_Kl}bG{DHW zmkz!=B$RYL-~Pj73im%kS_V3U91zWIvg%y`*)mUvW^TPO4Fl0zv1aP-oKs* zpBy5!2ax^XkASUbG!Pz0g%u`@vem$%z#%QJe>GyB>OrWZtT&4FA)H9zq}Q;)=i*Cn z_0$Cm0!Ws(sPINmYy}pgn4UNwS zP((2%-KI_{+~;yWm(5YkqRe0zwftHPSyZmpdhja`5(fJ5;>lm0gpU!uvG*fbaZQ0b zUA_?iVrrQVa^q+A>jQU$T630ow(O~>rabq%9D$6(_JJ)Ug%#UhRS{9h{K}Y~v7a=K zeY5Ph*XpDb1~X^^)eoc8HaGh!y}uQFknQ9VSZ36;=1%=Oa&ME8gdhugK>8($-X#!j z`kog`reF%kWec_vr>8-66>P2x@%w`Q)qih>Jcgdtk9FRHx|Kp6{T?eIB=}v^OR}oh zhE*nf9)f2Tt{pKshhB}K!oC?vDQNCM__?gp+$b*-9m(;5`s&Q%iDM84F5Fl)`G06G zbE*f!=3yr{PW-8oS^r9}-{#L6?klB|-wrgE6plY4B!Bx_{dgC#5V$X=f|7|hp*Jlp zUj-?OKAFt9AGZf#G{8<&Up{E$ig5inNJAhrSt$VrzPfFm@${eZO?{XlhS(lDWbD%Z z^O>?}@+*cGTP@t~!=s9Q;VZ?v6MtGxlMTfQacU-VI+>CzPun)I^C}yZl2RQu6vEG| zECSalM)fJNCPF{U-yIqDpSz@Y`Xnc-!<}57c-u_6cls06)($5@X_haIH!IcY8QE8C z5zMb5F$gMW6Wqkl*KNfAb)ln~#J{Hm8`Xc#toDVb&PJKQh0}O`um9}P?_L?Q_V^Y3 zd?J0H2kRHLou8j#3$Mu+gQ(2y?IH8h)C=3djZ0;`l)C0#x4rCxg^d?Ri^qgZA8JpP z-oN?w9#j)vzmI$K1^`7o;gSTLTV5aE7S18pJP%IX2vMXcwkr2*)WdkkFY{{THnmYE z>Ujmrb~UHR0U)2e+Ep{uBfHre{1&3KaNQlOJ=))tcLW7 zTl>tDwm_7gKmi^*KbJqh-tE^W%UVvapP4v|Ufa&j4_f2E@CQPd zrrq{Gu@GWnQh~Jr|LlKsJlHQ_BGRq?_5b2hRNB+lNNur9u5?9a=(KxHu#ucfzhCBc zyN6UL--9)ODuJ;fdENaaxYTYxHc~)GI>ABp*zK8j)n{^Ps?XNj2JKEz?O(hfq5D2Z zb@!$PAj{{U_Vn!z#Y;{8hG{~)NO9({NuS+9_dx>QOJMe83(9-;hz5Z>aiP z2ISB#gC#;J;vyp@yih5%8hOd!Ok>N`SyX~3HUv+N91J&e&A>E@aOJ_wht3(zHnVdH z2r#g3U;l*)8{9(N`YGSL^iPZk;-#NaPZ+=U513 z_@SkQ#1Vif)CK-HI&L47yC{74h+Qe7K$^-Gga38;KK)JJ0H{)X$&q0G+8+U5y|4hx zc8&>zrVL1(78ws1K_LxW9&0GB5%8%irr&qosT;{UV6i`BbDD&&jmE-VB z@(p49)64fQB~5uf82!*qjSwj_|6BVjPu=$G$q_dEQ1H<1_aj*rHqoH4q)ZAydllE^ zaUi&5r>=-Kz&z8(rnX903r)lj5dN^H?bP3Auj&{ID9GWk%XtYa`a1K5Cbxd8hi-CP zx#6RMI~=Wz;+pg=d6U|_SwkalbO@?i>sPEAN2Iq1qG?q=>P--y+&!7;PnR6$!_{J%~jhEStnaGWB??a=|JEPB96DKiG7^FO0o%Z+i_2MO3F;P8?XkM@;f1yNVb;gNm6?WZvy zvp3CBNjj~3AIc_8T>IQqD~aVX>Q-3?Pbm2}-1evUEqh zncLS@sjh@8t$DR7_AS_CI%3u#2PMuitT$sN$Vubf`@}12L_u@s>nkmY>BiMR9W6*P z2UG`AVb>wMoSrO8w#vC_VZ%TM}A1SNR<%c9Er@NLM*E02;}? zX6$TQ`$9JkIt5Vl+uL7{fWE)_u2(9%O)Vx$ZRx+JUB>U+2KSG$d3(qKNv3(O4NpMI zTSa4xY)lu(6=_O%#ZeB))Ln;Uz?Ns8UJ4U+Q`Y%`yI3hpN|zHogDnX zETa_(=<>}AdEJ5(H@51r-XgDLb)f5X8C`pW`bZ^fVS-c|r)d!_W-AJeQ6 z(;$ys|546ErzBW<#zRTA&9OMC&9A36FD<`2lWNX$*Vh~z9y)6y8UzzaGJojS(^*Mj6DB?t2>uu2%Wb4UZ* ze^Je16f(Ro;pxgPG#z$;sGj!^(AInvLYT&5Lou&V$dwh^{Hfp|(rG*rD6p_-eB-Vz zQDI-I&<;BEpLAh4vkzBN{3cVM#B359fPX^A3cleK z&^-A-@^8VntIY3)Q@d|KDt)W@n(Y=QJy?B^Zj-;Xrlp#AIQP={Db|dPt)NiCO0GgD z&l?2f3nRUt2Y0-=QRN>f3WZ1<@!uh4{H0#RcqhLSVGIsmQ1ugl+0zKSzo#`;{uMYB zQI;W2xE42}?qR@@VipGe5iPaRpTAXxEBQzfd9*b6=d?rOKGFD+-JA34Pzc87xKWkk zgv$cVjeSCKnI0o8r(*7O_Va&Q0GVApsZdZazW1ysI+x`eUF)e+(t_|z1hDu^XuPwJ1;)uEZRj&ZWZ6g27?g+mTh@&`j{4}<2Ql;r?N$CO+|XfoA3 zoQ%Wh$m)qJ6CR-E`U)Hz_qX@y!%|q(q}gwowu|)GsZ;G==(qcKvLBbnW&MK38RT+4 zpcZY-0d?I~?mE=Jh-9=gtg&8>mkk48|MnqJd37RS$Bc=yBC{-Ao}< z7=SX}n8Kb*iseFN&|NXq;1gFj6!0(itzO*macZiVpRRV;ANQlgLZ5G)3*b0pN47Vx zu=XKbtx+n!iEr^xcif2q)@-fEjbRZ{VD536+JIc4Z_r~6ah10C!u@61`km0g&+>$K zTibUzT_>?i)$qGLL_7S+FcC5;sXW_<1|1^n7 zD4mm6Qq!xHMbxi(2%jd|oaXxD>8EMOcLczdK8Hu+Fn2%{wPn12xNx3xRw|3Q>}KU7 z#9K;1=H;7g)$@PZs%(+h$m=0_T!o`bDT0;Jo!+U^wDmaf<-ng|29;JqKn;$>;U#*J>#e z2zu4t?_5%2heBw1TaQN&tW1Pq<9|Bd{AzGdwN^;FR*_E5OmVi9{>m*3wp|%YMszmb zD-8k=WBZS`k`%*tz0wrRoV^M*wD-FQ1CD(_FYLEB3IDN2el8&aRA03`_Xd#Upphmi z8HAg1QNJ4!gutP=qXZ!fwvz2Wm3N9UpG-n-@YNQyV_pjBU!|a)qC@*UTi##iFGJ94 z9j&}UU{=1In~YtvPe^GJ*yirbHu#uceQ;N)B?Rclgu;P5cm?E36vw7ROrEb5TI(xE z>rsAtq`w=b;@GJ;g9ZD{`=g2GfS_Uh3zM3VN`l9ooo8*O?$@XLQ|91xYQkQ12jM?<6cN<$Gb><+J%eB)2thf z%621HM@nf&xO{;GQy{0@~=>wR8js&o0MJD)y=7 zdEL09FB2Q(U?r;8A`!jQO!kZ;Sj%djw^Jnj<~OH{0nDgR zQS+LE8*$u@GwMevIM2Q=CyP*uINW-AW09^D& zl|vF=lo2${OfzJpaGQT8`{AQ#sOL9a_qjNf5{Qwm_dI?=xkbcv#3xadF66Z?)+`8~ z;f^PdEtHO>-qAv|Abv^!^UA8PUt8&1B3TzS^aQGtD0x`q@8{EU5Wmi6 z_arwB@_bYMsqL7K-7&$JhgbkhTSzhsUE@csn0UJDFZo6)0+ajZmFY|#Os%bRdVABJ zmpikq)#h%?wFF0Kbwc`5qR_hN^9QYRY1zoOhtDIPwF|oRpAa&R`_3oG44p=HB+2~A zBV<^{WE0jFG7_LYM=y%1{i>iqiH?CEwI&Q~Px`TLtVirKPLyPVCoZ?`hZKfRJ7_+* z8P=cOxTwK*3vr+ljmwqTiLvL3jN@P;4X3t3r(tactdpVB-Ug6=w%p~;;Vb4jPbCD% zA+)}J>^j>~*AB?@62qE9BSsp~4|-l@LgaH;51)-AXq7%2fM*~dQqAHOD^SS}oqjsa zTKb-Zd4l~@4u%bV&y7<=OX|7&zKyx$-b2FNTE^=bhu+agp#fq2vEp=YuPl(@|M~BX zE5^rs$8Z#jvNQ4tAOquEU<(Gg;V2f48cED2N_(H>(0hOboy}pox2!+Ca!UDsq_duV zZXy>xGSV7kYFN2gtV|}mL=~c`vk-=$PPryO+9LJk-OetiL7=qZp|!&ghY4o_2(?nG ztfePNIFNWKDdoDH1OQCI2n>h48TuoJ$wtH8q~`F*gaL}?9Iw7E)LoMZgTUp`6f(?I zh3XO-B433|;ZiwAZ101=H8bYh9d35B!(g%QL#Nq?tWQbk`}Fu*b7(`b`?l>wzzH;a zXCHj!rmsTe3ye)BQ+rRJmogRi^6Bba{Z1UIl zmo7hwMXkALNm=^((z&|vys@p3|8R4&Ijgcxh=z@e}rkHR;vZMT2J$-xOFD)uWe30%xF`uh?BtaXiPAB zTDa6TxH89;#!*ffY>oMMB>iQ6uyKRd!7}CE-?AEdRi8E|RX=p9jqc^KXcqMw7qjQk z0>Br;!0y3%<^Sv<>#XNy20cEOrkxt`hrBZo<$#5~b$r&8on7Ex7WhHuqi#X=V2TvZ z!3I1I`mFs&2{iguh-es3{F!I>JTM|zGJgPf%?P^Fo)VVMmG-;(4zdCij zuXf;*G{+^KokMLJC1&$C@3&aUq@fAk&DMqRQo#k58hLMG|DT?VW=RxZI`{kGZ&v34t-RR8>-1(JNNg8eOMj> zN~eB2M5%x4*hBi}Td0@e3Qp09F6yH-71+VsJ%nS}BOaz*2cM2lx%TcD8E#Epxfacy z`_S*%M4Q9~zNK(Qh!6+Ngnii^^sj7#AgY9fyAvs8-}MF+mI}vY^@_V2+p9k$`}?dTqM%%m<^A zBW2eDdy*4As*N)Jt*Xhv3@*GQtM1*@_tVII~vAw_pB7Y zDT43i&VZuJBoCOn(i1unu9`^yoZ;WX1%G?@6y%1;j=KnZdoISOeUu=;)?^bS|Ep*^ za32Nxg%cKx#V_!p@R!mAR~;)Xh42qIf?#ZXu9VlxBno&-o91!LRGrKbt7(^6|X8qe8g~SgFM(lRt%O+ND%fp zjER2d^)Xxk=4dk%a&Vj8Lm-nOVpxI5TdCI%hmf$U0{mvK8;NF2L$P2Q{Q1)@(yW_! z)$_CmPYB{VXF&4bO{r1k9xzMekyYIsF9+&d#;loPFJzTyL<$wNnfCbAZ5d<9cSL~S zF!*f;QrA7_IG0F5W7}vW^6M9tGn(~YmRFnG#zKnb`JBg7<3d;=uJcn^dfdy~qLfiJ zAWQ1%Z-yC0t~e4m8-woDZEfZS$$ulYkTMPrcV@-YAMNlvIDl?G5d@>D<-p1-BVc-G zC;xMpph&C9s-(yhS$iB{zq+v?hr#`L(vbLg04v%hwCVjN6)9JqM9*?9a7OOZ{a|cb`XCS zp|E!cng+kdqp1gzKv46TIM)JuZOo7hio&osjWKo%M8&t{xinG(yaXO!#IEroF5cb< z@7c6SGbz+*GaTs72PjG(eNOZNvGs;aw_N+cxXJwh`if27(1uHJFs=_1fFc`KZTvG` zFP8TZt`W&i$5T0hThqU9XFVd$-%OD*KnE?~65H9U2srhytjwPb>YH^c%oIoNa4g4k#>nwg!VD7 zJ(jRtmpB$zzkhu<5xJlqLV z>CrpuDb0gPDipJ^ln}~h5THcNn;%DJECqLQ(s?miFRbl$d}qIF?!r;**<`6R!GOvk zY<~Brg(El!l|_Ks7EZ~%IR^Q)f{a&$4G&*nqQ}dT!j$H5_b)kz`-20M?$=>jJ3{;b zlg#8SHoRCNQlduwQA*3>hF)IyqH}u`y4D1SDx|=|L5kzPkDFJPD_psxTzq1zZsw58 zE&BlKn#+Ds0S9D6Vjf0B$?h+r&hOSr{r}RRezM$0O8&z%FU>b^tlZ~3HgJgXKKr|W z!c78Gt(Y;H1TZvObPLpdg3Tg&myD$$0$MzWNPjvn3Qmh4J~EC<)0%$b*3TWGnmGQm zB!YTg5%WBkU$ixL)Z*i+j*^M6DNx0MuhVDXi=>i0_c6mC2_V*`cGJ9IXHjUsx_~$ zuA)QwF85D%i}TkLj~p8Z-^?!Y{Pq{xO~(`Us}L84=@cjr92{-xaTG~WNZjc)lWcqP zo-|Vy85ZTV&9n@r8d5q1ggIFgMkdYJUOAY+Vk1m&1ZXW?OW2py2`iZd$oVL27T-~r zn~|0pvD1|DhQ10Jlt{>VX8(5HTq5w_Sb(GFKcGymf}*r6{q2s9Qi|6aaZLeoB2a=j$ z=O5}cmf*2+<8u!v8I@GMYF>ZdzowUu2EBUp_VID=9+2{x1aF;n+>Jsd`;eC39Abu_!T zDfHAGFoc@|D@Oiz~S_PxB% zB_i=_ZYl*R1A2#-p$0Tolx6)p5!Su{+0UK~iR~_gZ_u9{ZEh9dftI#r9)rwXqbm)) zWk#sRoqoSQ0Juoe-TAAk1xN=ir92GgkRwjI{j8*8(27*6z!&5YxYwcqCMuqOv62Z! z&@jOwxE1&Dq0H6 z(8J|Ip@C81$yXwUH>vKVzHJYu7(7Jo&mSv#^&9`9Y-}o=Gy46)4^M#V&|7nVPWT9P z6Snu(x;>ugH?B`efNSWVzdAu(?%STF)%!kvQA5vZYRznB+Rcd`SV!{CMd-quh-HSw za>uHif?eamY;s7^E9nvsYc>ybKOgtutillNf&V)idNA{cEdV>E=mFs@v<*SbjP=jy z=II%WXN_(1zY}`N66l*G_umM zb^rXSZD@u9QYOM5oN9IlpP#N1y!^A~$`-Ms5Y_W2-a8A+eokt9;FRiIiaXZeGI`AN z*r>SxQY=r1=7zRc7 z_2O=QkrofbK<;nCxE&Iu%}9pnS#gJ-?`CH{kSi8^ayn6O z^c@A59tom!jSDyrkXT2Fpb)!g&F^BFWAmO}zB)5h@*Ldi!_b<(wikz>V3 z=@J7@?v~iP53Ltin50_8m0Yf{tZOE?Xhqf~4}c7*lxb<~{E+*Pj$t$?<*Fge+30XY zoG^4=Jtgd~Tsdg`q}&Ey;4Sb1tsUXcqC*W?3ip06uH)rId zaKB!`DP8Wd<^lZGA=Ez}_rilnuwLda=ZIG=4;7+I`AsXY6I?Bk+Ni4zESj10`#2@a z+eDkv3@-zc!dk)=*Wnp1s$^{@$GVgXiFqPl_uRvsubv~b5Ww4t8Di(>(WeAm(c(}1 zXgqOAWVUyhSLnS7honjw1-Hft$Z;7$!rMYkcaA;Hp&y1z0$J$8s zR}R-r-%P?*N(^!P>8NGx7>Ke8x8Pa^_a{%)xlOtdXrjd1gufI2qiE=(MX&uy7zDfW*pby+Zbl|61j&i(u7)7nX`9RM`# z;Rvr5a|0uW5a2^?#YXY6gH_`h4|JEtpf3itQMS8X11qRw(1|YuuZy%amMr|bUANCg zfe8-dEoFJLehPN%yB4TJb*{p@T`8gXch6oOb?wJl!t z6K5E`(xOHPbHe@h;|_$x?@p@}5kLDT;ZTivK3~~iOQdb9qziX@nj69SfFgy^~Y_8KxBQ%y`23;x| zD0KKfU@`jBO#g?Xosl8(8O&pKG?uyt8FI`CikzyXiFqYnjA|mo43|lOjz=&aWmrww za>P}9N&ex{cErf)A&CT&1<>p9by%O*h9u=u4yKqlpY9~Jj48Std=sSpivSl}?rLcC zm{w9S4&qA-^uGS$IdR&0==b3|fVC716~*%!whXigl#)zs7ImT)e8}1Qp?(|P;kT(= zdN_WJY0nJgFC{bHR4)z;RTm*TN8gsp2a{YyU1~fW#8LX2xPtgbWa(0`NZr?B3Rcv>5If z`g6K7mDm7(N6M_r8TO1NbnSvDBD`+i0tZIqauxWQ8`d_oe=E0H>#zINsfdOH@p~v- z;nfIa$T{wrO8Wr3G)$g>hdOAev@;A!Y#zA%0DZUC3a8)eKvQ_O*B(RObWrWkNc;%Mt{$Oi^ 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 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png deleted file mode 100644 index 23fb9a5f8c0182a0c0610ae8b7e5758e62d493be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11719 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 CzqH!` diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png deleted file mode 100644 index d9584e9024ee212b3e767ca4ae1a1e1d60774a3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73852 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 diff --git a/web/icons/apple-touch-icon.png b/web/icons/apple-touch-icon.png deleted file mode 100644 index cf9fe8f1e70d8b4ca9965ca54cad4481e4f115ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10079 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 - - - - - - - - - - - - - - - - - - - scrampad - - - - - - diff --git a/web/manifest.json b/web/manifest.json deleted file mode 100644 index e0f84441e..000000000 --- a/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "ScramPad", - "short_name": "ScramPad", - "start_url": ".", - "display": "standalone", - "background_color": "#FFFFFF", - "theme_color": "#E91E63", - "description": "A modern Windows 11 Notepad clone with rich text formatting.", - "orientation": "any", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} From 1f124b7bca34aa5f9ada9eb1a112bca71c088907 Mon Sep 17 00:00:00 2001 From: Jeffin Basil Date: Sat, 9 Aug 2025 04:41:38 +0530 Subject: [PATCH 23/27] checkpoint before os ui override --- assets/icons/app_icon.ico | Bin 0 -> 12008 bytes lib/main.dart | 2 +- pubspec.yaml | 30 ++---------------------------- test/widget_test.dart | 2 +- windows/CMakeLists.txt | 4 ++-- windows/runner/Runner.rc | 8 ++++---- windows/runner/main.cpp | 2 +- 7 files changed, 11 insertions(+), 37 deletions(-) create mode 100644 assets/icons/app_icon.ico diff --git a/assets/icons/app_icon.ico b/assets/icons/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..74e20810dc3b8ad6fbd03178d452181830c8493b GIT binary patch literal 12008 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