diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-10 08:23:53 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-10 18:54:23 +0200 |
commit | f50ae88277d7fd652679e1ed763855ccd223f756 (patch) | |
tree | 78805ebf946a6eed9b416f8cba8d60523552fe97 /sc/source | |
parent | 8a7883f40536fa32aab85260f967f5f3f7f53431 (diff) |
external data: some work on the dialog
Change-Id: I4962688db1ccd766a7ff0e379033b5dc19a7462b
Reviewed-on: https://gerrit.libreoffice.org/40962
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/ui/inc/dataproviderdlg.hxx | 10 | ||||
-rw-r--r-- | sc/source/ui/miscdlgs/dataproviderdlg.cxx | 101 | ||||
-rw-r--r-- | sc/source/ui/view/cellsh2.cxx | 12 |
3 files changed, 25 insertions, 98 deletions
diff --git a/sc/source/ui/inc/dataproviderdlg.hxx b/sc/source/ui/inc/dataproviderdlg.hxx index 05e607157931..0bba15b4e70d 100644 --- a/sc/source/ui/inc/dataproviderdlg.hxx +++ b/sc/source/ui/inc/dataproviderdlg.hxx @@ -33,22 +33,14 @@ class DataProviderDlg : public ModalDialog VclPtr<SvtURLBox> m_pCbUrl; VclPtr<PushButton> m_pBtnBrowse; - VclPtr<RadioButton> m_pRBAddressValue; - VclPtr<CheckBox> m_pCBRefreshOnEmpty; - VclPtr<RadioButton> m_pRBMaxLimit; - VclPtr<RadioButton> m_pRBUnlimited; - VclPtr<Edit> m_pEdRange; - VclPtr<Edit> m_pEdLimit; VclPtr<OKButton> m_pBtnOk; - VclPtr<VclFrame> m_pVclFrameLimit; + VclPtr<ComboBox> m_pCBData; DECL_LINK(UpdateClickHdl, Button*, void); - DECL_LINK(UpdateHdl, Edit&, void); DECL_LINK(UpdateComboBoxHdl, ComboBox&, void); DECL_LINK(BrowseHdl, Button*, void); void UpdateEnable(); - ScRange GetStartRange(); std::shared_ptr<ExternalDataSource> mpDataSource; diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx index eaa830cde2c1..8c20f8fff4a6 100644 --- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx +++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx @@ -25,27 +25,10 @@ DataProviderDlg::DataProviderDlg(ScDocShell *pDocShell, vcl::Window* pParent) { get(m_pCbUrl, "url"); get(m_pBtnBrowse, "browse"); - get(m_pRBAddressValue, "addressvalue"); - get(m_pCBRefreshOnEmpty, "refresh_ui"); - //get(m_pRBRangeDown, "rangedown"); - //get(m_pRBNoMove, "nomove"); - get(m_pRBMaxLimit, "maxlimit"); - get(m_pRBUnlimited, "unlimited"); - get(m_pEdRange, "range"); - get(m_pEdLimit, "limit"); get(m_pBtnOk, "ok"); - get(m_pVclFrameLimit, "framelimit"); - //get(m_pVclFrameMove, "framemove"); + get(m_pCBData, "combobox_db"); m_pCbUrl->SetSelectHdl( LINK( this, DataProviderDlg, UpdateComboBoxHdl ) ); - m_pRBAddressValue->SetClickHdl( LINK( this, DataProviderDlg, UpdateClickHdl ) ); - m_pRBAddressValue->Enable(false); - //m_pRBScriptData->Enable(false); - //m_pRBDirectData->Hide(); - //m_pRBScriptData->Hide(); - //m_pRBNoMove->Hide(); - //m_pRBValuesInLine->SetClickHdl( LINK( this, DataProviderDlg, UpdateClickHdl ) ); - m_pEdRange->SetModifyHdl( LINK( this, DataProviderDlg, UpdateHdl ) ); m_pBtnBrowse->SetClickHdl( LINK( this, DataProviderDlg, BrowseHdl ) ); UpdateEnable(); } @@ -59,21 +42,8 @@ void DataProviderDlg::dispose() { m_pCbUrl.clear(); m_pBtnBrowse.clear(); - //m_pRBDirectData.clear(); - //m_pRBScriptData.clear(); - //m_pRBValuesInLine.clear(); - m_pRBAddressValue.clear(); - m_pCBRefreshOnEmpty.clear(); - //m_pRBDataDown.clear(); - //m_pRBRangeDown.clear(); - //m_pRBNoMove.clear(); - m_pRBMaxLimit.clear(); - m_pRBUnlimited.clear(); - m_pEdRange.clear(); - m_pEdLimit.clear(); m_pBtnOk.clear(); - m_pVclFrameLimit.clear(); - //m_pVclFrameMove.clear(); + m_pCBData.clear(); ModalDialog::dispose(); } @@ -91,78 +61,47 @@ IMPL_LINK_NOARG(DataProviderDlg, UpdateClickHdl, Button*, void) { UpdateEnable(); } + IMPL_LINK_NOARG(DataProviderDlg, UpdateComboBoxHdl, ComboBox&, void) { UpdateEnable(); } -IMPL_LINK_NOARG(DataProviderDlg, UpdateHdl, Edit&, void) -{ - UpdateEnable(); -} void DataProviderDlg::UpdateEnable() { bool bOk = !m_pCbUrl->GetURL().isEmpty(); - if (m_pRBAddressValue->IsChecked()) - { - m_pVclFrameLimit->Disable(); - //m_pVclFrameMove->Disable(); - m_pEdRange->Disable(); - } - else - { - m_pVclFrameLimit->Enable(); - //m_pVclFrameMove->Enable(); - m_pEdRange->Enable(); - if (bOk) - { - // Check the given range to make sure it's valid. - ScRange aTest = GetStartRange(); - if (!aTest.IsValid()) - bOk = false; - } - } m_pBtnOk->Enable(bOk); setOptimalLayoutSize(); } -ScRange DataProviderDlg::GetStartRange() +void DataProviderDlg::Init() { - OUString aStr = m_pEdRange->GetText(); ScDocument& rDoc = mpDocShell->GetDocument(); - ScRange aRange; - ScRefFlags nRes = aRange.Parse(aStr, &rDoc, rDoc.GetAddressConvention()); - if ( ((nRes & ScRefFlags::VALID) == ScRefFlags::ZERO) || !aRange.IsValid()) + ScDBCollection::NamedDBs& rNamedDBs = rDoc.GetDBCollection()->getNamedDBs(); + for (auto& itr : rNamedDBs) { - // Invalid range. - aRange.SetInvalid(); - return aRange; + OUString aName = itr->GetName(); + m_pCBData->InsertEntry(aName); } - - // Make sure it's only one row tall. - if (aRange.aStart.Row() != aRange.aEnd.Row()) - aRange.SetInvalid(); - - return aRange; -} - -void DataProviderDlg::Init() -{ - // TODO : Get the user specified Url and Range - (void)this; } void DataProviderDlg::StartImport() { - ScRange aRange = GetStartRange(); - if (!aRange.IsValid()) - // Don't start the stream without a valid range. + OUString aURL = m_pCbUrl->GetText(); + if (aURL.isEmpty()) + return; + + OUString maDBDataName = m_pCBData->GetText(); + if (maDBDataName.isEmpty()) + return; + + ScDocument& rDoc = mpDocShell->GetDocument(); + ScDBData* pDBData = rDoc.GetDBCollection()->getNamedDBs().findByUpperName(ScGlobal::pCharClass->uppercase(maDBDataName)); + if (!pDBData) return; - OUString aURL; - // TODO : replace those strings with something that is obtained from user ExternalDataSource aDataSource(aURL, "org.libreoffice.calc.csv", &mpDocShell->GetDocument()); - //aDataSource.setDBData(pDBData); + aDataSource.setDBData(pDBData); mpDocShell->GetDocument().GetExternalDataMapper().insertDataSource(aDataSource); } diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index 7866f7693e9f..abbb35219c0a 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -782,15 +782,11 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) case SID_DATA_PROVIDER: { ScopedVclPtrInstance< sc::DataProviderDlg > aDialog( GetViewData()->GetDocShell(), pTabViewShell->GetDialogParent() ); - //ScDocument *pDoc = GetViewData()->GetDocument(); - //sc::DocumentLinkManager& rMgr = pDoc->GetDocLinkManager(); - //sc::DataStream* pStrm = rMgr.getDataStream(); - //if (pStrm) aDialog->Init(/**pStrm*/); - aDialog->Execute(); - - //if (aDialog->Execute() == RET_OK) - //aDialog->StartStream(); + if (aDialog->Execute() == RET_OK) + { + aDialog->StartImport(); + } } break; case SID_MANAGE_XML_SOURCE: |