// 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. #import "OmdController.h" #import "OmdUnit.h" #import "OmdDisc.h" #import "OmdTocCtlr.h" #import "OmdTransport.h" CVSID( "$Id: OmdController.m,v 1.18 2003/08/23 17:03:48 pete Exp $" ); @implementation OmdController - (void) setUnit: (omd_unit_t *) theUnit { // Set the unit [omdUnit setUnit: theUnit]; // We don't know the status yet lastStatus = -1; // Refresh the controllers [omdDisc refresh]; [tocCtlr refresh]; [transport refresh]; // And update all views [self updateView]; } - (void) updateView { NSString *type = [omdUnit unitTypeString]; // Update the view fields for the unit ourself [unitType setStringValue: type]; [window setTitle: [[NSString alloc] initWithFormat: @"Xmd - %@", type]]; [unitStatus setStringValue: [omdUnit unitStatusString]]; // Tell the other controller objects to update their views [omdDisc updateView]; [tocCtlr updateView]; [transport updateView]; } - (void) tick { int status = [omdUnit unitStatus]; if( status != lastStatus ) { slog( LOG_INFO, "New unit status: %04x", status ); [unitStatus setStringValue: [omdUnit stringForStatus: status]]; lastStatus = status; } [transport updateView]; } - (OmdTransport *) getTransport { return transport; } - (OmdDisc *) getDisc { return omdDisc; } - (OmdUnit *) getUnit { return omdUnit; } - (OmdTocCtlr *) getTocCtlr { return tocCtlr; } @end