BioSignalPi  v2
mainwindow.cpp
Go to the documentation of this file.
1 #include "mainwindow.h"
2 /*#include "ecgplotwidget.h"
3 #include "ecgviewwidget.h"
4 #include "emptywidget.h" */
5 #include "homepagewidget.h"
6 #include "plottingwidget.h"
7 #include "settingswidget.h"
8 #include <QtWidgets>
9 #include "plotandcapturewidget.h"
10 #include "hrvwidget.h"
12 
13 MainWindow::MainWindow(QWidget *parent):
14  QWidget( parent )
15 {
16  setupComponents();
17  setupActions();
18  setupLayout();
19 }
20 
21 void MainWindow::quit()
22 {
23  qApp->quit();
24 }
25 
26 void MainWindow::takeScreenshot()
27 {
28  QPixmap screen = this->grab();
29 
30  QDir directory(qApp->applicationDirPath());
31  QStringList filesInDir = directory.entryList();
32  QString baseName = QDate::currentDate().toString().remove(" ");
33 
34  if (filesInDir.contains(baseName+".png")) {
35  int ii=1;
36  while (filesInDir.contains(QString(baseName+"%1.png").arg(ii))) {
37  ii++;
38  }
39  baseName += QString::number(ii);
40  }
41  baseName += ".png";
42  screen.save(baseName);
43 
44 }
49 void MainWindow::setupComponents()
50 {
51  HomePageWidget *homePageWidget = new HomePageWidget;
52  PlotAndCaptureWidget *ecgPlotWidget = new PlotAndCaptureWidget;
53  PlottingWidget *plottingWidget = new PlottingWidget;
54  SettingsWidget *settingsWidget = new SettingsWidget;
55  HrvWidget *hrvWidget= new HrvWidget;
56  RemoteSelector *bluetoothWidget=new RemoteSelector;
57 
58  quitButton = new QPushButton(tr("Quit"));
59  quitButton->show();
60  quitButton->setMinimumHeight(64);
61  quitButton->setMaximumHeight(64);
62 
63 
64  screenShotButton = new QPushButton(tr("Take snapshot"));
65  screenShotButton->show();
66  screenShotButton->setMinimumHeight(64);
67  screenShotButton->setMaximumHeight(64);
68 
69 
70  stackedWidget = new QStackedWidget();
71  stackedWidget->addWidget(homePageWidget);
72  stackedWidget->addWidget(ecgPlotWidget);
73  stackedWidget->addWidget(plottingWidget);
74  stackedWidget->addWidget(settingsWidget);
75  stackedWidget->addWidget(hrvWidget);
76  stackedWidget->addWidget(bluetoothWidget);
77 
78 
79  QListWidgetItem *homeListWidgetItem = new QListWidgetItem;
80  homeListWidgetItem->setText("Start");
81  homeListWidgetItem->setIcon(QIcon(":/images/images/go-home.png"));
82 
83  QListWidgetItem *plotCaptureListWidgetItem = new QListWidgetItem;
84  plotCaptureListWidgetItem->setText("ECG capture");
85  plotCaptureListWidgetItem->setIcon(QIcon(":/images/images/emblem-favorite.png"));
86 
87  QListWidgetItem *ecgViewListWidgetItem = new QListWidgetItem;
88  ecgViewListWidgetItem->setText("View ECG");
89  ecgViewListWidgetItem->setIcon(QIcon(":/images/images/media-playback-start-4.png"));
90 
91  QListWidgetItem *settingsListWidgetItem = new QListWidgetItem;
92  settingsListWidgetItem->setText("Settings");
93  settingsListWidgetItem->setIcon(QIcon(":/images/images/emblem-system-2.png"));
94 
95  QListWidgetItem *hrvListWidgetItem = new QListWidgetItem;
96  hrvListWidgetItem->setText("HRV");
97  hrvListWidgetItem->setIcon(QIcon(":/images/images/emblem-system-2.png"));
98 
99  QListWidgetItem *bluetoothWidgetItem = new QListWidgetItem;
100  bluetoothWidgetItem->setText("Bluetooth Transfer");
101  bluetoothWidgetItem->setIcon(QIcon(":/images/images/emblem-favorite.png"));
102 
103 
104  listWidget = new QListWidget();
105  listWidget->addItem(homeListWidgetItem);
106  listWidget->addItem(plotCaptureListWidgetItem);
107  listWidget->addItem(ecgViewListWidgetItem);
108  listWidget->addItem(settingsListWidgetItem);
109  listWidget->addItem(hrvListWidgetItem);
110  listWidget->addItem(bluetoothWidgetItem);
111  listWidget->setIconSize(QSize(48,48));
112  listWidget->setFlow(QListWidget::LeftToRight);
113  listWidget->setMaximumHeight(64);
114  listWidget->setUniformItemSizes(false);
115 }
116 
117 void MainWindow::setupActions()
118 {
119 
120  connect(listWidget, SIGNAL(currentRowChanged(int)), stackedWidget, SLOT(setCurrentIndex(int)));
121  connect(quitButton, SIGNAL(clicked()), this, SLOT(quit()));
122  connect(screenShotButton, SIGNAL(clicked()), this, SLOT(takeScreenshot()));
123 }
124 
125 void MainWindow::setupLayout()
126 {
127  QHBoxLayout *sidebarLayout = new QHBoxLayout;
128  sidebarLayout->addWidget(listWidget);
129  sidebarLayout->addWidget(screenShotButton);
130  sidebarLayout->addWidget(quitButton);
131 
132  QVBoxLayout *mainLayout = new QVBoxLayout;
133  mainLayout->addWidget(stackedWidget);
134  mainLayout->addLayout(sidebarLayout);
135 
136  setLayout(mainLayout);
137 }
Startpage for the Biosignal PI software.
Widget responsible for the graphical interface of the HRV Analysis.
Definition: hrvwidget.h:48
Widget used for capture and plotting of data from the connected DeviceManager.
Widget used to change the different settings in SettingsWidget.
MainWindow(QWidget *=NULL)
Definition: mainwindow.cpp:13
Widget that can read ECG information from file and plots the data.