diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index cd9cca6a2..ddb933f17 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -171,6 +171,9 @@ + + + notificationTap( + response, + client: client, + router: FluffyChatApp.router, + ), + onDidReceiveBackgroundNotificationResponse: notificationTapBackground, ); // #Pangea @@ -421,7 +450,14 @@ class BackgroundPush { return; } _wentToRoomOnStartup = true; - goToRoom(details.notificationResponse); + final response = details.notificationResponse; + if (response != null) { + notificationTap( + response, + client: client, + router: FluffyChatApp.router, + ); + } }); } @@ -466,54 +502,6 @@ class BackgroundPush { ); } - Future goToRoom(NotificationResponse? response) async { - try { - final payload = response?.payload; - Logs().v('[Push] Attempting to go to room with payload: $payload'); - if (payload == null) { - return; - } - - // #Pangea - Handle activity session data if present - String? roomId; - String? sessionRoomId; - String? activityId; - - try { - final payloadData = jsonDecode(payload) as Map; - roomId = payloadData['room_id'] as String?; - sessionRoomId = - payloadData['content_pangea.activity.session_room_id'] as String?; - activityId = payloadData['content_pangea.activity.id'] as String?; - } catch (_) { - // If payload is not JSON, treat it as a simple room ID - roomId = payload; - } - - if (roomId == null || roomId.isEmpty) { - return; - } - - await _navigateToActivityOrRoom( - roomId: roomId, - sessionRoomId: sessionRoomId, - activityId: activityId, - ); - // Pangea# - } catch (e, s) { - Logs().e('[Push] Failed to open room', e, s); - // #Pangea - ErrorHandler.logError( - e: e, - s: s, - data: { - "roomID": response?.payload, - }, - ); - // Pangea# - } - } - Future setupUp() async { await UnifiedPushUi(matrix!.context, ["default"], UPFunctions()) .registerAppWithDialog(); diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart index 95e7eaa00..cf7e417e0 100644 --- a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart @@ -135,6 +135,7 @@ Future _constructDatabase(String clientName) async { version: 1, // most important : apply encryption when opening the DB onConfigure: helper?.applyPragmaKey, + singleInstance: false, ), ); diff --git a/lib/utils/notification_background_handler.dart b/lib/utils/notification_background_handler.dart new file mode 100644 index 000000000..8c9a279ee --- /dev/null +++ b/lib/utils/notification_background_handler.dart @@ -0,0 +1,146 @@ +import 'dart:convert'; +import 'dart:ui'; + +import 'package:collection/collection.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_vodozemac/flutter_vodozemac.dart' as vod; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'package:fluffychat/utils/client_manager.dart'; + +bool _vodInitialized = false; + +extension NotificationResponseJson on NotificationResponse { + String toJsonString() => jsonEncode({ + 'type': notificationResponseType.name, + 'id': id, + 'actionId': actionId, + 'input': input, + 'payload': payload, + 'data': data, + }); + + static NotificationResponse fromJsonString(String jsonString) { + final json = jsonDecode(jsonString) as Map; + return NotificationResponse( + notificationResponseType: NotificationResponseType.values + .singleWhere((t) => t.name == json['type']), + id: json['id'] as int?, + actionId: json['actionId'] as String?, + input: json['input'] as String?, + payload: json['payload'] as String?, + data: json['data'] as Map, + ); + } +} + +@pragma('vm:entry-point') +void notificationTapBackground( + NotificationResponse notificationResponse, +) async { + Logs().i('Notification tap in background'); + + final sendPort = IsolateNameServer.lookupPortByName('background_tab_port'); + if (sendPort != null) { + sendPort.send(notificationResponse.toJsonString()); + return; + } + + if (!_vodInitialized) { + await vod.init(); + _vodInitialized = true; + } + final client = (await ClientManager.getClients( + initialize: false, + store: await SharedPreferences.getInstance(), + )) + .first; + await client.abortSync(); + await client.init( + waitForFirstSync: false, + waitUntilLoadCompletedLoaded: false, + ); + if (!client.isLogged()) { + throw Exception('Notification tab in background but not logged in!'); + } + try { + await notificationTap(notificationResponse, client: client); + } finally { + await client.dispose(closeDatabase: false); + } + return; +} + +Future notificationTap( + NotificationResponse notificationResponse, { + GoRouter? router, + required Client client, +}) async { + Logs().d( + 'Notification action handler started', + notificationResponse.notificationResponseType.name, + ); + switch (notificationResponse.notificationResponseType) { + case NotificationResponseType.selectedNotification: + final roomId = notificationResponse.payload; + if (roomId == null) return; + + if (router == null) { + Logs().v('Ignore select notification action in background mode'); + return; + } + Logs().v('Open room from notification tap', roomId); + await client.roomsLoading; + await client.accountDataLoading; + if (client.getRoomById(roomId) == null) { + await client + .waitForRoomInSync(roomId) + .timeout(const Duration(seconds: 30)); + } + router.go( + client.getRoomById(roomId)?.membership == Membership.invite + ? '/rooms' + : '/rooms/$roomId', + ); + case NotificationResponseType.selectedNotificationAction: + final actionType = FluffyChatNotificationActions.values.singleWhereOrNull( + (action) => action.name == notificationResponse.actionId, + ); + if (actionType == null) { + throw Exception('Selected notification with action but no action ID'); + } + final roomId = notificationResponse.payload; + if (roomId == null) { + throw Exception('Selected notification with action but no payload'); + } + await client.roomsLoading; + await client.accountDataLoading; + await client.userDeviceKeysLoading; + final room = client.getRoomById(roomId); + if (room == null) { + throw Exception( + 'Selected notification with action but unknown room $roomId', + ); + } + switch (actionType) { + case FluffyChatNotificationActions.markAsRead: + await room.setReadMarker( + room.lastEvent!.eventId, + mRead: room.lastEvent!.eventId, + public: false, // TODO: Load preference here + ); + case FluffyChatNotificationActions.reply: + final input = notificationResponse.input; + if (input == null || input.isEmpty) { + throw Exception( + 'Selected notification with reply action but without input', + ); + } + await room.sendTextEvent(input); + } + } +} + +enum FluffyChatNotificationActions { markAsRead, reply } diff --git a/lib/utils/push_helper.dart b/lib/utils/push_helper.dart index 5ca9243e4..eb2f9fa00 100644 --- a/lib/utils/push_helper.dart +++ b/lib/utils/push_helper.dart @@ -16,6 +16,7 @@ import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/utils/client_download_content_extension.dart'; import 'package:fluffychat/utils/client_manager.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/notification_background_handler.dart'; import 'package:fluffychat/utils/platform_infos.dart'; const notificationAvatarDimension = 128; @@ -299,6 +300,23 @@ Future _tryPushHelper( importance: Importance.high, priority: Priority.max, groupKey: event.room.spaceParents.firstOrNull?.roomId ?? 'rooms', + actions: [ + AndroidNotificationAction( + FluffyChatNotificationActions.reply.name, + l10n.reply, + inputs: [ + AndroidNotificationActionInput( + label: l10n.writeAMessage, + ), + ], + cancelNotification: false, + allowGeneratedReplies: true, + ), + AndroidNotificationAction( + FluffyChatNotificationActions.markAsRead.name, + l10n.markAsRead, + ), + ], ); const iOSPlatformChannelSpecifics = DarwinNotificationDetails(); final platformChannelSpecifics = NotificationDetails( diff --git a/lib/widgets/presence_builder.dart b/lib/widgets/presence_builder.dart index 4332485ab..a2d46c35f 100644 --- a/lib/widgets/presence_builder.dart +++ b/lib/widgets/presence_builder.dart @@ -27,12 +27,10 @@ class _PresenceBuilderState extends State { StreamSubscription? _sub; void _updatePresence(CachedPresence? presence) { - // #Pangea - // setState(() { - // _presence = presence; - // }); - if (mounted) setState(() => _presence = presence); - // Pangea# + if (!mounted) return; + setState(() { + _presence = presence; + }); } @override diff --git a/pubspec.yaml b/pubspec.yaml index d189dbafa..ed6d4d701 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -171,22 +171,6 @@ flutter: - assets/sounds/ - assets/vodozemac/ -msix_config: - display_name: FluffyChat - publisher_display_name: FluffyChat - publisher: CN=FluffyChat, O=Head of bad integration tests, L=Matrix, S=Internet, C=EU - # #Pangea - # identity_name: chat.fluffy.fluffychat - identity_name: com.talktolearn.chat - # Pangea# - logo_path: assets\logo.png - capabilities: internetClient, location, microphone, webcam - protocol_activation: https - app_uri_handler_hosts: fluffychat.im, matrix.to - execution_alias: fluffychat - sign_msix: false - install_certificate: false - # Guidelines for adding a dependency override: # 1. Don't do it if you can avoid it or fix it upstream in a manageable time # 2. Always link an (upstream?) issue diff --git a/winuwp/.gitignore b/winuwp/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/winuwp/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -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/winuwp/CMakeLists.txt b/winuwp/CMakeLists.txt deleted file mode 100644 index 7530c80c6..000000000 --- a/winuwp/CMakeLists.txt +++ /dev/null @@ -1,64 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.8) -set(CMAKE_SYSTEM_NAME WindowsStore) -set(CMAKE_SYSTEM_VERSION 10.0) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED YES) -project(fluffychat LANGUAGES CXX) - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0079 NEW) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "fluffychat") - -# Define build configuration options. -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" /await) - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") - target_compile_definitions(${TARGET} PRIVATE WINUWP) - set_target_properties(${TARGET} PROPERTIES VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION 10.0.18362.0) -endfunction() - -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - -# Flutter library and tool build rules. -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner_uwp") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) diff --git a/winuwp/flutter/CMakeLists.txt b/winuwp/flutter/CMakeLists.txt deleted file mode 100644 index 9adbd9ddb..000000000 --- a/winuwp/flutter/CMakeLists.txt +++ /dev/null @@ -1,92 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.8) -set(CMAKE_SYSTEM_NAME WindowsStore) -set(CMAKE_SYSTEM_VERSION 10.0) -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -include(CMakePrintHelpers) - -# 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") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows_winuwp.dll") - -# === Assets === -set(CMAKE_INSTALL_MANIFEST "${EPHEMERAL_DIR}/install_manifest") -file(STRINGS ${CMAKE_INSTALL_MANIFEST} INSTALL_MANIFEST_CONTENT) - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(INSTALL_MANIFEST_CONTENT ${INSTALL_MANIFEST_CONTENT} 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) - -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/winuwp/flutter/flutter_windows.h b/winuwp/flutter/flutter_windows.h deleted file mode 100644 index 0aeb6fdc1..000000000 --- a/winuwp/flutter/flutter_windows.h +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_PUBLIC_FLUTTER_H_ -#define FLUTTER_SHELL_PLATFORM_WINDOWS_PUBLIC_FLUTTER_H_ - -#include -#include -#include - -#include "flutter_export.h" -#include "flutter_messenger.h" -#include "flutter_plugin_registrar.h" - -#ifdef WINUWP -#include -#include -#endif - -#if defined(__cplusplus) -extern "C" { -#endif - -// Opaque reference to a Flutter window controller. -typedef struct FlutterDesktopViewControllerState* - FlutterDesktopViewControllerRef; - -// Opaque reference to a Flutter window. -struct FlutterDesktopView; -typedef struct FlutterDesktopView* FlutterDesktopViewRef; - -// Opaque reference to a Flutter engine instance. -struct FlutterDesktopEngine; -typedef struct FlutterDesktopEngine* FlutterDesktopEngineRef; - -// Properties for configuring a Flutter engine instance. -typedef struct { - // The path to the flutter_assets folder for the application to be run. - // This can either be an absolute path or a path relative to the directory - // containing the executable. - const wchar_t* assets_path; - - // The path to the icudtl.dat file for the version of Flutter you are using. - // This can either be an absolute path or a path relative to the directory - // containing the executable. - const wchar_t* icu_data_path; - - // The path to the AOT library file for your application, if any. - // This can either be an absolute path or a path relative to the directory - // containing the executable. This can be nullptr for a non-AOT build, as - // it will be ignored in that case. - const wchar_t* aot_library_path; - - // Number of elements in the array passed in as dart_entrypoint_argv. - int dart_entrypoint_argc; - - // Array of Dart entrypoint arguments. This is deep copied during the call - // to FlutterDesktopEngineCreate. - const char** dart_entrypoint_argv; - -} FlutterDesktopEngineProperties; - -// ========== View Controller ========== - -// Creates a view that hosts and displays the given engine instance. -// -// This takes ownership of |engine|, so FlutterDesktopEngineDestroy should no -// longer be called on it, as it will be called internally when the view -// controller is destroyed. If creating the view controller fails, the engine -// will be destroyed immediately. -// -// If |engine| is not already running, the view controller will start running -// it automatically before displaying the window. -// -// The caller owns the returned reference, and is responsible for calling -// FlutterDesktopViewControllerDestroy. Returns a null pointer in the event of -// an error. -#ifdef WINUWP -// The CoreApplicationView implementation accepts a pointer to the host -// CoreApplicationView and view hookup is performed in the construction path. -FLUTTER_EXPORT FlutterDesktopViewControllerRef -FlutterDesktopViewControllerCreateFromCoreApplicationView( - ABI::Windows::ApplicationModel::Core::CoreApplicationView* window, - ABI::Windows::ApplicationModel::Activation::IActivatedEventArgs* args, - FlutterDesktopEngineRef engine); -#else //! WINUWP -// The Win32 implementation accepts width, height -// with view hookup explicitly performed using the caller using HWND parenting. -FLUTTER_EXPORT FlutterDesktopViewControllerRef -FlutterDesktopViewControllerCreate(int width, - int height, - FlutterDesktopEngineRef engine); -#endif - -// Shuts down the engine instance associated with |controller|, and cleans up -// associated state. -// -// |controller| is no longer valid after this call. -FLUTTER_EXPORT void FlutterDesktopViewControllerDestroy( - FlutterDesktopViewControllerRef controller); - -// Returns the handle for the engine running in FlutterDesktopViewControllerRef. -// -// Its lifetime is the same as the |controller|'s. -FLUTTER_EXPORT FlutterDesktopEngineRef FlutterDesktopViewControllerGetEngine( - FlutterDesktopViewControllerRef controller); -// Returns the view managed by the given controller. - -FLUTTER_EXPORT FlutterDesktopViewRef -FlutterDesktopViewControllerGetView(FlutterDesktopViewControllerRef controller); - -// Requests new frame from engine and repaints the view -FLUTTER_EXPORT void FlutterDesktopViewControllerForceRedraw( - FlutterDesktopViewControllerRef controller); - -#ifndef WINUWP -// Allows the Flutter engine and any interested plugins an opportunity to -// handle the given message. -// -// If the WindowProc was handled and further handling should stop, this returns -// true and |result| will be populated. |result| is not set if returning false. -FLUTTER_EXPORT bool FlutterDesktopViewControllerHandleTopLevelWindowProc( - FlutterDesktopViewControllerRef controller, - HWND hwnd, - UINT message, - WPARAM wparam, - LPARAM lparam, - LRESULT* result); -#endif - -// ========== Engine ========== - -// Creates a Flutter engine with the given properties. -// -// The caller owns the returned reference, and is responsible for calling -// FlutterDesktopEngineDestroy. The lifetime of |engine_properties| is required -// to extend only until the end of this call. -FLUTTER_EXPORT FlutterDesktopEngineRef FlutterDesktopEngineCreate( - const FlutterDesktopEngineProperties* engine_properties); - -// Shuts down and destroys the given engine instance. Returns true if the -// shutdown was successful, or if the engine was not running. -// -// |engine| is no longer valid after this call. -FLUTTER_EXPORT bool FlutterDesktopEngineDestroy(FlutterDesktopEngineRef engine); - -// Starts running the given engine instance and optional entry point in the Dart -// project. If the entry point is null, defaults to main(). -// -// If provided, entry_point must be the name of a top-level function from the -// same Dart library that contains the app's main() function, and must be -// decorated with `@pragma(vm:entry-point)` to ensure the method is not -// tree-shaken by the Dart compiler. -// -// Returns false if running the engine failed. -FLUTTER_EXPORT bool FlutterDesktopEngineRun(FlutterDesktopEngineRef engine, - const char* entry_point); - -#ifndef WINUWP -// DEPRECATED: This is no longer necessary to call, Flutter will take care of -// processing engine messages transparently through DispatchMessage. -// -// Processes any pending events in the Flutter engine, and returns the -// number of nanoseconds until the next scheduled event (or max, if none). -// -// This should be called on every run of the application-level runloop, and -// a wait for native events in the runloop should never be longer than the -// last return value from this function. -FLUTTER_EXPORT uint64_t -FlutterDesktopEngineProcessMessages(FlutterDesktopEngineRef engine); -#endif - -FLUTTER_EXPORT void FlutterDesktopEngineReloadSystemFonts( - FlutterDesktopEngineRef engine); - -FLUTTER_EXPORT void FlutterDesktopEngineReloadPlatformBrightness( - FlutterDesktopEngineRef engine); - -// Returns the plugin registrar handle for the plugin with the given name. -// -// The name must be unique across the application. -FLUTTER_EXPORT FlutterDesktopPluginRegistrarRef -FlutterDesktopEngineGetPluginRegistrar(FlutterDesktopEngineRef engine, - const char* plugin_name); - -// Returns the messenger associated with the engine. -FLUTTER_EXPORT FlutterDesktopMessengerRef -FlutterDesktopEngineGetMessenger(FlutterDesktopEngineRef engine); - -// Returns the texture registrar associated with the engine. -FLUTTER_EXPORT FlutterDesktopTextureRegistrarRef -FlutterDesktopEngineGetTextureRegistrar( - FlutterDesktopTextureRegistrarRef texture_registrar); - -// ========== View ========== - -#ifdef WINUWP -// Return backing CoreApplicationView for manipulation of CoreWindow and -// CoreTitleBar in host application. -FLUTTER_EXPORT ABI::Windows::ApplicationModel::Core::CoreApplicationView* -FlutterDesktopViewGetCoreApplicationView(FlutterDesktopViewRef view); -#else -// Return backing HWND for manipulation in host application. -FLUTTER_EXPORT HWND FlutterDesktopViewGetHWND(FlutterDesktopViewRef view); -#endif - -// ========== Plugin Registrar (extensions) ========== -// These are Windows-specific extensions to flutter_plugin_registrar.h - -// Function pointer type for top level WindowProc delegate registration. -// -// The user data will be whatever was passed to -// FlutterDesktopRegisterTopLevelWindowProcHandler. -// -// Implementations should populate |result| and return true if the WindowProc -// was handled and further handling should stop. |result| is ignored if the -// function returns false. -typedef bool (*FlutterDesktopWindowProcCallback)(HWND /* hwnd */, - UINT /* uMsg */, - WPARAM /*wParam*/, - LPARAM /* lParam*/, - void* /* user data */, - LRESULT* result); - -// Returns the view associated with this registrar's engine instance. -FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView( - FlutterDesktopPluginRegistrarRef registrar); - -#ifndef WINUWP -FLUTTER_EXPORT void -FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate( - FlutterDesktopPluginRegistrarRef registrar, - FlutterDesktopWindowProcCallback delegate, - void* user_data); - -FLUTTER_EXPORT void -FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate( - FlutterDesktopPluginRegistrarRef registrar, - FlutterDesktopWindowProcCallback delegate); -#endif - -// ========== Freestanding Utilities ========== - -// Gets the DPI for a given |hwnd|, depending on the supported APIs per -// windows version and DPI awareness mode. If nullptr is passed, returns the DPI -// of the primary monitor. -// -// This uses the same logic and fallback for older Windows versions that is used -// internally by Flutter to determine the DPI to use for displaying Flutter -// content, so should be used by any code (e.g., in plugins) that translates -// between Windows and Dart sizes/offsets. -FLUTTER_EXPORT UINT FlutterDesktopGetDpiForHWND(HWND hwnd); - -// Gets the DPI for a given |monitor|. If the API is not available, a default -// DPI of 96 is returned. -// -// See FlutterDesktopGetDpiForHWND for more information. -FLUTTER_EXPORT UINT FlutterDesktopGetDpiForMonitor(HMONITOR monitor); - -// Reopens stdout and stderr and resysncs the standard library output streams. -// Should be called if output is being directed somewhere in the runner process -// (e.g., after an AllocConsole call). -FLUTTER_EXPORT void FlutterDesktopResyncOutputStreams(); - -#if defined(__cplusplus) -} // extern "C" -#endif - -#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_PUBLIC_FLUTTER_WINDOWS_H_ diff --git a/winuwp/flutter/generated_plugin_registrant.cc b/winuwp/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 8b6d4680a..000000000 --- a/winuwp/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void RegisterPlugins(flutter::PluginRegistry* registry) { -} diff --git a/winuwp/flutter/generated_plugin_registrant.h b/winuwp/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/winuwp/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// 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/winuwp/flutter/generated_plugins.cmake b/winuwp/flutter/generated_plugins.cmake deleted file mode 100644 index 4d10c2518..000000000 --- a/winuwp/flutter/generated_plugins.cmake +++ /dev/null @@ -1,15 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_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) diff --git a/winuwp/project_version b/winuwp/project_version deleted file mode 100644 index c22708346..000000000 --- a/winuwp/project_version +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/winuwp/runner_uwp/Assets/LargeTile.scale-100.png b/winuwp/runner_uwp/Assets/LargeTile.scale-100.png deleted file mode 100644 index fa651eb71..000000000 Binary files a/winuwp/runner_uwp/Assets/LargeTile.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/LargeTile.scale-125.png b/winuwp/runner_uwp/Assets/LargeTile.scale-125.png deleted file mode 100644 index 649e07696..000000000 Binary files a/winuwp/runner_uwp/Assets/LargeTile.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/LargeTile.scale-150.png b/winuwp/runner_uwp/Assets/LargeTile.scale-150.png deleted file mode 100644 index fd14c60cb..000000000 Binary files a/winuwp/runner_uwp/Assets/LargeTile.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/LargeTile.scale-200.png b/winuwp/runner_uwp/Assets/LargeTile.scale-200.png deleted file mode 100644 index 873537f33..000000000 Binary files a/winuwp/runner_uwp/Assets/LargeTile.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/LargeTile.scale-400.png b/winuwp/runner_uwp/Assets/LargeTile.scale-400.png deleted file mode 100644 index 979878f73..000000000 Binary files a/winuwp/runner_uwp/Assets/LargeTile.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/LockScreenLogo.scale-200.png b/winuwp/runner_uwp/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 735f57adb..000000000 Binary files a/winuwp/runner_uwp/Assets/LockScreenLogo.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SmallTile.scale-100.png b/winuwp/runner_uwp/Assets/SmallTile.scale-100.png deleted file mode 100644 index 35e7f6242..000000000 Binary files a/winuwp/runner_uwp/Assets/SmallTile.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SmallTile.scale-125.png b/winuwp/runner_uwp/Assets/SmallTile.scale-125.png deleted file mode 100644 index 2a74cc67e..000000000 Binary files a/winuwp/runner_uwp/Assets/SmallTile.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SmallTile.scale-150.png b/winuwp/runner_uwp/Assets/SmallTile.scale-150.png deleted file mode 100644 index 157124823..000000000 Binary files a/winuwp/runner_uwp/Assets/SmallTile.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SmallTile.scale-200.png b/winuwp/runner_uwp/Assets/SmallTile.scale-200.png deleted file mode 100644 index 07ec2ddcb..000000000 Binary files a/winuwp/runner_uwp/Assets/SmallTile.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SmallTile.scale-400.png b/winuwp/runner_uwp/Assets/SmallTile.scale-400.png deleted file mode 100644 index c205729b7..000000000 Binary files a/winuwp/runner_uwp/Assets/SmallTile.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SplashScreen.scale-100.png b/winuwp/runner_uwp/Assets/SplashScreen.scale-100.png deleted file mode 100644 index 601257981..000000000 Binary files a/winuwp/runner_uwp/Assets/SplashScreen.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SplashScreen.scale-125.png b/winuwp/runner_uwp/Assets/SplashScreen.scale-125.png deleted file mode 100644 index 0c35be827..000000000 Binary files a/winuwp/runner_uwp/Assets/SplashScreen.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SplashScreen.scale-150.png b/winuwp/runner_uwp/Assets/SplashScreen.scale-150.png deleted file mode 100644 index f1e60f33c..000000000 Binary files a/winuwp/runner_uwp/Assets/SplashScreen.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SplashScreen.scale-200.png b/winuwp/runner_uwp/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 73d2461ce..000000000 Binary files a/winuwp/runner_uwp/Assets/SplashScreen.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/SplashScreen.scale-400.png b/winuwp/runner_uwp/Assets/SplashScreen.scale-400.png deleted file mode 100644 index b2b7ca9c4..000000000 Binary files a/winuwp/runner_uwp/Assets/SplashScreen.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-100.png b/winuwp/runner_uwp/Assets/Square150x150Logo.scale-100.png deleted file mode 100644 index cdc3e9732..000000000 Binary files a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-125.png b/winuwp/runner_uwp/Assets/Square150x150Logo.scale-125.png deleted file mode 100644 index 71e5a1153..000000000 Binary files a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-150.png b/winuwp/runner_uwp/Assets/Square150x150Logo.scale-150.png deleted file mode 100644 index 60f2e1827..000000000 Binary files a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-200.png b/winuwp/runner_uwp/Assets/Square150x150Logo.scale-200.png deleted file mode 100644 index 20814081d..000000000 Binary files a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-400.png b/winuwp/runner_uwp/Assets/Square150x150Logo.scale-400.png deleted file mode 100644 index 605aacb02..000000000 Binary files a/winuwp/runner_uwp/Assets/Square150x150Logo.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-16.png b/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-16.png deleted file mode 100644 index 1c78d96bf..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-16.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-256.png b/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-256.png deleted file mode 100644 index d49d3d899..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-256.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png b/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png deleted file mode 100644 index 889622468..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png b/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png deleted file mode 100644 index 6389ede5a..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-100.png b/winuwp/runner_uwp/Assets/Square44x44Logo.scale-100.png deleted file mode 100644 index 47e3cd29b..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-125.png b/winuwp/runner_uwp/Assets/Square44x44Logo.scale-125.png deleted file mode 100644 index 50faa9328..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-150.png b/winuwp/runner_uwp/Assets/Square44x44Logo.scale-150.png deleted file mode 100644 index f0293ed81..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-200.png b/winuwp/runner_uwp/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index e54a56dbc..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-400.png b/winuwp/runner_uwp/Assets/Square44x44Logo.scale-400.png deleted file mode 100644 index 4b5fb179f..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-16.png b/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-16.png deleted file mode 100644 index a1a6ec70a..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-16.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-24.png b/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-24.png deleted file mode 100644 index c67a8e12f..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-24.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png deleted file mode 100644 index 47d36f63e..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-256.png b/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-256.png deleted file mode 100644 index 50efc008d..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-256.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-32.png b/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-32.png deleted file mode 100644 index f86682c9f..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-32.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-48.png b/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-48.png deleted file mode 100644 index 7561269af..000000000 Binary files a/winuwp/runner_uwp/Assets/Square44x44Logo.targetsize-48.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/StoreLogo.png b/winuwp/runner_uwp/Assets/StoreLogo.png deleted file mode 100644 index 7385b56c0..000000000 Binary files a/winuwp/runner_uwp/Assets/StoreLogo.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/StoreLogo.scale-100.png b/winuwp/runner_uwp/Assets/StoreLogo.scale-100.png deleted file mode 100644 index fcefe81ba..000000000 Binary files a/winuwp/runner_uwp/Assets/StoreLogo.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/StoreLogo.scale-125.png b/winuwp/runner_uwp/Assets/StoreLogo.scale-125.png deleted file mode 100644 index 4381be777..000000000 Binary files a/winuwp/runner_uwp/Assets/StoreLogo.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/StoreLogo.scale-150.png b/winuwp/runner_uwp/Assets/StoreLogo.scale-150.png deleted file mode 100644 index e49390bf3..000000000 Binary files a/winuwp/runner_uwp/Assets/StoreLogo.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/StoreLogo.scale-200.png b/winuwp/runner_uwp/Assets/StoreLogo.scale-200.png deleted file mode 100644 index fb740e846..000000000 Binary files a/winuwp/runner_uwp/Assets/StoreLogo.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/StoreLogo.scale-400.png b/winuwp/runner_uwp/Assets/StoreLogo.scale-400.png deleted file mode 100644 index d1472741e..000000000 Binary files a/winuwp/runner_uwp/Assets/StoreLogo.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/Wide310x150Logo.scale-200.png b/winuwp/runner_uwp/Assets/Wide310x150Logo.scale-200.png deleted file mode 100644 index 288995b39..000000000 Binary files a/winuwp/runner_uwp/Assets/Wide310x150Logo.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/WideTile.scale-100.png b/winuwp/runner_uwp/Assets/WideTile.scale-100.png deleted file mode 100644 index 1cb688c7b..000000000 Binary files a/winuwp/runner_uwp/Assets/WideTile.scale-100.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/WideTile.scale-125.png b/winuwp/runner_uwp/Assets/WideTile.scale-125.png deleted file mode 100644 index 729239615..000000000 Binary files a/winuwp/runner_uwp/Assets/WideTile.scale-125.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/WideTile.scale-150.png b/winuwp/runner_uwp/Assets/WideTile.scale-150.png deleted file mode 100644 index d4b275a57..000000000 Binary files a/winuwp/runner_uwp/Assets/WideTile.scale-150.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/WideTile.scale-200.png b/winuwp/runner_uwp/Assets/WideTile.scale-200.png deleted file mode 100644 index 601257981..000000000 Binary files a/winuwp/runner_uwp/Assets/WideTile.scale-200.png and /dev/null differ diff --git a/winuwp/runner_uwp/Assets/WideTile.scale-400.png b/winuwp/runner_uwp/Assets/WideTile.scale-400.png deleted file mode 100644 index 73d2461ce..000000000 Binary files a/winuwp/runner_uwp/Assets/WideTile.scale-400.png and /dev/null differ diff --git a/winuwp/runner_uwp/CMakeLists.txt b/winuwp/runner_uwp/CMakeLists.txt deleted file mode 100644 index b4362a4fc..000000000 --- a/winuwp/runner_uwp/CMakeLists.txt +++ /dev/null @@ -1,141 +0,0 @@ -cmake_minimum_required (VERSION 3.8) -set(CMAKE_SYSTEM_NAME WindowsStore) -set(CMAKE_SYSTEM_VERSION 10.0) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED YES) - -include(CMakePrintHelpers) - -project (runner LANGUAGES CXX) - -# UWP tile and icon assets. -set(ASSET_FILES ${ASSET_FILES} - Assets/LargeTile.scale-100.png - Assets/LargeTile.scale-125.png - Assets/LargeTile.scale-150.png - Assets/LargeTile.scale-200.png - Assets/LargeTile.scale-400.png - Assets/LockScreenLogo.scale-200.png - Assets/SmallTile.scale-100.png - Assets/SmallTile.scale-125.png - Assets/SmallTile.scale-150.png - Assets/SmallTile.scale-200.png - Assets/SmallTile.scale-400.png - Assets/SplashScreen.scale-100.png - Assets/SplashScreen.scale-125.png - Assets/SplashScreen.scale-150.png - Assets/SplashScreen.scale-200.png - Assets/SplashScreen.scale-400.png - Assets/Square44x44Logo.altform-unplated_targetsize-16.png - Assets/Square44x44Logo.altform-unplated_targetsize-32.png - Assets/Square44x44Logo.altform-unplated_targetsize-48.png - Assets/Square44x44Logo.altform-unplated_targetsize-256.png - Assets/Square44x44Logo.scale-100.png - Assets/Square44x44Logo.scale-125.png - Assets/Square44x44Logo.scale-150.png - Assets/Square44x44Logo.scale-200.png - Assets/Square44x44Logo.scale-400.png - Assets/Square44x44Logo.targetsize-16.png - Assets/Square44x44Logo.targetsize-24.png - Assets/Square44x44Logo.targetsize-24_altform-unplated.png - Assets/Square44x44Logo.targetsize-32.png - Assets/Square44x44Logo.targetsize-48.png - Assets/Square44x44Logo.targetsize-256.png - Assets/Square150x150Logo.scale-100.png - Assets/Square150x150Logo.scale-125.png - Assets/Square150x150Logo.scale-150.png - Assets/Square150x150Logo.scale-200.png - Assets/Square150x150Logo.scale-400.png - Assets/StoreLogo.png - Assets/StoreLogo.scale-100.png - Assets/StoreLogo.scale-125.png - Assets/StoreLogo.scale-150.png - Assets/StoreLogo.scale-200.png - Assets/StoreLogo.scale-400.png - Assets/Wide310x150Logo.scale-200.png - Assets/WideTile.scale-100.png - Assets/WideTile.scale-125.png - Assets/WideTile.scale-150.png - Assets/WideTile.scale-200.png - Assets/WideTile.scale-400.png -) - -# Configure package manifest file. -set(APP_MANIFEST_NAME Package.appxmanifest) -set(APP_MANIFEST_TARGET_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${APP_MANIFEST_NAME}) -set(SHORT_NAME ${BINARY_NAME}) -set(PACKAGE_GUID "086F9B60-CB52-4D0B-9B4E-AE891E7859D1") - -configure_file( - appxmanifest.in - ${APP_MANIFEST_TARGET_LOCATION} - @ONLY) - -set(CONTENT_FILES ${APP_MANIFEST_TARGET_LOCATION}) - -# Configure package content files. -set_property(SOURCE ${CONTENT_FILES} PROPERTY VS_DEPLOYMENT_CONTENT 1) - -set(RESOURCE_FILES ${ASSET_FILES} ${CONTENT_FILES} Windows_TemporaryKey.pfx) -set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_CONTENT 1) -set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_LOCATION "Assets") - -set(STRING_FILES Resources.pri) -set_property(SOURCE ${STRING_FILES} PROPERTY VS_TOOL_OVERRIDE "PRIResource") - -source_group("Resource Files" FILES ${RESOURCE_FILES} ${CONTENT_FILES} ${STRING_FILES}) - -# Configure Flutter assets using tool generated install manifest -foreach(ITEM ${INSTALL_MANIFEST_CONTENT}) - get_filename_component(ITEM_REL ${CMAKE_BINARY_DIR} DIRECTORY) - file(RELATIVE_PATH RELPATH ${ITEM_REL} ${ITEM}) - - get_filename_component(RELPATH ${RELPATH} DIRECTORY) - get_filename_component(ITEMEXT ${ITEM} LAST_EXT) - - if("${ITEMEXT}" STREQUAL ".dll" OR "${ITEMEXT}" STREQUAL ".pdb") - string(CONCAT RELPATH "") - elseif ("${ITEMEXT}" STREQUAL ".so") - file(RELATIVE_PATH RELPATH "${ITEM_REL}/winuwp" ${ITEM}) - string(REGEX REPLACE "/" "\\\\" RELPATH ${RELPATH}) - string(CONCAT RELPATH "Assets\\Data") - elseif("${ITEMEXT}" STREQUAL ".dat") - string(CONCAT RELPATH "Assets\\Data") - else() - string(REGEX REPLACE "/" "\\\\" RELPATH ${RELPATH}) - string(CONCAT RELPATH "Assets\\Data\\" ${RELPATH}) - endif() - - cmake_print_variables(${RELPATH}) - - set_property(SOURCE ${ITEM} PROPERTY VS_DEPLOYMENT_CONTENT 1) - set_property(SOURCE ${ITEM} PROPERTY VS_DEPLOYMENT_LOCATION ${RELPATH}) -endforeach() - -# 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 - main.cpp - flutter_frameworkview.cpp - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - ${RESOURCE_FILES} - ${INSTALL_MANIFEST_CONTENT} -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# 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 WindowsApp flutter flutter_wrapper_app) -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/winuwp/runner_uwp/CMakeSettings.json b/winuwp/runner_uwp/CMakeSettings.json deleted file mode 100644 index ba63a530d..000000000 --- a/winuwp/runner_uwp/CMakeSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - // See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file. - "configurations": [ - { - "name": "Debug", - "generator": "Visual Studio 15 2017 Win64", - "configurationType": "Debug", - "inheritEnvironments": [ "msvc_x64_x64" ], - "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", - "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "", - "ctestCommandArgs": "" - }, - { - "name": "Release", - "generator": "Visual Studio 15 2017 Win64", - "configurationType": "Release", - "inheritEnvironments": [ "msvc_x64_x64" ], - "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", - "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "", - "ctestCommandArgs": "" - } - ] -} diff --git a/winuwp/runner_uwp/Windows_TemporaryKey.pfx b/winuwp/runner_uwp/Windows_TemporaryKey.pfx deleted file mode 100644 index 1cad9993d..000000000 Binary files a/winuwp/runner_uwp/Windows_TemporaryKey.pfx and /dev/null differ diff --git a/winuwp/runner_uwp/appxmanifest.in b/winuwp/runner_uwp/appxmanifest.in deleted file mode 100644 index 570d424ee..000000000 --- a/winuwp/runner_uwp/appxmanifest.in +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - @SHORT_NAME@ - CMake Test Cert - Assets/StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - diff --git a/winuwp/runner_uwp/flutter_frameworkview.cpp b/winuwp/runner_uwp/flutter_frameworkview.cpp deleted file mode 100644 index bcdc73adb..000000000 --- a/winuwp/runner_uwp/flutter_frameworkview.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include "winrt/Windows.ApplicationModel.Core.h" -#include "winrt/Windows.Foundation.h" -#include "winrt/Windows.System.Profile.h" -#include "winrt/Windows.System.Threading.h" -#include "winrt/Windows.UI.Core.h" -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -struct FlutterFrameworkView - : winrt::implements< - FlutterFrameworkView, - winrt::Windows::ApplicationModel::Core::IFrameworkView> { - // |winrt::Windows::ApplicationModel::Core::IFrameworkView| - void - Initialize(winrt::Windows::ApplicationModel::Core::CoreApplicationView const - &applicationView) { - - // Layout scaling must be disabled in the appinitialization phase in order - // to take effect correctly. - if (winrt::Windows::System::Profile::AnalyticsInfo::VersionInfo() - .DeviceFamily() == L"Windows.Xbox") { - - bool result = winrt::Windows::UI::ViewManagement::ApplicationViewScaling:: - TrySetDisableLayoutScaling(true); - if (!result) { - OutputDebugString(L"Couldn't disable layout scaling"); - } - } - - main_view_ = applicationView; - main_view_.Activated({this, &FlutterFrameworkView::OnActivated}); - } - - // |winrt::Windows::ApplicationModel::Core::IFrameworkView| - void Uninitialize() { - main_view_.Activated(nullptr); - main_view_ = nullptr; - } - - // |winrt::Windows::ApplicationModel::Core::IFrameworkView| - void Load(winrt::hstring const &) {} - - // |winrt::Windows::ApplicationModel::Core::IFrameworkView| - void Run() { - winrt::Windows::UI::Core::CoreWindow window = - winrt::Windows::UI::Core::CoreWindow::GetForCurrentThread(); - - winrt::Windows::UI::Core::CoreDispatcher dispatcher = window.Dispatcher(); - dispatcher.ProcessEvents( - winrt::Windows::UI::Core::CoreProcessEventsOption::ProcessUntilQuit); - } - - // |winrt::Windows::ApplicationModel::Core::IFrameworkView| - winrt::Windows::Foundation::IAsyncAction - SetWindow(winrt::Windows::UI::Core::CoreWindow const &window) { - - // Capture reference to window. - window_ = window; - - // Lay out the window's content within the region occupied by the - // CoreWindow. - auto appView = winrt::Windows::UI::ViewManagement::ApplicationView:: - GetForCurrentView(); - - appView.SetDesiredBoundsMode(winrt::Windows::UI::ViewManagement:: - ApplicationViewBoundsMode::UseCoreWindow); - - // Configure folder paths. - try { - winrt::Windows::Storage::StorageFolder folder = - winrt::Windows::ApplicationModel::Package::Current() - .InstalledLocation(); - - winrt::Windows::Storage::StorageFolder assets = - co_await folder.GetFolderAsync(L"Assets"); - winrt::Windows::Storage::StorageFolder data = - co_await assets.GetFolderAsync(L"data"); - winrt::Windows::Storage::StorageFolder flutter_assets = - co_await data.GetFolderAsync(L"flutter_assets"); - winrt::Windows::Storage::StorageFile icu_data = - co_await data.GetFileAsync(L"icudtl.dat"); - -#if NDEBUG - winrt::Windows::Storage::StorageFile aot_data = - co_await data.GetFileAsync(L"app.so"); -#endif - - std::wstring flutter_assets_path{flutter_assets.Path()}; - std::wstring icu_data_path{icu_data.Path()}; - std::wstring aot_data_path { -#if NDEBUG - aot_data.Path() -#endif - }; - - flutter::DartProject project(flutter_assets_path, icu_data_path, - aot_data_path); - - // Construct viewcontroller using the Window and project - flutter_view_controller_ = std::make_unique( - static_cast(winrt::get_abi(main_view_)), - static_cast(winrt::get_abi(launch_args_)), - project); - - // If plugins present, register them. - RegisterPlugins(flutter_view_controller_.get()->engine()); - } catch (winrt::hresult_error &err) { - winrt::Windows::UI::Popups::MessageDialog md = - winrt::Windows::UI::Popups::MessageDialog::MessageDialog( - L"There was a problem starting the engine: " + err.message()); - md.ShowAsync(); - } - } - - void OnActivated( - winrt::Windows::ApplicationModel::Core::CoreApplicationView const - &applicationView, - winrt::Windows::ApplicationModel::Activation::IActivatedEventArgs const - &args) { - // Activate the application window, making it visible and enabling it to - // receive events. - applicationView.CoreWindow().Activate(); - - // Capture launch args to later pass to Flutter. - launch_args_ = args; - } - - // Current CoreApplicationView. - winrt::Windows::ApplicationModel::Core::CoreApplicationView main_view_{ - nullptr}; - - // Current CoreWindow. - winrt::Windows::UI::Core::CoreWindow window_{nullptr}; - - // Current FlutterViewController. - std::unique_ptr flutter_view_controller_{ - nullptr}; - - // Launch args that were passed in on activation. - winrt::Windows::ApplicationModel::Activation::IActivatedEventArgs - launch_args_; -}; diff --git a/winuwp/runner_uwp/main.cpp b/winuwp/runner_uwp/main.cpp deleted file mode 100644 index 1ce54b1fc..000000000 --- a/winuwp/runner_uwp/main.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include - -#include "winrt/Windows.ApplicationModel.Core.h" -#include "winrt/Windows.Foundation.h" -#include -#include -#include - -#include - -#include "flutter_frameworkview.cpp" - -struct App - : winrt::implements< - App, winrt::Windows::ApplicationModel::Core::IFrameworkViewSource> { - App() { view_ = winrt::make_self(); } - - // |winrt::Windows::ApplicationModel::Core::IFrameworkViewSource| - winrt::Windows::ApplicationModel::Core::IFrameworkView CreateView() { - return view_.as(); - } - - winrt::com_ptr view_; -}; - -int __stdcall wWinMain(HINSTANCE, HINSTANCE, PWSTR, int) { - winrt::Windows::ApplicationModel::Core::CoreApplication::Run( - winrt::make()); -} diff --git a/winuwp/runner_uwp/resources.pri b/winuwp/runner_uwp/resources.pri deleted file mode 100644 index 7de03c9dc..000000000 Binary files a/winuwp/runner_uwp/resources.pri and /dev/null differ