From bd9e6617827818fd043452c08c606f07b78014a0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdesdk@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kompare/komparenavtreepart/komparenavtreepart.h | 191 ++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 kompare/komparenavtreepart/komparenavtreepart.h (limited to 'kompare/komparenavtreepart/komparenavtreepart.h') diff --git a/kompare/komparenavtreepart/komparenavtreepart.h b/kompare/komparenavtreepart/komparenavtreepart.h new file mode 100644 index 00000000..e2563d63 --- /dev/null +++ b/kompare/komparenavtreepart/komparenavtreepart.h @@ -0,0 +1,191 @@ +/*************************************************************************** + komparenavtreepart.h - description + ------------------- + begin : Mon Feb 26 2002 + copyright : (C) 2001-2004 Otto Bruggeman + (C) 2001-2003 John Firebaugh + email : otto.bruggeman@home.nl + jfirebaugh@kde.org +****************************************************************************/ + +/*************************************************************************** +** +** 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. +** +***************************************************************************/ + +#ifndef KOMPARENAVTREEPART_H +#define KOMPARENAVTREEPART_H + +#include +#include +#include +#include + +#include +#include + +#include "kompare.h" +#include "diffmodellist.h" + +class KompareModelList; +class KomparePart; +class KListView; + +namespace Diff2 { +class DiffModel; +class Difference; +} + +class KDirLVI; +class KFileLVI; +class KChangeLVI; + +class KompareNavTreePart : public KParts::ReadOnlyPart +{ + Q_OBJECT + +public: + KompareNavTreePart( QWidget* parent = 0L, const char* name = 0L ); + virtual ~KompareNavTreePart(); + +public: + virtual bool openFile() { return false; }; + +public slots: + void slotSetSelection( const Diff2::DiffModel* model, const Diff2::Difference* diff ); + void slotSetSelection( const Diff2::Difference* diff ); + void slotModelsChanged( const Diff2::DiffModelList* modelList ); + void slotKompareInfo( Kompare::Info* info ); + +signals: + void selectionChanged( const Diff2::DiffModel* model, const Diff2::Difference* diff ); + void selectionChanged( const Diff2::Difference* diff ); + +private slots: + void slotSrcDirTreeSelectionChanged ( QListViewItem* item ); + void slotDestDirTreeSelectionChanged( QListViewItem* item ); + void slotFileListSelectionChanged ( QListViewItem* item ); + void slotChangesListSelectionChanged( QListViewItem* item ); + + void slotApplyDifference( bool apply ); + void slotApplyAllDifferences( bool apply ); + void slotApplyDifference( const Diff2::Difference* diff, bool apply ); + + void buildTreeInMemory(); + +private: + void setSelectedDir( const Diff2::DiffModel* model ); + void setSelectedFile( const Diff2::DiffModel* model ); + void setSelectedDifference( const Diff2::Difference* diff ); + + void buildDirectoryTree(); + + QString compareFromEndAndReturnSame( const QString& string1, const QString& string2 ); + void addDirToTreeView( enum Kompare::Target, const QString& filename ); + + KListViewItem* findDirInDirTree( const KListViewItem* parent, const QString& dir ); + +// KListViewItem* firstItem(); +// KListViewItem* lastItem(); + +private: + QSplitter* m_splitter; + const Diff2::DiffModelList* m_modelList; + + QPtrDict m_diffToChangeItemDict; + QPtrDict m_modelToFileItemDict; + QPtrDict m_modelToSrcDirItemDict; + QPtrDict m_modelToDestDirItemDict; + + KListView* m_srcDirTree; + KListView* m_destDirTree; + KListView* m_fileList; + KListView* m_changesList; + + KDirLVI* m_srcRootItem; + KDirLVI* m_destRootItem; + + const Diff2::DiffModel* m_selectedModel; + const Diff2::Difference* m_selectedDifference; + + QString m_source; + QString m_destination; + + struct Kompare::Info* m_info; +}; + +// These 3 classes are need to store the models into a tree so it is easier +// to extract the info we need for the navigation widgets + +class KChangeLVI : public KListViewItem +{ +public: + KChangeLVI( KListView* parent, Diff2::Difference* diff ); + ~KChangeLVI(); +public: + Diff2::Difference* difference() { return m_difference; }; + virtual int compare( QListViewItem* item, int column, bool ascending ) const; + + void setDifferenceText(); +private: + Diff2::Difference* m_difference; +}; + +class KFileLVI : public KListViewItem +{ +public: + KFileLVI( KListView* parent, Diff2::DiffModel* model ); + ~KFileLVI(); +public: + Diff2::DiffModel* model() { return m_model; }; + void fillChangesList( KListView* changesList, QPtrDict* diffToChangeItemDict ); +private: + Diff2::DiffModel* m_model; +}; + +class KDirLVI : public KListViewItem +{ +public: + KDirLVI( KDirLVI* parent, QString& dir ); + KDirLVI( KListView* parent, QString& dir ); + ~KDirLVI(); +public: + void addModel( QString& dir, Diff2::DiffModel* model, QPtrDict* modelToDirItemDict ); + QString& dirName() { return m_dirName; }; + QString fullPath( QString& path ); + KDirLVI* setSelected( QString dir ); + void fillFileList( KListView* fileList, QPtrDict* modelToFileItemDict ); + bool isRootItem() { return m_rootItem; }; +private: + KDirLVI* findChild( QString dir ); +private: + Diff2::DiffModelList m_modelList; + QString m_dirName; + bool m_rootItem; +}; + +// part stuff +class KInstance; +class KAboutData; + +class KompareNavTreePartFactory : public KParts::Factory +{ + Q_OBJECT +public: + KompareNavTreePartFactory(); + virtual ~KompareNavTreePartFactory(); + virtual KParts::Part* createPartObject( QWidget *parentWidget, const char *widgetName, + QObject *parent, const char *name, + const char *classname, const QStringList &args ); + static KInstance* instance(); + +private: + static KInstance* s_instance; + static KAboutData* s_about; +}; + +#endif -- cgit v1.2.1