#![allow(unused_must_use)]

use iced::{
    Center, Element, Length, Task, font,
    widget::{column, row},
};
use iced_fonts::{NERD_FONT_BYTES, nerd::*};

pub fn main() -> iced::Result {
    iced::application(App::new, App::update, App::view)
        .title("nerd")
        .run()
}

#[derive(Default)]
struct App {}

#[derive(Debug, Clone, Copy)]
enum Message {
    FontLoaded(Result<(), font::Error>),
}

impl App {
    fn new() -> (Self, Task<Message>) {
        (
            Self {},
            Task::batch(vec![font::load(NERD_FONT_BYTES).map(Message::FontLoaded)]),
        )
    }

    fn update(&mut self, message: Message) {
        match message {
            Message::FontLoaded(result) => {
                dbg!(result);
            }
        }
    }

    fn view(&self) -> Element<Message> {
        column![
            row![
                iec_power(),
                iec_toggle_power(),
                iec_power_on(),
                iec_sleep_mode(),
                unitwosixthreezero(),
                oct_heart(),
                oct_zap(),
                unitwosevensixC(),
                unitwosevensixD(),
                unitwosevensixE(),
                unitwosevensixF(),
                unitwosevensevenzero(),
                unitwosevensevenone(),
                iec_power_off(),
                pom_clean_code(),
                pom_pomodoro_done(),
                pom_pomodoro_estimated(),
                pom_pomodoro_ticking(),
                pom_pomodoro_squashed(),
                pom_short_pause(),
                pom_long_pause(),
                pom_away(),
                pom_pair_programming(),
                pom_internal_interruption(),
                pom_external_interruption(),
                pl_branch(),
                pl_line_number(),
                pl_readonly(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                ple_current_column(),
                pl_left_hard_divider(),
                pl_left_soft_divider(),
                pl_right_hard_divider(),
                pl_right_soft_divider(),
                ple_right_half_circle_thick(),
                ple_right_half_circle_thin(),
                ple_left_half_circle_thick(),
                ple_left_half_circle_thin(),
                ple_lower_left_triangle(),
                ple_backslash_separator(),
                ple_lower_right_triangle(),
                ple_forwardslash_separator(),
                ple_upper_left_triangle(),
                ple_forwardslash_separator_redundant(),
                ple_upper_right_triangle(),
                ple_backslash_separator_redundant(),
                ple_flame_thick(),
                ple_flame_thin(),
                ple_flame_thick_mirrored(),
                ple_flame_thin_mirrored(),
                ple_pixelated_squares_small(),
                ple_pixelated_squares_small_mirrored(),
                ple_pixelated_squares_big(),
                ple_pixelated_squares_big_mirrored(),
                ple_ice_waveform(),
                ple_ice_waveform_mirrored(),
                ple_honeycomb(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                ple_honeycomb_outline(),
                ple_lego_separator(),
                ple_lego_separator_thin(),
                ple_lego_block_facing(),
                ple_lego_block_sideways(),
                ple_trapezoid_top_bottom(),
                ple_trapezoid_top_bottom_mirrored(),
                ple_right_hard_divider_inverse(),
                ple_left_hard_divider_inverse(),
                fae_smaller(),
                fae_snowing(),
                fae_soda(),
                fae_sofa(),
                fae_soup(),
                fae_spermatozoon(),
                fae_spin_double(),
                fae_stomach(),
                fae_storm(),
                fae_telescope(),
                fae_thermometer(),
                fae_thermometer_high(),
                fae_thermometer_low(),
                fae_thin_close(),
                fae_toilet(),
                fae_tools(),
                fae_tooth(),
                fae_uterus(),
                fae_wthreec(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fae_walking(),
                fae_virus(),
                fae_telegram_circle(),
                fae_slash(),
                fae_telegram(),
                fae_shirt(),
                fae_tacos(),
                fae_sushi(),
                fae_triangle_ruler(),
                fae_tree(),
                fae_sun_cloud(),
                fae_ruby_o(),
                fae_ruler(),
                fae_umbrella(),
                fae_medicine(),
                fae_microscope(),
                fae_milk_bottle(),
                fae_minimize(),
                fae_molecule(),
                fae_moon_cloud(),
                fae_mushroom(),
                fae_mustache(),
                fae_mysql(),
                fae_nintendo(),
                fae_palette_color(),
                fae_pi(),
                fae_pizza(),
                fae_planet(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fae_plant(),
                fae_playstation(),
                fae_poison(),
                fae_popcorn(),
                fae_popsicle(),
                fae_pulse(),
                fae_python(),
                fae_quora_circle(),
                fae_quora_square(),
                fae_radioactive(),
                fae_raining(),
                fae_real_heart(),
                fae_refrigerator(),
                fae_restore(),
                fae_ring(),
                fae_ruby(),
                fae_fingerprint(),
                fae_floppy(),
                fae_footprint(),
                fae_freecodecamp(),
                fae_galaxy(),
                fae_galery(),
                fae_glass(),
                fae_google_drive(),
                fae_google_play(),
                fae_gps(),
                fae_grav(),
                fae_guitar(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fae_gut(),
                fae_halter(),
                fae_hamburger(),
                fae_hat(),
                fae_hexagon(),
                fae_high_heel(),
                fae_hotdog(),
                fae_ice_cream(),
                fae_id_card(),
                fae_imdb(),
                fae_infinity(),
                fae_java(),
                fae_layers(),
                fae_lips(),
                fae_lipstick(),
                fae_liver(),
                fae_lung(),
                fae_makeup_brushes(),
                fae_maximize(),
                fae_wallet(),
                fae_chess_horse(),
                fae_chess_king(),
                fae_chess_pawn(),
                fae_chess_queen(),
                fae_chess_tower(),
                fae_cheese(),
                fae_chilli(),
                fae_chip(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fae_cicling(),
                fae_cloud(),
                fae_cockroach(),
                fae_coffe_beans(),
                fae_coins(),
                fae_comb(),
                fae_comet(),
                fae_crown(),
                fae_cup_coffe(),
                fae_dice(),
                fae_disco(),
                fae_dna(),
                fae_donut(),
                fae_dress(),
                fae_drop(),
                fae_ello(),
                fae_envelope_open(),
                fae_envelope_open_o(),
                fae_equal(),
                fae_equal_bigger(),
                fae_feedly(),
                fae_file_export(),
                fae_file_import(),
                fae_wind(),
                fae_atom(),
                fae_bacteria(),
                fae_banana(),
                fae_bath(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fae_bed(),
                fae_benzene(),
                fae_bigger(),
                fae_biohazard(),
                fae_blogger_circle(),
                fae_blogger_square(),
                fae_bones(),
                fae_book_open(),
                fae_book_open_o(),
                fae_brain(),
                fae_bread(),
                fae_butterfly(),
                fae_carot(),
                fae_cc_by(),
                fae_cc_cc(),
                fae_cc_nc(),
                fae_cc_nc_eu(),
                fae_cc_nc_jp(),
                fae_cc_nd(),
                fae_cc_remix(),
                fae_cc_sa(),
                fae_cc_share(),
                fae_cc_zero(),
                fae_checklist_o(),
                fae_cherry(),
                fae_chess_bishop(),
                fae_xbox(),
                fae_apple_fruit(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fae_chicken_thigh(),
                fae_gift_card(),
                fae_injection(),
                fae_isle(),
                fae_lollipop(),
                fae_loyalty_card(),
                fae_meat(),
                fae_mountains(),
                fae_orange(),
                fae_peach(),
                fae_pear(),
                weather_day_cloudy_gusts(),
                weather_day_cloudy_windy(),
                weather_day_cloudy(),
                weather_day_fog(),
                weather_day_hail(),
                weather_day_lightning(),
                weather_day_rain_mix(),
                weather_day_rain_wind(),
                weather_day_rain(),
                weather_day_showers(),
                weather_day_snow(),
                weather_day_sprinkle(),
                weather_day_sunny_overcast(),
                weather_day_sunny(),
                weather_day_storm_showers(),
                weather_day_thunderstorm(),
                weather_cloudy_gusts(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_cloudy_windy(),
                weather_cloudy(),
                weather_fog(),
                weather_hail(),
                weather_lightning(),
                weather_rain_mix(),
                weather_rain_wind(),
                weather_rain(),
                weather_showers(),
                weather_snow(),
                weather_sprinkle(),
                weather_storm_showers(),
                weather_thunderstorm(),
                weather_windy(),
                weather_night_alt_cloudy_gusts(),
                weather_night_alt_cloudy_windy(),
                weather_night_alt_hail(),
                weather_night_alt_lightning(),
                weather_night_alt_rain_mix(),
                weather_night_alt_rain_wind(),
                weather_night_alt_rain(),
                weather_night_alt_showers(),
                weather_night_alt_snow(),
                weather_night_alt_sprinkle(),
                weather_night_alt_storm_showers(),
                weather_night_alt_thunderstorm(),
                weather_night_clear(),
                weather_night_cloudy_gusts(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_night_cloudy_windy(),
                weather_night_cloudy(),
                weather_night_hail(),
                weather_night_lightning(),
                weather_night_rain_mix(),
                weather_night_rain_wind(),
                weather_night_rain(),
                weather_night_showers(),
                weather_night_snow(),
                weather_night_sprinkle(),
                weather_night_storm_showers(),
                weather_night_thunderstorm(),
                weather_celsius(),
                weather_cloud_down(),
                weather_cloud_refresh(),
                weather_cloud_up(),
                weather_cloud(),
                weather_degrees(),
                weather_direction_down_left(),
                weather_direction_down(),
                weather_fahrenheit(),
                weather_horizon_alt(),
                weather_horizon(),
                weather_direction_left(),
                weather_aliens(),
                weather_night_fog(),
                weather_refresh_alt(),
                weather_refresh(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_direction_right(),
                weather_raindrops(),
                weather_strong_wind(),
                weather_sunrise(),
                weather_sunset(),
                weather_thermometer_exterior(),
                weather_thermometer_internal(),
                weather_thermometer(),
                weather_tornado(),
                weather_direction_up_right(),
                weather_direction_up(),
                weather_wind_west(),
                weather_wind_south_west(),
                weather_wind_south_east(),
                weather_wind_south(),
                weather_wind_north_west(),
                weather_wind_north_east(),
                weather_wind_north(),
                weather_wind_east(),
                weather_smoke(),
                weather_dust(),
                weather_snow_wind(),
                weather_day_snow_wind(),
                weather_night_snow_wind(),
                weather_night_alt_snow_wind(),
                weather_day_sleet_storm(),
                weather_night_sleet_storm(),
                weather_night_alt_sleet_storm(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_day_snow_thunderstorm(),
                weather_night_snow_thunderstorm(),
                weather_night_alt_snow_thunderstorm(),
                weather_solar_eclipse(),
                weather_lunar_eclipse(),
                weather_meteor(),
                weather_hot(),
                weather_hurricane(),
                weather_smog(),
                weather_alien(),
                weather_snowflake_cold(),
                weather_stars(),
                weather_raindrop(),
                weather_barometer(),
                weather_humidity(),
                weather_na(),
                weather_flood(),
                weather_day_cloudy_high(),
                weather_night_alt_cloudy_high(),
                weather_night_cloudy_high(),
                weather_night_alt_partly_cloudy(),
                weather_sandstorm(),
                weather_night_partly_cloudy(),
                weather_umbrella(),
                weather_day_windy(),
                weather_night_alt_cloudy(),
                weather_direction_up_left(),
                weather_direction_down_right(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_time_onetwo(),
                weather_time_one(),
                weather_time_two(),
                weather_time_three(),
                weather_time_four(),
                weather_time_five(),
                weather_time_six(),
                weather_time_seven(),
                weather_time_eight(),
                weather_time_nine(),
                weather_time_onezero(),
                weather_time_oneone(),
                weather_moon_new(),
                weather_moon_waxing_crescent_one(),
                weather_moon_waxing_crescent_two(),
                weather_moon_waxing_crescent_three(),
                weather_moon_waxing_crescent_four(),
                weather_moon_waxing_crescent_five(),
                weather_moon_waxing_crescent_six(),
                weather_moon_first_quarter(),
                weather_moon_waxing_gibbous_one(),
                weather_moon_waxing_gibbous_two(),
                weather_moon_waxing_gibbous_three(),
                weather_moon_waxing_gibbous_four(),
                weather_moon_waxing_gibbous_five(),
                weather_moon_waxing_gibbous_six(),
                weather_moon_full(),
                weather_moon_waning_gibbous_one(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_moon_waning_gibbous_two(),
                weather_moon_waning_gibbous_three(),
                weather_moon_waning_gibbous_four(),
                weather_moon_waning_gibbous_five(),
                weather_moon_waning_gibbous_six(),
                weather_moon_third_quarter(),
                weather_moon_waning_crescent_one(),
                weather_moon_waning_crescent_two(),
                weather_moon_waning_crescent_three(),
                weather_moon_waning_crescent_four(),
                weather_moon_waning_crescent_five(),
                weather_moon_waning_crescent_six(),
                weather_wind_direction(),
                weather_day_sleet(),
                weather_night_sleet(),
                weather_night_alt_sleet(),
                weather_sleet(),
                weather_day_haze(),
                weather_wind_beaufort_zero(),
                weather_wind_beaufort_one(),
                weather_wind_beaufort_two(),
                weather_wind_beaufort_three(),
                weather_wind_beaufort_four(),
                weather_wind_beaufort_five(),
                weather_wind_beaufort_six(),
                weather_wind_beaufort_seven(),
                weather_wind_beaufort_eight(),
                weather_wind_beaufort_nine(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_wind_beaufort_onezero(),
                weather_wind_beaufort_oneone(),
                weather_wind_beaufort_onetwo(),
                weather_day_light_wind(),
                weather_tsunami(),
                weather_earthquake(),
                weather_fire(),
                weather_volcano(),
                weather_moonrise(),
                weather_moonset(),
                weather_train(),
                weather_small_craft_advisory(),
                weather_gale_warning(),
                weather_storm_warning(),
                weather_hurricane_warning(),
                weather_moon_alt_waxing_crescent_one(),
                weather_moon_alt_waxing_crescent_two(),
                weather_moon_alt_waxing_crescent_three(),
                weather_moon_alt_waxing_crescent_four(),
                weather_moon_alt_waxing_crescent_five(),
                weather_moon_alt_waxing_crescent_six(),
                weather_moon_alt_first_quarter(),
                weather_moon_alt_waxing_gibbous_one(),
                weather_moon_alt_waxing_gibbous_two(),
                weather_moon_alt_waxing_gibbous_three(),
                weather_moon_alt_waxing_gibbous_four(),
                weather_moon_alt_waxing_gibbous_five(),
                weather_moon_alt_waxing_gibbous_six(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                weather_moon_alt_full(),
                weather_moon_alt_waning_gibbous_one(),
                weather_moon_alt_waning_gibbous_two(),
                weather_moon_alt_waning_gibbous_three(),
                weather_moon_alt_waning_gibbous_four(),
                weather_moon_alt_waning_gibbous_five(),
                weather_moon_alt_waning_gibbous_six(),
                weather_moon_alt_third_quarter(),
                weather_moon_alt_waning_crescent_one(),
                weather_moon_alt_waning_crescent_two(),
                weather_moon_alt_waning_crescent_three(),
                weather_moon_alt_waning_crescent_four(),
                weather_moon_alt_waning_crescent_five(),
                weather_moon_alt_waning_crescent_six(),
                weather_moon_alt_new(),
                custom_folder_npm(),
                custom_folder_git_branch(),
                custom_folder_config(),
                custom_folder_github(),
                custom_folder_open(),
                custom_folder(),
                seti_stylus(),
                seti_project(),
                seti_play_arrow(),
                seti_sass(),
                seti_rails(),
                seti_ruby(),
                seti_python(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                seti_heroku(),
                seti_php(),
                seti_markdown(),
                seti_license(),
                seti_less(),
                seti_javascript(),
                seti_image(),
                seti_html(),
                seti_mustache(),
                seti_gulp(),
                seti_grunt(),
                custom_default(),
                seti_folder(),
                seti_css(),
                seti_config(),
                seti_npm_ignored(),
                seti_home(),
                seti_ejs(),
                seti_xml(),
                seti_bower(),
                seti_coffee(),
                seti_twig(),
                custom_cpp(),
                custom_c(),
                seti_haskell(),
                seti_lua(),
                indentation_line(),
                seti_karma(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
        ]
        .into()
    }
}
