* added the progress dialogue to the set of widgets

- the Cancel-button is currently disabled because the core doesn't respond correctly (might be my fault though)
- note that the File's Owner of the nib-file is of type VLCInteraction because the class can't resolve its outlets otherwise

* WIDGET_TEXT and WIDGET_INPUT_TEXT are still missing, but will come in the next couple of days

As usual, comments on the implementation and the GUI-design are welcome :)
This commit is contained in:
Felix Paul Kühne 2006-02-19 22:38:07 +00:00
parent 096fa3a90c
commit 9f078d8b45
7 changed files with 103 additions and 15 deletions

View File

@ -80,6 +80,9 @@ EXTRA_DIST += \
extras/MacOSX/Resources/English.lproj/Update.nib/classes.nib \
extras/MacOSX/Resources/English.lproj/Update.nib/info.nib \
extras/MacOSX/Resources/English.lproj/Update.nib/keyedobjects.nib \
extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib \
extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib \
extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib \
extras/MacOSX/Resources/English.lproj/InfoPlist.strings \
extras/MacOSX/Resources/a52.icns \
extras/MacOSX/Resources/aac.icns \

View File

@ -0,0 +1,20 @@
{
IBClasses = (
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{
ACTIONS = {cancelAndClose = id; };
CLASS = VLCInteraction;
LANGUAGE = ObjC;
OUTLETS = {
"o_prog_bar" = id;
"o_prog_cancel_btn" = id;
"o_prog_description" = id;
"o_prog_title" = id;
"o_prog_win" = id;
};
SUPERCLASS = NSObject;
},
{CLASS = VLCInteractionList; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
);
IBVersion = 1;
}

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>103 27 356 240 0 0 1440 878 </string>
<key>IBFramework Version</key>
<string>443.0</string>
<key>IBOpenObjects</key>
<array>
<integer>5</integer>
</array>
<key>IBSystem Version</key>
<string>8H14</string>
</dict>
</plist>

View File

@ -5,6 +5,7 @@
* $Id: vout.h 13803 2005-12-18 18:54:28Z bigben $
*
* Authors: Derk-Jan Hartman <hartman at videolan dot org>
* Felix KŸhne <fkuehne at videolan dot org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -27,12 +28,23 @@
/*****************************************************************************
* VLCInteraction interface
*****************************************************************************/
@interface VLCInteraction : NSObject
{
interaction_dialog_t *p_dialog;
/* progress widget */
IBOutlet id o_prog_bar;
IBOutlet id o_prog_cancel_btn;
IBOutlet id o_prog_description;
IBOutlet id o_prog_title;
IBOutlet id o_prog_win;
interaction_dialog_t * p_dialog;
intf_thread_t * p_intf;
BOOL nib_interact_loaded;
}
- (IBAction)cancelAndClose:(id)sender;
-(id)initDialog: (interaction_dialog_t *)_p_dialog;
-(void)runDialog;
-(void)updateDialog;

View File

@ -1,10 +1,11 @@
/*****************************************************************************
* interaction.h: Mac OS X interaction dialogs
*****************************************************************************
* Copyright (C) 2001-2005 the VideoLAN team
* Copyright (C) 2005-2006 the VideoLAN team
* $Id: vout.h 13803 2005-12-18 18:54:28Z bigben $
*
* Authors: Derk-Jan Hartman <hartman at videolan dot org>
* Felix KŸhne <fkuehne at videolan dot org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -114,6 +115,9 @@
if( !p_dialog )
msg_Err( p_intf, "serious issue (p_dialog == nil)" );
if( !nib_interact_loaded )
nib_interact_loaded = [NSBundle loadNibNamed:@"Interaction" owner:self];
NSString *o_title = [NSString stringWithUTF8String:p_dialog->psz_title ? p_dialog->psz_title : "title"];
NSString *o_description = [NSString stringWithUTF8String:p_dialog->psz_description ? p_dialog->psz_description : ""];
@ -151,21 +155,36 @@
for( i = 0; i < p_dialog->i_widgets; i++ )
{
msg_Dbg( p_intf, "widget: %s", p_dialog->pp_widgets[i]->psz_text );
o_description = [o_description stringByAppendingString:
[NSString stringWithUTF8String: p_dialog->pp_widgets[i]->psz_text]];
o_description = [o_description stringByAppendingString: \
[NSString stringWithUTF8String: \
p_dialog->pp_widgets[i]->psz_text]];
}
if( p_dialog->i_flags & DIALOG_OK_CANCEL )
{
NSBeginInformationalAlertSheet( o_title, @"OK" , @"Cancel", nil, o_window, self,
@selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, o_description );
NSBeginInformationalAlertSheet( o_title, @"OK" , @"Cancel", nil, \
o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\
NULL, nil, o_description );
}
else if( p_dialog->i_flags & DIALOG_YES_NO_CANCEL )
{
NSBeginInformationalAlertSheet( o_title, @"Yes", @"Cancel", @"No", o_window, self,
@selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, o_description );
NSBeginInformationalAlertSheet( o_title, @"Yes", @"Cancel", @"No", \
o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\
NULL, nil, o_description );
}
else if( p_dialog->i_type & WIDGET_PROGRESS )
{
[o_prog_title setStringValue: o_title];
[o_prog_description setStringValue: o_description];
[o_prog_bar setUsesThreadedAnimation: YES];
[o_prog_bar setDoubleValue: 0];
[NSApp beginSheet: o_prog_win modalForWindow: o_window \
modalDelegate: self didEndSelector: \
nil \
contextInfo: nil];
[o_prog_win makeKeyWindow];
}
else
msg_Dbg( p_intf, "requested dialog type not implemented yet" );
msg_Warn( p_intf, "requested dialog type not implemented yet" );
}
}
@ -195,12 +214,25 @@
-(void)updateDialog
{
msg_Dbg( p_intf, "update event" );
int i = 0;
for( i = 0 ; i< p_dialog->i_widgets; i++ )
{
/*msg_Dbg( p_intf, "update event, current value %i for index %i",
(int)(p_dialog->pp_widgets[i]->val.f_float), i);*/
if( p_dialog->i_type & WIDGET_PROGRESS )
[o_prog_bar setDoubleValue: \
(double)(p_dialog->pp_widgets[i]->val.f_float)];
}
}
-(void)hideDialog
{
msg_Dbg( p_intf, "hide event" );
if( p_dialog->i_type & WIDGET_PROGRESS )
{
[NSApp endSheet: o_prog_win];
[o_prog_win close];
}
}
-(void)destroyDialog
@ -208,9 +240,14 @@
msg_Dbg( p_intf, "destroy event" );
}
-(void)dealloc
- (IBAction)cancelAndClose:(id)sender
{
[super dealloc];
/* tell the core that the dialog was cancelled */
vlc_mutex_lock( &p_dialog->p_interaction->object_lock );
p_dialog->i_return = DIALOG_CANCELLED;
p_dialog->i_status = ANSWERED_DIALOG;
vlc_mutex_unlock( &p_dialog->p_interaction->object_lock );
msg_Dbg( p_intf, "dialog cancelled" );
}
@end
@end

View File

@ -317,7 +317,7 @@ static VLCMain *_o_sharedMainInstance = nil;
} else {
_o_sharedMainInstance = [super init];
}
o_about = [[VLAboutBox alloc] init];
o_prefs = nil;
o_open = [[VLCOpen alloc] init];
@ -458,7 +458,7 @@ static VLCMain *_o_sharedMainInstance = nil;
var_Create( p_intf, "interaction", VLC_VAR_ADDRESS );
var_AddCallback( p_intf, "interaction", InteractCallback, self );
p_intf->b_interaction = VLC_TRUE;
nib_main_loaded = TRUE;
}