You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/buildtools/autotools/tdefilednddetailview.h

137 lines
4.4 KiB

/***************************************************************************
* tdefilednddetailview.h - description
* -------------------
* begin : Wed Nov 1 2000
* copyright : (C) 2000 by Björn Sahlström
* email : kbjorn@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* 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 *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
**************************************************************************/
#ifndef TDEFILEDNDDETAILVIEW_H
#define TDEFILEDNDDETAILVIEW_H
//////////////////////////////////////////////////////////////////////
// TQt specific include files
#include <tqwidget.h>
#include <tqtimer.h>
//////////////////////////////////////////////////////////////////////
// KDE specific include files
#include <tdefiledetailview.h>
#include <kurldrag.h>
/**
*This is a fileview inherited from @ref KFileDetailView.
*It adds "drag and drop" handling to the view suitable for a @ref KFileDetailView.
* No special setup is needed, just connect to the @ref dropped signals
* and the view will take care of the rest.
*@short "Drag and drop" aware @ref KFileDetailView
*@author Björn Sahlström
*/
class KFileDnDDetailView : public KFileDetailView
{
Q_OBJECT
public:
/** */
KFileDnDDetailView( TQWidget *parent = 0, const char *name = 0 );
/** */
virtual ~KFileDnDDetailView();
/**
* Set this to true if Drag'n drop should be enabled or not, default is enabled
*/
void setDnDEnabled( bool );
/**
* @returns wether DnD is enabled or not.
*/
bool isDnDEnabled() const
{
return m_dndEnabled;
}
/**
*Sets the auto open time, which means the time that will
*elapse before a directory is automatically opened after entered by DnD.
*Only need to call this if you want to change the predefined time that is 750 ms.
*This also calls @ref #useAutoOpenTimer so no need to call this to.
*/
void setAutoOpenTime( const int& time );
/**
*Set this to true if you want the view to use it's auto open functionallity otherwhise set it to false.
*By default this is turned ON.
*/
void useAutoOpenTimer( bool on = true );
/**
*@returns true if auto open functionallity is turned ON (default), otherwhise false
*@see #useAutoOpenTimer
*@see #setAutoOpenTime
*/
bool isAutoOpening() const
{
return m_useAutoOpenTimer;
}
/** */
virtual void readConfig( TDEConfig*, const TQString& group = TQString() );
/** */
virtual void writeConfig( TDEConfig*, const TQString& group = TQString() );
signals: // Signals
/**
* Emitted whenever an decodable item is dropped in the view.
* Note: The @ref TQDropEvent contains a @ref KURLDrag object.
*/
void dropped( TQDropEvent* );
/**
* Emitted whenever an decodable item is dropped in the view
* Note: The @ref TQDropEvent contains a @ref KURLDrag object.
*/
void dropped( KFileView*, TQDropEvent* );
/**
* Emitted whenever an decodable item is dropped in the view.
*@param urls contains a list of all dropped @ref KURL
*/
void dropped( KFileView*, KURL::List& urls );
protected slots: // Protected slots
/**
* Called when the auto timer times out. Open the current folder.
*/
void slotOpenFolder();
protected: //Protected Methods
/** */
virtual void contentsDragEnterEvent( TQDragEnterEvent *e );
/** */
virtual void contentsDragMoveEvent( TQDragMoveEvent *e );
/** */
virtual void contentsDragLeaveEvent( TQDragLeaveEvent *e );
/** */
virtual void contentsDropEvent( TQDropEvent* e );
/**
* Create dragobject encoding the current selection and starts the drag
*/
virtual void startDrag();
/**
* @returns the dragObject
*/
virtual TQDragObject* dragObject() const;
/**
* @returns true if we can decode the drag and support the action
*/
virtual bool acceptDrag( TQDropEvent* event ) const;
protected: // Private attributes
TQTimer m_autoOpenTimer;
int m_autoOpenTime;
bool m_useAutoOpenTimer;
TQListViewItem* m_dropItem;
KURLDrag* m_dragObject;
bool m_dndEnabled;
};
#endif