Source Code (Use browser search to find items of interest.)
Class Index
ark'Arch (./kdeutils/ark/arch.h:63)
class Arch : public QObject
{
Q_OBJECT
public:
Arch( ArkSettings *_settings, Viewer *_viewer, const QString & _fileName );
virtual ~Arch();
virtual void open() = 0;
virtual void create() = 0;
virtual void remove(QStringList *) = 0;
virtual void addFile(QStringList *) = 0;
virtual void addDir(const QString &) = 0;
// unarch the files in the list or all files if the list is empty.
// if _destDir is empty, look at settings for extract directory
virtual void unarchFile(QStringList *, const QString & _destDir="") = 0;
QString fileName() const { return m_filename; };
enum EditProperties{ Add = 1, Delete = 2, Extract = 4,
View = 8, Integrity = 16 };
bool stderrIsError();
// is the archive readonly?
bool isReadOnly() { return m_bReadOnly; }
void setReadOnly(bool bVal) { m_bReadOnly = bVal; }
protected slots:
void slotCancel();
void slotStoreDataStdout(KProcess*, char*, int);
void slotStoreDataStderr(KProcess*, char*, int);
void slotOpenExited(KProcess*);
void slotExtractExited(KProcess*);
void slotDeleteExited(KProcess*);
void slotAddExited(KProcess*);
void slotReceivedOutput(KProcess *, char*, int);
signals:
void sigOpen( Arch *, bool, const QString &, int );
void sigCreate( Arch *, bool, const QString &, int );
void sigDelete(bool);
void sigExtract(bool);
void sigAdd(bool);
protected: // data
QString m_filename;
QString m_shellErrorData;
char m_buffer[1024];
ArkSettings *m_settings;
Viewer *m_gui;
bool m_bReadOnly; // for readonly archives
};
ark'Arch::Arch() (./kdeutils/ark/arch.cpp:39)
Arch::Arch( ArkSettings *_settings, Viewer *_viewer,
const QString & _fileName )
: m_filename(_fileName), m_settings(_settings), m_gui(_viewer),
m_bReadOnly(false)
{
kdDebug(1601) << "+Arch::Arch" << endl;
kdDebug(1601) << "-Arch::Arch" << endl;
}
ark'Arch::~Arch() (./kdeutils/ark/arch.cpp:48)
Arch::~Arch()
{
}
ark'Arch::slotCancel() (./kdeutils/ark/arch.cpp:52)
void Arch::slotCancel()
{
// m_kp->kill();
}
ark'Arch::slotStoreDataStdout() (./kdeutils/ark/arch.cpp:57)
void Arch::slotStoreDataStdout(KProcess*, char* _data, int _length)
{
char c = _data[_length];
_data[_length] = '\0';
m_settings->appendShellOutputData( _data );
_data[_length] = c;
}
ark'Arch::slotStoreDataStderr() (./kdeutils/ark/arch.cpp:66)
void Arch::slotStoreDataStderr(KProcess*, char* _data, int _length)
{
char c = _data[_length];
_data[_length] = '\0';
m_shellErrorData.append( _data );
_data[_length] = c;
}
ark'Arch::slotOpenExited() (./kdeutils/ark/arch.cpp:75)
void Arch::slotOpenExited(KProcess* _kp)
{
kdDebug(1601) << "normalExit = " << _kp->normalExit() << endl;
kdDebug(1601) << "exitStatus = " << _kp->exitStatus() << endl;
bool bNormalExit = _kp->normalExit();
int exitStatus = 100; // arbitrary bad exit status
if (bNormalExit)
exitStatus = _kp->exitStatus();
if (1 == exitStatus)
exitStatus = 0; // because 1 means empty archive - not an error.
// Is this a safe assumption?
if(!exitStatus)
emit sigOpen( this, true, m_filename,
Arch::Extract | Arch::Delete | Arch::Add | Arch::View );
else
emit sigOpen( this, false, QString::null, 0 );
delete _kp;
_kp = NULL;
}
ark'Arch::slotDeleteExited() (./kdeutils/ark/arch.cpp:101)
void Arch::slotDeleteExited(KProcess *_kp)
{
kdDebug(1601) << "+Arch::slotDeleteExited" << endl;
bool bSuccess = false;
kdDebug(1601) << "normalExit = " << _kp->normalExit() << endl;
if( _kp->normalExit() )
kdDebug(1601) << "exitStatus = " << _kp->exitStatus() << endl;
if( _kp->normalExit() && (_kp->exitStatus()==0) )
{
if(stderrIsError())
{
KMessageBox::error( 0, i18n("You probably don't have sufficient permissions.\n"
"Please check the file owner and the integrity\n"
"of the archive.") );
}
else
bSuccess = true;
}
else
KMessageBox::sorry( (QWidget *)0, i18n("Deletion failed"), i18n("Error") );
emit sigDelete(bSuccess);
delete _kp;
_kp = NULL;
kdDebug(1601) << "-Arch::slotDeleteExited" << endl;
}
ark'Arch::slotExtractExited() (./kdeutils/ark/arch.cpp:132)
void Arch::slotExtractExited(KProcess *_kp)
{
kdDebug(1601) << "+Arch::slotExtractExited" << endl;
bool bSuccess = false;
kdDebug(1601) << "normalExit = " << _kp->normalExit() << endl;
if( _kp->normalExit() )
kdDebug(1601) << "exitStatus = " << _kp->exitStatus() << endl;
if( _kp->normalExit() && (_kp->exitStatus()==0) )
{
if(stderrIsError())
{
KMessageBox::error( (QWidget *) 0, i18n("Error"), i18n("Something bad happened when trying to extract...") );
}
else
bSuccess = true;
}
else
KMessageBox::sorry((QWidget *)0, i18n("Error"), i18n("Extraction failed"));
emit sigExtract(bSuccess);
delete _kp;
_kp = NULL;
kdDebug(1601) << "-Arch::slotExtractExited" << endl;
}
ark'Arch::slotAddExited() (./kdeutils/ark/arch.cpp:161)
void Arch::slotAddExited(KProcess *_kp)
{
kdDebug(1601) << "+Arch::slotAddExited" << endl;
bool bSuccess = false;
kdDebug(1601) << "normalExit = " << _kp->normalExit() << endl;
if( _kp->normalExit() )
kdDebug(1601) << "exitStatus = " << _kp->exitStatus() << endl;
if( _kp->normalExit() && (_kp->exitStatus()==0) )
{
if(stderrIsError())
{
KMessageBox::error( 0, i18n("You probably don't have sufficient permissions\n"
"Please check the file owner and the integrity\n"
"of the archive.") );
}
else
bSuccess = true;
}
else
KMessageBox::sorry((QWidget *)0, i18n("Sorry, the add operation failed.\nPlease see the last shell output for more information"), i18n("Error"));
emit sigAdd(bSuccess);
delete _kp;
_kp = NULL;
kdDebug(1601) << "-Arch::slotAddExited" << endl;
}
ark'Arch::stderrIsError() (./kdeutils/ark/arch.cpp:193)
bool Arch::stderrIsError()
{
return m_shellErrorData.find(QString("eror")) != -1;
}
ark'Arch::slotReceivedOutput() (./kdeutils/ark/arch.cpp:198)
void Arch::slotReceivedOutput(KProcess*, char* _data, int _length)
{
char c = _data[_length];
_data[_length] = '\0';
m_settings->appendShellOutputData( _data );
_data[_length] = c;
}
/// UTILS