152 lines
4.4 KiB
C++
152 lines
4.4 KiB
C++
/*******************************************
|
|
* Zira Editor
|
|
* A lightweight PHP Editor
|
|
* (C)2019 https://github.com/ziracms/editor
|
|
*******************************************/
|
|
|
|
#include "createprojectdialog.h"
|
|
#include <QPushButton>
|
|
#include <QFileDialog>
|
|
#include "helper.h"
|
|
#include "scroller.h"
|
|
#include "settings.h"
|
|
#include "virtualinput.h"
|
|
|
|
CreateProjectDialog::CreateProjectDialog(QWidget * parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::CreateProjectDialog())
|
|
{
|
|
ui->setupUi(this);
|
|
setModal(true);
|
|
|
|
connect(ui->createProjectDialogDirectoryLineEdit, SIGNAL(textChanged(QString)), this, SLOT(directoryChanged(QString)));
|
|
connect(ui->createProjectDialogNameLineEdit, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
|
|
connect(ui->createProjectDialogDirectoryButton, SIGNAL(pressed()), this, SLOT(chooseButtonPressed()));
|
|
|
|
ui->createProjectDialogPathLabel->setVisible(false);
|
|
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
|
|
ui->buttonBox->setContentsMargins(0, 0, 20, 0);
|
|
ui->createProjectDialogHeaderLabel->setStyleSheet(DIALOG_HEADER_STYLESHEET);
|
|
|
|
// maximize dialog in Android
|
|
#if defined(Q_OS_ANDROID)
|
|
// scrolling by gesture
|
|
if (Settings::get("enable_android_gestures") == "yes") {
|
|
Scroller::enableGestures(ui->createProjectScrollArea);
|
|
}
|
|
if (Settings::get("auto_show_virtual_keyboard") == "yes") {
|
|
VirtualInput::registerDialog(this);
|
|
}
|
|
setWindowState( windowState() | Qt::WindowMaximized);
|
|
#endif
|
|
}
|
|
|
|
CreateProjectDialog::~CreateProjectDialog()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void CreateProjectDialog::directoryChanged(QString path)
|
|
{
|
|
QString name = getName();
|
|
if (path.size() > 0) {
|
|
ui->createProjectDialogResultLabel->setText(path);
|
|
ui->createProjectDialogPathLabel->setVisible(true);
|
|
} else {
|
|
ui->createProjectDialogResultLabel->setText("");
|
|
ui->createProjectDialogPathLabel->setVisible(false);
|
|
}
|
|
checkPath(path, name);
|
|
}
|
|
|
|
void CreateProjectDialog::nameChanged(QString name)
|
|
{
|
|
QString directory = getDirectory();
|
|
checkPath(directory, name);
|
|
}
|
|
|
|
void CreateProjectDialog::chooseButtonPressed()
|
|
{
|
|
//QString dir = QFileDialog::getExistingDirectory(this, tr("Choose project source directory"), getDirectory(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
|
QString dir = Helper::getExistingDirectory(this, tr("Choose project source directory"), getDirectory());
|
|
if (dir.size() > 0) {
|
|
setDirectory(dir);
|
|
}
|
|
}
|
|
|
|
void CreateProjectDialog::checkPath(QString directory, QString name)
|
|
{
|
|
if (directory.size() == 0 || name.trimmed().size() == 0 ||
|
|
!Helper::folderExists(directory)
|
|
) {
|
|
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
} else {
|
|
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
|
|
}
|
|
}
|
|
|
|
void CreateProjectDialog::setDirectory(QString path)
|
|
{
|
|
ui->createProjectDialogDirectoryLineEdit->setText(path);
|
|
}
|
|
|
|
QString CreateProjectDialog::getDirectory()
|
|
{
|
|
QString directory = ui->createProjectDialogDirectoryLineEdit->text();
|
|
if (directory.size() > 0 && directory.mid(directory.size()-1, 1) == QDir::separator()) directory = directory.mid(0, directory.size()-1);
|
|
return directory;
|
|
}
|
|
|
|
void CreateProjectDialog::setName(QString name)
|
|
{
|
|
ui->createProjectDialogNameLineEdit->setText(name);
|
|
}
|
|
|
|
QString CreateProjectDialog::getName()
|
|
{
|
|
QString name = ui->createProjectDialogNameLineEdit->text();
|
|
name = name.trimmed();
|
|
return name;
|
|
}
|
|
|
|
void CreateProjectDialog::setLintEnabled(bool enabled)
|
|
{
|
|
ui->createProjectDialogLintCheckbox->setChecked(enabled);
|
|
}
|
|
|
|
bool CreateProjectDialog::getLintEnabled()
|
|
{
|
|
return ui->createProjectDialogLintCheckbox->isChecked();
|
|
}
|
|
|
|
void CreateProjectDialog::setCSEnabled(bool enabled)
|
|
{
|
|
ui->createProjectDialogCSCheckbox->setChecked(enabled);
|
|
}
|
|
|
|
bool CreateProjectDialog::getCSEnabled()
|
|
{
|
|
return ui->createProjectDialogCSCheckbox->isChecked();
|
|
}
|
|
|
|
QString CreateProjectDialog::getPath()
|
|
{
|
|
QString directory = getDirectory();
|
|
if (directory.size() > 0 && directory.mid(directory.size()-1, 1) == QDir::separator()) directory = directory.mid(0, directory.size()-1);
|
|
if (directory.size() > 0) {
|
|
return directory;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
void CreateProjectDialog::focusDirectory()
|
|
{
|
|
ui->createProjectDialogDirectoryLineEdit->setFocus();
|
|
}
|
|
|
|
void CreateProjectDialog::focusName()
|
|
{
|
|
ui->createProjectDialogNameLineEdit->setFocus();
|
|
}
|