Guitar
FileDiffSliderWidget.h
Go to the documentation of this file.
1 #ifndef FILEDIFFSLIDERWIDGET_H
2 #define FILEDIFFSLIDERWIDGET_H
3 
5 #include "MainWindow.h"
6 #include "Theme.h"
7 #include <QPixmap>
8 #include <QWidget>
9 #include <functional>
10 
12 using TextDiffLineList = QList<Document::Line>;
13 
14 enum class DiffPane {
15  Left,
16  Right,
17 };
18 
19 using fn_pixmap_maker_t = std::function<QPixmap (DiffPane, int, int)>;
20 
21 class FileDiffSliderWidget : public QWidget {
22  Q_OBJECT
23 private:
24  struct Private;
26 
27  void scroll_(int pos);
28  QPixmap makeDiffPixmap(DiffPane pane, int width, int height);
29  void setValue(int v);
30  void internalSetValue(int v);
31 public:
32  explicit FileDiffSliderWidget(QWidget *parent = nullptr);
33  ~FileDiffSliderWidget() override;
34 
35  void clear(bool v);
36  void setScrollPos(int total, int value, int size);
37  void init(fn_pixmap_maker_t const &pixmap_maker, const ThemePtr &theme);
38  void updatePixmap();
39  static QPixmap makeDiffPixmap(int width, int height, TextDiffLineList const &lines, ThemePtr theme);
40 protected:
41  void paintEvent(QPaintEvent *) override;
42  void resizeEvent(QResizeEvent *) override;
43  void mousePressEvent(QMouseEvent *) override;
44  void mouseMoveEvent(QMouseEvent *) override;
45  void wheelEvent(QWheelEvent *event) override;
46 signals:
47  void valueChanged(int value);
48  void scrollByWheel(int lines);
49 };
50 
51 #endif // FILEDIFFSLIDERWIDGET_H
QList< Document::Line > TextDiffLineList
Definition: FileDiffSliderWidget.h:12
std::function< QPixmap(DiffPane, int, int)> fn_pixmap_maker_t
Definition: FileDiffSliderWidget.h:19
DiffPane
Definition: FileDiffSliderWidget.h:14
std::shared_ptr< AbstractTheme > ThemePtr
Definition: Theme.h:34
Definition: FileDiffSliderWidget.h:21
FileDiffSliderWidget(QWidget *parent=nullptr)
Definition: FileDiffSliderWidget.cpp:22
void internalSetValue(int v)
Definition: FileDiffSliderWidget.cpp:137
Private * m
Definition: FileDiffSliderWidget.h:24
void clear(bool v)
Definition: FileDiffSliderWidget.cpp:194
void paintEvent(QPaintEvent *) override
Definition: FileDiffSliderWidget.cpp:98
void init(fn_pixmap_maker_t const &pixmap_maker, const ThemePtr &theme)
Definition: FileDiffSliderWidget.cpp:33
void wheelEvent(QWheelEvent *event) override
Definition: FileDiffSliderWidget.cpp:177
void setValue(int v)
Definition: FileDiffSliderWidget.cpp:149
void scroll_(int pos)
Definition: FileDiffSliderWidget.cpp:156
void scrollByWheel(int lines)
QPixmap makeDiffPixmap(DiffPane pane, int width, int height)
Definition: FileDiffSliderWidget.cpp:39
void resizeEvent(QResizeEvent *) override
Definition: FileDiffSliderWidget.cpp:132
void mousePressEvent(QMouseEvent *) override
Definition: FileDiffSliderWidget.cpp:163
void mouseMoveEvent(QMouseEvent *) override
Definition: FileDiffSliderWidget.cpp:170
~FileDiffSliderWidget() override
Definition: FileDiffSliderWidget.cpp:28
void valueChanged(int value)
void setScrollPos(int total, int value, int size)
Definition: FileDiffSliderWidget.cpp:202
void updatePixmap()
Definition: FileDiffSliderWidget.cpp:47
Definition: AbstractCharacterBasedApplication.h:53
Definition: FileDiffSliderWidget.cpp:10