mirror of
https://github.com/damus-io/notedeck.git
synced 2024-10-18 11:13:23 +00:00
remove global popup conception
can be added later if we need it again Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
parent
00091c5088
commit
52604e65c6
11
src/app.rs
11
src/app.rs
@ -18,7 +18,7 @@ use crate::subscriptions::{SubKind, Subscriptions};
|
|||||||
use crate::thread::{DecrementResult, Threads};
|
use crate::thread::{DecrementResult, Threads};
|
||||||
use crate::timeline::{Timeline, TimelineKind, TimelineSource, ViewFilter};
|
use crate::timeline::{Timeline, TimelineKind, TimelineSource, ViewFilter};
|
||||||
use crate::ui::note::PostAction;
|
use crate::ui::note::PostAction;
|
||||||
use crate::ui::{self, AccountSelectionWidget, DesktopGlobalPopup};
|
use crate::ui::{self, AccountSelectionWidget};
|
||||||
use crate::ui::{DesktopSidePanel, RelayView, View};
|
use crate::ui::{DesktopSidePanel, RelayView, View};
|
||||||
use crate::unknowns::UnknownIds;
|
use crate::unknowns::UnknownIds;
|
||||||
use crate::{filter, Result};
|
use crate::{filter, Result};
|
||||||
@ -48,9 +48,6 @@ pub struct Damus {
|
|||||||
note_cache: NoteCache,
|
note_cache: NoteCache,
|
||||||
pub pool: RelayPool,
|
pub pool: RelayPool,
|
||||||
|
|
||||||
/// global navigation for account management popups, etc.
|
|
||||||
pub global_nav: Vec<Route>,
|
|
||||||
|
|
||||||
pub columns: Columns,
|
pub columns: Columns,
|
||||||
pub ndb: Ndb,
|
pub ndb: Ndb,
|
||||||
pub unknown_ids: UnknownIds,
|
pub unknown_ids: UnknownIds,
|
||||||
@ -67,7 +64,6 @@ pub struct Damus {
|
|||||||
pub since_optimize: bool,
|
pub since_optimize: bool,
|
||||||
pub textmode: bool,
|
pub textmode: bool,
|
||||||
pub show_account_switcher: bool,
|
pub show_account_switcher: bool,
|
||||||
pub show_global_popup: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn relay_setup(pool: &mut RelayPool, ctx: &egui::Context) {
|
fn relay_setup(pool: &mut RelayPool, ctx: &egui::Context) {
|
||||||
@ -701,8 +697,6 @@ impl Damus {
|
|||||||
accounts,
|
accounts,
|
||||||
frame_history: FrameHistory::default(),
|
frame_history: FrameHistory::default(),
|
||||||
show_account_switcher: false,
|
show_account_switcher: false,
|
||||||
show_global_popup: false,
|
|
||||||
global_nav: Vec::new(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -745,8 +739,6 @@ impl Damus {
|
|||||||
accounts: AccountManager::new(None, KeyStorageType::None),
|
accounts: AccountManager::new(None, KeyStorageType::None),
|
||||||
frame_history: FrameHistory::default(),
|
frame_history: FrameHistory::default(),
|
||||||
show_account_switcher: false,
|
show_account_switcher: false,
|
||||||
show_global_popup: true,
|
|
||||||
global_nav: Vec::new(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1109,7 +1101,6 @@ fn render_damus_desktop(ctx: &egui::Context, app: &mut Damus) {
|
|||||||
main_panel(&ctx.style(), ui::is_narrow(ctx)).show(ctx, |ui| {
|
main_panel(&ctx.style(), ui::is_narrow(ctx)).show(ctx, |ui| {
|
||||||
ui.spacing_mut().item_spacing.x = 0.0;
|
ui.spacing_mut().item_spacing.x = 0.0;
|
||||||
AccountSelectionWidget::ui(app, ui);
|
AccountSelectionWidget::ui(app, ui);
|
||||||
DesktopGlobalPopup::show(app.global_nav.clone(), app, ui);
|
|
||||||
if need_scroll {
|
if need_scroll {
|
||||||
egui::ScrollArea::horizontal().show(ui, |ui| {
|
egui::ScrollArea::horizontal().show(ui, |ui| {
|
||||||
timelines_view(ui, panel_sizes, app, app.columns.columns().len());
|
timelines_view(ui, panel_sizes, app, app.columns.columns().len());
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
account_manager::UserAccount, colors::PINK, profile::DisplayName, route::Route, ui,
|
account_manager::UserAccount, colors::PINK, profile::DisplayName, ui,
|
||||||
ui::profile_preview_controller, Damus, Result,
|
ui::profile_preview_controller, Damus, Result,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -17,7 +17,6 @@ pub struct AccountSelectionWidget {}
|
|||||||
enum AccountSelectAction {
|
enum AccountSelectAction {
|
||||||
RemoveAccount { _index: usize },
|
RemoveAccount { _index: usize },
|
||||||
SelectAccount { _index: usize },
|
SelectAccount { _index: usize },
|
||||||
OpenAccountManagement,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
@ -54,11 +53,6 @@ impl AccountSelectionWidget {
|
|||||||
app.show_account_switcher = false;
|
app.show_account_switcher = false;
|
||||||
app.accounts.select_account(_index);
|
app.accounts.select_account(_index);
|
||||||
}
|
}
|
||||||
AccountSelectAction::OpenAccountManagement => {
|
|
||||||
app.show_account_switcher = false;
|
|
||||||
app.global_nav.push(Route::ManageAccount);
|
|
||||||
app.show_global_popup = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +190,7 @@ fn selection_widget() -> impl egui::Widget {
|
|||||||
|
|
||||||
fn top_section_widget(ui: &mut egui::Ui) -> AccountSelectResponse {
|
fn top_section_widget(ui: &mut egui::Ui) -> AccountSelectResponse {
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
let mut resp = AccountSelectResponse::default();
|
let resp = AccountSelectResponse::default();
|
||||||
|
|
||||||
ui.allocate_ui_with_layout(
|
ui.allocate_ui_with_layout(
|
||||||
Vec2::new(ui.available_size_before_wrap().x, 32.0),
|
Vec2::new(ui.available_size_before_wrap().x, 32.0),
|
||||||
@ -209,7 +203,7 @@ fn top_section_widget(ui: &mut egui::Ui) -> AccountSelectResponse {
|
|||||||
Layout::right_to_left(egui::Align::Center),
|
Layout::right_to_left(egui::Align::Center),
|
||||||
|ui| {
|
|ui| {
|
||||||
if ui.add(manage_accounts_button()).clicked() {
|
if ui.add(manage_accounts_button()).clicked() {
|
||||||
resp.action = Some(AccountSelectAction::OpenAccountManagement);
|
// resp.action = Some(AccountSelectAction::OpenAccountManagement); TODO implement after temporary column impl is finished
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
use egui::{Rect, Response, RichText, Sense, Window};
|
|
||||||
|
|
||||||
#[derive(Default)]
|
|
||||||
pub struct FixedWindow {
|
|
||||||
title: Option<RichText>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(PartialEq)]
|
|
||||||
pub enum FixedWindowResponse {
|
|
||||||
Opened,
|
|
||||||
Closed,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FixedWindow {
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub fn new() -> Self {
|
|
||||||
FixedWindow::default()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn maybe_with_title(maybe_title: Option<RichText>) -> Self {
|
|
||||||
Self { title: maybe_title }
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
pub fn with_title(mut self, title: RichText) -> Self {
|
|
||||||
self.title = Some(title);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn show(
|
|
||||||
self,
|
|
||||||
ui: &mut egui::Ui,
|
|
||||||
rect: Rect,
|
|
||||||
add_contents: impl FnOnce(&mut egui::Ui) -> Response,
|
|
||||||
) -> FixedWindowResponse {
|
|
||||||
let mut is_open = true;
|
|
||||||
|
|
||||||
let use_title_bar = self.title.is_some();
|
|
||||||
let title = if let Some(title) = self.title {
|
|
||||||
title
|
|
||||||
} else {
|
|
||||||
RichText::new("")
|
|
||||||
};
|
|
||||||
|
|
||||||
Window::new(title)
|
|
||||||
.open(&mut is_open)
|
|
||||||
.fixed_rect(rect)
|
|
||||||
.collapsible(false)
|
|
||||||
.movable(false)
|
|
||||||
.resizable(false)
|
|
||||||
.title_bar(use_title_bar)
|
|
||||||
.show(ui.ctx(), |ui| {
|
|
||||||
let resp = add_contents(ui);
|
|
||||||
ui.allocate_rect(resp.rect, Sense::hover())
|
|
||||||
});
|
|
||||||
|
|
||||||
if !is_open {
|
|
||||||
FixedWindowResponse::Closed
|
|
||||||
} else {
|
|
||||||
FixedWindowResponse::Opened
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
use std::{cell::RefCell, rc::Rc};
|
|
||||||
|
|
||||||
use egui::Sense;
|
|
||||||
use egui_nav::{Nav, NavAction};
|
|
||||||
|
|
||||||
use crate::{route::Route, ui, Damus};
|
|
||||||
|
|
||||||
static MARGIN: f32 = 200.0;
|
|
||||||
|
|
||||||
pub struct DesktopGlobalPopup {}
|
|
||||||
|
|
||||||
impl DesktopGlobalPopup {
|
|
||||||
pub fn show(routes: Vec<Route>, app: &mut Damus, ui: &mut egui::Ui) {
|
|
||||||
if routes.is_empty() || !app.show_global_popup {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let rect = ui.ctx().screen_rect().shrink(MARGIN);
|
|
||||||
|
|
||||||
let title = routes.last().map(|r| r.title());
|
|
||||||
|
|
||||||
let app_ctx = Rc::new(RefCell::new(app));
|
|
||||||
|
|
||||||
let resp = ui::FixedWindow::maybe_with_title(title).show(ui, rect, |ui| {
|
|
||||||
let nav_response =
|
|
||||||
Nav::new(routes)
|
|
||||||
.title(false)
|
|
||||||
.navigating(false)
|
|
||||||
.show(ui, |ui, nav| {
|
|
||||||
if let Some(resp) =
|
|
||||||
nav.top().show_global_popup(&mut app_ctx.borrow_mut(), ui)
|
|
||||||
{
|
|
||||||
ui.allocate_rect(resp.rect, Sense::hover())
|
|
||||||
} else {
|
|
||||||
ui.label("") // TODO(kernelkind): not a great practice
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if let Some(NavAction::Returned) = nav_response.action {
|
|
||||||
app_ctx.borrow_mut().global_nav.pop();
|
|
||||||
}
|
|
||||||
|
|
||||||
nav_response.inner
|
|
||||||
});
|
|
||||||
|
|
||||||
let mut app = app_ctx.borrow_mut();
|
|
||||||
|
|
||||||
if resp == ui::FixedWindowResponse::Closed {
|
|
||||||
app.global_nav.pop();
|
|
||||||
app.show_global_popup = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,8 +2,6 @@ pub mod account_login_view;
|
|||||||
pub mod account_management;
|
pub mod account_management;
|
||||||
pub mod account_switcher;
|
pub mod account_switcher;
|
||||||
pub mod anim;
|
pub mod anim;
|
||||||
pub mod fixed_window;
|
|
||||||
pub mod global_popup;
|
|
||||||
pub mod mention;
|
pub mod mention;
|
||||||
pub mod note;
|
pub mod note;
|
||||||
pub mod preview;
|
pub mod preview;
|
||||||
@ -16,8 +14,6 @@ pub mod username;
|
|||||||
|
|
||||||
pub use account_management::AccountManagementView;
|
pub use account_management::AccountManagementView;
|
||||||
pub use account_switcher::AccountSelectionWidget;
|
pub use account_switcher::AccountSelectionWidget;
|
||||||
pub use fixed_window::{FixedWindow, FixedWindowResponse};
|
|
||||||
pub use global_popup::DesktopGlobalPopup;
|
|
||||||
pub use mention::Mention;
|
pub use mention::Mention;
|
||||||
pub use note::{NoteResponse, NoteView, PostReplyView, PostView};
|
pub use note::{NoteResponse, NoteView, PostReplyView, PostView};
|
||||||
pub use preview::{Preview, PreviewApp, PreviewConfig};
|
pub use preview::{Preview, PreviewApp, PreviewConfig};
|
||||||
|
@ -127,7 +127,7 @@ mod preview {
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
test_data,
|
test_data,
|
||||||
ui::{AccountSelectionWidget, DesktopGlobalPopup, Preview, PreviewConfig},
|
ui::{AccountSelectionWidget, Preview, PreviewConfig},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -158,7 +158,6 @@ mod preview {
|
|||||||
});
|
});
|
||||||
|
|
||||||
AccountSelectionWidget::ui(&mut self.app, ui);
|
AccountSelectionWidget::ui(&mut self.app, ui);
|
||||||
DesktopGlobalPopup::show(self.app.global_nav.clone(), &mut self.app, ui);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user