-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
122 lines (100 loc) · 3.53 KB
/
mainwindow.cpp
File metadata and controls
122 lines (100 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
currentGrabber(NULL)
{
ui->setupUi(this);
restoreGeometry(settings.value("mainWindowGeometry").toByteArray());
// create docks, toolbars, etc...
restoreState(settings.value("mainWindowState").toByteArray());
mjpgGrabber = new QImageGrabberMjpeg(this);
imageGrabbers.append(mjpgGrabber);
settings.beginGroup("mjpgGrabber");
mjpgGrabber->setSource(settings.value("url", "http://10.8.144.228:8080/stream?topic=/usb_cam/image_raw").toString());
settings.endGroup();
settings.beginGroup("httpGrabber");
httpGrabber = new QImageGrabberHttp(this);
httpGrabber->setSource(settings.value("url", "http://127.0.0.1:8080/?action=snapshot").toString());
settings.endGroup();
imageGrabbers.append(httpGrabber);
foreach (QImageGrabber *currentGrabber, imageGrabbers) {
ui->comboBoxGrabberTypes->addItem(currentGrabber->grabberName());
}
setImageGrabber(httpGrabber);
}
MainWindow::~MainWindow()
{
settings.beginGroup("mjpgGrabber");
settings.setValue("url", mjpgGrabber->currentSource());
settings.endGroup();
settings.beginGroup("httpGrabber");
settings.setValue("url", httpGrabber->currentSource());
settings.endGroup();
delete ui;
}
void MainWindow::closeEvent(QCloseEvent *event)
{
Q_UNUSED(event)
QSettings settings;
settings.setValue("mainWindowGeometry", saveGeometry());
settings.setValue("mainWindowState", saveState());
}
void MainWindow::on_pushButtonSettings_clicked()
{
settingsDialog.show();
}
void MainWindow::newImageReceieved(QImage *img)
{
ui->graphicsViewImage->newImageReceieved(img);
}
void MainWindow::newFPSCalculated(double fps, double avg)
{
ui->labelFPSValue->setText(QString::number(fps).leftJustified(7, '0'));
ui->labelFPSAvgValue->setText(QString::number(avg).leftJustified(7, '0'));
}
void MainWindow::on_comboBoxGrabberTypes_activated(int index)
{
setImageGrabber(imageGrabbers.at(index));
}
void MainWindow::setImageGrabber(QImageGrabber *gb)
{
disconnect(this, SLOT(newImageReceieved(QImage*)));
disconnect(this, SLOT(newFPSCalculated(double,double)));
if (currentGrabber != NULL) {
currentGrabber->stopGrabbing();
}
currentGrabber = gb;
settingsDialog.setImageGrabber(currentGrabber);
connect(currentGrabber, SIGNAL(newImageGrabbed(QImage*)),this, SLOT(newImageReceieved(QImage*)));
connect(currentGrabber, SIGNAL(newFPSCalculated(double,double)), this, SLOT(newFPSCalculated(double,double)));
connect(currentGrabber, SIGNAL(stateChanged(QImageGrabber::GrabbingState)), this, SLOT(grabbingStateChanged(QImageGrabber::GrabbingState)));
int i = 0;
foreach(QImageGrabber *cgb, imageGrabbers) {
if (cgb == currentGrabber) {
break;
}
i++;
}
if (ui->comboBoxGrabberTypes->currentIndex() != i)
ui->comboBoxGrabberTypes->setCurrentIndex(i);
}
void MainWindow::on_pushButtonStart_clicked()
{
if (currentGrabber != NULL) {
if (currentGrabber->isGrabbing()) {
currentGrabber->stopGrabbing();
} else {
currentGrabber->startGrabbing();
ui->graphicsViewImage->grabbingStarted();
}
}
}
void MainWindow::grabbingStateChanged(QImageGrabber::GrabbingState newState)
{
if (newState == QImageGrabber::GrabbingOn)
ui->pushButtonStart->setText(tr("Stop"));
else
ui->pushButtonStart->setText(tr("Start"));
}