diff --git a/debian/debian.yaml b/debian/debian.yaml new file mode 100644 index 0000000..1dd2d5b --- /dev/null +++ b/debian/debian.yaml @@ -0,0 +1,18 @@ +flutter_app: + command: pixes + arch: x64 + parent: /usr/local/lib + nonInteractive: true + execFieldCodes: u + +control: + Package: pixes + Version: 1.0.6 + Architecture: amd64 + Priority: optional + Depends: + Maintainer: nyne + Description: Unofficial pixiv application + +#options: +# exec_out_dir: debian/packages \ No newline at end of file diff --git a/debian/gui/pixes.desktop b/debian/gui/pixes.desktop new file mode 100644 index 0000000..bd0f2bc --- /dev/null +++ b/debian/gui/pixes.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0.6 +Name=Pixes +GenericName=Pixes +Comment=Unofficial pixiv application +Terminal=false +Type=Application +Categories=Utility +Keywords=Flutter;share;images; +MimeType=x-scheme-handler/pixiv; \ No newline at end of file diff --git a/debian/gui/pixes.png b/debian/gui/pixes.png new file mode 100644 index 0000000..13de727 Binary files /dev/null and b/debian/gui/pixes.png differ diff --git a/lib/foundation/log.dart b/lib/foundation/log.dart index c627552..d8d580a 100644 --- a/lib/foundation/log.dart +++ b/lib/foundation/log.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/foundation.dart'; import 'package:pixes/utils/ext.dart'; @@ -26,6 +28,9 @@ class Log { static bool ignoreLimitation = false; + /// only for debug + static const String? logFile = null; + static void printWarning(String text) { print('\x1B[33m$text\x1B[0m'); } @@ -57,6 +62,9 @@ class Log { } _logs.add(newLog); + if(logFile != null) { + File(logFile!).writeAsString(newLog.toString(), mode: FileMode.append); + } if (_logs.length > maxLogNumber) { var res = _logs.remove( _logs.firstWhereOrNull((element) => element.level == LogLevel.info)); diff --git a/lib/main.dart b/lib/main.dart index 76f1d89..afb50b9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,13 +36,17 @@ void main() async { await flutter_acrylic.Window.initialize(); if (App.isWindows) { await flutter_acrylic.Window.hideWindowControls(); - } + } await WindowManager.instance.ensureInitialized(); windowManager.waitUntilReadyToShow().then((_) async { await windowManager.setTitleBarStyle( TitleBarStyle.hidden, windowButtonVisibility: false, ); + if(App.isLinux) { + // https://github.com/leanflutter/window_manager/issues/460 + return; + } await windowManager.setMinimumSize(const Size(500, 600)); var placement = await WindowPlacement.loadFromFile(); await placement.applyToWindow(); @@ -51,6 +55,7 @@ void main() async { }); } Loop.start(); + Log.info("APP", "Application started"); runApp(const MyApp()); } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e6d5fc3..43c4347 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,14 +6,25 @@ #include "generated_plugin_registrant.h" +#include +#include +#include #include #include #include -#include #include #include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) dynamic_color_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin"); + dynamic_color_plugin_register_with_registrar(dynamic_color_registrar); + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_acrylic_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterAcrylicPlugin"); + flutter_acrylic_plugin_register_with_registrar(flutter_acrylic_registrar); g_autoptr(FlPluginRegistrar) gtk_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin"); gtk_plugin_register_with_registrar(gtk_registrar); @@ -23,9 +34,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin"); sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar); - g_autoptr(FlPluginRegistrar) system_theme_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "SystemThemePlugin"); - system_theme_plugin_register_with_registrar(system_theme_registrar); 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_plugins.cmake b/linux/flutter/generated_plugins.cmake index 0c95e46..c36e373 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,10 +3,12 @@ # list(APPEND FLUTTER_PLUGIN_LIST + dynamic_color + file_selector_linux + flutter_acrylic gtk screen_retriever sqlite3_flutter_libs - system_theme url_launcher_linux window_manager ) diff --git a/linux/my_application.cc b/linux/my_application.cc index d397561..c668ead 100644 --- a/linux/my_application.cc +++ b/linux/my_application.cc @@ -55,7 +55,7 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_realize(GTK_WIDGET(window)); + 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); diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 771a1f8..66f83cb 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,19 +6,27 @@ import FlutterMacOS import Foundation import app_links +import device_info_plus +import dynamic_color +import file_selector_macos +import flutter_acrylic import path_provider_foundation import screen_retriever +import share_plus import sqlite3_flutter_libs -import system_theme import url_launcher_macos import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FlutterAcrylicPlugin.register(with: registry.registrar(forPlugin: "FlutterAcrylicPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin")) - SystemThemePlugin.register(with: registry.registrar(forPlugin: "SystemThemePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 3010146..f139e50 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -218,10 +218,10 @@ packages: dependency: "direct main" description: name: flutter_acrylic - sha256: a9a1fdf91ff1fb47858fd82507f57e255a132a5d355056694fdb9fd303633b18 + sha256: "646200d98e8dd2bd4ab931d4ba4f6b4cb899475d6401414017ba5d71b0fac42b" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.0.0+2" flutter_file_dialog: dependency: "direct main" description: @@ -285,6 +285,15 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + image_gallery_saver: + dependency: "direct main" + description: + path: "." + ref: master + resolved-ref: "3f8c4d2cc41002d3ffdb770cab3b62583326ce01" + url: "https://github.com/wgh136/image_gallery_saver" + source: git + version: "2.0.0" intl: dependency: "direct main" description: @@ -325,14 +334,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" - macos_window_utils: - dependency: transitive - description: - name: macos_window_utils - sha256: "230be594d26f6dee92c5a1544f4242d25138a5bfb9f185b27f14de3949ef0be8" - url: "https://pub.dev" - source: hosted - version: "1.5.0" matcher: dependency: transitive description: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index da4bd0b..9c64bd7 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,21 +7,30 @@ #include "generated_plugin_registrant.h" #include +#include +#include +#include #include +#include #include -#include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { AppLinksPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("AppLinksPluginCApi")); + DynamicColorPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); + FlutterAcrylicPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterAcrylicPlugin")); ScreenRetrieverPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); + SharePlusWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); Sqlite3FlutterLibsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin")); - SystemThemePluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("SystemThemePlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); WindowManagerPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d071d54..8d13130 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,9 +4,12 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links + dynamic_color + file_selector_windows + flutter_acrylic screen_retriever + share_plus sqlite3_flutter_libs - system_theme url_launcher_windows window_manager )