summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-07-14 16:44:08 +0200
committerMiklos Vajna <vmiklos@collabora.com>2021-07-14 17:38:43 +0200
commit3be01c11e87f6989f75cc5d000afb3c4fe50b3ab (patch)
treea6e344b9a09f2523d0133c08ecf9ee45f860c55a /extensions
parent6d81084e4f5100b1c8204f30a91d7a5b79998508 (diff)
extensions: bibliography database window: add browse button for URLs
To be consistent with the Define Bibliography Entry dialog which already had this. Change-Id: I1f2eda189ae594dbef9c7fd4f0f1a1d12dc6ad5f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118939 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Library_bib.mk1
-rw-r--r--extensions/source/bibliography/general.cxx25
-rw-r--r--extensions/source/bibliography/general.hxx2
-rw-r--r--extensions/uiconfig/sbibliography/ui/generalpage.ui34
4 files changed, 57 insertions, 5 deletions
diff --git a/extensions/Library_bib.mk b/extensions/Library_bib.mk
index 1f04de241c23..04787f16058e 100644
--- a/extensions/Library_bib.mk
+++ b/extensions/Library_bib.mk
@@ -39,6 +39,7 @@ $(eval $(call gb_Library_add_exception_objects,bib,\
$(eval $(call gb_Library_use_libraries,bib,\
dbtools \
+ sfx \
sot \
svt \
svl \
diff --git a/extensions/source/bibliography/general.cxx b/extensions/source/bibliography/general.cxx
index f2517ed95515..07fda81fc69f 100644
--- a/extensions/source/bibliography/general.cxx
+++ b/extensions/source/bibliography/general.cxx
@@ -25,6 +25,8 @@
#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+
#include <toolkit/helper/vclunohelper.hxx>
#include <cppuhelper/implbase.hxx>
#include <vcl/event.hxx>
@@ -42,6 +44,7 @@
#include <vcl/i18nhelp.hxx>
#include <algorithm>
#include <tools/urlobj.hxx>
+#include <sfx2/filedlghelper.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -121,6 +124,7 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
, xNoteED(m_xBuilder->weld_entry("notecontrol"))
, xURLFT(m_xBuilder->weld_label("url"))
, xURLED(m_xBuilder->weld_entry("urlcontrol"))
+ , m_xBrowseButton(m_xBuilder->weld_button("browse"))
, xCustom1FT(m_xBuilder->weld_label("custom1"))
, xCustom1ED(m_xBuilder->weld_entry("custom1control"))
, xCustom2FT(m_xBuilder->weld_label("custom2"))
@@ -248,6 +252,8 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
xURLFT->get_label(), *xURLED,
sTableErrorString, HID_BIB_URL_POS);
+ m_xBrowseButton->connect_clicked(LINK(this, BibGeneralPage, BrowseHdl));
+
AddControlWithError(lcl_GetColumnName(pMapping, CUSTOM1_POS),
xCustom1FT->get_label(), *xCustom1ED,
sTableErrorString, HID_BIB_CUSTOM1_POS);
@@ -279,6 +285,24 @@ BibGeneralPage::BibGeneralPage(vcl::Window* pParent, BibDataManager* pMan)
set_height_request(aSize.Height());
}
+IMPL_LINK_NOARG(BibGeneralPage, BrowseHdl, weld::Button&, void)
+{
+ sfx2::FileDialogHelper aFileDlg(ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
+ FileDialogFlags::NONE, GetFrameWeld());
+ OUString aPath = xURLED->get_text();
+ if (!aPath.isEmpty())
+ {
+ aFileDlg.SetDisplayDirectory(aPath);
+ }
+
+ if (aFileDlg.Execute() != ERRCODE_NONE)
+ {
+ return;
+ }
+
+ xURLED->set_text(aFileDlg.GetPath());
+};
+
IMPL_LINK(BibGeneralPage, FirstElementKeyInputHdl, const KeyEvent&, rKeyEvent, bool)
{
sal_uInt16 nCode = rKeyEvent.GetKeyCode().GetCode();
@@ -586,6 +610,7 @@ void BibGeneralPage::dispose()
xNoteED.reset();
xURLFT.reset();
xURLED.reset();
+ m_xBrowseButton.reset();
xCustom1FT.reset();
xCustom1ED.reset();
xCustom2FT.reset();
diff --git a/extensions/source/bibliography/general.hxx b/extensions/source/bibliography/general.hxx
index 3c897bfbeb4c..acf996a52a25 100644
--- a/extensions/source/bibliography/general.hxx
+++ b/extensions/source/bibliography/general.hxx
@@ -107,6 +107,7 @@ class BibGeneralPage : public InterimItemWindow
std::unique_ptr<weld::Entry> xNoteED;
std::unique_ptr<weld::Label> xURLFT;
std::unique_ptr<weld::Entry> xURLED;
+ std::unique_ptr<weld::Button> m_xBrowseButton;
std::unique_ptr<weld::Label> xCustom1FT;
std::unique_ptr<weld::Entry> xCustom1ED;
@@ -137,6 +138,7 @@ class BibGeneralPage : public InterimItemWindow
DECL_LINK(FirstElementKeyInputHdl, const KeyEvent&, bool);
DECL_LINK(LastElementKeyInputHdl, const KeyEvent&, bool);
+ DECL_LINK(BrowseHdl, weld::Button&, void);
public:
BibGeneralPage(vcl::Window* pParent, BibDataManager* pDatMan);
diff --git a/extensions/uiconfig/sbibliography/ui/generalpage.ui b/extensions/uiconfig/sbibliography/ui/generalpage.ui
index 2d16427fb6f8..8baf5fb0aa00 100644
--- a/extensions/uiconfig/sbibliography/ui/generalpage.ui
+++ b/extensions/uiconfig/sbibliography/ui/generalpage.ui
@@ -762,11 +762,35 @@
</packing>
</child>
<child>
- <object class="GtkEntry" id="urlcontrol">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="truncate-multiline">True</property>
- <property name="hexpand">True</property>
+ <object class="GtkBox" id="hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkEntry" id="urlcontrol">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="truncate-multiline">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="browse">
+ <property name="label" translatable="yes" context="generalpage|browse">Browse...</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="left-attach">5</property>