#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
    address: "/run/user/1000/mpd/socket",
    password: None,
    theme: None,
    cache_dir: None,
    on_song_change: None,
    volume_step: 5,
    max_fps: 165,
    scrolloff: 0,
    wrap_navigation: false,
    enable_mouse: true,
    scroll_amount: 1,
    enable_config_hot_reload: true,
    enable_lyrics_hot_reload: false,
    status_update_interval_ms: 1000,
    rewind_to_start_sec: None,
    keep_state_on_song_change: true,
    reflect_changes_to_playlist: false,
    select_current_song_on_change: false,
    ignore_leading_the: false,
    browser_song_sort: [Disc, Track, Artist, Title],
    directories_sort: SortFormat(group_by_type: true, reverse: false),
    auto_open_downloads: true,
    album_art: (
        method: Auto,
        max_size_px: (width: 1200, height: 1200),
        disabled_protocols: ["http://", "https://"],
        vertical_align: Center,
        horizontal_align: Center,
    ),
    keybinds: (
        global: {
            "q":          Quit,
            "?":          ShowHelp,
            ":":          CommandMode,
            "oI":         ShowCurrentSongInfo,
            "oo":         ShowOutputs,
            "op":         ShowDecoders,
            "od":         ShowDownloads,
            "oP":         Partition(),
            "z":          ToggleRepeat,
            "x":          ToggleRandom,
            "c":          ToggleConsume,
            "v":          ToggleSingle,
            "p":          TogglePause,
            "s":          Stop,
            ">":          NextTrack,
            "<":          PreviousTrack,
            "f":          SeekForward,
            "b":          SeekBack,
            ".":          VolumeUp,
            ",":          VolumeDown,
            "<Tab>":      NextTab,
            "gt":         NextTab,
            "<S-Tab>":    PreviousTab,
            "gT":         PreviousTab,
            "1":          SwitchToTab("Queue"),
            "2":          SwitchToTab("Directories"),
            "3":          SwitchToTab("Artists"),
            "4":          SwitchToTab("Album Artists"),
            "5":          SwitchToTab("Albums"),
            "6":          SwitchToTab("Playlists"),
            "7":          SwitchToTab("Search"),
            "<C-u>":      Update,
            "<C-U>":      Rescan,
            "R":          AddRandom,
        },
        navigation: {
            "<C-c>":      Close,
            "<Esc>":      Close,
            "<CR>":       Confirm,
            "k":          Up,
            "<Up>":       Up,
            "j":          Down,
            "<Down>":     Down,
            "h":          Left,
            "<Left>":     Left,
            "l":          Right,
            "<Right>":    Right,
            "<C-w>k":     PaneUp,
            "<C-Up>":     PaneUp,
            "<C-w>j":     PaneDown,
            "<C-Down>":   PaneDown,
            "<C-w>h":     PaneLeft,
            "<C-Left>":   PaneLeft,
            "<C-w>l":     PaneRight,
            "<C-Right>":  PaneRight,
            "K":          MoveUp,
            "J":          MoveDown,
            "<C-u>":      UpHalf,
            "<C-d>":      DownHalf,
            "<C-b>":      PageUp,
            "<PageUp>":   PageUp,
            "<C-f>":      PageDown,
            "<PageDown>": PageDown,
            "gg":         Top,
            "G":          Bottom,
            "<Space>":    Select,
            "<C-Space>":  InvertSelection,
            "/":          EnterSearch,
            "n":          NextResult,
            "N":          PreviousResult,
            "a":          Add,
            "A":          AddAll,
            "D":          Delete,
            "<C-r>":      Rename,
            "i":          FocusInput,
            "oi":         ShowInfo,
            "<C-z>":      ContextMenu(),
            "<C-s>s":     Save(kind: Modal(all: false, duplicates_strategy: Ask)),
            "<C-s>a":     Save(kind: Modal(all: true, duplicates_strategy: Ask)),
            "r":          Rate(),
        },
        queue: {
            "d":          Delete,
            "D":          DeleteAll,
            "<CR>":       Play,
            "C":          JumpToCurrent,
            "X":          Shuffle,
        },
    ),
    search: (
        case_sensitive: false,
        ignore_diacritics: false,
        search_button: false,
        mode: Contains,
        tags: [
            (value: "any",         label: "Any Tag"),
            (value: "artist",      label: "Artist"),
            (value: "album",       label: "Album"),
            (value: "albumartist", label: "Album Artist"),
            (value: "title",       label: "Title"),
            (value: "filename",    label: "Filename"),
            (value: "genre",       label: "Genre"),
        ],
    ),
    artists: (
        album_display_mode: SplitByDate,
        album_sort_by: Date,
        album_date_tags: [Date],
    ),
    tabs: [
        (
            name: "Queue",
            pane: Split(
                direction: Horizontal,
                panes: [
                    (
                        size: "35%",
                        pane: Split(
                            direction: Vertical,
                            panes: [
                                (
                                    size: "100%",
                                    borders: "LEFT | RIGHT | TOP",
                                    border_symbols: Rounded,
                                    pane: Pane(AlbumArt)
                                ),
                                (
                                    size: "7",
                                    borders: "ALL",
                                    border_symbols: Inherited(parent: Rounded, top_left: "├", top_right: "┤",),
                                    border_title: [(kind: Text(" Lyrics "))],
                                    border_title_alignment: Right,
                                    pane: Pane(Lyrics)
                                ),
                            ],
                        ),
                    ), 
                    (
                        size: "65%",
                        pane: Split(
                            direction: Vertical,
                            panes: [
                                (
                                    size: "3",
                                    borders: "ALL",
                                    border_symbols: Inherited(parent: Rounded, bottom_left: "├", bottom_right: "┤",),
                                    pane: Split(
                                        direction: Horizontal,
                                        panes: [
                                            (
                                                size: "1",
                                                pane: Pane(Empty())
                                            ),
                                            (
                                                size: "100%",
                                                pane: Pane(QueueHeader())
                                            ),
                                        ]
                                    )
                                ),
                                (
                                    size: "100%",
                                    borders: "LEFT | RIGHT | BOTTOM",
                                    border_symbols: Rounded,
                                    pane: Split(
                                        direction: Horizontal,
                                        panes: [
                                            (
                                                size: "1",
                                                pane: Pane(Empty())
                                            ),
                                            (
                                                size: "100%",
                                                pane: Pane(Queue)
                                            ),
                                        ]
                                    )
                                ),
                            ],
                        )
                    ),
                ],
            ),
        ),
        (
            name: "Directories",
            borders: "ALL",
            border_symbols: Rounded,
            pane: Split(
                size: "100%",
                direction: Vertical,
                panes: [(pane: Pane(Directories), size: "100%", borders: "ALL", border_symbols: Rounded)],
            )
        ),
        (
            name: "Artists",
            borders: "ALL",
            border_symbols: Rounded,
            pane: Split(
                size: "100%",
                direction: Vertical,
                panes: [(pane: Pane(Artists), size: "100%", borders: "ALL", border_symbols: Rounded)],
            )
        ),
        (
            name: "Album Artists",
            borders: "ALL",
            border_symbols: Rounded,
            pane: Split(
                size: "100%",
                direction: Vertical,
                panes: [(pane: Pane(AlbumArtists), size: "100%", borders: "ALL", border_symbols: Rounded)],
            )
        ),
        (
            name: "Albums",
            borders: "ALL",
            border_symbols: Rounded,
            pane: Split(
                size: "100%",
                direction: Vertical,
                panes: [(pane: Pane(Albums), size: "100%", borders: "ALL", border_symbols: Rounded)],
            )
        ),
        (
            name: "Playlists",
            borders: "ALL",
            border_symbols: Rounded,
            pane: Split(
                size: "100%",
                direction: Vertical,
                panes: [(pane: Pane(Playlists), size: "100%", borders: "ALL", border_symbols: Rounded)],
            )
        ),
        (
            name: "Search",
            borders: "ALL",
            border_symbols: Rounded,
            pane: Split(
                size: "100%",
                direction: Vertical,
                panes: [(pane: Pane(Search), size: "100%", borders: "ALL", border_symbols: Rounded)],
            )
        ),
    ],
)
