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.
tdebase/libkonq/konq_operations.h

216 lines
7.3 KiB

/* This file is part of the KDE project
Copyright (C) 2000 David Faure <faure@kde.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
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __konq_operations_h__
#define __konq_operations_h__
#include <kurl.h>
#include <libkonq_export.h>
#include <tqobject.h>
#include <tqevent.h>
namespace TDEIO { class Job; class CopyInfo; }
class TQWidget;
class KFileItem;
class KonqMainWindow;
/**
* Implements file operations (move,del,trash,shred,paste,copy,move,link...)
* for konqueror and kdesktop whatever the view mode is (icon, tree, ...)
*/
class LIBKONQ_EXPORT KonqOperations : public TQObject
{
TQ_OBJECT
protected:
KonqOperations( TQWidget * parent );
virtual ~KonqOperations();
public:
/**
* Pop up properties dialog for mimetype @p mimeType.
*/
static void editMimeType( const TQString & mimeType );
enum { TRASH, DEL, SHRED, COPY, MOVE, LINK, EMPTYTRASH, STAT, MKDIR, RESTORE, UNKNOWN };
/**
* Delete the @p selectedURLs if possible.
*
* @param parent parent widget (for error dialog box if any)
* @param method should be TRASH, DEL or SHRED
* @param selectedURLs the URLs to be deleted
*/
static void del( TQWidget * parent, int method, const KURL::List & selectedURLs );
/**
* Copy the @p selectedURLs to the destination @p destURL.
*
* @param parent parent widget (for error dialog box if any)
* @param method should be COPY, MOVE or LINK
* @param selectedURLs the URLs to copy
* @param destURL destination of the copy
*
* @todo document restrictions on the kind of destination
*/
static void copy( TQWidget * parent, int method, const KURL::List & selectedURLs, const KURL& destURL );
/**
* Drop
* @param destItem destination KFileItem for the drop (background or item)
* @param destURL destination URL for the drop.
* @param ev the drop event
* @param parent parent widget (for error dialog box if any)
*
* If destItem is 0L, doDrop will stat the URL to determine it.
*/
static void doDrop( const KFileItem * destItem, const KURL & destURL, TQDropEvent * ev, TQWidget * parent );
/**
* Paste the clipboard contents
*/
static void doPaste( TQWidget * parent, const KURL & destURL, const TQPoint &pos );
static void doPaste( TQWidget * parent, const KURL & destURL );
static void emptyTrash();
static void restoreTrashedItems( const KURL::List& urls );
/**
* Create a directory
*/
static void mkdir( TQWidget *parent, const KURL & url );
/**
* Get info about a given URL, and when that's done (it's asynchronous!),
* call a given slot with the KFileItem * as argument.
* The KFileItem will be deleted by statURL after calling the slot. Make a copy
* if you need one !
*/
static void statURL( const KURL & url, const TQObject *receiver, const char *member );
/**
* Do a renaming.
* @param parent the parent widget, passed to KonqOperations ctor
* @param oldurl the current url of the file to be renamed
* @param name the new name for the file. Shouldn't include '/'.
*/
static void rename( TQWidget * parent, const KURL & oldurl, const TQString & name );
/**
* Do a renaming.
* @param parent the parent widget, passed to KonqOperations ctor
* @param oldurl the current url of the file to be renamed
* @param newurl the new url for the file
* Use this version if the other one wouldn't work :) (e.g. because name could
* be a relative path, including a '/').
*/
static void rename( TQWidget * parent, const KURL & oldurl, const KURL & newurl );
/**
* Ask for the name of a new directory and create it.
* @param parent the parent widget
* @param baseURL the directory to create the new directory in
*/
static void newDir( TQWidget * parent, const KURL & baseURL );
enum ConfirmationType { DEFAULT_CONFIRMATION, SKIP_CONFIRMATION, FORCE_CONFIRMATION };
/**
* Ask for confirmation before deleting/trashing @p selectedURLs.
* @param selectedURLs the urls about to be deleted
* @param method the type of deletion (DEL for real deletion, anything else for trash)
* @param confirmation default (based on config file), skip (no confirmation) or force (always confirm)
* @param widget parent widget for message boxes
* @return true if confirmed
*/
static bool askDeleteConfirmation( const KURL::List & selectedURLs, int method, ConfirmationType confirmation, TQWidget* widget );
signals:
void statFinished( const KFileItem * item );
void aboutToCreate(const TQPoint &pos, const TQValueList<TDEIO::CopyInfo> &files);
protected:
void _del( int method, const KURL::List & selectedURLs, ConfirmationType confirmation );
void _restoreTrashedItems( const KURL::List& urls );
void _statURL( const KURL & url, const TQObject *receiver, const char *member );
// internal, for COPY/MOVE/LINK/MKDIR
void setOperation( TDEIO::Job * job, int method, const KURL::List & src, const KURL & dest );
struct DropInfo
{
DropInfo( uint k, KURL::List & l, const TQMap<TQString,TQString> &m,
int x, int y, TQDropEvent::Action a ) :
keybstate(k), lst(l), metaData(m), mousePos(x,y), action(a) {}
uint keybstate;
KURL::List lst;
TQMap<TQString,TQString> metaData;
TQPoint mousePos;
TQDropEvent::Action action;
};
// internal, for doDrop
void setDropInfo( DropInfo * info ) { m_info = info; }
struct KIOPasteInfo // KDE4: remove and use DropInfo instead or a TQPoint member
{
TQByteArray data; // unused
KURL destURL; // unused
TQPoint mousePos;
TQString dialogText; // unused
};
void setPasteInfo( KIOPasteInfo * info ) { m_pasteInfo = info; }
private:
TQWidget* parentWidget() const;
protected slots:
void slotAboutToCreate(TDEIO::Job *job, const TQValueList<TDEIO::CopyInfo> &files);
void slotResult( TDEIO::Job * job );
void slotStatResult( TDEIO::Job * job );
void asyncDrop( const KFileItem * item );
void doFileCopy();
private:
int m_method;
//KURL::List m_srcURLs;
KURL m_destURL;
// for doDrop
DropInfo * m_info;
KIOPasteInfo * m_pasteInfo;
};
#include <tdeio/job.h>
/// Restore multiple trashed files
class KonqMultiRestoreJob : public TDEIO::Job
{
TQ_OBJECT
public:
KonqMultiRestoreJob( const KURL::List& urls, bool showProgressInfo );
protected slots:
virtual void slotStart();
virtual void slotResult( TDEIO::Job *job );
private:
const KURL::List m_urls;
KURL::List::const_iterator m_urlsIterator;
int m_progress;
};
#endif