123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- #include "Mirror.h"
- #include <QtGui>
- const QSize DEFAULT_SIZE = QSize(640, 360);
- const QRect MIRROR_SIZE = QRect(129, 37, 389, 292);
- #define FILTER_PNG "*.PNG"
- Mirror::Mirror(QWidget *parent) :
- QWidget(parent), camera(0), videoWidget(0)
- {
- ui.setupUi(this);
- setupVideo();
- setupAbout();
- setupCamera();
- setupSettings();
-
- ui.listWidget->hide();
- }
- Mirror::~Mirror()
- {
- delete camera;
- delete videoWidget;
- }
- void Mirror::setupSettings()
- {
- QDir dir(":/images/background", FILTER_PNG);
- QFileInfoList list = dir.entryInfoList( QDir::Files );
- for (int i = 0; i < list.size(); ++i)
- {
- QIcon icon(list[i].absoluteFilePath());
- QListWidgetItem* item = new QListWidgetItem(icon, list[i].baseName(), ui.listWidget );
- }
-
- connect(ui.settingsButton, SIGNAL(toggled(bool)), this, SLOT(showSettings(bool)));
- connect(ui.listWidget,SIGNAL(itemClicked(QListWidgetItem*)),
- this, SLOT(changeBackground(QListWidgetItem*)));
- connect(ui.listWidget,SIGNAL(doubleClicked(QListWidgetItem*)),
- this, SLOT(changeBackgroundAndReturn(QListWidgetItem*)));
- }
- void Mirror::setupVideo()
- {
- videoWidget = new QVideoWidget(ui.frame);
- videoWidget->setObjectName(QString::fromUtf8("videoWidget"));
- videoWidget->setGeometry(MIRROR_SIZE);
- }
- void Mirror::setupAbout()
- {
- QPixmap pixmapAbout(":/images/about.png");
- about = new QAboutSplashScreen(this,pixmapAbout);
- about->setGeometry(MIRROR_SIZE);
- connect( ui.aboutButton,SIGNAL(toggled(bool)),this,SLOT(showAbout(bool)));
- connect( about, SIGNAL(exitAbout()), this, SLOT(showAbout()));
- }
- void Mirror::showAbout(bool show)
- {
- ui.aboutButton->setChecked(show);
- ui.settingsButton->setChecked(false);
- ui.listWidget->hide();
- if( show )
- {
- videoWidget->hide();
- about->show();
- }
- else
- {
- videoWidget->show();
- about->hide();
- }
- }
- void Mirror::showSettings(bool show)
- {
- ui.settingsButton->setChecked(show);
- ui.aboutButton->setChecked(false);
- about->hide();
- if( show )
- {
- videoWidget->hide();
- ui.listWidget->show();
- }
- else
- {
- videoWidget->show();
- ui.listWidget->hide();
- }
- }
- void Mirror::setupCamera()
- {
- QByteArray cameraDevice = QCamera::availableDevices()[1];
- camera = new QCamera(cameraDevice);
- connect(camera, SIGNAL(error(QCamera::Error)), this, SLOT(error(QCamera::Error)));
- camera->setFocusMode(QCamera::AutoFocus);
- videoWidget->setMediaObject(camera);
- if (camera->state() == QCamera::ActiveState) {
- camera->stop();
- }
- camera->start();
- }
- void Mirror::changeBackground(QListWidgetItem* item)
- {
- QString baseName = item->text();
- QString style;
- QTextStream(&style) << "background-image: url(:/images/background/" << baseName << ".png);";
- ui.frame->setStyleSheet(
- QApplication::translate("Mirror", qPrintable(style), 0, QApplication::UnicodeUTF8));
- update();
- }
- void Mirror::changeBackgroundAndReturn(QListWidgetItem* item)
- {
- changeBackground( item );
- showSettings( false );
- }
- void Mirror::error(QCamera::Error e)
- {
- switch (e) {
- case QCamera::CameraError:
- {
- QMessageBox::warning(this, "Camera error", "General camera error");
- break;
- }
- case QCamera::NotReadyToCaptureError:
- {
- QMessageBox::warning(this, "Camera error", "Camera not ready to capture image");
- break;
- }
- case QCamera::InvalidRequestError:
- {
- QMessageBox::warning(this, "Camera error", "Invalid request");
- break;
- }
- case QCamera::ServiceMissingError:
- {
- QMessageBox::warning(this, "Camera error", "Service missing");
- break;
- }
- case QCamera::NotSupportedFeatureError:
- {
- QMessageBox::warning(this, "Camera error", "Not supported feature");
- break;
- }
- default:
- break;
- };
- }
|