sc/inc/scabstdlg.hxx | 1 sc/source/ui/app/msgpool.cxx | 2 sc/source/ui/app/uiitems.cxx | 6 - sc/source/ui/attrdlg/scdlgfact.cxx | 4 sc/source/ui/attrdlg/scdlgfact.hxx | 1 sc/source/ui/dbgui/filtdlg.cxx | 93 +++++++------------ sc/source/ui/dbgui/foptmgr.cxx | 173 +++++++++++++++++-------------------- sc/source/ui/dbgui/pfiltdlg.cxx | 80 ++++++----------- sc/source/ui/dbgui/sfiltdlg.cxx | 100 +++++++++------------ sc/source/ui/inc/filtdlg.hxx | 13 +- sc/source/ui/inc/foptmgr.hxx | 6 - sc/source/ui/inc/pfiltdlg.hxx | 8 - sc/source/ui/inc/uiitems.hxx | 3 sc/source/ui/view/gridwin2.cxx | 4 sc/source/ui/view/pivotsh.cxx | 4 sc/source/ui/view/tabvwshc.cxx | 10 -- 16 files changed, 223 insertions(+), 285 deletions(-)
New commits: commit 0096200a4bdffd052aeb43b40e5d538d20e9c044 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Apr 29 17:29:26 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Apr 29 21:02:16 2025 +0200 ScQueryItem: no need to store a ScViewData pointer it can be passed by reference, like the other dialogs do Change-Id: I79abd717835012af8bcf8d4e135bd7e79f36ac35 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184783 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Tested-by: Jenkins diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx index 8d46f1b3a2dc..b4ffbee6ba5c 100644 --- a/sc/inc/scabstdlg.hxx +++ b/sc/inc/scabstdlg.hxx @@ -492,6 +492,7 @@ public: virtual VclPtr<AbstractScPivotFilterDlg> CreateScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, + ScViewData& rViewData, sal_uInt16 nSourceTab) = 0; virtual VclPtr<AbstractScDPFunctionDlg> CreateScDPFunctionDlg(weld::Widget* pParent, diff --git a/sc/source/ui/app/msgpool.cxx b/sc/source/ui/app/msgpool.cxx index 5dd25412bfce..a8ab8230d2a3 100644 --- a/sc/source/ui/app/msgpool.cxx +++ b/sc/source/ui/app/msgpool.cxx @@ -33,7 +33,7 @@ static ItemInfoPackage& getItemInfoPackageScMessage() { SCITEM_STRING, new SfxStringItem(SCITEM_STRING, OUString() ), 0, SFX_ITEMINFOFLAG_NONE }, { SCITEM_SEARCHDATA, new SvxSearchItem(SCITEM_SEARCHDATA ), 0, SFX_ITEMINFOFLAG_NONE }, { SCITEM_SORTDATA, new ScSortItem(SCITEM_SORTDATA, nullptr, nullptr), SID_SORT, SFX_ITEMINFOFLAG_NONE }, - { SCITEM_QUERYDATA, new ScQueryItem(SCITEM_QUERYDATA, nullptr, nullptr ), SID_QUERY, SFX_ITEMINFOFLAG_NONE }, + { SCITEM_QUERYDATA, new ScQueryItem(SCITEM_QUERYDATA, nullptr ), SID_QUERY, SFX_ITEMINFOFLAG_NONE }, { SCITEM_SUBTDATA, new ScSubTotalItem(SCITEM_SUBTDATA, nullptr, nullptr ), SID_SUBTOTALS, SFX_ITEMINFOFLAG_NONE }, { SCITEM_CONSOLIDATEDATA, new ScConsolidateItem(SCITEM_CONSOLIDATEDATA, nullptr ), SID_CONSOLIDATE, SFX_ITEMINFOFLAG_NONE }, { SCITEM_PIVOTDATA, new ScPivotItem(SCITEM_PIVOTDATA, nullptr, nullptr, false ), SID_PIVOT_TABLE, SFX_ITEMINFOFLAG_NONE }, diff --git a/sc/source/ui/app/uiitems.cxx b/sc/source/ui/app/uiitems.cxx index cde899879ae2..03968d863c18 100644 --- a/sc/source/ui/app/uiitems.cxx +++ b/sc/source/ui/app/uiitems.cxx @@ -157,10 +157,8 @@ bool ScSortItem::QueryValue( css::uno::Any& rVal, sal_uInt8 /* nMemberUd */ ) co * Data for the Filter dialog */ ScQueryItem::ScQueryItem( sal_uInt16 nWhichP, - ScViewData* ptrViewData, const ScQueryParam* pQueryData ) : SfxPoolItem ( nWhichP ), - pViewData ( ptrViewData ), bIsAdvanced ( false ) { if (pQueryData) @@ -172,7 +170,6 @@ ScQueryItem::ScQueryItem( sal_uInt16 nWhichP, ScQueryItem::ScQueryItem( const ScQueryItem& rItem ) : SfxPoolItem ( rItem ), mpQueryData(new ScQueryParam(*rItem.mpQueryData)), - pViewData ( rItem.pViewData ), aAdvSource ( rItem.aAdvSource ), bIsAdvanced ( rItem.bIsAdvanced ) { @@ -210,8 +207,7 @@ bool ScQueryItem::operator==( const SfxPoolItem& rItem ) const const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(rItem); - return ( (pViewData == rQueryItem.pViewData) - && (bIsAdvanced == rQueryItem.bIsAdvanced) + return ( (bIsAdvanced == rQueryItem.bIsAdvanced) && (aAdvSource == rQueryItem.aAdvSource) && (*mpQueryData == *rQueryItem.mpQueryData) ); } diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx index 637c9ae58d78..8867a952be19 100644 --- a/sc/source/ui/attrdlg/scdlgfact.cxx +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -568,9 +568,9 @@ public: } VclPtr<AbstractScPivotFilterDlg> ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg(weld::Window* pParent, - const SfxItemSet& rArgSet, sal_uInt16 nSourceTab) + const SfxItemSet& rArgSet, ScViewData& rViewData, sal_uInt16 nSourceTab) { - return VclPtr<AbstractScPivotFilterDlg_Impl>::Create(pParent, rArgSet, nSourceTab); + return VclPtr<AbstractScPivotFilterDlg_Impl>::Create(pParent, rArgSet, rViewData, nSourceTab); } namespace diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx index adb4293df269..c5083fbbb632 100644 --- a/sc/source/ui/attrdlg/scdlgfact.hxx +++ b/sc/source/ui/attrdlg/scdlgfact.hxx @@ -104,6 +104,7 @@ public: virtual VclPtr<AbstractScNamePasteDlg> CreateScNamePasteDlg(weld::Window * pParent, ScDocShell* pShell) override; virtual VclPtr<AbstractScPivotFilterDlg> CreateScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, + ScViewData& rViewData, sal_uInt16 nSourceTab) override; virtual VclPtr<AbstractScDPFunctionDlg> CreateScDPFunctionDlg(weld::Widget* pParent, diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx index c3c8f15b2a05..67d8850f8005 100644 --- a/sc/source/ui/dbgui/filtdlg.cxx +++ b/sc/source/ui/dbgui/filtdlg.cxx @@ -50,7 +50,7 @@ ScFilterDlg::EntryList::EntryList() : mnHeaderPos(INVALID_HEADER_POS) {} -ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, +ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, ScViewData& rData, const SfxItemSet& rArgSet) : ScAnyRefDlgController(pB, pCW, pParent, u"modules/scalc/ui/standardfilterdialog.ui"_ustr, u"StandardFilterDialog"_ustr) @@ -63,9 +63,9 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pPa , aStrBackgroundColor(ScResId(SCSTR_FILTER_BACKGROUND_COLOR_COND)) , nWhichQuery(rArgSet.GetPool()->GetWhichIDFromSlotID(SID_QUERY)) , theQueryData(static_cast<const ScQueryItem&>(rArgSet.Get(nWhichQuery)).GetQueryData()) - , pViewData(nullptr) - , pDoc(nullptr) - , nSrcTab(0) + , rViewData(rData) + , rDoc(rViewData.GetDocument()) + , nSrcTab(rViewData.GetTabNo()) , bRefInputMode(false) , m_xLbConnect1(m_xBuilder->weld_combo_box(u"connect1"_ustr)) , m_xLbField1(m_xBuilder->weld_combo_box(u"field1"_ustr)) @@ -116,7 +116,7 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pPa assert(m_xLbCond1->find_text(aStrFontColor) != -1); assert(m_xLbCond1->find_text(aStrBackgroundColor) != -1); - Init( rArgSet ); + Init(); // Hack: RefInput control pTimer.reset( new Timer("ScFilterTimer") ); @@ -161,11 +161,8 @@ VirtualDevice* lcl_getColorImage(const Color &rColor) } } -void ScFilterDlg::Init( const SfxItemSet& rArgSet ) +void ScFilterDlg::Init() { - const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>( - rArgSet.Get( nWhichQuery )); - m_xBtnClear->connect_clicked ( LINK( this, ScFilterDlg, BtnClearHdl ) ); m_xBtnOk->connect_clicked ( LINK( this, ScFilterDlg, EndDlgHdl ) ); m_xBtnCancel->connect_clicked ( LINK( this, ScFilterDlg, EndDlgHdl ) ); @@ -206,10 +203,6 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) m_xBtnRemove3->connect_clicked( LINK( this, ScFilterDlg, BtnRemoveHdl ) ); m_xBtnRemove4->connect_clicked( LINK( this, ScFilterDlg, BtnRemoveHdl ) ); - pViewData = rQueryItem.GetViewData(); - pDoc = pViewData ? &pViewData->GetDocument() : nullptr; - nSrcTab = pViewData ? pViewData->GetTabNo() : static_cast<SCTAB>(0); - // for easier access: maFieldLbArr.reserve(QUERY_ENTRY_COUNT); maFieldLbArr.push_back(m_xLbField1.get()); @@ -244,7 +237,7 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) // Option initialization: pOptionsMgr.reset( new ScFilterOptionsMgr( - pViewData, + rViewData, theQueryData, m_xBtnCase.get(), m_xBtnRegExp.get(), @@ -302,7 +295,7 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) } else if ( i == 0 ) { - nFieldSelPos = pViewData ? GetFieldSelPos(pViewData->GetCurX()) : 0; + nFieldSelPos = GetFieldSelPos(rViewData.GetCurX()); rEntry.nField = nFieldSelPos ? (theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1) : static_cast<SCCOL>(0); rEntry.bDoQuery=true; @@ -400,14 +393,13 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) m_xEdVal3->set_entry_width_chars(10); m_xEdVal4->set_entry_width_chars(10); - if (pDoc != nullptr && pDoc->GetChangeTrack() != nullptr) + if (rDoc.GetChangeTrack() != nullptr) m_xBtnCopyResult->set_sensitive(false); } void ScFilterDlg::Close() { - if (pViewData) - pViewData->GetDocShell()->CancelAutoDBRange(); + rViewData.GetDocShell()->CancelAutoDBRange(); DoClose( ScFilterDlgWrapper::GetChildWindowId() ); } @@ -455,27 +447,24 @@ void ScFilterDlg::FillFieldLists() m_xLbField3->append_text( aStrNone ); m_xLbField4->append_text( aStrNone ); - if ( pDoc ) + OUString aFieldName; + SCTAB nTab = nSrcTab; + SCCOL nFirstCol = theQueryData.nCol1; + SCROW nFirstRow = theQueryData.nRow1; + SCCOL nMaxCol = theQueryData.nCol2; + SCCOL col = 0; + + for ( col=nFirstCol; col<=nMaxCol; col++ ) { - OUString aFieldName; - SCTAB nTab = nSrcTab; - SCCOL nFirstCol = theQueryData.nCol1; - SCROW nFirstRow = theQueryData.nRow1; - SCCOL nMaxCol = theQueryData.nCol2; - SCCOL col = 0; - - for ( col=nFirstCol; col<=nMaxCol; col++ ) + aFieldName = rDoc.GetString(col, nFirstRow, nTab); + if (!m_xBtnHeader->get_active() || aFieldName.isEmpty()) { - aFieldName = pDoc->GetString(col, nFirstRow, nTab); - if (!m_xBtnHeader->get_active() || aFieldName.isEmpty()) - { - aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", ScColToAlpha( col )); - } - m_xLbField1->append_text( aFieldName ); - m_xLbField2->append_text( aFieldName ); - m_xLbField3->append_text( aFieldName ); - m_xLbField4->append_text( aFieldName ); + aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", ScColToAlpha( col )); } + m_xLbField1->append_text( aFieldName ); + m_xLbField2->append_text( aFieldName ); + m_xLbField3->append_text( aFieldName ); + m_xLbField4->append_text( aFieldName ); } m_xLbField4->thaw(); @@ -488,7 +477,7 @@ void ScFilterDlg::UpdateValueList( size_t nList ) { bool bCaseSens = m_xBtnCase->get_active(); - if (pDoc && nList > 0 && nList <= QUERY_ENTRY_COUNT) + if (nList > 0 && nList <= QUERY_ENTRY_COUNT) { weld::ComboBox* pValList = maValueEdArr[nList-1]; const sal_Int32 nFieldSelPos = maFieldLbArr[nList-1]->get_active(); @@ -522,7 +511,7 @@ void ScFilterDlg::UpdateValueList( size_t nList ) return; pList = r.first->second.get(); - pDoc->GetFilterEntriesArea( + rDoc.GetFilterEntriesArea( nColumn, nFirstRow+1, nLastRow, nTab, bCaseSens, pList->maFilterEntries); maHasDates[nOffset+nList-1] = pList->maFilterEntries.mbHasDates; @@ -532,7 +521,7 @@ void ScFilterDlg::UpdateValueList( size_t nList ) pList->mnHeaderPos = INVALID_HEADER_POS; ScFilterEntries aHdrColl; - pDoc->GetFilterEntriesArea( + rDoc.GetFilterEntriesArea( nColumn, nFirstRow, nFirstRow, nTab, true, aHdrColl ); if (!aHdrColl.empty()) { @@ -574,9 +563,6 @@ void ScFilterDlg::UpdateHdrInValueList( size_t nList ) { //! GetText / SetText ?? - if (!pDoc) - return; - if (nList == 0 || nList > QUERY_ENTRY_COUNT) return; @@ -630,7 +616,7 @@ void ScFilterDlg::ClearValueList( size_t nList ) void ScFilterDlg::UpdateColorList(size_t nList) { - if (!pDoc || nList <= 0 || nList > QUERY_ENTRY_COUNT) + if (nList <= 0 || nList > QUERY_ENTRY_COUNT) return; size_t nPos = nList - 1; @@ -698,7 +684,7 @@ ScQueryItem* ScFilterDlg::GetOutputItem() if ( m_xBtnCopyResult->get_active() ) { ScRefFlags nResult = theCopyPos.Parse( - m_xEdCopyArea->GetText(), *pDoc, pDoc->GetAddressConvention()); + m_xEdCopyArea->GetText(), rDoc, rDoc.GetAddressConvention()); bCopyPosOk = (nResult & ScRefFlags::VALID) == ScRefFlags::VALID; } @@ -726,7 +712,7 @@ ScQueryItem* ScFilterDlg::GetOutputItem() // only set the three - reset everything else - pOutItem.reset( new ScQueryItem( nWhichQuery, pViewData, &theParam ) ); + pOutItem.reset( new ScQueryItem( nWhichQuery, &theParam ) ); return pOutItem.get(); } @@ -1301,11 +1287,11 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, weld::ComboBox&, rEd, void ) } else { - rItem.maString = pDoc->GetSharedStringPool().intern(aStrVal); + rItem.maString = rDoc.GetSharedStringPool().intern(aStrVal); rItem.mfVal = 0.0; sal_uInt32 nIndex = 0; - bool bNumber = pDoc->GetFormatTable()->IsNumberFormat( + bool bNumber = rDoc.GetFormatTable()->IsNumberFormat( rItem.maString.getString(), nIndex, rItem.mfVal); rItem.meType = bNumber ? ScQueryEntry::ByValue : ScQueryEntry::ByString; } @@ -1539,20 +1525,15 @@ void ScFilterDlg::SetValString( const OUString& rQueryStr, const ScQueryEntry::I { if (rQueryStr.isEmpty()) { - pDoc = pViewData ? &pViewData->GetDocument() : nullptr; if (rItem.meType == ScQueryEntry::ByValue) { - if (pDoc) - rValStr = pDoc->GetFormatTable()->GetInputLineString(rItem.mfVal, 0); + rValStr = rDoc.GetFormatTable()->GetInputLineString(rItem.mfVal, 0); } else if (rItem.meType == ScQueryEntry::ByDate) { - if (pDoc) - { - SvNumberFormatter* pFormatter = pDoc->GetFormatTable(); - rValStr = pFormatter->GetInputLineString(rItem.mfVal, - pFormatter->GetStandardFormat( SvNumFormatType::DATE)); - } + SvNumberFormatter* pFormatter = rDoc.GetFormatTable(); + rValStr = pFormatter->GetInputLineString(rItem.mfVal, + pFormatter->GetStandardFormat( SvNumFormatType::DATE)); } else { diff --git a/sc/source/ui/dbgui/foptmgr.cxx b/sc/source/ui/dbgui/foptmgr.cxx index decaa622ba63..915c505bbd51 100644 --- a/sc/source/ui/dbgui/foptmgr.cxx +++ b/sc/source/ui/dbgui/foptmgr.cxx @@ -32,7 +32,7 @@ // ScFilterOptionsMgr (.ui's option helper) ScFilterOptionsMgr::ScFilterOptionsMgr( - ScViewData* ptrViewData, + ScViewData& rData, const ScQueryParam& refQueryData, weld::CheckButton* refBtnCase, weld::CheckButton* refBtnRegExp, @@ -47,8 +47,8 @@ ScFilterOptionsMgr::ScFilterOptionsMgr( weld::Label* refFtDbArea, const OUString& refStrUndefined ) - : pViewData ( ptrViewData ), - pDoc ( ptrViewData ? &ptrViewData->GetDocument() : nullptr ), + : rViewData ( rData ), + rDoc ( rViewData.GetDocument() ), pBtnCase ( refBtnCase ), pBtnRegExp ( refBtnRegExp ), pBtnHeader ( refBtnHeader ), @@ -69,8 +69,6 @@ ScFilterOptionsMgr::ScFilterOptionsMgr( void ScFilterOptionsMgr::Init() { //moggi:TODO - OSL_ENSURE( pViewData && pDoc, "Init failed :-/" ); - pLbCopyArea->connect_changed( LINK( this, ScFilterOptionsMgr, LbAreaSelHdl ) ); pEdCopyArea->SetModifyHdl ( LINK( this, ScFilterOptionsMgr, EdAreaModifyHdl ) ); pBtnCopyResult->connect_toggled( LINK( this, ScFilterOptionsMgr, BtnCopyResultHdl ) ); @@ -80,104 +78,99 @@ void ScFilterOptionsMgr::Init() pBtnRegExp->set_active( rQueryData.eSearchType == utl::SearchParam::SearchType::Regexp ); pBtnUnique->set_active( !rQueryData.bDuplicate ); - if ( pViewData && pDoc ) + OUString theAreaStr; + ScRange theCurArea ( ScAddress( rQueryData.nCol1, + rQueryData.nRow1, + rViewData.GetTabNo() ), + ScAddress( rQueryData.nCol2, + rQueryData.nRow2, + rViewData.GetTabNo() ) ); + ScDBCollection* pDBColl = rDoc.GetDBCollection(); + OUString theDbArea; + OUString theDbName(STR_DB_LOCAL_NONAME); + const formula::FormulaGrammar::AddressConvention eConv = rDoc.GetAddressConvention(); + + theAreaStr = theCurArea.Format(rDoc, ScRefFlags::RANGE_ABS_3D, eConv); + + // fill the target area list + + pLbCopyArea->clear(); + pLbCopyArea->append_text(rStrUndefined); + + ScAreaNameIterator aIter( rDoc ); + OUString aName; + ScRange aRange; + while ( aIter.Next( aName, aRange ) ) { - OUString theAreaStr; - ScRange theCurArea ( ScAddress( rQueryData.nCol1, - rQueryData.nRow1, - pViewData->GetTabNo() ), - ScAddress( rQueryData.nCol2, - rQueryData.nRow2, - pViewData->GetTabNo() ) ); - ScDBCollection* pDBColl = pDoc->GetDBCollection(); - OUString theDbArea; - OUString theDbName(STR_DB_LOCAL_NONAME); - const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); - - theAreaStr = theCurArea.Format(*pDoc, ScRefFlags::RANGE_ABS_3D, eConv); - - // fill the target area list - - pLbCopyArea->clear(); - pLbCopyArea->append_text(rStrUndefined); - - ScAreaNameIterator aIter( *pDoc ); - OUString aName; - ScRange aRange; - while ( aIter.Next( aName, aRange ) ) - { - OUString aRefStr(aRange.aStart.Format(ScRefFlags::ADDR_ABS_3D, pDoc, eConv)); - pLbCopyArea->append(aRefStr, aName); - } + OUString aRefStr(aRange.aStart.Format(ScRefFlags::ADDR_ABS_3D, &rDoc, eConv)); + pLbCopyArea->append(aRefStr, aName); + } - pBtnDestPers->set_active(true); // always on when called - pLbCopyArea->set_active( 0 ); - pEdCopyArea->SetText( OUString() ); + pBtnDestPers->set_active(true); // always on when called + pLbCopyArea->set_active( 0 ); + pEdCopyArea->SetText( OUString() ); - /* - * Check whether the transferred area is a database area: - */ + /* + * Check whether the transferred area is a database area: + */ - theDbArea = theAreaStr; + theDbArea = theAreaStr; - if ( pDBColl ) - { - ScAddress& rStart = theCurArea.aStart; - ScAddress& rEnd = theCurArea.aEnd; - const ScDBData* pDBData = pDBColl->GetDBAtArea( - rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row()); + if ( pDBColl ) + { + ScAddress& rStart = theCurArea.aStart; + ScAddress& rEnd = theCurArea.aEnd; + const ScDBData* pDBData = pDBColl->GetDBAtArea( + rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row()); - if ( pDBData ) - { - pBtnHeader->set_active( pDBData->HasHeader() ); - theDbName = pDBData->GetName(); + if ( pDBData ) + { + pBtnHeader->set_active( pDBData->HasHeader() ); + theDbName = pDBData->GetName(); - pBtnHeader->set_sensitive(theDbName == STR_DB_LOCAL_NONAME); - } + pBtnHeader->set_sensitive(theDbName == STR_DB_LOCAL_NONAME); } + } - if ( theDbName != STR_DB_LOCAL_NONAME ) - { - theDbArea += " (" + theDbName + ")"; + if ( theDbName != STR_DB_LOCAL_NONAME ) + { + theDbArea += " (" + theDbName + ")"; - pFtDbArea->set_label( theDbArea ); - } - else - { - pFtDbAreaLabel->set_label( OUString() ); - pFtDbArea->set_label( OUString() ); - } + pFtDbArea->set_label( theDbArea ); + } + else + { + pFtDbAreaLabel->set_label( OUString() ); + pFtDbArea->set_label( OUString() ); + } - // position to copy to: + // position to copy to: - if ( !rQueryData.bInplace ) - { - OUString aString = - ScAddress( rQueryData.nDestCol, - rQueryData.nDestRow, - rQueryData.nDestTab - ).Format(ScRefFlags::ADDR_ABS_3D, pDoc, eConv); - - pBtnCopyResult->set_active(true); - pEdCopyArea->SetText( aString ); - EdAreaModifyHdl( *pEdCopyArea ); - pLbCopyArea->set_sensitive(true); - pEdCopyArea->GetWidget()->set_sensitive(true); - pRbCopyArea->GetWidget()->set_sensitive(true); - pBtnDestPers->set_sensitive(true); - } - else - { - pBtnCopyResult->set_active( false ); - pEdCopyArea->SetText( OUString() ); - pLbCopyArea->set_sensitive(false); - pEdCopyArea->GetWidget()->set_sensitive(false); - pRbCopyArea->GetWidget()->set_sensitive(false); - pBtnDestPers->set_sensitive(false); - } + if ( !rQueryData.bInplace ) + { + OUString aString = + ScAddress( rQueryData.nDestCol, + rQueryData.nDestRow, + rQueryData.nDestTab + ).Format(ScRefFlags::ADDR_ABS_3D, &rDoc, eConv); + + pBtnCopyResult->set_active(true); + pEdCopyArea->SetText( aString ); + EdAreaModifyHdl( *pEdCopyArea ); + pLbCopyArea->set_sensitive(true); + pEdCopyArea->GetWidget()->set_sensitive(true); + pRbCopyArea->GetWidget()->set_sensitive(true); + pBtnDestPers->set_sensitive(true); } else + { + pBtnCopyResult->set_active( false ); pEdCopyArea->SetText( OUString() ); + pLbCopyArea->set_sensitive(false); + pEdCopyArea->GetWidget()->set_sensitive(false); + pRbCopyArea->GetWidget()->set_sensitive(false); + pBtnDestPers->set_sensitive(false); + } } bool ScFilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const @@ -188,7 +181,7 @@ bool ScFilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const if ( -1 != nColonPos ) aPosStr = aPosStr.copy( 0, nColonPos ); - ScRefFlags nResult = ScAddress().Parse( aPosStr, *pDoc, pDoc->GetAddressConvention() ); + ScRefFlags nResult = ScAddress().Parse( aPosStr, rDoc, rDoc.GetAddressConvention() ); return (nResult & ScRefFlags::VALID) == ScRefFlags::VALID; } @@ -215,7 +208,7 @@ IMPL_LINK( ScFilterOptionsMgr, EdAreaModifyHdl, formula::RefEdit&, rEd, void ) return; OUString theCurPosStr = rEd.GetText(); - ScRefFlags nResult = ScAddress().Parse( theCurPosStr, *pDoc, pDoc->GetAddressConvention() ); + ScRefFlags nResult = ScAddress().Parse( theCurPosStr, rDoc, rDoc.GetAddressConvention() ); if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID) { diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx index 47a2c729d262..2b94f895b297 100644 --- a/sc/source/ui/dbgui/pfiltdlg.cxx +++ b/sc/source/ui/dbgui/pfiltdlg.cxx @@ -36,7 +36,7 @@ #include <svl/sharedstringpool.hxx> #include <osl/diagnose.h> -ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, +ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, ScViewData& rData, SCTAB nSourceTab ) : GenericDialogController(pParent, u"modules/scalc/ui/pivotfilterdialog.ui"_ustr, u"PivotFilterDialog"_ustr) , aStrNone(ScResId(SCSTR_NONE)) @@ -45,8 +45,8 @@ ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArg , aStrColumn(ScResId(SCSTR_COLUMN_LETTER)) , nWhichQuery(rArgSet.GetPool()->GetWhichIDFromSlotID(SID_QUERY)) , theQueryData(static_cast<const ScQueryItem&>(rArgSet.Get(nWhichQuery)).GetQueryData()) - , pViewData(nullptr) - , pDoc(nullptr) + , rViewData(rData) + , rDoc(rViewData.GetDocument()) , nSrcTab(nSourceTab) // is not in QueryParam , m_xLbField1(m_xBuilder->weld_combo_box(u"field1"_ustr)) , m_xLbCond1(m_xBuilder->weld_combo_box(u"cond1"_ustr)) @@ -64,18 +64,15 @@ ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArg , m_xBtnUnique(m_xBuilder->weld_check_button(u"unique"_ustr)) , m_xFtDbArea(m_xBuilder->weld_label(u"dbarea"_ustr)) { - Init( rArgSet ); + Init(); } ScPivotFilterDlg::~ScPivotFilterDlg() { } -void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) +void ScPivotFilterDlg::Init() { - const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>( - rArgSet.Get( nWhichQuery )); - m_xBtnCase->connect_toggled( LINK( this, ScPivotFilterDlg, CheckBoxHdl ) ); m_xLbField1->connect_changed ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) ); @@ -88,9 +85,6 @@ void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) m_xBtnRegExp->set_active( theQueryData.eSearchType == utl::SearchParam::SearchType::Regexp ); m_xBtnUnique->set_active( !theQueryData.bDuplicate ); - pViewData = rQueryItem.GetViewData(); - pDoc = pViewData ? &pViewData->GetDocument() : nullptr; - // for easier access: aFieldLbArr [0] = m_xLbField1.get(); aFieldLbArr [1] = m_xLbField2.get(); @@ -102,38 +96,31 @@ void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) aCondLbArr [1] = m_xLbCond2.get(); aCondLbArr [2] = m_xLbCond3.get(); - if ( pViewData && pDoc ) - { - ScRange theCurArea ( ScAddress( theQueryData.nCol1, - theQueryData.nRow1, - nSrcTab ), - ScAddress( theQueryData.nCol2, - theQueryData.nRow2, - nSrcTab ) ); - ScDBCollection* pDBColl = pDoc->GetDBCollection(); - OUString theDbName = STR_DB_LOCAL_NONAME; - - // Check if the passed range is a database range - - if ( pDBColl ) - { - ScAddress& rStart = theCurArea.aStart; - ScAddress& rEnd = theCurArea.aEnd; - ScDBData* pDBData = pDBColl->GetDBAtArea( rStart.Tab(), - rStart.Col(), rStart.Row(), - rEnd.Col(), rEnd.Row() ); - if ( pDBData ) - theDbName = pDBData->GetName(); - } + ScRange theCurArea ( ScAddress( theQueryData.nCol1, + theQueryData.nRow1, + nSrcTab ), + ScAddress( theQueryData.nCol2, + theQueryData.nRow2, + nSrcTab ) ); + ScDBCollection* pDBColl = rDoc.GetDBCollection(); + OUString theDbName = STR_DB_LOCAL_NONAME; - OUString sLabel = " (" + theDbName + ")"; - m_xFtDbArea->set_label(sLabel); - } - else + // Check if the passed range is a database range + + if ( pDBColl ) { - m_xFtDbArea->set_label(OUString()); + ScAddress& rStart = theCurArea.aStart; + ScAddress& rEnd = theCurArea.aEnd; + ScDBData* pDBData = pDBColl->GetDBAtArea( rStart.Tab(), + rStart.Col(), rStart.Row(), + rEnd.Col(), rEnd.Row() ); + if ( pDBData ) + theDbName = pDBData->GetName(); } + OUString sLabel = " (" + theDbName + ")"; + m_xFtDbArea->set_label(sLabel); + // Read the field lists and select the entries: FillFieldLists(); @@ -219,9 +206,6 @@ void ScPivotFilterDlg::FillFieldLists() m_xLbField2->append_text(aStrNone); m_xLbField3->append_text(aStrNone); - if ( !pDoc ) - return; - OUString aFieldName; SCTAB nTab = nSrcTab; SCCOL nFirstCol = theQueryData.nCol1; @@ -231,7 +215,7 @@ void ScPivotFilterDlg::FillFieldLists() for ( col=nFirstCol; col<=nMaxCol; col++ ) { - aFieldName = pDoc->GetString(col, nFirstRow, nTab); + aFieldName = rDoc.GetString(col, nFirstRow, nTab); if ( aFieldName.isEmpty() ) { aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", ScColToAlpha( col )); @@ -244,7 +228,7 @@ void ScPivotFilterDlg::FillFieldLists() void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList ) { - if ( !(pDoc && nList>0 && nList<=3) ) + if ( !(nList>0 && nList<=3) ) return; weld::ComboBox* pValList = aValueEdArr[nList-1]; @@ -255,7 +239,7 @@ void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList ) pValList->append_text(aStrNotEmpty); pValList->append_text(aStrEmpty); - if ( pDoc && nFieldSelPos ) + if ( nFieldSelPos ) { SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1; if (!m_pEntryLists[nColumn]) @@ -268,7 +252,7 @@ void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList ) nFirstRow++; bool bCaseSens = m_xBtnCase->get_active(); m_pEntryLists[nColumn].reset( new ScFilterEntries); - pDoc->GetFilterEntriesArea( + rDoc.GetFilterEntriesArea( nColumn, nFirstRow, nLastRow, nTab, bCaseSens, *m_pEntryLists[nColumn]); } @@ -307,7 +291,7 @@ const ScQueryItem& ScPivotFilterDlg::GetOutputItem() sal_Int32 nConnect1 = m_xLbConnect1->get_active(); sal_Int32 nConnect2 = m_xLbConnect2->get_active(); - svl::SharedStringPool& rPool = pViewData->GetDocument().GetSharedStringPool(); + svl::SharedStringPool& rPool = rViewData.GetDocument().GetSharedStringPool(); for ( SCSIZE i=0; i<3; i++ ) { @@ -368,7 +352,7 @@ const ScQueryItem& ScPivotFilterDlg::GetOutputItem() theParam.bCaseSens = m_xBtnCase->get_active(); theParam.eSearchType = m_xBtnRegExp->get_active() ? utl::SearchParam::SearchType::Regexp : utl::SearchParam::SearchType::Normal; - pOutItem.reset( new ScQueryItem( nWhichQuery, pViewData, &theParam ) ); + pOutItem.reset( new ScQueryItem( nWhichQuery, &theParam ) ); return *pOutItem; } diff --git a/sc/source/ui/dbgui/sfiltdlg.cxx b/sc/source/ui/dbgui/sfiltdlg.cxx index e0527121ce89..f2b1225e38e8 100644 --- a/sc/source/ui/dbgui/sfiltdlg.cxx +++ b/sc/source/ui/dbgui/sfiltdlg.cxx @@ -51,15 +51,15 @@ namespace ScSpecialFilterDlg::ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, - const SfxItemSet& rArgSet ) + ScViewData& rData, const SfxItemSet& rArgSet ) : ScAnyRefDlgController(pB, pCW, pParent, u"modules/scalc/ui/advancedfilterdialog.ui"_ustr, u"AdvancedFilterDialog"_ustr) , aStrUndefined ( ScResId(SCSTR_UNDEFINED) ) , nWhichQuery ( rArgSet.GetPool()->GetWhichIDFromSlotID( SID_QUERY ) ) , theQueryData ( static_cast<const ScQueryItem&>( rArgSet.Get( nWhichQuery )).GetQueryData() ) - , pViewData(nullptr) - , pDoc(nullptr) + , rViewData(rData) + , rDoc(rViewData.GetDocument()) , bRefInputMode(false) , m_pRefInputEdit(nullptr) , m_xLbFilterArea(m_xBuilder->weld_combo_box(u"lbfilterarea"_ustr)) @@ -112,44 +112,38 @@ ScSpecialFilterDlg::~ScSpecialFilterDlg() void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet ) { - const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>( - rArgSet.Get( nWhichQuery )); - m_xBtnOk->connect_clicked( LINK( this, ScSpecialFilterDlg, EndDlgHdl ) ); m_xBtnCancel->connect_clicked( LINK( this, ScSpecialFilterDlg, EndDlgHdl ) ); m_xLbFilterArea->connect_changed( LINK( this, ScSpecialFilterDlg, FilterAreaSelHdl ) ); m_xEdFilterArea->SetModifyHdl ( LINK( this, ScSpecialFilterDlg, FilterAreaModHdl ) ); - pViewData = rQueryItem.GetViewData(); - pDoc = pViewData ? &pViewData->GetDocument() : nullptr; - m_xEdFilterArea->SetText( OUString() ); // may be overwritten below - if ( pViewData && pDoc ) - { - if(pDoc->GetChangeTrack()!=nullptr) m_xBtnCopyResult->set_sensitive(false); + if(rDoc.GetChangeTrack()!=nullptr) m_xBtnCopyResult->set_sensitive(false); - ScRangeName* pRangeNames = pDoc->GetRangeName(); - m_xLbFilterArea->clear(); - m_xLbFilterArea->append_text(aStrUndefined); + ScRangeName* pRangeNames = rDoc.GetRangeName(); + m_xLbFilterArea->clear(); + m_xLbFilterArea->append_text(aStrUndefined); - for (const auto& rEntry : *pRangeNames) - { - if (!rEntry.second->HasType(ScRangeData::Type::Criteria)) - continue; + for (const auto& rEntry : *pRangeNames) + { + if (!rEntry.second->HasType(ScRangeData::Type::Criteria)) + continue; - OUString aSymbol = rEntry.second->GetSymbol(); - m_xLbFilterArea->append(aSymbol, rEntry.second->GetName()); - } + OUString aSymbol = rEntry.second->GetSymbol(); + m_xLbFilterArea->append(aSymbol, rEntry.second->GetName()); + } - // is there a stored source range? + // is there a stored source range? - ScRange aAdvSource; - if (rQueryItem.GetAdvancedQuerySource(aAdvSource)) - { - OUString aRefStr(aAdvSource.Format(*pDoc, ScRefFlags::RANGE_ABS_3D, pDoc->GetAddressConvention())); - m_xEdFilterArea->SetRefString( aRefStr ); - } + ScRange aAdvSource; + const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>( + rArgSet.Get( nWhichQuery )); + + if (rQueryItem.GetAdvancedQuerySource(aAdvSource)) + { + OUString aRefStr(aAdvSource.Format(rDoc, ScRefFlags::RANGE_ABS_3D, rDoc.GetAddressConvention())); + m_xEdFilterArea->SetRefString( aRefStr ); } m_xLbFilterArea->set_active( 0 ); @@ -157,7 +151,7 @@ void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet ) // let options be initialized: pOptionsMgr.reset( new ScFilterOptionsMgr( - pViewData, + rViewData, theQueryData, m_xBtnCase.get(), m_xBtnRegExp.get(), @@ -184,8 +178,7 @@ void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet ) void ScSpecialFilterDlg::Close() { - if (pViewData) - pViewData->GetDocShell()->CancelAutoDBRange(); + rViewData.GetDocShell()->CancelAutoDBRange(); DoClose( ScSpecialFilterDlgWrapper::GetChildWindowId() ); } @@ -236,7 +229,7 @@ void ScSpecialFilterDlg::SetActive() ScQueryItem* ScSpecialFilterDlg::GetOutputItem( const ScQueryParam& rParam, const ScRange& rSource ) { - pOutItem.reset(new ScQueryItem( nWhichQuery, pViewData, &rParam )); + pOutItem.reset(new ScQueryItem( nWhichQuery, &rParam )); pOutItem->SetAdvancedQuerySource( &rSource ); return pOutItem.get(); } @@ -250,9 +243,7 @@ bool ScSpecialFilterDlg::IsRefInputMode() const IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void) { - OSL_ENSURE( pDoc && pViewData, "Document or ViewData not found. :-/" ); - - if (&rBtn == m_xBtnOk.get() && pDoc && pViewData) + if (&rBtn == m_xBtnOk.get()) { OUString theCopyStr( m_xEdCopyArea->GetText() ); OUString theAreaStr( m_xEdFilterArea->GetText() ); @@ -261,7 +252,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void) bool bEditInputOk = true; bool bQueryOk = false; ScRange theFilterArea; - const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); + const formula::FormulaGrammar::AddressConvention eConv = rDoc.GetAddressConvention(); if ( m_xBtnCopyResult->get_active() ) { @@ -270,7 +261,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void) if ( -1 != nColonPos ) theCopyStr = theCopyStr.copy( 0, nColonPos ); - ScRefFlags nResult = theAdrCopy.Parse( theCopyStr, *pDoc, eConv ); + ScRefFlags nResult = theAdrCopy.Parse( theCopyStr, rDoc, eConv ); if ( (nResult & ScRefFlags::VALID) == ScRefFlags::ZERO ) { @@ -285,7 +276,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void) if ( bEditInputOk ) { - ScRefFlags nResult = ScRange().Parse( theAreaStr, *pDoc, eConv ); + ScRefFlags nResult = ScRange().Parse( theAreaStr, rDoc, eConv ); if ( (nResult & ScRefFlags::VALID) == ScRefFlags::ZERO ) { @@ -302,7 +293,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void) * a ScQueryParam from the filter area: */ - ScRefFlags nResult = theFilterArea.Parse( theAreaStr, *pDoc, eConv ); + ScRefFlags nResult = theFilterArea.Parse( theAreaStr, rDoc, eConv ); if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID ) { @@ -332,7 +323,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void) theOutParam.bDuplicate = !m_xBtnUnique->get_active(); theOutParam.bDestPers = m_xBtnDestPers->get_active(); - bQueryOk = pDoc->CreateQueryParam(ScRange(rStart,rEnd), theOutParam); + bQueryOk = rDoc.CreateQueryParam(ScRange(rStart,rEnd), theOutParam); } } @@ -408,28 +399,23 @@ IMPL_LINK( ScSpecialFilterDlg, FilterAreaModHdl, formula::RefEdit&, rEd, void ) if (&rEd != m_xEdFilterArea.get()) return; - if ( pDoc && pViewData ) - { - OUString theCurAreaStr = rEd.GetText(); - ScRefFlags nResult = ScRange().Parse( theCurAreaStr, *pDoc ); + OUString theCurAreaStr = rEd.GetText(); + ScRefFlags nResult = ScRange().Parse( theCurAreaStr, rDoc ); - if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID ) + if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID ) + { + const sal_Int32 nCount = m_xLbFilterArea->get_count(); + for (sal_Int32 i = 1; i < nCount; ++i) { - const sal_Int32 nCount = m_xLbFilterArea->get_count(); - for (sal_Int32 i = 1; i < nCount; ++i) + OUString aStr = m_xLbFilterArea->get_id(i); + if (theCurAreaStr == aStr) { - OUString aStr = m_xLbFilterArea->get_id(i); - if (theCurAreaStr == aStr) - { - m_xLbFilterArea->set_active( i ); - return; - } + m_xLbFilterArea->set_active( i ); + return; } - m_xLbFilterArea->set_active( 0 ); } - } - else m_xLbFilterArea->set_active( 0 ); + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/filtdlg.hxx b/sc/source/ui/inc/filtdlg.hxx index a99bc93edf8c..efd1e0f20244 100644 --- a/sc/source/ui/inc/filtdlg.hxx +++ b/sc/source/ui/inc/filtdlg.hxx @@ -50,6 +50,7 @@ class ScFilterDlg : public ScAnyRefDlgController typedef std::map<SCCOL, std::unique_ptr<EntryList>> EntryListsMap; public: ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, + ScViewData& rData, const SfxItemSet& rArgSet); virtual ~ScFilterDlg() override; @@ -78,8 +79,8 @@ private: const sal_uInt16 nWhichQuery; ScQueryParam theQueryData; std::unique_ptr<ScQueryItem> pOutItem; - ScViewData* pViewData; - ScDocument* pDoc; + ScViewData& rViewData; + ScDocument& rDoc; SCTAB nSrcTab; std::vector<weld::ComboBox*> maValueEdArr; @@ -147,7 +148,7 @@ private: std::unique_ptr<weld::Label> m_xFtDbArea; private: - void Init ( const SfxItemSet& rArgSet ); + void Init (); void FillFieldLists (); void UpdateValueList ( size_t nList ); void UpdateHdrInValueList( size_t nList ); @@ -177,7 +178,7 @@ class ScSpecialFilterDlg : public ScAnyRefDlgController { public: ScSpecialFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, - const SfxItemSet& rArgSet); + ScViewData& rData, const SfxItemSet& rArgSet); virtual ~ScSpecialFilterDlg() override; virtual void SetReference( const ScRange& rRef, ScDocument& rDoc ) override; @@ -195,8 +196,8 @@ private: const sal_uInt16 nWhichQuery; const ScQueryParam theQueryData; std::unique_ptr<ScQueryItem> pOutItem; - ScViewData* pViewData; - ScDocument* pDoc; + ScViewData& rViewData; + ScDocument& rDoc; bool bRefInputMode; diff --git a/sc/source/ui/inc/foptmgr.hxx b/sc/source/ui/inc/foptmgr.hxx index 580563183a2f..eadd4696a009 100644 --- a/sc/source/ui/inc/foptmgr.hxx +++ b/sc/source/ui/inc/foptmgr.hxx @@ -33,7 +33,7 @@ class ScViewData; class ScFilterOptionsMgr { public: - ScFilterOptionsMgr(ScViewData* ptrViewData, + ScFilterOptionsMgr(ScViewData& rViewData, const ScQueryParam& refQueryData, weld::CheckButton* refBtnCase, weld::CheckButton* refBtnRegExp, @@ -50,8 +50,8 @@ public: bool VerifyPosStr ( const OUString& rPosStr ) const; private: - ScViewData* pViewData; - ScDocument* pDoc; + ScViewData& rViewData; + ScDocument& rDoc; weld::CheckButton* pBtnCase; weld::CheckButton* pBtnRegExp; diff --git a/sc/source/ui/inc/pfiltdlg.hxx b/sc/source/ui/inc/pfiltdlg.hxx index 892d8655255f..adf80455f3fe 100644 --- a/sc/source/ui/inc/pfiltdlg.hxx +++ b/sc/source/ui/inc/pfiltdlg.hxx @@ -34,7 +34,7 @@ struct ScFilterEntries; class ScPivotFilterDlg : public weld::GenericDialogController { public: - ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, SCTAB nSourceTab); + ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, ScViewData& rData, SCTAB nSourceTab); virtual ~ScPivotFilterDlg() override; const ScQueryItem& GetOutputItem(); @@ -48,8 +48,8 @@ private: const sal_uInt16 nWhichQuery; const ScQueryParam theQueryData; std::unique_ptr<ScQueryItem> pOutItem; - ScViewData* pViewData; - ScDocument* pDoc; + ScViewData& rViewData; + ScDocument& rDoc; SCTAB nSrcTab; std::unique_ptr<weld::ComboBox> m_xLbField1; @@ -78,7 +78,7 @@ private: std::array<std::unique_ptr<ScFilterEntries>, MAXCOLCOUNT> m_pEntryLists; private: - void Init ( const SfxItemSet& rArgSet ); + void Init (); void FillFieldLists (); void UpdateValueList ( sal_uInt16 nList ); void ClearValueList ( sal_uInt16 nList ); diff --git a/sc/source/ui/inc/uiitems.hxx b/sc/source/ui/inc/uiitems.hxx index 5ea756dd409b..c14b2be92c61 100644 --- a/sc/source/ui/inc/uiitems.hxx +++ b/sc/source/ui/inc/uiitems.hxx @@ -147,7 +147,6 @@ class SC_DLLPUBLIC ScQueryItem : public SfxPoolItem public: DECLARE_ITEM_TYPE_FUNCTION(ScQueryItem) ScQueryItem( sal_uInt16 nWhich, - ScViewData* ptrViewData, const ScQueryParam* pQueryData ); ScQueryItem( const ScQueryItem& rItem ); virtual ~ScQueryItem() override; @@ -155,7 +154,6 @@ public: virtual bool operator==( const SfxPoolItem& ) const override; virtual ScQueryItem* Clone( SfxItemPool *pPool = nullptr ) const override; - ScViewData* GetViewData () const { return pViewData; } const ScQueryParam& GetQueryData() const; bool GetAdvancedQuerySource(ScRange& rSource) const; @@ -163,7 +161,6 @@ public: private: std::unique_ptr<ScQueryParam> mpQueryData; - ScViewData* pViewData; ScRange aAdvSource; bool bIsAdvanced; }; diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx index 02df37caac6f..21046171acbd 100644 --- a/sc/source/ui/view/gridwin2.cxx +++ b/sc/source/ui/view/gridwin2.cxx @@ -207,13 +207,13 @@ void ScGridWindow::DoPushPivotButton( SCCOL nCol, SCROW nRow, const MouseEvent& } SfxItemSet aArgSet(SfxItemSet::makeFixedSfxItemSet<SCITEM_QUERYDATA, SCITEM_QUERYDATA>(mrViewData.GetViewShell()->GetPool())); - aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &mrViewData, &aQueryParam ) ); + aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &aQueryParam ) ); ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); ScopedVclPtr<AbstractScPivotFilterDlg> pDlg( pFact->CreateScPivotFilterDlg( - mrViewData.GetViewShell()->GetFrameWeld(), aArgSet, nSrcTab)); + mrViewData.GetViewShell()->GetFrameWeld(), aArgSet, mrViewData, nSrcTab)); if ( pDlg->Execute() == RET_OK ) { ScSheetSourceDesc aNewDesc(&rDoc); diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx index 40c6425a4025..84e2c3e2a103 100644 --- a/sc/source/ui/view/pivotsh.cxx +++ b/sc/source/ui/view/pivotsh.cxx @@ -95,12 +95,12 @@ void ScPivotShell::Execute( const SfxRequest& rReq ) ScViewData& rViewData = pViewShell->GetViewData(); SfxItemSetFixed<SCITEM_QUERYDATA, SCITEM_QUERYDATA> aArgSet( pViewShell->GetPool() ); - aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &rViewData, &aQueryParam ) ); + aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &aQueryParam ) ); ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); ScopedVclPtr<AbstractScPivotFilterDlg> pDlg(pFact->CreateScPivotFilterDlg( - pViewShell->GetFrameWeld(), aArgSet, nSrcTab)); + pViewShell->GetFrameWeld(), aArgSet, rViewData, nSrcTab)); if( pDlg->Execute() == RET_OK ) { diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx index e95fa932178d..2ce3f1826a83 100644 --- a/sc/source/ui/view/tabvwshc.cxx +++ b/sc/source/ui/view/tabvwshc.cxx @@ -345,14 +345,12 @@ std::shared_ptr<SfxModelessDialogController> ScTabViewShell::CreateRefDialogCont pDBData->GetArea(aArea); MarkRange(aArea, false); - aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, - &GetViewData(), - &aQueryParam ) ); + aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &aQueryParam ) ); // mark current sheet (due to RefInput in dialog) GetViewData().SetRefTabNo( GetViewData().GetTabNo() ); - xResult = std::make_shared<ScFilterDlg>(pB, pCW, pParent, aArgSet); + xResult = std::make_shared<ScFilterDlg>(pB, pCW, pParent, GetViewData(), aArgSet); break; } case SID_SPECIAL_FILTER: @@ -369,7 +367,7 @@ std::shared_ptr<SfxModelessDialogController> ScTabViewShell::CreateRefDialogCont pDBData->GetArea(aArea); MarkRange(aArea, false); - ScQueryItem aItem( SCITEM_QUERYDATA, &GetViewData(), &aQueryParam ); + ScQueryItem aItem( SCITEM_QUERYDATA, &aQueryParam ); ScRange aAdvSource; if (pDBData->GetAdvancedQuerySource(aAdvSource)) aItem.SetAdvancedQuerySource( &aAdvSource ); @@ -379,7 +377,7 @@ std::shared_ptr<SfxModelessDialogController> ScTabViewShell::CreateRefDialogCont // mark current sheet (due to RefInput in dialog) GetViewData().SetRefTabNo( GetViewData().GetTabNo() ); - xResult = std::make_shared<ScSpecialFilterDlg>(pB, pCW, pParent, aArgSet); + xResult = std::make_shared<ScSpecialFilterDlg>(pB, pCW, pParent, GetViewData(), aArgSet); break; } case SID_OPENDLG_OPTSOLVER: