[Libreoffice-commits] core.git: 2 commits - officecfg/registry sc/inc sc/sdi sc/source sc/uiconfig
Markus Mohrhard
markus.mohrhard at googlemail.com
Sat Aug 19 22:44:23 UTC 2017
officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu | 5
sc/inc/sc.hrc | 3
sc/sdi/cellsh.sdi | 1
sc/sdi/scalc.sdi | 19 ++
sc/source/ui/inc/dataproviderdlg.hxx | 6
sc/source/ui/miscdlgs/dataproviderdlg.cxx | 33 +++-
sc/source/ui/view/cellsh2.cxx | 19 ++
sc/uiconfig/scalc/menubar/menubar.xml | 1
sc/uiconfig/scalc/ui/dataprovider.ui | 77 +++++++++-
9 files changed, 150 insertions(+), 14 deletions(-)
New commits:
commit 5b60aeb5cb6306f84f6ec44adbe1033e89a2962c
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Aug 19 23:24:51 2017 +0200
external data: improve the external data dialog
Change-Id: I417bc57e2b4be56c4e3f51aa47b447ad48f5684d
Reviewed-on: https://gerrit.libreoffice.org/41340
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
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>
commit 447ecc3cfbae6a3db60d5c04360c4fa1f65eb679
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Aug 19 23:22:57 2017 +0200
external data: add a menu entry to refresh the data
Change-Id: I1942488d518be91c3ad03f91d98834e22bfdfb16
Reviewed-on: https://gerrit.libreoffice.org/41339
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
index f44986cd64e4..adf23030cec8 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
@@ -1590,6 +1590,11 @@
<value xml:lang="en-US">Data Provider...</value>
</prop>
</node>
+ <node oor:name=".uno:DataProviderRefresh" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Refresh Data Provider</value>
+ </prop>
+ </node>
<node oor:name=".uno:ManageXMLSource" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~XML Source...</value>
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index eda54c590d7e..aca25080d5d6 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -85,7 +85,8 @@
#define SID_SCDEFAULTSOPTIONS (SC_VIEW_START + 21)
-#define SID_DATA_PROVIDER (SC_VIEW_START + 32)
+#define SID_DATA_PROVIDER (SC_VIEW_START + 31)
+#define SID_DATA_PROVIDER_REFRESH (SC_VIEW_START + 32)
#define SID_DATA_STREAMS_PLAY (SC_VIEW_START + 33)
#define SID_DATA_STREAMS_STOP (SC_VIEW_START + 34)
#define SID_DATA_STREAMS (SC_VIEW_START + 35)
diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
index 8db89f78171a..90b62dae89df 100644
--- a/sc/sdi/cellsh.sdi
+++ b/sc/sdi/cellsh.sdi
@@ -49,6 +49,7 @@ interface CellSelection
SID_DATA_STREAMS_PLAY [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
SID_DATA_STREAMS_STOP [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
SID_DATA_PROVIDER [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_DATA_PROVIDER_REFRESH [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
SID_MANAGE_XML_SOURCE [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
SID_SORT [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
SID_DATA_FORM [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index b828206cf121..ffb9f3c59e2b 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -4472,7 +4472,24 @@ SfxVoidItem DataProvider SID_DATA_PROVIDER
[
AutoUpdate = FALSE,
FastCall = FALSE,
- ReadOnlyDoc = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = SfxGroupId::Data;
+]
+
+SfxVoidItem DataProviderRefresh SID_DATA_PROVIDER_REFRESH
+()
+[
+ AutoUpdate = FALSE,
+ FastCall = FALSE,
+ ReadOnlyDoc = FALSE,
Toggle = FALSE,
Container = FALSE,
RecordAbsolute = FALSE,
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 4908f4179136..b03cad6f1fac 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -55,6 +55,7 @@
#include "validat.hxx"
#include "validate.hxx"
#include "scresid.hxx"
+#include "datamapper.hxx"
#include "scui_def.hxx"
#include "scabstdlg.hxx"
@@ -788,6 +789,16 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
}
}
break;
+ case SID_DATA_PROVIDER_REFRESH:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ auto& rDataMapper = pDoc->GetExternalDataMapper();
+ for (auto& rDataSource : rDataMapper.getDataSources())
+ {
+ rDataSource.refresh(pDoc, false);
+ }
+ }
+ break;
case SID_MANAGE_XML_SOURCE:
ExecuteXMLSourceDialog();
break;
@@ -1196,6 +1207,14 @@ void ScCellShell::GetDBState( SfxItemSet& rSet )
break;
case SID_DATA_PROVIDER:
break;
+ case SID_DATA_PROVIDER_REFRESH:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ auto& rDataMapper = pDoc->GetExternalDataMapper();
+ if (rDataMapper.getDataSources().empty())
+ rSet.DisableItem(nWhich);
+ }
+ break;
case SID_DATA_STREAMS:
case SID_DATA_STREAMS_PLAY:
case SID_DATA_STREAMS_STOP:
diff --git a/sc/uiconfig/scalc/menubar/menubar.xml b/sc/uiconfig/scalc/menubar/menubar.xml
index e40766848f09..fd9d62298b52 100644
--- a/sc/uiconfig/scalc/menubar/menubar.xml
+++ b/sc/uiconfig/scalc/menubar/menubar.xml
@@ -631,6 +631,7 @@
<menu:menuitem menu:id=".uno:DataStreams"/>
<menu:menuitem menu:id=".uno:ManageXMLSource"/>
<menu:menuitem menu:id=".uno:DataProvider"/>
+ <menu:menuitem menu:id=".uno:DataProviderRefresh"/>
<menu:menuseparator/>
<menu:menuitem menu:id=".uno:TableOperationDialog"/>
<menu:menuitem menu:id=".uno:TextToColumns"/>
More information about the Libreoffice-commits
mailing list