blob: 7ae20817ac8b404519073284c47a2a0ceb272554 [file] [log] [blame]
/**
* projectM-qt -- Qt4 based projectM GUI
* Copyright (C)2003-2004 projectM Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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 General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* See 'LICENSE.txt' included within this release
*
*/
#include "qpreseteditordialog.hpp"
#include <QFile>
#include <QMessageBox>
#include <QKeyEvent>
QPresetEditorDialog::QPresetEditorDialog(QProjectMWidget * widget, QWidget * parent, Qt::WindowFlags f): QDialog(parent,f), _qprojectMWidget(widget) {
_ui.setupUi(this);
QHBoxLayout * hboxLayout = new QHBoxLayout();
hboxLayout->addWidget(_ui.layoutWidget);
this->setLayout(hboxLayout);
connect(_ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonBoxHandler(QAbstractButton*)));
}
void QPresetEditorDialog::setPreset(QString url, int rowIndex) {
disconnect(_ui.presetTextEdit, 0, this, 0);
m_index = rowIndex;
m_presetUrl = url;
_ui.presetTextEdit->loadPresetText(url);
this->setWindowTitle(QString("Preset Editor - %1 [*]").arg(url));
this->setWindowModified(false);
connect(_ui.presetTextEdit, SIGNAL(textChanged()), this, SLOT(updateWindowTitle()));
connect(_ui.presetTextEdit, SIGNAL(applyRequested()), this, SLOT(saveAndNotify()), Qt::DirectConnection);
}
void QPresetEditorDialog::updateWindowTitle() {
this->setWindowModified(true);
}
const QString & QPresetEditorDialog::presetUrl() const {
return m_presetUrl;
}
void QPresetEditorDialog::revertBuffer() {
setPreset(m_presetUrl, m_index);
}
void QPresetEditorDialog::saveFile() {
QFile qfile(presetUrl());
if (!qfile.open(QIODevice::ReadWrite | QIODevice::Text)) {
QMessageBox::warning (0, "Preset File Error", QString(tr("There was a problem trying to save the preset \"%1\". You may not have permission to write to the file.")).arg(presetUrl()));
return ;
}
QTextStream textStream(&qfile);
textStream << _ui.presetTextEdit->toPlainText();
textStream.flush();
this->setWindowModified(false);
}
void QPresetEditorDialog::saveAndNotify() {
qDebug() << "save and notify";
saveFile();
emit(presetModified(m_index));
}
void QPresetEditorDialog::buttonBoxHandler(QAbstractButton * button) {
switch (_ui.buttonBox->standardButton(button)) {
case QDialogButtonBox::Close:
this->hide();
break;
case QDialogButtonBox::Apply:
saveAndNotify();
break;
case QDialogButtonBox::Reset:
revertBuffer();
break;
default:
break;
}
}