diff --git a/.idea/zulip.iml b/.idea/zulip.iml
index bc835ab69a..61fb622fa1 100644
--- a/.idea/zulip.iml
+++ b/.idea/zulip.iml
@@ -16,8 +16,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/assets/icons/ZulipIcons.ttf b/assets/icons/ZulipIcons.ttf
index fec63cceaf..cbf789f31b 100644
Binary files a/assets/icons/ZulipIcons.ttf and b/assets/icons/ZulipIcons.ttf differ
diff --git a/assets/icons/mark_read_icon.svg b/assets/icons/mark_read_icon.svg
new file mode 100644
index 0000000000..5c598ae87e
--- /dev/null
+++ b/assets/icons/mark_read_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/check_icons_output.txt b/check_icons_output.txt
new file mode 100644
index 0000000000..7bf5153276
--- /dev/null
+++ b/check_icons_output.txt
@@ -0,0 +1,17 @@
+Running icons...
+npm notice
+npm notice New major version of npm available! 10.9.0 -> 11.2.0
+npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.2.0
+npm notice To update run: npm install -g npm@11.2.0
+npm notice
+
+added 162 packages in 7s
+warning: in the working copy of 'lib/widgets/icons.dart', LF will be replaced by CRLF the next time Git touches it
+Error: there were icon updates:
+ M assets/icons/ZulipIcons.ttf
+ M lib/widgets/icons.dart
+
+FAILED: icons
+
+To rerun the suites that failed, run:
+ $ tools/check icons
diff --git a/icons_check_output.txt b/icons_check_output.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/lib/widgets/icons.dart b/lib/widgets/icons.dart
index 6c6934ebd7..ee65128b73 100644
--- a/lib/widgets/icons.dart
+++ b/lib/widgets/icons.dart
@@ -99,47 +99,51 @@ abstract final class ZulipIcons {
/// The Zulip custom icon "lock".
static const IconData lock = IconData(0xf119, fontFamily: "Zulip Icons");
+ /// The Zulip custom icon "mark_read_icon".
+ static const IconData mark_read_icon = IconData(0xf11a, fontFamily: "Zulip Icons");
+
/// The Zulip custom icon "menu".
- static const IconData menu = IconData(0xf11a, fontFamily: "Zulip Icons");
+ static const IconData menu = IconData(0xf11b, fontFamily: "Zulip Icons");
/// The Zulip custom icon "message_feed".
- static const IconData message_feed = IconData(0xf11b, fontFamily: "Zulip Icons");
+ static const IconData message_feed = IconData(0xf11c, fontFamily: "Zulip Icons");
/// The Zulip custom icon "mute".
- static const IconData mute = IconData(0xf11c, fontFamily: "Zulip Icons");
+ static const IconData mute = IconData(0xf11d, fontFamily: "Zulip Icons");
/// The Zulip custom icon "read_receipts".
- static const IconData read_receipts = IconData(0xf11d, fontFamily: "Zulip Icons");
+ static const IconData read_receipts = IconData(0xf11e, fontFamily: "Zulip Icons");
/// The Zulip custom icon "send".
- static const IconData send = IconData(0xf11e, fontFamily: "Zulip Icons");
+ static const IconData send = IconData(0xf11f, fontFamily: "Zulip Icons");
/// The Zulip custom icon "share".
- static const IconData share = IconData(0xf11f, fontFamily: "Zulip Icons");
+ static const IconData share = IconData(0xf120, fontFamily: "Zulip Icons");
/// The Zulip custom icon "share_ios".
- static const IconData share_ios = IconData(0xf120, fontFamily: "Zulip Icons");
+ static const IconData share_ios = IconData(0xf121, fontFamily: "Zulip Icons");
/// The Zulip custom icon "smile".
- static const IconData smile = IconData(0xf121, fontFamily: "Zulip Icons");
+ static const IconData smile = IconData(0xf122, fontFamily: "Zulip Icons");
/// The Zulip custom icon "star".
- static const IconData star = IconData(0xf122, fontFamily: "Zulip Icons");
+ static const IconData star = IconData(0xf123, fontFamily: "Zulip Icons");
/// The Zulip custom icon "star_filled".
- static const IconData star_filled = IconData(0xf123, fontFamily: "Zulip Icons");
+ static const IconData star_filled = IconData(0xf124, fontFamily: "Zulip Icons");
/// The Zulip custom icon "three_person".
- static const IconData three_person = IconData(0xf124, fontFamily: "Zulip Icons");
+ static const IconData three_person = IconData(0xf125, fontFamily: "Zulip Icons");
/// The Zulip custom icon "topic".
- static const IconData topic = IconData(0xf125, fontFamily: "Zulip Icons");
+ static const IconData topic = IconData(0xf126, fontFamily: "Zulip Icons");
/// The Zulip custom icon "unmute".
- static const IconData unmute = IconData(0xf126, fontFamily: "Zulip Icons");
+ static const IconData unmute = IconData(0xf127, fontFamily: "Zulip Icons");
/// The Zulip custom icon "user".
- static const IconData user = IconData(0xf127, fontFamily: "Zulip Icons");
+ static const IconData user = IconData(0xf128, fontFamily: "Zulip Icons");
+
// END GENERATED ICON DATA
}
diff --git a/lib/widgets/message_list.dart b/lib/widgets/message_list.dart
index 2cc9e2963e..f5816b1350 100644
--- a/lib/widgets/message_list.dart
+++ b/lib/widgets/message_list.dart
@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:flutter_color_models/flutter_color_models.dart';
+import 'package:flutter_svg/flutter_svg.dart';
import 'package:intl/intl.dart' hide TextDirection;
import '../api/model/model.dart';
@@ -826,7 +827,12 @@ class _MarkAsReadWidgetState extends State {
backgroundColor: WidgetStatePropertyAll(messageListTheme.unreadMarker),
),
onPressed: _loading ? null : () => _handlePress(context),
- icon: const Icon(Icons.playlist_add_check),
+ icon: SvgPicture.asset(
+ colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
+ 'assets/icons/mark_read_icon.svg',
+ width: 24,
+ height: 24,
+ ),
label: Text(zulipLocalizations.markAllAsReadLabel))))));
}
}
diff --git a/pubspec.lock b/pubspec.lock
index 77adae52d1..87a499e05a 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -450,6 +450,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.26"
+ flutter_svg:
+ dependency: "direct main"
+ description:
+ name: flutter_svg
+ sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.17"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -766,6 +774,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
path_provider:
dependency: "direct main"
description:
@@ -1179,6 +1195,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.1"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.18"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.16"
vector_math:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 82d4fa495a..04e8a4d0c4 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -62,6 +62,7 @@ dependencies:
url_launcher_android: ">=6.1.0"
video_player: ^2.8.3
wakelock_plus: ^1.2.8
+ flutter_svg: ^2.0.17
zulip_plugin:
path: ./packages/zulip_plugin
# Keep list sorted when adding dependencies; it helps prevent merge conflicts.
@@ -114,6 +115,7 @@ flutter:
uses-material-design: true
assets:
+ - assets/icons/mark_read_icon.svg
- assets/Noto_Color_Emoji/LICENSE
- assets/Pygments/AUTHORS.txt
- assets/Pygments/LICENSE.txt