//
//  MediaKeysApplication.m
//  Cog
//
//  Created by Vincent Spader on 10/3/07.
//  Copyright 2007 __MyCompanyName__. All rights reserved.
//

#import "MediaKeysApplication.h"
#import "AppController.h"
#import "Logging.h"

#import <MediaPlayer/MPNowPlayingInfoCenter.h>
#import <MediaPlayer/MPRemoteCommandCenter.h>
#import <MediaPlayer/MPRemoteCommand.h>
#import <MediaPlayer/MPMediaItem.h>
#import <MediaPlayer/MPRemoteCommandEvent.h>

@implementation MediaKeysApplication {
    AppController *_appController;
}

- (void)finishLaunching {
    [super finishLaunching];
    _appController = (AppController *)[self delegate];

    MPRemoteCommandCenter *remoteCommandCenter = [MPRemoteCommandCenter sharedCommandCenter];

    [remoteCommandCenter.playCommand setEnabled:YES];
    [remoteCommandCenter.pauseCommand setEnabled:YES];
    [remoteCommandCenter.togglePlayPauseCommand setEnabled:YES];
    [remoteCommandCenter.stopCommand setEnabled:YES];
    [remoteCommandCenter.changePlaybackPositionCommand setEnabled:YES];
    [remoteCommandCenter.nextTrackCommand setEnabled:YES];
    [remoteCommandCenter.previousTrackCommand setEnabled:YES];

    [[remoteCommandCenter playCommand] addTarget:self action:@selector(clickPlay)];
    [[remoteCommandCenter pauseCommand] addTarget:self action:@selector(clickPause)];
    [[remoteCommandCenter togglePlayPauseCommand] addTarget:self action:@selector(clickPlay)];
    [[remoteCommandCenter stopCommand] addTarget:self action:@selector(clickStop)];
    [[remoteCommandCenter changePlaybackPositionCommand] addTarget:self action:@selector(clickSeek:)];
    [[remoteCommandCenter nextTrackCommand] addTarget:self action:@selector(clickNext)];
    [[remoteCommandCenter previousTrackCommand] addTarget:self action:@selector(clickPrev)];
}

- (MPRemoteCommandHandlerStatus)clickPlay {
    [_appController clickPlay];
    return MPRemoteCommandHandlerStatusSuccess;
}

- (MPRemoteCommandHandlerStatus)clickPause {
    [_appController clickPause];
    return MPRemoteCommandHandlerStatusSuccess;
}

- (MPRemoteCommandHandlerStatus)clickStop {
    [_appController clickStop];
    return MPRemoteCommandHandlerStatusSuccess;
}

- (MPRemoteCommandHandlerStatus)clickNext {
    [_appController clickNext];
    return MPRemoteCommandHandlerStatusSuccess;
}

- (MPRemoteCommandHandlerStatus)clickPrev {
    [_appController clickPrev];
    return MPRemoteCommandHandlerStatusSuccess;
}

- (MPRemoteCommandHandlerStatus)clickSeek: (MPChangePlaybackPositionCommandEvent*)event {
    [_appController clickSeek:event.positionTime];
    return MPRemoteCommandHandlerStatusSuccess;
}


@end