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.
tdelibs/tdeio/tdeio/observer.h

214 lines
7.3 KiB

/* This file is part of the KDE libraries
Copyright (C) 2000 Matej Koss <koss@miesto.sk>
David Faure <faure@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef __tdeio_observer_h__
#define __tdeio_observer_h__
#include <tqobject.h>
#include <dcopobject.h>
#include <tqintdict.h>
#include <tdeio/global.h>
#include <tdeio/authinfo.h>
#include "tdeio/job.h"
#include "tdeio/skipdlg.h"
#include "tdeio/renamedlg.h"
class UIServer_stub;
class KURL;
namespace TDEIO {
class Job;
}
/**
* Observer for TDEIO::Job progress information.
*
* This class, of which there is always only one instance,
* "observes" what jobs do and forwards this information
* to the progress-info server.
*
* It is a DCOP object so that the UI server can call the
* kill method when the user presses Cancel.
*
* Usually jobs are automatically registered by the
* TDEIO::Scheduler, so you do not have to care about that.
*
* @short Observer for TDEIO::Job progress information
* @author David Faure <faure@kde.org>
*/
class TDEIO_EXPORT Observer : public TQObject, public DCOPObject {
K_DCOP
Q_OBJECT
public:
/**
* Returns the unique observer object.
* @return the observer object
*/
static Observer * self() {
if (!s_pObserver) s_pObserver = new Observer;
return s_pObserver;
}
/**
* Called by the job constructor, to signal its presence to the
* UI Server.
* @param job the new job
* @param showProgress true to show progress, false otherwise
* @return the progress ID assigned by the UI Server to the Job.
*/
int newJob( TDEIO::Job * job, bool showProgress );
/**
* Called by the job destructor, to tell the UI Server that
* the job ended.
* @param progressId the progress ID of the job, as returned by newJob()
*/
void jobFinished( int progressId );
/**
* @deprecated use TDEIO::AutoInfo
*/
bool openPassDlg( const TQString& prompt, TQString& user, TQString& pass,
bool readOnly );
/**
* Opens a password dialog.
* @param info the authentication information
* @return true if successful ("ok" clicked), false otherwise
*/
bool openPassDlg( TDEIO::AuthInfo& info );
/**
* Popup a message box. See TDEIO::SlaveBase.
* This doesn't use DCOP anymore, it shows the dialog in the application's process.
* Otherwise, other apps would block when trying to communicate with UIServer.
* @param progressId the progress ID of the job, as returned by newJob()
* @param type the type of the message box
* @param text the text to show
* @param caption the window caption
* @param buttonYes the text of the "Yes" button
* @param buttonNo the text of the "No button
*/
static int messageBox( int progressId, int type, const TQString &text, const TQString &caption,
const TQString &buttonYes, const TQString &buttonNo );
/**
* Popup a message box. See TDEIO::SlaveBase.
* This doesn't use DCOP anymore, it shows the dialog in the application's process.
* Otherwise, other apps would block when trying to communicate with UIServer.
* @param progressId the progress ID of the job, as returned by newJob()
* @param type the type of the message box
* @param text the text to show
* @param caption the window caption
* @param buttonYes the text of the "Yes" button
* @param buttonNo the text of the "No button
* @param dontAskAgainName A checkbox is added with which further confirmation can be turned off.
* The string is used to lookup and store the setting in tdeioslaverc.
* @since 3.3
*/
static int messageBox( int progressId, int type, const TQString &text, const TQString &caption,
const TQString &buttonYes, const TQString &buttonNo, const TQString &dontAskAgainName );
/**
* @internal
* See renamedlg.h
*/
TDEIO::RenameDlg_Result open_RenameDlg( TDEIO::Job * job,
const TQString & caption,
const TQString& src, const TQString & dest,
TDEIO::RenameDlg_Mode mode,
TQString& newDest,
TDEIO::filesize_t sizeSrc = (TDEIO::filesize_t) -1,
TDEIO::filesize_t sizeDest = (TDEIO::filesize_t) -1,
time_t ctimeSrc = (time_t) -1,
time_t ctimeDest = (time_t) -1,
time_t mtimeSrc = (time_t) -1,
time_t mtimeDest = (time_t) -1
);
/**
* @internal
* See skipdlg.h
*/
TDEIO::SkipDlg_Result open_SkipDlg( TDEIO::Job * job,
bool multi,
const TQString & error_text );
k_dcop:
/**
* Called by the UI Server (using DCOP) if the user presses cancel.
* @param progressId the progress ID of the job, as returned by newJob()
*/
void killJob( int progressId );
/**
* Called by the UI Server (using DCOP) to get all the metadata of the job
* @param progressId the progress IDof the job, as returned by newJob()
*/
TDEIO::MetaData metadata( int progressId );
protected:
static Observer * s_pObserver;
Observer();
~Observer() {}
UIServer_stub * m_uiserver;
TQIntDict< TDEIO::Job > m_dctJobs;
public slots:
void slotTotalSize( TDEIO::Job*, TDEIO::filesize_t size );
void slotTotalFiles( TDEIO::Job*, unsigned long files );
void slotTotalDirs( TDEIO::Job*, unsigned long dirs );
void slotProcessedSize( TDEIO::Job*, TDEIO::filesize_t size );
void slotProcessedFiles( TDEIO::Job*, unsigned long files );
void slotProcessedDirs( TDEIO::Job*, unsigned long dirs );
void slotSpeed( TDEIO::Job*, unsigned long speed );
void slotPercent( TDEIO::Job*, unsigned long percent );
void slotInfoMessage( TDEIO::Job*, const TQString & msg );
void slotCopying( TDEIO::Job*, const KURL& from, const KURL& to );
void slotMoving( TDEIO::Job*, const KURL& from, const KURL& to );
void slotDeleting( TDEIO::Job*, const KURL& url );
/// @since 3.1
void slotTransferring( TDEIO::Job*, const KURL& url );
void slotCreatingDir( TDEIO::Job*, const KURL& dir );
// currently unused
void slotCanResume( TDEIO::Job*, TDEIO::filesize_t offset );
public:
void stating( TDEIO::Job*, const KURL& url );
void mounting( TDEIO::Job*, const TQString & dev, const TQString & point );
void unmounting( TDEIO::Job*, const TQString & point );
protected:
virtual void virtual_hook( int id, void* data );
private:
class ObserverPrivate* d;
};
// -*- mode: c++; c-basic-offset: 2 -*-
#endif