#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);
}
}
-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"