27 #include <osl/diagnose.h>
29 #include <com/sun/star/awt/XBitmap.hpp>
30 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
31 #include <com/sun/star/util/SortField.hpp>
32 #include <com/sun/star/table/TableSortField.hpp>
33 #include <com/sun/star/beans/PropertyAttribute.hpp>
34 #include <com/sun/star/table/TableOrientation.hpp>
35 #include <com/sun/star/table/CellRangeAddress.hpp>
36 #include <com/sun/star/sheet/DataImportMode.hpp>
37 #include <com/sun/star/sheet/FilterOperator2.hpp>
38 #include <com/sun/star/sheet/TableFilterField2.hpp>
48 #include <unonames.hxx>
87 {
u"", 0, css::uno::Type(), 0, 0 }
89 return aSubTotalPropertyMap_Impl;
105 {
u"", 0, css::uno::Type(), 0, 0 }
107 return aFilterPropertyMap_Impl;
128 {
u"", 0, css::uno::Type(), 0, 0 }
130 return aDBRangePropertyMap_Impl;
141 sheet::GeneralFunction eGeneral;
157 OSL_FAIL(
"SubTotalToGeneral: wrong enum");
158 eGeneral = sheet::GeneralFunction_NONE;
166 OSL_ENSURE( rSeq.getLength() == GetPropertyCount(),
"wrong Count" );
168 beans::PropertyValue* pArray = rSeq.getArray();
170 sheet::DataImportMode
eMode = sheet::DataImportMode_NONE;
174 eMode = sheet::DataImportMode_SQL;
176 eMode = sheet::DataImportMode_QUERY;
178 eMode = sheet::DataImportMode_TABLE;
186 pArray[0].Value <<= rParam.
aDBName;
191 pArray[0].Value <<= rParam.
aDBName;
195 pArray[1].Value <<= eMode;
201 pArray[3].Value <<= rParam.
bNative;
207 for (
const beans::PropertyValue& rProp : rSeq)
209 OUString aPropName(rProp.Name);
215 if ( rProp.Value >>= aStrVal )
220 if ( rProp.Value >>= aStrVal )
225 if ( rProp.Value >>= aStrVal )
234 case sheet::DataImportMode_NONE:
237 case sheet::DataImportMode_SQL:
241 case sheet::DataImportMode_TABLE:
246 case sheet::DataImportMode_QUERY:
252 OSL_FAIL(
"wrong mode");
261 OSL_ENSURE( rSeq.getLength() == GetPropertyCount(),
"wrong count" );
263 beans::PropertyValue* pArray = rSeq.getArray();
267 table::CellAddress aOutPos;
272 sal_uInt16 nSortCount = 0;
276 uno::Sequence<table::TableSortField> aFields(nSortCount);
279 table::TableSortField* pFieldArray = aFields.getArray();
280 for (sal_uInt16
i=0;
i<nSortCount;
i++)
283 pFieldArray[
i].IsAscending = rParam.
maKeyState[
i].bAscending;
284 pFieldArray[
i].FieldType = table::TableSortFieldType_AUTOMATIC;
285 pFieldArray[
i].IsCaseSensitive = rParam.
bCaseSens;
294 pArray[0].Value <<= !rParam.
bByRow;
300 pArray[2].Value <<=
static_cast<sal_Int32
>( rParam.
GetSortKeyCount() );
303 pArray[3].Value <<= aFields;
309 pArray[5].Value <<= !rParam.
bInplace;
312 pArray[6].Value <<= aOutPos;
315 pArray[7].Value <<= rParam.
bUserDef;
318 pArray[8].Value <<=
static_cast<sal_Int32
>( rParam.
nUserIndex );
325 for (
const beans::PropertyValue& rProp : rSeq)
327 OUString aPropName(rProp.Name);
333 rParam.
bByRow = ( eOrient != table::TableOrientation_COLUMNS );
337 rParam.
bByRow = !::cppu::any2bool(rProp.Value);
344 if ( (rProp.Value >>= nVal) && nVal > nSortSize )
352 uno::Sequence<util::SortField>
aSeq;
353 uno::Sequence<table::TableSortField> aNewSeq;
354 if ( rProp.Value >>= aSeq )
356 sal_Int32
nCount = aSeq.getLength();
363 const util::SortField* pFieldArray = aSeq.getConstArray();
364 for (i=0; i<nCount; i++)
367 rParam.
maKeyState[i].bAscending = pFieldArray[i].SortAscending;
372 for (i=nCount; i<nSortSize; i++)
375 else if ( rProp.Value >>= aNewSeq )
377 sal_Int32
nCount = aNewSeq.getLength();
379 if ( nCount > nSortSize )
384 const table::TableSortField* pFieldArray = aNewSeq.getConstArray();
385 for (i=0; i<nCount; i++)
388 rParam.
maKeyState[i].bAscending = pFieldArray[i].IsAscending;
391 rParam.
bCaseSens = pFieldArray[i].IsCaseSensitive;
398 for (i=nCount; i<nSortSize; i++)
412 table::CellAddress aAddress;
413 if ( rProp.Value >>= aAddress )
425 if ( rProp.Value >>= nVal )
426 rParam.
nUserIndex =
static_cast<sal_uInt16
>(nVal);
435 if ( rProp.Value >>= sStr )
445 OSL_ENSURE(pDesc,
"ScSubTotalFieldObj: Parent is 0");
481 uno::Sequence<sheet::SubTotalColumn>
aSeq(nCount);
482 sheet::SubTotalColumn* pAry = aSeq.getArray();
493 const uno::Sequence<sheet::SubTotalColumn>& aSubTotalColumns )
499 sal_uInt32
nColCount = aSubTotalColumns.getLength();
500 if ( nColCount <= sal::static_int_cast<sal_uInt32>(
SCCOL_MAX) )
509 const sheet::SubTotalColumn* pAry = aSubTotalColumns.getConstArray();
560 const uno::Sequence<sheet::SubTotalColumn>& aSubTotalColumns,
561 sal_Int32 nGroupColumn )
571 sal_uInt32
nColCount = aSubTotalColumns.getLength();
575 throw uno::RuntimeException();
578 aParam.
nField[nPos] =
static_cast<SCCOL>(nGroupColumn);
590 const sheet::SubTotalColumn* pAry = aSubTotalColumns.getConstArray();
633 uno::Reference<sheet::XSubTotalField> xField(
GetObjectByIndex_Impl(static_cast<sal_uInt16>(nIndex)));
635 throw lang::IndexOutOfBoundsException();
637 return uno::makeAny(xField);
657 static uno::Reference<beans::XPropertySetInfo> aRef(
663 const OUString& aPropertyName,
const uno::Any& aValue )
686 if ( aValue >>= nVal )
687 aParam.
nUserIndex =
static_cast<sal_uInt16
>(nVal);
692 if ( (aValue >>= nVal) && nVal > sal::static_int_cast<sal_Int32>(
MAXSUBTOTAL) )
694 throw lang::IllegalArgumentException();
724 aRet <<= static_cast<sal_Int32>(aParam.
nUserIndex);
772 mxParent->GetSubTotalParam( rParam );
778 mxParent->SetSubTotalParam( rParam );
814 table::CellRangeAddress aRange;
815 uno::Sequence<table::CellRangeAddress>
aSeq(nCount);
816 table::CellRangeAddress* pAry = aSeq.getArray();
817 for (sal_uInt16
i=0;
i<nCount;
i++)
820 aRange.Sheet = rArea.
nTab;
823 aRange.EndColumn = rArea.
nColEnd;
831 const uno::Sequence<table::CellRangeAddress>& aSources )
834 sal_uInt16
nCount =
static_cast<sal_uInt16
>(aSources.getLength());
837 const table::CellRangeAddress* pAry = aSources.getConstArray();
838 std::unique_ptr<ScArea[]> pNew(
new ScArea[nCount]);
840 for (i=0; i<nCount; i++)
841 pNew[i] =
ScArea( pAry[i].Sheet,
842 static_cast<SCCOL>(pAry[i].StartColumn), pAry[i].StartRow,
843 static_cast<SCCOL>(pAry[i].EndColumn), pAry[i].EndRow );
854 table::CellAddress aPos;
862 const table::CellAddress& aStartOutputPosition )
924 if ( rHint.
GetId() == SfxHintId::Dying )
940 while ( nCount < nEntries &&
944 sheet::TableFilterField aField;
945 uno::Sequence<sheet::TableFilterField>
aSeq(static_cast<sal_Int32>(nCount));
946 sheet::TableFilterField* pAry = aSeq.getArray();
955 aField.Connection = (rEntry.
eConnect ==
SC_AND) ? sheet::FilterConnection_AND :
956 sheet::FilterConnection_OR;
957 aField.Field = rEntry.
nField;
960 aField.NumericValue = rItem.
mfVal;
966 aField.Operator = sheet::FilterOperator_EQUAL;
969 aField.Operator = sheet::FilterOperator_EMPTY;
970 aField.NumericValue = 0;
974 aField.Operator = sheet::FilterOperator_NOT_EMPTY;
975 aField.NumericValue = 0;
979 case SC_LESS: aField.Operator = sheet::FilterOperator_LESS;
break;
980 case SC_GREATER: aField.Operator = sheet::FilterOperator_GREATER;
break;
981 case SC_LESS_EQUAL: aField.Operator = sheet::FilterOperator_LESS_EQUAL;
break;
982 case SC_GREATER_EQUAL: aField.Operator = sheet::FilterOperator_GREATER_EQUAL;
break;
983 case SC_NOT_EQUAL: aField.Operator = sheet::FilterOperator_NOT_EQUAL;
break;
984 case SC_TOPVAL: aField.Operator = sheet::FilterOperator_TOP_VALUES;
break;
985 case SC_BOTVAL: aField.Operator = sheet::FilterOperator_BOTTOM_VALUES;
break;
986 case SC_TOPPERC: aField.Operator = sheet::FilterOperator_TOP_PERCENT;
break;
987 case SC_BOTPERC: aField.Operator = sheet::FilterOperator_BOTTOM_PERCENT;
break;
989 OSL_FAIL(
"wrong filter enum");
990 aField.Operator = sheet::FilterOperator_EMPTY;
1000 void convertQueryEntryToUno(
const ScQueryEntry& rEntry, T& rField)
1002 rField.Connection = (rEntry.
eConnect ==
SC_AND) ? sheet::FilterConnection_AND : sheet::FilterConnection_OR;
1003 rField.Field = rEntry.
nField;
1007 case SC_EQUAL: rField.Operator = sheet::FilterOperator2::EQUAL;
break;
1008 case SC_LESS: rField.Operator = sheet::FilterOperator2::LESS;
break;
1009 case SC_GREATER: rField.Operator = sheet::FilterOperator2::GREATER;
break;
1010 case SC_LESS_EQUAL: rField.Operator = sheet::FilterOperator2::LESS_EQUAL;
break;
1011 case SC_GREATER_EQUAL: rField.Operator = sheet::FilterOperator2::GREATER_EQUAL;
break;
1012 case SC_NOT_EQUAL: rField.Operator = sheet::FilterOperator2::NOT_EQUAL;
break;
1013 case SC_TOPVAL: rField.Operator = sheet::FilterOperator2::TOP_VALUES;
break;
1014 case SC_BOTVAL: rField.Operator = sheet::FilterOperator2::BOTTOM_VALUES;
break;
1015 case SC_TOPPERC: rField.Operator = sheet::FilterOperator2::TOP_PERCENT;
break;
1016 case SC_BOTPERC: rField.Operator = sheet::FilterOperator2::BOTTOM_PERCENT;
break;
1017 case SC_CONTAINS: rField.Operator = sheet::FilterOperator2::CONTAINS;
break;
1018 case SC_DOES_NOT_CONTAIN: rField.Operator = sheet::FilterOperator2::DOES_NOT_CONTAIN;
break;
1019 case SC_BEGINS_WITH: rField.Operator = sheet::FilterOperator2::BEGINS_WITH;
break;
1021 case SC_ENDS_WITH: rField.Operator = sheet::FilterOperator2::ENDS_WITH;
break;
1024 OSL_FAIL(
"Unknown filter operator value.");
1025 rField.Operator = sheet::FilterOperator2::EMPTY;
1029 template<
typename T>
1030 void convertUnoToQueryEntry(
const T& rField,
ScQueryEntry& rEntry)
1034 rEntry.
nField = rField.Field;
1036 switch (rField.Operator)
1038 case sheet::FilterOperator2::EQUAL: rEntry.
eOp =
SC_EQUAL;
break;
1039 case sheet::FilterOperator2::LESS: rEntry.
eOp =
SC_LESS;
break;
1040 case sheet::FilterOperator2::GREATER: rEntry.
eOp =
SC_GREATER;
break;
1041 case sheet::FilterOperator2::LESS_EQUAL: rEntry.
eOp =
SC_LESS_EQUAL;
break;
1043 case sheet::FilterOperator2::NOT_EQUAL: rEntry.
eOp =
SC_NOT_EQUAL;
break;
1044 case sheet::FilterOperator2::TOP_VALUES: rEntry.
eOp =
SC_TOPVAL;
break;
1045 case sheet::FilterOperator2::BOTTOM_VALUES: rEntry.
eOp =
SC_BOTVAL;
break;
1046 case sheet::FilterOperator2::TOP_PERCENT: rEntry.
eOp =
SC_TOPPERC;
break;
1047 case sheet::FilterOperator2::BOTTOM_PERCENT: rEntry.
eOp =
SC_BOTPERC;
break;
1048 case sheet::FilterOperator2::CONTAINS: rEntry.
eOp =
SC_CONTAINS;
break;
1052 case sheet::FilterOperator2::ENDS_WITH: rEntry.
eOp =
SC_ENDS_WITH;
break;
1054 case sheet::FilterOperator2::EMPTY:
1057 case sheet::FilterOperator2::NOT_EMPTY:
1061 OSL_FAIL(
"Unknown filter operator type.");
1066 void fillQueryParam(
1068 const uno::Sequence<sheet::TableFilterField2>& aFilterFields)
1070 size_t nCount =
static_cast<size_t>(aFilterFields.getLength());
1073 const sheet::TableFilterField2* pAry = aFilterFields.getConstArray();
1075 for (
size_t i = 0;
i < nCount; ++
i)
1078 convertUnoToQueryEntry(pAry[i], rEntry);
1080 if (pAry[i].Operator != sheet::FilterOperator2::EMPTY && pAry[i].Operator != sheet::FilterOperator2::NOT_EMPTY)
1086 rItem.
mfVal = pAry[
i].NumericValue;
1103 void fillQueryParam(
1105 const uno::Sequence<sheet::TableFilterField3>& aFilterFields)
1107 size_t nCount =
static_cast<size_t>(aFilterFields.getLength());
1111 const sheet::TableFilterField3* pAry = aFilterFields.getConstArray();
1112 for (
size_t i = 0;
i < nCount; ++
i)
1115 convertUnoToQueryEntry(pAry[i], rEntry);
1117 if (pAry[i].Operator != sheet::FilterOperator2::EMPTY && pAry[i].Operator != sheet::FilterOperator2::NOT_EMPTY)
1121 const uno::Sequence<sheet::FilterFieldValue>& rVals = pAry[
i].Values;
1122 for (
const auto& rVal : rVals)
1126 aItem.
mfVal = rVal.NumericValue;
1136 rItems.push_back(aItem);
1156 while ( nCount < nEntries &&
1160 sheet::TableFilterField2 aField;
1161 uno::Sequence<sheet::TableFilterField2>
aSeq(static_cast<sal_Int32>(nCount));
1162 sheet::TableFilterField2* pAry = aSeq.getArray();
1166 convertQueryEntryToUno(rEntry, aField);
1168 bool bByEmpty =
false;
1169 if (aField.Operator == sheet::FilterOperator2::EQUAL)
1173 aField.Operator = sheet::FilterOperator2::EMPTY;
1174 aField.NumericValue = 0;
1179 aField.Operator = sheet::FilterOperator2::NOT_EMPTY;
1180 aField.NumericValue = 0;
1190 aField.NumericValue = rItem.
mfVal;
1206 while ( nCount < nEntries &&
1210 sheet::TableFilterField3 aField;
1211 uno::Sequence<sheet::TableFilterField3>
aSeq(static_cast<sal_Int32>(nCount));
1212 sheet::TableFilterField3* pAry = aSeq.getArray();
1216 convertQueryEntryToUno(rEntry, aField);
1218 bool bByEmpty =
false;
1219 if (aField.Operator == sheet::FilterOperator2::EQUAL)
1223 aField.Operator = sheet::FilterOperator2::EMPTY;
1224 aField.Values.realloc(1);
1225 aField.Values[0].NumericValue = 0;
1230 aField.Operator = sheet::FilterOperator2::NOT_EMPTY;
1231 aField.Values.realloc(1);
1232 aField.Values[0].NumericValue = 0;
1240 size_t nItemCount = rItems.size();
1241 aField.Values.realloc(nItemCount);
1243 for (
const auto& rItem : rItems)
1247 aField.Values[j].NumericValue = rItem.
mfVal;
1258 const uno::Sequence<sheet::TableFilterField>& aFilterFields )
1264 SCSIZE nCount =
static_cast<SCSIZE>(aFilterFields.getLength());
1269 const sheet::TableFilterField* pAry = aFilterFields.getConstArray();
1271 for (i=0; i<nCount; i++)
1279 rEntry.
nField = pAry[i].Field;
1281 rItem.
mfVal = pAry[i].NumericValue;
1293 case sheet::FilterOperator_EQUAL: rEntry.
eOp =
SC_EQUAL;
break;
1294 case sheet::FilterOperator_LESS: rEntry.
eOp =
SC_LESS;
break;
1295 case sheet::FilterOperator_GREATER: rEntry.
eOp =
SC_GREATER;
break;
1298 case sheet::FilterOperator_NOT_EQUAL: rEntry.
eOp =
SC_NOT_EQUAL;
break;
1299 case sheet::FilterOperator_TOP_VALUES: rEntry.
eOp =
SC_TOPVAL;
break;
1300 case sheet::FilterOperator_BOTTOM_VALUES: rEntry.
eOp =
SC_BOTVAL;
break;
1301 case sheet::FilterOperator_TOP_PERCENT: rEntry.
eOp =
SC_TOPPERC;
break;
1302 case sheet::FilterOperator_BOTTOM_PERCENT: rEntry.
eOp =
SC_BOTPERC;
break;
1303 case sheet::FilterOperator_EMPTY:
1306 case sheet::FilterOperator_NOT_EMPTY:
1310 OSL_FAIL(
"Wrong query enum");
1323 const uno::Sequence<sheet::TableFilterField2>& aFilterFields )
1333 const uno::Sequence<sheet::TableFilterField3>& aFilterFields )
1349 static uno::Reference<beans::XPropertySetInfo> aRef(
1355 const OUString& aPropertyName,
const uno::Any& aValue )
1375 aParam.
bByRow = ( eOrient != table::TableOrientation_COLUMNS );
1379 table::CellAddress aAddress;
1380 if ( aValue >>= aAddress )
1416 table::TableOrientation eOrient = aParam.
bByRow ? table::TableOrientation_ROWS :
1417 table::TableOrientation_COLUMNS;
1422 table::CellAddress aOutPos;
1525 pDocShell( pDocSh ),
1535 pDocShell( pDocSh ),
1555 if ( rHint.
GetId() == SfxHintId::Dying )
1557 else if (
auto pRefreshHint = dynamic_cast<const ScDBRangeRefreshedHint*>(&rHint) )
1562 if (aParam == pRefreshHint->GetImportParam())
1617 table::CellRangeAddress aAddress;
1624 aAddress.StartColumn = aRange.
aStart.
Col();
1625 aAddress.StartRow = aRange.
aStart.
Row();
1626 aAddress.EndColumn = aRange.
aEnd.
Col();
1627 aAddress.EndRow = aRange.
aEnd.
Row();
1640 aNewData.
SetArea( aDataArea.Sheet, static_cast<SCCOL>(aDataArea.StartColumn), static_cast<SCROW>(aDataArea.StartRow),
1641 static_cast<SCCOL>(aDataArea.EndColumn), static_cast<SCROW>(aDataArea.EndRow) );
1687 rEntry.
nField -= nFieldStart;
1708 rEntry.
nField += nFieldStart;
1740 if ( rSubTotalParam.
nField[
i] >= nFieldStart )
1741 rSubTotalParam.
nField[
i] = sal::static_int_cast<
SCCOL>( rSubTotalParam.
nField[
i] - nFieldStart );
1743 if ( rSubTotalParam.
pSubTotals[
i][j] >= nFieldStart )
1745 sal::static_int_cast<
SCCOL>( rSubTotalParam.
pSubTotals[
i][j] - nFieldStart );
1808 bool bContinue =
true;
1816 pData->
GetArea( nTab, nDummyCol,nDummyRow,nDummyCol,nDummyRow );
1817 bContinue = aFunc.
DoImport( nTab, aImportParam,
nullptr );
1826 const uno::Reference<util::XRefreshListener >& xListener )
1837 const uno::Reference<util::XRefreshListener >& xListener )
1841 for ( sal_uInt16
n=nCount;
n--; )
1844 if ( rObj == xListener )
1856 lang::EventObject
aEvent;
1858 for (uno::Reference<util::XRefreshListener> & xRefreshListener :
aRefreshListeners)
1859 xRefreshListener->refreshed( aEvent );
1887 static uno::Reference<beans::XPropertySetInfo> aRef(
1893 const OUString& aPropertyName,
const uno::Any& aValue )
1920 else if (!bAutoFilter)
1942 table::CellRangeAddress aRange;
1943 if (aValue >>= aRange)
1957 sal_Int32 nRefresh = 0;
1958 if (aValue >>= nRefresh)
2015 aRet <<= bAutoFilter;
2020 bool bIsAdvancedSource(
GetDBData_Impl()->GetAdvancedQuerySource(aRange));
2022 aRet <<= bIsAdvancedSource;
2026 table::CellRangeAddress aRange;
2071 return "ScDatabaseRangeObj";
2081 return {
"com.sun.star.sheet.DatabaseRange",
2103 if ( rHint.
GetId() == SfxHintId::Dying )
2121 if (rDBs.
empty() || nIndex >= rDBs.
size())
2125 ::std::advance(itr, nIndex);
2139 const table::CellRangeAddress& aRange )
2147 ScRange aNameRange( static_cast<SCCOL>(aRange.StartColumn), static_cast<SCROW>(aRange.StartRow), aRange.Sheet,
2148 static_cast<SCCOL>(aRange.EndColumn), static_cast<SCROW>(aRange.EndRow), aRange.Sheet );
2149 bDone = aFunc.
AddDBRange( aName, aNameRange );
2152 throw uno::RuntimeException();
2165 throw uno::RuntimeException();
2197 throw lang::IndexOutOfBoundsException();
2201 throw lang::IndexOutOfBoundsException();
2203 return uno::makeAny(xRange);
2225 throw container::NoSuchElementException();
2227 return uno::makeAny(xRange);
2242 uno::Sequence<OUString>
aSeq(rDBs.
size());
2244 for (
const auto& rDB : rDBs)
2246 aSeq[i] = rDB->GetName();
2253 return uno::Sequence<OUString>(0);
2289 if ( rHint.
GetId() == SfxHintId::Dying )
2304 throw lang::IndexOutOfBoundsException();
2307 ScRange aUnnamedRange( static_cast<SCCOL>(aRange.StartColumn), static_cast<SCROW>(aRange.StartRow), aRange.Sheet,
2308 static_cast<SCCOL>(aRange.EndColumn), static_cast<SCROW>(aRange.EndRow), aRange.Sheet );
2312 throw uno::RuntimeException();
2319 throw uno::RuntimeException();
2322 throw lang::IndexOutOfBoundsException();
2323 uno::Reference<sheet::XDatabaseRange> xRange(
2326 throw container::NoSuchElementException();
2328 return uno::makeAny(xRange);
2337 throw lang::IndexOutOfBoundsException();
static void FillProperties(css::uno::Sequence< css::beans::PropertyValue > &rSeq, const ScSortParam &rParam)
::std::vector< ScSortKeyState > maKeyState
bool bGroupActive[MAXSUBTOTAL]
active groups
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
#define SC_UNONAME_SRCTYPE
virtual sal_Bool SAL_CALL getUseColumnHeaders() override
const Link< Timer *, void > & GetRefreshHandler() const
#define SC_UNONAME_CONTHDR
SC_DLLPUBLIC ScDBCollection * GetDBCollection() const
SfxItemPropertySet aPropSet
OUString getString() const
SCCOL nField[MAXSUBTOTAL]
associated field
virtual css::uno::Sequence< css::sheet::TableFilterField2 > SAL_CALL getFilterFields2() override
std::vector< css::uno::Reference< css::util::XRefreshListener > > aRefreshListeners
virtual void SAL_CALL setSources(const css::uno::Sequence< css::table::CellRangeAddress > &aSources) override
bool bUserDef
sort user defined
static sal_Int32 GetEnumFromAny(const css::uno::Any &aAny)
SharedString intern(const OUString &rStr)
#define SC_UNONAME_COPYOUT
SC_DLLPUBLIC svl::SharedStringPool & GetSharedStringPool()
virtual void GetData(ScQueryParam &rParam) const =0
virtual void GetData(ScQueryParam &rParam) const override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
static void FillProperties(css::uno::Sequence< css::beans::PropertyValue > &rSeq, const ScImportParam &rParam)
SC_DLLPUBLIC ScDBData * GetAnonymousDBData(SCTAB nTab)
virtual void SAL_CALL refresh() override
SfxItemPropertySet aPropSet
ScDatabaseRangeObj * GetObjectByName_Impl(const OUString &aName)
std::unique_ptr< ScRefreshTimerControl > const & GetRefreshTimerControlAddress() const
void SetImportSelection(bool bSet)
void setDataSource(const OUString &_sDataSourceNameOrLocation)
virtual void PutData(const ScSubTotalParam &rParam)=0
std::unique_ptr< ContentProperties > pData
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 Index) override
css::lang::Locale aCollatorLocale
virtual css::uno::Type SAL_CALL getElementType() override
virtual void SAL_CALL addNew(const css::uno::Sequence< css::sheet::SubTotalColumn > &aSubTotalColumns, sal_Int32 nGroupColumn) override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
SC_DLLPUBLIC void GetSortParam(ScSortParam &rSortParam) const
void GetSubTotalParam(ScSubTotalParam &rSubTotalParam) const
virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override
virtual css::uno::Type SAL_CALL getElementType() override
#define SCLINKTARGET_SERVICE
virtual ~ScSubTotalDescriptor() override
virtual ~ScFilterDescriptor() override
void SetRefreshDelay(sal_uLong nSeconds)
#define STR_DB_LOCAL_NONAME
WeakReference< XInterface > mxParent
virtual css::uno::Reference< css::sheet::XSubTotalDescriptor > SAL_CALL getSubTotalDescriptor() override
virtual void SAL_CALL setGroupColumn(sal_Int32 nGroupColumn) override
void SetDoSize(bool bSet)
SC_DLLPUBLIC bool ApplyFlagsTab(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, ScMF nFlags)
ScRangeFilterDescriptor(ScDocShell *pDocSh, ScDatabaseRangeObj *pPar)
QueryItemsType & GetQueryItems()
bool DoImport(SCTAB nTab, const ScImportParam &rParam, const svx::ODataAccessDescriptor *pDescriptor)
virtual sal_Bool SAL_CALL hasByName(const OUString &aName) override
#define SC_UNONAME_DBNAME
void SetAreas(std::unique_ptr< ScArea[]> pAreas, sal_uInt16 nCount)
virtual void GetData(ScSubTotalParam &rParam) const override
ScConsolidationDescriptor()
sal_uInt16 nDataAreaCount
SfxItemPropertySet aPropSet
#define SC_UNONAME_USEREGEX
virtual css::uno::Any SAL_CALL getByTable(sal_Int32 nTab) override
std::unique_ptr< ScArea[]> pDataAreas
virtual ~ScUnnamedDatabaseRangesObj() override
bool IsQueryByEmpty() const
bool bPagebreak
page break at change of group
void SetKeepFmt(bool bSet)
virtual css::uno::Sequence< css::sheet::TableFilterField > SAL_CALL getFilterFields() override
ScQueryParam aStoredParam
virtual ~ScRangeSubTotalDescriptor() override
void SetQueryParam(const ScQueryParam &rParam)
virtual void SAL_CALL setFilterFields3(const css::uno::Sequence< css::sheet::TableFilterField3 > &aFilterFields) override
virtual ~ScConsolidationDescriptor() override
#define SC_UNONAME_ISSORTCOLUMNS
void GetQueryParam(ScQueryParam &rQueryParam) const
#define SC_UNONAME_FORMATS
#define SC_UNONAME_OUTPOS
virtual css::sheet::GeneralFunction SAL_CALL getFunction() override
#define SC_UNONAME_MAXFLD
sal_uInt16 nUserIndex
index into list
#define SC_UNONAME_MOVCELLS
bool RepeatDB(const OUString &rDBName, bool bApi, bool bIsUnnamed, SCTAB aTab=0)
virtual void SAL_CALL setName(const OUString &aName) override
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 ...
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
SC_DLLPUBLIC SCTAB GetTableCount() const
ScUnnamedDatabaseRangesObj(ScDocShell *pDocSh)
virtual OUString SAL_CALL getName() override
#define SC_UNONAME_KEEPFORM
UNO3_GETIMPLEMENTATION_IMPL(ScSubTotalDescriptorBase)
#define SC_UNONAME_BINDFMT
virtual void SAL_CALL setInsertLinks(sal_Bool bInsertLinks) override
SC_DLLPUBLIC SCSIZE GetEntryCount() const
virtual sal_Int32 SAL_CALL getCount() override
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
SC_DLLPUBLIC const ScQueryEntry & GetEntry(SCSIZE n) const
SC_DLLPUBLIC void SetQueryParam(const ScQueryParam &rQueryParam)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
virtual ~ScDatabaseRangesObj() override
virtual void PutData(const ScQueryParam &rParam) override
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 Index) override
#define SC_UNONAME_UINDEX
const OUString & GetName() const
#define SC_UNONAME_CONRES
bool DeleteDBRange(const OUString &rName)
virtual sal_Bool SAL_CALL hasElements() override
void SetSheetDesc(const ScSheetSourceDesc &rDesc)
ScSubTotalFieldObj(ScSubTotalDescriptorBase *pDesc, sal_uInt16 nP)
sal_uInt16 GetIndex() const
virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getSortDescriptor() override
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
ScRangeSubTotalDescriptor(ScDatabaseRangeObj *pPar)
virtual sal_Bool SAL_CALL getInsertLinks() override
SCCOL * pSubTotals[MAXSUBTOTAL]
array of columns to be calculated
#define SC_UNONAME_USEFLTCRT
const ScQueryParam & GetQueryParam() const
void SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
virtual ~ScFilterDescriptorBase() override
static const SfxItemPropertyMapEntry * lcl_GetSubTotalPropertyMap()
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
ScSubTotalDescriptorBase()
virtual void PutData(const ScQueryParam &rParam) override
void SetRefreshHandler(const Link< Timer *, void > &rLink)
ScSubTotalFunc * pFunctions[MAXSUBTOTAL]
array of associated functions
SCCOL nSubTotals[MAXSUBTOTAL]
number of SubTotals
virtual void SAL_CALL clear() override
static tools::Long GetPropertyCount()
#define SC_UNONAME_ENUSLIST
bool IsQueryByNonEmpty() const
ScFilterDescriptorBase(ScDocShell *pDocShell)
bool RenameDBRange(const OUString &rOld, const OUString &rNew)
virtual css::uno::Sequence< css::table::CellRangeAddress > SAL_CALL getSources() override
SC_DLLPUBLIC void SetAdvancedQuerySource(const ScRange *pSource)
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
#define SC_UNONAME_FROMSELECT
virtual void SAL_CALL setUseColumnHeaders(sal_Bool bUseColumnHeaders) override
const OUString & GetName() const
const SfxItemPropertyMap & getPropertyMap() const
void GetImportParam(ScImportParam &rImportParam) const
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
ScSubTotalParam aStoredParam
#define SC_UNONAME_AUTOFLT
void SetQueryParam(const ScQueryParam &rQueryParam)
css::uno::Type const & get()
#define SC_SIMPLE_SERVICE_INFO(ClassName, ClassNameAscii, ServiceAscii)
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
#define SC_UNONAME_USINDEX
#define SC_UNONAME_TOTALSROW
void PostPaint(SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab, SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab, PaintPartFlags nPart, sal_uInt16 nExtFlags=0)
void GetArea(SCTAB &rTab, SCCOL &rCol1, SCROW &rRow1, SCCOL &rCol2, SCROW &rRow2) const
void SetHeader(bool bHasH)
svl::SharedString maString
static void FillSortParam(ScSortParam &rParam, const css::uno::Sequence< css::beans::PropertyValue > &rSeq)
static css::sheet::GeneralFunction SubTotalToGeneral(ScSubTotalFunc eSubTotal)
#define SC_UNONAME_SRCOBJ
#define SC_IMPL_DUMMY_PROPERTY_LISTENER(ClassName)
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
rtl::Reference< ScDatabaseRangeObj > mxParent
void GetSubTotalParam(ScSubTotalParam &rSubTotalParam) const
ScDBData * findByUpperName(const OUString &rName)
void SetStripData(bool bSet)
void AddUnoObject(SfxListener &rObject)
ScDataPilotFilterDescriptor(ScDocShell *pDocSh, ScDataPilotDescriptorBase *pPar)
#define SC_UNONAME_ISCASE
void SetSubTotalParam(const ScSubTotalParam &rSubTotalParam)
virtual sal_Int32 SAL_CALL getGroupColumn() override
ScSubTotalFieldObj * GetObjectByIndex_Impl(sal_uInt16 nIndex)
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
virtual css::table::CellAddress SAL_CALL getStartOutputPosition() override
Stores global named database ranges.
virtual css::table::CellRangeAddress SAL_CALL getDataArea() override
virtual void SAL_CALL setStartOutputPosition(const css::table::CellAddress &aStartOutputPosition) override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
virtual void PutData(const ScQueryParam &rParam) override
virtual void SAL_CALL setByTable(const css::table::CellRangeAddress &aRange) override
virtual css::uno::Sequence< css::sheet::SubTotalColumn > SAL_CALL getSubTotalColumns() override
#define SC_UNONAME_ORIENT
#define SC_UNONAME_ISULIST
rtl::Reference< ScDatabaseRangeObj > mxParent
virtual void SAL_CALL setFilterFields2(const css::uno::Sequence< css::sheet::TableFilterField2 > &aFilterFields) override
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
bool has(DataAccessDescriptorProperty _eWhich) const
ScDatabaseRangesObj(ScDocShell *pDocSh)
static void FillImportParam(ScImportParam &rParam, const css::uno::Sequence< css::beans::PropertyValue > &rSeq)
virtual void SAL_CALL setDataArea(const css::table::CellRangeAddress &aDataArea) override
virtual ~ScDatabaseRangeObj() override
ScConsolidateParam aParam
ScDBData * GetDBData_Impl() const
void SetRefreshControl(std::unique_ptr< ScRefreshTimerControl > const *pp)
void SetParam(const ScQueryParam &rNew)
virtual ~ScRangeFilterDescriptor() override
sal_uInt16 GetSortKeyCount() const
#define SC_UNO_LINKDISPBIT
virtual void SAL_CALL setFunction(css::sheet::GeneralFunction nFunction) override
virtual css::uno::Reference< css::table::XCellRange > SAL_CALL getReferredCells() override
virtual void SAL_CALL removeRefreshListener(const css::uno::Reference< css::util::XRefreshListener > &l) override
virtual ~ScSubTotalFieldObj() override
static const SfxItemPropertyMapEntry * lcl_GetFilterPropertyMap()
#define SC_UNONAME_ISNATIVE
SC_DLLPUBLIC bool RemoveFlagsTab(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, ScMF nFlags)
bool bIncludePattern
sort formats
really derive cell from range?
const ScSheetSourceDesc * GetSheetDesc() const
DBsType::const_iterator const_iterator
void RemoveUnoObject(SfxListener &rObject)
virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getImportDescriptor() override
static SC_DLLPUBLIC const CharClass * getCharClassPtr()
#define SC_UNONAME_ISUSER
Sequence< sal_Int8 > aSeq
const ScDocument & GetDocument() const
virtual void SAL_CALL removeByName(const OUString &aName) override
SC_DLLPUBLIC void GetQueryParam(ScQueryParam &rQueryParam) const
bool HasImportSelection() const
static tools::Long GetPropertyCount()
SortAscending needs to get out of the SheetSortDescriptor service description.
void SetTotals(bool bTotals)
OUString aCollatorAlgorithm
#define SC_UNONAME_ENABSORT
virtual void SAL_CALL setSubTotalColumns(const css::uno::Sequence< css::sheet::SubTotalColumn > &aSubTotalColumns) override
std::vector< Item > QueryItemsType
ScDatabaseRangeObj(ScDocShell *pDocSh, const OUString &rNm)
void SetSubTotalParam(const ScSubTotalParam &rSubTotalParam)
#define SC_UNONAME_SORTASC
static void FillApiRange(css::table::CellRangeAddress &rApiRange, const ScRange &rScRange)
void SetParam(const ScSubTotalParam &rNew)
virtual sal_Bool SAL_CALL hasElements() override
void ModifyDBData(const ScDBData &rNewData)
SC_DLLPUBLIC bool GetAdvancedQuerySource(ScRange &rSource) const
#define SC_UNONAME_SORTFLD
virtual void PutData(const ScSubTotalParam &rParam) override
virtual sal_Bool SAL_CALL getUseRowHeaders() override
virtual void PutData(const ScSubTotalParam &rParam) override
virtual ~ScSubTotalDescriptorBase() override
virtual css::uno::Reference< css::sheet::XSheetFilterDescriptor > SAL_CALL getFilterDescriptor() override
ScDatabaseRangeObj * GetObjectByIndex_Impl(size_t nIndex)
virtual void GetData(ScSubTotalParam &rParam) const =0
virtual void GetData(ScSubTotalParam &rParam) const override
static bool GetBoolFromAny(const css::uno::Any &aAny)
virtual void SAL_CALL addRefreshListener(const css::uno::Reference< css::util::XRefreshListener > &l) override
static void FillScRange(ScRange &rScRange, const css::table::CellRangeAddress &rApiRange)
bool AddDBRange(const OUString &rName, const ScRange &rRange)
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
#define SC_UNONAME_FLTCRT
virtual css::uno::Sequence< css::sheet::TableFilterField3 > SAL_CALL getFilterFields3() override
virtual sal_Int32 SAL_CALL getCount() override
void SetParam(const ScConsolidateParam &rNew)
#define SC_UNO_LINKDISPNAME
static const SfxItemPropertyMapEntry * lcl_GetDBRangePropertyMap()
virtual void SAL_CALL addNewByName(const OUString &aName, const css::table::CellRangeAddress &aRange) override
This class contains authoritative information on the internal reference used as the data source for d...
virtual ~ScDataPilotFilterDescriptor() override
virtual void GetData(ScQueryParam &rParam) const override
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
rtl::Reference< ScSubTotalDescriptorBase > xParent
#define SC_UNONAME_SAVEOUT
virtual void PutData(const ScQueryParam &rParam)=0
#define SC_UNONAME_INSBRK
virtual void SAL_CALL setFilterFields(const css::uno::Sequence< css::sheet::TableFilterField > &aFilterFields) override
bool bAscending
sort ascending
Each instance of this struct represents a single filtering criteria.
#define SC_UNONAME_COLLALG
void SetQueryByNonEmpty()
#define SC_UNONAME_COLLLOC
utl::SearchParam::SearchType eSearchType
virtual void SAL_CALL setUseRowHeaders(sal_Bool bUseRowHeaders) override
#define SC_UNONAME_SKIPDUP
rtl::Reference< ScDataPilotDescriptorBase > mxParent
#define SC_UNONAME_TOKENINDEX
static SC_DLLPUBLIC ScSubTotalFunc toSubTotalFunc(ScGeneralFunction eGenFunc)
void SetAutoFilter(bool bSet)
bool any2bool(const css::uno::Any &rAny)
virtual css::uno::Any SAL_CALL getByName(const OUString &aName) override
virtual void GetData(ScQueryParam &rParam) const override
virtual sal_Bool SAL_CALL hasByTable(sal_Int32 nTab) override
#define SC_UNONAME_REFPERIOD
#define SC_UNONAME_STRIPDAT