Smb4K – Samba (SMB) share advanced browser
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

191 lignes
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