1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
// ============================================================================
#ifndef SC_XLTRACER_HXX
#define SC_XLTRACER_HXX
#include "global.hxx" // ScAddress
#include "xltools.hxx"
// As Trace features become implemented, we can safely delete the enum entry as
// we use the member mnID to keep track of the actual trace tag ID value.
enum XclTracerId
{
eUnKnown , /// unused but allows us to set the correct index
eRowLimitExceeded ,
eTabLimitExceeded ,
ePassword ,
ePrintRange ,
eShortDate ,
eBorderLineStyle ,
eFillPattern ,
eInvisibleGrid ,
eFormattedNote ,
eFormulaExtName ,
eFormulaMissingArg ,
ePivotDataSource ,
ePivotChartExists ,
eChartUnKnownType ,
eChartTrendLines ,
eChartErrorBars ,
eChartOnlySheet ,
eChartRange ,
eChartDSName,
eChartDataTable,
eChartLegendPosition,
eChartTextFormatting,
eChartEmbeddedObj,
eChartAxisAuto,
eChartAxisManual,
eChartInvalidXY,
eUnsupportedObject ,
eObjectNotPrintable ,
eDVType,
eTraceLength /// this *should* always be the final entry
};
struct XclTracerDetails
{
XclTracerId meProblemId; /// Excel Import Trace index.
sal_uInt32 mnID; /// actual ID Index trace tag Value
const sal_Char* mpContext; /// Context for problem e.g. Limits
const sal_Char* mpDetail; /// Context Detail e.g. SheetX
const sal_Char* mpProblem; /// Description of problem
};
// ============================================================================
/** This class wraps an MSFilterTracer to create trace logs for import/export filters. */
class XclTracer
{
public:
explicit XclTracer( const String& rDocUrl );
virtual ~XclTracer();
/** Returns true, if tracing is enabled. */
inline bool IsEnabled() const { return mbEnabled; }
/** Ensure that particular traces are logged once per document. */
void ProcessTraceOnce(XclTracerId eProblem);
void TraceInvalidAddress(const ScAddress& rPos, const ScAddress& rMaxPos);
void TraceInvalidRow( sal_uInt32 nRow, sal_uInt32 nMaxrow );
void TraceInvalidTab( SCTAB nTab, SCTAB nMaxTab);
void TracePrintRange();
void TraceDates(sal_uInt16 nNumFmt);
void TraceBorderLineStyle(bool bBorderLineStyle);
void TraceFillPattern(bool bFillPattern);
void TraceFormulaMissingArg();
void TracePivotDataSource(bool bExternal);
void TracePivotChartExists();
void TraceChartUnKnownType();
void TraceChartOnlySheet();
void TraceChartDataTable();
void TraceChartLegendPosition();
void TraceUnsupportedObjects();
void TraceObjectNotPrintable();
void TraceDVType(bool bType);
private:
bool mbEnabled;
typedef ::std::vector< bool > BoolVec;
/** array of flags corresponding to each entry in the XclTracerDetails table. */
BoolVec maFirstTimes;
};
// ============================================================================
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|