// -*- objc -*-
// Copyright (c) 2002, Peter Bentley 
// All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
// 
//   Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 
//   Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 
//   The name Peter Bentley may not be used to endorse or promote
// products derived from this software without specific prior
// written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// $Id: OmdUnit.h,v 1.17 2003/08/23 17:04:21 pete Exp $

#import <Cocoa/Cocoa.h>
#import "omd.h"

@class OmdDisc;
@class OmdToc;
@class OmdPosition;
@class OmdTrackInfo;
@class OmdGroupInfo;
@class OmdTocCtlr;

@interface OmdUnit : NSObject {
    omd_unit_t		*unit;
    BOOL		hasDisc;	// Cached value for whether disc is present
    BOOL		triedDisc;	// Cached value for whether we looked for a disc
    
    IBOutlet OmdDisc	*omdDisc;	// Cached disc structure
    OmdToc		*toc;
    OmdTocCtlr		*tocCtlr;
    
}


- (NSString *) unitTypeString;

- (int) unitStatus;
- (NSString *) unitStatusString;
- (NSString *) stringForStatus: (int) status;

- (int) discInserted: (BOOL) useCached; 

- (void) setUnit: (omd_unit_t *) theUnit;
- (omd_unit_t *) unit;

- (OmdDisc *) getDisc;
- (OmdToc *) toc;
- (int) tocRefresh: (OmdToc *) toc;

- (omd_track_t *) rawTrackInfo: (int) trk;
- (omd_group_t *) rawGroupInfo: (int) grp;
   
- (OmdPosition *) getPlaybackPosition;
- (int) setPlaybackPosition: (OmdPosition *) newpos;

- (int) setTrack: (int) t title: (NSString *) str;
- (int) setGroup: (int) g title: (NSString *) str;

- (int) play;
- (int) stop;
- (int) pause;
- (int) fforward;
- (int) rewind;
- (int) nextTrack;
- (int) previousTrack;

- (void) setController: (OmdTocCtlr *) tctlr;
- (void) busy;
- (void) notBusy;

@end

