X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiHyperlink.cpp;h=8323b65ff3d3f1f625f602fbfa9f53bbfcc5bdca;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=680aceba03513b4e5448a87dcc08809b97a41d4e;hpb=7075eaadef6751ed7ef8ff3b16992d1eee43e8fb;p=lyx.git diff --git a/src/frontends/qt4/GuiHyperlink.cpp b/src/frontends/qt4/GuiHyperlink.cpp index 680aceba03..8323b65ff3 100644 --- a/src/frontends/qt4/GuiHyperlink.cpp +++ b/src/frontends/qt4/GuiHyperlink.cpp @@ -18,7 +18,6 @@ #include "insets/InsetCommand.h" #include -#include #include #include @@ -26,25 +25,36 @@ namespace lyx { namespace frontend { -GuiHyperlink::GuiHyperlink(LyXView & lv) - : GuiCommand(lv, "href") +GuiHyperlink::GuiHyperlink(GuiView & lv) + : GuiDialog(lv, "href", qt_("Hyperlink")), + params_(insetCode("href")) { setupUi(this); - setViewTitle( _("Hyperlink")); connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK())); connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose())); - connect(urlED, SIGNAL(textChanged(const QString &)), + connect(targetED, SIGNAL(textChanged(const QString &)), this, SLOT(changed_adaptor())); connect(nameED, SIGNAL(textChanged(const QString &)), this, SLOT(changed_adaptor())); + connect(webRB, SIGNAL(clicked()), + this, SLOT(changed_adaptor())); + connect(emailRB, SIGNAL(clicked()), + this, SLOT(changed_adaptor())); + connect(fileRB, SIGNAL(clicked()), + this, SLOT(changed_adaptor())); + + setFocusProxy(targetED); - setFocusProxy(urlED); + bc().setPolicy(ButtonPolicy::OkCancelReadOnlyPolicy); bc().setOK(okPB); bc().setCancel(closePB); - bc().addReadOnly(urlED); + bc().addReadOnly(targetED); bc().addReadOnly(nameED); + bc().addReadOnly(webRB); + bc().addReadOnly(emailRB); + bc().addReadOnly(fileRB); } @@ -54,43 +64,62 @@ void GuiHyperlink::changed_adaptor() } -void GuiHyperlink::closeEvent(QCloseEvent * e) -{ - slotClose(); - e->accept(); -} - - -void GuiHyperlink::updateContents() +void GuiHyperlink::paramsToDialog(InsetCommandParams const & /*icp*/) { - urlED->setText(toqstr(params_["target"])); + targetED->setText(toqstr(params_["target"])); nameED->setText(toqstr(params_["name"])); + if (params_["type"] == "") + webRB->setChecked(true); + else if (params_["type"] == "mailto:") + emailRB->setChecked(true); + else if (params_["type"] == "file:") + fileRB->setChecked(true); bc().setValid(isValid()); } void GuiHyperlink::applyView() { - params_["target"] = qstring_to_ucs4(urlED->text()); + params_["target"] = qstring_to_ucs4(targetED->text()); params_["name"] = qstring_to_ucs4(nameED->text()); + if (webRB->isChecked()) + params_["type"] = qstring_to_ucs4(""); + else if (emailRB->isChecked()) + params_["type"] = qstring_to_ucs4("mailto:"); + else if (fileRB->isChecked()) + params_["type"] = qstring_to_ucs4("file:"); params_.setCmdName("href"); } bool GuiHyperlink::isValid() { - QString const u = urlED->text(); - QString const n = nameED->text(); + return !targetED->text().isEmpty() || !nameED->text().isEmpty(); +} + - return !u.isEmpty() || !n.isEmpty(); +bool GuiHyperlink::initialiseParams(std::string const & data) +{ + // The name passed with LFUN_INSET_APPLY is also the name + // used to identify the mailer. + InsetCommand::string2params("href", data, params_); + paramsToDialog(params_); + return true; +} + + +void GuiHyperlink::dispatchParams() +{ + std::string const lfun = InsetCommand::params2string("href", params_); + dispatch(FuncRequest(getLfun(), lfun)); } -Dialog * createGuiHyperlink(LyXView & lv) { return new GuiHyperlink(lv); } +Dialog * createGuiHyperlink(GuiView & lv) { return new GuiHyperlink(lv); } } // namespace frontend } // namespace lyx -#include "GuiHyperlink_moc.cpp" +#include "moc_GuiHyperlink.cpp"