diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-19 23:24:51 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-20 00:42:33 +0200 |
commit | 5b60aeb5cb6306f84f6ec44adbe1033e89a2962c (patch) | |
tree | f001152df969da6b827660c8601d0514b54f161d | |
parent | 447ecc3cfbae6a3db60d5c04360c4fa1f65eb679 (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.hxx | 6 | ||||
-rw-r--r-- | sc/source/ui/miscdlgs/dataproviderdlg.cxx | 33 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/dataprovider.ui | 77 |
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> |