26#include <document.hxx>
47#define QUERY_ENTRY_COUNT 4
48#define INVALID_HEADER_POS std::numeric_limits<size_t>::max()
56 "modules/scalc/ui/standardfilterdialog.ui",
"StandardFilterDialog")
72 ,
m_xLbCond1(m_xBuilder->weld_combo_box(
"cond1"))
73 ,
m_xEdVal1(m_xBuilder->weld_combo_box(
"val1"))
78 ,
m_xLbCond2(m_xBuilder->weld_combo_box(
"cond2"))
79 ,
m_xEdVal2(m_xBuilder->weld_combo_box(
"val2"))
84 ,
m_xLbCond3(m_xBuilder->weld_combo_box(
"cond3"))
85 ,
m_xEdVal3(m_xBuilder->weld_combo_box(
"val3"))
90 ,
m_xLbCond4(m_xBuilder->weld_combo_box(
"cond4"))
91 ,
m_xEdVal4(m_xBuilder->weld_combo_box(
"val4"))
95 ,
m_xScrollBar(m_xBuilder->weld_scrolled_window(
"scrollbar", true))
98 ,
m_xBtnOk(m_xBuilder->weld_button(
"ok"))
100 ,
m_xBtnCase(m_xBuilder->weld_check_button(
"case"))
144 xDevice->SetOutputSize(aImageSize);
146 if (rColor == COL_NONE_COLOR)
148 const Color aW(COL_WHITE);
149 const Color aG(0xef, 0xef, 0xef);
150 xDevice->DrawCheckered(aRect.TopLeft(), aRect.GetSize(), 8, aW, aG);
151 xDevice->SetFillColor();
155 xDevice->SetFillColor(rColor);
158 xDevice->DrawRect(aRect);
160 return xDevice.
get();
186 auto nPrefWidth =
m_xLbField1->get_preferred_size().Width();
269 size_t nFieldSelPos = 0;
276 nCondPos =
static_cast<size_t>(rEntry.
eOp);
307 static_cast<SCCOL>(nFieldSelPos) - 1) :
static_cast<SCCOL>(0);
412 DoClose( ScFilterDlgWrapper::GetChildWindowId() );
467 for (
col=nFirstCol;
col<=nMaxCol;
col++ )
470 if (!
m_xBtnHeader->get_active() || aFieldName.isEmpty())
494 const sal_Int32 nFieldSelPos =
maFieldLbArr[nList-1]->get_active();
497 std::unique_ptr<weld::WaitObject> xWaiter;
498 std::vector<weld::ComboBoxEntry>
aEntries;
518 std::pair<EntryListsMap::iterator, bool> r =
519 m_EntryLists.insert(std::make_pair(nColumn, std::make_unique<EntryList>()));
524 pList = r.first->second.get();
526 nColumn, nFirstRow+1, nLastRow,
536 nColumn, nFirstRow, nFirstRow, nTab,
true, aHdrColl );
537 if (!aHdrColl.
empty())
564 aEntries.emplace_back(rEntry.GetString());
583 size_t nFieldSelPos =
maFieldLbArr[nList-1]->get_active();
590 OSL_FAIL(
"column not yet initialized");
599 int nListPos =
nPos + 2;
603 const OUString& aHdrStr = rHdrEntry.
GetString();
604 bool bWasThere = nListPos < pValList->
get_count() && aHdrStr == pValList->
get_text(nListPos);
615 pValList->
remove(nListPos);
636 size_t nPos = nList - 1;
647 std::set<Color> aColors;
657 for (
const auto& rColor : aColors)
663 ?
ScResId(SCSTR_FILTER_AUTOMATIC_COLOR)
664 :
ScResId(SCSTR_FILTER_NO_FILL);
674 if (aItem.maColor == rColor
696 bool bCopyPosOk =
false;
743 if ( &rBtn != m_xBtnClear.get() )
747 m_xScrollBar->vadjustment_set_value(0);
749 RefreshEditRow( nOffset);
752 m_xLbConnect1->set_active(-1);
753 m_xLbConnect2->set_active(-1);
754 m_xLbConnect3->set_active(-1);
755 m_xLbConnect4->set_active(-1);
756 m_xLbField1->set_active(0);
757 m_xLbField2->set_active(0);
758 m_xLbField3->set_active(0);
759 m_xLbField4->set_active(0);
760 m_xLbCond1->set_active(0);
761 m_xLbCond2->set_active(0);
762 m_xLbCond3->set_active(0);
763 m_xLbCond4->set_active(0);
770 m_xLbConnect2->set_sensitive(
false);
771 m_xLbConnect3->set_sensitive(
false);
772 m_xLbConnect4->set_sensitive(
false);
773 m_xLbField2->set_sensitive(
false);
774 m_xLbField3->set_sensitive(
false);
775 m_xLbField4->set_sensitive(
false);
776 m_xLbCond2->set_sensitive(
false);
777 m_xLbCond3->set_sensitive(
false);
778 m_xLbCond4->set_sensitive(
false);
779 m_xEdVal2->set_sensitive(
false);
780 m_xEdVal3->set_sensitive(
false);
781 m_xEdVal4->set_sensitive(
false);
782 m_xLbColor2->set_sensitive(
false);
783 m_xLbColor3->set_sensitive(
false);
784 m_xLbColor4->set_sensitive(
false);
785 m_xBtnRemove2->set_sensitive(
false);
786 m_xBtnRemove3->set_sensitive(
false);
787 m_xBtnRemove4->set_sensitive(
false);
791 if (maRefreshExceptQuery.size() <
nCount + 1)
792 maRefreshExceptQuery.resize(
nCount + 1,
false);
795 theQueryData.GetEntry(
i).bDoQuery =
false;
796 maRefreshExceptQuery[
i] =
false;
797 theQueryData.GetEntry(
i).nField =
static_cast<SCCOL>(0);
799 maRefreshExceptQuery[0] =
true;
804 if ( &rBtn == m_xBtnOk.get() )
806 bool bAreaInputOk =
true;
808 if ( m_xBtnCopyResult->get_active() )
810 if ( !pOptionsMgr->VerifyPosStr( m_xEdCopyArea->GetText() ) )
812 if (!m_xExpander->get_expanded())
813 m_xExpander->set_expanded(
true);
816 VclMessageType::Warning, VclButtonsType::Ok,
819 m_xEdCopyArea->GrabFocus();
820 bAreaInputOk =
false;
826 SetDispatcherLock(
false );
829 SfxCallMode::SLOT | SfxCallMode::RECORD,
830 { GetOutputItem() });
834 else if ( &rBtn == m_xBtnCancel.get() )
842 if ( m_xExpander->get_expanded() )
847 bRefInputMode =
false;
856 if (_pTimer == pTimer.get() &&
m_xDialog->has_toplevel_focus())
857 bRefInputMode = (m_xEdCopyArea->GetWidget()->has_focus() || m_xRbCopyArea->GetWidget()->has_focus());
859 if ( m_xExpander->get_expanded() )
868 sal_uInt16 nOffset = GetSliderPos();
870 if ( &rLb == m_xLbConnect1.get() )
872 m_xLbField1->set_sensitive(
true);
873 m_xLbCond1->set_sensitive(
true);
874 m_xEdVal1->set_sensitive(
true);
875 m_xBtnRemove1->set_sensitive(
true);
877 const sal_Int32 nConnect1 = m_xLbConnect1->get_active();
878 size_t nQE = nOffset;
879 theQueryData.GetEntry(nQE).eConnect =
static_cast<ScQueryConnect>(nConnect1);
880 if (maRefreshExceptQuery.size() < nQE + 1)
881 maRefreshExceptQuery.resize(nQE + 1,
false);
882 maRefreshExceptQuery[nQE] =
true;
884 else if ( &rLb == m_xLbConnect2.get() )
886 m_xLbField2->set_sensitive(
true);
887 m_xLbCond2->set_sensitive(
true);
888 m_xEdVal2->set_sensitive(
true);
889 m_xBtnRemove2->set_sensitive(
true);
891 const sal_Int32 nConnect2 = m_xLbConnect2->get_active();
892 size_t nQE = 1+nOffset;
893 theQueryData.GetEntry(nQE).eConnect =
static_cast<ScQueryConnect>(nConnect2);
894 if (maRefreshExceptQuery.size() < nQE + 1)
895 maRefreshExceptQuery.resize(nQE + 1,
false);
896 maRefreshExceptQuery[nQE]=
true;
898 else if ( &rLb == m_xLbConnect3.get() )
900 m_xLbField3->set_sensitive(
true);
901 m_xLbCond3->set_sensitive(
true);
902 m_xEdVal3->set_sensitive(
true);
903 m_xBtnRemove3->set_sensitive(
true);
905 const sal_Int32 nConnect3 = m_xLbConnect3->get_active();
906 size_t nQE = 2 + nOffset;
907 theQueryData.GetEntry(nQE).eConnect =
static_cast<ScQueryConnect>(nConnect3);
908 if (maRefreshExceptQuery.size() < nQE + 1)
909 maRefreshExceptQuery.resize(nQE + 1,
false);
910 maRefreshExceptQuery[nQE] =
true;
913 else if ( &rLb == m_xLbConnect4.get() )
915 m_xLbField4->set_sensitive(
true);
916 m_xLbCond4->set_sensitive(
true);
917 m_xEdVal4->set_sensitive(
true);
918 m_xLbColor4->set_sensitive(
true);
919 m_xBtnRemove4->set_sensitive(
true);
921 const sal_Int32 nConnect4 = m_xLbConnect4->get_active();
922 size_t nQE = 3 + nOffset;
923 theQueryData.GetEntry(nQE).eConnect =
static_cast<ScQueryConnect>(nConnect4);
924 if (maRefreshExceptQuery.size() < nQE + 1)
925 maRefreshExceptQuery.resize(nQE + 1,
false);
926 maRefreshExceptQuery[nQE] =
true;
928 else if ( &rLb == m_xLbField1.get() )
930 if ( m_xLbField1->get_active() == 0 )
932 m_xLbConnect2->set_active(-1);
933 m_xLbConnect3->set_active(-1);
934 m_xLbConnect4->set_active(-1);
935 m_xLbField2->set_active( 0 );
936 m_xLbField3->set_active( 0 );
937 m_xLbField4->set_active( 0 );
938 m_xLbCond2->set_active( 0 );
939 m_xLbCond3->set_active( 0 );
940 m_xLbCond4->set_active( 0 );
946 m_xLbConnect2->set_sensitive(
false);
947 m_xLbConnect3->set_sensitive(
false);
948 m_xLbConnect4->set_sensitive(
false);
949 m_xLbField2->set_sensitive(
false);
950 m_xLbField3->set_sensitive(
false);
951 m_xLbField4->set_sensitive(
false);
952 m_xLbCond2->set_sensitive(
false);
953 m_xLbCond3->set_sensitive(
false);
954 m_xLbCond4->set_sensitive(
false);
955 m_xEdVal2->set_sensitive(
false);
956 m_xEdVal3->set_sensitive(
false);
957 m_xEdVal4->set_sensitive(
false);
958 m_xLbColor2->set_sensitive(
false);
959 m_xLbColor3->set_sensitive(
false);
960 m_xLbColor4->set_sensitive(
false);
961 m_xBtnRemove2->set_sensitive(
false);
962 m_xBtnRemove3->set_sensitive(
false);
963 m_xBtnRemove4->set_sensitive(
false);
965 if (maRefreshExceptQuery.size() <
nCount + 1)
966 maRefreshExceptQuery.resize(
nCount + 1,
false);
969 theQueryData.GetEntry(
i).bDoQuery =
false;
970 maRefreshExceptQuery[
i] =
false;
971 theQueryData.GetEntry(
i).nField =
static_cast<SCCOL>(0);
973 maRefreshExceptQuery[nOffset] =
true;
977 UpdateValueList( 1 );
978 UpdateColorList( 1 );
979 if ( !m_xLbConnect2->get_sensitive() )
981 m_xLbConnect2->set_sensitive(
true);
983 theQueryData.GetEntry(nOffset).bDoQuery =
true;
984 const sal_Int32 nField = rLb.get_active();
985 theQueryData.GetEntry(nOffset).nField = theQueryData.nCol1 +
static_cast<SCCOL>(nField) - 1 ;
988 else if ( &rLb == m_xLbField2.get() )
990 if ( m_xLbField2->get_active() == 0 )
992 m_xLbConnect3->set_active(-1);
993 m_xLbConnect4->set_active(-1);
994 m_xLbField3->set_active( 0 );
995 m_xLbField4->set_active( 0 );
996 m_xLbCond3->set_active( 0 );
997 m_xLbCond4->set_active( 0 );
1000 ClearValueList( 4 );
1002 m_xLbConnect3->set_sensitive(
false);
1003 m_xLbConnect4->set_sensitive(
false);
1004 m_xLbField3->set_sensitive(
false);
1005 m_xLbField4->set_sensitive(
false);
1006 m_xLbCond3->set_sensitive(
false);
1007 m_xLbCond4->set_sensitive(
false);
1008 m_xEdVal3->set_sensitive(
false);
1009 m_xEdVal4->set_sensitive(
false);
1010 m_xLbColor3->set_sensitive(
false);
1011 m_xLbColor4->set_sensitive(
false);
1012 m_xBtnRemove3->set_sensitive(
false);
1013 m_xBtnRemove4->set_sensitive(
false);
1015 sal_uInt16 nTemp=nOffset+1;
1017 if (maRefreshExceptQuery.size() <
nCount)
1018 maRefreshExceptQuery.resize(
nCount,
false);
1021 theQueryData.GetEntry(
i).bDoQuery =
false;
1022 maRefreshExceptQuery[
i] =
false;
1023 theQueryData.GetEntry(
i).nField =
static_cast<SCCOL>(0);
1025 maRefreshExceptQuery[nTemp] =
true;
1029 UpdateValueList( 2 );
1030 UpdateColorList( 2 );
1031 if ( !m_xLbConnect3->get_sensitive() )
1033 m_xLbConnect3->set_sensitive(
true);
1035 const sal_Int32 nField = rLb.get_active();
1036 sal_uInt16 nQ=1+nOffset;
1037 theQueryData.GetEntry(nQ).bDoQuery =
true;
1038 theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 +
static_cast<SCCOL>(nField) - 1 ;
1041 else if ( &rLb == m_xLbField3.get() )
1043 if ( m_xLbField3->get_active() == 0 )
1045 m_xLbConnect4->set_active(-1);
1046 m_xLbField4->set_active( 0 );
1047 m_xLbCond4->set_active( 0 );
1048 ClearValueList( 3 );
1049 ClearValueList( 4 );
1051 m_xLbConnect4->set_sensitive(
false);
1052 m_xLbField4->set_sensitive(
false);
1053 m_xLbCond4->set_sensitive(
false);
1054 m_xEdVal4->set_sensitive(
false);
1055 m_xLbColor4->set_sensitive(
false);
1056 m_xBtnRemove4->set_sensitive(
false);
1058 sal_uInt16 nTemp=nOffset+2;
1060 if (maRefreshExceptQuery.size() <
nCount)
1061 maRefreshExceptQuery.resize(
nCount,
false);
1064 theQueryData.GetEntry(
i).bDoQuery =
false;
1065 maRefreshExceptQuery[
i] =
false;
1066 theQueryData.GetEntry(
i).nField =
static_cast<SCCOL>(0);
1068 maRefreshExceptQuery[nTemp] =
true;
1072 UpdateValueList( 3 );
1073 UpdateColorList( 3 );
1074 if ( !m_xLbConnect4->get_sensitive() )
1076 m_xLbConnect4->set_sensitive(
true);
1079 const sal_Int32 nField = rLb.get_active();
1080 sal_uInt16 nQ=2+nOffset;
1081 theQueryData.GetEntry(nQ).bDoQuery =
true;
1082 theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 +
static_cast<SCCOL>(nField) - 1 ;
1086 else if ( &rLb == m_xLbField4.get() )
1088 if ( m_xLbField4->get_active() == 0 )
1090 ClearValueList( 4 );
1091 sal_uInt16 nTemp=nOffset+3;
1093 if (maRefreshExceptQuery.size() <
nCount)
1094 maRefreshExceptQuery.resize(
nCount,
false);
1097 theQueryData.GetEntry(
i).bDoQuery =
false;
1098 maRefreshExceptQuery[
i] =
false;
1099 theQueryData.GetEntry(
i).nField =
static_cast<SCCOL>(0);
1101 maRefreshExceptQuery[nTemp] =
true;
1105 UpdateValueList( 4 );
1106 UpdateColorList( 4 );
1107 const sal_Int32 nField = rLb.get_active();
1108 sal_uInt16 nQ=3+nOffset;
1109 theQueryData.GetEntry(nQ).bDoQuery =
true;
1110 theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 +
static_cast<SCCOL>(nField) - 1 ;
1114 else if (&rLb == m_xLbCond1.get() || &rLb == m_xLbCond2.get() || &rLb == m_xLbCond3.get()
1115 || &rLb == m_xLbCond4.get())
1119 bool bEnableColorLb =
false;
1120 if (rLb.get_active_text() == aStrFontColor || rLb.get_active_text() == aStrBackgroundColor)
1122 bEnableColorLb =
true;
1127 op =
static_cast<ScQueryOp>(rLb.get_active());
1130 if (&rLb == m_xLbCond1.get())
1133 m_xLbColor1->set_visible(bEnableColorLb);
1134 m_xLbColor1->set_sensitive(bEnableColorLb);
1135 m_xEdVal1->set_visible(!bEnableColorLb);
1138 else if (&rLb == m_xLbCond2.get())
1141 m_xLbColor2->set_visible(bEnableColorLb);
1142 m_xLbColor2->set_sensitive(bEnableColorLb);
1143 m_xEdVal2->set_visible(!bEnableColorLb);
1146 else if (&rLb == m_xLbCond3.get())
1149 m_xLbColor3->set_visible(bEnableColorLb);
1150 m_xLbColor3->set_sensitive(bEnableColorLb);
1151 m_xEdVal3->set_visible(!bEnableColorLb);
1154 else if (&rLb == m_xLbCond4.get())
1157 m_xLbColor4->set_visible(bEnableColorLb);
1158 m_xLbColor4->set_sensitive(bEnableColorLb);
1159 m_xEdVal4->set_visible(!bEnableColorLb);
1163 auto aEntry = theQueryData.GetEntry(nQ);
1166 else if (&rLb == m_xLbColor1.get() || &rLb == m_xLbColor2.get() || &rLb == m_xLbColor3.get()
1167 || &rLb == m_xLbColor4.get())
1170 if (&rLb == m_xLbColor1.get())
1174 else if (&rLb == m_xLbColor2.get())
1178 else if (&rLb == m_xLbColor3.get())
1182 else if (&rLb == m_xLbColor4.get())
1189 if (maCondLbArr[nQ]->get_active_text() == aStrFontColor)
1193 else if (maCondLbArr[nQ]->get_active_text() == aStrBackgroundColor)
1208 if ( &rBox == m_xBtnHeader.get() )
1210 const sal_Int32 nCurSel1 = m_xLbField1->get_active();
1211 const sal_Int32 nCurSel2 = m_xLbField2->get_active();
1212 const sal_Int32 nCurSel3 = m_xLbField3->get_active();
1213 const sal_Int32 nCurSel4 = m_xLbField4->get_active();
1215 m_xLbField1->set_active( nCurSel1 );
1216 m_xLbField2->set_active( nCurSel2 );
1217 m_xLbField3->set_active( nCurSel3 );
1218 m_xLbField4->set_active( nCurSel4 );
1220 UpdateHdrInValueList( 1 );
1221 UpdateHdrInValueList( 2 );
1222 UpdateHdrInValueList( 3 );
1223 UpdateHdrInValueList( 4 );
1226 if ( &rBox != m_xBtnCase.get() )
1229 m_EntryLists.clear();
1230 UpdateValueList( 1 );
1231 UpdateValueList( 2 );
1232 UpdateValueList( 3 );
1233 UpdateValueList( 4 );
1235 UpdateColorList( 1 );
1236 UpdateColorList( 2 );
1237 UpdateColorList( 3 );
1238 UpdateColorList( 4 );
1243 size_t nOffset = GetSliderPos();
1245 size_t nQE =
i + nOffset;
1246 OUString aStrVal = rEd.get_active_text();
1249 if ( &rEd == m_xEdVal2.get() )
1251 pLbCond = m_xLbCond2.get();
1252 pLbField = m_xLbField2.get();
1256 if ( &rEd == m_xEdVal3.get() )
1258 pLbCond = m_xLbCond3.get();
1259 pLbField = m_xLbField3.get();
1263 if ( &rEd == m_xEdVal4.get() )
1265 pLbCond = m_xLbCond4.get();
1266 pLbField = m_xLbField4.get();
1271 if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal )
1279 if (maHasDates.size() < nQE + 1)
1280 maHasDates.resize(nQE + 1,
false);
1281 if (maRefreshExceptQuery.size() < nQE + 1)
1282 maRefreshExceptQuery.resize(nQE + 1,
false);
1286 bool bDoThis = (pLbField->
get_active() != 0);
1289 if ( !(rEntry.
bDoQuery || maRefreshExceptQuery[nQE]) )
1292 bool bByEmptyOrNotByEmpty =
false;
1293 if ( aStrEmpty == aStrVal )
1295 bByEmptyOrNotByEmpty =
true;
1298 else if ( aStrNotEmpty == aStrVal )
1300 bByEmptyOrNotByEmpty =
true;
1305 rItem.
maString = pDoc->GetSharedStringPool().intern(aStrVal);
1310 const sal_Int32 nField = pLbField->
get_active();
1311 rEntry.
nField = nField ? (theQueryData.nCol1 +
1312 static_cast<SCCOL>(nField) - 1) :
static_cast<SCCOL>(0);
1316 if (maHasDates[nQE] && !bByEmptyOrNotByEmpty)
1323 sal_uInt16 nOffset = GetSliderPos();
1324 int nButtonIndex = 0;
1325 if ( &rBtn == m_xBtnRemove2.get() )
1327 if ( &rBtn == m_xBtnRemove3.get() )
1329 if ( &rBtn == m_xBtnRemove4.get() )
1331 SCSIZE nRowToDelete = nOffset + nButtonIndex;
1335 if (nRowToDelete >=
nCount)
1337 SAL_WARN(
"sc",
"ScFilterDlg::BtnRemoveHdl: could not delete row - invalid index.");
1342 if (maRefreshExceptQuery.size() <
nCount + 1)
1343 maRefreshExceptQuery.resize(
nCount + 1,
false);
1350 if (theQueryData.GetEntry(
i+1).bDoQuery)
1352 theQueryData.GetEntry(
i) = theQueryData.GetEntry(
i+1);
1363 if (nRowToClear <
nCount-1 && maRefreshExceptQuery[nRowToClear+1])
1365 theQueryData.GetEntry(nRowToClear) = theQueryData.GetEntry(nRowToClear+1);
1366 maRefreshExceptQuery[nRowToClear] =
true;
1367 maRefreshExceptQuery[nRowToClear+1] =
false;
1372 theQueryData.GetEntry(nRowToClear).bDoQuery =
false;
1373 theQueryData.GetEntry(nRowToClear).nField =
static_cast<SCCOL>(0);
1374 maRefreshExceptQuery[nRowToClear] =
false;
1378 if (!theQueryData.GetEntry(0).bDoQuery)
1380 maRefreshExceptQuery[0] =
true;
1384 RefreshEditRow( nOffset );
1387 if (!theQueryData.GetEntry(0).bDoQuery)
1389 m_xLbConnect1->set_active(-1);
1390 m_xLbField1->set_active(0);
1391 m_xLbField1->set_sensitive(
true);
1392 m_xLbCond1->set_active(0);
1393 m_xLbCond1->set_sensitive(
true);
1411 return static_cast<size_t>(
m_xScrollBar->vadjustment_get_value());
1424 size_t nCondPos = 0;
1425 size_t nFieldSelPos = 0;
1426 size_t nQE =
i + nOffset;
1436 nCondPos =
static_cast<size_t>(rEntry.
eOp);
1478 size_t nQENext = nQE + 1;
1537 if (rQueryStr.isEmpty())
1558 SAL_WARN(
"sc",
"ScFilterDlg::SetValString: empty query string, really?");
1559 rValStr = rQueryStr;
1567 rValStr = rQueryStr;
void ScColToAlpha(OUStringBuffer &rBuf, SCCOL nCol)
append alpha representation of column to buffer
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 ...
Reference< XExecutableDialog > m_xDialog
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
static Color STRtoRGB(std::u16string_view colorname)
OUString AsRGBHexString() const
SC_DLLPUBLIC void Format(OStringBuffer &r, ScRefFlags nFlags, const ScDocument *pDocument=nullptr, const Details &rDetails=detailsOOOa1) const
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument &, const Details &rDetails=detailsOOOa1, ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, sal_Int32 *pSheetEndPos=nullptr, const OUString *pErrRef=nullptr)
SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const
SC_DLLPUBLIC void GetFilterEntriesArea(SCCOL nCol, SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bCaseSens, ScFilterEntries &rFilterEntries)
Entries for Filter dialog.
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
SC_DLLPUBLIC OUString GetString(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScInterpreterContext *pContext=nullptr) const
ScChangeTrack * GetChangeTrack() const
std::unique_ptr< formula::RefButton > m_xRbCopyArea
std::unique_ptr< weld::Label > m_xFtDbAreaLabel
std::unique_ptr< weld::Expander > m_xExpander
std::unique_ptr< weld::Label > m_xFtDbArea
std::unique_ptr< weld::Button > m_xBtnClear
ScQueryParam theQueryData
std::unique_ptr< weld::CheckButton > m_xBtnRegExp
std::unique_ptr< weld::ComboBox > m_xLbField4
std::unique_ptr< weld::ComboBox > m_xLbCond3
void UpdateHdrInValueList(size_t nList)
const OUString aStrFontColor
std::unique_ptr< weld::Button > m_xBtnRemove2
std::unique_ptr< weld::Button > m_xBtnOk
std::unique_ptr< ScFilterOptionsMgr > pOptionsMgr
std::vector< weld::ComboBox * > maValueEdArr
void Init(const SfxItemSet &rArgSet)
std::unique_ptr< weld::ComboBox > m_xLbColor4
virtual ~ScFilterDlg() override
std::unique_ptr< weld::ComboBox > m_xEdVal4
std::unique_ptr< weld::CheckButton > m_xBtnCase
virtual void SetActive() override
std::unique_ptr< weld::ComboBox > m_xLbColor3
std::unique_ptr< weld::ComboBox > m_xLbField2
std::unique_ptr< weld::ComboBox > m_xLbCopyArea
void SetValString(const OUString &rQueryStr, const ScQueryEntry::Item &rItem, OUString &rValStr)
std::unique_ptr< weld::CheckButton > m_xBtnHeader
std::unique_ptr< weld::ComboBox > m_xLbConnect4
virtual bool IsRefInputMode() const override
std::vector< weld::ComboBox * > maConnLbArr
std::unique_ptr< weld::ComboBox > m_xLbConnect3
void RefreshEditRow(size_t nOffset)
std::unique_ptr< weld::ComboBox > m_xLbCond4
std::unique_ptr< weld::ComboBox > m_xLbConnect2
std::deque< bool > maRefreshExceptQuery
EntryListsMap m_EntryLists
std::vector< weld::Button * > maRemoveBtnArr
const OUString aStrNotEmpty
std::unique_ptr< weld::CheckButton > m_xBtnCopyResult
size_t GetSliderPos() const
ScQueryItem * GetOutputItem()
virtual void Close() override
std::unique_ptr< weld::ComboBox > m_xEdVal3
const OUString aStrBackgroundColor
std::unique_ptr< weld::Widget > m_xContents
std::unique_ptr< weld::Button > m_xBtnCancel
std::unique_ptr< Timer > pTimer
std::unique_ptr< weld::ComboBox > m_xLbColor1
std::unique_ptr< weld::ComboBox > m_xLbColor2
std::unique_ptr< weld::CheckButton > m_xBtnDestPers
void UpdateColorList(size_t nList)
std::unique_ptr< weld::Button > m_xBtnRemove1
const OUString aStrColumn
std::vector< weld::ComboBox * > maColorLbArr
std::unique_ptr< ScQueryItem > pOutItem
const OUString aStrUndefined
virtual void SetReference(const ScRange &rRef, ScDocument &rDoc) override
void UpdateValueList(size_t nList)
std::unique_ptr< formula::RefEdit > m_xEdCopyArea
std::unique_ptr< weld::ComboBox > m_xEdVal2
std::unique_ptr< weld::ComboBox > m_xLbField1
std::vector< weld::ComboBox * > maFieldLbArr
std::unique_ptr< weld::ComboBox > m_xLbConnect1
std::unique_ptr< weld::Button > m_xBtnRemove4
const sal_uInt16 nWhichQuery
std::unique_ptr< weld::ComboBox > m_xLbCond2
ScFilterDlg(SfxBindings *pB, SfxChildWindow *pCW, weld::Window *pParent, const SfxItemSet &rArgSet)
std::vector< weld::ComboBox * > maCondLbArr
std::deque< bool > maHasDates
void ClearValueList(size_t nList)
size_t GetFieldSelPos(SCCOL nField)
std::unique_ptr< weld::ScrolledWindow > m_xScrollBar
std::unique_ptr< weld::ComboBox > m_xLbField3
std::unique_ptr< weld::CheckButton > m_xBtnUnique
std::unique_ptr< weld::ComboBox > m_xEdVal1
std::unique_ptr< weld::ComboBox > m_xLbCond1
std::unique_ptr< weld::Button > m_xBtnRemove3
static SC_DLLPUBLIC OUString ReplaceOrAppend(const OUString &rString, std::u16string_view rPlaceholder, const OUString &rReplacement)
Replaces the first occurrence of rPlaceholder in rString with rReplacement, or if rPlaceholder is not...
ScViewData * GetViewData() const
virtual void RefInputStart(formula::RefEdit *pEdit, formula::RefButton *pButton=nullptr) override
virtual void RefInputDone(bool bForced=false) override
bool DoClose(sal_uInt16 nId)
const OUString & GetString() const
ScDocument & GetDocument() const
ScDocShell * GetDocShell() const
SfxDispatcher * GetDispatcher() const
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
const Size & GetListBoxPreviewDefaultPixelSize() const
reference_type * get() const
const OUString & getString() const
virtual OUString get_active_text() const=0
virtual void insert_vector(const std::vector< weld::ComboBoxEntry > &rItems, bool bKeepExisting)=0
virtual void set_entry_text(const OUString &rStr)=0
virtual OUString get_text(int pos) const=0
void append_text(const OUString &rStr)
void insert_text(int pos, const OUString &rStr)
virtual void remove(int pos)=0
virtual int get_active() const=0
virtual int get_count() const=0
void set_active_text(const OUString &rStr)
constexpr ::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
virtual SfxBindings & GetBindings() override
ScXMLEditAttributeMap::Entry const aEntries[]
IMPL_LINK(ScFilterDlg, BtnClearHdl, weld::Button &, rBtn, void)
IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, weld::Expander &, void)
#define QUERY_ENTRY_COUNT
#define INVALID_HEADER_POS
#define LINK(Instance, Class, Member)
#define SAL_WARN(area, stream)
RttiCompleteObjectLocator col
SVXCORE_DLLPUBLIC MSO_SPT Get(const OUString &)
OUString ScResId(TranslateId aId)
ScFilterEntries maFilterEntries
std::set< Color > & getTextColors()
std::set< Color > & getBackgroundColors()
void push_back(const ScTypedStrData &r)
std::vector< ScTypedStrData >::iterator begin()
std::vector< ScTypedStrData >::iterator end()
svl::SharedString maString
Each instance of this struct represents a single filtering criteria.
void SetQueryByBackgroundColor(Color color)
bool IsQueryByNonEmpty() const
const Item & GetQueryItem() const
void SetQueryByNonEmpty()
bool IsQueryByTextColor() const
void SetQueryByTextColor(Color color)
bool IsQueryByEmpty() const
bool IsQueryByBackgroundColor() const
SC_DLLPUBLIC const ScQueryEntry & GetEntry(SCSIZE n) const
utl::SearchParam::SearchType eSearchType