You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
8.5 KiB
244 lines
8.5 KiB
14 years ago
|
/***************************************************************************
|
||
|
* Copyright (C) 2005-2007 by Rajko Albrecht *
|
||
|
* ral@alwins-world.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 KDESVNFILELIST_H
|
||
|
#define KDESVNFILELIST_H
|
||
|
|
||
|
#include "itemdisplay.h"
|
||
|
#include "filelistviewitem.h"
|
||
|
#include "src/svnqt/status.hpp"
|
||
|
#include "src/svnqt/client.hpp"
|
||
|
|
||
|
#include <klistview.h>
|
||
|
#include <kurl.h>
|
||
|
#include <ktrader.h>
|
||
|
#include <qmap.h>
|
||
|
#include <qptrlist.h>
|
||
|
#include <qevent.h>
|
||
|
|
||
|
class KAction;
|
||
|
class KActionMenu;
|
||
|
class KActionCollection;
|
||
|
class KDialog;
|
||
|
class KDialogBase;
|
||
|
class KdesvnFileListPrivate;
|
||
|
class SvnActions;
|
||
|
|
||
|
namespace KIO {
|
||
|
class Job;
|
||
|
}
|
||
|
|
||
|
namespace svn {
|
||
|
class Revision;
|
||
|
}
|
||
|
/**
|
||
|
@author Rajko Albrecht
|
||
|
*/
|
||
|
class kdesvnfilelist : public KListView,public ItemDisplay
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
friend class FileListViewItem;
|
||
|
public:
|
||
|
kdesvnfilelist(KActionCollection*,QWidget *parent = 0, const char *name = 0);
|
||
|
virtual ~kdesvnfilelist();
|
||
|
|
||
|
virtual bool openURL( const KURL &url,bool noReinit=false );
|
||
|
virtual SvnItem*SelectedOrMain();
|
||
|
virtual SvnItem*Selected();
|
||
|
virtual void SelectionList(SvnItemList*target);
|
||
|
|
||
|
virtual QWidget*realWidget();
|
||
|
|
||
|
KActionCollection*filesActions();
|
||
|
bool refreshItem(FileListViewItem*);
|
||
|
|
||
|
protected:
|
||
|
const svn::Revision& remoteRevision()const;
|
||
|
bool m_deletePerfect;
|
||
|
QMap<QString,bool> m_Dirsread;
|
||
|
|
||
|
KActionCollection* m_filesAction;
|
||
|
KAction*m_BlameAction,*m_BlameRangeAction,*m_CatAction,*m_MkdirAction;
|
||
|
KAction*m_InfoAction,*m_commitAction,*m_UpdateHead,*m_UpdateRev;
|
||
|
KAction*m_AddCurrent,*m_DelCurrent,*m_CheckoutAction,*m_CheckoutCurrentAction,*m_RevertAction;
|
||
|
KAction*m_changeToRepository,*m_switchRepository,*m_ExportAction,*m_ExportCurrentAction;
|
||
|
KAction*m_CleanupAction,*m_ResolvedAction,*m_ImportDirsIntoCurrent,*m_RefreshViewAction,*m_MergeRevisionAction;
|
||
|
KAction*m_RenameAction,*m_CopyAction;
|
||
|
KAction*m_LockAction,*m_UnlockAction,*m_IgnoreAction;
|
||
|
|
||
|
SvnActions*m_SvnWrapper;
|
||
|
|
||
|
/* the parent entry must removed from list before */
|
||
|
void insertDirs(FileListViewItem * _parent,svn::StatusEntries&);
|
||
|
bool checkDirs(const QString&,FileListViewItem * _parent);
|
||
|
void setupActions();
|
||
|
svn::Client*svnclient();
|
||
|
|
||
|
|
||
|
FileListViewItem* singleSelected();
|
||
|
FileListViewItemList* allSelected();
|
||
|
|
||
|
template<class T> KDialogBase* createDialog(T**ptr,
|
||
|
const QString&_head,
|
||
|
bool OkCancel=false,
|
||
|
const char*name="dialog",
|
||
|
bool showHelp=false
|
||
|
);
|
||
|
|
||
|
FileListViewItemList* m_SelectedItems;
|
||
|
FileListViewItem* findEntryItem(const QString&,FileListViewItem*startAt=0);
|
||
|
|
||
|
virtual bool refreshRecursive(FileListViewItem*,bool down=true);
|
||
|
virtual void updateParents(FileListViewItem*);
|
||
|
virtual void checkUnversionedDirs( FileListViewItem * _parent );
|
||
|
|
||
|
/**
|
||
|
* Overridden virtuals for Qt drag 'n drop (XDND)
|
||
|
*/
|
||
|
virtual void contentsDragEnterEvent( QDragEnterEvent* );
|
||
|
virtual void contentsDragLeaveEvent( QDragLeaveEvent* );
|
||
|
virtual void contentsDragMoveEvent( QDragMoveEvent* );
|
||
|
virtual void contentsDropEvent( QDropEvent* );
|
||
|
virtual bool acceptDrag(QDropEvent *event)const;
|
||
|
//virtual void startDrag();
|
||
|
virtual QDragObject* dragObject();
|
||
|
|
||
|
void dispDummy();
|
||
|
void reinitItems(FileListViewItem*_item = 0);
|
||
|
KURL::List selectedUrls();
|
||
|
|
||
|
virtual void contentsMouseMoveEvent( QMouseEvent *e );
|
||
|
virtual void contentsMousePressEvent(QMouseEvent*e);
|
||
|
virtual void contentsMouseReleaseEvent(QMouseEvent*e);
|
||
|
virtual void contentsWheelEvent( QWheelEvent * e );
|
||
|
virtual void leaveEvent(QEvent*e);
|
||
|
virtual void rescanIconsRec(FileListViewItem*_parent=0,bool checkNewer=false,bool no_update=false);
|
||
|
|
||
|
KTrader::OfferList offersList(SvnItem*item,bool execOnly=false);
|
||
|
|
||
|
private:
|
||
|
KdesvnFileListPrivate*m_pList;
|
||
|
void cleanHighLighter();
|
||
|
bool validDropEvent(QDropEvent*event,QListViewItem*&item);
|
||
|
void copy_move(bool move);
|
||
|
|
||
|
protected slots:
|
||
|
virtual void slotSelectBrowsingRevision();
|
||
|
virtual void slotItemRead(QListViewItem*);
|
||
|
virtual void slotContextMenuRequested(QListViewItem *, const QPoint &, int);
|
||
|
virtual void slotSelectionChanged();
|
||
|
virtual void slotClientException(const QString&);
|
||
|
virtual void slotNotifyMessage(const QString&);
|
||
|
virtual void slotDirAdded(const QString&,FileListViewItem*);
|
||
|
virtual void slotReinitItem(SvnItem*);
|
||
|
virtual void slotItemDoubleClicked(QListViewItem*);
|
||
|
virtual void slotImportIntoCurrent(bool);
|
||
|
virtual void slotImportDirsIntoCurrent();
|
||
|
virtual void slotImportIntoDir(const KURL&,const QString&,bool);
|
||
|
|
||
|
/* subversion slots */
|
||
|
virtual void slotChangeToRepository();
|
||
|
virtual void slotCleanupAction();
|
||
|
virtual void slotResolved();
|
||
|
virtual void slotTryResolve();
|
||
|
virtual void slotMergeRevisions();
|
||
|
virtual void slotMerge();
|
||
|
virtual void slotDropped(QDropEvent *,QListViewItem*);
|
||
|
virtual void viewportPaintEvent(QPaintEvent *);
|
||
|
virtual void slotRename();
|
||
|
virtual void slotCopy();
|
||
|
virtual void slotCat();
|
||
|
virtual void slotDelete();
|
||
|
virtual void slotDisplayLastDiff();
|
||
|
|
||
|
/* callback slots */
|
||
|
virtual void slotCopyFinished( KIO::Job *);
|
||
|
virtual void slotDeleteFinished(KIO::Job*);
|
||
|
virtual void _openURL(const QString&);
|
||
|
virtual void _dirwatchTimeout();
|
||
|
virtual void _propListTimeout();
|
||
|
|
||
|
/* internal slots */
|
||
|
virtual void readSupportData();
|
||
|
virtual void slotUpdateLogCache();
|
||
|
|
||
|
virtual void enableActions();
|
||
|
|
||
|
signals:
|
||
|
void sigLogMessage(const QString&);
|
||
|
void changeCaption(const QString&);
|
||
|
void sigShowPopup(const QString&,QWidget**);
|
||
|
void sigUrlOpend(bool);
|
||
|
void sigSwitchUrl(const KURL&);
|
||
|
void sigUrlChanged(const QString&);
|
||
|
void sigProplist(const svn::PathPropertiesMapListPtr&,bool,const QString&);
|
||
|
void sigListError();
|
||
|
void sigCacheStatus(Q_LONG,Q_LONG);
|
||
|
|
||
|
public slots:
|
||
|
virtual void refreshCurrentTree();
|
||
|
virtual void refreshCurrent(SvnItem*);
|
||
|
virtual void closeMe();
|
||
|
virtual void slotMkdir();
|
||
|
virtual void slotMkBaseDirs();
|
||
|
virtual void slotSettingsChanged();
|
||
|
virtual void slotChangeProperties(const svn::PropertiesMap&,const QValueList<QString>&,const QString&);
|
||
|
|
||
|
|
||
|
protected slots:
|
||
|
virtual void slotLock();
|
||
|
virtual void slotUnlock();
|
||
|
virtual void slotIgnore();
|
||
|
virtual void slotBlame();
|
||
|
virtual void slotRangeBlame();
|
||
|
virtual void slotSimpleHeadDiff();
|
||
|
virtual void slotSimpleBaseDiff();
|
||
|
|
||
|
virtual void slotDiffRevisions();
|
||
|
virtual void slotDiffPathes();
|
||
|
virtual void slotRevisionCat();
|
||
|
virtual void slotCheckUpdates();
|
||
|
virtual void slotInfo();
|
||
|
virtual void slotDirItemCreated(const QString&);
|
||
|
virtual void slotDirItemDirty(const QString&);
|
||
|
virtual void slotDirItemDeleted(const QString&);
|
||
|
virtual void slotRelocate();
|
||
|
virtual void slotRescanIcons(bool);
|
||
|
virtual void slotCheckNewItems();
|
||
|
virtual void slotMakeRangeLog();
|
||
|
virtual void slotMakeLog();
|
||
|
virtual void slotMakeTree();
|
||
|
virtual void slotMakePartTree();
|
||
|
virtual void slotInternalDrop();
|
||
|
virtual void slotOpenWith();
|
||
|
virtual void slotDisplayProperties();
|
||
|
|
||
|
virtual void slotUnfoldTree();
|
||
|
virtual void slotFoldTree();
|
||
|
|
||
|
private slots:
|
||
|
void gotPreview( const KFileItem*, const QPixmap& );
|
||
|
void gotPreviewResult();
|
||
|
protected:
|
||
|
virtual bool uniqueTypeSelected();
|
||
|
virtual void dispProperties(bool);
|
||
|
};
|
||
|
|
||
|
#endif
|