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