use own icons
This commit is contained in:
Binary file not shown.
+2
-1
@@ -27,6 +27,7 @@ import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
|
|||||||
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/domain/providers/selected_container.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/domain/providers/selected_container.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/presentation/widgets/container_chips.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/presentation/widgets/container_chips.dart';
|
||||||
|
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
|
||||||
import 'package:weblibre/utils/form_validators.dart';
|
import 'package:weblibre/utils/form_validators.dart';
|
||||||
|
|
||||||
class OpenSharedContent extends HookConsumerWidget {
|
class OpenSharedContent extends HookConsumerWidget {
|
||||||
@@ -109,7 +110,7 @@ class OpenSharedContent extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: const Text('Open Private Tab'),
|
title: const Text('Open Private Tab'),
|
||||||
leading: const Icon(MdiIcons.tabUnselected),
|
leading: const Icon(WebLibreIcons.privateTab),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
await openTab(true);
|
await openTab(true);
|
||||||
},
|
},
|
||||||
|
|||||||
+3
-2
@@ -52,6 +52,7 @@ import 'package:weblibre/features/user/data/models/general_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/presentation/hooks/cached_future.dart';
|
import 'package:weblibre/presentation/hooks/cached_future.dart';
|
||||||
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
||||||
|
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
|
||||||
import 'package:weblibre/presentation/widgets/selectable_chips.dart';
|
import 'package:weblibre/presentation/widgets/selectable_chips.dart';
|
||||||
import 'package:weblibre/presentation/widgets/url_icon.dart';
|
import 'package:weblibre/presentation/widgets/url_icon.dart';
|
||||||
|
|
||||||
@@ -364,7 +365,7 @@ class BrowserTabBar extends HookConsumerWidget {
|
|||||||
controller.open();
|
controller.open();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: const Icon(MdiIcons.dotsVertical),
|
child: const Icon(WebLibreIcons.tabOptions),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -449,7 +450,7 @@ class ContextualToolbar extends HookConsumerWidget {
|
|||||||
controller.open();
|
controller.open();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: const Icon(MdiIcons.dotsVertical),
|
child: const Icon(WebLibreIcons.tabOptions),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:weblibre/core/routing/routes.dart';
|
import 'package:weblibre/core/routing/routes.dart';
|
||||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||||
|
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
|
||||||
|
|
||||||
class TabCreationMenu extends HookConsumerWidget {
|
class TabCreationMenu extends HookConsumerWidget {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
@@ -58,7 +59,7 @@ class TabCreationMenu extends HookConsumerWidget {
|
|||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await const SearchRoute(tabType: TabType.private).push(context);
|
await const SearchRoute(tabType: TabType.private).push(context);
|
||||||
},
|
},
|
||||||
leadingIcon: const Icon(MdiIcons.tabUnselected),
|
leadingIcon: const Icon(WebLibreIcons.privateTab),
|
||||||
child: const Text('Add Private Tab'),
|
child: const Text('Add Private Tab'),
|
||||||
),
|
),
|
||||||
if (createChildTabsOption)
|
if (createChildTabsOption)
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart'
|
|||||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
|
||||||
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
||||||
|
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
|
||||||
import 'package:weblibre/presentation/widgets/website_feed_menu_button.dart';
|
import 'package:weblibre/presentation/widgets/website_feed_menu_button.dart';
|
||||||
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
||||||
|
|
||||||
@@ -237,7 +238,7 @@ class TabMenu extends HookConsumerWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
MenuItemButton(
|
MenuItemButton(
|
||||||
leadingIcon: const Icon(MdiIcons.tabUnselected),
|
leadingIcon: const Icon(WebLibreIcons.privateTab),
|
||||||
child: const Text('Private'),
|
child: const Text('Private'),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final tabState = ref.read(tabStateProvider(selectedTabId))!;
|
final tabState = ref.read(tabStateProvider(selectedTabId))!;
|
||||||
|
|||||||
+2
-1
@@ -46,6 +46,7 @@ import 'package:weblibre/features/geckoview/features/tabs/presentation/widgets/c
|
|||||||
import 'package:weblibre/features/tor/presentation/controllers/start_tor_proxy.dart';
|
import 'package:weblibre/features/tor/presentation/controllers/start_tor_proxy.dart';
|
||||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||||
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
import 'package:weblibre/presentation/hooks/menu_controller.dart';
|
||||||
|
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
|
||||||
import 'package:weblibre/presentation/widgets/speech_to_text_button.dart';
|
import 'package:weblibre/presentation/widgets/speech_to_text_button.dart';
|
||||||
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
||||||
|
|
||||||
@@ -539,7 +540,7 @@ class TabViewHeader extends HookConsumerWidget {
|
|||||||
tabsActionMenuController.open();
|
tabsActionMenuController.open();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
icon: const Icon(MdiIcons.dotsVertical),
|
icon: const Icon(WebLibreIcons.tabOptions),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import 'package:weblibre/features/geckoview/features/search/presentation/widgets
|
|||||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||||
import 'package:weblibre/presentation/hooks/on_listenable_change_selector.dart';
|
import 'package:weblibre/presentation/hooks/on_listenable_change_selector.dart';
|
||||||
import 'package:weblibre/presentation/hooks/sampled_value_notifier.dart';
|
import 'package:weblibre/presentation/hooks/sampled_value_notifier.dart';
|
||||||
|
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
|
||||||
import 'package:weblibre/utils/text_field_line_count.dart';
|
import 'package:weblibre/utils/text_field_line_count.dart';
|
||||||
import 'package:weblibre/utils/uri_parser.dart' as uri_parser;
|
import 'package:weblibre/utils/uri_parser.dart' as uri_parser;
|
||||||
|
|
||||||
@@ -280,7 +281,7 @@ class SearchScreen extends HookConsumerWidget {
|
|||||||
const ButtonSegment(
|
const ButtonSegment(
|
||||||
value: TabType.private,
|
value: TabType.private,
|
||||||
label: Text('Private'),
|
label: Text('Private'),
|
||||||
icon: Icon(MdiIcons.tabUnselected),
|
icon: Icon(WebLibreIcons.privateTab),
|
||||||
),
|
),
|
||||||
if (createChildTabsOption)
|
if (createChildTabsOption)
|
||||||
const ButtonSegment(
|
const ButtonSegment(
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import 'package:weblibre/features/settings/presentation/controllers/save_setting
|
|||||||
import 'package:weblibre/features/settings/presentation/widgets/sections.dart';
|
import 'package:weblibre/features/settings/presentation/widgets/sections.dart';
|
||||||
import 'package:weblibre/features/user/data/models/general_settings.dart';
|
import 'package:weblibre/features/user/data/models/general_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/presentation/icons/weblibre_icons.dart';
|
||||||
|
|
||||||
class TabsBehaviorSettingsScreen extends StatelessWidget {
|
class TabsBehaviorSettingsScreen extends StatelessWidget {
|
||||||
const TabsBehaviorSettingsScreen({super.key});
|
const TabsBehaviorSettingsScreen({super.key});
|
||||||
@@ -136,7 +137,7 @@ class _NewTabDefaultSection extends HookConsumerWidget {
|
|||||||
ButtonSegment(
|
ButtonSegment(
|
||||||
value: TabType.private,
|
value: TabType.private,
|
||||||
label: Text('Private'),
|
label: Text('Private'),
|
||||||
icon: Icon(MdiIcons.tabUnselected),
|
icon: Icon(WebLibreIcons.privateTab),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
selected: {defaultCreateTabType},
|
selected: {defaultCreateTabType},
|
||||||
@@ -202,7 +203,7 @@ class _ExternalLinkHandlingSection extends HookConsumerWidget {
|
|||||||
ButtonSegment(
|
ButtonSegment(
|
||||||
value: TabIntentOpenSetting.private,
|
value: TabIntentOpenSetting.private,
|
||||||
label: Text('Private'),
|
label: Text('Private'),
|
||||||
icon: Icon(MdiIcons.tabUnselected),
|
icon: Icon(WebLibreIcons.privateTab),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
selected: {tabIntentOpenSetting},
|
selected: {tabIntentOpenSetting},
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2024-2025 Fabian Freund.
|
||||||
|
*
|
||||||
|
* This file is part of WebLibre
|
||||||
|
* (see https://weblibre.eu).
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
enum WebLibreIcons implements IconData {
|
||||||
|
privateTab(0xEA01),
|
||||||
|
tabOptions(0xEA02);
|
||||||
|
|
||||||
|
const WebLibreIcons(this.codePoint);
|
||||||
|
|
||||||
|
@override
|
||||||
|
final int codePoint;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get fontFamily => 'WebLibre';
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<String>? get fontFamilyFallback => null;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String? get fontPackage => null;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get matchTextDirection => false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'WebLibreIcons.$name';
|
||||||
|
}
|
||||||
@@ -119,6 +119,9 @@ flutter:
|
|||||||
- family: TorIcons
|
- family: TorIcons
|
||||||
fonts:
|
fonts:
|
||||||
- asset: assets/fonts/tor-icons.ttf
|
- asset: assets/fonts/tor-icons.ttf
|
||||||
|
- family: WebLibre
|
||||||
|
fonts:
|
||||||
|
- asset: assets/fonts/WebLibre.ttf
|
||||||
|
|
||||||
flutter_launcher_icons:
|
flutter_launcher_icons:
|
||||||
android: "launcher_icon"
|
android: "launcher_icon"
|
||||||
|
|||||||
Reference in New Issue
Block a user