summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2017-08-19 23:24:51 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2017-08-20 00:42:33 +0200
commit5b60aeb5cb6306f84f6ec44adbe1033e89a2962c (patch)
treef001152df969da6b827660c8601d0514b54f161d
parent447ecc3cfbae6a3db60d5c04360c4fa1f65eb679 (diff)
external data: improve the external data dialog
Change-Id: I417bc57e2b4be56c4e3f51aa47b447ad48f5684d Reviewed-on: https://gerrit.libreoffice.org/41340 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--sc/source/ui/inc/dataproviderdlg.hxx6
-rw-r--r--sc/source/ui/miscdlgs/dataproviderdlg.cxx33
-rw-r--r--sc/uiconfig/scalc/ui/dataprovider.ui77
3 files changed, 104 insertions, 12 deletions
diff --git a/sc/source/ui/inc/dataproviderdlg.hxx b/sc/source/ui/inc/dataproviderdlg.hxx
index 1281adb0581f..ec519b4e9e35 100644
--- a/sc/source/ui/inc/dataproviderdlg.hxx
+++ b/sc/source/ui/inc/dataproviderdlg.hxx
@@ -15,6 +15,7 @@
#include <rtl/ref.hxx>
#include <vcl/dialog.hxx>
#include <vcl/layout.hxx>
+#include <vcl/lstbox.hxx>
#include "address.hxx"
#include "datamapper.hxx"
@@ -34,12 +35,15 @@ class DataProviderDlg : public ModalDialog
VclPtr<SvtURLBox> m_pCbUrl;
VclPtr<PushButton> m_pBtnBrowse;
VclPtr<OKButton> m_pBtnOk;
- VclPtr<ComboBox> m_pCBData;
+ VclPtr<ListBox> m_pCBData;
+ VclPtr<ListBox> m_pCBProvider;
+ VclPtr<Edit> m_pEdID;
DECL_LINK(UpdateClickHdl, Button*, void);
DECL_LINK(UpdateComboBoxHdl, ComboBox&, void);
DECL_LINK(BrowseHdl, Button*, void);
DECL_LINK(EditHdl, Edit&, void);
+ DECL_LINK(SelectHdl, ListBox&, void);
void UpdateEnable();
diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx
index c583df378300..7d1bd6150dd3 100644
--- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx
+++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx
@@ -27,10 +27,13 @@ DataProviderDlg::DataProviderDlg(ScDocShell *pDocShell, vcl::Window* pParent)
get(m_pBtnBrowse, "browse");
get(m_pBtnOk, "ok");
get(m_pCBData, "combobox_db");
+ get(m_pCBProvider, "combobox_provider");
+ get(m_pEdID, "edit_id");
m_pCbUrl->SetSelectHdl( LINK( this, DataProviderDlg, UpdateComboBoxHdl ) );
m_pCbUrl->SetModifyHdl(LINK(this, DataProviderDlg, EditHdl));
m_pBtnBrowse->SetClickHdl( LINK( this, DataProviderDlg, BrowseHdl ) );
+ m_pCBData->SetSelectHdl(LINK(this, DataProviderDlg, SelectHdl));
Init();
m_pCBData->Resize();
UpdateEnable();
@@ -47,6 +50,8 @@ void DataProviderDlg::dispose()
m_pBtnBrowse.clear();
m_pBtnOk.clear();
m_pCBData.clear();
+ m_pCBProvider.clear();
+ m_pEdID.clear();
ModalDialog::dispose();
}
@@ -75,10 +80,17 @@ IMPL_LINK_NOARG(DataProviderDlg, EditHdl, Edit&, void)
UpdateEnable();
}
+IMPL_LINK_NOARG(DataProviderDlg, SelectHdl, ListBox&, void)
+{
+ UpdateEnable();
+}
+
void DataProviderDlg::UpdateEnable()
{
- bool bOk = !m_pCbUrl->GetURL().isEmpty();
- m_pBtnOk->Enable(bOk);
+ bool bEmptyEntry = m_pCbUrl->GetURL().isEmpty() ||
+ m_pCBData->GetSelectEntry().isEmpty() ||
+ m_pCBProvider->GetSelectEntry().isEmpty();
+ m_pBtnOk->Enable(!bEmptyEntry);
setOptimalLayoutSize();
}
@@ -91,6 +103,12 @@ void DataProviderDlg::Init()
OUString aName = itr->GetName();
m_pCBData->InsertEntry(aName);
}
+
+ std::vector<OUString> aDataProviders = sc::DataProviderFactory::getDataProviders();
+ for (auto& itr : aDataProviders)
+ {
+ m_pCBProvider->InsertEntry(itr);
+ }
}
void DataProviderDlg::StartImport()
@@ -99,16 +117,23 @@ void DataProviderDlg::StartImport()
if (aURL.isEmpty())
return;
- OUString maDBDataName = m_pCBData->GetText();
+ OUString maDBDataName = m_pCBData->GetSelectEntry();
if (maDBDataName.isEmpty())
return;
+ OUString aProvider = m_pCBProvider->GetSelectEntry();
+ if (aProvider.isEmpty())
+ return;
+
ScDocument& rDoc = mpDocShell->GetDocument();
ScDBData* pDBData = rDoc.GetDBCollection()->getNamedDBs().findByUpperName(ScGlobal::pCharClass->uppercase(maDBDataName));
if (!pDBData)
return;
- ExternalDataSource aDataSource(aURL, "org.libreoffice.calc.csv", &mpDocShell->GetDocument());
+ OUString aID = m_pEdID->GetText();
+
+ ExternalDataSource aDataSource(aURL, aProvider, &mpDocShell->GetDocument());
+ aDataSource.setID(aID);
aDataSource.setDBData(pDBData);
mpDocShell->GetDocument().GetExternalDataMapper().insertDataSource(aDataSource);
}
diff --git a/sc/uiconfig/scalc/ui/dataprovider.ui b/sc/uiconfig/scalc/ui/dataprovider.ui
index a2a674ead78c..c6deab0572bb 100644
--- a/sc/uiconfig/scalc/ui/dataprovider.ui
+++ b/sc/uiconfig/scalc/ui/dataprovider.ui
@@ -174,15 +174,9 @@
<object class="GtkComboBox" id="combobox_db">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_entry">True</property>
- <child internal-child="entry">
- <object class="GtkEntry">
- <property name="can_focus">False</property>
- </object>
- </child>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@@ -194,6 +188,75 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Data Provider:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox_provider">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="popup_fixed_width">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Search String:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="edit_id">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
</child>
</object>