extract string + code refractor
This commit is contained in:
@@ -1808,5 +1808,24 @@
|
||||
"automaticallyAnalyzeAndSplitGrouping": "We will automatically analyze the grouping to determine if there are multiple people present, and separate them out again. This may take a few seconds.",
|
||||
"layout": "Layout",
|
||||
"day": "Day",
|
||||
"peopleAutoAddDesc": "Select the people you want to automatically add to the album"
|
||||
"peopleAutoAddDesc": "Select the people you want to automatically add to the album",
|
||||
"undo": "Undo",
|
||||
"redo": "Redo",
|
||||
"filter": "Filter",
|
||||
"adjust": "Adjust",
|
||||
"draw": "Draw",
|
||||
"sticker": "Sticker",
|
||||
"brushColor": "Brush Color",
|
||||
"font": "Font",
|
||||
"background": "Background",
|
||||
"align": "Align",
|
||||
"addedToAlbums": "{count, plural, =1{Added successfully to 1 album} other{Added successfully to {count} albums}}",
|
||||
"@addedToAlbums": {
|
||||
"description": "Message shown when items are added to albums",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -310,9 +310,7 @@ class _CollectionActionSheetState extends State<CollectionActionSheet> {
|
||||
if (result) {
|
||||
showShortToast(
|
||||
context,
|
||||
"Added successfully to " +
|
||||
_selectedCollections.length.toString() +
|
||||
" albums",
|
||||
S.of(context).addedToAlbums(_selectedCollections.length),
|
||||
);
|
||||
widget.selectedFiles?.clearAll();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_svg/svg.dart";
|
||||
import "package:photos/ente_theme_data.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:pro_image_editor/models/editor_configs/pro_image_editor_configs.dart";
|
||||
|
||||
class ImageEditorAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
@@ -43,7 +44,7 @@ class ImageEditorAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
enableUndo ? close() : Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(
|
||||
'Cancel',
|
||||
S.of(context).cancel,
|
||||
style: getEnteTextTheme(context).body,
|
||||
),
|
||||
),
|
||||
@@ -52,7 +53,7 @@ class ImageEditorAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
IconButton(
|
||||
tooltip: 'Undo',
|
||||
tooltip: S.of(context).undo,
|
||||
onPressed: () {
|
||||
undo != null ? undo!() : null;
|
||||
},
|
||||
@@ -66,7 +67,7 @@ class ImageEditorAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
IconButton(
|
||||
tooltip: 'Redo',
|
||||
tooltip: S.of(context).redo,
|
||||
onPressed: () {
|
||||
redo != null ? redo!() : null;
|
||||
},
|
||||
@@ -88,7 +89,7 @@ class ImageEditorAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
key: ValueKey(isMainEditor ? 'save_copy' : 'done'),
|
||||
onPressed: done,
|
||||
child: Text(
|
||||
isMainEditor ? 'Save Copy' : 'Done',
|
||||
isMainEditor ? S.of(context).saveCopy : S.of(context).done,
|
||||
style: getEnteTextTheme(context).body.copyWith(
|
||||
color: isMainEditor
|
||||
? (enableUndo
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_svg/svg.dart";
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/circular_icon_button.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_configs_mixin.dart";
|
||||
@@ -113,7 +114,7 @@ class _ImageEditorCropRotateBarState extends State<ImageEditorCropRotateBar>
|
||||
children: [
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-crop-rotate.svg",
|
||||
label: "Rotate",
|
||||
label: S.of(context).rotate,
|
||||
onTap: () {
|
||||
widget.editor.rotate();
|
||||
},
|
||||
@@ -121,7 +122,7 @@ class _ImageEditorCropRotateBarState extends State<ImageEditorCropRotateBar>
|
||||
const SizedBox(width: 6),
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-flip.svg",
|
||||
label: "Flip",
|
||||
label: S.of(context).flip,
|
||||
onTap: () {
|
||||
widget.editor.flip();
|
||||
},
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/circular_icon_button.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_configs_mixin.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_constants.dart";
|
||||
@@ -90,7 +91,7 @@ class ImageEditorMainBottomBarState extends State<ImageEditorMainBottomBar>
|
||||
children: <Widget>[
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-crop.svg",
|
||||
label: "Crop",
|
||||
label: S.of(context).crop,
|
||||
onTap: () {
|
||||
widget.editor.openCropRotateEditor();
|
||||
},
|
||||
@@ -98,21 +99,21 @@ class ImageEditorMainBottomBarState extends State<ImageEditorMainBottomBar>
|
||||
CircularIconButton(
|
||||
svgPath:
|
||||
"assets/image-editor/image-editor-filter.svg",
|
||||
label: "Filter",
|
||||
label: S.of(context).filter,
|
||||
onTap: () {
|
||||
widget.editor.openFilterEditor();
|
||||
},
|
||||
),
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-tune.svg",
|
||||
label: "Adjust",
|
||||
label: S.of(context).adjust,
|
||||
onTap: () {
|
||||
widget.editor.openTuneEditor();
|
||||
},
|
||||
),
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-paint.svg",
|
||||
label: "Draw",
|
||||
label: S.of(context).draw,
|
||||
onTap: () {
|
||||
widget.editor.openPaintingEditor();
|
||||
},
|
||||
@@ -120,7 +121,7 @@ class ImageEditorMainBottomBarState extends State<ImageEditorMainBottomBar>
|
||||
CircularIconButton(
|
||||
svgPath:
|
||||
"assets/image-editor/image-editor-sticker.svg",
|
||||
label: "Sticker",
|
||||
label: S.of(context).sticker,
|
||||
onTap: () {
|
||||
widget.editor.openEmojiEditor();
|
||||
},
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_color_picker.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_configs_mixin.dart";
|
||||
@@ -63,7 +64,7 @@ class _ImageEditorPaintBarState extends State<ImageEditorPaintBar>
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"Brush Color",
|
||||
S.of(context).brushColor,
|
||||
style: getEnteTextTheme(context).body,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_svg/svg.dart";
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/circular_icon_button.dart";
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_color_picker.dart";
|
||||
@@ -75,7 +76,7 @@ class _ImageEditorTextBarState extends State<ImageEditorTextBar>
|
||||
children: [
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-text-color.svg",
|
||||
label: "Color",
|
||||
label: S.of(context).color,
|
||||
isSelected: selectedActionIndex == 0,
|
||||
onTap: () {
|
||||
_selectAction(0);
|
||||
@@ -83,7 +84,7 @@ class _ImageEditorTextBarState extends State<ImageEditorTextBar>
|
||||
),
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-text-font.svg",
|
||||
label: "Font",
|
||||
label: S.of(context).font,
|
||||
isSelected: selectedActionIndex == 1,
|
||||
onTap: () {
|
||||
_selectAction(1);
|
||||
@@ -91,7 +92,7 @@ class _ImageEditorTextBarState extends State<ImageEditorTextBar>
|
||||
),
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-text-background.svg",
|
||||
label: "Background",
|
||||
label: S.of(context).background,
|
||||
isSelected: selectedActionIndex == 2,
|
||||
onTap: () {
|
||||
setState(() {
|
||||
@@ -101,7 +102,7 @@ class _ImageEditorTextBarState extends State<ImageEditorTextBar>
|
||||
),
|
||||
CircularIconButton(
|
||||
svgPath: "assets/image-editor/image-editor-text-align-left.svg",
|
||||
label: "Align",
|
||||
label: S.of(context).align,
|
||||
isSelected: selectedActionIndex == 3,
|
||||
onTap: () {
|
||||
setState(() {
|
||||
|
||||
@@ -20,7 +20,6 @@ import "package:photos/states/detail_page_state.dart";
|
||||
import "package:photos/ui/common/fast_scroll_physics.dart";
|
||||
import 'package:photos/ui/notification/toast.dart';
|
||||
import "package:photos/ui/tools/editor/image_editor/image_editor_page_new.dart";
|
||||
import 'package:photos/ui/tools/editor/image_editor_page.dart';
|
||||
import "package:photos/ui/tools/editor/video_editor_page.dart";
|
||||
import "package:photos/ui/viewer/file/file_app_bar.dart";
|
||||
import "package:photos/ui/viewer/file/file_bottom_bar.dart";
|
||||
@@ -176,7 +175,7 @@ class _DetailPageState extends State<DetailPage> {
|
||||
builder: (BuildContext context, int selectedIndex, _) {
|
||||
return FileBottomBar(
|
||||
_files![selectedIndex],
|
||||
_onNewImageEditor,
|
||||
_onEditFileRequested,
|
||||
widget.config.mode == DetailPageMode.minimalistic &&
|
||||
!isGuestView,
|
||||
onFileRemoved: _onFileRemoved,
|
||||
@@ -358,7 +357,7 @@ class _DetailPageState extends State<DetailPage> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onNewImageEditor(EnteFile file) async {
|
||||
Future<void> _onEditFileRequested(EnteFile file) async {
|
||||
if (file.uploadedFileID != null &&
|
||||
file.ownerID != Configuration.instance.getUserID()) {
|
||||
_logger.severe(
|
||||
@@ -420,67 +419,6 @@ class _DetailPageState extends State<DetailPage> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onEditFileRequested(EnteFile file) async {
|
||||
if (file.uploadedFileID != null &&
|
||||
file.ownerID != Configuration.instance.getUserID()) {
|
||||
_logger.severe(
|
||||
"Attempt to edit unowned file",
|
||||
UnauthorizedEditError(),
|
||||
StackTrace.current,
|
||||
);
|
||||
// ignore: unawaited_futures
|
||||
showErrorDialog(
|
||||
context,
|
||||
S.of(context).sorry,
|
||||
S.of(context).weDontSupportEditingPhotosAndAlbumsThatYouDont,
|
||||
);
|
||||
return;
|
||||
}
|
||||
final dialog = createProgressDialog(context, S.of(context).pleaseWait);
|
||||
await dialog.show();
|
||||
try {
|
||||
final ioFile = await getFile(file);
|
||||
if (ioFile == null) {
|
||||
showShortToast(context, S.of(context).failedToFetchOriginalForEdit);
|
||||
await dialog.hide();
|
||||
return;
|
||||
}
|
||||
if (file.fileType == FileType.video) {
|
||||
await dialog.hide();
|
||||
replacePage(
|
||||
context,
|
||||
VideoEditorPage(
|
||||
file: file,
|
||||
ioFile: ioFile,
|
||||
detailPageConfig: widget.config.copyWith(
|
||||
files: _files,
|
||||
selectedIndex: _selectedIndexNotifier.value,
|
||||
),
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
final imageProvider =
|
||||
ExtendedFileImageProvider(ioFile, cacheRawData: true);
|
||||
await precacheImage(imageProvider, context);
|
||||
await dialog.hide();
|
||||
replacePage(
|
||||
context,
|
||||
ImageEditorPage(
|
||||
imageProvider,
|
||||
file,
|
||||
widget.config.copyWith(
|
||||
files: _files,
|
||||
selectedIndex: _selectedIndexNotifier.value,
|
||||
),
|
||||
),
|
||||
);
|
||||
} catch (e) {
|
||||
await dialog.hide();
|
||||
_logger.warning("Failed to initiate edit", e);
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> _requestAuthentication() async {
|
||||
return await LocalAuthenticationService.instance.requestLocalAuthentication(
|
||||
context,
|
||||
|
||||
Reference in New Issue
Block a user