LibreOffice Module sc (master)  1
pfiltdlg.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #undef SC_DLLIMPLEMENTATION
21 
22 #include <viewdata.hxx>
23 #include <document.hxx>
24 #include <uiitems.hxx>
25 #include <global.hxx>
26 #include <globalnames.hxx>
27 #include <dbdata.hxx>
28 #include <scresid.hxx>
29 #include <queryentry.hxx>
30 #include <filterentries.hxx>
31 
32 #include <sc.hrc>
33 #include <strings.hrc>
34 
35 #include <pfiltdlg.hxx>
36 #include <svl/sharedstringpool.hxx>
37 #include <osl/diagnose.h>
38 
40  SCTAB nSourceTab )
41  : GenericDialogController(pParent, "modules/scalc/ui/pivotfilterdialog.ui", "PivotFilterDialog")
42  , aStrNone(ScResId(SCSTR_NONE))
43  , aStrEmpty(ScResId(SCSTR_FILTER_EMPTY))
44  , aStrNotEmpty(ScResId(SCSTR_FILTER_NOTEMPTY))
45  , aStrColumn(ScResId(SCSTR_COLUMN))
46  , nWhichQuery(rArgSet.GetPool()->GetWhich(SID_QUERY))
47  , theQueryData(static_cast<const ScQueryItem&>(rArgSet.Get(nWhichQuery)).GetQueryData())
48  , pViewData(nullptr)
49  , pDoc(nullptr)
50  , nSrcTab(nSourceTab) // is not in QueryParam
51  , m_xLbField1(m_xBuilder->weld_combo_box("field1"))
52  , m_xLbCond1(m_xBuilder->weld_combo_box("cond1"))
53  , m_xEdVal1(m_xBuilder->weld_combo_box("val1"))
54  , m_xLbConnect1(m_xBuilder->weld_combo_box("connect1"))
55  , m_xLbField2(m_xBuilder->weld_combo_box("field2"))
56  , m_xLbCond2(m_xBuilder->weld_combo_box("cond2"))
57  , m_xEdVal2(m_xBuilder->weld_combo_box("val2"))
58  , m_xLbConnect2(m_xBuilder->weld_combo_box("connect2"))
59  , m_xLbField3(m_xBuilder->weld_combo_box("field3"))
60  , m_xLbCond3(m_xBuilder->weld_combo_box("cond3"))
61  , m_xEdVal3(m_xBuilder->weld_combo_box("val3"))
62  , m_xBtnCase(m_xBuilder->weld_check_button("case"))
63  , m_xBtnRegExp(m_xBuilder->weld_check_button("regexp"))
64  , m_xBtnUnique(m_xBuilder->weld_check_button("unique"))
65  , m_xFtDbArea(m_xBuilder->weld_label("dbarea"))
66 {
67  Init( rArgSet );
68 }
69 
71 {
72 }
73 
74 void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet )
75 {
76  const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(
77  rArgSet.Get( nWhichQuery ));
78 
79  m_xBtnCase->connect_clicked ( LINK( this, ScPivotFilterDlg, CheckBoxHdl ) );
80 
81  m_xLbField1->connect_changed ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
82  m_xLbField2->connect_changed ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
83  m_xLbField3->connect_changed ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
84  m_xLbConnect1->connect_changed( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
85  m_xLbConnect2->connect_changed( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
86 
87  m_xBtnCase->set_active( theQueryData.bCaseSens );
89  m_xBtnUnique->set_active( !theQueryData.bDuplicate );
90 
91  pViewData = rQueryItem.GetViewData();
92  pDoc = pViewData ? &pViewData->GetDocument() : nullptr;
93 
94  // for easier access:
95  aFieldLbArr [0] = m_xLbField1.get();
96  aFieldLbArr [1] = m_xLbField2.get();
97  aFieldLbArr [2] = m_xLbField3.get();
98  aValueEdArr [0] = m_xEdVal1.get();
99  aValueEdArr [1] = m_xEdVal2.get();
100  aValueEdArr [2] = m_xEdVal3.get();
101  aCondLbArr [0] = m_xLbCond1.get();
102  aCondLbArr [1] = m_xLbCond2.get();
103  aCondLbArr [2] = m_xLbCond3.get();
104 
105  if ( pViewData && pDoc )
106  {
107  ScRange theCurArea ( ScAddress( theQueryData.nCol1,
109  nSrcTab ),
112  nSrcTab ) );
113  ScDBCollection* pDBColl = pDoc->GetDBCollection();
114  OUString theDbName = STR_DB_LOCAL_NONAME;
115 
116  // Check if the passed range is a database range
117 
118  if ( pDBColl )
119  {
120  ScAddress& rStart = theCurArea.aStart;
121  ScAddress& rEnd = theCurArea.aEnd;
122  ScDBData* pDBData = pDBColl->GetDBAtArea( rStart.Tab(),
123  rStart.Col(), rStart.Row(),
124  rEnd.Col(), rEnd.Row() );
125  if ( pDBData )
126  theDbName = pDBData->GetName();
127  }
128 
129  OUString sLabel = " (" + theDbName + ")";
130  m_xFtDbArea->set_label(sLabel);
131  }
132  else
133  {
134  m_xFtDbArea->set_label(EMPTY_OUSTRING);
135  }
136 
137  // Read the field lists and select the entries:
138 
139  FillFieldLists();
140 
141  for ( SCSIZE i=0; i<3; i++ )
142  {
144  {
145  const ScQueryEntry& rEntry = theQueryData.GetEntry(i);
146  const ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
147  OUString aValStr = rItem.maString.getString();
148  if (rEntry.IsQueryByEmpty())
149  aValStr = aStrEmpty;
150  else if (rEntry.IsQueryByNonEmpty())
151  aValStr = aStrNotEmpty;
152  sal_uInt16 nCondPos = static_cast<sal_uInt16>(rEntry.eOp);
153  sal_uInt16 nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) );
154 
155  aFieldLbArr[i]->set_active( nFieldSelPos );
156  aCondLbArr [i]->set_active( nCondPos );
157  UpdateValueList( static_cast<sal_uInt16>(i+1) );
158  aValueEdArr[i]->set_entry_text(aValStr);
159  if (aValStr == aStrEmpty || aValStr == aStrNotEmpty)
160  aCondLbArr[i]->set_sensitive(false);
161  }
162  else
163  {
164  aFieldLbArr[i]->set_active( 0 ); // "none" selected
165  aCondLbArr [i]->set_active( 0 ); // "=" selected
166  UpdateValueList( static_cast<sal_uInt16>(i) );
168  }
169  aValueEdArr[i]->connect_changed( LINK( this, ScPivotFilterDlg, ValModifyHdl ) );
170  }
171 
172  // disable/enable logic:
173 
174  if (m_xLbField1->get_active() != 0 && m_xLbField2->get_active() != 0)
175  m_xLbConnect1->set_active( static_cast<sal_uInt16>(theQueryData.GetEntry(1).eConnect) );
176  else
177  m_xLbConnect1->set_active(-1);
178 
179  if (m_xLbField2->get_active() != 0 && m_xLbField3->get_active() != 0)
180  m_xLbConnect2->set_active( static_cast<sal_uInt16>(theQueryData.GetEntry(2).eConnect) );
181  else
182  m_xLbConnect2->set_active(-1);
183 
184  if (m_xLbField1->get_active() == 0)
185  {
186  m_xLbConnect1->set_sensitive(false);
187  m_xLbField2->set_sensitive(false);
188  m_xLbCond2->set_sensitive(false);
189  m_xEdVal2->set_sensitive(false);
190  }
191  else if (m_xLbConnect1->get_active() == -1)
192  {
193  m_xLbField2->set_sensitive(false);
194  m_xLbCond2->set_sensitive(false);
195  m_xEdVal2->set_sensitive(false);
196  }
197 
198  if (m_xLbField2->get_active() == 0)
199  {
200  m_xLbConnect2->set_sensitive(false);
201  m_xLbField3->set_sensitive(false);
202  m_xLbCond3->set_sensitive(false);
203  m_xEdVal3->set_sensitive(false);
204  }
205  else if (m_xLbConnect2->get_active() == -1)
206  {
207  m_xLbField3->set_sensitive(false);
208  m_xLbCond3->set_sensitive(false);
209  m_xEdVal3->set_sensitive(false);
210  }
211 }
212 
214 {
215  m_xLbField1->clear();
216  m_xLbField2->clear();
217  m_xLbField3->clear();
218  m_xLbField1->append_text(aStrNone);
219  m_xLbField2->append_text(aStrNone);
220  m_xLbField3->append_text(aStrNone);
221 
222  if ( !pDoc )
223  return;
224 
225  OUString aFieldName;
226  SCTAB nTab = nSrcTab;
227  SCCOL nFirstCol = theQueryData.nCol1;
228  SCROW nFirstRow = theQueryData.nRow1;
229  SCCOL nMaxCol = theQueryData.nCol2;
230  SCCOL col = 0;
231 
232  for ( col=nFirstCol; col<=nMaxCol; col++ )
233  {
234  aFieldName = pDoc->GetString(col, nFirstRow, nTab);
235  if ( aFieldName.isEmpty() )
236  {
237  aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col ));
238  }
239  m_xLbField1->append_text(aFieldName);
240  m_xLbField2->append_text(aFieldName);
241  m_xLbField3->append_text(aFieldName);
242  }
243 }
244 
245 void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList )
246 {
247  if ( !(pDoc && nList>0 && nList<=3) )
248  return;
249 
250  weld::ComboBox* pValList = aValueEdArr[nList-1];
251  sal_Int32 nFieldSelPos = aFieldLbArr[nList-1]->get_active();
252  OUString aCurValue = pValList->get_active_text();
253 
254  pValList->clear();
255  pValList->append_text(aStrNotEmpty);
256  pValList->append_text(aStrEmpty);
257 
258  if ( pDoc && nFieldSelPos )
259  {
260  SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
261  if (!m_pEntryLists[nColumn])
262  {
263  weld::WaitObject aWaiter(m_xDialog.get());
264 
265  SCTAB nTab = nSrcTab;
266  SCROW nFirstRow = theQueryData.nRow1;
267  SCROW nLastRow = theQueryData.nRow2;
268  nFirstRow++;
269  bool bCaseSens = m_xBtnCase->get_active();
270  m_pEntryLists[nColumn].reset( new ScFilterEntries);
272  nColumn, nFirstRow, nLastRow, nTab, bCaseSens, *m_pEntryLists[nColumn]);
273  }
274 
275  const ScFilterEntries* pColl = m_pEntryLists[nColumn].get();
276  for (const auto& rEntry : *pColl)
277  {
278  pValList->append_text(rEntry.GetString());
279  }
280  }
281  pValList->set_entry_text(aCurValue);
282 }
283 
284 void ScPivotFilterDlg::ClearValueList( sal_uInt16 nList )
285 {
286  if ( nList>0 && nList<=3 )
287  {
288  weld::ComboBox* pValList = aValueEdArr[nList-1];
289  pValList->clear();
290  pValList->append_text(aStrNotEmpty);
291  pValList->append_text(aStrEmpty);
292  pValList->set_entry_text(EMPTY_OUSTRING);
293  }
294 }
295 
297 {
298  if ( nField >= theQueryData.nCol1 && nField <= theQueryData.nCol2 )
299  return static_cast<sal_uInt16>(nField - theQueryData.nCol1 + 1);
300  else
301  return 0;
302 }
303 
305 {
306  ScQueryParam theParam( theQueryData );
307  sal_Int32 nConnect1 = m_xLbConnect1->get_active();
308  sal_Int32 nConnect2 = m_xLbConnect2->get_active();
309 
311 
312  for ( SCSIZE i=0; i<3; i++ )
313  {
314  const sal_Int32 nField = aFieldLbArr[i]->get_active();
315  ScQueryOp eOp = static_cast<ScQueryOp>(aCondLbArr[i]->get_active());
316 
317  bool bDoThis = (aFieldLbArr[i]->get_active() != 0);
318  theParam.GetEntry(i).bDoQuery = bDoThis;
319 
320  if ( bDoThis )
321  {
322  ScQueryEntry& rEntry = theParam.GetEntry(i);
323  ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
324 
325  OUString aStrVal = aValueEdArr[i]->get_active_text();
326 
327  /*
328  * The dialog returns the specific field values "empty"/"non empty"
329  * as constant in nVal in connection with the bQueryByString switch
330  * set to false
331  */
332  if ( aStrVal == aStrEmpty )
333  {
334  OSL_ASSERT(eOp == SC_EQUAL);
335  rEntry.SetQueryByEmpty();
336  }
337  else if ( aStrVal == aStrNotEmpty )
338  {
339  OSL_ASSERT(eOp == SC_EQUAL);
340  rEntry.SetQueryByNonEmpty();
341  }
342  else
343  {
344  rItem.maString = rPool.intern(aStrVal);
345  rItem.mfVal = 0.0;
347  }
348 
349  rEntry.nField = nField ? (theQueryData.nCol1 +
350  static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
351  rEntry.eOp = eOp;
352  }
353  }
354 
355  theParam.GetEntry(1).eConnect = (nConnect1 != -1)
356  ? static_cast<ScQueryConnect>(nConnect1)
357  : SC_AND;
358  theParam.GetEntry(2).eConnect = (nConnect2 != -1)
359  ? static_cast<ScQueryConnect>(nConnect2)
360  : SC_AND;
361 
362  theParam.bInplace = false;
363  theParam.nDestTab = 0; // Where do those values come from?
364  theParam.nDestCol = 0;
365  theParam.nDestRow = 0;
366 
367  theParam.bDuplicate = !m_xBtnUnique->get_active();
368  theParam.bCaseSens = m_xBtnCase->get_active();
370 
371  pOutItem.reset( new ScQueryItem( nWhichQuery, &theParam ) );
372 
373  return *pOutItem;
374 }
375 
376 // Handler:
377 
378 IMPL_LINK( ScPivotFilterDlg, LbSelectHdl, weld::ComboBox&, rLb, void )
379 {
380  /*
381  * Handling the enable/disable logic based on which ListBox was touched:
382  */
383  if (&rLb == m_xLbConnect1.get())
384  {
385  if ( !m_xLbField2->get_sensitive() )
386  {
387  m_xLbField2->set_sensitive(true);
388  m_xLbCond2->set_sensitive(true);
389  m_xEdVal2->set_sensitive(true);
390  }
391  }
392  else if (&rLb == m_xLbConnect2.get())
393  {
394  if ( !m_xLbField3->get_sensitive() )
395  {
396  m_xLbField3->set_sensitive(true);
397  m_xLbCond3->set_sensitive(true);
398  m_xEdVal3->set_sensitive(true);
399  }
400  }
401  else if (&rLb == m_xLbField1.get())
402  {
403  if ( m_xLbField1->get_active() == 0 )
404  {
405  m_xLbConnect1->set_active(-1);
406  m_xLbConnect2->set_active(-1);
407  m_xLbField2->set_active( 0 );
408  m_xLbField3->set_active( 0 );
409  m_xLbCond2->set_active( 0 );
410  m_xLbCond3->set_active( 0 );
411  ClearValueList( 1 );
412  ClearValueList( 2 );
413  ClearValueList( 3 );
414 
415  m_xLbConnect1->set_sensitive(false);
416  m_xLbConnect2->set_sensitive(false);
417  m_xLbField2->set_sensitive(false);
418  m_xLbField3->set_sensitive(false);
419  m_xLbCond2->set_sensitive(false);
420  m_xLbCond3->set_sensitive(false);
421  m_xEdVal2->set_sensitive(false);
422  m_xEdVal3->set_sensitive(false);
423  }
424  else
425  {
426  UpdateValueList( 1 );
427  if ( !m_xLbConnect1->get_sensitive() )
428  {
429  m_xLbConnect1->set_sensitive(true);
430  }
431  }
432  }
433  else if (&rLb == m_xLbField2.get())
434  {
435  if ( m_xLbField2->get_active() == 0 )
436  {
437  m_xLbConnect2->set_active(-1);
438  m_xLbField3->set_active( 0 );
439  m_xLbCond3->set_active( 0 );
440  ClearValueList( 2 );
441  ClearValueList( 3 );
442 
443  m_xLbConnect2->set_sensitive(false);
444  m_xLbField3->set_sensitive(false);
445  m_xLbCond3->set_sensitive(false);
446  m_xEdVal3->set_sensitive(false);
447  }
448  else
449  {
450  UpdateValueList( 2 );
451  if (!m_xLbConnect2->get_sensitive())
452  {
453  m_xLbConnect2->set_sensitive(true);
454  }
455  }
456  }
457  else if (&rLb == m_xLbField3.get())
458  {
459  if (m_xLbField3->get_active() == 0)
460  ClearValueList(3);
461  else
462  UpdateValueList(3);
463  }
464 }
465 
466 IMPL_LINK(ScPivotFilterDlg, CheckBoxHdl, weld::Button&, rBox, void)
467 {
468  // update the value lists when dealing with uppercase/lowercase
469 
470  if (&rBox != m_xBtnCase.get()) // value lists
471  return;
472 
473  for (auto& a : m_pEntryLists)
474  a.reset();
475 
476  OUString aCurVal1 = m_xEdVal1->get_active_text();
477  OUString aCurVal2 = m_xEdVal2->get_active_text();
478  OUString aCurVal3 = m_xEdVal3->get_active_text();
479  UpdateValueList( 1 );
480  UpdateValueList( 2 );
481  UpdateValueList( 3 );
482  m_xEdVal1->set_entry_text(aCurVal1);
483  m_xEdVal2->set_entry_text(aCurVal2);
484  m_xEdVal3->set_entry_text(aCurVal3);
485 }
486 
487 IMPL_LINK( ScPivotFilterDlg, ValModifyHdl, weld::ComboBox&, rEd, void )
488 {
489  OUString aStrVal = rEd.get_active_text();
490  weld::ComboBox* pLb = m_xLbCond1.get();
491 
492  if ( &rEd == m_xEdVal2.get() ) pLb = m_xLbCond2.get();
493  else if ( &rEd == m_xEdVal3.get() ) pLb = m_xLbCond3.get();
494 
495  // if cond of the special values "empty"/"non-empty" was chosen only the
496  // =-operand makes sense:
497 
498  if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal )
499  {
500  pLb->set_active_text(OUString('='));
501  pLb->set_sensitive(false);
502  }
503  else
504  pLb->set_sensitive(true);
505 }
506 
507 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::shared_ptr< weld::Dialog > m_xDialog
void SetQueryByEmpty()
Definition: queryentry.cxx:74
SC_DLLPUBLIC ScDBCollection * GetDBCollection() const
Definition: document.hxx:816
OUString getString() const
std::unique_ptr< weld::CheckButton > m_xBtnUnique
Definition: pfiltdlg.hxx:72
ScAddress aStart
Definition: address.hxx:500
SharedString intern(const OUString &rStr)
SC_DLLPUBLIC svl::SharedStringPool & GetSharedStringPool()
Definition: documen2.cxx:563
const ScQueryParam theQueryData
Definition: pfiltdlg.hxx:50
#define EMPTY_OUSTRING
Definition: global.hxx:215
std::unique_ptr< weld::ComboBox > m_xLbConnect1
Definition: pfiltdlg.hxx:60
SCROW Row() const
Definition: address.hxx:262
weld::ComboBox * aFieldLbArr[3]
Definition: pfiltdlg.hxx:76
weld::ComboBox * aCondLbArr[3]
Definition: pfiltdlg.hxx:77
std::unique_ptr< weld::Label > m_xFtDbArea
Definition: pfiltdlg.hxx:73
#define STR_DB_LOCAL_NONAME
Definition: globalnames.hxx:13
void ScColToAlpha(OUStringBuffer &rBuf, SCCOL nCol)
append alpha representation of column to buffer
Definition: address.cxx:1917
ScViewData * GetViewData() const
Definition: uiitems.hxx:163
SCCOLROW nField
Definition: queryentry.hxx:51
ScAddress aEnd
Definition: address.hxx:501
ScDocument & GetDocument() const
Definition: viewdata.hxx:380
bool IsQueryByEmpty() const
Definition: queryentry.cxx:84
std::array< std::unique_ptr< ScFilterEntries >, MAXCOLCOUNT > m_pEntryLists
Definition: pfiltdlg.hxx:79
static SC_DLLPUBLIC OUString ReplaceOrAppend(const OUString &rString, const OUString &rPlaceholder, const OUString &rReplacement)
Replaces the first occurrence of rPlaceholder in rString with rReplacement, or if rPlaceholder is not...
Definition: global.cxx:1069
virtual int get_active() const =0
const Item & GetQueryItem() const
Definition: queryentry.cxx:118
std::unique_ptr< ScQueryItem > pOutItem
Definition: pfiltdlg.hxx:51
virtual ~ScPivotFilterDlg() override
Definition: pfiltdlg.cxx:70
weld::ComboBox * aValueEdArr[3]
Definition: pfiltdlg.hxx:75
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
Definition: address.hxx:45
std::unique_ptr< weld::ComboBox > m_xEdVal3
Definition: pfiltdlg.hxx:68
std::unique_ptr< weld::ComboBox > m_xLbCond1
Definition: pfiltdlg.hxx:57
SC_DLLPUBLIC OUString GetString(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScInterpreterContext *pContext=nullptr) const
Definition: document.cxx:3486
SC_DLLPUBLIC const ScQueryEntry & GetEntry(SCSIZE n) const
Definition: queryparam.cxx:124
SCTAB Tab() const
Definition: address.hxx:271
ScDocument * pDoc
Definition: pfiltdlg.hxx:53
const ScDBData * GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) const
Definition: dbdata.cxx:1344
void Init(const SfxItemSet &rArgSet)
Definition: pfiltdlg.cxx:74
ScViewData * pViewData
Definition: pfiltdlg.hxx:52
const OUString aStrNotEmpty
Definition: pfiltdlg.hxx:46
void set_active_text(const OUString &rStr)
int i
uno_Any a
bool IsQueryByNonEmpty() const
Definition: queryentry.cxx:106
void connect_changed(const Link< ComboBox &, void > &rLink)
sal_Int16 SCCOL
Definition: types.hxx:22
IMPL_LINK(ScPivotFilterDlg, LbSelectHdl, weld::ComboBox &, rLb, void)
Definition: pfiltdlg.cxx:378
ScPivotFilterDlg(weld::Window *pParent, const SfxItemSet &rArgSet, SCTAB nSourceTab)
Definition: pfiltdlg.cxx:39
OUString ScResId(const char *pId)
Definition: scdll.cxx:95
const OUString & GetName() const
Definition: dbdata.hxx:122
virtual void set_active(int pos)=0
virtual void clear()=0
svl::SharedString maString
Definition: queryentry.hxx:41
std::unique_ptr< weld::ComboBox > m_xLbCond3
Definition: pfiltdlg.hxx:67
SCCOL Col() const
Definition: address.hxx:267
SC_DLLPUBLIC void GetFilterEntriesArea(SCCOL nCol, SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bCaseSens, ScFilterEntries &rFilterEntries)
Entries for Filter dialog.
Definition: documen3.cxx:1587
std::unique_ptr< weld::ComboBox > m_xLbField2
Definition: pfiltdlg.hxx:61
void ClearValueList(sal_uInt16 nList)
Definition: pfiltdlg.cxx:284
sal_Int32 SCROW
Definition: types.hxx:18
std::unique_ptr< weld::ComboBox > m_xLbConnect2
Definition: pfiltdlg.hxx:65
const OUString aStrNone
Definition: pfiltdlg.hxx:44
std::unique_ptr< weld::CheckButton > m_xBtnRegExp
Definition: pfiltdlg.hxx:71
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
const OUString aStrColumn
Definition: pfiltdlg.hxx:47
#define GetWhich(nSlot)
const sal_uInt16 nWhichQuery
Definition: pfiltdlg.hxx:49
sal_uInt16 GetFieldSelPos(SCCOL nField)
Definition: pfiltdlg.cxx:296
std::unique_ptr< weld::ComboBox > m_xEdVal2
Definition: pfiltdlg.hxx:63
std::unique_ptr< weld::ComboBox > m_xLbField1
Definition: pfiltdlg.hxx:56
const OUString aStrEmpty
Definition: pfiltdlg.hxx:45
ScQueryConnect eConnect
Definition: queryentry.hxx:53
void UpdateValueList(sal_uInt16 nList)
Definition: pfiltdlg.cxx:245
ScQueryOp
Definition: global.hxx:819
std::unique_ptr< weld::ComboBox > m_xLbCond2
Definition: pfiltdlg.hxx:62
SVXCORE_DLLPUBLIC MSO_SPT Get(const OUString &)
void append_text(const OUString &rStr)
void FillFieldLists()
Definition: pfiltdlg.cxx:213
ScQueryOp eOp
Definition: queryentry.hxx:52
std::unique_ptr< weld::CheckButton > m_xBtnCase
Definition: pfiltdlg.hxx:70
std::unique_ptr< weld::ComboBox > m_xLbField3
Definition: pfiltdlg.hxx:66
virtual void set_entry_text(const OUString &rStr)=0
Each instance of this struct represents a single filtering criteria.
Definition: queryentry.hxx:33
void SetQueryByNonEmpty()
Definition: queryentry.cxx:96
utl::SearchParam::SearchType eSearchType
Definition: queryparam.hxx:44
virtual void set_sensitive(bool sensitive)=0
sal_Int16 SCTAB
Definition: types.hxx:23
std::unique_ptr< weld::ComboBox > m_xEdVal1
Definition: pfiltdlg.hxx:58
virtual OUString get_active_text() const =0
const ScQueryItem & GetOutputItem()
Definition: pfiltdlg.cxx:304