| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #include <QtWidgets>
- #include "vfileinfodialog.h"
- #include "vdirectory.h"
- #include "vfile.h"
- #include "vconfigmanager.h"
- #include "utils/vutils.h"
- extern VConfigManager *g_config;
- VFileInfoDialog::VFileInfoDialog(const QString &title, const QString &info,
- VDirectory *directory, const VFile *file,
- QWidget *parent)
- : QDialog(parent), infoLabel(NULL), title(title), info(info),
- m_directory(directory), m_file(file)
- {
- setupUI();
- connect(nameEdit, &QLineEdit::textChanged, this, &VFileInfoDialog::handleInputChanged);
- handleInputChanged();
- }
- void VFileInfoDialog::setupUI()
- {
- if (!info.isEmpty()) {
- infoLabel = new QLabel(info);
- }
- nameLabel = new QLabel(tr("Note &name:"));
- nameEdit = new QLineEdit(m_file->getName());
- nameEdit->selectAll();
- nameLabel->setBuddy(nameEdit);
- m_warnLabel = new QLabel();
- m_warnLabel->setWordWrap(true);
- m_warnLabel->hide();
- // Ok is the default button.
- m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
- connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
- connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
- QHBoxLayout *topLayout = new QHBoxLayout();
- topLayout->addWidget(nameLabel);
- topLayout->addWidget(nameEdit);
- QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
- nameEdit->setMinimumWidth(okBtn->sizeHint().width() * 3);
- QVBoxLayout *mainLayout = new QVBoxLayout();
- if (infoLabel) {
- mainLayout->addWidget(infoLabel);
- }
- mainLayout->addLayout(topLayout);
- mainLayout->addWidget(m_warnLabel);
- mainLayout->addWidget(m_btnBox);
- mainLayout->setSizeConstraint(QLayout::SetFixedSize);
- setLayout(mainLayout);
- setWindowTitle(title);
- }
- void VFileInfoDialog::handleInputChanged()
- {
- bool showWarnLabel = false;
- QString name = nameEdit->text();
- bool nameOk = !name.isEmpty();
- if (nameOk && name != m_file->getName()) {
- // Check if the name conflicts with existing note name.
- // Case-insensitive when creating note.
- if (m_directory->findFile(name, false)) {
- nameOk = false;
- showWarnLabel = true;
- QString nameConflictText = tr("<span style=\"%1\">WARNING</span>: Name (case-insensitive) already exists. "
- "Please choose another name.")
- .arg(g_config->c_warningTextStyle);
- m_warnLabel->setText(nameConflictText);
- } else if (VUtils::docTypeFromName(name) != m_file->getDocType()) {
- // Check if the name change the doc type.
- nameOk = false;
- showWarnLabel = true;
- QString nameConflictText = tr("<span style=\"%1\">WARNING</span>: Changing type of the note is not supported. "
- "Please use the same suffix as the old one.")
- .arg(g_config->c_warningTextStyle);
- m_warnLabel->setText(nameConflictText);
- }
- }
- m_warnLabel->setVisible(showWarnLabel);
- QPushButton *okBtn = m_btnBox->button(QDialogButtonBox::Ok);
- okBtn->setEnabled(nameOk);
- }
- QString VFileInfoDialog::getNameInput() const
- {
- return nameEdit->text();
- }
|