/***************************************************************************
                            KURLRequesterDlg.h -  description
                             -------------------
    begin                : Fri Mar  8 13:55:08 2002
    copyright            : (C) 2000-2002 Lost Highway Ltd. All rights reserved.
    email                : Lost_Highway@tipitina.demon.co.uk
    generated by         : duke@tipitina on Fri Mar  8 13:55:08 2002, using kalyptus 0.9.
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This library is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU Library General Public License as       *
 *   published by the Free Software Foundation; either version 2 of the    *
 *   License, or (at your option) any later version.                       *
 *                                                                         *
 ***************************************************************************/

#ifndef KURLREQUESTERDLG_H
#define KURLREQUESTERDLG_H

#include <Foundation/NSObject.h>
#include <Foundation/NSString.h>
#include <kdeobjc/KDialogBase.h>

/**

 Dialog in which a user can enter a filename or url. It is a dialog
 encapsulating @ref KURLRequester. The API is derived from
 @ref KFileDialog.

 @author Wilco Greven <j.w.greven@student.utwente.nl>
 
 @short Simple dialog to enter a filename/url.

*/
@class KFileDialog; 
@class KURL; 

@class KURLRequester; 

@interface KURLRequesterDlg : KDialogBase 

/** 
 Constructs a KURLRequesterDlg.

*/
- initWithText: (NSString *)url parent: (QWidget *)parent name: (NSString *)name modal: (BOOL)modal;
- initWithText: (NSString *)url parent: (QWidget *)parent name: (NSString *)name ;

/** 
 Constructs a KURLRequesterDlg.

*/
- initWithText: (NSString *)url text: (NSString *)text parent: (QWidget *)parent name: (NSString *)name modal: (BOOL)modal;
- initWithText: (NSString *)url text: (NSString *)text parent: (QWidget *)parent name: (NSString *)name ;

/** 
 Destructs the dialog.
     
*/
- (void) dealloc;

/** 
 Returns the fully qualified filename.
     
*/
- (KURL*) selectedURL;

/** 
 Returns a pointer to the file dialog used by the KURLRequester.
     
*/
- (KFileDialog*) fileDialog;

/** 
 Returns a pointer to the KURLRequester.
     
*/
- (KURLRequester*) urlRequester;

/** 
 Creates a modal dialog, executes it and returns the selected URL.

*/
+ (KURL*) getURL: (NSString *)url parent: (QWidget *)parent caption: (NSString *)caption;
+ (KURL*) getURL;
@end

/** Override these methods in subclasses of KURLRequesterDlg to customise event handling behaviour */
@protocol KURLRequesterDlgEventHandling

/** 
 Maps some keys to the actions buttons. F1 is mapped to the Help
 button if present and Escape to the Cancel or Close if present. The
 button action event is animated.
     
*/
- keyPressEvent:(QKeyEvent*) e;
- keyReleaseEvent:(QKeyEvent*) arg1;
- focusOutEvent:(QFocusEvent*) arg1;
- childEvent:(QChildEvent*) arg1;
- dragMoveEvent:(QDragMoveEvent*) arg1;
- leaveEvent:(QEvent*) arg1;
- tabletEvent:(QTabletEvent*) arg1;
- showEvent:(QShowEvent*) arg1;
- contextMenuEvent:(QContextMenuEvent*) arg1;
- mousePressEvent:(QMouseEvent*) arg1;
- imComposeEvent:(QIMEvent*) arg1;
- customEvent:(QCustomEvent*) arg1;
- mouseReleaseEvent:(QMouseEvent*) arg1;
- mouseDoubleClickEvent:(QMouseEvent*) arg1;
- dragLeaveEvent:(QDragLeaveEvent*) arg1;
- enterEvent:(QEvent*) arg1;
- focusInEvent:(QFocusEvent*) arg1;
- imEndEvent:(QIMEvent*) arg1;
- dropEvent:(QDropEvent*) arg1;
- dragEnterEvent:(QDragEnterEvent*) arg1;
- mouseMoveEvent:(QMouseEvent*) arg1;
- moveEvent:(QMoveEvent*) arg1;
- wheelEvent:(QWheelEvent*) arg1;

/** 
 Emits the @ref hidden signal. You can connect to that signal to
 detect when a dialog has been closed.
     
*/
- hideEvent:(QHideEvent*) arg1;
- imStartEvent:(QIMEvent*) arg1;

/** 
 Detects when a dialog is being closed from the window manager
 controls. If the Cancel or Close button is present then the button
 is activated. Otherwise standard @ref QDialog behavior
 will take place.
     
*/
- closeEvent:(QCloseEvent*) e;
- paintEvent:(QPaintEvent*) arg1;
- timerEvent:(QTimerEvent*) arg1;
- resizeEvent:(QResizeEvent*) arg1;
@end


#endif
