file list

This commit is contained in:
veeso
2021-03-04 09:13:29 +01:00
parent 744e5a251a
commit c9871a0079
4 changed files with 35 additions and 24 deletions

View File

@@ -0,0 +1 @@
<mxfile host="Electron" modified="2021-03-04T08:07:06.708Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.3.1 Chrome/83.0.4103.119 Electron/9.0.5 Safari/537.36" etag="hf5xr88nEHbSVkpX1Y-k" version="13.3.1" type="device"><diagram id="tfe7Y5e8DOWIlyiIXn_Y" name="Page-1">7Vxbc6M2FP41nmkf2gGEMDwmTtLOdNN2Jp1205cMBhmrwYgKsbb3168wwlxEbOIEZOLNS5CQZOkcfd+5SPYEzFabX6gbL++Jj8KJofmbCbiZGIYOocb/ZTXbvMZ2YF4RUOyLRmXFA/6KRKXoF6TYR0mtISMkZDiuV3okipDHanUupWRdb7YgYf1TYzdAUsWD54Zy7T/YZ0uxCmNa1v+KcLAsPlm3nPzNyi0ai5UkS9cn60oVuJ2AGSWE5U+rzQyFmfAKueT97l54u58YRRHr0iFBd49//Wv8hmafV08PC+p8ur/5CeSjfHHDVCz4ymP4C2ZbMWm2LSTBR+NC54Xr9RIz9BC7XvZmzfXO65ZsFfKSzh89ssKeeF7gMJyRkNDdGMDz0dye8/qEUfKMKm+ABRzgZz1IxMQ20C1eFhNElKHNiyvX9/LkGxGRFWKUL0ATHQoNiC1oiuK61KdeNFlWdGmLOldsoWA/cCll/iAE/QqhF3u7Klyf7zpRJJQtSUAiN7wta68pSSMfZcNqvFS2+URILIT9H2JsK2TnpozU1YI2mH3Ouv8MRemx8uZmI0beFbZFIeLrrXTKio/Vd2W3Xano167EbJGHVchlQlLqoQPCE8BjLg0QO9DObt8SFIUu3+D1eby7hqcSrB74hNnpmHKTOGe3Bd5km6AOsoa0G6BDu7+DoHsHkIGpeQxl9qAgA0pBVoFYCbjRgMzuCDLdUIkyW0JZwI0p7xTFKf9vhXzq13PKn4LsCX3ZyeFO2hd0SVbzNHmlZTsMug6W7j1AZ1o10OnTFtsGLBl2utYb7qyxGLce8ZPjoguAoEoAFdOsIIhEP/woKZC7rnH2GFPioaQDUOau9xzslPpHykIcoRMA5CG4WPQNIN2u+4Z7e3TMObR6w48p6eSRB0BNlfAls4aLEOIg4s8eXzriorrOBIN5JHMlXqyw7+doQwn+6s53Q2VAiAmO2G4d8HoCb7KxOMASoZuefHJLrzOXY0qCN1vkbvQld2M0vHWG/oIOO/KdodRhKKbZGu423YWC7HgonwTnQYmD+BRNSjQ15ZQoh1P3LSp5mRJDtGBnT4iwLnZgyWKHgxIiVEqIJwVQNTos2VEBIXaOoN7qAO66XlHqbisNxAYuR/4zq6hgvJESc5q5wyPtTaA19lc+g3K37ZfyBtjL8V0a+y5DF+2h2o5qOi4+rNWKapxfw9e4q6Pg5kaYvSfiqg60QclZv3QdWIZyHThKDeS4Iwaja4bEUJrIB1OVOtYnpzhB49NxnqFUpeNimhUu5V5ATKJswVJYSNH/KaZZRqb5JndOPlaCWZ8aNdaFuvIEs3EZCbKm39dm7wZNkAG1B2ojN3dd40GgNEFmtBypIfbEo6o4ueioy2rJxgwbdYHL8/gbGTFbedQFzO8UeDIFgq7eoK7W45e9wXv3GfGaCK2zpWdceB5MqOQ4YNp2xWBQJjSVOiIjj8kKX/0oCk2ljoipNrdyKTpWy7SWxLTJkqSh/5SuuCbl25K9hNGDuJMQNA732q6ZDBtGA9nV/528woMcRxQNGoKHxTUPZVG0I4n9Dkc4Wcp893HuBkNo17Sga0De/4PeDjblaOojJpEsu37LytR0tdvfVJpPH3kEZXbOpztvtOsnXSqYWnWu5bbr8K0C6DRpod6hn2sFhRSr1wp2/saZJLgWC89znL4peao1ElzKL76acl5/Vh7DnGocD30Z7bjrN0BeX/m30Uz5UuTfOEt19CDyDnu7B5E3vW/lIofGdyt4uhXsepQCX9gVA2Uw5PiKr9VH9EzMzDCBrwnqJh4qNzPFIcLHjntNp0l5ih1/OJrT4x6pCxa/YHCeDrx5xB8/EwceyrF7zqzylRw3G+0cyHaQo5om2U6VH1pD2ad/3Tc3xsG2jcDXafnGzDt9dYMXy18MyQFV/u4KuP0G</diagram></mxfile>

View File

@@ -24,7 +24,7 @@
*/ */
// locals // locals
use super::{Component, InputEvent, Msg, Payload, Props, PropsBuilder, States, Widget}; use super::{Component, InputEvent, Msg, Payload, Props, PropsBuilder, Render, States};
// ext // ext
use crossterm::event::KeyCode; use crossterm::event::KeyCode;
use tui::{ use tui::{
@@ -131,7 +131,7 @@ impl Component for FileList {
/// ///
/// Based on the current properties and states, return a Widget instance for the Component /// Based on the current properties and states, return a Widget instance for the Component
/// Returns None if the component is hidden /// Returns None if the component is hidden
fn render(&self) -> Option<Box<dyn Widget>> { fn render(&self) -> Option<Render> {
match self.props.visible { match self.props.visible {
false => None, false => None,
true => { true => {
@@ -152,7 +152,8 @@ impl Component for FileList {
None => String::new(), None => String::new(),
}; };
// Render // Render
Some(Box::new( Some(Render {
widget: Box::new(
List::new(list_item) List::new(list_item)
.block( .block(
Block::default() Block::default()
@@ -170,7 +171,9 @@ impl Component for FileList {
.fg(fg) .fg(fg)
.add_modifier(self.props.get_modifiers()), .add_modifier(self.props.get_modifiers()),
), ),
)) ),
value: self.get_value(),
})
} }
} }
} }
@@ -247,6 +250,13 @@ impl Component for FileList {
} }
} }
/// ### get_value
///
/// Return component value
fn get_value(&self) -> Payload {
Payload::Unumber(self.states.get_list_index())
}
// -- events // -- events
/// ### should_umount /// ### should_umount

View File

@@ -24,7 +24,7 @@
*/ */
// imports // imports
use super::{Component, InputEvent, Msg, Payload, Props, PropsBuilder, States, Widget}; use super::{Component, InputEvent, Msg, Payload, Props, PropsBuilder, Render, States};
// exports // exports
pub mod file_list; pub mod file_list;

View File

@@ -64,8 +64,8 @@ pub enum Payload {
/// ///
/// Render is the object which contains data related to the component render /// Render is the object which contains data related to the component render
pub struct Render { pub struct Render {
widget: Box<dyn Widget>, pub widget: Box<dyn Widget>,
value: Payload, pub value: Payload,
} }
// -- States // -- States