Move colors to constants in util.rs

This commit is contained in:
Sijmen 2023-11-29 01:39:53 +01:00
parent 3c05b23b90
commit f15b092c26
Signed by: vijfhoek
GPG key ID: DAF7821E067D9C48
3 changed files with 76 additions and 30 deletions

View file

@ -5,7 +5,7 @@ use iced::{
alignment::{Horizontal, Vertical}, alignment::{Horizontal, Vertical},
executor, executor,
widget::{column, container, mouse_area, row, text, text_input}, widget::{column, container, mouse_area, row, text, text_input},
Application, Background, Color, Element, Length, Theme, Application, Background, Element, Length, Theme,
}; };
use irc::proto::{message::Tag, CapSubCommand, Capability, Command as IrcCommand, Response}; use irc::proto::{message::Tag, CapSubCommand, Capability, Command as IrcCommand, Response};
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
@ -16,6 +16,7 @@ use crate::{
irc_message::MessageDetail, irc_message::MessageDetail,
message_log::MessageLog, message_log::MessageLog,
ui_message::{self, UiMessage}, ui_message::{self, UiMessage},
util,
}; };
static INPUT_ID: Lazy<text_input::Id> = Lazy::new(text_input::Id::unique); static INPUT_ID: Lazy<text_input::Id> = Lazy::new(text_input::Id::unique);
@ -327,10 +328,6 @@ impl Application for Cri {
} }
fn view(&self) -> iced::Element<'_, Self::Message, iced::Renderer<Self::Theme>> { fn view(&self) -> iced::Element<'_, Self::Message, iced::Renderer<Self::Theme>> {
let dark_grey = Color::new(0.58, 0.65, 0.65, 1.0);
let light_blue = Color::new(0.26, 0.62, 0.85, 1.0);
let light_red = Color::new(0.99, 0.36, 0.40, 1.0);
let log = self.message_log.view(&self.nickname); let log = self.message_log.view(&self.nickname);
let message_box = text_input("your magnum opus", &self.input_value) let message_box = text_input("your magnum opus", &self.input_value)
@ -349,9 +346,17 @@ impl Application for Cri {
Some(channel_name) => channel_name, Some(channel_name) => channel_name,
}; };
let text_color = if is_active { Some(Color::WHITE) } else { None }; let text_color = if is_active { Some(util::WHITE) } else { None };
let nickname_color = if is_active { Color::WHITE } else { light_blue }; let nickname_color = if is_active {
let no_message_color = if is_active { Color::WHITE } else { dark_grey }; util::WHITE
} else {
util::LIGHT_BLUE
};
let no_message_color = if is_active {
util::WHITE
} else {
util::DARK_GREY
};
let text_size = 14.0; let text_size = 14.0;
let last_message = container( let last_message = container(
@ -405,7 +410,7 @@ impl Application for Cri {
} else { } else {
String::new() String::new()
}) })
.style(Color::WHITE) .style(util::WHITE)
.size(12), .size(12),
) )
.width(20) .width(20)
@ -414,13 +419,13 @@ impl Application for Cri {
.align_y(Vertical::Center) .align_y(Vertical::Center)
.style(move |_: &_| container::Appearance { .style(move |_: &_| container::Appearance {
background: Some(Background::Color(if unread_highlights > 0 { background: Some(Background::Color(if unread_highlights > 0 {
light_red util::LIGHT_RED
} else if unread_messages > 0 { } else if unread_messages > 0 {
light_blue util::LIGHT_BLUE
} else if unread_events > 0 { } else if unread_events > 0 {
dark_grey util::DARK_GREY
} else { } else {
Color::TRANSPARENT util::TRANSPARENT
})), })),
border_radius: 12.0.into(), border_radius: 12.0.into(),
..Default::default() ..Default::default()
@ -436,7 +441,7 @@ impl Application for Cri {
]) ])
.style(move |_: &_| container::Appearance { .style(move |_: &_| container::Appearance {
background: match is_active { background: match is_active {
true => Some(Background::Color(light_blue)), true => Some(Background::Color(util::LIGHT_BLUE)),
false => None, false => None,
}, },
text_color, text_color,

View file

@ -372,8 +372,6 @@ impl<'a> MessageLog {
} }
pub fn view(&self, current_nickname: &str) -> Container<'_, crate::ui_message::UiMessage> { pub fn view(&self, current_nickname: &str) -> Container<'_, crate::ui_message::UiMessage> {
let lighter_grey = Color::new(0.93, 0.94, 0.95, 1.0);
let channel = self.get(&self.active_channel).unwrap(); let channel = self.get(&self.active_channel).unwrap();
let header = container(column![ let header = container(column![
@ -404,7 +402,7 @@ impl<'a> MessageLog {
) )
.height(Length::Fill) .height(Length::Fill)
.width(Length::Fill) .width(Length::Fill)
.style(move |_: &_| Self::container_appearance(lighter_grey, 0.0)), .style(move |_: &_| Self::container_appearance(util::LIGHTER_GREY, 0.0)),
]) ])
.height(Length::Fill) .height(Length::Fill)
.width(Length::Fill) .width(Length::Fill)
@ -422,10 +420,6 @@ impl<'a> MessageLog {
current_nickname: &str, current_nickname: &str,
irc_message: &IrcMessage, irc_message: &IrcMessage,
) -> Option<iced::Element<'a, crate::ui_message::UiMessage>> { ) -> Option<iced::Element<'a, crate::ui_message::UiMessage>> {
let dark_grey = Color::new(0.58, 0.65, 0.65, 1.0);
let dark_red = Color::new(0.75, 0.22, 0.17, 1.0);
let lighter_green = Color::new(0.94, 0.99, 0.87, 1.0);
let timestamp = irc_message.timestamp.format("%H:%M:%S"); let timestamp = irc_message.timestamp.format("%H:%M:%S");
match &irc_message.detail { match &irc_message.detail {
@ -455,19 +449,19 @@ impl<'a> MessageLog {
} }
MessageDetail::Privmsg { nickname, message } => { MessageDetail::Privmsg { nickname, message } => {
let is_self = nickname == current_nickname; let is_self = nickname == current_nickname;
let text_color = if is_self { dark_red } else { Color::BLACK }; let text_color = if is_self { util::DARK_RED } else { util::BLACK };
let message_appearance = Self::container_appearance(Color::WHITE, 8.0); let message_appearance = Self::container_appearance(util::WHITE, 8.0);
let own_message_appearance = Self::container_appearance(lighter_green, 8.0); let own_message_appearance = Self::container_appearance(util::LIGHTER_GREEN, 8.0);
let mut elements: Vec<Element<'_, _, _>> = let mut elements: Vec<Element<'_, _, _>> =
vec![text(message).style(text_color).into()]; vec![text(message).style(text_color).into()];
if !is_self { if !is_self {
elements.insert(0, text(nickname).style(dark_red).into()); elements.insert(0, text(nickname).style(util::DARK_RED).into());
} }
elements.push( elements.push(
text(timestamp) text(timestamp)
.style(dark_grey) .style(util::DARK_GREY)
.horizontal_alignment(Horizontal::Right) .horizontal_alignment(Horizontal::Right)
.into(), .into(),
); );
@ -501,11 +495,14 @@ impl<'a> MessageLog {
} }
fn event_container(content: String) -> iced::Element<'a, crate::ui_message::UiMessage> { fn event_container(content: String) -> iced::Element<'a, crate::ui_message::UiMessage> {
let dark_grey = Color::new(0.58, 0.65, 0.65, 1.0);
container( container(
container(text(content).style(Color::WHITE).horizontal_alignment(Horizontal::Center)) container(
.style(move |_: &_| Self::container_appearance(dark_grey, 8.0)) text(content)
.padding([3, 10]), .style(util::WHITE)
.horizontal_alignment(Horizontal::Center),
)
.style(move |_: &_| Self::container_appearance(util::DARK_GREY, 8.0))
.padding([3, 10]),
) )
.width(Length::Fill) .width(Length::Fill)
.center_x() .center_x()

View file

@ -1,5 +1,49 @@
use iced::Color;
use regex::Regex; use regex::Regex;
pub const WHITE: Color = Color::WHITE;
pub const BLACK: Color = Color::BLACK;
pub const TRANSPARENT: Color = Color::TRANSPARENT;
pub const LIGHTER_GREEN: Color = Color {
r: 0.94,
g: 0.99,
b: 0.87,
a: 1.0,
};
pub const LIGHTER_GREY: Color = Color {
r: 0.93,
g: 0.94,
b: 0.95,
a: 1.0,
};
pub const LIGHT_BLUE: Color = Color {
r: 0.26,
g: 0.62,
b: 0.85,
a: 1.0,
};
pub const LIGHT_RED: Color = Color {
r: 0.99,
g: 0.36,
b: 0.40,
a: 1.0,
};
pub const DARK_GREY: Color = Color {
r: 0.58,
g: 0.65,
b: 0.65,
a: 1.0,
};
pub const DARK_RED: Color = Color {
r: 0.75,
g: 0.22,
b: 0.17,
a: 1.0,
};
pub fn contains_word(needle: &str, haystack: &str) -> bool { pub fn contains_word(needle: &str, haystack: &str) -> bool {
let pattern = format!(r"\b{}\b", regex::escape(needle)); let pattern = format!(r"\b{}\b", regex::escape(needle));
let regex = Regex::new(&pattern).unwrap(); let regex = Regex::new(&pattern).unwrap();