add quit button to contextual tab bar
This commit is contained in:
+1
@@ -42,4 +42,5 @@ enum ToolbarButtonId {
|
|||||||
pageDown,
|
pageDown,
|
||||||
font,
|
font,
|
||||||
extensionShortcut,
|
extensionShortcut,
|
||||||
|
quit,
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -158,6 +158,12 @@ const extensionShortcutToolbarButtonSpec = ToolbarButtonSpec(
|
|||||||
canBeFallbackTarget: false,
|
canBeFallbackTarget: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const quitToolbarButtonSpec = ToolbarButtonSpec(
|
||||||
|
id: ToolbarButtonId.quit,
|
||||||
|
defaultVisible: false,
|
||||||
|
canBeFallbackTarget: false,
|
||||||
|
);
|
||||||
|
|
||||||
const toolbarButtonSpecs = [
|
const toolbarButtonSpecs = [
|
||||||
backToolbarButtonSpec,
|
backToolbarButtonSpec,
|
||||||
forwardToolbarButtonSpec,
|
forwardToolbarButtonSpec,
|
||||||
@@ -182,6 +188,7 @@ const toolbarButtonSpecs = [
|
|||||||
pageDownToolbarButtonSpec,
|
pageDownToolbarButtonSpec,
|
||||||
fontToolbarButtonSpec,
|
fontToolbarButtonSpec,
|
||||||
extensionShortcutToolbarButtonSpec,
|
extensionShortcutToolbarButtonSpec,
|
||||||
|
quitToolbarButtonSpec,
|
||||||
];
|
];
|
||||||
|
|
||||||
final Map<String, ToolbarButtonSpec> toolbarButtonSpecsById = {
|
final Map<String, ToolbarButtonSpec> toolbarButtonSpecsById = {
|
||||||
|
|||||||
+26
@@ -47,8 +47,10 @@ import 'package:weblibre/features/geckoview/features/readerview/presentation/con
|
|||||||
import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_mode.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_mode.dart';
|
||||||
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
|
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
|
||||||
import 'package:weblibre/features/user/data/models/engine_settings.dart';
|
import 'package:weblibre/features/user/data/models/engine_settings.dart';
|
||||||
|
import 'package:weblibre/features/user/domain/presentation/dialogs/quit_browser_dialog.dart';
|
||||||
import 'package:weblibre/features/user/domain/repositories/engine_settings.dart';
|
import 'package:weblibre/features/user/domain/repositories/engine_settings.dart';
|
||||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||||
|
import 'package:weblibre/utils/exit_app.dart';
|
||||||
import 'package:weblibre/utils/move_to_background.dart';
|
import 'package:weblibre/utils/move_to_background.dart';
|
||||||
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
||||||
|
|
||||||
@@ -477,6 +479,30 @@ final List<ToolbarButtonDefinition> toolbarButtonRegistry = [
|
|||||||
return const _ExtensionShortcutToolbarButton();
|
return const _ExtensionShortcutToolbarButton();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
ToolbarButtonDefinition(
|
||||||
|
spec: quitToolbarButtonSpec,
|
||||||
|
label: 'Quit',
|
||||||
|
icon: MdiIcons.power,
|
||||||
|
longPressActions: ['Quit without confirmation'],
|
||||||
|
builder: (scope, context, ref) {
|
||||||
|
return IconButton(
|
||||||
|
onPressed: scope.isPreview
|
||||||
|
? () {}
|
||||||
|
: () async {
|
||||||
|
final result = await showQuitBrowserDialog(context);
|
||||||
|
if (result == true) {
|
||||||
|
await exitApp(ref.container);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLongPress: scope.isPreview
|
||||||
|
? null
|
||||||
|
: () async {
|
||||||
|
await exitApp(ref.container);
|
||||||
|
},
|
||||||
|
icon: const Icon(MdiIcons.power),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
final Map<String, ToolbarButtonDefinition> toolbarButtonRegistryById = {
|
final Map<String, ToolbarButtonDefinition> toolbarButtonRegistryById = {
|
||||||
|
|||||||
Reference in New Issue
Block a user