diff options
Diffstat (limited to 'src/svnfrontend/svnactions.h')
-rw-r--r-- | src/svnfrontend/svnactions.h | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/src/svnfrontend/svnactions.h b/src/svnfrontend/svnactions.h new file mode 100644 index 0000000..96a2b5e --- /dev/null +++ b/src/svnfrontend/svnactions.h @@ -0,0 +1,254 @@ +/*************************************************************************** + * Copyright (C) 2005-2007 by Rajko Albrecht * + * [email protected] * + * * + * 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 SVNACTIONS_H +#define SVNACTIONS_H + +#include "src/svnqt/client.hpp" +#include "src/svnqt/revision.hpp" +#include "src/svnqt/smart_pointer.hpp" +#include "src/svnqt/shared_pointer.hpp" +#include "src/svnqt/svnqttypes.hpp" + +#include "simple_logcb.h" + +#include <kurl.h> +#include <kguiitem.h> + +#include <qobject.h> +#include <qdatetime.h> +#include <qstringlist.h> + +class ItemDisplay; +class SvnItem; +class KDialog; +class KDialogBase; +class QDialog; +class CContextListener; +class KProcess; +class SvnActionsData; +class CheckModifiedThread; +class CheckUpdatesThread; +class FillCacheThread; + +namespace svn { + class Context; + class LogEntry; + class InfoEntry; +} + +namespace KIO { + class Job; +} + +/** +@author Rajko Albrecht +*/ +class SvnActions : public QObject,public SimpleLogCb +{ + Q_OBJECT +public: + enum ThreadType { + checkupdatethread, + fillcachethread, + checkmodifiedthread + }; + + SvnActions(ItemDisplay *parent, const char *name = 0,bool processes_blocked=false); + ~SvnActions(); + void reInitClient(); + //svn::Client&svnClient(){return m_Svnclient;} + svn::Client* svnclient(); + void prepareUpdate(bool ask); + template<class T> KDialogBase* createDialog(T**ptr,const QString&_head,bool OkCance=false, + const char*name="standard_dialog", + bool showHelp=false,bool modal=true, + const KGuiItem&u1 = KGuiItem()); + + bool makeGet(const svn::Revision&start, const QString&what,const QString&target, + const svn::Revision&peg=svn::Revision::UNDEFINED,QWidget*dlgparent=0); + + + bool addItems(const QValueList<svn::Path> &items,svn::Depth depth=svn::DepthEmpty); + bool addItems(const QStringList&w,svn::Depth depth=svn::DepthEmpty); + void checkAddItems(const QString&path,bool print_error_box=true); + + bool makeDelete(const svn::Pathes&); + bool makeDelete(const QStringList&); + void makeLock(const QStringList&,const QString&,bool); + void makeUnlock(const QStringList&,bool); + + bool makeStatus(const QString&what, svn::StatusEntries&dlist, svn::Revision&where, bool rec=false,bool all=true); + bool makeStatus(const QString&what, svn::StatusEntries&dlist, svn::Revision&where, bool rec,bool all,bool display_ignored,bool updates=false); + bool makeList(const QString&url,svn::DirEntries&dlist,svn::Revision&where,bool rec=false); + + bool createModifiedCache(const QString&base); + bool checkModifiedCache(const QString&path); + bool checkConflictedCache(const QString&path); + bool checkReposLockCache(const QString&path); + bool checkReposLockCache(const QString&path,svn::SharedPointer<svn::Status>&t); + void addModifiedCache(const svn::StatusPtr&what); + void deleteFromModifiedCache(const QString&what); + + bool makeIgnoreEntry(SvnItem*which,bool unignore); + bool isLockNeeded(SvnItem*which,const svn::Revision&where); + QString searchProperty(QString&store, const QString&property, const QString&start,const svn::Revision&where,bool up=false); + svn::PathPropertiesMapListPtr propList(const QString&which,const svn::Revision&where,bool cacheOnly); + + bool changeProperties(const svn::PropertiesMap&setList,const QValueList<QString>&,const QString&path); + + //! generate and displays a revision tree + /*! + * the parameter @a what must prepared, eg, if it comes from working copy + * it must not contain a "file://" inside. + * \param what item to display + * \param rev Revision the item-path is available, intersting only when @a what is a repository item + * \param startr startrevision for log + * \param endr endrevision for log + */ + void makeTree(const QString&what,const svn::Revision&rev, + const svn::Revision&startr=svn::Revision(1), + const svn::Revision&endr=svn::Revision::HEAD); + void makeLog(const svn::Revision&start,const svn::Revision&end,const svn::Revision&peg,SvnItem*k,bool list_files=false,int limit = 0); + void makeLog(const svn::Revision&start,const svn::Revision&end,const svn::Revision&peg,const QString&,bool list_files=false, int limit=0); + svn::SharedPointer<svn::LogEntriesMap> getLog(const svn::Revision&start,const svn::Revision& end,const svn::Revision&peg,const QString&,bool list_files, int limit,QWidget*parent=0); + virtual bool getSingleLog(svn::LogEntry&,const svn::Revision&,const QString&,const svn::Revision&,QString&root); + + void makeBlame(const svn::Revision&start, const svn::Revision&end, SvnItem*k); + void makeBlame(const svn::Revision&start, const svn::Revision&end, const QString&,QWidget*parent=0,const svn::Revision&peg=svn::Revision::UNDEFINED,SimpleLogCb*_acb=0); + void makeUpdate(const QStringList&what,const svn::Revision&rev,bool recurse); + bool makeSwitch(const QString&rUrl,const QString&tPath,const svn::Revision&r,svn::Depth depth,const svn::Revision&peg,bool stickydepth,bool ignore_externals,bool allow_unversioned); + bool makeSwitch(const QString&path,const QString&what); + bool makeRelocate(const QString&fUrl,const QString&tUrl,const QString&path,bool rec = true); + bool makeCheckout(const QString&,const QString&,const svn::Revision&,const svn::Revision&,svn::Depth,bool isExport,bool openit,bool ignore_externals,bool overwrite,QWidget*p); + void makeInfo(QPtrList<SvnItem> lst,const svn::Revision&,const svn::Revision&,bool recursive = true); + void makeInfo(const QStringList&lst,const svn::Revision&,const svn::Revision&,bool recursive = true); + bool makeCommit(const svn::Targets&); + void CheckoutExport(const QString&what,bool _exp,bool urlisTarget=false); + + QString getInfo(QPtrList<SvnItem> lst,const svn::Revision&rev,const svn::Revision&peg,bool recursive,bool all=true); + QString getInfo(const QString&_what,const svn::Revision&rev,const svn::Revision&peg,bool recursive,bool all=true); + + QString makeMkdir(const QString&); + bool makeMkdir(const QStringList&,const QString&); + bool isLocalWorkingCopy(const KURL&url,QString&_baseUri); + bool createUpdateCache(const QString&what); + bool checkUpdateCache(const QString&path)const; + bool isUpdated(const QString&path)const; + bool getUpdated(const QString&path,svn::SharedPointer<svn::Status>&d)const; + void clearUpdateCache(); + void removeFromUpdateCache(const QStringList&what,bool exact_only); + void stopCheckModThread(); + void stopCheckUpdateThread(); + void startFillCache(const QString&path); + void stopFillCache(); + void stopMain(); + void killallThreads(); + + bool checkUpdatesRunning(); + void getaddedItems(const QString&path,svn::StatusEntries&target); + + bool makeCopy(const QString&,const QString&,const svn::Revision&rev); + bool makeCopy(const KURL::List&,const QString&,const svn::Revision&rev); + + bool makeMove(const QString&,const QString&,bool); + bool makeMove(const KURL::List&,const QString&,bool); + + virtual bool makeCleanup(const QString&); + + bool get(const QString&what,const QString& to,const svn::Revision&rev,const svn::Revision&peg,QWidget*p); + bool singleInfo(const QString&what,const svn::Revision&rev,svn::InfoEntry&target,const svn::Revision&_peg=svn::Revision::UNDEFINED); + + void setContextData(const QString&,const QString&); + void clearContextData(); + QString getContextData(const QString&)const; + + bool threadRunning(ThreadType which); + + virtual void customEvent ( QCustomEvent * e ); + + bool doNetworking(); + +protected: + svn::smart_pointer<SvnActionsData> m_Data; + + void CheckoutExport(bool _exp); + void CheckoutExportCurrent(bool _exp); + void makeAdd(bool rec); + CheckModifiedThread*m_CThread,*m_UThread; + FillCacheThread*m_FCThread; + void makeDiffinternal(const QString&,const svn::Revision&,const QString&,const svn::Revision&,QWidget*,const svn::Revision&peg=svn::Revision::UNDEFINED); + void makeDiffExternal(const QString&p1,const svn::Revision&start,const QString&p2,const svn::Revision&end,const svn::Revision&_peg,bool isDir,QWidget*p,bool rec=true); + +public slots: + virtual void dispDiff(const QByteArray&); + virtual void slotProperties(); + virtual void slotNotifyMessage(const QString&); + virtual void slotCommit(); + virtual void slotUpdateHeadRec(); + virtual void slotUpdateTo(); + virtual void slotAdd(); + virtual void slotAddRec(); + virtual void slotCheckoutCurrent(); + virtual void slotExportCurrent(); + virtual void slotCheckout(); + virtual void slotExport(); + virtual void slotRevert(); + virtual void slotRevertItems(const QStringList&); + virtual void slotSwitch(); + virtual void slotResolved(const QString&); + virtual void slotResolve(const QString&); + virtual void makeDiff(const QString&,const svn::Revision&,const svn::Revision&,const svn::Revision&_peg,bool isDir); + virtual void makeDiff(const QString&,const svn::Revision&,const QString&,const svn::Revision&); + virtual void makeDiff(const QString&,const svn::Revision&,const QString&,const svn::Revision&,const svn::Revision&,bool,QWidget*p); + virtual void makeDiff(const QString&,const svn::Revision&,const QString&,const svn::Revision&,QWidget*); + virtual void makeNorecDiff(const QString&,const svn::Revision&,const QString&,const svn::Revision&,QWidget*); + virtual void slotImport(const QString&,const QString&,const QString&,svn::Depth,bool noIgnore,bool noUnknown); + virtual void slotMergeWcRevisions(const QString&,const svn::Revision&,const svn::Revision&,bool,bool,bool,bool); + virtual void slotMerge(const QString&,const QString&, const QString&, + const svn::Revision&,const svn::Revision&,const svn::Revision&, + bool,bool,bool,bool); + virtual void slotMergeExternal(const QString&src1,const QString&src2, const QString&target, + const svn::Revision&rev1,const svn::Revision&rev2,const svn::Revision&_peg,bool); + virtual void slotExtraLogMsg(const QString&); + virtual void slotMakeCat(const svn::Revision&start, const QString&what,const QString&disp,const svn::Revision&peg,QWidget*dlgparent); + + virtual void slotCancel(bool); + +signals: + void clientException(const QString&); + void sendNotify(const QString&); + void reinitItem(SvnItem*); + void sigRefreshAll(); + void sigThreadsChanged(); + void sigRefreshCurrent(SvnItem*); + void sigRefreshIcons(bool); + void sigExtraLogMsg(const QString&); + void sigGotourl(const QString&); + void sigCacheStatus(Q_LONG,Q_LONG); + +protected slots: + virtual void wroteStdin(KProcess*); + virtual void procClosed(KProcess*); + virtual void checkModthread(); + virtual void checkUpdateThread(); + virtual void receivedStderr(KProcess*,char*,int); +}; + +#endif |