// SPDX-License-Identifier: MPL-2.0
#![allow(clippy::collapsible_if)]
use crate::ui::avatar_cache;
use gtk4::glib;
use gtk4::prelude::*;
use gtk4::subclass::prelude::*;
use libadwaita as adw;
/// Navigation item definition
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NavItem {
Home,
Mentions,
Activity,
Chat,
Profile,
Likes,
Bookmarks,
Search,
}
impl NavItem {
pub fn icon_name(&self) -> &'static str {
match self {
Self::Home => "go-home-symbolic",
Self::Mentions => "system-users-symbolic",
Self::Activity => "preferences-system-notifications-symbolic",
Self::Chat => "chat-message-new-symbolic",
Self::Profile => "avatar-default-symbolic",
Self::Likes => "emote-love-symbolic",
Self::Bookmarks => "user-bookmarks-symbolic",
Self::Search => "system-search-symbolic",
}
}
pub fn label(&self) -> &'static str {
match self {
Self::Home => "Home",
Self::Mentions => "Mentions",
Self::Activity => "Activity",
Self::Chat => "Chat",
Self::Profile => "Profile",
Self::Likes => "Likes",
Self::Bookmarks => "Saved",
Self::Search => "Search",
}
}
pub fn all() -> &'static [NavItem] {
&[
Self::Home,
Self::Mentions,
Self::Activity,
Self::Chat,
Self::Profile,
Self::Likes,
Self::Bookmarks,
Self::Search,
]
}
}
mod imp {
use super::*;
use std::cell::{Cell, RefCell};
#[derive(Default)]
pub struct Sidebar {
pub avatar: RefCell