Kaydet (Commit) 5b60aeb5 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

external data: improve the external data dialog

Change-Id: I417bc57e2b4be56c4e3f51aa47b447ad48f5684d
Reviewed-on: https://gerrit.libreoffice.org/41340Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
üst 447ecc3c
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <rtl/ref.hxx> #include <rtl/ref.hxx>
#include <vcl/dialog.hxx> #include <vcl/dialog.hxx>
#include <vcl/layout.hxx> #include <vcl/layout.hxx>
#include <vcl/lstbox.hxx>
#include "address.hxx" #include "address.hxx"
#include "datamapper.hxx" #include "datamapper.hxx"
...@@ -34,12 +35,15 @@ class DataProviderDlg : public ModalDialog ...@@ -34,12 +35,15 @@ class DataProviderDlg : public ModalDialog
VclPtr<SvtURLBox> m_pCbUrl; VclPtr<SvtURLBox> m_pCbUrl;
VclPtr<PushButton> m_pBtnBrowse; VclPtr<PushButton> m_pBtnBrowse;
VclPtr<OKButton> m_pBtnOk; 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(UpdateClickHdl, Button*, void);
DECL_LINK(UpdateComboBoxHdl, ComboBox&, void); DECL_LINK(UpdateComboBoxHdl, ComboBox&, void);
DECL_LINK(BrowseHdl, Button*, void); DECL_LINK(BrowseHdl, Button*, void);
DECL_LINK(EditHdl, Edit&, void); DECL_LINK(EditHdl, Edit&, void);
DECL_LINK(SelectHdl, ListBox&, void);
void UpdateEnable(); void UpdateEnable();
......
...@@ -27,10 +27,13 @@ DataProviderDlg::DataProviderDlg(ScDocShell *pDocShell, vcl::Window* pParent) ...@@ -27,10 +27,13 @@ DataProviderDlg::DataProviderDlg(ScDocShell *pDocShell, vcl::Window* pParent)
get(m_pBtnBrowse, "browse"); get(m_pBtnBrowse, "browse");
get(m_pBtnOk, "ok"); get(m_pBtnOk, "ok");
get(m_pCBData, "combobox_db"); get(m_pCBData, "combobox_db");
get(m_pCBProvider, "combobox_provider");
get(m_pEdID, "edit_id");
m_pCbUrl->SetSelectHdl( LINK( this, DataProviderDlg, UpdateComboBoxHdl ) ); m_pCbUrl->SetSelectHdl( LINK( this, DataProviderDlg, UpdateComboBoxHdl ) );
m_pCbUrl->SetModifyHdl(LINK(this, DataProviderDlg, EditHdl)); m_pCbUrl->SetModifyHdl(LINK(this, DataProviderDlg, EditHdl));
m_pBtnBrowse->SetClickHdl( LINK( this, DataProviderDlg, BrowseHdl ) ); m_pBtnBrowse->SetClickHdl( LINK( this, DataProviderDlg, BrowseHdl ) );
m_pCBData->SetSelectHdl(LINK(this, DataProviderDlg, SelectHdl));
Init(); Init();
m_pCBData->Resize(); m_pCBData->Resize();
UpdateEnable(); UpdateEnable();
...@@ -47,6 +50,8 @@ void DataProviderDlg::dispose() ...@@ -47,6 +50,8 @@ void DataProviderDlg::dispose()
m_pBtnBrowse.clear(); m_pBtnBrowse.clear();
m_pBtnOk.clear(); m_pBtnOk.clear();
m_pCBData.clear(); m_pCBData.clear();
m_pCBProvider.clear();
m_pEdID.clear();
ModalDialog::dispose(); ModalDialog::dispose();
} }
...@@ -75,10 +80,17 @@ IMPL_LINK_NOARG(DataProviderDlg, EditHdl, Edit&, void) ...@@ -75,10 +80,17 @@ IMPL_LINK_NOARG(DataProviderDlg, EditHdl, Edit&, void)
UpdateEnable(); UpdateEnable();
} }
IMPL_LINK_NOARG(DataProviderDlg, SelectHdl, ListBox&, void)
{
UpdateEnable();
}
void DataProviderDlg::UpdateEnable() void DataProviderDlg::UpdateEnable()
{ {
bool bOk = !m_pCbUrl->GetURL().isEmpty(); bool bEmptyEntry = m_pCbUrl->GetURL().isEmpty() ||
m_pBtnOk->Enable(bOk); m_pCBData->GetSelectEntry().isEmpty() ||
m_pCBProvider->GetSelectEntry().isEmpty();
m_pBtnOk->Enable(!bEmptyEntry);
setOptimalLayoutSize(); setOptimalLayoutSize();
} }
...@@ -91,6 +103,12 @@ void DataProviderDlg::Init() ...@@ -91,6 +103,12 @@ void DataProviderDlg::Init()
OUString aName = itr->GetName(); OUString aName = itr->GetName();
m_pCBData->InsertEntry(aName); m_pCBData->InsertEntry(aName);
} }
std::vector<OUString> aDataProviders = sc::DataProviderFactory::getDataProviders();
for (auto& itr : aDataProviders)
{
m_pCBProvider->InsertEntry(itr);
}
} }
void DataProviderDlg::StartImport() void DataProviderDlg::StartImport()
...@@ -99,16 +117,23 @@ void DataProviderDlg::StartImport() ...@@ -99,16 +117,23 @@ void DataProviderDlg::StartImport()
if (aURL.isEmpty()) if (aURL.isEmpty())
return; return;
OUString maDBDataName = m_pCBData->GetText(); OUString maDBDataName = m_pCBData->GetSelectEntry();
if (maDBDataName.isEmpty()) if (maDBDataName.isEmpty())
return; return;
OUString aProvider = m_pCBProvider->GetSelectEntry();
if (aProvider.isEmpty())
return;
ScDocument& rDoc = mpDocShell->GetDocument(); ScDocument& rDoc = mpDocShell->GetDocument();
ScDBData* pDBData = rDoc.GetDBCollection()->getNamedDBs().findByUpperName(ScGlobal::pCharClass->uppercase(maDBDataName)); ScDBData* pDBData = rDoc.GetDBCollection()->getNamedDBs().findByUpperName(ScGlobal::pCharClass->uppercase(maDBDataName));
if (!pDBData) if (!pDBData)
return; 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); aDataSource.setDBData(pDBData);
mpDocShell->GetDocument().GetExternalDataMapper().insertDataSource(aDataSource); mpDocShell->GetDocument().GetExternalDataMapper().insertDataSource(aDataSource);
} }
......
...@@ -174,15 +174,9 @@ ...@@ -174,15 +174,9 @@
<object class="GtkComboBox" id="combobox_db"> <object class="GtkComboBox" id="combobox_db">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</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> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
...@@ -194,6 +188,75 @@ ...@@ -194,6 +188,75 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </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> </object>
</child> </child>
</object> </object>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment