summaryrefslogtreecommitdiff
path: root/sc/source/ui/dbgui/filtdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/dbgui/filtdlg.cxx')
-rw-r--r--sc/source/ui/dbgui/filtdlg.cxx94
1 files changed, 37 insertions, 57 deletions
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index 0470d00e9291..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;
}
@@ -1160,8 +1146,7 @@ IMPL_LINK(ScFilterDlg, LbSelectHdl, weld::ComboBox&, rLb, void)
UpdateColorList(4);
}
- auto aEntry = theQueryData.GetEntry(nQ);
- aEntry.eOp = op;
+ theQueryData.GetEntry(nQ).eOp = op;
}
else if (&rLb == m_xLbColor1.get() || &rLb == m_xLbColor2.get() || &rLb == m_xLbColor3.get()
|| &rLb == m_xLbColor4.get())
@@ -1302,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;
}
@@ -1540,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
{