#include "newsnippetdialog.h" #include "snippetinfowidget.h" #include #include using namespace vnotex; NewSnippetDialog::NewSnippetDialog(QWidget *p_parent) : ScrollDialog(p_parent) { setupUI(); m_infoWidget->setFocus(); } void NewSnippetDialog::setupUI() { setupSnippetInfoWidget(this); setCentralWidget(m_infoWidget); setDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); setWindowTitle(tr("New Snippet")); } void NewSnippetDialog::setupSnippetInfoWidget(QWidget *p_parent) { m_infoWidget = new SnippetInfoWidget(p_parent); } bool NewSnippetDialog::validateInputs() { bool valid = true; QString msg; valid = valid && validateNameInput(msg); setInformationText(msg, valid ? ScrollDialog::InformationLevel::Info : ScrollDialog::InformationLevel::Error); return valid; } void NewSnippetDialog::acceptedButtonClicked() { if (validateInputs() && newSnippet()) { accept(); } } bool NewSnippetDialog::newSnippet() { auto snip = QSharedPointer::create(m_infoWidget->getName(), m_infoWidget->getDescription(), m_infoWidget->getContent(), m_infoWidget->getShortcut(), m_infoWidget->shouldIndentAsFirstLine(), m_infoWidget->getCursorMark(), m_infoWidget->getSelectionMark()); Q_ASSERT(snip->isValid()); try { SnippetMgr::getInst().addSnippet(snip); } catch (Exception &p_e) { QString msg = tr("Failed to add snippet (%1) (%2).") .arg(snip->getName(), p_e.what()); qWarning() << msg; setInformationText(msg, ScrollDialog::InformationLevel::Error); return false; } return true; } bool NewSnippetDialog::validateNameInput(QString &p_msg) { p_msg.clear(); const auto name = m_infoWidget->getName(); if (name.isEmpty()) { p_msg = tr("Please specify a name for the snippet."); return false; } if (SnippetMgr::getInst().find(name, Qt::CaseInsensitive)) { p_msg = tr("Name conflicts with existing snippet."); return false; } return true; }