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

(-)source/filter/inc/excimp8.hxx (-4 / +10 lines)
Lines 259-264 Link Here
259
	void						CreateFromDouble( String& rStr, double fVal );
259
	void						CreateFromDouble( String& rStr, double fVal );
260
	void						SetCellAttribs();
260
	void						SetCellAttribs();
261
	void						InsertQueryParam();
261
	void						InsertQueryParam();
262
	void						AmendAFName(const BOOL bUseUnNamed);
262
263
263
protected:
264
protected:
264
public:
265
public:
Lines 280-287 Link Here
280
    void                        SetAdvancedRange( const ScRange* pRange );
281
    void                        SetAdvancedRange( const ScRange* pRange );
281
	void						SetExtractPos( const ScAddress& rAddr );
282
	void						SetExtractPos( const ScAddress& rAddr );
282
    inline void                 SetAutoOrAdvanced()  { bAutoOrAdvanced = TRUE; }
283
    inline void                 SetAutoOrAdvanced()  { bAutoOrAdvanced = TRUE; }
283
	void						Apply();
284
	void						Apply( const BOOL bUseUnNamed = FALSE );
284
    void                        CreateScDBData();
285
    void                        CreateScDBData( const BOOL bUseUnNamed );
285
    void                        EnableRemoveFilter();
286
    void                        EnableRemoveFilter();
286
};
287
};
287
288
Lines 289-302 Link Here
289
class XclImpAutoFilterBuffer : private List
290
class XclImpAutoFilterBuffer : private List
290
{
291
{
291
private:
292
private:
292
	inline XclImpAutoFilterData* _First()	{ return (XclImpAutoFilterData*) List::First(); }
293
	UINT16                      nAFActiveCount;
294
295
    inline XclImpAutoFilterData* _First()	{ return (XclImpAutoFilterData*) List::First(); }
293
	inline XclImpAutoFilterData* _Next()	{ return (XclImpAutoFilterData*) List::Next(); }
296
	inline XclImpAutoFilterData* _Next()	{ return (XclImpAutoFilterData*) List::Next(); }
294
297
295
	inline void					Append( XclImpAutoFilterData* pData )
298
	inline void					Append( XclImpAutoFilterData* pData )
296
									{ List::Insert( pData, LIST_APPEND ); }
299
									{ List::Insert( pData, LIST_APPEND ); }
297
protected:
300
protected:
298
public:
301
public:
299
	virtual						~XclImpAutoFilterBuffer();
302
								XclImpAutoFilterBuffer();
303
    virtual						~XclImpAutoFilterBuffer();
300
304
301
	void						Insert( RootData* pRoot, const ScRange& rRange,
305
	void						Insert( RootData* pRoot, const ScRange& rRange,
302
												const String& rName );
306
												const String& rName );
Lines 306-311 Link Here
306
310
307
	XclImpAutoFilterData*		GetByTab( UINT16 nTab );
311
	XclImpAutoFilterData*		GetByTab( UINT16 nTab );
308
	BOOL						HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab );
312
	BOOL						HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab );
313
    inline void                 IncrementActiveAF() { nAFActiveCount++; }
314
    inline BOOL                 UseUnNamed() { return nAFActiveCount == 1; }
309
};
315
};
310
316
311
317
(-)source/filter/excel/excimp8.cxx (-4 / +26 lines)
Lines 1278-1283 Link Here
1278
    // then the latter is true..
1278
    // then the latter is true..
1279
    if( !pAutoFilterBuffer ) return;
1279
    if( !pAutoFilterBuffer ) return;
1280
1280
1281
    pAutoFilterBuffer->IncrementActiveAF();
1282
1281
    XclImpAutoFilterData* pData = pAutoFilterBuffer->GetByTab( GetScTab() );
1283
    XclImpAutoFilterData* pData = pAutoFilterBuffer->GetByTab( GetScTab() );
1282
    if( pData )
1284
    if( pData )
1283
        pData->SetAutoOrAdvanced();
1285
        pData->SetAutoOrAdvanced();
Lines 1528-1536 Link Here
1528
1530
1529
}
1531
}
1530
1532
1531
void XclImpAutoFilterData::Apply()
1533
void XclImpAutoFilterData::Apply( const BOOL bUseUnNamed )
1532
{
1534
{
1533
    CreateScDBData();
1535
    CreateScDBData(bUseUnNamed);
1534
1536
1535
    if( bActive )
1537
    if( bActive )
1536
	{
1538
	{
Lines 1547-1553 Link Here
1547
	}
1549
	}
1548
}
1550
}
1549
1551
1550
void XclImpAutoFilterData::CreateScDBData()
1552
void XclImpAutoFilterData::CreateScDBData( const BOOL bUseUnNamed )
1551
{
1553
{
1552
	
1554
	
1553
    // Create the ScDBData() object if the AutoFilter is activated
1555
    // Create the ScDBData() object if the AutoFilter is activated
Lines 1558-1563 Link Here
1558
        pCurrDBData	= rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1560
        pCurrDBData	= rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1559
        if( !pCurrDBData )
1561
        if( !pCurrDBData )
1560
        {
1562
        {
1563
            AmendAFName(bUseUnNamed);
1564
1561
            pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1565
            pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1562
	
1566
	
1563
            if( pCurrDBData )
1567
            if( pCurrDBData )
Lines 1593-1598 Link Here
1593
    // inside the advanced range
1597
    // inside the advanced range
1594
}
1598
}
1595
1599
1600
void XclImpAutoFilterData::AmendAFName(const BOOL bUseUnNamed)
1601
{
1602
    // If-and-only-if we have one AF filter then
1603
    // use the Calc "unnamed" range name. Calc
1604
    // only supports one in total while Excel
1605
    // supports one per sheet.
1606
    if( bUseUnNamed && bAutoOrAdvanced )
1607
    {
1608
        rtl::OUString sOUNoName (ScGlobal::GetRscString(STR_DB_NONAME));
1609
        aFilterName = sOUNoName;
1610
    }
1611
}
1612
1613
XclImpAutoFilterBuffer::XclImpAutoFilterBuffer() :
1614
    nAFActiveCount( 0 )
1615
{
1616
}
1617
1596
XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer()
1618
XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer()
1597
{
1619
{
1598
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
1620
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
Lines 1623-1629 Link Here
1623
void XclImpAutoFilterBuffer::Apply()
1645
void XclImpAutoFilterBuffer::Apply()
1624
{
1646
{
1625
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
1647
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
1626
		pData->Apply();
1648
		pData->Apply(UseUnNamed());
1627
}
1649
}
1628
1650
1629
XclImpAutoFilterData* XclImpAutoFilterBuffer::GetByTab( UINT16 nTab )
1651
XclImpAutoFilterData* XclImpAutoFilterBuffer::GetByTab( UINT16 nTab )
(-)source/filter/excel/excrecds.cxx (-1 / +3 lines)
Lines 100-105 Link Here
100
#include <string.h>
100
#include <string.h>
101
101
102
#include "global.hxx"
102
#include "global.hxx"
103
#include "globstr.hrc"
103
#include "docpool.hxx"
104
#include "docpool.hxx"
104
#include "patattr.hxx"
105
#include "patattr.hxx"
105
#include "cell.hxx"
106
#include "cell.hxx"
Lines 1867-1873 Link Here
1867
1868
1868
BOOL ExcName::IsBuiltInAFName( const String& rName, UINT8 nKey )
1869
BOOL ExcName::IsBuiltInAFName( const String& rName, UINT8 nKey )
1869
{
1870
{
1870
    if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) )
1871
    if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) || 
1872
        (rName == ScGlobal::GetRscString( STR_DB_NONAME )))
1871
    {
1873
    {
1872
        bDummy = TRUE;
1874
        bDummy = TRUE;
1873
        return TRUE;
1875
        return TRUE;

Return to issue 10995