use own icons

This commit is contained in:
Fabian Freund
2026-02-02 06:12:31 +01:00
parent 42911adfe1
commit 7a6e8f8851
10 changed files with 64 additions and 9 deletions
Binary file not shown.
@@ -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/domain/providers/selected_container.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';
class OpenSharedContent extends HookConsumerWidget {
@@ -109,7 +110,7 @@ class OpenSharedContent extends HookConsumerWidget {
),
ListTile(
title: const Text('Open Private Tab'),
leading: const Icon(MdiIcons.tabUnselected),
leading: const Icon(WebLibreIcons.privateTab),
onTap: () async {
await openTab(true);
},
@@ -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/presentation/hooks/cached_future.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/url_icon.dart';
@@ -364,7 +365,7 @@ class BrowserTabBar extends HookConsumerWidget {
controller.open();
}
},
child: const Icon(MdiIcons.dotsVertical),
child: const Icon(WebLibreIcons.tabOptions),
);
},
),
@@ -449,7 +450,7 @@ class ContextualToolbar extends HookConsumerWidget {
controller.open();
}
},
child: const Icon(MdiIcons.dotsVertical),
child: const Icon(WebLibreIcons.tabOptions),
);
},
),
@@ -22,6 +22,7 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/core/routing/routes.dart';
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
import 'package:weblibre/presentation/icons/weblibre_icons.dart';
class TabCreationMenu extends HookConsumerWidget {
final Widget child;
@@ -58,7 +59,7 @@ class TabCreationMenu extends HookConsumerWidget {
onPressed: () async {
await const SearchRoute(tabType: TabType.private).push(context);
},
leadingIcon: const Icon(MdiIcons.tabUnselected),
leadingIcon: const Icon(WebLibreIcons.privateTab),
child: const Text('Add Private Tab'),
),
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/tab.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/utils/ui_helper.dart' as ui_helper;
@@ -237,7 +238,7 @@ class TabMenu extends HookConsumerWidget {
},
),
MenuItemButton(
leadingIcon: const Icon(MdiIcons.tabUnselected),
leadingIcon: const Icon(WebLibreIcons.privateTab),
child: const Text('Private'),
onPressed: () async {
final tabState = ref.read(tabStateProvider(selectedTabId))!;
@@ -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/user/domain/repositories/general_settings.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/utils/ui_helper.dart' as ui_helper;
@@ -539,7 +540,7 @@ class TabViewHeader extends HookConsumerWidget {
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/presentation/hooks/on_listenable_change_selector.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/uri_parser.dart' as uri_parser;
@@ -280,7 +281,7 @@ class SearchScreen extends HookConsumerWidget {
const ButtonSegment(
value: TabType.private,
label: Text('Private'),
icon: Icon(MdiIcons.tabUnselected),
icon: Icon(WebLibreIcons.privateTab),
),
if (createChildTabsOption)
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/user/data/models/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 {
const TabsBehaviorSettingsScreen({super.key});
@@ -136,7 +137,7 @@ class _NewTabDefaultSection extends HookConsumerWidget {
ButtonSegment(
value: TabType.private,
label: Text('Private'),
icon: Icon(MdiIcons.tabUnselected),
icon: Icon(WebLibreIcons.privateTab),
),
],
selected: {defaultCreateTabType},
@@ -202,7 +203,7 @@ class _ExternalLinkHandlingSection extends HookConsumerWidget {
ButtonSegment(
value: TabIntentOpenSetting.private,
label: Text('Private'),
icon: Icon(MdiIcons.tabUnselected),
icon: Icon(WebLibreIcons.privateTab),
),
],
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';
}
+3
View File
@@ -119,6 +119,9 @@ flutter:
- family: TorIcons
fonts:
- asset: assets/fonts/tor-icons.ttf
- family: WebLibre
fonts:
- asset: assets/fonts/WebLibre.ttf
flutter_launcher_icons:
android: "launcher_icon"