NAME
    Curses::UI::Volume - Create and manipulate volume widgets.

CLASS HIERARCHY
     Curses::UI::Containter
     Curses::UI::Widget
        |
        +----Curses::UI::ContainerWidget
                |
                +----Curses::UI::Volume

SYNOPSIS
     use Curses::UI;
     my $win = $cui->add('window_id', 'Window');
     my $volume = $win->add(
             'myvolume', 'Curses::UI::Volume',
             -volume => 50,
     );
     $volume->draw;

DESCRIPTION
    Curses::UI::Volume is a widget that shows a volume number in graphic
    form. Precision is 8 stays in one character.

STANDARD OPTIONS
    "-parent", "-x", "-y", "-width", "-height", "-pad", "-padleft",
    "-padright", "-padtop", "-padbottom", "-ipad", "-ipadleft",
    "-ipadright", "-ipadtop", "-ipadbottom", "-title", "-titlefullwidth",
    "-titlereverse", "-onfocus", "-onblur".

    For an explanation of these standard options, see Curses::UI::Widget.

REMOVED OPTIONS
    "-text".

WIDGET-SPECIFIC OPTIONS
    *       "-bg" < COLOR >

             Background color.
             Possible values are defined in Curses::UI::Color.
             Default value is 'black'.

    *       "-fg" < COLOR >

             Foreground color.
             Possible values are defined in Curses::UI::Color.
             Default value is 'white'.

    *       "-volume" < PERCENT_NUMBER >

             If PERCENT_NUMBER is set, text on the label will be drawn as volume level for this percent number.
             Volume number is checked for 0 - 100% value.
             Default value is 0.

STANDARD METHODS
    "layout", "draw", "intellidraw", "focus", "onFocus", "onBlur".

    For an explanation of these standard methods, see Curses::UI::Widget.

WIDGET-SPECIFIC METHODS
    *       "new(%parameters)"

             Constructor.
             Create widget with volume in graphic form, defined by -volume number.
             Returns object.

    *       "volume([$volume])"

             Get or set volume number.
             In set mode volume number is checked for 0 - 100% value.
             Returns volume number (0-100%).

EXAMPLE1
     use strict;
     use warnings;

     use Curses::UI;

     # Object.
     my $cui = Curses::UI->new;

     # Main window.
     my $win = $cui->add('window_id', 'Window');

     # Add volume.
     $win->add(
             undef, 'Curses::UI::Volume',
             '-volume' => 50,
     );

     # Binding for quit.
     $win->set_binding(\&exit, "\cQ", "\cC");

     # Loop.
     $cui->mainloop;

     # Output like:
     # █▌

EXAMPLE2
     use strict;
     use warnings;

     use Curses::UI;

     # Object.
     my $cui = Curses::UI->new(
             -color_support => 1,
     );

     # Main window.
     my $win = $cui->add('window_id', 'Window');

     # Add volume.
     my $vol = $win->add(
             undef, 'Curses::UI::Volume',
             '-border' => 1,
             '-volume' => 0,
             '-title' => 'foo',
             '-width' => 10,
     );

     # Binding for quit.
     $win->set_binding(\&exit, "\cQ", "\cC");

     # Time.
     $cui->set_timer(
             'timer',
             sub {
                     my $act = $vol->volume;
                     $act += 5;
                     if ($act > 100) {
                             $act = 0;
                     }
                     $vol->volume($act);
                     return;
             },
             1,
     );

     # Loop.
     $cui->mainloop;

     # Output like:
     # ┌ foo ───┐
     # │▊       │
     # └────────┘

DEPENDENCIES
    Curses, Curses::UI::Common, Curses::UI::ContainerWidget,
    Curses::UI::Label, Curses::UI::Widget, Encode, Readonly.

SEE ALSO
    Task::Curses::UI
        Install the Curses::UI modules.

REPOSITORY
    <https://github.com/michal-josef-spacek/Curses-UI-Volume>

AUTHOR
    Michal Josef Špaček <mailto:skim@cpan.org>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2014-2023 Michal Josef Špaček

    BSD 2-Clause License

VERSION
    0.04

