1 #pragma once
2 
3 #ifndef VERSION_CONTROL_WIDGET_H
4 #define VERSION_CONTROL_WIDGET_H
5 
6 #include <QWidget>
7 #include <QMap>
8 #include <QString>
9 
10 class QLabel;
11 class QRadioButton;
12 class QSpinBox;
13 class QDateTimeEdit;
14 class QTimeEdit;
15 class QVBoxLayout;
16 
17 class DoubleRadioWidget;
18 
19 //-----------------------------------------------------------------------------
20 
21 class DateChooserWidget final : public QWidget {
22   Q_OBJECT
23 
24   int m_selectedRadioIndex;
25 
26   QRadioButton *m_timeRadioButton, *m_dayRadioButton, *m_weekRadioButton,
27       *m_dateRadioButton;
28 
29   QTimeEdit *m_timeEdit;
30   QSpinBox *m_dayEdit;
31   QSpinBox *m_weekEdit;
32   QDateTimeEdit *m_dateTimeEdit;
33 
34 public:
35   DateChooserWidget(QWidget *parent = 0);
36 
37   QString getRevisionString() const;
38 
39 private:
40   void disableAllWidgets();
41 
42 protected slots:
43   void onRadioButtonClicked();
44 };
45 
46 //-----------------------------------------------------------------------------
47 
48 class ConflictWidget final : public QWidget {
49   Q_OBJECT
50 
51   QVBoxLayout *m_mainLayout;
52   QMap<DoubleRadioWidget *, int> m_radios;
53 
54   QString m_button1Text;
55   QString m_button2Text;
56 
57 public:
58   ConflictWidget(QWidget *parent = 0);
59   void setFiles(const QStringList &files);
60 
61   QStringList getFilesWithOption(int option) const;
62 
setButton1Text(const QString & b1text)63   void setButton1Text(const QString &b1text) { m_button1Text = b1text; }
setButton2Text(const QString & b2text)64   void setButton2Text(const QString &b2text) { m_button2Text = b2text; }
65 
66 protected slots:
67   void onRadioValueChanged();
68 
69 signals:
70   void allConflictSetted();
71 };
72 
73 //-----------------------------------------------------------------------------
74 
75 class DoubleRadioWidget final : public QWidget {
76   Q_OBJECT
77 
78   QLabel *m_label;
79   QRadioButton *m_firstButton;
80   QRadioButton *m_secondButton;
81 
82 public:
83   DoubleRadioWidget(const QString &button1Text, const QString &button2Text,
84                     const QString &text, QWidget *parent = 0);
85 
86   // -1 No button checked, 0 firstButton, 1 secondButton
87   int getValue() const;
88   QString getText() const;
89 
90 signals:
91   void valueChanged();
92 };
93 
94 #endif  // VERSION_CONTROL_WIDGET_H
95