//=============================================================================
//
// OpenFlipper
// Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
// www.openflipper.org
//
//-----------------------------------------------------------------------------
//
// License
//
// OpenFlipper is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenFlipper is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenFlipper. If not, see .
//
//-----------------------------------------------------------------------------
//
// $Revision: 1909 $
// $Author: wilden $
// $Date: 2008-06-03 18:45:21 +0200 (Tue, 03 Jun 2008) $
//
//=============================================================================
#include "optionsWidget.hh"
#include
#include
#include
OptionsWidget::OptionsWidget(std::vector& _plugins, std::vector& _core, QWidget *parent)
: QWidget(parent),
plugins_(_plugins),
coreKeys_(_core)
{
setupUi(this);
connect(applyButton,SIGNAL(clicked()),this,SLOT(slotApply()));
connect(cancelButton,SIGNAL(clicked()),this,SLOT(slotCancel()));
// connect(checkUpdateButton,SIGNAL(clicked()),this,SLOT(slotCheckUpdates()));
}
void OptionsWidget::showEvent ( QShowEvent * event ) {
//general
fullscreen->setChecked( OpenFlipper::Options::fullScreen() );
splash->setChecked( OpenFlipper::Options::splash() );
toolbox->setChecked( !OpenFlipper::Options::hideToolbox() );
logger->setChecked( !OpenFlipper::Options::hideLogger() );
enableLogFile->setChecked( OpenFlipper::Options::logFileEnabled() );
//paths
logFile->setText( OpenFlipper::Options::logFile() );
//viewer
backfaceCulling->setChecked( OpenFlipper::Options::backfaceCulling() );
wZoomFactor->setText( QString::number(OpenFlipper::Options::wheelZoomFactor(), 'f') );
wZoomFactorShift->setText( QString::number(OpenFlipper::Options::wheelZoomFactorShift(), 'f') );
//keyBindings
keyTree->clear();
keyTree->setColumnCount ( 2 );
QStringList headerdata;
headerdata << "Action" << "Shortcut";
keyTree->setHeaderLabels(headerdata);
//add Core Keys
QTreeWidgetItem * core = new QTreeWidgetItem(keyTree, QStringList("CoreWidget"));
QList keys;
for (uint i=0; i < coreKeys_.size(); i++){
QStringList row;
QKeySequence keySequence( coreKeys_[i].key + coreKeys_[i].modifiers );
row << coreKeys_[i].description << keySequence.toString();
keys.append(new QTreeWidgetItem(core, row));
}
core->addChildren(keys);
keyTree->addTopLevelItem( core );
QList plugins;
for (uint i=0; i < plugins_.size(); i++){
plugins.append(new QTreeWidgetItem(keyTree, QStringList( plugins_[i].name )));
QList keys;
for (int k=0; k < plugins_[i].keys.count(); k++){
QStringList row;
QKeySequence keySequence( plugins_[i].keys[k].key + plugins_[i].keys[k].modifiers );
row << plugins_[i].keys[k].description << keySequence.toString();
keys.append(new QTreeWidgetItem(plugins[i], row));
}
plugins[i]->addChildren(keys);
}
keyTree->addTopLevelItems( plugins );
keyTree->resizeColumnToContents(0);
keyTree->resizeColumnToContents(1);
}
void OptionsWidget::slotApply() {
//general
OpenFlipper::Options::fullScreen( fullscreen->isChecked() );
OpenFlipper::Options::splash( splash->isChecked() );
OpenFlipper::Options::hideToolbox( !toolbox->isChecked() );
OpenFlipper::Options::hideLogger( !logger->isChecked() );
OpenFlipper::Options::logFileEnabled( enableLogFile->isChecked() );
//paths
OpenFlipper::Options::logFile( logFile->text() );
//viewer
OpenFlipper::Options::backfaceCulling( backfaceCulling->isChecked() );
OpenFlipper::Options::wheelZoomFactor( wZoomFactor->text().toDouble() );
OpenFlipper::Options::wheelZoomFactorShift( wZoomFactorShift->text().toDouble() );
emit applyOptions();
emit saveOptions();
hide();
}
void OptionsWidget::slotCancel() {
hide();
}
// void OptionsWidget::slotCheckUpdates() {
// // QUrl url("https://www.graphics.rwth-aachen.de/restricted/OpenFlipper-SIL/Versions.txt");
// // url.setUserName("");
// // url.setPassord("");
//
// QString ServerMainURL = updateURL->text() + "Versions.txt";
// QUrl url(ServerMainURL);
//
// if ( ! updateUser->text().isEmpty() )
// url.setUserName(updateUser->text());
//
// if ( ! updatePass->text().isEmpty() )
// url.setPassword(updatePass->text());
//
// QFileInfo fileInfo( QDir::home().absolutePath() + OpenFlipper::Options::dirSeparator() +
// ".OpenFlipper" + OpenFlipper::Options::dirSeparator() + "ServerVersions.txt");
// QString fileName = fileInfo.filePath();
//
// if (QFile::exists(fileName)) {
// QFile::remove(fileName);
// std::cerr << "File exists, removing it" << std::endl;
// }
//
// file = new QFile(fileName);
// if (!file->open(QIODevice::WriteOnly)) {
// std::cerr << "Unable to Open local file for writing" << std::endl;
// delete file;
// file = 0;
// } else {
// QHttp* http = new QHttp;
// QHttp::ConnectionMode mode = url.scheme().toLower() == "https" ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp;
// http->setHost(url.host(), mode, url.port() == -1 ? 0 : url.port());
//
// if (!url.userName().isEmpty())
// http->setUser(url.userName(), url.password());
//
// // httpRequestAborted = false;
// QByteArray path = QUrl::toPercentEncoding(url.path(), "!$&'()*+,;=:@/");
// if (path.isEmpty())
// path = "/";
//
// int httpGetId = http->get(path, file);
//
// // !!! Does not work because get is non blocking
// file->close();
//
// delete file;
//
// // progressDialog->setWindowTitle(tr("HTTP"));
// // progressDialog->setLabelText(tr("Downloading %1.").arg(fileName));
// // downloadButton->setEnabled(false);
// }
// }
//
// void HttpWindow::httpRequestFinished(int requestId, bool error)
// {
// if (requestId != httpGetId)
// return;
// if (httpRequestAborted) {
// if (file) {
// file->close();
// file->remove();
// delete file;
// file = 0;
// }
//
// progressDialog->hide();
// return;
// }
//
// if (requestId != httpGetId)
// return;
//
// progressDialog->hide();
// file->close();
//
// if (error) {
// file->remove();
// QMessageBox::information(this, tr("HTTP"),
// tr("Download failed: %1.")
// .arg(http->errorString()));
// } else {
// QString fileName = QFileInfo(QUrl(urlLineEdit->text()).path()).fileName();
// statusLabel->setText(tr("Downloaded %1 to current directory.").arg(fileName));
// }
//
// downloadButton->setEnabled(true);
// delete file;
// file = 0;
// }