]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiHyperlink.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiHyperlink.cpp
index 680aceba03513b4e5448a87dcc08809b97a41d4e..8323b65ff3d3f1f625f602fbfa9f53bbfcc5bdca 100644 (file)
@@ -18,7 +18,6 @@
 #include "insets/InsetCommand.h"
 
 #include <QCheckBox>
-#include <QCloseEvent>
 #include <QLineEdit>
 #include <QPushButton>
 
 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"