From a9b2ce245c2fee2c5ecdf71e270314dd16acacd0 Mon Sep 17 00:00:00 2001 From: mi6e4ka Date: Tue, 6 Aug 2024 19:06:38 +0300 Subject: [PATCH] init commit --- .gitignore | 43 ++ .metadata | 45 ++ analysis_options.yaml | 28 + android/.gitignore | 13 + android/app/build.gradle | 58 ++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 46 ++ .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 79095 bytes .../openstore/openstore/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../res/drawable/ic_launcher_foreground.xml | 18 + .../main/res/drawable/launch_background.xml | 12 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 2566 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 4526 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 4606 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1740 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 2566 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2876 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 3490 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 6570 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 6232 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 5628 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 12246 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 9866 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 8026 bytes .../ic_launcher_foreground.webp | Bin 0 -> 19370 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 14350 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../res/values/ic_launcher_background.xml | 4 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 31 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle | 25 + ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 616 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 ++ ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib.zip | Bin 0 -> 4806 bytes lib/app_page.dart | 187 +++++ lib/get_app_link.dart | 39 + lib/main.dart | 74 ++ lib/search_page.dart | 127 ++++ linux/.gitignore | 1 + linux/CMakeLists.txt | 145 ++++ linux/flutter/CMakeLists.txt | 88 +++ linux/flutter/generated_plugin_registrant.cc | 15 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 24 + linux/main.cc | 6 + linux/my_application.cc | 124 +++ linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 1 + macos/Flutter/Flutter-Release.xcconfig | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 12 + macos/Runner.xcodeproj/project.pbxproj | 705 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 322 ++++++++ pubspec.yaml | 91 +++ test/widget_test.dart | 30 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 38 + web/manifest.json | 35 + windows/.gitignore | 17 + windows/CMakeLists.txt | 108 +++ windows/flutter/CMakeLists.txt | 109 +++ .../flutter/generated_plugin_registrant.cc | 14 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 24 + 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 | 20 + windows/runner/utils.cpp | 65 ++ windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 +++++++ windows/runner/win32_window.h | 102 +++ 146 files changed, 5379 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle 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/ic_launcher-playstore.png create mode 100644 android/app/src/main/kotlin/dev/mi6e4ka/openstore/openstore/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/ic_launcher_background.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 create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib.zip create mode 100644 lib/app_page.dart create mode 100644 lib/get_app_link.dart create mode 100644 lib/main.dart create mode 100644 lib/search_page.dart create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.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/index.html create mode 100644 web/manifest.json 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 0000000..29a3a50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +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 0000000..6eb54a1 --- /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: "761747bfc538b5af34aa0d3fac380f1bc331ec49" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: android + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: ios + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: linux + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: macos + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: web + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + - platform: windows + create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + + # 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 0000000..0d29021 --- /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/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..76b3188 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,58 @@ +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" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file("local.properties") +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader("UTF-8") { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty("flutter.versionCode") +if (flutterVersionCode == null) { + flutterVersionCode = "1" +} + +def flutterVersionName = localProperties.getProperty("flutter.versionName") +if (flutterVersionName == null) { + flutterVersionName = "1.0" +} + +android { + namespace = "dev.mi6e4ka.openstore" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "dev.mi6e4ka.openstore" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutterVersionCode.toInteger() + versionName = flutterVersionName + } + + 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.debug + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /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 0000000..52b33de --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5878ad1e7677000556b614bcce2ad6c7a58a83 GIT binary patch literal 79095 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

U{ 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

9l{HG6g?T{bC5n-K_Gd~g+)&fw0_&0 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 + + + + + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..95c4e7a --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,18 @@ + + + + + + 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 0000000..304732f --- /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-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..09609fc90548805d4b5ae4656e8b6052f51a1d6f GIT binary patch literal 2566 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..4a9d2691be1a91243df34d11c55c8916a03af793 GIT binary patch literal 4526 zcmV;f5mD|^Nk&Gd5dZ*JMM6+kP&iDQ5dZ)$p+G1Q2}f?*ND|~qvrsO>TiTHle{xmV#bF)}uCw}FO6=EksK@g(-`f&;33IIR?YuV#ChA{^I z&|(n)uxCv|LIRxUXaEhiIF6HGR7gS;m;(Te4}I3Gxe-EW0Sk$P5R7Sr0xZAh++5oC zIrcfmIhOV%T)D^F{(pvS+qU-4LT~OirsuM4+qP}5H(6|nLlMok`&vHXU&|)Ok(DhcKUp6nWZH&)8%{5 zbQc9kl1REsPZ?`4KsATmpe8J(61YdV`OsQj$M>+bVL zYgx?0J2*(({(>EUi3;y17%wt#O!`S{_7p7tEWqpR_S#liac0MyEN(AB&J+b@kzr%% zcN6_6n6|CGq3@cFmwmp;F3pO)3{nOF27)aTCSr)e0vL%lvwYg2z80+6u3l@lY}0eM zh`UJ8n4;o{pnAc2kuQdAuL-7XM{nr8(`dGPNJ^jnZEWE`70b^f+dm-~x81zX^wUkU zvOFcF&iyt@3JoDjIA09@RBV20Y&;;Cvz@%5f81a&+1-uxbME z4nSnuD7sqEdwX~_f2aPQ$<1e_ag!jUwt_;EH-_z_`rE;4&A!~G+xX5b?Lw`y;?Umg z#wN}8I_La;x|!!waZMnD7=TEC2!xmuhyfyjNFV|sPJ|dBh8Tz#H0sa;1(TZ1c&ChP zH=cQ1Tt-q7fF>oOSd%7Anv|p@teViINg;ufP)LfPPRBC-DbIhbf0MoYO>&cMb|XzF zNMdGP^T+kS+s3*InH0^9(>4NRGV8)l*MI)ghFbjNt7N3Usx|}?&DuBn_4{U;8@^nY ztV&U|P}1qdP%LRqQh*HOf2xTd;Ra<1*2Xrrk;c5o&o_@COz1gkE#&-!^Ued#7jSr- z&vPEj3Y( z!#fWS@4#oYXhS5jI`0Z5G)$)&HPuE_ z4q42MBfEG(P}3lS4O#5IEsfl%{4DsTK{~ZxzDJu$Bzk=h3T8A$f0O}PG*=765Cg;z zLkti@u^5WQKn&a=Snd!C#1KP-K%|q*o!QKNg6f9&#!lt?7$cww(4>$kuL(`$YXT)P zscE99CeWk_P0;Q5K=4;X^jGS`JE|&G8rlUN#;AV~(mv0|VP6b=%baD3VPnDAS*X{d zTh>fwmm~Y{y7_!VMp9l$k?NW4byY)bjOVikb*Xf-R-D@>K56GlXVaEl`FEw|>0-3# zYz*Ro5jkOxg9ybtzz@WC=8!p}_9J~*Qab_1r}tcRbh&nrFcfPUy0za0QyW44U-lbi zr)m}Pnmxrw98mekd~~7r(*de=0FKgKc)RMt`|sK5?Cxb`p{iQy-{uDE3yrWb+a8r7 zVNE)bKp|ed{H%oUg6ubvKc*mqj^t!pX0X7zWyP*?^Hwrt?g?R46%TKzm$9yhtmL-0l;ukeH zY9BS1Ppl71Snn_~vXPE2Zg^|j1GSD7qif|MW0z(jBTj2|@H0tOptN=>UkOIl?k&q7 z?MAuJG6LWSFc64=2pNrdcH@Wm_y-@$c-h5T7UYzDndP1I$@O9B9yY!ada%e1S69bg zsJU8x_wHYL3HXd<6&J@guhoP8w8p{@@f#2#1Y!VUh$^P)z;<`mZh7KjQ`BQ}hk{0- z!i-NWe`ei3;>^~|9%r!SlwQ@yDVzne`CT1boLA?Re;JRRhl|(U@-f7rw8mbYhXhON zHX@f%Uej9Z)bh`bCpka0|6T5xeTzqL9i+{$7bfm7G0d#CeSQUuW4E(g z#p@pJ@rv28R1P|IO%l9Nvp3YAdyK|&y9z*dICe=19x^0R;m7e+?Yq=(=VKdb!k$s? zbD!6O3LhfKIOo%~D`6;Auy<$22^Q6BeLl|6N`{>?E5I3|iY<6Xif%5OKCO3`&`SCP z&j`M(*SI*jnqh0Ckxv|mo!4S9b>3T+AKpwdaSRY3hDZQnAO^Y}69i|}>h%V{ZaT`g zkClv#F+s;mE$C+ASjDJN<-aZLH}(;%uG6)DILshX>3OY%Bhza=T+=&W} zL%oeRDm5;h|HsaPKJ{7uYi_Gm09vD{)v!*s6}(p;$#ZLs8N?97L=40b12IHmeN-Wa z7=Rcc5-gH?YwA00Y!Xo*DI`q_khGB)1i#lwxa*5(P+_4v>Lb3{x?y4C_XOn32?D< zH4F<>D`H{9vAwxj;(ih*p$KS2BQ&W|x6*p}AH|Z|uDhu7VOB^#xWzlbN`~pCTh=^& zo1>8D3``^~*EOwcG?=y+3+2Z-T~j1}<}0jx4^!8RK4STI^1uMqUSA_=gsSu9oMuFk zckRHI4Ewi|r|Nu;^UhB=57H!RBvCTnTE~xYU5Mch4)6RAMt;BuHvCM1YZC7YTZ1$E zaCDU%?*1d*MS?f9ABlwcBi8}p4rHm-s9S~ZQa&OjPQCwDQQ-YrjGQf!9{W1-lnUEj zezZoTspU$wz5lOAfsZlRs*iFFCpO8c`fF>HCF^2ajpi*U&J`*;btn&V4J$wMsn2ln zs|=?UyVYSl$|cyet>~X>B*hZdY6@OqXf;c#yvV1_bb-N?&wQ2t|J0|s_!R~d@|L#p zEVp4ZpcP56q(*`TRjsc6l;@oTs=fEqdB%sqKA7^mpZqxQe+Ra|e$hLzkz*jlQ0S{` zB*~l@HGwA3q{*U*W&2g$N})_w+`q90J{_*eMDC--GX!$_a7%dfz_ZtMBNkIwo0AhY zp-B^flF+0{)6di>v!1F-g-SnNl6P&U%#%bOFazu2)8JDJoycQD4saZ9F~Y+2HdRV1 zir!eGnPDckZ54$FP$Dz#%c0=yc5KX6*f!_bXvAv7W+rq>Kby19IB8t& zoGU=;K#?`^#;|VKa))3OnpTqqadiLPSi!3L#BR%UC7~pgq$IUzo>^i$9eDDLz?Yqk ze46vA;?oQYpMtk6lo)}{fF)_toTMcFPq2y_OETy>kHdq*J3P*V1I@{OV1RV6@W2iw z_rk|6F;Hym*fv`SMhqV3!2uoz9_RU1>YSzYR?2&&d=DrX-%Z?)I0_bq&M;7HoUyI< ze>UVoheG*Xvedn6bzpD3MB-Z}A|WpZ;wbNxDx8UBc%>yTSkZGVWAQJ=BxB1|=(4iK z05QY>ASMp%-MwlhnBA>2v7J{cO)3hwZGj)E z=3jE&^8sG$d~Uiox7eS(Lq7Ns&Sq>~$We!i(1a#5p@=1xcJg>52nOt_{T6p(B=_H;@<;T zeg`G{hDE!CD#f#qn#G;QwGAPdvZr5flsfp)n`M_Xo3MSdQR34JFBQ3ka|<{TxJbO` zgOr&C3yWX98vVr;g|`cwHwv+m z`3Q&dBEHv_kreYtO6t|--}HdKm!=e~n;q8G-$TAqcwfS%?@@SZ=M{}xh(Eo#*jt!b z5iOO@24*vsq!bs4xwTwMa|-^M*^-ad0E8GK5OxY2X=8(Ul>?bL6#4qEznS>DHy1nA z95(*mqC~<@f!SeyEEwM)oH}l8G8j9sRn=Bog%-^_>dZuPrhn#q$W@AVdzo_c)7(X) zUh(Sr7G~aE)eaEzy3VZwTjt)cCr2sTX{p$|(>#lY9ZhSeaic-BPG}wv7TGEX4&m^@ z?btvgRQ7zidL=h*0w;aMHV3)I+W@4 z2R!O)gaR6|&#vlr%WEGzOe3#;^;0&QcLGg7ECP$0JnY@v-_6XeGmUikSnlTr9{6^s zvcIDH$qUYJqp7iZ~lc$5n`;fIM7a9f)Ll`?_XrmNb$RcFM?SJQM zdN7li4J;)NR2=IdP`0(qt?G92qVwBm?8VKei!4~7)-qdLCuUcCd()Hdeno?SpsSH& zwg^?F#ygn zzuPxAuw4p%y-ogad%^o1Qm(}qwf%DGqjmm&jqOvgLU7G~-QV*{4I%+h^MuedW}?XS2Vbh9L&lvj+I} zystmqH1tBY{S#j4GS9Y4HLQNZ%FjZa1N-_^jfQM!I;R z&5S9Uydq zC}vVQLEE-@Z%|FtKkGP>Bu6<+#|D0<#ZFhx?xDdySdk>lR-T!s;;~Lw^;!7F0yeM? z#kRF&%kO`4Oa50Qxw~W=038yH#v!ptu9;zI^ycq<-owCc+eT*hx_gK1>Hp8kj=r&N z+qP}nww+AoVA$Q$wyoHa=Gw1wvTfv}g8fIj7cXxNWyX@922o$z$TN3HQZ{Wqk zqs6Wjo$hW1X$(NX-rcXeyT9q7Y}>YJ?P<2Z-?puiZKGt{R_r{6ZQFQ-UnTqh<7Dr3 zIs~_EBuUhs-7{G4)iZBETqBo9Fm3AoLzAQ_3Md_Jzv0u@uSf~gC@q!Jf@EW90~1c& zo^j7tZeaN+4Q}6!OMf39PyLzDDJ=o8uVkHOOu`M32O{r8-b?t-_{I2l^o+yzd!Jr0 zT|aXSV5t-`ODW);qEl9wbt3YG5oG}bq96nTCNy?4)olrnZ~Ow%rC=vE0I&49$hOE& z)r3;xL{cN~k(`*Xv4I>v&bOF5V*?(!8o3-f$2S?w|-hi@AkxyEps)--~wkE=5j89Rc6{9SH#7tdF$`UCsjzjR{ zAA}Jz&#} zmer)wdkLkQqf)}Ls+eL^I^Q!ttFih_;uHzzC!egc7}6&IC<$Z<#;$6~MlstWJa1M@ZcU{fxjDi@^h*Mw{Hluh zPAs)(+Z2FHFvH6m?0@CI1#_qU+3)BqJyb#$?VD)b1n0_{?)sfW=q0zLGYs9nU5aK2 zMl-y};G?oB7K{DsVSEOI3!J>crpl~_$UH0xD&w%oG%T{_BsN)f7uMJDh3<@1I8}vY z;$jZ%&<2RysI|(kmuXpLMe_QgK0hnkYh|?1Noux})J!J{tGRAc3!Mb4X1giah^9M9 z&2&;)Zl`q8$QtzV4cY7&yJ(;-bY{%_4x@4NHRUcPn3_UqoFN(RH6S$WO?Sy|5vB5kWOXFKmE5t3!)btxYs$M-6|y%8@Z)3sKIL zRk%_;4oxPUJfBRSUV?Ep88KA3<%isI(JWKVV79EKx9_sr9inibwa$Q6+<{bwlI8%a zm`$15BxL;%X`hvq#AIcq?T0L6F|Zw}prkrb6qF?_q8E!*3y8u8+w55rnuz5{o7tH$ zX@;*~U?Jj|ZtAMNPf>6C6@@Efggw=B&_Rx*1qJV?m^)MZFV^sVR#AtN2_U+@af?wA z09GLY04e~bDkrJ~GmIl!$!4@aV6@#%(&Z!vkvkm;E1bz5izeL}_-v;e%fsJ0bZL`c zQF&A?94U)E*+a>eHVyI6Qulzd$biO?7O`jz4`>wuDhBKWRq%^aIXLZ`5ft25Kdf4Q z6Y;A@Xfthze%M5VXzF4&3t?vfP~z6)ck^A6k!{I7T4qVtO`)uV0b?DTMv(@}d?v$f z5pIhCa}9_G#;}MLYzED0CQ#;_M_XftieUbdzB)FW3P1EBPGj4_@i&YZRS6y=&< zRyb2;*y4S(OtPxODzAHsv58INvRRr!NaDy;0HflOi z*KRd0C-k3hq3$%%c9?00M$&Hfcv|U(9@k@+cYFC1<$*`knOHlFjDwn1(zR31A*4IB zwQ9U2UslX}bzsJW8`Esdrdm@GO|`C?e&^O~C+8Nr+qS|-!^Yh>5_PAMcEUuv)ROi4 zfctL-A|tM!4Dc)R-yT6@V(h|5Iq;0M<1CoW=xP}p+&cBFiIxUrsh`CWcVc|6V!W^D z#rmHmQ-3okUz+>kNO3C!(_dbIHWC?QPGO3t`Ba(j6$(DUD6>C6`h94l?$pLcp^thbl6I-u23jE=0Cf&s`tczH<78cAgqmE| zwcblY=DXTQit)WlivHtw;l#+lmVIsExYPl$VLM^f@3PrX&L~qqfD$7ANwo>&doXR( z^K@*djvQrO#3R(D-vH3a^I89o0H`q;;!9phV`S~Djd-X@bXCg^2bt;c8p$AkX_;5S zq7NIU-cWc)mR2rQaafDoZ;B)Cgu{i2d)pw?om$e%ny4pkRIUe0D$sQm-ZIq+mbyR(x(agZoPF&?Cq_$iZx9uHV63}B%uGY zSbp8=g`)Yc_KiR1nE!SUhdFf0bq%3V=)qc59@KYUa4X!o<*g`n*rz1}a(1Y{?e*1v zhu5o;zfcls^Rd{|qjs-4d6Sy(LrwZ9smXv?)nKMtRY5lGV?}yV*lklSV)ar{hC|`F zO?xqpe;+!TutvE6>ZMeojQS`$Rb&tvA|T8f*PDCK4T$iJu`L16WXj!q;FDDv!pmyH z_evER2)z;&dZk#_wc3v(+4YYU`H8~+FQ?mGbOL`sekBjv$q{#uMC{Q!W@XEMT; z0BGpvcw?1YRTx>9JTNKbfeE>PLLQjPeM0WB#|k79X6khX-JKk_X*b5IenQOt#y>hY z{mw0;@`b&^;p095_1MUh5@We=V{WcIFfJ6nsbtF4{h_e-eS;nxRxq;mpPJPG=pvms zf6pyyq``TT`KO2kqN!z@gB%Rm^pE|6FzK>|<2Gz3=*6#u@s9f&)I%dr5*oudN&|}| z2~G`Xh##N&Lq^dHg0lCuo#!W7bJFi-&L;CuL*|>p6SKCq%6Z7_Cug9mmU`_-w`sW8 zz%ym$2NTTOT*iBQ5#oqDMfy=tpLZ*;g;M{F)ISTkccu_G{JpvF;e1_qmgIogw@ebx97@EvFhzc%o)e}N;8Hr{;SHqEn-xdF#NK6+cos(C ztxMH)Vq@Rl5)La^pt?CI)dHYnJNe=QgK_)2KIRd77g_9CfQe`q=F&ONP8A{^1WBF! z&RSI-CKL*ZJ&P=HFU4}hKU#Y#FZo|L2c=pTxYq94jR5G@>q%>qG1m=U)FXD!v)Dby zrFa&El&h^`9`-nuW;3Q()5Q^YXebwDS@LJgybCy_kK0vQ`*sz(-zrFtqRW%cb^vt0 zr&JJ1HUHFX20*XAPFD8n4Jou?pUC?zi98D_?garof`J$CUraD>GpV2ZfrR^&i1~w% z{*!?E%T>v-zh!mRjz^@hzmp|?rpbQGnft&D2cq>`DH)((`nXy3sL1m+iCs$tDL1-1 z+&uVTGcWa)QY@GNP}Jz!&C82vs5F0`8iuJ?RYovX8mG6p` zzG_zdtXtu;;m8%<8;<7akUx(_ri#2^HQr1 zrDeB18ezc}Y3jAw3V@zfnq++3?D6L+zDLZu+A8v?CzBM}l>rnPKzer1cO8TO>wZ~< z#ZLHHQ?J$52n)VaE#=cq0O$&UVS{e3Jt>*EzTeSjNzW!x#AZ?kP-N?)Odyp6lmJxK z3*GPVz4#0OhX3i@QY<@_suQK!nmb%)01RmEGchM-dH=)YGr?MoxM(JjGk^%z-MdCJ z0BhQ`G3tqr>Te|G?sVv%Z-@y1<&D25+5pf407JXHZfulpY=1Y)buHHGMrGQxl0fWw zcfh;fe0K(r&x@u4Rv$1iSuOru?;n}XWscnc@0cX!Vy$hil0lG z*H@~=r8$&nbTc6D`h&aEfw&v?gu8#R>t)esI$#sP(k64=T};2;O(DDXpZh)?9t{Ej zWer!djfd`Arml8;TK^~OXC((4pG|gKyS!vEW$jKx37f)2i8ceI0g3|F9uNyOxyxf0 zGM|q8QaD>*J2I`zzK8B|7R#~DYOI`VXrRD#d@2A20$_L@Ei$Q_`|6hAPdm@cPldNe zzpei=)l2c*JjK-2#hcunW!td_%eJ`(OLSs)7H>tb&Q*_}o4k-|sv<_{t)=ZiFTfy&0pxrPrn^v!js3b9TA==}a8fA+H@-~YnX o-}>RFZxLaeTcslHFQdGr15`AOPF4MARzH6Cj~y2&#j+Ow0G)sqX8-^I literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..456a8064bad11be59669e3c987942b4057f95190 GIT binary patch literal 1740 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..133c04f100e6940eaac25cb560dfbfce0e25959a GIT binary patch literal 2876 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 as_(pp0Gc6y7BBXE?VU%0g0HkRzY_q1yrAj; literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..d6a3d387b92bc14da4df8bbda9e02d0ebec0c348 GIT binary patch literal 3490 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..ec16293ced6a8bf054dbb95c24838d7e2e71745e GIT binary patch literal 6232 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 C-?uyf literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..94e9bcd2f9b1d07a8354a774960c4d940913ebdb GIT binary patch literal 5628 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 WOa)+p1s0h6XP9Az>Yg?H7Nr0Q)vJ;K literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..dfa08e1f699e07ffb038b2fb3bfb46d9d32cb752 GIT binary patch literal 12246 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..9af37a10b18e91101a083a884428295b6e564203 GIT binary patch literal 9866 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 cLhVN|Vl?8V!O4UPeK}&pKLUifrF1C)wE{Qv*} literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..e6bea05c852e189ba702747cf30caebd85cc397d GIT binary patch literal 19370 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 z za-SV4Sn?Xb-e+vQ&Xw6o9fYx;5no-!kDqFV$-nZU{P0<#f>^;@Cq2_ni%#*sGDQC6 zQh)c4JIMK;YO7;>)~I0aYyDv#+!e?tjXnP6wBz z8+^+r*|_)Hy!|uWXOjvBJN@iYsx}WR$orB%_X^DUw%@;w`s`A{whEr#?>qJ@_)o!I zG&O&_g7eZk7K*QMDRDkr%%13aP{CrFoC-d<19NZl0lV|qfOg(T42b-Y^s{e!_4mG@ z`KchM;O?RNjdgaw#{)9+2?L%{u8%v%F5gLWR6+YU9JF>Fg0BmdZXZxUx+maA*LsTP z>9coHow1D^x(69N4)HAa*@loI1$g*4QvuD?AO0CvP!8J3b<`eY*f>P9*!LbnMmRhk zJ((0}wkjwq_+tfS-!n}P>WA-(Dw0`Aibym<`LSfYd^}Z=X6$|igA|;!t-9E28~W=} z?ffh>s`7ovFRGfKr+KSjl!DW2pDnj)y*|vAPatNM8x@V^+l%Sr!YN-h?oU_Ly^0^pM2ge z^~n(=P@qZtJ{62U%;%o%rmmkL{|&QFhnUeEiZM#3k{aD(y??x9I8EhG^5{d@oW2ve zV~>t8gPLL)Wrq4v!_9gLdfn^L*q_n%*u+_rQ*$oI~3r zhosq#Ii&Ve)Zdsg0jo-C!kF>TQqS5YHR5F6&Cs-WNiZSHO-?84Eeq$Z$I9gv`C#ssaoM|URp(VEO9GdY zNFi$D5Ec>_kZ7EB*{(W^L57VxOWQ)tJx;@V-fwBQay*KlOHv9px>T%3cfParDxUl8 zK-C-}wo_(G4q;T6s>S+;W3hIDyD&krMdDdYisQ>NszL`>c0?6=Ae*u+&15JtC^=Li ztCiiRTGD}eT}Y?$qqNob;Jv}-|PRq{@?5Wz5d_p I|GilU0OyAY$^ZZW literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..af923ccc9d21103a3d0740f26d0117cdfceaae37 GIT binary patch literal 14350 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 IRD9J90K?7G7XSbN 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 0000000..06952be --- /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/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..3414188 --- /dev/null +++ b/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #4AA4E9 + \ No newline at end of file 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 0000000..cb1ef88 --- /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 0000000..399f698 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..adf9ade --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.9.24' + repositories { + google() + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:7.0.2" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + // Add any other classpath dependencies here + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = "../build" +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..3b5b324 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -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 0000000..e1ca574 --- /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-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..536165d --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,25 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return 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 "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..7c56964 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..699ae67 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..8e3ca5d --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..9074fee --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..9864a75 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Openstore + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + openstore + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib.zip b/lib.zip new file mode 100644 index 0000000000000000000000000000000000000000..3b34324aaf4bfd1746bd4689326e462ac84a147c GIT binary patch literal 4806 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 WkmUD%3IHJfeXoAk`af$bz`p>rNVE0; literal 0 HcmV?d00001 diff --git a/lib/app_page.dart b/lib/app_page.dart new file mode 100644 index 0000000..1697f70 --- /dev/null +++ b/lib/app_page.dart @@ -0,0 +1,187 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; +import 'package:flutter/material.dart'; +import 'package:openstore/get_app_link.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class AppPage extends StatefulWidget { + const AppPage({super.key, required this.packageName}); + final String packageName; + @override + State createState() => _AppPageState(); +} + +class _AppPageState extends State { + Map? _appInfo; + @override + void initState() { + super.initState(); + _loadAppInfo(); + } + void _loadAppInfo() async { + var rq = await http.get( + Uri.https( + "backapi.rustore.ru", + "/applicationData/overallInfo/${widget.packageName}", + ) + ); + if (rq.statusCode != 200) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text("Что то пошло не так"), + content: Text("RuStore вернул код ${rq.statusCode}"), + actions: [ + FilledButton( + onPressed: () { + Navigator.of(context) + ..pop() + ..pop(); + }, + child: const Text("ок"), + ) + ], + ) + ); + } + setState(() { + _appInfo = json.decode(utf8.decode(rq.bodyBytes))["body"]; + }); + } + @override + Widget build(BuildContext context) { + return _appInfo != null ? ListView( + padding: const EdgeInsets.fromLTRB(15, 0, 15, 15), + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(25), + child: Image.network( + _appInfo?["iconUrl"], + width: 120, + ), + ), + const SizedBox(width: 15,), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + _appInfo?["appName"], + //overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 21, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 10,), + Text( + _appInfo?["companyName"], + overflow: TextOverflow.ellipsis, + softWrap: false, + ), + ], + ) + ), + ], + ), + const SizedBox(height: 20,), + FilledButton.icon( + style: FilledButton.styleFrom( + minimumSize: const Size.fromHeight(40), + ), + onPressed: () async { + launchUrl(await getAppLink(_appInfo?["appId"], context)); + }, + label: const Text("Скачать APK"), + ), + const SizedBox(height: 15), + SizedBox( + height: 84, + child: ListView( + scrollDirection: Axis.horizontal, + children: [ + _InfoCard( + topText: "${(_appInfo?["fileSize"]/1024/1024).toStringAsFixed(1)} MB", + bottomText: "Размер", + ), + _InfoCard( + topText: _appInfo?["versionName"], + bottomText: "Версия", + ), + _InfoCard( + topText: _appInfo?["minSdkVersion"].toString() ?? "", + bottomText: "minSdkVersion", + ), + _InfoCard( + topText: _appInfo?["ageLegal"], + bottomText: "Возраст", + ), + _InfoCard( + topText: _appInfo?["category"], + bottomText: "Категория", + ) + ], + ), + ), + const SizedBox(height: 15), + SizedBox( + height: 250, + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: _appInfo?["fileUrls"].length, + itemBuilder: (context, i) { + var file = _appInfo?["fileUrls"][i]; + if (file["type"] != "SCREENSHOT" && file["orientation"] != "PORTRAIT") { + return const SizedBox(); + } + //return Text("data${i}"); + return Padding( + padding: const EdgeInsets.all(5), + child: ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Image.network( + file["fileUrl"], + ), + ), + ); + } + ), + ), + const SizedBox(height: 15), + const Text("Что нового?", style: TextStyle(fontSize: 21, fontWeight: FontWeight.bold),), + Text(_appInfo?["whatsNew"]), + const SizedBox(height: 15), + const Text("Описание", style: TextStyle(fontSize: 21, fontWeight: FontWeight.bold),), + Text(_appInfo?["fullDescription"]), + ], + ) : const LinearProgressIndicator(); + } +} + +class _InfoCard extends StatelessWidget { + const _InfoCard({super.key, required this.topText, required this.bottomText}); + final String topText; + final String bottomText; + + @override + Widget build(BuildContext context) { + return Card( + child: Padding( + padding: const EdgeInsets.all(15), + child: Column( + children: [ + Text( + topText, + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + ), + Text(bottomText), + ], + ), + ), + ); + } + +} \ No newline at end of file diff --git a/lib/get_app_link.dart b/lib/get_app_link.dart new file mode 100644 index 0000000..532b78e --- /dev/null +++ b/lib/get_app_link.dart @@ -0,0 +1,39 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:http/http.dart' as http; + +Future getAppLink(int appId, BuildContext context) async { + var rq = await http.post( + Uri.https( + "backapi.rustore.ru", + "/applicationData/v2/download-link", + ), + body: json.encode({ + "appId": appId, + "signatureFingerprint": null + }), + headers: { + "Content-Type": "application/json" + } + ); + if (rq.statusCode != 200) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text("Что то пошло не так"), + content: Text("RuStore вернул код ${rq.statusCode}"), + actions: [ + FilledButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: const Text("ок"), + ) + ], + ) + ); + } + var body = json.decode(utf8.decode(rq.bodyBytes))["body"]; + return Uri.parse(body["downloadUrls"][0]["url"]); +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..2019365 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:openstore/search_page.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: 'OpenStore', + theme: ThemeData( + colorScheme: ColorScheme.fromSeed( + seedColor: Colors.blue, + brightness: Brightness.dark, + ), + useMaterial3: true, + ), + home: const HomePage(), + ); + } +} + +class HomePage extends StatelessWidget { + const HomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("OpenStore"), + ), + body: Center( + child: Row( + children: [ + const SizedBox(width: 15,), + Flexible( + child: TextField( + onSubmitted: (value) { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return Scaffold( + appBar: AppBar( + title: Text("Поиск: "+value), + + ), + body: SearchPage(search: value,), + ); + } + ) + ); + }, + textInputAction: TextInputAction.search, + decoration: InputDecoration( + prefixIcon: Icon(Icons.search), + border: OutlineInputBorder() + ), + ), + ), + //const SizedBox(width: 5,), + //FilledButton(onPressed: (){}, child: Text("GO")), + const SizedBox(width: 15,), + ], + ), + ), + ); + } + +} \ No newline at end of file diff --git a/lib/search_page.dart b/lib/search_page.dart new file mode 100644 index 0000000..87971ed --- /dev/null +++ b/lib/search_page.dart @@ -0,0 +1,127 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:http/http.dart' as http; +import 'package:openstore/app_page.dart'; +import 'package:openstore/get_app_link.dart'; + +class SearchPage extends StatefulWidget { + const SearchPage({super.key, required this.search}); + final String search; + + @override + State createState() => _SearchPageState(); +} + +class _SearchPageState extends State { + List? _searchResults; + @override + void initState() { + super.initState(); + _loadResults(); + } + void _loadResults() async { + var rq = await http.get( + Uri.https( + "backapi.rustore.ru", + "/applicationData/apps", + { + "pageSize": "20", + "query": widget.search, + } + ) + ); + if (rq.statusCode != 200) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text("Что то пошло не так"), + content: Text("RuStore вернул код ${rq.statusCode}"), + actions: [ + FilledButton( + onPressed: () { + Navigator.of(context) + ..pop() + ..pop(); + }, + child: const Text("ок"), + ) + ], + ) + ); + } + setState(() { + _searchResults = json.decode(utf8.decode(rq.bodyBytes))["body"]["content"]; + }); + } + @override + Widget build(BuildContext context) { + if (_searchResults == null) { + return const LinearProgressIndicator(); + } + return ListView.builder( + itemCount: _searchResults?.length, + padding: const EdgeInsets.fromLTRB(15, 0, 15, 0), + itemBuilder: (context, i) { + var appInfo = _searchResults?[i]; + return Card( + clipBehavior: Clip.hardEdge, + child: InkWell( + onTap: () async { + Navigator.of(context).push( + MaterialPageRoute(builder: (ctx) => + Scaffold( + appBar: AppBar(), + body: AppPage(packageName: appInfo["packageName"]), + ) + ) + ); + }, + child: Padding( + padding: const EdgeInsets.all(15), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Image.network( + width: 60, + appInfo["icon"] + ), + ), + const SizedBox(width: 15,), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + appInfo["appName"], + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + overflow: TextOverflow.ellipsis, + ), + Text( + appInfo["packageName"], + overflow: TextOverflow.ellipsis, + ) + ], + ), + ), + IconButton.filledTonal( + onPressed: ()async{ + Clipboard.setData( + ClipboardData(text: (await getAppLink(appInfo?["appId"], context)).toString()) + ); + }, + icon: const Icon(Icons.link), + ), + ], + ), + ), + ) + ); + } + ); + } +} \ No newline at end of file diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 0000000..1b7b4cb --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,145 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner 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 "openstore") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "dev.mi6e4ka.openstore") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +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() + +# 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_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# 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} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +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) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +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. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +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. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# 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/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter 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. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..f6f23bf --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/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 fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..f16b4c3 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux 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}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/main.cc b/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/my_application.cc b/linux/my_application.cc new file mode 100644 index 0000000..b579c25 --- /dev/null +++ b/linux/my_application.cc @@ -0,0 +1,124 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "openstore"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "openstore"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/my_application.h b/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..8236f57 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,12 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1beac22 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,705 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* openstore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "openstore.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* openstore.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* openstore.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/openstore.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/openstore"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/openstore.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/openstore"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/openstore.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/openstore"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..bef359e --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..99afd58 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = openstore + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = dev.mi6e4ka.openstore + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 dev.mi6e4ka.openstore. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..f3edb23 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,322 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + 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: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + 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" + http: + dependency: "direct main" + description: + name: http + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + 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: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.dev" + source: hosted + version: "0.8.0" + meta: + dependency: transitive + description: + name: meta + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + 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 + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + url: "https://pub.dev" + source: hosted + version: "0.7.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + url: "https://pub.dev" + source: hosted + version: "6.3.0" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf + url: "https://pub.dev" + source: hosted + version: "6.3.3" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" + url: "https://pub.dev" + source: hosted + version: "6.3.0" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + url: "https://pub.dev" + source: hosted + version: "3.1.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" + url: "https://pub.dev" + source: hosted + version: "2.3.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + url: "https://pub.dev" + source: hosted + version: "3.1.1" + 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: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + url: "https://pub.dev" + source: hosted + version: "14.2.1" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" +sdks: + dart: ">=3.4.3 <4.0.0" + flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..78b509b --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,91 @@ +name: openstore +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.4.3 <4.0.0' + +# 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 + url_launcher: ^6.3.0 + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.6 + http: ^1.2.1 + +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: ^3.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/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # 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/custom-fonts/#from-packages diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..c50f118 --- /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:openstore/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/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..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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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..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 zcmdT|`#%%j|KDb2V@0DPm$^(Lx5}lO%Yv(=e*7hl@QqKS50#~#^IQPxBmuh|i9sXnt4ch@VT0F7% zMtrs@KWIOo+QV@lSs66A>2pz6-`9Jk=0vv&u?)^F@HZ)-6HT=B7LF;rdj zskUyBfbojcX#CS>WrIWo9D=DIwcXM8=I5D{SGf$~=gh-$LwY?*)cD%38%sCc?5OsX z-XfkyL-1`VavZ?>(pI-xp-kYq=1hsnyP^TLb%0vKRSo^~r{x?ISLY1i7KjSp z*0h&jG(Rkkq2+G_6eS>n&6>&Xk+ngOMcYrk<8KrukQHzfx675^^s$~<@d$9X{VBbg z2Fd4Z%g`!-P}d#`?B4#S-9x*eNlOVRnDrn#jY@~$jfQ-~3Od;A;x-BI1BEDdvr`pI z#D)d)!2_`GiZOUu1crb!hqH=ezs0qk<_xDm_Kkw?r*?0C3|Io6>$!kyDl;eH=aqg$B zsH_|ZD?jP2dc=)|L>DZmGyYKa06~5?C2Lc0#D%62p(YS;%_DRCB1k(+eLGXVMe+=4 zkKiJ%!N6^mxqM=wq`0+yoE#VHF%R<{mMamR9o_1JH8jfnJ?NPLs$9U!9!dq8 z0B{dI2!M|sYGH&9TAY34OlpIsQ4i5bnbG>?cWwat1I13|r|_inLE?FS@Hxdxn_YZN z3jfUO*X9Q@?HZ>Q{W0z60!bbGh557XIKu1?)u|cf%go`pwo}CD=0tau-}t@R2OrSH zQzZr%JfYa`>2!g??76=GJ$%ECbQh7Q2wLRp9QoyiRHP7VE^>JHm>9EqR3<$Y=Z1K^SHuwxCy-5@z3 zVM{XNNm}yM*pRdLKp??+_2&!bp#`=(Lh1vR{~j%n;cJv~9lXeMv)@}Odta)RnK|6* zC+IVSWumLo%{6bLDpn)Gz>6r&;Qs0^+Sz_yx_KNz9Dlt^ax`4>;EWrIT#(lJ_40<= z750fHZ7hI{}%%5`;lwkI4<_FJw@!U^vW;igL0k+mK)-j zYuCK#mCDK3F|SC}tC2>m$ZCqNB7ac-0UFBJ|8RxmG@4a4qdjvMzzS&h9pQmu^x&*= zGvapd1#K%Da&)8f?<9WN`2H^qpd@{7In6DNM&916TRqtF4;3`R|Nhwbw=(4|^Io@T zIjoR?tB8d*sO>PX4vaIHF|W;WVl6L1JvSmStgnRQq zTX4(>1f^5QOAH{=18Q2Vc1JI{V=yOr7yZJf4Vpfo zeHXdhBe{PyY;)yF;=ycMW@Kb>t;yE>;f79~AlJ8k`xWucCxJfsXf2P72bAavWL1G#W z;o%kdH(mYCM{$~yw4({KatNGim49O2HY6O07$B`*K7}MvgI=4x=SKdKVb8C$eJseA$tmSFOztFd*3W`J`yIB_~}k%Sd_bPBK8LxH)?8#jM{^%J_0|L z!gFI|68)G}ex5`Xh{5pB%GtlJ{Z5em*e0sH+sU1UVl7<5%Bq+YrHWL7?X?3LBi1R@_)F-_OqI1Zv`L zb6^Lq#H^2@d_(Z4E6xA9Z4o3kvf78ZDz!5W1#Mp|E;rvJz&4qj2pXVxKB8Vg0}ek%4erou@QM&2t7Cn5GwYqy%{>jI z)4;3SAgqVi#b{kqX#$Mt6L8NhZYgonb7>+r#BHje)bvaZ2c0nAvrN3gez+dNXaV;A zmyR0z@9h4@6~rJik-=2M-T+d`t&@YWhsoP_XP-NsVO}wmo!nR~QVWU?nVlQjNfgcTzE-PkfIX5G z1?&MwaeuzhF=u)X%Vpg_e@>d2yZwxl6-r3OMqDn8_6m^4z3zG##cK0Fsgq8fcvmhu z{73jseR%X%$85H^jRAcrhd&k!i^xL9FrS7qw2$&gwAS8AfAk#g_E_tP;x66fS`Mn@SNVrcn_N;EQm z`Mt3Z%rw%hDqTH-s~6SrIL$hIPKL5^7ejkLTBr46;pHTQDdoErS(B>``t;+1+M zvU&Se9@T_BeK;A^p|n^krIR+6rH~BjvRIugf`&EuX9u69`9C?9ANVL8l(rY6#mu^i z=*5Q)-%o*tWl`#b8p*ZH0I}hn#gV%|jt6V_JanDGuekR*-wF`u;amTCpGG|1;4A5$ zYbHF{?G1vv5;8Ph5%kEW)t|am2_4ik!`7q{ymfHoe^Z99c|$;FAL+NbxE-_zheYbV z3hb0`uZGTsgA5TG(X|GVDSJyJxsyR7V5PS_WSnYgwc_D60m7u*x4b2D79r5UgtL18 zcCHWk+K6N1Pg2c;0#r-)XpwGX?|Iv)^CLWqwF=a}fXUSM?n6E;cCeW5ER^om#{)Jr zJR81pkK?VoFm@N-s%hd7@hBS0xuCD0-UDVLDDkl7Ck=BAj*^ps`393}AJ+Ruq@fl9 z%R(&?5Nc3lnEKGaYMLmRzKXow1+Gh|O-LG7XiNxkG^uyv zpAtLINwMK}IWK65hOw&O>~EJ}x@lDBtB`yKeV1%GtY4PzT%@~wa1VgZn7QRwc7C)_ zpEF~upeDRg_<#w=dLQ)E?AzXUQpbKXYxkp>;c@aOr6A|dHA?KaZkL0svwB^U#zmx0 zzW4^&G!w7YeRxt<9;d@8H=u(j{6+Uj5AuTluvZZD4b+#+6Rp?(yJ`BC9EW9!b&KdPvzJYe5l7 zMJ9aC@S;sA0{F0XyVY{}FzW0Vh)0mPf_BX82E+CD&)wf2!x@{RO~XBYu80TONl3e+ zA7W$ra6LcDW_j4s-`3tI^VhG*sa5lLc+V6ONf=hO@q4|p`CinYqk1Ko*MbZ6_M05k zSwSwkvu;`|I*_Vl=zPd|dVD0lh&Ha)CSJJvV{AEdF{^Kn_Yfsd!{Pc1GNgw}(^~%)jk5~0L~ms|Rez1fiK~s5t(p1ci5Gq$JC#^JrXf?8 z-Y-Zi_Hvi>oBzV8DSRG!7dm|%IlZg3^0{5~;>)8-+Nk&EhAd(}s^7%MuU}lphNW9Q zT)DPo(ob{tB7_?u;4-qGDo!sh&7gHaJfkh43QwL|bbFVi@+oy;i;M zM&CP^v~lx1U`pi9PmSr&Mc<%HAq0DGH?Ft95)WY`P?~7O z`O^Nr{Py9M#Ls4Y7OM?e%Y*Mvrme%=DwQaye^Qut_1pOMrg^!5u(f9p(D%MR%1K>% zRGw%=dYvw@)o}Fw@tOtPjz`45mfpn;OT&V(;z75J*<$52{sB65$gDjwX3Xa!x_wE- z!#RpwHM#WrO*|~f7z}(}o7US(+0FYLM}6de>gQdtPazXz?OcNv4R^oYLJ_BQOd_l172oSK$6!1r@g+B@0ofJ4*{>_AIxfe-#xp>(1 z@Y3Nfd>fmqvjL;?+DmZk*KsfXJf<%~(gcLwEez%>1c6XSboURUh&k=B)MS>6kw9bY z{7vdev7;A}5fy*ZE23DS{J?8at~xwVk`pEwP5^k?XMQ7u64;KmFJ#POzdG#np~F&H ze-BUh@g54)dsS%nkBb}+GuUEKU~pHcYIg4vSo$J(J|U36bs0Use+3A&IMcR%6@jv$ z=+QI+@wW@?iu}Hpyzlvj-EYeop{f65GX0O%>w#0t|V z1-svWk`hU~m`|O$kw5?Yn5UhI%9P-<45A(v0ld1n+%Ziq&TVpBcV9n}L9Tus-TI)f zd_(g+nYCDR@+wYNQm1GwxhUN4tGMLCzDzPqY$~`l<47{+l<{FZ$L6(>J)|}!bi<)| zE35dl{a2)&leQ@LlDxLQOfUDS`;+ZQ4ozrleQwaR-K|@9T{#hB5Z^t#8 zC-d_G;B4;F#8A2EBL58s$zF-=SCr`P#z zNCTnHF&|X@q>SkAoYu>&s9v@zCpv9lLSH-UZzfhJh`EZA{X#%nqw@@aW^vPcfQrlPs(qQxmC|4tp^&sHy!H!2FH5eC{M@g;ElWNzlb-+ zxpfc0m4<}L){4|RZ>KReag2j%Ot_UKkgpJN!7Y_y3;Ssz{9 z!K3isRtaFtQII5^6}cm9RZd5nTp9psk&u1C(BY`(_tolBwzV_@0F*m%3G%Y?2utyS zY`xM0iDRT)yTyYukFeGQ&W@ReM+ADG1xu@ruq&^GK35`+2r}b^V!m1(VgH|QhIPDE X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! 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..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..b8772a0 --- /dev/null +++ b/web/index.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + openstore + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..3f8b630 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "openstore", + "short_name": "openstore", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "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/.gitignore b/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /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 0000000..4a8f1ca --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(openstore 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 "openstore") + +# 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 0000000..903f489 --- /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 0000000..4f78848 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /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 0000000..88b22e5 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,24 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_windows +) + +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 0000000..394917c --- /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 0000000..dfeec45 --- /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", "dev.mi6e4ka.openstore" "\0" + VALUE "FileDescription", "openstore" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "openstore" "\0" + VALUE "LegalCopyright", "Copyright (C) 2024 dev.mi6e4ka.openstore. All rights reserved." "\0" + VALUE "OriginalFilename", "openstore.exe" "\0" + VALUE "ProductName", "openstore" "\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 0000000..955ee30 --- /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 0000000..6da0652 --- /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 0000000..2b19331 --- /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"openstore", 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 0000000..66a65d1 --- /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 0000000..a42ea76 --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..3a0b465 --- /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 0000000..3879d54 --- /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 0000000..60608d0 --- /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 0000000..e901dde --- /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_