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 @@
#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();
......
......@@ -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);
}
......
......@@ -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>
......
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