From 317aa006e309fbb1c0d4ab84152b6bfe64d6cdfa Mon Sep 17 00:00:00 2001 From: debuggerx Date: Thu, 30 Dec 2021 21:13:48 +0800 Subject: [PATCH] feat: add upload button. --- app/lib/pages/gesture_editor.dart | 29 +++++++++++++++++++++++++++++ app/lib/utils/notificator.dart | 2 +- app/lib/widgets/dde_button.dart | 17 +++++++++++++++++ app/resources/langs/en.json | 18 +++++++++++++++--- app/resources/langs/zh-CN.json | 16 ++++++++++++++-- 5 files changed, 76 insertions(+), 6 deletions(-) diff --git a/app/lib/pages/gesture_editor.dart b/app/lib/pages/gesture_editor.dart index 537b42d..38c2f2d 100644 --- a/app/lib/pages/gesture_editor.dart +++ b/app/lib/pages/gesture_editor.dart @@ -1,6 +1,7 @@ import 'package:adaptive_scrollbar/adaptive_scrollbar.dart'; import 'package:dde_gesture_manager/constants/constants.dart'; import 'package:dde_gesture_manager/extensions.dart'; +import 'package:dde_gesture_manager/models/configs.provider.dart'; import 'package:dde_gesture_manager/models/content_layout.provider.dart'; import 'package:dde_gesture_manager/models/local_schemes_provider.dart'; import 'package:dde_gesture_manager/models/scheme.dart'; @@ -18,6 +19,7 @@ import 'package:dde_gesture_manager/widgets/table_cell_shortcut_listener.dart'; import 'package:dde_gesture_manager/widgets/table_cell_text_field.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_platform_alert/flutter_platform_alert.dart'; import 'package:uuid/uuid.dart'; const double _headingRowHeight = 56; @@ -292,6 +294,33 @@ class GestureEditor extends StatelessWidget { }, ), ), + Padding( + padding: const EdgeInsets.only(left: 10), + child: DButton.upload( + enabled: schemeProvider.uploaded == false, + onTap: () async { + if (context.read().accessToken.isNull) { + return Notificator.showAlert( + title: LocaleKeys.info_login_for_upload_title.tr(), + description: LocaleKeys.info_login_for_upload_description.tr(), + ).then((value) { + value.sout(); + if (value == CustomButton.positiveButton) { + context + .read() + .setProps(marketOrMeOpened: true, currentIsMarket: false); + } + }); + } + Notificator.showConfirm( + title: LocaleKeys.info_upload_and_share_title.tr(), + description: LocaleKeys.info_upload_and_share_description.tr(), + positiveButtonTitle: LocaleKeys.str_share.tr(), + negativeButtonTitle: LocaleKeys.str_cancel.tr(), + ); + }, + ), + ), ], ), Divider(), diff --git a/app/lib/utils/notificator.dart b/app/lib/utils/notificator.dart index 4872c46..f686dcc 100644 --- a/app/lib/utils/notificator.dart +++ b/app/lib/utils/notificator.dart @@ -15,7 +15,7 @@ class Notificator { return AlertImpl().showAlert( windowTitle: title, text: description, - positiveButtonTitle: positiveButtonTitle, + positiveButtonTitle: positiveButtonTitle ?? LocaleKeys.str_ok.tr(), ); } diff --git a/app/lib/widgets/dde_button.dart b/app/lib/widgets/dde_button.dart index 1b94fb9..7c726e7 100644 --- a/app/lib/widgets/dde_button.dart +++ b/app/lib/widgets/dde_button.dart @@ -124,6 +124,23 @@ class DButton extends StatefulWidget { message: LocaleKeys.operation_logout.tr(), )); + factory DButton.upload({ + Key? key, + required enabled, + GestureTapCallback? onTap, + height = defaultButtonHeight, + width = defaultButtonHeight, + }) => + DButton( + key: key, + width: width, + height: height, + onTap: enabled ? onTap : null, + child: Tooltip( + child: Opacity(opacity: enabled ? 1 : 0.4, child: const Icon(Icons.cloud_upload, size: 20)), + message: LocaleKeys.operation_upload.tr(), + )); + factory DButton.dropdown({ Key? key, width = 60.0, diff --git a/app/resources/langs/en.json b/app/resources/langs/en.json index bcd5583..f0eb2bf 100644 --- a/app/resources/langs/en.json +++ b/app/resources/langs/en.json @@ -66,19 +66,23 @@ } }, "operation": { - "add": "Add", + "add": "add", "delete": "delete", "duplicate": "duplicate", "apply": "apply", "paste": "paste", - "logout": "sign out" + "logout": "sign out", + "upload": "upload" }, "str": { "null": "Null", "new_scheme": "New gesture scheme", "copy": "copy", "yes": "Yes", - "no": "No" + "no": "No", + "ok": "OK", + "share": "Share", + "cancel": "Cancel" }, "built_in_commands": { "ShowWorkspace": "ShowWorkspace", @@ -126,6 +130,14 @@ "description_for_startup": "Click [{YES}] to view, click [{NO}] ignore this update", "title_already_latest": "Already the latest version ~", "description_for_manual": "Visit the official website to see more?" + }, + "login_for_upload": { + "title": "please login", + "description": "You need to login first to perform upload operations" + }, + "upload_and_share": { + "title": "Share the scheme at the same time?", + "description": "If you select [Share], other users can see this scheme and download it;\nIf you select [Cancel], you can still find this scheme in the [My Upload] list and share." } }, "me": { diff --git a/app/resources/langs/zh-CN.json b/app/resources/langs/zh-CN.json index 3832629..737f8c1 100644 --- a/app/resources/langs/zh-CN.json +++ b/app/resources/langs/zh-CN.json @@ -71,14 +71,18 @@ "duplicate": "复制", "apply": "应用", "paste": "粘贴", - "logout": "退出登录" + "logout": "退出登录", + "upload": "上传" }, "str": { "null": "无", "new_scheme": "新建手势方案", "copy": "副本", "yes": "是", - "no": "否" + "no": "否", + "ok": "好的", + "share": "分享", + "cancel": "放弃" }, "built_in_commands": { "ShowWorkspace": "显示工作区", @@ -126,6 +130,14 @@ "description_for_startup": "点击[{yes}]查看,点击[{no}]忽略本次更新", "title_already_latest": "已经是最新版本~", "description_for_manual": "是否前去官网查看?" + }, + "login_for_upload": { + "title": "请登录", + "description": "您需要先登录才能进行上传操作" + }, + "upload_and_share": { + "title": "是否同时分享到方案市场?", + "description": "如果选择[分享],其他用户可以看到本方案并下载使用;\n如果选择[放弃],您仍可以稍后在[我的上传]列表中找到本方案进行操作。" } }, "me": {