21 changed files with 320 additions and 67 deletions
			
			
		@ -1,12 +1,23 @@ | 
				
			|||||||
cmake_minimum_required(VERSION 3.10) | 
					cmake_minimum_required(VERSION 3.10) | 
				
			||||||
 | 
					
 | 
				
			||||||
set(PLUGIN_NAME xdga_directories) | 
					set(PROJECT_NAME path_provider_aurora) | 
				
			||||||
project(${PLUGIN_NAME} LANGUAGES CXX) | 
					set(PLUGIN_NAME  path_provider_aurora_platform_plugin) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					project(${PROJECT_NAME} LANGUAGES CXX) | 
				
			||||||
 | 
					
 | 
				
			||||||
set(CMAKE_CXX_STANDARD 17) | 
					set(CMAKE_CXX_STANDARD 17) | 
				
			||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | 
					set(CMAKE_CXX_STANDARD_REQUIRED ON) | 
				
			||||||
 | 
					
 | 
				
			||||||
set(CMAKE_CXX_FLAGS "-Wall -Wextra") | 
					set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-psabi") | 
				
			||||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3") | 
					set(CMAKE_CXX_FLAGS_RELEASE "-O3") | 
				
			||||||
 | 
					
 | 
				
			||||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../src ${CMAKE_CURRENT_BINARY_DIR}/shared) | 
					find_package(PkgConfig REQUIRED) | 
				
			||||||
 | 
					pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(${PLUGIN_NAME} SHARED path_provider_aurora_plugin.cpp) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) | 
				
			||||||
 | 
					target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::FlutterEmbedder) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_include_directories(${PLUGIN_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) | 
				
			||||||
 | 
					target_compile_definitions(${PLUGIN_NAME} PRIVATE PLUGIN_IMPL) | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					#ifndef FLUTTER_PLUGIN_PATH_PROVIDER_AURORA_PLUGIN_H | 
				
			||||||
 | 
					#define FLUTTER_PLUGIN_PATH_PROVIDER_AURORA_PLUGIN_H | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <flutter/plugin-interface.h> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef PLUGIN_IMPL | 
				
			||||||
 | 
					#define PLUGIN_EXPORT __attribute__((visibility("default"))) | 
				
			||||||
 | 
					#else | 
				
			||||||
 | 
					#define PLUGIN_EXPORT | 
				
			||||||
 | 
					#endif | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PLUGIN_EXPORT PathProviderAuroraPlugin final : public PluginInterface | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					public: | 
				
			||||||
 | 
					    void RegisterWithRegistrar(PluginRegistrar ®istrar) override; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private: | 
				
			||||||
 | 
					    void onMethodCall(const MethodCall &call); | 
				
			||||||
 | 
					    void onGetApplicationOrg(const MethodCall &call); | 
				
			||||||
 | 
					    void onGetApplicationName(const MethodCall &call); | 
				
			||||||
 | 
					    void unimplemented(const MethodCall &call); | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* FLUTTER_PLUGIN_PATH_PROVIDER_AURORA_PLUGIN_H */ | 
				
			||||||
@ -0,0 +1,42 @@ | 
				
			|||||||
 | 
					#include <path_provider_aurora/path_provider_aurora_plugin.h> | 
				
			||||||
 | 
					#include <flutter/method-channel.h> | 
				
			||||||
 | 
					#include <flutter/application.h> | 
				
			||||||
 | 
					#include <sys/utsname.h> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PathProviderAuroraPlugin::RegisterWithRegistrar(PluginRegistrar ®istrar) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    registrar.RegisterMethodChannel("path_provider_aurora", | 
				
			||||||
 | 
					                                    MethodCodecType::Standard, | 
				
			||||||
 | 
					                                    [this](const MethodCall &call) { this->onMethodCall(call); }); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PathProviderAuroraPlugin::onMethodCall(const MethodCall &call) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    const auto &method = call.GetMethod(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (method == "getApplicationOrg") { | 
				
			||||||
 | 
					        onGetApplicationOrg(call); | 
				
			||||||
 | 
					        return; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    else if (method == "getApplicationName") { | 
				
			||||||
 | 
					        onGetApplicationName(call); | 
				
			||||||
 | 
					        return; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    unimplemented(call); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PathProviderAuroraPlugin::onGetApplicationOrg(const MethodCall &call) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    call.SendSuccessResponse(Application::GetID().orgname); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PathProviderAuroraPlugin::onGetApplicationName(const MethodCall &call) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    call.SendSuccessResponse(Application::GetID().appname); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PathProviderAuroraPlugin::unimplemented(const MethodCall &call) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    call.SendSuccessResponse(nullptr); | 
				
			||||||
 | 
					} | 
				
			||||||
| 
		 Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 157 KiB  | 
@ -1,23 +1,85 @@ | 
				
			|||||||
name: path_provider_aurora_example | 
					name: path_provider_aurora_example | 
				
			||||||
description: Demonstrates how to use the path_provider_aurora plugin. | 
					description: Demonstrates how to use the path_provider_aurora plugin. | 
				
			||||||
 | 
					
 | 
				
			||||||
publish_to: 'none' | 
					# 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 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment: | 
					environment: | 
				
			||||||
  sdk: '>=2.18.6 <3.0.0' | 
					  sdk: '>=2.18.6 <3.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: | 
					dependencies: | 
				
			||||||
  flutter: | 
					  flutter: | 
				
			||||||
    sdk: flutter | 
					    sdk: flutter | 
				
			||||||
 | 
					
 | 
				
			||||||
  path_provider: ^2.0.7 | 
					  path_provider: ^2.0.7 | 
				
			||||||
  path_provider_aurora: | 
					  path_provider_aurora: | 
				
			||||||
 | 
					    # When depending on this package from a real application you should use: | 
				
			||||||
 | 
					    #   path_provider_aurora: ^x.y.z | 
				
			||||||
 | 
					    # See https://dart.dev/tools/pub/dependencies#version-constraints | 
				
			||||||
 | 
					    # The example app is bundled with the plugin so we use a path dependency on | 
				
			||||||
 | 
					    # the parent directory to use the current plugin's version. | 
				
			||||||
    path: ../ | 
					    path: ../ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # The following adds the Cupertino Icons font to your application. | 
				
			||||||
 | 
					  # Use with the CupertinoIcons class for iOS style icons. | 
				
			||||||
  cupertino_icons: ^1.0.2 | 
					  cupertino_icons: ^1.0.2 | 
				
			||||||
 | 
					
 | 
				
			||||||
dev_dependencies: | 
					dev_dependencies: | 
				
			||||||
  flutter_test: | 
					  flutter_test: | 
				
			||||||
    sdk: flutter | 
					    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: ^2.0.0 | 
					  flutter_lints: ^2.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: | 
					flutter: | 
				
			||||||
  uses-material-design: true | 
					
 | 
				
			||||||
 | 
					  # 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 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					import 'package:flutter/foundation.dart'; | 
				
			||||||
 | 
					import 'package:flutter/services.dart'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'path_provider_aurora_platform_interface.dart'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// An implementation of [PathProviderAuroraPlatform] that uses method channels. | 
				
			||||||
 | 
					class MethodChannelPathProviderAurora extends PathProviderAuroraPlatform { | 
				
			||||||
 | 
					  /// The method channel used to interact with the native platform. | 
				
			||||||
 | 
					  @visibleForTesting | 
				
			||||||
 | 
					  final methodChannel = const MethodChannel('path_provider_aurora'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override | 
				
			||||||
 | 
					  Future<String?> getApplicationOrg() async { | 
				
			||||||
 | 
					    return await methodChannel.invokeMethod<String>('getApplicationOrg'); | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override | 
				
			||||||
 | 
					  Future<String?> getApplicationName() async { | 
				
			||||||
 | 
					    return await methodChannel.invokeMethod<String>('getApplicationName'); | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,33 @@ | 
				
			|||||||
 | 
					import 'package:plugin_platform_interface/plugin_platform_interface.dart'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'path_provider_aurora_method_channel.dart'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					abstract class PathProviderAuroraPlatform extends PlatformInterface { | 
				
			||||||
 | 
					  /// Constructs a PathProviderAuroraPlatform. | 
				
			||||||
 | 
					  PathProviderAuroraPlatform() : super(token: _token); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static final Object _token = Object(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static PathProviderAuroraPlatform _instance = MethodChannelPathProviderAurora(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// The default instance of [PathProviderAuroraPlatform] to use. | 
				
			||||||
 | 
					  /// | 
				
			||||||
 | 
					  /// Defaults to [MethodChannelPathProviderAurora]. | 
				
			||||||
 | 
					  static PathProviderAuroraPlatform get instance => _instance; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Platform-specific implementations should set this with their own | 
				
			||||||
 | 
					  /// platform-specific class that extends [PathProviderAuroraPlatform] when | 
				
			||||||
 | 
					  /// they register themselves. | 
				
			||||||
 | 
					  static set instance(PathProviderAuroraPlatform instance) { | 
				
			||||||
 | 
					    PlatformInterface.verifyToken(instance, _token); | 
				
			||||||
 | 
					    _instance = instance; | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<String?> getApplicationOrg() { | 
				
			||||||
 | 
					    throw UnimplementedError('getApplicationOrg() has not been implemented.'); | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<String?> getApplicationName() { | 
				
			||||||
 | 
					    throw UnimplementedError('getApplicationName() has not been implemented.'); | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,24 +1,34 @@ | 
				
			|||||||
// import 'package:flutter/services.dart'; | 
					import 'package:flutter/services.dart'; | 
				
			||||||
// import 'package:flutter_test/flutter_test.dart'; | 
					import 'package:flutter_test/flutter_test.dart'; | 
				
			||||||
// import 'package:path_provider_aurora/path_provider_aurora_method_channel.dart'; | 
					import 'package:path_provider_aurora/path_provider_aurora_method_channel.dart'; | 
				
			||||||
// | 
					
 | 
				
			||||||
// void main() { | 
					void main() { | 
				
			||||||
//   MethodChannelPathProviderAurora platform = MethodChannelPathProviderAurora(); | 
					  MethodChannelPathProviderAurora platform = MethodChannelPathProviderAurora(); | 
				
			||||||
//   const MethodChannel channel = MethodChannel('path_provider_aurora'); | 
					  const MethodChannel channel = MethodChannel('path_provider_aurora'); | 
				
			||||||
// | 
					
 | 
				
			||||||
//   TestWidgetsFlutterBinding.ensureInitialized(); | 
					  TestWidgetsFlutterBinding.ensureInitialized(); | 
				
			||||||
// | 
					
 | 
				
			||||||
//   setUp(() { | 
					  setUp(() { | 
				
			||||||
//     channel.setMockMethodCallHandler((MethodCall methodCall) async { | 
					    channel.setMockMethodCallHandler((MethodCall methodCall) async { | 
				
			||||||
//       return '42'; | 
					      switch (methodCall.method) { | 
				
			||||||
//     }); | 
					        case 'getApplicationOrg': | 
				
			||||||
//   }); | 
					          return 'com.example'; | 
				
			||||||
// | 
					        case 'getApplicationName': | 
				
			||||||
//   tearDown(() { | 
					          return 'path_provider_aurora'; | 
				
			||||||
//     channel.setMockMethodCallHandler(null); | 
					      } | 
				
			||||||
//   }); | 
					      return ''; | 
				
			||||||
// | 
					    }); | 
				
			||||||
//   test('getPlatformVersion', () async { | 
					  }); | 
				
			||||||
//     expect(await platform.getPlatformVersion(), '42'); | 
					
 | 
				
			||||||
//   }); | 
					  tearDown(() { | 
				
			||||||
// } | 
					    channel.setMockMethodCallHandler(null); | 
				
			||||||
 | 
					  }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test('onGetApplicationOrg', () async { | 
				
			||||||
 | 
					    expect(await platform.getApplicationOrg(), 'com.example'); | 
				
			||||||
 | 
					  }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test('onGetApplicationName', () async { | 
				
			||||||
 | 
					    expect(await platform.getApplicationName(), 'path_provider_aurora'); | 
				
			||||||
 | 
					  }); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
				
			|||||||
@ -1,21 +0,0 @@ | 
				
			|||||||
// import 'package:flutter_test/flutter_test.dart'; | 
					 | 
				
			||||||
// import 'package:path_provider_aurora/path_provider_aurora.dart'; | 
					 | 
				
			||||||
// import 'package:path_provider_aurora/path_provider_aurora_platform_interface.dart'; | 
					 | 
				
			||||||
// import 'package:path_provider_aurora/path_provider_aurora_method_channel.dart'; | 
					 | 
				
			||||||
// import 'package:plugin_platform_interface/plugin_platform_interface.dart'; | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// class MockPathProviderAuroraPlatform | 
					 | 
				
			||||||
//     with MockPlatformInterfaceMixin | 
					 | 
				
			||||||
//     implements PathProviderAuroraPlatform { | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
//   @override | 
					 | 
				
			||||||
//   Future<String?> getPlatformVersion() => Future.value('42'); | 
					 | 
				
			||||||
// } | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// void main() { | 
					 | 
				
			||||||
//   final PathProviderAuroraPlatform initialPlatform = PathProviderAuroraPlatform.instance; | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
//   test('$MethodChannelPathProviderAurora is the default instance', () { | 
					 | 
				
			||||||
//     expect(initialPlatform, isInstanceOf<MethodChannelPathProviderAurora>()); | 
					 | 
				
			||||||
//   }); | 
					 | 
				
			||||||
// } | 
					 | 
				
			||||||
@ -1,15 +1,21 @@ | 
				
			|||||||
cmake_minimum_required(VERSION 3.5) | 
					cmake_minimum_required(VERSION 3.10) | 
				
			||||||
 | 
					
 | 
				
			||||||
project(xdga_directories VERSION 0.0.1) | 
					project(xdga_directories VERSION 0.0.1) | 
				
			||||||
 | 
					
 | 
				
			||||||
find_package(Qt5 COMPONENTS Core REQUIRED) | 
					find_package(PkgConfig REQUIRED) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pkg_check_modules(Qt5Core REQUIRED IMPORTED_TARGET Qt5Core) | 
				
			||||||
 | 
					
 | 
				
			||||||
add_library(xdga_directories SHARED xdga_directories.cpp) | 
					add_library(xdga_directories SHARED | 
				
			||||||
 | 
					    "xdga_directories.cpp" | 
				
			||||||
 | 
					) | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(xdga_directories Qt5::Core) | 
					target_link_libraries(xdga_directories PRIVATE PkgConfig::Qt5Core) | 
				
			||||||
 | 
					
 | 
				
			||||||
set_target_properties(xdga_directories PROPERTIES | 
					set_target_properties(xdga_directories PROPERTIES | 
				
			||||||
    PUBLIC_HEADER xdga_directories.h | 
					    PUBLIC_HEADER "xdga_directories.h" | 
				
			||||||
    OUTPUT_NAME "xdga_directories" | 
					    OUTPUT_NAME "xdga_directories" | 
				
			||||||
    XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Hex_Identity_ID_Goes_Here" | 
					 | 
				
			||||||
) | 
					) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_compile_definitions(xdga_directories PUBLIC DART_SHARED_LIB) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
					Loading…
					
					
				
		Reference in new issue