View | Details | Raw Unified | Return to issue 77677
Collapse All | Expand All

(-)sc.clean/inc/datauno.hxx (-1 / +23 lines)
Lines 51-56 Link Here
51
#ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD_HPP_
51
#ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD_HPP_
52
#include <com/sun/star/sheet/TableFilterField.hpp>
52
#include <com/sun/star/sheet/TableFilterField.hpp>
53
#endif
53
#endif
54
#ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELDMULTISTRING_HPP_
55
#include <com/sun/star/sheet/TableMultiStringFilterField.hpp>
56
#endif
54
#ifndef _COM_SUN_STAR_SHEET_GENERALFUNCTION_HPP_
57
#ifndef _COM_SUN_STAR_SHEET_GENERALFUNCTION_HPP_
55
#include <com/sun/star/sheet/GeneralFunction.hpp>
58
#include <com/sun/star/sheet/GeneralFunction.hpp>
56
#endif
59
#endif
Lines 60-65 Link Here
60
#ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERDESCRIPTOR_HPP_
63
#ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERDESCRIPTOR_HPP_
61
#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
64
#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
62
#endif
65
#endif
66
#ifndef _COM_SUN_STAR_SHEET_XEXTENDEDSHEETFILTERDESCRIPTOR_HPP_
67
#include <com/sun/star/sheet/XExtendedSheetFilterDescriptor.hpp>
68
#endif
63
#ifndef _COM_SUN_STAR_SHEET_XCONSOLIDATIONDESCRIPTOR_HPP_
69
#ifndef _COM_SUN_STAR_SHEET_XCONSOLIDATIONDESCRIPTOR_HPP_
64
#include <com/sun/star/sheet/XConsolidationDescriptor.hpp>
70
#include <com/sun/star/sheet/XConsolidationDescriptor.hpp>
65
#endif
71
#endif
Lines 113-124 Link Here
113
#include <cppuhelper/implbase6.hxx>
119
#include <cppuhelper/implbase6.hxx>
114
#endif
120
#endif
115
121
122
#include <memory>
123
116
class ScDBData;
124
class ScDBData;
117
class ScDocShell;
125
class ScDocShell;
118
126
119
class ScSubTotalFieldObj;
127
class ScSubTotalFieldObj;
120
class ScDatabaseRangeObj;
128
class ScDatabaseRangeObj;
121
class ScDataPilotDescriptorBase;
129
class ScDataPilotDescriptorBase;
130
class ScExtendedFilterDescriptor;
122
131
123
struct ScSortParam;
132
struct ScSortParam;
124
133
Lines 397-404 Link Here
397
406
398
//	to uno, all three look the same
407
//	to uno, all three look the same
399
408
400
class ScFilterDescriptorBase : public cppu::WeakImplHelper3<
409
class ScFilterDescriptorBase : public cppu::WeakImplHelper4<
401
									com::sun::star::sheet::XSheetFilterDescriptor,
410
									com::sun::star::sheet::XSheetFilterDescriptor,
411
                                    com::sun::star::sheet::XExtendedSheetFilterDescriptor,
402
									com::sun::star::beans::XPropertySet,
412
									com::sun::star::beans::XPropertySet,
403
									com::sun::star::lang::XServiceInfo >,
413
									com::sun::star::lang::XServiceInfo >,
404
						       public SfxListener
414
						       public SfxListener
Lines 406-411 Link Here
406
private:
416
private:
407
	SfxItemPropertySet		aPropSet;
417
	SfxItemPropertySet		aPropSet;
408
    ScDocShell*             pDocSh;
418
    ScDocShell*             pDocSh;
419
    ::std::auto_ptr<ScExtendedFilterDescriptor> pExtDescriptor;
409
420
410
public:
421
public:
411
							ScFilterDescriptorBase(ScDocShell* pDocShell);
422
							ScFilterDescriptorBase(ScDocShell* pDocShell);
Lines 425-430 Link Here
425
								::com::sun::star::sheet::TableFilterField >& aFilterFields )
436
								::com::sun::star::sheet::TableFilterField >& aFilterFields )
426
									throw(::com::sun::star::uno::RuntimeException);
437
									throw(::com::sun::star::uno::RuntimeException);
427
438
439
    // XExtendedSheetFilterDescriptor
440
    virtual void SAL_CALL begin() throw(::com::sun::star::uno::RuntimeException);
441
442
    virtual void SAL_CALL commit() throw(::com::sun::star::uno::RuntimeException);
443
444
    virtual void SAL_CALL addFilterField( const ::com::sun::star::sheet::TableFilterField& aField )
445
        throw(::com::sun::star::uno::RuntimeException);
446
447
    virtual void SAL_CALL addMultiStringFilterField( const ::com::sun::star::sheet::TableMultiStringFilterField& aField )
448
        throw(::com::sun::star::uno::RuntimeException);
449
428
							// XPropertySet
450
							// XPropertySet
429
	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
451
	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
430
							SAL_CALL getPropertySetInfo()
452
							SAL_CALL getPropertySetInfo()
(-)sc.clean/inc/dbcolect.hxx (+1 lines)
Lines 113-118 Link Here
113
	String*			pQueryStr[MAXQUERY];
113
	String*			pQueryStr[MAXQUERY];
114
	double			nQueryVal[MAXQUERY];
114
	double			nQueryVal[MAXQUERY];
115
	ScQueryConnect  eQueryConnect[MAXQUERY];
115
	ScQueryConnect  eQueryConnect[MAXQUERY];
116
    ScHashOUStringSet aStrValues[MAXQUERY];
116
	BOOL			bIsAdvanced;		// TRUE if created by advanced filter
117
	BOOL			bIsAdvanced;		// TRUE if created by advanced filter
117
	ScRange			aAdvSource;			// source range
118
	ScRange			aAdvSource;			// source range
118
	// SubTotalParam
119
	// SubTotalParam
(-)sc.clean/inc/global.hxx (+6 lines)
Lines 58-63 Link Here
58
#include "scdllapi.h"
58
#include "scdllapi.h"
59
#endif
59
#endif
60
60
61
#include <hash_set>
62
61
class ImageList;
63
class ImageList;
62
class Bitmap;
64
class Bitmap;
63
class SfxItemSet;
65
class SfxItemSet;
Lines 887-892 Link Here
887
	class TextSearch;
889
	class TextSearch;
888
}
890
}
889
891
892
typedef ::std::hash_set< ::rtl::OUString, ::rtl::OUStringHash, ::std::equal_to<rtl::OUString> > ScHashOUStringSet;
893
890
struct ScQueryEntry
894
struct ScQueryEntry
891
{
895
{
892
	BOOL			bDoQuery;
896
	BOOL			bDoQuery;
Lines 899-904 Link Here
899
	utl::SearchParam*	pSearchParam;		// falls RegExp, nicht gespeichert
903
	utl::SearchParam*	pSearchParam;		// falls RegExp, nicht gespeichert
900
	utl::TextSearch*	pSearchText;		// falls RegExp, nicht gespeichert
904
	utl::TextSearch*	pSearchText;		// falls RegExp, nicht gespeichert
901
905
906
    ScHashOUStringSet aStrValues;
907
902
	ScQueryEntry();
908
	ScQueryEntry();
903
	ScQueryEntry(const ScQueryEntry& r);
909
	ScQueryEntry(const ScQueryEntry& r);
904
	~ScQueryEntry();
910
	~ScQueryEntry();
(-)sc.clean/source/core/data/global2.cxx (-1 / +6 lines)
Lines 176-181 Link Here
176
	pStr			= new String(*r.pStr);
176
	pStr			= new String(*r.pStr);
177
	pSearchParam	= NULL;
177
	pSearchParam	= NULL;
178
	pSearchText		= NULL;
178
	pSearchText		= NULL;
179
    aStrValues = r.aStrValues;
179
}
180
}
180
181
181
ScQueryEntry::~ScQueryEntry()
182
ScQueryEntry::~ScQueryEntry()
Lines 205-210 Link Here
205
	pSearchParam	= NULL;
206
	pSearchParam	= NULL;
206
	pSearchText		= NULL;
207
	pSearchText		= NULL;
207
208
209
    aStrValues = r.aStrValues;
210
208
	return *this;
211
	return *this;
209
}
212
}
210
213
Lines 224-229 Link Here
224
	}
227
	}
225
	pSearchParam	= NULL;
228
	pSearchParam	= NULL;
226
	pSearchText		= NULL;
229
	pSearchText		= NULL;
230
    aStrValues.clear();
227
}
231
}
228
232
229
BOOL ScQueryEntry::operator==( const ScQueryEntry& r ) const
233
BOOL ScQueryEntry::operator==( const ScQueryEntry& r ) const
Lines 234-240 Link Here
234
		&& eConnect			== r.eConnect
238
		&& eConnect			== r.eConnect
235
		&& nField			== r.nField
239
		&& nField			== r.nField
236
		&& nVal				== r.nVal
240
		&& nVal				== r.nVal
237
		&& *pStr			== *r.pStr;
241
		&& *pStr			== *r.pStr
242
        && aStrValues == r.aStrValues;
238
	//! pSearchParam und pSearchText nicht vergleichen
243
	//! pSearchParam und pSearchText nicht vergleichen
239
}
244
}
240
245
(-)sc.clean/source/core/data/table3.cxx (-70 / +88 lines)
Lines 1036-1117 Link Here
1036
            else
1036
            else
1037
                GetInputString( static_cast<SCCOL>(rEntry.nField), nRow, aCellStr );
1037
                GetInputString( static_cast<SCCOL>(rEntry.nField), nRow, aCellStr );
1038
1038
1039
            BOOL bRealRegExp = (rParam.bRegExp && ((rEntry.eOp == SC_EQUAL)
1039
            if ( !rEntry.aStrValues.empty() )
1040
                || (rEntry.eOp == SC_NOT_EQUAL)));
1041
            BOOL bTestRegExp = (pbTestEqualCondition && rParam.bRegExp
1042
                && ((rEntry.eOp == SC_LESS_EQUAL)
1043
                    || (rEntry.eOp == SC_GREATER_EQUAL)));
1044
            if ( bRealRegExp || bTestRegExp )
1045
            {
1040
            {
1046
				xub_StrLen nStart = 0;
1041
                // Filter by individual string values.
1047
				xub_StrLen nEnd   = aCellStr.Len();
1042
                rtl::OUString aCellStr2(aCellStr);
1048
                BOOL bMatch = (BOOL) rEntry.GetSearchTextPtr( rParam.bCaseSens )
1043
                ScHashOUStringSet::const_iterator pos = rEntry.aStrValues.find(aCellStr2);
1049
					->SearchFrwrd( aCellStr, &nStart, &nEnd );
1044
                if (pos == rEntry.aStrValues.end())
1050
				// from 614 on, nEnd is behind the found text
1045
                    bOk = FALSE;
1051
                if ( bMatch && bMatchWholeCell
1052
						&& (nStart != 0 || nEnd != aCellStr.Len()) )
1053
                    bMatch = FALSE;    // RegExp must match entire cell string
1054
                if ( bRealRegExp )
1055
                    bOk = ((rEntry.eOp == SC_NOT_EQUAL) ? !bMatch : bMatch);
1056
                else
1046
                else
1057
                    bTestEqual = bMatch;
1047
                    bOk = TRUE;
1058
            }
1048
            }
1059
            if ( !bRealRegExp )
1049
            else
1060
			{
1050
            {
1061
				if ( rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL )
1051
                rtl::OUString aCellStr2(aCellStr);
1062
				{
1052
                BOOL bRealRegExp = (rParam.bRegExp && ((rEntry.eOp == SC_EQUAL)
1063
                    if ( !rEntry.bQueryByString && rEntry.pStr->Len() == 0 )
1053
                    || (rEntry.eOp == SC_NOT_EQUAL)));
1054
                BOOL bTestRegExp = (pbTestEqualCondition && rParam.bRegExp
1055
                    && ((rEntry.eOp == SC_LESS_EQUAL)
1056
                        || (rEntry.eOp == SC_GREATER_EQUAL)));
1057
                if ( bRealRegExp || bTestRegExp )
1058
                {
1059
                    xub_StrLen nStart = 0;
1060
                    xub_StrLen nEnd   = aCellStr.Len();
1061
                    BOOL bMatch = (BOOL) rEntry.GetSearchTextPtr( rParam.bCaseSens )
1062
                        ->SearchFrwrd( aCellStr, &nStart, &nEnd );
1063
                    // from 614 on, nEnd is behind the found text
1064
                    if ( bMatch && bMatchWholeCell
1065
                            && (nStart != 0 || nEnd != aCellStr.Len()) )
1066
                        bMatch = FALSE;    // RegExp must match entire cell string
1067
                    if ( bRealRegExp )
1068
                        bOk = ((rEntry.eOp == SC_NOT_EQUAL) ? !bMatch : bMatch);
1069
                    else
1070
                        bTestEqual = bMatch;
1071
                }
1072
                if ( !bRealRegExp )
1073
                {
1074
                    if ( rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL )
1064
                    {
1075
                    {
1065
                        // #i18374# When used from functions (match, countif, sumif, vlookup, hlookup, lookup),
1076
                        if ( !rEntry.bQueryByString && rEntry.pStr->Len() == 0 )
1066
                        // the query value is assigned directly, and the string is empty. In that case,
1077
                        {
1067
                        // don't find any string (isEqual would find empty string results in formula cells).
1078
                            // #i18374# When used from functions (match, countif, sumif, vlookup, hlookup, lookup),
1068
                        bOk = FALSE;
1079
                            // the query value is assigned directly, and the string is empty. In that case,
1080
                            // don't find any string (isEqual would find empty string results in formula cells).
1081
                            bOk = FALSE;
1082
                        }
1083
                        else if ( bMatchWholeCell )
1084
                            bOk = pTransliteration->isEqual( aCellStr, *rEntry.pStr );
1085
                        else
1086
                        {
1087
                            ::com::sun::star::uno::Sequence< sal_Int32 > xOff;
1088
                            String aCell( pTransliteration->transliterate(
1089
                                aCellStr, ScGlobal::eLnge, 0, aCellStr.Len(),
1090
                                &xOff ) );
1091
                            String aQuer( pTransliteration->transliterate(
1092
                                *rEntry.pStr, ScGlobal::eLnge, 0, rEntry.pStr->Len(),
1093
                                &xOff ) );
1094
                            bOk = (aCell.Search( aQuer ) != STRING_NOTFOUND);
1095
                        }
1096
                        if ( rEntry.eOp == SC_NOT_EQUAL )
1097
                            bOk = !bOk;
1069
                    }
1098
                    }
1070
                    else if ( bMatchWholeCell )
1099
                    else
1071
                        bOk = pTransliteration->isEqual( aCellStr, *rEntry.pStr );
1100
                    {   // use collator here because data was probably sorted
1072
					else
1101
                        sal_Int32 nCompare = pCollator->compareString(
1073
					{
1102
                            aCellStr, *rEntry.pStr );
1074
                        ::com::sun::star::uno::Sequence< sal_Int32 > xOff;
1103
                        switch (rEntry.eOp)
1075
                        String aCell( pTransliteration->transliterate(
1076
                            aCellStr, ScGlobal::eLnge, 0, aCellStr.Len(),
1077
                            &xOff ) );
1078
                        String aQuer( pTransliteration->transliterate(
1079
                            *rEntry.pStr, ScGlobal::eLnge, 0, rEntry.pStr->Len(),
1080
                            &xOff ) );
1081
                        bOk = (aCell.Search( aQuer ) != STRING_NOTFOUND);
1082
					}
1083
					if ( rEntry.eOp == SC_NOT_EQUAL )
1084
						bOk = !bOk;
1085
				}
1086
				else
1087
                {   // use collator here because data was probably sorted
1088
					sal_Int32 nCompare = pCollator->compareString(
1089
						aCellStr, *rEntry.pStr );
1090
					switch (rEntry.eOp)
1091
					{
1092
						case SC_LESS :
1093
                            bOk = (nCompare < 0);
1094
							break;
1095
						case SC_GREATER :
1096
                            bOk = (nCompare > 0);
1097
							break;
1098
						case SC_LESS_EQUAL :
1099
                            bOk = (nCompare <= 0);
1100
                            if ( bOk && pbTestEqualCondition && !bTestEqual )
1101
                                bTestEqual = (nCompare == 0);
1102
							break;
1103
						case SC_GREATER_EQUAL :
1104
                            bOk = (nCompare >= 0);
1105
                            if ( bOk && pbTestEqualCondition && !bTestEqual )
1106
                                bTestEqual = (nCompare == 0);
1107
							break;
1108
                        default:
1109
                        {
1104
                        {
1110
                            // added to avoid warnings
1105
                            case SC_LESS :
1106
                                bOk = (nCompare < 0);
1107
                                break;
1108
                            case SC_GREATER :
1109
                                bOk = (nCompare > 0);
1110
                                break;
1111
                            case SC_LESS_EQUAL :
1112
                                bOk = (nCompare <= 0);
1113
                                if ( bOk && pbTestEqualCondition && !bTestEqual )
1114
                                    bTestEqual = (nCompare == 0);
1115
                                break;
1116
                            case SC_GREATER_EQUAL :
1117
                                bOk = (nCompare >= 0);
1118
                                if ( bOk && pbTestEqualCondition && !bTestEqual )
1119
                                    bTestEqual = (nCompare == 0);
1120
                                break;
1121
                            default:
1122
                            {
1123
                                // added to avoid warnings
1124
                            }
1111
                        }
1125
                        }
1112
					}
1126
                    }
1113
				}
1127
                }
1114
			}
1128
            }
1115
		}
1129
		}
1116
        else if (rParam.bMixedComparison)
1130
        else if (rParam.bMixedComparison)
1117
        {
1131
        {
Lines 1325-1331 Link Here
1325
	{
1339
	{
1326
		ScQueryEntry& rEntry = rParamOrg.GetEntry(i);
1340
		ScQueryEntry& rEntry = rParamOrg.GetEntry(i);
1327
1341
1328
		if ( rEntry.bQueryByString )
1342
        if ( !rEntry.aStrValues.empty() )
1343
        {
1344
            // Do nothing.
1345
        }
1346
		else if ( rEntry.bQueryByString )
1329
		{
1347
		{
1330
			sal_uInt32 nIndex = 0;
1348
			sal_uInt32 nIndex = 0;
1331
			rEntry.bQueryByString = !(pDocument->GetFormatTable()->
1349
			rEntry.bQueryByString = !(pDocument->GetFormatTable()->
(-)sc.clean/source/core/tool/dbcolect.cxx (+3 lines)
Lines 544-549 Link Here
544
		*pQueryStr[i]		= *rData.pQueryStr[i];
544
		*pQueryStr[i]		= *rData.pQueryStr[i];
545
		nQueryVal[i]		= rData.nQueryVal[i];
545
		nQueryVal[i]		= rData.nQueryVal[i];
546
		eQueryConnect[i]	= rData.eQueryConnect[i];
546
		eQueryConnect[i]	= rData.eQueryConnect[i];
547
        aStrValues[i] = rData.aStrValues[i];
547
	}
548
	}
548
	for (i=0; i<MAXSUBTOTAL; i++)
549
	for (i=0; i<MAXSUBTOTAL; i++)
549
	{
550
	{
Lines 812-817 Link Here
812
		*rEntry.pStr = *pQueryStr[i];
813
		*rEntry.pStr = *pQueryStr[i];
813
		rEntry.nVal = nQueryVal[i];
814
		rEntry.nVal = nQueryVal[i];
814
		rEntry.eConnect = eQueryConnect[i];
815
		rEntry.eConnect = eQueryConnect[i];
816
        rEntry.aStrValues = aStrValues[i];
815
	}
817
	}
816
}
818
}
817
819
Lines 843-848 Link Here
843
		*pQueryStr[i] = *rEntry.pStr;
845
		*pQueryStr[i] = *rEntry.pStr;
844
		nQueryVal[i] = rEntry.nVal;
846
		nQueryVal[i] = rEntry.nVal;
845
		eQueryConnect[i] = rEntry.eConnect;
847
		eQueryConnect[i] = rEntry.eConnect;
848
        aStrValues[i] = rEntry.aStrValues;
846
	}
849
	}
847
}
850
}
848
851
(-)sc.clean/source/ui/dbgui/filtdlg.cxx (+4 lines)
Lines 586-591 Link Here
586
            rEntry.nField = nField ? (theQueryData.nCol1 +
586
            rEntry.nField = nField ? (theQueryData.nCol1 +
587
                    static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
587
                    static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
588
			rEntry.eOp	  = eOp;
588
			rEntry.eOp	  = eOp;
589
590
            // Disable multi-string matching until we have the UI implemented.
591
            // TODO: Implement it in the UI (kohei).
592
            rEntry.aStrValues.clear();
589
		}
593
		}
590
	}
594
	}
591
595
(-)sc.clean/source/ui/unoobj/datauno.cxx (-1 / +41 lines)
Lines 52-57 Link Here
52
#include <com/sun/star/sheet/DataImportMode.hpp>
52
#include <com/sun/star/sheet/DataImportMode.hpp>
53
53
54
#include "datauno.hxx"
54
#include "datauno.hxx"
55
#include "extfilterdescriptor.hxx"
55
#include "dapiuno.hxx"
56
#include "dapiuno.hxx"
56
#include "cellsuno.hxx"
57
#include "cellsuno.hxx"
57
#include "miscuno.hxx"
58
#include "miscuno.hxx"
Lines 1094-1100 Link Here
1094
1095
1095
ScFilterDescriptorBase::ScFilterDescriptorBase(ScDocShell* pDocShell) :
1096
ScFilterDescriptorBase::ScFilterDescriptorBase(ScDocShell* pDocShell) :
1096
	aPropSet( lcl_GetFilterPropertyMap() ),
1097
	aPropSet( lcl_GetFilterPropertyMap() ),
1097
    pDocSh(pDocShell)
1098
    pDocSh(pDocShell),
1099
    pExtDescriptor(NULL)
1098
{
1100
{
1099
	if (pDocSh)
1101
	if (pDocSh)
1100
		pDocSh->GetDocument()->AddUnoObject(*this);
1102
		pDocSh->GetDocument()->AddUnoObject(*this);
Lines 1263-1268 Link Here
1263
	PutData(aParam);
1265
	PutData(aParam);
1264
}
1266
}
1265
1267
1268
void SAL_CALL ScFilterDescriptorBase::begin() throw(uno::RuntimeException)
1269
{
1270
	ScUnoGuard aGuard;
1271
    if ( !pDocSh )
1272
        return;
1273
1274
    pExtDescriptor.reset(new ScExtendedFilterDescriptor(this, *pDocSh->GetDocument()) );
1275
}
1276
1277
void SAL_CALL ScFilterDescriptorBase::commit() throw(uno::RuntimeException)
1278
{
1279
	ScUnoGuard aGuard;
1280
    if ( !pExtDescriptor.get() )
1281
        return;
1282
1283
    pExtDescriptor->commit();
1284
    pExtDescriptor.reset(NULL);
1285
}
1286
1287
void SAL_CALL ScFilterDescriptorBase::addFilterField( const sheet::TableFilterField& aField ) throw(uno::RuntimeException)
1288
{
1289
	ScUnoGuard aGuard;
1290
    if ( !pExtDescriptor.get() )
1291
        return;
1292
1293
    pExtDescriptor->addField(aField);
1294
}
1295
1296
void SAL_CALL ScFilterDescriptorBase::addMultiStringFilterField( 
1297
    const sheet::TableMultiStringFilterField& aField ) throw(uno::RuntimeException)
1298
{
1299
	ScUnoGuard aGuard;
1300
    if ( !pExtDescriptor.get() )
1301
        return;
1302
1303
    pExtDescriptor->addMultiStringField(aField);
1304
}
1305
1266
// Rest sind Properties
1306
// Rest sind Properties
1267
1307
1268
// XPropertySet
1308
// XPropertySet
(-)sc.clean/source/ui/unoobj/makefile.mk (+1 lines)
Lines 75-80 Link Here
75
        $(SLO)$/viewuno.obj \
75
        $(SLO)$/viewuno.obj \
76
        $(SLO)$/dispuno.obj \
76
        $(SLO)$/dispuno.obj \
77
        $(SLO)$/datauno.obj \
77
        $(SLO)$/datauno.obj \
78
        $(SLO)$/extfilterdescriptor.obj \
78
        $(SLO)$/dapiuno.obj \
79
        $(SLO)$/dapiuno.obj \
79
        $(SLO)$/chartuno.obj \
80
        $(SLO)$/chartuno.obj \
80
        $(SLO)$/chart2uno.obj \
81
        $(SLO)$/chart2uno.obj \
(-)sc.clean/source/ui/view/gridwin.cxx (+4 lines)
Lines 1299-1304 Link Here
1299
		ScQueryParam aParam;
1299
		ScQueryParam aParam;
1300
		pDBData->GetQueryParam( aParam );		// kann nur MAXQUERY Eintraege ergeben
1300
		pDBData->GetQueryParam( aParam );		// kann nur MAXQUERY Eintraege ergeben
1301
1301
1302
        // Disable multi-string match flag until we implement it in the UI.
1303
        for (SCSIZE i = 0; i < MAXQUERY; ++i)
1304
            aParam.GetEntry(i).aStrValues.clear();
1305
1302
		if (SC_AUTOFILTER_CUSTOM == nSel)
1306
		if (SC_AUTOFILTER_CUSTOM == nSel)
1303
		{
1307
		{
1304
			pViewData->GetView()->SetCursor(nCol,nRow);		//! auch ueber Slot ??
1308
			pViewData->GetView()->SetCursor(nCol,nRow);		//! auch ueber Slot ??
(-)offapi.clean/com/sun/star/sheet/makefile.mk (+2 lines)
Lines 228-233 Link Here
228
	TableConditionalEntryEnumeration.idl\
228
	TableConditionalEntryEnumeration.idl\
229
	TableConditionalFormat.idl\
229
	TableConditionalFormat.idl\
230
	TableFilterField.idl\
230
	TableFilterField.idl\
231
	TableMultiStringFilterField.idl\
231
	TableOperationMode.idl\
232
	TableOperationMode.idl\
232
	TablePageBreakData.idl\
233
	TablePageBreakData.idl\
233
	TablePageStyle.idl\
234
	TablePageStyle.idl\
Lines 312-317 Link Here
312
	XSheetFilterable.idl\
313
	XSheetFilterable.idl\
313
	XSheetFilterableEx.idl\
314
	XSheetFilterableEx.idl\
314
	XSheetFilterDescriptor.idl\
315
	XSheetFilterDescriptor.idl\
316
	XExtendedSheetFilterDescriptor.idl\
315
	XSheetLinkable.idl\
317
	XSheetLinkable.idl\
316
	XSheetOperation.idl\
318
	XSheetOperation.idl\
317
	XSheetOutline.idl\
319
	XSheetOutline.idl\
(-)offapi.clean/com/sun/star/sheet/SheetFilterDescriptor.idl (+10 lines)
Lines 40-45 Link Here
40
#include <com/sun/star/sheet/XSheetFilterDescriptor.idl>
40
#include <com/sun/star/sheet/XSheetFilterDescriptor.idl>
41
#endif
41
#endif
42
42
43
#ifndef __com_sun_star_sheet_XExtendedSheetFilterDescriptor_idl__
44
#include <com/sun/star/sheet/XExtendedSheetFilterDescriptor.idl>
45
#endif
46
43
#ifndef __com_sun_star_beans_XPropertySet_idl__
47
#ifndef __com_sun_star_beans_XPropertySet_idl__
44
#include <com/sun/star/beans/XPropertySet.idl>
48
#include <com/sun/star/beans/XPropertySet.idl>
45
#endif
49
#endif
Lines 74-79 Link Here
74
78
75
	//-------------------------------------------------------------------------
79
	//-------------------------------------------------------------------------
76
80
81
	/** provides access to the collection of filter fields.
82
	 */
83
	[optional] interface com::sun::star::sheet::XExtendedSheetFilterDescriptor;
84
85
	//-------------------------------------------------------------------------
86
77
//!published service PropertySet
87
//!published service PropertySet
78
	/** provides access to the properties.
88
	/** provides access to the properties.
79
	 */
89
	 */
(-) (+81 lines)
Added Link Here
1
/*************************************************************************
2
 *
3
 *  OpenOffice.org - a multi-platform office productivity suite
4
 *
5
 *  $RCSfile: XSheetFilterDescriptor.idl,v $
6
 *
7
 *  $Revision: 1.8 $
8
 *
9
 *  last change: $Author: rt $ $Date: 2005/09/08 05:19:41 $
10
 *
11
 *  The Contents of this file are made available subject to
12
 *  the terms of GNU Lesser General Public License Version 2.1.
13
 *
14
 *
15
 *    GNU Lesser General Public License Version 2.1
16
 *    =============================================
17
 *    Copyright 2005 by Sun Microsystems, Inc.
18
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
19
 *
20
 *    This library is free software; you can redistribute it and/or
21
 *    modify it under the terms of the GNU Lesser General Public
22
 *    License version 2.1, as published by the Free Software Foundation.
23
 *
24
 *    This library is distributed in the hope that it will be useful,
25
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
26
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
27
 *    Lesser General Public License for more details.
28
 *
29
 *    You should have received a copy of the GNU Lesser General Public
30
 *    License along with this library; if not, write to the Free Software
31
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
32
 *    MA  02111-1307  USA
33
 *
34
 ************************************************************************/
35
36
#ifndef __com_sun_star_sheet_XExtendedSheetFilterDescriptor_idl__
37
#define __com_sun_star_sheet_XExtendedSheetFilterDescriptor_idl__
38
39
#ifndef __com_sun_star_uno_XInterface_idl__
40
#include <com/sun/star/uno/XInterface.idl>
41
#endif
42
43
#ifndef __com_sun_star_sheet_TableMultiStringFilterField_idl__
44
#include <com/sun/star/sheet/TableMultiStringFilterField.idl>
45
#endif
46
47
//=============================================================================
48
49
module com {  module sun {  module star {  module sheet {
50
51
//=============================================================================
52
53
/** provides access to a collection of filter conditions (filter fields).
54
55
	@see com::sun::star::sheet::SheetFilterDescriptor
56
 */
57
published interface XExtendedSheetFilterDescriptor
58
{
59
	//-------------------------------------------------------------------------
60
61
    void begin();
62
63
	//-------------------------------------------------------------------------
64
65
    void commit();
66
67
	//-------------------------------------------------------------------------
68
69
    void addFilterField( [in] com::sun::star::sheet::TableFilterField aField );
70
71
	//-------------------------------------------------------------------------
72
73
    void addMultiStringFilterField( [in] com::sun::star::sheet::TableMultiStringFilterField aField );
74
};
75
76
//=============================================================================
77
78
}; }; }; };
79
80
#endif
81
(-) (+70 lines)
Added Link Here
1
/*************************************************************************
2
 *
3
 *  OpenOffice.org - a multi-platform office productivity suite
4
 *
5
 *  $RCSfile: TableFilterField.idl,v $
6
 *
7
 *  $Revision: 1.6 $
8
 *
9
 *  last change: $Author: rt $ $Date: 2005/09/08 04:58:16 $
10
 *
11
 *  The Contents of this file are made available subject to
12
 *  the terms of GNU Lesser General Public License Version 2.1.
13
 *
14
 *
15
 *    GNU Lesser General Public License Version 2.1
16
 *    =============================================
17
 *    Copyright 2005 by Sun Microsystems, Inc.
18
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
19
 *
20
 *    This library is free software; you can redistribute it and/or
21
 *    modify it under the terms of the GNU Lesser General Public
22
 *    License version 2.1, as published by the Free Software Foundation.
23
 *
24
 *    This library is distributed in the hope that it will be useful,
25
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
26
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
27
 *    Lesser General Public License for more details.
28
 *
29
 *    You should have received a copy of the GNU Lesser General Public
30
 *    License along with this library; if not, write to the Free Software
31
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
32
 *    MA  02111-1307  USA
33
 *
34
 ************************************************************************/
35
36
#ifndef __com_sun_star_sheet_TableMultiStringFilterField_idl__
37
#define __com_sun_star_sheet_TableMultiStringFilterField_idl__
38
39
#ifndef __com_sun_star_sheet_TableFilterField_idl__
40
#include <com/sun/star/sheet/TableFilterField.idl>
41
#endif
42
43
//=============================================================================
44
45
module com {  module sun {  module star {  module sheet {
46
47
//=============================================================================
48
49
/** describes a single condition in a filter descriptor that contains a set of 
50
    multiple string values.  When this struct is used instead of the regular
51
    TableFilterField, the filter compares each cell content for textual equality 
52
    against one of the string values provided.
53
54
	@see com::sun::star::sheet::SheetFilterDescriptor
55
 */
56
published struct TableMultiStringFilterField: TableFilterField
57
{
58
	//-------------------------------------------------------------------------
59
60
    /** contains a set of multiple string values to be used for filter evaluation.
61
     */
62
    sequence< string > StringSet;
63
};
64
65
//=============================================================================
66
67
}; }; }; };
68
69
#endif
70

Return to issue 77677