Example #1
0
AppController::AppController() :
        lastTick_(0), frameCounter_(0), frameRate_(0) {
    model_ = new AppModel();
    gui_ = new MainWindow(model_, this);

    // register data update functions to model
    boost::function<void()> data_cb = boost::bind(&AppController::dataUpdated,
            this);
    update_con_ = model_->registerCallback(data_cb);

    // register pointpick callback of model to gui
    boost::function<void(const pcl::visualization::PointPickingEvent &)> pointpick_cb =
            boost::bind(&AppModel::pickPoint, model_, _1);
    gui_->registerPointPickCallback(pointpick_cb);

    // connect signal / slots to gui
    connect(this, SIGNAL(newCloud()), gui_, SLOT(updatePointCloud()));
    connect(this, SIGNAL(newSmallCloud(void)), gui_,
            SLOT(updateSmallPointCloud(void)));
    qRegisterMetaType<QImage>("QImage");
    connect(this, SIGNAL(newRgbImage(QImage)), gui_,
            SLOT(updateRgbImage(QImage)));
    qRegisterMetaType<QString>("QString");
    connect(this, SIGNAL(newStatusMessage(QString)), gui_,
            SLOT(updateStatusMessage(QString)));
    gui_->show();
}
Example #2
0
void AppController::dataUpdated() {
    ++frameCounter_;
    if (frameCounter_ == 10) {
        double current_tick = cv::getTickCount();
        frameRate_ = frameCounter_
                / ((current_tick - lastTick_) / cv::getTickFrequency());
        lastTick_ = current_tick;
        frameCounter_ = 0;
    }

    emit newSmallCloud();

    emit newCloud();

    QImage * image = model_->getLastImage();
    if (!image->isNull()) {
        QImage sImage = image->scaled(400, 300);
        emit newRgbImage(sImage);
    }

    QString status = QString("Final fps = %1 Grabber Time = %2 ms").arg(frameRate_,
            0, 'f', 1).arg(model_->getGrabberTime(), 0, 'f', 1);
    emit newStatusMessage(status);
}
void TestSettingsWidget::account()
{
    SettingsWidget *    settingsWidget = new SettingsWidget();
    Ui::SettingsWidget *ui             = settingsWidget->_ui;
    QSignalSpy          sig_status(settingsWidget,
                          SIGNAL(newStatusMessage(QString, QString)));

    TarsnapAccountDialog *tarsnapAccount = &settingsWidget->_tarsnapAccount;

    VISUAL_INIT(settingsWidget);

    // Send stats info.
    settingsWidget->overallStatsChanged(5, 4, 3, 2, 1);
    QCOMPARE(ui->accountArchivesCountLabel->text(), QString("1"));
    QCOMPARE(ui->accountTotalSizeLabel->text(), QString("5 B"));
    QCOMPARE(ui->accountActualSizeLabel->text(), QString("2 B"));
    QCOMPARE(ui->accountStorageSavedLabel->text(), QString("3 B"));
    VISUAL_WAIT;

    // Trigger an error message that we have to click away.
    QMetaObject::invokeMethod(ui->updateAccountButton, "clicked",
                              Qt::QueuedConnection);
    QMetaObject::invokeMethod(&tarsnapAccount->_popup, "close",
                              Qt::QueuedConnection);
    VISUAL_WAIT;

    // Set username, machine name, key.
    ui->accountUserLineEdit->setText("edited-user");
    ui->accountMachineLineEdit->setText("edited-mn");
    ui->accountMachineKeyLineEdit->setText("edited-mk");
    VISUAL_WAIT;

    // Nuke button, reject dialog.
    QMetaObject::invokeMethod(ui->nukeArchivesButton, "clicked",
                              Qt::QueuedConnection);
    QMetaObject::invokeMethod(&settingsWidget->_nukeConfirmationDialog._inputDialog,
                              "reject", Qt::QueuedConnection);
    QTest::qWait(200);
    QVERIFY(sig_status.takeFirst().at(0).toString()
            == QString("Nuke confirmation requested."));
    QVERIFY(sig_status.takeFirst().at(0).toString()
            == QString("Nuke cancelled."));
    VISUAL_WAIT;

    // It would be nice to test the nuke button with invalid confirmation text,
    // but QInputDialog::setTextValue() is not a slot and ::invokeMethod()
    // only works on slots.

    // Call commitSettings() manually because setText() doesn't trigger
    // editingFinished(), which is what's attached to the signal.
    settingsWidget->commitSettings();

    // Check saved settings
    TSettings settings;

    QVERIFY(settings.value("tarsnap/user", "") == QString("edited-user"));
    QVERIFY(settings.value("tarsnap/machine", "") == QString("edited-mn"));
    QVERIFY(settings.value("tarsnap/key", "") == QString("edited-mk"));

    delete settingsWidget;
}