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.
192 line
5.3 KiB
192 line
5.3 KiB
/***************************************************************************
|
|
smb4kpreviewer - This class queries a remote share for a preview
|
|
-------------------
|
|
begin : Mo Mai 28 2007
|
|
copyright : (C) 2007 by Alexander Reinholdt
|
|
email : dustpuppy@users.berlios.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* 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 SMB4KPREVIEWER_H
|
|
#define SMB4KPREVIEWER_H
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
// TQt includes
|
|
#include <tqobject.h>
|
|
#include <tqstring.h>
|
|
#include <tqptrqueue.h>
|
|
|
|
// KDE includes
|
|
#include <kprocess.h>
|
|
|
|
// forward declarations
|
|
class Smb4KPreviewItem;
|
|
|
|
/**
|
|
* This class is part of the core of Smb4K. It queries a remote SMB share for
|
|
* a preview and returns the result.
|
|
*
|
|
* @author Alexander Reinholdt <dustpuppy@users.berlios.de>
|
|
*/
|
|
|
|
class Smb4KPreviewer : public TQObject
|
|
{
|
|
Q_OBJECT
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/**
|
|
* The constructor
|
|
*
|
|
* @param parent The parent object
|
|
*
|
|
* @param name The name of this object
|
|
*/
|
|
Smb4KPreviewer( TQObject *parent = 0, const char *name = 0 );
|
|
|
|
/**
|
|
* The destructor
|
|
*/
|
|
~Smb4KPreviewer();
|
|
|
|
/**
|
|
* Get a preview of the contents of @p item.
|
|
*
|
|
* In the case that @p item represents a 'homes' share, the user will be
|
|
* prompted for the user name with which he wants to log in and the share
|
|
* name of @p item will be set to the result.
|
|
*
|
|
* @param item The item for which a preview should be
|
|
* requested.
|
|
*
|
|
* @returns TRUE if einter the share name is not 'homes' or if it could
|
|
* successfully be set to a user name. Otherwise it returns FALSE.
|
|
*/
|
|
bool preview( Smb4KPreviewItem *item );
|
|
|
|
/**
|
|
* Using this function, you can find out whether the previewer is running
|
|
* at the moment.
|
|
*
|
|
* @returns TRUE if the previewer is running or FALSE otherwise.
|
|
*/
|
|
bool isRunning() { return m_working; }
|
|
|
|
/**
|
|
* Abort any action the previewer is performing at the moment and clear
|
|
* the queue.
|
|
*/
|
|
void abort();
|
|
|
|
signals:
|
|
/**
|
|
* Emits the state the previewer is in
|
|
*
|
|
* @param state The state
|
|
*/
|
|
void state( int state );
|
|
|
|
/**
|
|
* Emits the preview after the process exited successfully. Get the contents
|
|
* of the remote share by looping through the Smb4KPreviewItem::contents() list.
|
|
*
|
|
* @param item The item for which the preview was received.
|
|
*/
|
|
void result( Smb4KPreviewItem *item );
|
|
|
|
/**
|
|
* This signal is emitted if an error occurred.
|
|
*/
|
|
void failed();
|
|
|
|
protected:
|
|
/**
|
|
* Reimplemented from TQObject
|
|
*/
|
|
void timerEvent( TQTimerEvent *e );
|
|
|
|
protected slots:
|
|
/**
|
|
* This slot receives output from stdout.
|
|
*
|
|
* @param proc The process
|
|
*
|
|
* @param buf The buffer
|
|
*
|
|
* @param len The length of the buffer
|
|
*/
|
|
void slotReceivedStdout( KProcess *proc, char *buf, int len );
|
|
|
|
/**
|
|
* This slot receives output from stderr.
|
|
*
|
|
* @param proc The process
|
|
*
|
|
* @param buf The buffer
|
|
*
|
|
* @param len The length of the buffer
|
|
*/
|
|
void slotReceivedStderr( KProcess *proc, char *buf, int len );
|
|
|
|
/**
|
|
* Is called, when the KProcess exited.
|
|
*
|
|
* @param proc The process that exited
|
|
*/
|
|
void slotProcessExited( KProcess *proc );
|
|
|
|
private:
|
|
/**
|
|
* The KProcess object
|
|
*/
|
|
KProcess *m_proc;
|
|
|
|
/**
|
|
* The output buffer
|
|
*/
|
|
TQString m_buffer;
|
|
|
|
/**
|
|
* This is the pointer to the Smb4KPreviewItem that's
|
|
* processed.
|
|
*/
|
|
Smb4KPreviewItem *m_item;
|
|
|
|
/**
|
|
* Indicates whether the previewer is running or not.
|
|
*/
|
|
bool m_working;
|
|
|
|
/**
|
|
* This pointer queue holds the pointers to the Smb4KPreviewItem
|
|
* objects that are to be processed.
|
|
*/
|
|
TQPtrQueue<Smb4KPreviewItem> m_queue;
|
|
|
|
/**
|
|
* The timer id
|
|
*/
|
|
int m_timer_id;
|
|
};
|
|
|
|
#endif
|