File indexing completed on 2024-05-05 05:45:46

0001 /*
0002     SPDX-FileCopyrightText: 2001-2003 John Firebaugh <jfirebaugh@kde.org>
0003     SPDX-FileCopyrightText: 2001-2004 Otto Bruggeman <otto.bruggeman@home.nl>
0004     SPDX-FileCopyrightText: 2004 Jeff Snyder <jeff@caffeinated.me.uk>
0005     SPDX-FileCopyrightText: 2007 Kevin Kofler <kevin.kofler@chello.at>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef KOMPARECONNECTWIDGET_H
0011 #define KOMPARECONNECTWIDGET_H
0012 
0013 #include <QWidget>
0014 #include <QSplitter>
0015 #include <QPaintEvent>
0016 #include <QMouseEvent>
0017 #include <QVBoxLayout>
0018 #include <QLabel>
0019 
0020 #include <KompareDiff2/ModelList>
0021 
0022 namespace KompareDiff2 {
0023 class DiffModel;
0024 }
0025 class ViewSettings;
0026 class KompareSplitter;
0027 
0028 class KompareConnectWidget : public QWidget
0029 {
0030     Q_OBJECT
0031 
0032 public:
0033     KompareConnectWidget(ViewSettings* settings, QWidget* parent, const char* name = nullptr);
0034     ~KompareConnectWidget() override;
0035 
0036 public Q_SLOTS:
0037     void slotSetSelection(const KompareDiff2::DiffModel* model, const KompareDiff2::Difference* diff);
0038     void slotSetSelection(const KompareDiff2::Difference* diff);
0039 
0040     void slotDelayedRepaint();
0041 
0042 Q_SIGNALS:
0043     void selectionChanged(const KompareDiff2::Difference* diff);
0044 
0045 protected:
0046     void paintEvent(QPaintEvent* e) override;
0047     QPainterPath makeBezier(int l, int r) const;
0048 
0049 private:
0050     ViewSettings*             m_settings;
0051 
0052     const KompareDiff2::DiffModel*   m_selectedModel;
0053     const KompareDiff2::Difference*  m_selectedDifference;
0054 };
0055 
0056 class KompareConnectWidgetFrame : public QSplitterHandle
0057 {
0058     Q_OBJECT
0059 public:
0060     KompareConnectWidgetFrame(ViewSettings* settings, KompareSplitter* parent, const char* name = nullptr);
0061     ~KompareConnectWidgetFrame() override;
0062 
0063     QSize sizeHint() const override;
0064 
0065     KompareConnectWidget*     wid() { return &m_wid; }
0066 
0067 protected:
0068     // stop the parent QSplitterHandle painting
0069     void paintEvent(QPaintEvent* /* e */) override { }
0070 
0071 #if 0
0072     void mouseMoveEvent(QMouseEvent*);
0073     void mousePressEvent(QMouseEvent*);
0074     void mouseReleaseEvent(QMouseEvent*);
0075 #endif
0076 
0077 private:
0078     KompareConnectWidget      m_wid;
0079     QLabel                    m_label;
0080     QVBoxLayout               m_layout;
0081 };
0082 
0083 #endif