// 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: OmdDisc.m,v 1.11 2002/11/24 13:02:33 pete Exp $ #import "OmdUnit.h" #import "OmdDisc.h" #import "OmdTime.h" CVSID( "$Id: OmdDisc.m,v 1.11 2002/11/24 13:02:33 pete Exp $" ); @implementation OmdDisc - (void) refresh { discInserted = NO; if( unit && [unit discInserted: YES] ) { discInserted = YES; if( omd_disc_get_info( [unit unit], &discInfo ) == NULL ) { slog( LOG_WARNING, "Error fetching disc info" ); discInserted = NO; } } } - (void) dealloc { [unit release]; } - (BOOL) isRecordable { return omd_disc_is_recordable( &discInfo ) ? YES : NO; } - (BOOL) isProtected { return omd_disc_is_protected( &discInfo ) ? YES : NO; } - (int) numTracks { return discInserted ? discInfo.track_count : -1; } - (OmdTime *) timeConvert: (omd_time_t *) t { OmdTime *omt = nil; if( t ) { omt = [[OmdTime alloc] initWithTime: t]; [omt autorelease]; } return omt; } - (OmdTime *) capacity { return discInserted ? [self timeConvert: &discInfo.time_max] : nil; } - (OmdTime *) timeRemaining { return discInserted ? [self timeConvert: &discInfo.time_avail] : nil; } - (OmdTime *) timeUsed { return discInserted ? [self timeConvert: &discInfo.time_used] : nil; } - (NSString *) discTypeString { if( ! discInserted ) { return @"No disc"; } return [self isRecordable] ? @"Recordable" : @"Pre-mastered"; } - (NSString *) discWritableString { if( ! discInserted ) { return @""; } return [self isProtected] ? @"Write Protected" : @""; } - (void) updateView { [discType setStringValue: [self discTypeString]]; [discType2 setStringValue: [self discWritableString]]; if( discInserted ) { [discTracks setIntValue: [self numTracks]]; [discCapacity setStringValue: [[self capacity] stringValue]]; [discUsed setStringValue: [[self timeUsed] stringValue]]; [discRemaining setStringValue: [[self timeRemaining] stringValue]]; [discIndicator setMinValue: 0.0]; [discIndicator setMaxValue: [[self capacity] doubleValue]]; [discIndicator setDoubleValue: [[self capacity] doubleValue] - [[self timeRemaining] doubleValue]]; } else { [discTracks setStringValue: @"" ]; [discCapacity setStringValue: @""]; [discUsed setStringValue: @""]; [discRemaining setStringValue: @""]; } } @end