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 / +23 lines)
Lines 1285-1290 Link Here
1285
    // then the latter is true..
1285
    // then the latter is true..
1286
    if( !pAutoFilterBuffer ) return;
1286
    if( !pAutoFilterBuffer ) return;
1287
1287
1288
    pAutoFilterBuffer->IncrementActiveAF();
1289
1288
    XclImpAutoFilterData* pData = pAutoFilterBuffer->GetByTab( GetScTab() );
1290
    XclImpAutoFilterData* pData = pAutoFilterBuffer->GetByTab( GetScTab() );
1289
    if( pData )
1291
    if( pData )
1290
        pData->SetAutoOrAdvanced();
1292
        pData->SetAutoOrAdvanced();
Lines 1535-1543 Link Here
1535
1537
1536
}
1538
}
1537
1539
1538
void XclImpAutoFilterData::Apply()
1540
void XclImpAutoFilterData::Apply( const BOOL bUseUnNamed )
1539
{
1541
{
1540
    CreateScDBData();
1542
    CreateScDBData(bUseUnNamed);
1541
1543
1542
    if( bActive )
1544
    if( bActive )
1543
	{
1545
	{
Lines 1554-1560 Link Here
1554
	}
1556
	}
1555
}
1557
}
1556
1558
1557
void XclImpAutoFilterData::CreateScDBData()
1559
void XclImpAutoFilterData::CreateScDBData( const BOOL bUseUnNamed )
1558
{
1560
{
1559
	
1561
	
1560
    // Create the ScDBData() object if the AutoFilter is activated
1562
    // Create the ScDBData() object if the AutoFilter is activated
Lines 1565-1570 Link Here
1565
        pCurrDBData	= rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1567
        pCurrDBData	= rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1566
        if( !pCurrDBData )
1568
        if( !pCurrDBData )
1567
        {
1569
        {
1570
            AmendAFName(bUseUnNamed);
1571
1568
            pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1572
            pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
1569
	
1573
	
1570
            if( pCurrDBData )
1574
            if( pCurrDBData )
Lines 1600-1605 Link Here
1600
    // inside the advanced range
1604
    // inside the advanced range
1601
}
1605
}
1602
1606
1607
void XclImpAutoFilterData::AmendAFName(const BOOL bUseUnNamed)
1608
{
1609
    // If-and-only-if we have one AF filter then
1610
    // use the Calc "unnamed" range name. Calc
1611
    // only supports one in total while Excel
1612
    // supports one per sheet.
1613
    if( bUseUnNamed && bAutoOrAdvanced )
1614
        aFilterName = ScGlobal::GetRscString(STR_DB_NONAME);
1615
}
1616
1617
XclImpAutoFilterBuffer::XclImpAutoFilterBuffer() :
1618
    nAFActiveCount( 0 )
1619
{
1620
}
1621
1603
XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer()
1622
XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer()
1604
{
1623
{
1605
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
1624
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
Lines 1630-1636 Link Here
1630
void XclImpAutoFilterBuffer::Apply()
1649
void XclImpAutoFilterBuffer::Apply()
1631
{
1650
{
1632
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
1651
	for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() )
1633
		pData->Apply();
1652
		pData->Apply(UseUnNamed());
1634
}
1653
}
1635
1654
1636
XclImpAutoFilterData* XclImpAutoFilterBuffer::GetByTab( UINT16 nTab )
1655
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 1769-1775 Link Here
1769
1770
1770
BOOL ExcName::IsBuiltInAFName( const String& rName, UINT8 nKey )
1771
BOOL ExcName::IsBuiltInAFName( const String& rName, UINT8 nKey )
1771
{
1772
{
1772
    if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) )
1773
    if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) || 
1774
        (rName == ScGlobal::GetRscString( STR_DB_NONAME )))
1773
    {
1775
    {
1774
        bDummy = TRUE;
1776
        bDummy = TRUE;
1775
        return TRUE;
1777
        return TRUE;

Return to issue 10995