• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

kompare

  • sources
  • kde-4.14
  • kdesdk
  • kompare
  • komparepart
komparelistview.h
Go to the documentation of this file.
1 /***************************************************************************
2  komparelistview.h
3  -----------------
4  begin : Sun Mar 4 2001
5  Copyright 2001-2004,2009 Otto Bruggeman <bruggie@gmail.com>
6  Copyright 2001-2003 John Firebaugh <jfirebaugh@kde.org>
7  Copyright 2004 Jeff Snyder <jeff@caffeinated.me.uk>
8  Copyright 2011 Kevin Kofler <kevin.kofler@chello.at>
9 ****************************************************************************/
10 
11 /***************************************************************************
12 **
13 ** This program is free software; you can redistribute it and/or modify
14 ** it under the terms of the GNU General Public License as published by
15 ** the Free Software Foundation; either version 2 of the License, or
16 ** (at your option) any later version.
17 **
18 ***************************************************************************/
19 
20 #ifndef KOMPARELISTVIEW_H
21 #define KOMPARELISTVIEW_H
22 
23 #include <QHash>
24 #include <QLabel>
25 #include <QResizeEvent>
26 #include <QWheelEvent>
27 #include <QVBoxLayout>
28 #include <QMouseEvent>
29 #include <QFrame>
30 #include <QTreeWidget>
31 #include <QStyledItemDelegate>
32 
33 namespace Diff2 {
34 class DiffModel;
35 class DiffHunk;
36 class Difference;
37 class DifferenceString;
38 }
39 class ViewSettings;
40 class KompareSplitter;
41 class KompareListView;
42 class KompareListViewItem;
43 class KompareListViewItemDelegate;
44 class KompareListViewDiffItem;
45 class KompareListViewLineContainerItem;
46 
47 class KompareListView : public QTreeWidget
48 {
49  Q_OBJECT
50 
51  friend class KompareListViewItemDelegate;
52 
53 public:
54  KompareListView( bool isSource, ViewSettings* settings, QWidget* parent, const char* name = 0 );
55  virtual ~KompareListView();
56 
57  KompareListViewItem* itemAtIndex( int i );
58  int firstVisibleDifference();
59  int lastVisibleDifference();
60  QRect itemRect( int i );
61  int minScrollId();
62  int maxScrollId();
63  int contentsHeight();
64  int contentsWidth();
65  int visibleHeight();
66  int visibleWidth();
67  int contentsX();
68  int contentsY();
69  int nextPaintOffset() const;
70  void setNextPaintOffset(int offset);
71 
72  bool isSource() const { return m_isSource; };
73  ViewSettings* settings() const { return m_settings; };
74 
75  void setSelectedDifference( const Diff2::Difference* diff, bool scroll );
76 
77 public slots:
78  void slotSetSelection( const Diff2::DiffModel* model, const Diff2::Difference* diff );
79  void slotSetSelection( const Diff2::Difference* diff );
80  void setXOffset( int x );
81  void scrollToId( int id );
82  int scrollId();
83  void slotApplyDifference( bool apply );
84  void slotApplyAllDifferences( bool apply );
85  void slotApplyDifference( const Diff2::Difference* diff, bool apply );
86 
87 signals:
88  void differenceClicked( const Diff2::Difference* diff );
89  void applyDifference( bool apply );
90  void resized();
91 
92 protected:
93  virtual void wheelEvent( QWheelEvent* e );
94  virtual void resizeEvent( QResizeEvent* e );
95  virtual void mousePressEvent ( QMouseEvent * e );
96  virtual void mouseDoubleClickEvent ( QMouseEvent* );
97  virtual void mouseReleaseEvent ( QMouseEvent * ) {};
98  virtual void mouseMoveEvent ( QMouseEvent * ) {};
99 
100 private:
101  QRect totalVisualItemRect( QTreeWidgetItem* item );
102  KompareListViewDiffItem* diffItemAt( const QPoint& pos );
103  void renumberLines( void );
104 
105  QList<KompareListViewDiffItem*> m_items;
106  QHash<const Diff2::Difference*, KompareListViewDiffItem*> m_itemDict;
107  bool m_isSource;
108  ViewSettings* m_settings;
109  int m_scrollId;
110  int m_maxMainWidth;
111  const Diff2::DiffModel* m_selectedModel;
112  const Diff2::Difference* m_selectedDifference;
113  int m_nextPaintOffset;
114 };
115 
116 class KompareListViewFrame : public QFrame
117 {
118  Q_OBJECT
119 
120 public:
121  KompareListViewFrame( bool isSource, ViewSettings* settings, KompareSplitter* parent, const char* name = 0 );
122  virtual ~KompareListViewFrame() {};
123  KompareListView* view() { return &m_view; };
124 
125 public slots:
126  void slotSetModel( const Diff2::DiffModel* model );
127 
128 private:
129  KompareListView m_view;
130  QLabel m_label;
131  QVBoxLayout m_layout;
132 };
133 
134 class KompareListViewItemDelegate : public QStyledItemDelegate
135 {
136  Q_OBJECT
137 
138 public:
139  KompareListViewItemDelegate( QObject* parent );
140  virtual ~KompareListViewItemDelegate();
141  virtual void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const;
142  virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const;
143 };
144 
145 class KompareListViewItem : public QTreeWidgetItem
146 {
147 public:
148  KompareListViewItem( KompareListView* parent, int type );
149  KompareListViewItem( KompareListView* parent, KompareListViewItem* after, int type );
150  KompareListViewItem( KompareListViewItem* parent, int type );
151  KompareListViewItem( KompareListViewItem* parent, KompareListViewItem* after, int type );
152 
153  virtual void paintCell( QPainter* p, const QStyleOptionViewItem& option, int column );
154 
155  void repaint();
156  int height() const;
157  void setHeight( int h );
158  int paintHeight() const;
159  int paintOffset() const;
160  bool isCurrent() const;
161  int scrollId() const { return m_scrollId; };
162 
163  virtual int maxHeight() = 0;
164 
165  KompareListView* kompareListView() const;
166 
167  enum ListViewItemType { Diff = QTreeWidgetItem::UserType + 1, Container = QTreeWidgetItem::UserType + 2, Line = QTreeWidgetItem::UserType + 3, Blank = QTreeWidgetItem::UserType + 4, Hunk = QTreeWidgetItem::UserType + 5 };
168 
169 private:
170  int m_scrollId;
171  int m_height;
172  int m_paintHeight;
173  int m_paintOffset;
174 };
175 
176 class KompareListViewDiffItem : public KompareListViewItem
177 {
178 public:
179  KompareListViewDiffItem( KompareListView* parent, Diff2::Difference* difference );
180  KompareListViewDiffItem( KompareListView* parent, KompareListViewItem* after, Diff2::Difference* difference );
181  ~KompareListViewDiffItem();
182 
183  void applyDifference( bool apply );
184 
185  Diff2::Difference* difference() { return m_difference; };
186 
187  virtual int maxHeight();
188 
189 private:
190  void init();
191  void setVisibility();
192 
193 private:
194  Diff2::Difference* m_difference;
195  KompareListViewLineContainerItem* m_sourceItem;
196  KompareListViewLineContainerItem* m_destItem;
197 };
198 
199 class KompareListViewLineItem;
200 class KompareListViewBlankLineItem;
201 
202 class KompareListViewLineContainerItem : public KompareListViewItem
203 {
204 public:
205  KompareListViewLineContainerItem( KompareListViewDiffItem* parent, bool isSource );
206  ~KompareListViewLineContainerItem();
207 
208  virtual int maxHeight() { return 0; }
209 
210  KompareListViewDiffItem* diffItemParent() const;
211 
212 private:
213  int lineCount() const;
214  int lineNumber() const;
215  Diff2::DifferenceString* lineAt( int i ) const;
216 
217 private:
218  KompareListViewBlankLineItem* m_blankLineItem;
219  bool m_isSource;
220 };
221 
222 class KompareListViewLineItem : public KompareListViewItem
223 {
224 public:
225  KompareListViewLineItem( KompareListViewLineContainerItem* parent, int line, Diff2::DifferenceString* text );
226  KompareListViewLineItem( KompareListViewLineContainerItem* parent, int line, Diff2::DifferenceString* text, int type );
227  ~KompareListViewLineItem();
228 
229  virtual int maxHeight() { return 0; }
230 
231  virtual void paintCell( QPainter* p, const QStyleOptionViewItem& option, int column );
232 
233  KompareListViewDiffItem* diffItemParent() const;
234 
235 protected:
236  virtual void paintText( QPainter* p, const QColor& bg, int column, int width, int align );
237 
238 private:
239  void init( int line, Diff2::DifferenceString* text );
240  void expandTabs(QString& text, int tabstop, int startPos = 0) const;
241 
242 private:
243  Diff2::DifferenceString* m_text;
244 };
245 
246 class KompareListViewBlankLineItem : public KompareListViewLineItem
247 {
248 public:
249  KompareListViewBlankLineItem( KompareListViewLineContainerItem* parent );
250 
251 protected:
252  virtual void paintText( QPainter* p, const QColor& bg, int column, int width, int align );
253 };
254 
255 class KompareListViewHunkItem : public KompareListViewItem
256 {
257 public:
258  KompareListViewHunkItem( KompareListView* parent, Diff2::DiffHunk* hunk, bool zeroHeight = false );
259  KompareListViewHunkItem( KompareListView* parent, KompareListViewItem* after, Diff2::DiffHunk* hunk, bool zeroHeight= false );
260  ~KompareListViewHunkItem();
261 
262  virtual void paintCell( QPainter* p, const QStyleOptionViewItem& option, int column );
263 
264  virtual int maxHeight();
265 
266 private:
267  bool m_zeroHeight;
268  Diff2::DiffHunk* m_hunk;
269 };
270 
271 #endif
KompareListView::KompareListView
KompareListView(bool isSource, ViewSettings *settings, QWidget *parent, const char *name=0)
Definition: komparelistview.cpp:103
KompareListViewItem::paintCell
virtual void paintCell(QPainter *p, const QStyleOptionViewItem &option, int column)
Definition: komparelistview.cpp:613
QModelIndex
KompareListView::itemRect
QRect itemRect(int i)
Definition: komparelistview.cpp:206
QResizeEvent
QWidget
KompareListViewDiffItem::difference
Diff2::Difference * difference()
Definition: komparelistview.h:185
KompareListView::scrollId
int scrollId()
Definition: komparelistview.cpp:310
KompareListViewBlankLineItem::paintText
virtual void paintText(QPainter *p, const QColor &bg, int column, int width, int align)
Definition: komparelistview.cpp:912
KompareListView::lastVisibleDifference
int lastVisibleDifference()
Definition: komparelistview.cpp:163
KompareListViewItemDelegate::~KompareListViewItemDelegate
virtual ~KompareListViewItemDelegate()
Definition: komparelistview.cpp:518
KompareListView::mouseDoubleClickEvent
virtual void mouseDoubleClickEvent(QMouseEvent *)
Definition: komparelistview.cpp:443
KompareListViewLineItem
Definition: komparelistview.h:222
KompareListViewDiffItem::maxHeight
virtual int maxHeight()
Definition: komparelistview.cpp:671
KompareListViewItem::scrollId
int scrollId() const
Definition: komparelistview.h:161
KompareListViewItem::ListViewItemType
ListViewItemType
Definition: komparelistview.h:167
KompareListViewItem::isCurrent
bool isCurrent() const
Definition: komparelistview.cpp:603
KompareListViewLineContainerItem::diffItemParent
KompareListViewDiffItem * diffItemParent() const
Definition: komparelistview.cpp:706
KompareListView::differenceClicked
void differenceClicked(const Diff2::Difference *diff)
QWheelEvent
KompareListView::itemAtIndex
KompareListViewItem * itemAtIndex(int i)
Definition: komparelistview.cpp:136
KompareListViewHunkItem::maxHeight
virtual int maxHeight()
Definition: komparelistview.cpp:944
KompareListView::contentsY
int contentsY()
Definition: komparelistview.cpp:252
KompareListView::slotApplyDifference
void slotApplyDifference(bool apply)
Definition: komparelistview.cpp:473
KompareListView
Definition: komparelistview.h:47
QPoint
KompareListViewItem::maxHeight
virtual int maxHeight()=0
QMouseEvent
KompareListViewItem::kompareListView
KompareListView * kompareListView() const
Definition: komparelistview.cpp:608
KompareListViewItem::paintOffset
int paintOffset() const
Definition: komparelistview.cpp:598
KompareListViewHunkItem
Definition: komparelistview.h:255
KompareListViewLineContainerItem::maxHeight
virtual int maxHeight()
Definition: komparelistview.h:208
KompareListViewItem::height
int height() const
Definition: komparelistview.cpp:577
KompareListViewLineContainerItem::KompareListViewLineContainerItem
KompareListViewLineContainerItem(KompareListViewDiffItem *parent, bool isSource)
Definition: komparelistview.cpp:680
KompareListView::setSelectedDifference
void setSelectedDifference(const Diff2::Difference *diff, bool scroll)
Definition: komparelistview.cpp:317
QTreeWidget
QObject::name
const char * name() const
KompareListViewFrame::~KompareListViewFrame
virtual ~KompareListViewFrame()
Definition: komparelistview.h:122
QRect
KompareListViewLineItem::maxHeight
virtual int maxHeight()
Definition: komparelistview.h:229
KompareListViewItemDelegate::sizeHint
virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
Definition: komparelistview.cpp:532
KompareListViewFrame::slotSetModel
void slotSetModel(const Diff2::DiffModel *model)
Definition: komparelistview.cpp:83
QWidget::x
int x() const
KompareListViewBlankLineItem
Definition: komparelistview.h:246
QHash< const Diff2::Difference *, KompareListViewDiffItem * >
QStyleOptionViewItem
QObject
KompareListViewItem::Diff
Definition: komparelistview.h:167
KompareListViewLineItem::diffItemParent
KompareListViewDiffItem * diffItemParent() const
Definition: komparelistview.cpp:900
QPainter
KompareListViewItem::KompareListViewItem
KompareListViewItem(KompareListView *parent, int type)
Definition: komparelistview.cpp:539
KompareListView::scrollToId
void scrollToId(int id)
Definition: komparelistview.cpp:273
QWidget::pos
QPoint pos() const
KompareListViewItemDelegate::paint
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
Definition: komparelistview.cpp:522
KompareListView::setNextPaintOffset
void setNextPaintOffset(int offset)
Definition: komparelistview.cpp:262
QVBoxLayout
KompareListView::mouseReleaseEvent
virtual void mouseReleaseEvent(QMouseEvent *)
Definition: komparelistview.h:97
KompareListView::settings
ViewSettings * settings() const
Definition: komparelistview.h:73
KompareListViewLineItem::~KompareListViewLineItem
~KompareListViewLineItem()
Definition: komparelistview.cpp:741
KompareListViewItemDelegate
Definition: komparelistview.h:134
KompareListViewItem::Container
Definition: komparelistview.h:167
QString
QList< KompareListViewDiffItem * >
QColor
KompareSplitter
Definition: komparesplitter.h:40
KompareListViewItem::setHeight
void setHeight(int h)
Definition: komparelistview.cpp:582
KompareListViewHunkItem::KompareListViewHunkItem
KompareListViewHunkItem(KompareListView *parent, Diff2::DiffHunk *hunk, bool zeroHeight=false)
KompareListViewHunkItem::paintCell
virtual void paintCell(QPainter *p, const QStyleOptionViewItem &option, int column)
Definition: komparelistview.cpp:955
KompareListViewFrame::view
KompareListView * view()
Definition: komparelistview.h:123
QSize
KompareListView::applyDifference
void applyDifference(bool apply)
QFrame
KompareListView::nextPaintOffset
int nextPaintOffset() const
Definition: komparelistview.cpp:257
KompareListView::slotSetSelection
void slotSetSelection(const Diff2::DiffModel *model, const Diff2::Difference *diff)
KompareListViewItem::Line
Definition: komparelistview.h:167
KompareListViewBlankLineItem::KompareListViewBlankLineItem
KompareListViewBlankLineItem(KompareListViewLineContainerItem *parent)
Definition: komparelistview.cpp:906
QTreeWidgetItem::parent
QTreeWidgetItem * parent() const
KompareListView::isSource
bool isSource() const
Definition: komparelistview.h:72
KompareListViewItem::repaint
void repaint()
KompareListView::~KompareListView
virtual ~KompareListView()
Definition: komparelistview.cpp:129
KompareListView::contentsHeight
int contentsHeight()
Definition: komparelistview.cpp:227
KompareListView::wheelEvent
virtual void wheelEvent(QWheelEvent *e)
Definition: komparelistview.cpp:502
KompareListViewLineItem::paintCell
virtual void paintCell(QPainter *p, const QStyleOptionViewItem &option, int column)
Definition: komparelistview.cpp:754
KompareListViewHunkItem::~KompareListViewHunkItem
~KompareListViewHunkItem()
Definition: komparelistview.cpp:939
KompareListViewItem::Hunk
Definition: komparelistview.h:167
QTreeWidgetItem
KompareListViewItem::Blank
Definition: komparelistview.h:167
ViewSettings
Definition: viewsettings.h:29
KompareListViewDiffItem
Definition: komparelistview.h:176
KompareListViewLineItem::paintText
virtual void paintText(QPainter *p, const QColor &bg, int column, int width, int align)
Definition: komparelistview.cpp:805
KompareListViewDiffItem::~KompareListViewDiffItem
~KompareListViewDiffItem()
Definition: komparelistview.cpp:643
KompareListView::setXOffset
void setXOffset(int x)
Definition: komparelistview.cpp:267
KompareListView::minScrollId
int minScrollId()
Definition: komparelistview.cpp:212
KompareListViewLineContainerItem
Definition: komparelistview.h:202
KompareListView::mousePressEvent
virtual void mousePressEvent(QMouseEvent *e)
Definition: komparelistview.cpp:434
KompareListView::visibleWidth
int visibleWidth()
Definition: komparelistview.cpp:242
KompareListView::maxScrollId
int maxScrollId()
Definition: komparelistview.cpp:217
KompareListViewLineContainerItem::~KompareListViewLineContainerItem
~KompareListViewLineContainerItem()
Definition: komparelistview.cpp:702
QTreeWidgetItem::type
int type() const
KompareListView::firstVisibleDifference
int firstVisibleDifference()
Definition: komparelistview.cpp:141
QWidget::scroll
void scroll(int dx, int dy)
KompareListViewItem
Definition: komparelistview.h:145
KompareListView::contentsX
int contentsX()
Definition: komparelistview.cpp:247
QAbstractItemView::model
QAbstractItemModel * model() const
KompareListViewDiffItem::KompareListViewDiffItem
KompareListViewDiffItem(KompareListView *parent, Diff2::Difference *difference)
KompareListView::slotApplyAllDifferences
void slotApplyAllDifferences(bool apply)
Definition: komparelistview.cpp:481
KompareListViewLineItem::KompareListViewLineItem
KompareListViewLineItem(KompareListViewLineContainerItem *parent, int line, Diff2::DifferenceString *text)
KompareListView::contentsWidth
int contentsWidth()
Definition: komparelistview.cpp:232
QLabel
QObject::parent
QObject * parent() const
KompareListView::resizeEvent
virtual void resizeEvent(QResizeEvent *e)
Definition: komparelistview.cpp:507
KompareListViewItemDelegate::KompareListViewItemDelegate
KompareListViewItemDelegate(QObject *parent)
Definition: komparelistview.cpp:513
KompareListView::resized
void resized()
KompareListViewFrame::KompareListViewFrame
KompareListViewFrame(bool isSource, ViewSettings *settings, KompareSplitter *parent, const char *name=0)
Definition: komparelistview.cpp:52
QTreeWidgetItem::text
QString text(int column) const
KompareListViewDiffItem::applyDifference
void applyDifference(bool apply)
Definition: komparelistview.cpp:665
KompareListView::visibleHeight
int visibleHeight()
Definition: komparelistview.cpp:237
KompareListView::mouseMoveEvent
virtual void mouseMoveEvent(QMouseEvent *)
Definition: komparelistview.h:98
KompareListViewFrame
Definition: komparelistview.h:116
KompareListViewItem::paintHeight
int paintHeight() const
Definition: komparelistview.cpp:593
QStyledItemDelegate
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:40:01 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kompare

Skip menu "kompare"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal