Skip to content

Commit 0a9bd4d

Browse files
committed
DateTimeRangeWidget
1 parent 598fe71 commit 0a9bd4d

12 files changed

+408
-5
lines changed

icons.qrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<RCC>
2+
<qresource prefix="/icons">
3+
<file>src/icons/undo.png</file>
4+
</qresource>
5+
</RCC>

mugi-query.pro

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ HEADERS += \
132132
src/testdatetime2sample.h \
133133
src/datasavedialogstate.h \
134134
src/timezones.h \
135-
src/drivernames.h
135+
src/drivernames.h \
136+
src/widget/datetimerangewidget.h \
137+
src/datetimerangewidgetmanager.h
136138

137139
SOURCES += \
138140
src/action.cpp \
@@ -220,7 +222,9 @@ SOURCES += \
220222
src/field.cpp \
221223
src/testdatetime2sample.cpp \
222224
src/datasavedialogstate.cpp \
223-
src/timezones.cpp
225+
src/timezones.cpp \
226+
src/widget/datetimerangewidget.cpp \
227+
src/datetimerangewidgetmanager.cpp
224228

225229
FORMS += \
226230
src/widget/databasehistorydialog.ui \
@@ -241,5 +245,9 @@ FORMS += \
241245
src/widget/dataimportwidget.ui \
242246
src/widget/selectcolumnswidget.ui \
243247
src/widget/selectcolumnslistwidget.ui \
244-
src/widget/fieldattributeswidget.ui
248+
src/widget/fieldattributeswidget.ui \
249+
src/widget/datetimerangewidget.ui
250+
251+
RESOURCES += \
252+
icons.qrc
245253

qrc_icons.cpp

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
/****************************************************************************
2+
** Resource object code
3+
**
4+
** Created by: The Resource Compiler for Qt version 5.11.1
5+
**
6+
** WARNING! All changes made in this file will be lost!
7+
*****************************************************************************/
8+
9+
static const unsigned char qt_resource_data[] = {
10+
// /home/overloop/mugi-query/src/icons/undo.png
11+
0x0,0x0,0x3,0x41,
12+
0x89,
13+
0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
14+
0x0,0x0,0x40,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0xaa,0x69,0x71,0xde,
15+
0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,
16+
0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x2,0xf3,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,
17+
0xda,0xcf,0x8b,0x56,0x55,0x1c,0xc7,0xf1,0xd7,0x8c,0x63,0xb,0x27,0x33,0x4a,0x2a,
18+
0x48,0x49,0x4b,0x31,0xca,0x16,0x85,0x98,0x2d,0x82,0x20,0x70,0x13,0x89,0x31,0x2e,
19+
0x5a,0x64,0x91,0x8b,0x20,0x90,0x10,0xa4,0x45,0xf9,0x17,0xb8,0x68,0xd3,0x7a,0xa0,
20+
0x48,0x6a,0x35,0x34,0x2e,0x8c,0x16,0x29,0x95,0xa8,0xa4,0xd0,0x40,0x11,0x6a,0x94,
21+
0xa6,0x54,0xbb,0x1c,0xca,0x21,0xec,0xd7,0xa8,0x8b,0xa3,0x64,0xd3,0xb9,0xf7,0x79,
22+
0xce,0xfd,0xf1,0xcc,0x5c,0x3c,0x6f,0xf8,0x6e,0xbe,0xcf,0x39,0x9f,0xf3,0xfd,0x7e,
23+
0x9f,0xe7,0xde,0x73,0xcf,0xf7,0x3e,0x64,0x32,0x99,0x4c,0x26,0x93,0xc9,0x64,0x32,
24+
0x99,0x4c,0xe6,0xe6,0x63,0xa8,0xc6,0xdc,0x71,0xac,0x2f,0xf8,0xec,0xd,0x7c,0x5a,
25+
0x32,0x77,0x31,0x1e,0xc3,0x23,0xb8,0xf,0xcb,0xae,0xf9,0x7f,0xc3,0x79,0x4c,0xe1,
26+
0x2b,0xcc,0xd6,0x88,0xaf,0x75,0xbe,0xc0,0x95,0x2,0xdb,0x16,0x19,0xbf,0x8,0x5b,
27+
0x30,0x81,0x99,0x92,0xb9,0xd7,0x6d,0x5a,0x28,0xf2,0xc6,0x36,0x93,0xa8,0x43,0xbf,
28+
0x5,0x18,0xc6,0x4b,0x38,0x5b,0x32,0xbe,0x97,0x1d,0xc2,0xa3,0x6d,0x27,0x94,0x4a,
29+
0x3f,0x5,0x78,0x18,0x27,0x4a,0xc6,0xa5,0xd8,0x2c,0xf6,0xe2,0x96,0xd6,0x33,0xeb,
30+
0x93,0x5e,0x5,0xd8,0x8e,0x4b,0x25,0x63,0xaa,0xda,0x31,0xdc,0x3d,0x80,0xfc,0x7a,
31+
0x52,0x56,0x80,0xf,0x4a,0x3e,0xbb,0xd1,0xce,0xe1,0x73,0x7c,0x8c,0xcf,0xf0,0x3d,
32+
0x2e,0xf7,0x31,0xef,0x3b,0xac,0x6c,0x3b,0xc1,0x5e,0x94,0x15,0xa0,0xcc,0x8e,0xe3,
33+
0x65,0xdc,0x55,0xa0,0xbb,0x14,0xcf,0xe0,0x3d,0xfc,0x59,0xa2,0xf3,0x2d,0xee,0x6c,
34+
0x3e,0xad,0xfe,0x49,0x2d,0xc0,0xcf,0xd8,0x2a,0x6d,0xeb,0xbd,0x17,0xef,0x96,0x68,
35+
0x1e,0x14,0x76,0x97,0x79,0x21,0xa5,0x0,0xc7,0x14,0x7f,0xe3,0xfd,0x30,0x86,0xdf,
36+
0xb,0xb4,0x5f,0xaf,0xa1,0x5b,0x8b,0x7e,0xb,0x70,0x2,0xb7,0x36,0xb0,0xde,0x93,
37+
0xe2,0x37,0xd5,0x4b,0xc2,0xc3,0xd4,0xc0,0xe9,0xa7,0x0,0x17,0xb0,0x1,0x2b,0x4a,
38+
0x2c,0x85,0x17,0xb,0xd6,0x19,0xaf,0x97,0x4a,0x35,0xaa,0xde,0x4,0xe7,0x5a,0x2a,
39+
0x7,0x22,0x1a,0x7f,0xe3,0x9e,0x2a,0x49,0xc,0x57,0x99,0x34,0xcf,0xbc,0x19,0xf1,
40+
0x8d,0xe0,0x85,0x2a,0x62,0x5d,0x2c,0xc0,0xd7,0x38,0x12,0xf1,0x6f,0xad,0x22,0xd6,
41+
0xc5,0x2,0xc0,0x87,0x11,0xdf,0x26,0x2c,0x49,0x15,0xea,0x6a,0x1,0x8e,0x46,0x7c,
42+
0x8b,0xf0,0x60,0xaa,0x50,0x57,0xb,0x70,0xaa,0xc0,0x9f,0xfc,0x78,0xdc,0xd5,0x2,
43+
0xcc,0xe0,0x8f,0x88,0x7f,0x69,0xaa,0xd0,0x48,0x8d,0x20,0x36,0xd5,0x98,0xdb,0x4,
44+
0xff,0x44,0x7c,0xc9,0x1d,0xa4,0xae,0xfe,0x2,0x46,0x30,0x1a,0xf1,0x5f,0x48,0x15,
45+
0xea,0x6a,0x1,0xee,0x17,0x3f,0x54,0xfd,0x90,0x2a,0xd4,0xd5,0x2,0x3c,0x11,0xf1,
46+
0x5d,0xc4,0x99,0x54,0xa1,0xae,0x16,0xe0,0xb9,0x88,0xef,0xb0,0xd0,0x4c,0x59,0x10,
47+
0x6c,0xc4,0x9e,0x96,0xb4,0x1f,0x10,0x6e,0x80,0x73,0xcf,0x3,0x3b,0x5a,0x5a,0x2f,
48+
0x89,0x21,0xec,0xc2,0x5f,0x42,0x50,0x63,0x2d,0xac,0x31,0xe1,0xff,0xc9,0xcf,0xe0,
49+
0xb6,0x16,0xd6,0x4a,0xe2,0xe,0xec,0xf7,0xdf,0xc0,0x7e,0xc5,0x9a,0x6,0xd7,0xd8,
50+
0x2e,0x7e,0xa2,0x7c,0xab,0xc1,0x35,0x2a,0x33,0x29,0x1e,0xdc,0x69,0xf5,0xba,0x41,
51+
0xd7,0xd9,0x2c,0xde,0x23,0xbc,0xd8,0x90,0x7e,0x6d,0xd6,0x8,0xc1,0xc4,0x8a,0x70,
52+
0x12,0xab,0x2a,0xea,0xe,0xe1,0x15,0xff,0x5e,0x56,0x73,0xed,0xb5,0x3a,0x41,0x37,
53+
0xcd,0xf3,0x8a,0x1b,0x1f,0xd3,0xc2,0x99,0x3d,0xa5,0x29,0xba,0xe,0x1f,0x95,0x68,
54+
0x7e,0x62,0x1,0xee,0x64,0x7b,0x95,0x77,0x80,0xbe,0x14,0x5a,0x5b,0xcb,0xa,0xe6,
55+
0x8f,0xa,0xdb,0xdc,0xa4,0xf2,0x77,0x4,0x67,0xb0,0xbc,0x6e,0xb0,0x75,0xde,0xe,
56+
0x97,0x69,0xbe,0x8d,0x9d,0x3d,0xc6,0xcd,0xa,0x97,0xc6,0x59,0xa1,0xe3,0x3b,0x8a,
57+
0xd5,0x78,0x48,0xef,0x33,0xca,0x4f,0x78,0x4a,0x85,0x7,0x9f,0x41,0x31,0x84,0xdd,
58+
0xe2,0xfb,0x75,0x5d,0xfb,0xc6,0x3c,0x75,0x81,0xab,0xf0,0xb8,0x10,0x70,0x53,0xc9,
59+
0xbf,0xa3,0x99,0x16,0xfb,0x40,0x59,0x8c,0x57,0x85,0xf7,0x80,0x55,0x13,0x9f,0xc2,
60+
0xd3,0x3,0x8e,0xbb,0x71,0x46,0xf0,0x2c,0xde,0xc7,0x2f,0x7a,0x27,0x3d,0x8d,0x7d,
61+
0x42,0xe2,0x6d,0xdc,0xab,0x68,0x53,0xb8,0x7,0xc3,0x58,0x2b,0xfc,0x45,0x66,0x5,
62+
0x6e,0xbf,0xe6,0x9b,0xc1,0x8f,0xc2,0x65,0x73,0xca,0x2,0xff,0x8b,0x4c,0x26,0x93,
63+
0xc9,0x64,0x32,0x99,0x4c,0x26,0x93,0xc9,0x64,0xba,0xca,0x55,0xa9,0x66,0xb5,0x33,
64+
0xfb,0x47,0xac,0x4e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
65+
66+
67+
};
68+
69+
static const unsigned char qt_resource_name[] = {
70+
// icons
71+
0x0,0x5,
72+
0x0,0x6f,0xa6,0x53,
73+
0x0,0x69,
74+
0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x73,
75+
// src
76+
0x0,0x3,
77+
0x0,0x0,0x7a,0x83,
78+
0x0,0x73,
79+
0x0,0x72,0x0,0x63,
80+
// undo.png
81+
0x0,0x8,
82+
0x4,0xb2,0x58,0xc7,
83+
0x0,0x75,
84+
0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
85+
86+
};
87+
88+
static const unsigned char qt_resource_struct[] = {
89+
// :
90+
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,
91+
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
92+
// :/icons
93+
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,
94+
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
95+
// :/icons/src
96+
0x0,0x0,0x0,0x10,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,
97+
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
98+
// :/icons/src/icons
99+
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,
100+
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
101+
// :/icons/src/icons/undo.png
102+
0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
103+
0x0,0x0,0x1,0x6c,0xa4,0x4,0xa5,0xd8,
104+
105+
};
106+
107+
#ifdef QT_NAMESPACE
108+
# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name
109+
# define QT_RCC_MANGLE_NAMESPACE0(x) x
110+
# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b
111+
# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b)
112+
# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \
113+
QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE))
114+
#else
115+
# define QT_RCC_PREPEND_NAMESPACE(name) name
116+
# define QT_RCC_MANGLE_NAMESPACE(name) name
117+
#endif
118+
119+
#ifdef QT_NAMESPACE
120+
namespace QT_NAMESPACE {
121+
#endif
122+
123+
bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
124+
125+
bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
126+
127+
#ifdef QT_NAMESPACE
128+
}
129+
#endif
130+
131+
int QT_RCC_MANGLE_NAMESPACE(qInitResources_icons)();
132+
int QT_RCC_MANGLE_NAMESPACE(qInitResources_icons)()
133+
{
134+
QT_RCC_PREPEND_NAMESPACE(qRegisterResourceData)
135+
(0x2, qt_resource_struct, qt_resource_name, qt_resource_data);
136+
return 1;
137+
}
138+
139+
int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_icons)();
140+
int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_icons)()
141+
{
142+
QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData)
143+
(0x2, qt_resource_struct, qt_resource_name, qt_resource_data);
144+
return 1;
145+
}
146+
147+
namespace {
148+
struct initializer {
149+
initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_icons)(); }
150+
~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_icons)(); }
151+
} dummy;
152+
}

src/action.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ class Action {
1616
ActionShowJoinHelper,
1717
ActionShowDistributionPlot,
1818
ActionShowXYPlot,
19-
ActionShowDataImportDialog
19+
ActionShowDataImportDialog,
20+
ActionShowDateTimeRangeWidget
2021
};
2122
Action(Type type = ActionEmpty, const QVariantList& args = QVariantList());
2223
Type type() const;

src/automation.cpp

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
#include "xyplotmodel.h"
1616
#include "distributionplotmodel.h"
1717
#include "distributionplot.h"
18-
18+
#include "widget/datetimerangewidget.h"
19+
#include "datetimerangewidgetmanager.h"
20+
#include <QDateTime>
1921

2022
Automation *Automation::mInstance = 0;
2123

@@ -84,6 +86,11 @@ void Automation::showDataImportDialog()
8486
mQueued.enqueue(Action(Action::ActionShowDataImportDialog));
8587
}
8688

89+
void Automation::showDateTimeRangeWidget()
90+
{
91+
mQueued.enqueue(Action(Action::ActionShowDateTimeRangeWidget));
92+
}
93+
8794
void Automation::afterDialog(DatabaseConnectDialog *) {
8895

8996
}
@@ -178,6 +185,22 @@ void Automation::onStart() {
178185
} else if (mAction.type() == Action::ActionShowDataImportDialog) {
179186
mainWindow()->on_dataImport_triggered();
180187
next();
188+
} else if (mAction.type() == Action::ActionShowDateTimeRangeWidget) {
189+
190+
DateTimeRangeWidget* widget = new DateTimeRangeWidget();
191+
DateTimeRangeWidgetManager* manager = new DateTimeRangeWidgetManager(widget);
192+
manager->init(widget);
193+
194+
connect(widget,&DateTimeRangeWidget::dateTime1Changed,[=](QDateTime v){
195+
qDebug() << "dt1" << v;
196+
});
197+
connect(widget,&DateTimeRangeWidget::dateTime2Changed,[=](QDateTime v){
198+
qDebug() << "dt2" << v;
199+
});
200+
201+
202+
widget->show();
203+
next();
181204
}
182205
}
183206

src/automation.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Automation : public QObject
2727
void showXYPlot();
2828
void showJoinHelper();
2929
void showDataImportDialog();
30+
void showDateTimeRangeWidget();
3031

3132
void beforeDialog(DatabaseHistoryDialog* dialog);
3233
void beforeDialog(DatabaseConnectDialog *dialog);

src/datetimerangewidgetmanager.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include "datetimerangewidgetmanager.h"
2+
3+
#include "datetimerangewidget.h"
4+
5+
DateTimeRangeWidgetManager::DateTimeRangeWidgetManager(QObject *parent) : QObject(parent)
6+
{
7+
8+
}
9+
10+
void DateTimeRangeWidgetManager::init(DateTimeRangeWidget *widget)
11+
{
12+
13+
QDateTime dt1 = QDateTime::currentDateTime();
14+
QDateTime dt2 = dt1.addDays(-7);
15+
widget->init(dt1,dt2,{"Day","7 days","30 days","Week","Month"});
16+
17+
connect(widget,&DateTimeRangeWidget::actionTriggered,[=](int index){
18+
QDateTime dt2;
19+
if (index == 3) {
20+
QDate date = dt1.date();
21+
date = date.addDays(-date.dayOfWeek() + 1);
22+
dt2 = QDateTime(date, QTime());
23+
} else if (index == 4) {
24+
QDate date = dt1.date();
25+
date = date.addDays(-date.day()+1);
26+
dt2 = QDateTime(date, QTime());
27+
} else {
28+
QList<int> days = {1,7,30};
29+
dt2 = dt1.addDays(-days[index]);
30+
}
31+
widget->setDateTime1(dt1);
32+
widget->setDateTime2(dt2);
33+
});
34+
35+
}

src/datetimerangewidgetmanager.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef DATETIMERANGEWIDGETMANAGER_H
2+
#define DATETIMERANGEWIDGETMANAGER_H
3+
4+
#include <QObject>
5+
class DateTimeRangeWidget;
6+
7+
class DateTimeRangeWidgetManager : public QObject
8+
{
9+
Q_OBJECT
10+
public:
11+
explicit DateTimeRangeWidgetManager(QObject *parent = nullptr);
12+
13+
void init(DateTimeRangeWidget* widget);
14+
15+
signals:
16+
17+
public slots:
18+
};
19+
20+
#endif // DATETIMERANGEWIDGETMANAGER_H

src/icons/undo.png

833 Bytes
Loading

src/widget/datetimerangewidget.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#include "datetimerangewidget.h"
2+
#include "ui_datetimerangewidget.h"
3+
#include <QMenu>
4+
5+
DateTimeRangeWidget::DateTimeRangeWidget(QWidget *parent) :
6+
QWidget(parent),
7+
ui(new Ui::DateTimeRangeWidget),
8+
mMenu1(0)
9+
{
10+
ui->setupUi(this);
11+
12+
connect(ui->dateTime1,SIGNAL(dateTimeChanged(QDateTime)),this,SIGNAL(dateTime1Changed(QDateTime)));
13+
connect(ui->dateTime2,SIGNAL(dateTimeChanged(QDateTime)),this,SIGNAL(dateTime2Changed(QDateTime)));
14+
}
15+
16+
DateTimeRangeWidget::~DateTimeRangeWidget()
17+
{
18+
delete ui;
19+
}
20+
21+
void DateTimeRangeWidget::init(const QDateTime& dateTime1,
22+
const QDateTime& dateTime2,
23+
const QStringList& options) {
24+
25+
ui->dateTime1->setDateTime(dateTime1);
26+
ui->dateTime2->setDateTime(dateTime2);
27+
28+
mMenu1 = new QMenu(this);
29+
//mMenu2 = new QMenu(this);
30+
31+
for(int i=0;i<options.size();i++) {
32+
QString option = options[i];
33+
QAction* action = new QAction(option, this);
34+
mMenu1->addAction(action);
35+
connect(action,&QAction::triggered,[=](){
36+
emit actionTriggered(i);
37+
});
38+
}
39+
40+
QAction* menuAction1 = mMenu1->menuAction();
41+
menuAction1->setIcon(QIcon(":/icons/src/icons/undo.png"));
42+
ui->toolBar1->addAction(menuAction1);
43+
44+
QAction* action2 = new QAction(QIcon(":/icons/src/icons/undo.png"),QString(),this);
45+
46+
ui->toolBar2->addAction(action2);
47+
48+
connect(menuAction1,&QAction::triggered,[=](){
49+
ui->dateTime1->setDateTime(dateTime1);
50+
});
51+
connect(action2,&QAction::triggered,[=](){
52+
ui->dateTime2->setDateTime(dateTime2);
53+
});
54+
55+
}
56+
57+
QDateTime DateTimeRangeWidget::dateTime1() const
58+
{
59+
return ui->dateTime1->dateTime();
60+
}
61+
62+
QDateTime DateTimeRangeWidget::dateTime2() const
63+
{
64+
return ui->dateTime2->dateTime();
65+
}
66+
67+
void DateTimeRangeWidget::setDateTime1(const QDateTime &value)
68+
{
69+
ui->dateTime1->setDateTime(value);
70+
}
71+
72+
void DateTimeRangeWidget::setDateTime2(const QDateTime &value)
73+
{
74+
ui->dateTime2->setDateTime(value);
75+
}

0 commit comments

Comments
 (0)