SVN commit 659123 by rgruber: Added support for the "cvs status" command M +1 -0 CMakeLists.txt A cvsfileinfoprovider.cpp [License: GPL (v2+)] A cvsfileinfoprovider.h [License: GPL (v2+)] M +30 -8 cvspart.cpp M +1 -0 cvspart.h M +20 -1 cvsproxy.cpp M +2 -0 cvsproxy.h M +1 -0 kdevcvs.rc --- trunk/KDE/kdevelop/lib/plugins/vcs/cvs/CMakeLists.txt #659122:659123 @@ -22,6 +22,7 @@ updateoptionsdialog.cpp importdialog.cpp checkoutdialog.cpp + cvsfileinfoprovider.cpp ) set(kdevcvs_PART_UI --- trunk/KDE/kdevelop/lib/plugins/vcs/cvs/cvspart.cpp #659122:659123 @@ -38,6 +38,7 @@ #include "cvsgenericoutputview.h" #include "importdialog.h" #include "checkoutdialog.h" +#include "cvsfileinfoprovider.h" typedef KGenericFactory KDevCvsFactory; K_EXPORT_COMPONENT_FACTORY( kdevcvs, @@ -62,6 +63,7 @@ public: KDevCvsViewFactory* m_factory; QPointer m_proxy; + QPointer m_fileinfoprovider; }; CvsPart::CvsPart( QObject *parent, const QStringList & ) @@ -78,6 +80,10 @@ setupActions(); d->m_proxy = new CvsProxy(this); + + d->m_fileinfoprovider = new CvsFileInfoProvider(d->m_proxy, this); + connect( d->m_fileinfoprovider, SIGNAL(statusReady(const QList&)), + this, SIGNAL(statusReady(const QList&)) ); } CvsPart::~CvsPart() @@ -145,6 +151,10 @@ action->setText(i18n("Checkout...")); connect(action, SIGNAL(triggered(bool)), this, SLOT(slotCheckout())); + action = actionCollection()->addAction("cvs_status"); + action->setText(i18n("Status...")); + connect(action, SIGNAL(triggered(bool)), this, SLOT(slotStatus())); + } const KUrl CvsPart::urlFocusedDocument() const @@ -260,9 +270,25 @@ fetchFromRepository(); } +void CvsPart::slotStatus() +{ + KUrl url = urlFocusedDocument(); + QFileInfo info(url.path()); + QList infos; + /// @todo just for testing; remove me... + // In order to be able to test the "cvs status" command this slot takes + // the path of the currently open file and requests the status of all + // files from that directory + // The whole slot will be removed as soon as the status-slots get + // called via IVersionControl interface. + statusASync( KUrl(info.absolutePath()), IVersionControl::NonRecursive, infos ); +} + + + //////////////////////////////////////////////////////////////////////////////// // BEGIN of methods derived from IVersionControl //////////////////////////////////////////////////////////////////////////////// @@ -305,19 +331,15 @@ bool CvsPart::statusASync(const KUrl & dirPath, WorkingMode mode, const QList< KDevelop::VcsFileInfo > & infos) { - Q_UNUSED(dirPath) - Q_UNUSED(mode) + ///@todo what are these infos for? The signal that gets emmitted when the operation finished return it's own list. Q_UNUSED(infos) - /// @todo implemt me ! - return false; + + return d->m_fileinfoprovider->requestStatusASync(dirPath, mode); } QList< KDevelop::VcsFileInfo > CvsPart::statusSync(const KUrl & dirPath, KDevelop::IVersionControl::WorkingMode mode) { - Q_UNUSED(dirPath) - Q_UNUSED(mode) - /// @todo implemt me ! - return QList< KDevelop::VcsFileInfo >(); + return d->m_fileinfoprovider->requestStatusSync(dirPath, mode); } void CvsPart::checkout(const KUrl & repository, const KUrl & targetDir, KDevelop::IVersionControl::WorkingMode mode) --- trunk/KDE/kdevelop/lib/plugins/vcs/cvs/cvspart.h #659122:659123 @@ -80,6 +80,7 @@ void slotImport(); void slotAnnotate(); void slotCheckout(); + void slotStatus(); // Signals inherited from IVersionControl Q_SIGNALS: --- trunk/KDE/kdevelop/lib/plugins/vcs/cvs/cvsproxy.cpp #659122:659123 @@ -16,7 +16,6 @@ #include #include #include -#include #include "cvsjob.h" @@ -354,5 +353,25 @@ return NULL; } +CvsJob * CvsProxy::status(const KUrl & directory, bool recursive, bool taginfo) +{ + kDebug() << k_funcinfo << endl; + + CvsJob* job = new CvsJob(this); + if ( prepareJob(job, directory.path()) ) { + *job << "cvs"; + *job << "status"; + + if (!recursive) + *job << "-l"; + if (taginfo) + *job << "-v"; + + return job; + } + if (job) delete job; + return NULL; +} + #include "cvsproxy.moc" //kate: space-indent on; indent-width 4; replace-tabs on; auto-insert-doxygen on; indent-mode cstyle; --- trunk/KDE/kdevelop/lib/plugins/vcs/cvs/cvsproxy.h #659122:659123 @@ -81,6 +81,8 @@ bool recursive = true, bool pruneDirs = true); + CvsJob* status(const KUrl& directory, bool recursive=false, bool taginfo=false); + private slots: void slotResult(KJob* job); --- trunk/KDE/kdevelop/lib/plugins/vcs/cvs/kdevcvs.rc #659122:659123 @@ -14,6 +14,7 @@ +