The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Browser.pm
#
# Copyright (c) 2002 Cunningham & Cunningham, Inc.
# Released under the terms of the GNU General Public License version 2 or later.
#
# Perl translation by Dave W. Smith <dws@postcognitive.com>

package Test::C2FIT::eg::music::Browser;

use base qw(Test::C2FIT::Fixture);
use strict;
use Test::C2FIT::eg::music::MusicLibrary;
use Test::C2FIT::eg::music::MusicPlayer;

sub library {
    my $self = shift;
    my ($path) = @_;

    Test::C2FIT::eg::music::MusicLibrary->load($path);
}

sub totalSongs {
    my $self = shift;

    return scalar @Test::C2FIT::eg::music::MusicLibrary::library;
}

sub playing {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicPlayer::playing()->title();
}

sub select {
    my $self = shift;
    my ($index) = @_;

    Test::C2FIT::eg::music::MusicLibrary::select(
        $Test::C2FIT::eg::music::MusicLibrary::library[ $index - 1 ] );
}

sub title {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicLibrary::looking()->title();
}

sub artist {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicLibrary::looking()->artist();
}

sub album {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicLibrary::looking()->album();
}

sub year {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicLibrary::looking()->year();
}

sub time {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicLibrary::looking()->time();
}

sub track {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicLibrary::looking()->track();
}

# Search buttons

sub sameAlbum {
    my $self = shift;

    Test::C2FIT::eg::music::MusicLibrary::findAlbum(
        Test::C2FIT::eg::music::MusicLibrary::looking()->album() );
}

sub sameArtist {
    my $self = shift;

    Test::C2FIT::eg::music::MusicLibrary::findArtist(
        Test::C2FIT::eg::music::MusicLibrary::looking()->artist() );
}

sub sameGenre {
    my $self = shift;

    Test::C2FIT::eg::music::MusicLibrary::findGenre(
        Test::C2FIT::eg::music::MusicLibrary::looking()->genre() );
}

sub sameYear {
    my $self = shift;

    Test::C2FIT::eg::music::MusicLibrary::findYear(
        Test::C2FIT::eg::music::MusicLibrary::looking()->year() );
}

sub selectedSongs {
    return Test::C2FIT::eg::music::MusicLibrary::displayCount();
}

sub showAll {
    Test::C2FIT::eg::music::MusicLibrary::findAll();
}

# Play buttons

sub play {
    Test::C2FIT::eg::music::MusicPlayer::play(
        Test::C2FIT::eg::music::MusicLibrary::looking() );
}

sub pause {
    Test::C2FIT::eg::music::MusicPlayer::pause();
}

sub status {
    my $self = shift;

    return $Test::C2FIT::eg::music::Music::status;
}

sub remaining {
    my $self = shift;

    return Test::C2FIT::eg::music::MusicPlayer::minutesRemaining();
}

1;

__END__

// Copyright (c) 2002 Cunningham & Cunningham, Inc.
// Released under the terms of the GNU General Public License version 2 or later.

package eg.music;

import fit.*;

public class Browser extends Fixture {


    // Library //////////////////////////////////

    public void library (String path) throws Exception {
        MusicLibrary.load(path);
    }

    public int totalSongs() {
        return MusicLibrary.library.length;
    }

    // Select Detail ////////////////////////////

    public String playing () {
        return MusicPlayer.playing.title;
    }

    public void select (int i) {
        MusicLibrary.select(MusicLibrary.library[i-1]);
    }

    public String title() {
        return MusicLibrary.looking.title;
    }

    public String artist() {
        return MusicLibrary.looking.artist;
    }

    public String album() {
        return MusicLibrary.looking.album;
    }

    public int year() {
        return MusicLibrary.looking.year;
    }

    public double time() {
        return MusicLibrary.looking.time();
    }

    public String track() {
        return MusicLibrary.looking.track();
    }

    // Search Buttons ///////////////////////////

    public void sameAlbum() {
        MusicLibrary.findAlbum(MusicLibrary.looking.album);
    }

    public void sameArtist() {
        MusicLibrary.findArtist(MusicLibrary.looking.artist);
    }

    public void sameGenre() {
        MusicLibrary.findGenre(MusicLibrary.looking.genre);
    }

    public void sameYear() {
        MusicLibrary.findYear(MusicLibrary.looking.year);
    }

    public int selectedSongs() {
        return MusicLibrary.displayCount();
    }

    public void showAll() {
        MusicLibrary.findAll();
    }

    // Play Buttons /////////////////////////////

    public void play() {
        MusicPlayer.play(MusicLibrary.looking);
    }

    public void pause() {
        MusicPlayer.pause();
    }

    public String status() {
        return Music.status;
    }

    public double remaining() {
        return MusicPlayer.minutesRemaining();
    }

}