rockbox/utils/themeeditor/gui/newprojectdialog.cpp

157 lines
4.5 KiB
C++

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2010 Robert Bieber
*
* This program 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
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "newprojectdialog.h"
#include "ui_newprojectdialog.h"
#include "targetdata.h"
#include <QSettings>
#include <QFileDialog>
#include <QDir>
NewProjectDialog::NewProjectDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::NewProjectDialog)
{
ui->setupUi(this);
/* Getting the default directory from the application settings */
QSettings settings;
settings.beginGroup("NewProjectDialog");
ui->locationBox->setText(settings.value("defaultDir",
QDir::home().absolutePath())
.toString());
settings.endGroup();
/* Populating the target box */
TargetData targets;
for(int i = 0; i < targets.count(); i++)
{
ui->targetBox->insertItem(i, QIcon(), targets.name(i), targets.id(i));
}
targetChange(0);
/* Connecting the browse button and target box */
QObject::connect(ui->browseButton, SIGNAL(clicked()),
this, SLOT(browse()));
QObject::connect(ui->targetBox, SIGNAL(currentIndexChanged(int)),
this, SLOT(targetChange(int)));
}
NewProjectDialog::~NewProjectDialog()
{
delete ui;
}
void NewProjectDialog::accept()
{
status.name = ui->nameBox->text();
status.path = ui->locationBox->text();
status.target = ui->targetBox->itemData(ui->targetBox->currentIndex())
.toString();
status.sbs = ui->sbsBox->isChecked();
status.wps = ui->wpsBox->isChecked();
status.fms = ui->fmsBox->isChecked();
status.rsbs = ui->rsbsBox->isChecked();
status.rwps = ui->rwpsBox->isChecked();
status.rfms = ui->rfmsBox->isChecked();
QSettings settings;
settings.beginGroup("NewProjectDialog");
settings.setValue("defaultDir", ui->locationBox->text());
settings.endGroup();
QDialog::accept();
}
void NewProjectDialog::reject()
{
ui->nameBox->setText(status.name);
ui->locationBox->setText(status.path);
ui->targetBox->setCurrentIndex(0);
ui->sbsBox->setChecked(status.sbs);
ui->wpsBox->setChecked(status.wps);
ui->fmsBox->setChecked(status.fms);
ui->rsbsBox->setChecked(status.rsbs);
ui->rwpsBox->setChecked(status.rwps);
ui->rfmsBox->setChecked(status.rfms);
QSettings settings;
settings.beginGroup("NewProjectDialog");
ui->locationBox->setText(settings.value("defaultDir",
QDir::home().absolutePath())
.toString());
settings.endGroup();
QDialog::reject();
}
void NewProjectDialog::browse()
{
QString path;
path = QFileDialog::getExistingDirectory(this, "New Project Location",
ui->locationBox->text());
ui->locationBox->setText(path);
}
void NewProjectDialog::targetChange(int target)
{
TargetData targets;
if(targets.fm(target))
{
ui->fmsBox->setEnabled(true);
ui->rfmsBox->setEnabled(true);
}
else
{
ui->fmsBox->setChecked(false);
ui->rfmsBox->setChecked(false);
ui->fmsBox->setEnabled(false);
ui->rfmsBox->setEnabled(false);
}
if(targets.remoteDepth(target) == TargetData::None)
{
ui->rwpsBox->setChecked(false);
ui->rsbsBox->setChecked(false);
ui->rfmsBox->setChecked(false);
ui->rsbsBox->setEnabled(false);
ui->rwpsBox->setEnabled(false);
ui->rfmsBox->setEnabled(false);
}
else
{
ui->rsbsBox->setEnabled(true);
ui->rwpsBox->setEnabled(true);
if(targets.fm(target))
ui->rfmsBox->setEnabled(true);
}
}