ui: optimize network types

This commit is contained in:
ardocrat 2023-07-21 20:26:29 +03:00
parent 8a60e31555
commit 3f322ff062
7 changed files with 52 additions and 34 deletions

View file

@ -20,7 +20,7 @@ use crate::gui::Colors;
use crate::gui::icons::{AT, COINS, CUBE_TRANSPARENT, HASH, HOURGLASS_LOW, HOURGLASS_MEDIUM, TIMER};
use crate::gui::platform::PlatformCallbacks;
use crate::gui::views::{Modal, Network, View};
use crate::gui::views::network::{NetworkTab, NetworkTabType};
use crate::gui::views::types::{NetworkTab, NetworkTabType};
use crate::node::Node;
/// Chain metrics tab content.

View file

@ -21,8 +21,8 @@ use crate::gui::Colors;
use crate::gui::icons::{BARBELL, CLOCK_AFTERNOON, CPU, CUBE, FADERS, FOLDER_DASHED, FOLDER_NOTCH_MINUS, FOLDER_NOTCH_PLUS, HARD_DRIVES, PLUGS, PLUGS_CONNECTED, POLYGON};
use crate::gui::platform::PlatformCallbacks;
use crate::gui::views::{Modal, Network, View};
use crate::gui::views::network::{NetworkTab, NetworkTabType};
use crate::gui::views::network::setup::StratumSetup;
use crate::gui::views::types::{NetworkTab, NetworkTabType};
use crate::node::{Node, NodeConfig};
/// Mining tab content.

View file

@ -30,6 +30,7 @@ pub use setup::*;
mod network;
pub use network::*;
mod connections;
pub use connections::*;
pub mod types;

View file

@ -21,35 +21,9 @@ use crate::gui::icons::{CARDHOLDER, DATABASE, DOTS_THREE_OUTLINE_VERTICAL, FACTO
use crate::gui::platform::PlatformCallbacks;
use crate::gui::views::{Modal, ModalContainer, NetworkMetrics, NetworkMining, NetworkNode, NetworkSettings, Root, TitlePanel, TitleType, View};
use crate::gui::views::network::setup::{DandelionSetup, NodeSetup, P2PSetup, PoolSetup, StratumSetup};
use crate::gui::views::types::{NetworkTab, NetworkTabType};
use crate::node::Node;
/// Network tab content interface.
pub trait NetworkTab {
fn get_type(&self) -> NetworkTabType;
fn ui(&mut self, ui: &mut egui::Ui, cb: &dyn PlatformCallbacks);
fn on_modal_ui(&mut self, ui: &mut egui::Ui, modal: &Modal, cb: &dyn PlatformCallbacks);
}
/// Type of [`NetworkTab`] content.
#[derive(PartialEq)]
pub enum NetworkTabType {
Node,
Metrics,
Mining,
Settings
}
impl NetworkTabType {
pub fn title(&self) -> String {
match *self {
NetworkTabType::Node => { t!("network.node") }
NetworkTabType::Metrics => { t!("network.metrics") }
NetworkTabType::Mining => { t!("network.mining") }
NetworkTabType::Settings => { t!("network.settings") }
}
}
}
/// Network content.
pub struct Network {
/// Current tab view to show at ui.

View file

@ -19,8 +19,8 @@ use grin_servers::PeerStats;
use crate::gui::Colors;
use crate::gui::icons::{AT, CUBE, DEVICES, FLOW_ARROW, HANDSHAKE, PACKAGE, PLUGS_CONNECTED, SHARE_NETWORK};
use crate::gui::platform::PlatformCallbacks;
use crate::gui::views::{Modal, View};
use crate::gui::views::network::{Network, NetworkTab, NetworkTabType};
use crate::gui::views::{Modal, Network, View};
use crate::gui::views::types::{NetworkTab, NetworkTabType};
use crate::node::Node;
/// Integrated node tab content.

View file

@ -18,8 +18,8 @@ use crate::gui::Colors;
use crate::gui::icons::ARROW_COUNTER_CLOCKWISE;
use crate::gui::platform::PlatformCallbacks;
use crate::gui::views::{Modal, ModalPosition, View};
use crate::gui::views::network::{NetworkTab, NetworkTabType};
use crate::gui::views::network::setup::{DandelionSetup, NodeSetup, P2PSetup, PoolSetup, StratumSetup};
use crate::gui::views::types::{NetworkTab, NetworkTabType};
use crate::node::{Node, NodeConfig};
/// Integrated node settings tab content.

View file

@ -0,0 +1,43 @@
// Copyright 2023 The Grim Developers
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use crate::gui::platform::PlatformCallbacks;
use crate::gui::views::Modal;
/// Network tab content interface.
pub trait NetworkTab {
fn get_type(&self) -> NetworkTabType;
fn ui(&mut self, ui: &mut egui::Ui, cb: &dyn PlatformCallbacks);
fn on_modal_ui(&mut self, ui: &mut egui::Ui, modal: &Modal, cb: &dyn PlatformCallbacks);
}
/// Type of [`NetworkTab`] content.
#[derive(PartialEq)]
pub enum NetworkTabType {
Node,
Metrics,
Mining,
Settings
}
impl NetworkTabType {
pub fn title(&self) -> String {
match *self {
NetworkTabType::Node => { t!("network.node") }
NetworkTabType::Metrics => { t!("network.metrics") }
NetworkTabType::Mining => { t!("network.mining") }
NetworkTabType::Settings => { t!("network.settings") }
}
}
}