WIP: Add UI to application #1
@ -22,7 +22,7 @@ impl App {
|
||||
domain_input: String::new(),
|
||||
whois_info: vec![],
|
||||
dns_info: vec![],
|
||||
render_direction: AppRenderDir::Horizontal,
|
||||
render_direction: AppRenderDir::Vertical,
|
||||
current_state: CurrentState::Lookup,
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,6 +80,9 @@ fn run_app<B: Backend>(
|
||||
let whois = WhoisData::new(app.domain_input.clone());
|
||||
app.whois_info = whois.to_vec();
|
||||
}
|
||||
KeyCode::Delete => {
|
||||
app.domain_input = String::new();
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
CurrentState::Menu => {}
|
||||
|
||||
76
src/ui.rs
76
src/ui.rs
@ -11,7 +11,12 @@ use crate::{
|
||||
CurrentState,
|
||||
};
|
||||
|
||||
pub fn ui(f: &mut Frame, app: &App) {
|
||||
pub fn ui(f: &mut Frame, app: &mut App) {
|
||||
if f.size().width > 100 {
|
||||
app.render_direction = AppRenderDir::Horizontal;
|
||||
} else {
|
||||
app.render_direction = AppRenderDir::Vertical;
|
||||
}
|
||||
match app.current_state {
|
||||
CurrentState::Lookup => {
|
||||
match app.render_direction {
|
||||
@ -65,6 +70,7 @@ pub fn ui(f: &mut Frame, app: &App) {
|
||||
|
||||
// DNS list
|
||||
let mut dns_list_items = Vec::<ListItem>::new();
|
||||
|
||||
for record in &app.dns_info {
|
||||
dns_list_items.push(ListItem::new(Line::from(Span::styled(
|
||||
record,
|
||||
@ -93,8 +99,9 @@ pub fn ui(f: &mut Frame, app: &App) {
|
||||
let key_hint_block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.style(Style::default());
|
||||
|
||||
let key_hint = Paragraph::new(Text::styled(
|
||||
"[ESC] Quit / [Enter] Check domain",
|
||||
"[ESC] Quit / [Enter] Check domain / [Del] Clear Input",
|
||||
Style::default().fg(Color::Red),
|
||||
))
|
||||
.block(key_hint_block);
|
||||
@ -110,12 +117,73 @@ pub fn ui(f: &mut Frame, app: &App) {
|
||||
let chunks = Layout::default()
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([
|
||||
Constraint::Max(30),
|
||||
Constraint::Length(3),
|
||||
Constraint::Percentage(50),
|
||||
Constraint::Percentage(50),
|
||||
Constraint::Max(30),
|
||||
Constraint::Length(3),
|
||||
])
|
||||
.split(f.size());
|
||||
|
||||
let title_block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.style(Style::default());
|
||||
|
||||
let title = Paragraph::new(Span::styled(
|
||||
"Dns Lookup tool",
|
||||
Style::default().fg(Color::White),
|
||||
))
|
||||
.block(title_block);
|
||||
|
||||
f.render_widget(title, chunks[0]);
|
||||
|
||||
// Whois list
|
||||
let mut whois_list_items = Vec::<ListItem>::new();
|
||||
for record in &app.whois_info {
|
||||
whois_list_items.push(ListItem::new(Line::from(Span::styled(
|
||||
record,
|
||||
Style::default(),
|
||||
))))
|
||||
}
|
||||
let whois_list = List::new(whois_list_items);
|
||||
|
||||
f.render_widget(whois_list, chunks[1]);
|
||||
|
||||
// DNS list
|
||||
let mut dns_list_items = Vec::<ListItem>::new();
|
||||
for record in &app.dns_info {
|
||||
dns_list_items.push(ListItem::new(Line::from(Span::styled(
|
||||
record,
|
||||
Style::default(),
|
||||
))))
|
||||
}
|
||||
let dns_list = List::new(dns_list_items);
|
||||
|
||||
f.render_widget(dns_list, chunks[2]);
|
||||
let footer_chunks = Layout::default()
|
||||
.direction(Direction::Horizontal)
|
||||
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)])
|
||||
.split(chunks[3]);
|
||||
|
||||
let domain_block = Block::new().borders(Borders::ALL).style(Style::default());
|
||||
let mut domain_string = String::from("Domain: ");
|
||||
domain_string.push_str(&app.domain_input);
|
||||
let domain_text = Paragraph::new(Text::styled(
|
||||
domain_string,
|
||||
Style::default().fg(Color::Blue),
|
||||
))
|
||||
.block(domain_block);
|
||||
f.render_widget(domain_text, footer_chunks[0]);
|
||||
|
||||
let key_hint_block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.style(Style::default());
|
||||
|
||||
let key_hint = Paragraph::new(Text::styled(
|
||||
"[ESC] Quit / [Enter] Check domain",
|
||||
Style::default().fg(Color::Red),
|
||||
))
|
||||
.block(key_hint_block);
|
||||
f.render_widget(key_hint, footer_chunks[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user