KDE/kdevplatform/plugins/subversion
Andreas Pakulat
apaku at gmx.de
Tue Mar 18 22:28:38 UTC 2008
SVN commit 787300 by apaku:
Just found a nice thread on the qt-interest list that queued connections work automatically, without the need for any "helper" object that lives in the non-gui-thread. So remove all the helper classes and simply emit the signals directly, Qt auto-connection will take care of the rest.
cc'ing the -devel list in case somebody else knows of similar code
CCMAIL:kdevelop-devel at kdevelop.org
M +2 -9 svnblamejob.cpp
M +0 -12 svnblamejob_p.h
M +1 -5 svncatjob.cpp
M +0 -13 svncatjob_p.h
M +1 -5 svndiffjob.cpp
M +0 -13 svndiffjob_p.h
M +1 -4 svninfojob.cpp
M +0 -13 svninfojob_p.h
M +7 -78 svninternaljobbase.cpp
M +0 -3 svninternaljobbase.h
M +1 -6 svnlogjob.cpp
M +0 -12 svnlogjob_p.h
M +2 -5 svnstatusjob.cpp
M +0 -13 svnstatusjob_p.h
--- trunk/KDE/kdevplatform/plugins/subversion/svnblamejob.cpp #787299:787300
@@ -41,17 +41,11 @@
void SvnInternalBlameJob::run()
{
- BlameJobHelper helper;
- connect( &helper, SIGNAL( blameLine( const KDevelop::VcsAnnotationLine& ) ),
- this, SIGNAL( blameLine( const KDevelop::VcsAnnotationLine& ) ),
- Qt::QueuedConnection );
-
-
initBeforeRun();
SvnClient cli(m_ctxt);
connect( &cli, SIGNAL( lineReceived( const KDevelop::VcsAnnotationLine& ) ),
- &helper, SLOT( emitBlameLine( const KDevelop::VcsAnnotationLine& ) ) );
+ this, SIGNAL( blameLine( const KDevelop::VcsAnnotationLine& ) ) );
try
{
QByteArray ba = location().path().toUtf8();
@@ -127,8 +121,7 @@
}else
{
connect( m_job, SIGNAL( blameLine( const KDevelop::VcsAnnotationLine& ) ),
- this, SLOT( blameLineReceived( const KDevelop::VcsAnnotationLine& ) ),
- Qt::QueuedConnection );
+ this, SLOT( blameLineReceived( const KDevelop::VcsAnnotationLine& ) ) );
kDebug(9510) << "blameging url:" << m_job->location();
ThreadWeaver::Weaver::instance()->enqueue( m_job );
}
--- trunk/KDE/kdevplatform/plugins/subversion/svnblamejob_p.h #787299:787300
@@ -27,18 +27,6 @@
#include <vcsrevision.h>
#include <vcsevent.h>
-class BlameJobHelper : public QObject
-{
- Q_OBJECT
-public slots:
- void emitBlameLine( const KDevelop::VcsAnnotationLine& line )
- {
- emit blameLine( line );
- }
-signals:
- void blameLine( const KDevelop::VcsAnnotationLine& );
-};
-
class SvnInternalBlameJob : public SvnInternalJobBase
{
Q_OBJECT
--- trunk/KDE/kdevplatform/plugins/subversion/svncatjob.cpp #787299:787300
@@ -44,10 +44,6 @@
void SvnInternalCatJob::run()
{
- CatJobHelper helper;
- connect( &helper, SIGNAL( gotContent( const QString& ) ),
- this, SIGNAL( gotContent( const QString& ) ), Qt::QueuedConnection );
-
initBeforeRun();
SvnClient cli(m_ctxt);
@@ -72,7 +68,7 @@
}
svn::Revision srcRev = createSvnCppRevisionFromVcsRevision( srcRevision() );
content = QString::fromUtf8( cli.cat( svn::Path( srcba.data() ), srcRev ).c_str() );
- helper.emitContent( content );
+ emit gotContent( content );
}catch( svn::ClientException ce )
{
kDebug(9510) << "Exception while doing a diff: "
--- trunk/KDE/kdevplatform/plugins/subversion/svncatjob_p.h #787299:787300
@@ -25,19 +25,6 @@
#include <QVariant>
#include <vcsrevision.h>
-class CatJobHelper : public QObject
-{
- Q_OBJECT
-public:
- void emitContent( const QString& diff )
- {
- emit gotContent( diff );
- }
-signals:
- void gotContent( const QString& );
-};
-
-
class SvnInternalCatJob : public SvnInternalJobBase
{
Q_OBJECT
--- trunk/KDE/kdevplatform/plugins/subversion/svndiffjob.cpp #787299:787300
@@ -52,10 +52,6 @@
void SvnInternalDiffJob::run()
{
- DiffJobHelper helper;
- connect( &helper, SIGNAL( gotDiff( const QString& ) ),
- this, SIGNAL( gotDiff( const QString& ) ), Qt::QueuedConnection );
-
initBeforeRun();
SvnClient cli(m_ctxt);
@@ -136,7 +132,7 @@
dstRev, recursive(), ignoreAncestry(),
noDiffOnDelete(), ignoreContentType() );
}
- helper.emitDiff( diff );
+ emit gotDiff( diff );
}catch( svn::ClientException ce )
{
--- trunk/KDE/kdevplatform/plugins/subversion/svndiffjob_p.h #787299:787300
@@ -25,19 +25,6 @@
#include <QVariant>
#include <vcsrevision.h>
-class DiffJobHelper : public QObject
-{
- Q_OBJECT
-public:
- void emitDiff( const QString& diff )
- {
- emit gotDiff( diff );
- }
-signals:
- void gotDiff( const QString& );
-};
-
-
class SvnInternalDiffJob : public SvnInternalJobBase
{
Q_OBJECT
--- trunk/KDE/kdevplatform/plugins/subversion/svninfojob.cpp #787299:787300
@@ -40,9 +40,6 @@
void SvnInternalInfoJob::run()
{
initBeforeRun();
- SvnInfoJobHelper help;
- connect( &help, SIGNAL( gotInfo( const SvnInfoHolder&) ),
- this, SIGNAL( gotInfo( const SvnInfoHolder&) ) );
svn::Client cli(m_ctxt);
try
{
@@ -68,7 +65,7 @@
h.workingCopyFileConflict = QString::fromUtf8( e.conflictWrk() );
h.propertyRejectFile = QString::fromUtf8( e.prejfile() );
- help.emitInfo( h );
+ emit gotInfo( h );
}catch( svn::ClientException ce )
{
kDebug(9510) << "Exception while getting info for file: "
--- trunk/KDE/kdevplatform/plugins/subversion/svninfojob_p.h #787299:787300
@@ -24,19 +24,6 @@
#include "svninternaljobbase.h"
#include "svninfojob.h"
-class SvnInfoJobHelper : public QObject
-{
- Q_OBJECT
-public:
- void emitInfo( const SvnInfoHolder & state )
- {
- emit gotInfo( state );
- }
-signals:
- void gotInfo( const SvnInfoHolder& );
-
-};
-
class SvnInternalInfoJob : public SvnInternalJobBase
{
Q_OBJECT
--- trunk/KDE/kdevplatform/plugins/subversion/svninternaljobbase.cpp #787299:787300
@@ -42,51 +42,10 @@
#include <svncpp/apr.hpp>
#include <svncpp/revision.hpp>
-class JobHelper : public QObject
-{
- friend class SvnInternalJobBase;
- Q_OBJECT
- public:
- JobHelper()
- {}
- void emitNeedLogin( const QString& realm )
- {
- std::cerr << "Emitting login" << std::endl;
- emit needLogin( realm );
- }
- void emitNeedCommitMessage()
- {
- std::cerr << "Emitting commit" << std::endl;
- emit needCommitMessage();
- }
-
- void emitShowNotification( const QString& path, const QString& msg )
- {
- emit showNotification( path, msg );
- }
- void emitNeedSslServerTrust( const QStringList& failures, const QString& host, const QString& print,
- const QString& from, const QString& until, const QString& issuer,
- const QString& realm )
- {
- std::cerr << "Emitting trust" << std::endl;
- emit needSslServerTrust( failures, host, print, from, until, issuer, realm );
- }
- signals:
- void needLogin( const QString& );
- void showNotification( const QString&, const QString& );
- void needCommitMessage();
- void needSslServerTrust( const QStringList&, const QString&, const QString&,
- const QString&, const QString&, const QString&,
- const QString& );
- void needSslClientCert( const QString& );
- void needSslClientCertPassword( const QString& );
-};
-
-
SvnInternalJobBase::SvnInternalJobBase( SvnJobBase* parent )
: ThreadWeaver::Job( parent ), m_ctxt( new svn::Context() ),
m_guiSemaphore( 0 ), m_mutex( new QMutex() ),
- helper(0), m_success( true ), sendFirstDelta( false )
+ m_success( true ), sendFirstDelta( false )
{
m_ctxt->setListener(this);
connect( this, SIGNAL( failed( ThreadWeaver::Job* ) ),
@@ -99,7 +58,6 @@
SvnInternalJobBase::~SvnInternalJobBase()
{
- delete helper; helper = 0;
}
bool SvnInternalJobBase::contextGetLogin( const std::string& realm,
@@ -107,9 +65,7 @@
bool& maySave )
{
- std::cerr << "login" << std::endl;
-
- helper->emitNeedLogin( QString::fromUtf8( realm.c_str() ) );
+ emit needLogin( QString::fromUtf8( realm.c_str() ) );
m_guiSemaphore.acquire( 1 );
QMutexLocker l(m_mutex);
if( m_login_username.isEmpty() || m_login_password.isEmpty() )
@@ -125,9 +81,6 @@
svn_wc_notify_state_t contentState,
svn_wc_notify_state_t propState, svn_revnum_t rev )
{
- if( !helper )
- return;
- std::cerr << "notify" << std::endl;
QString notifyString;
switch( action ){
case svn_wc_notify_add:
@@ -233,7 +186,7 @@
break;
}
kDebug(9510) << "showing notification:" << path << notifyString ;
- helper->emitShowNotification( QString::fromUtf8( path ), notifyString );
+ emit showNotification( QString::fromUtf8( path ), notifyString );
}
bool SvnInternalJobBase::contextCancel()
@@ -244,8 +197,7 @@
bool SvnInternalJobBase::contextGetLogMessage( std::string& msg )
{
- std::cerr << "logmsg" << std::endl;
- helper->emitNeedCommitMessage();
+ emit needCommitMessage();
m_guiSemaphore.acquire( 1 );
QMutexLocker l( m_mutex );
QByteArray ba = m_commitMessage.toUtf8();
@@ -255,25 +207,6 @@
void SvnInternalJobBase::initBeforeRun()
{
- helper = new JobHelper();
-
- connect( helper, SIGNAL( needLogin( const QString& ) ),
- this, SIGNAL( needLogin( const QString& ) ) );
- connect( helper, SIGNAL( showNotification( const QString&, const QString& ) ),
- this, SIGNAL( showNotification( const QString&, const QString& ) ) );
- connect( helper, SIGNAL( needCommitMessage() ),
- this, SIGNAL( needCommitMessage() ) );
- connect( helper, SIGNAL( needSslServerTrust( const QStringList&, const QString&,
- const QString&, const QString&, const QString&,
- const QString&, const QString& ) ),
- this, SIGNAL( needSslServerTrust( const QStringList&, const QString&,
- const QString&, const QString&, const QString&,
- const QString&, const QString& ) ) );
- connect( helper, SIGNAL( needSslClientCert( const QString& ) ),
- this, SIGNAL( needSslClientCert( const QString& ) ) );
- connect( helper, SIGNAL( needSslClientCertPassword( const QString& ) ),
- this, SIGNAL( needSslClientCertPassword( const QString& ) ) );
-
connect( this, SIGNAL( needCommitMessage() ),
parent(), SLOT( askForCommitMessage() ), Qt::QueuedConnection );
connect( this, SIGNAL( needLogin( const QString& ) ),
@@ -297,7 +230,6 @@
apr_uint32_t& acceptedFailures )
{
- std::cerr << "server trust" << std::endl;
std::string host = data.hostname;
std::string print = data.fingerprint;
std::string from = data.validFrom;
@@ -326,7 +258,7 @@
{
failures << i18n("Other unknown error.");
}
- emit helper->emitNeedSslServerTrust( failures,
+ emit needSslServerTrust( failures,
QString::fromUtf8( host.c_str() ),
QString::fromUtf8( print.c_str() ),
QString::fromUtf8( from.c_str() ),
@@ -340,8 +272,7 @@
bool SvnInternalJobBase::contextSslClientCertPrompt( std::string& cert )
{
- std::cerr << "Client cert" << std::endl;
- emit helper->needSslClientCert( QString::fromUtf8( cert.c_str() ) );
+ emit needSslClientCert( QString::fromUtf8( cert.c_str() ) );
m_guiSemaphore.acquire( 1 );
return true;
}
@@ -349,8 +280,7 @@
bool SvnInternalJobBase::contextSslClientCertPwPrompt( std::string& pw, const std::string& realm,
bool& maySave )
{
- std::cerr << "Client cert PW" << std::endl;
- emit helper->needSslClientCertPassword( QString::fromUtf8( realm.c_str() ) );
+ emit needSslClientCertPassword( QString::fromUtf8( realm.c_str() ) );
m_guiSemaphore.acquire( 1 );
return false;
}
@@ -436,4 +366,3 @@
#include "svninternaljobbase.moc"
-#include "moc_svninternaljobbase.cpp"
--- trunk/KDE/kdevplatform/plugins/subversion/svninternaljobbase.h #787299:787300
@@ -46,8 +46,6 @@
class SvnJobBase;
class QMutex;
class QSemaphore;
-class JobHelper;
-
class SvnInternalJobBase : public ThreadWeaver::Job, public svn::ContextListener
{
Q_OBJECT
@@ -99,7 +97,6 @@
protected:
QMutex* m_mutex;
- JobHelper* helper;
bool m_success;
void setErrorMessage( const QString& );
private:
--- trunk/KDE/kdevplatform/plugins/subversion/svnlogjob.cpp #787299:787300
@@ -41,16 +41,11 @@
void SvnInternalLogJob::run()
{
- LogJobHelper helper;
- connect( &helper, SIGNAL( logEvent( const KDevelop::VcsEvent& ) ),
- this, SIGNAL( logEvent( const KDevelop::VcsEvent& ) ), Qt::QueuedConnection );
-
-
initBeforeRun();
SvnClient cli(m_ctxt);
connect( &cli, SIGNAL( logEventReceived( const KDevelop::VcsEvent& ) ),
- &helper, SLOT(emitLogEvent( const KDevelop::VcsEvent&) ) );
+ this, SIGNAL(logEvent( const KDevelop::VcsEvent&) ) );
try
{
QByteArray ba = location().path().toUtf8();
--- trunk/KDE/kdevplatform/plugins/subversion/svnlogjob_p.h #787299:787300
@@ -26,18 +26,6 @@
#include <vcsrevision.h>
#include <vcsevent.h>
-class LogJobHelper : public QObject
-{
- Q_OBJECT
-public slots:
- void emitLogEvent( const KDevelop::VcsEvent& ev )
- {
- emit logEvent( ev );
- }
-signals:
- void logEvent( const KDevelop::VcsEvent& );
-};
-
class SvnInternalLogJob : public SvnInternalJobBase
{
Q_OBJECT
--- trunk/KDE/kdevplatform/plugins/subversion/svnstatusjob.cpp #787299:787300
@@ -100,9 +100,6 @@
void SvnInternalStatusJob::run()
{
kDebug(9510) << "Running internal status job with urls:" << m_locations;
- StatusJobHelper helper;
- connect( &helper, SIGNAL( gotNewStatus( const KDevelop::VcsStatusInfo& ) ),
- this, SIGNAL( gotNewStatus( const KDevelop::VcsStatusInfo& ) ), Qt::QueuedConnection );
initBeforeRun();
svn::Client cli(m_ctxt);
@@ -122,7 +119,7 @@
KDevelop::VcsStatusInfo info;
info.setUrl( url );
info.setState( getState( *it ) );
- helper.emitNewStatus( info );
+ emit gotNewStatus( info );
}
}else
{
@@ -132,7 +129,7 @@
KDevelop::VcsStatusInfo info;
info.setUrl( url );
info.setState( getState( st ) );
- helper.emitNewStatus( info );
+ emit gotNewStatus( info );
}
}catch( svn::ClientException ce )
{
--- trunk/KDE/kdevplatform/plugins/subversion/svnstatusjob_p.h #787299:787300
@@ -28,18 +28,6 @@
#include <vcsstatusinfo.h>
#include <kurl.h>
-class StatusJobHelper : public QObject
-{
- Q_OBJECT
-public:
- void emitNewStatus( const KDevelop::VcsStatusInfo& state )
- {
- emit gotNewStatus( state );
- }
-signals:
- void gotNewStatus( const KDevelop::VcsStatusInfo& );
-};
-
class SvnInternalStatusJob : public SvnInternalJobBase
{
Q_OBJECT
@@ -57,7 +45,6 @@
private:
KUrl::List m_locations;
bool m_recursive;
- StatusJobHelper* m_stathelper;
};
#endif
More information about the KDevelop-devel
mailing list