|
|
|
/* 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
|