/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include #include #include #include using ::com::sun::star::uno::Sequence; using ::com::sun::star::beans::PropertyValue; XclTracer::XclTracer(const OUString& rDocUrl) : mbEnabled(false) , maFirstTimes(eTraceLength, true) { Sequence aConfigData(1); aConfigData[0].Name = "DocumentURL"; aConfigData[0].Value <<= rDocUrl; } XclTracer::~XclTracer() {} void XclTracer::ProcessTraceOnce(XclTracerId eProblem) { if (mbEnabled && maFirstTimes[eProblem]) { maFirstTimes[eProblem] = false; } } void XclTracer::TraceInvalidAddress(const ScAddress& rPos, const ScAddress& rMaxPos) { TraceInvalidRow(rPos.Row(), rMaxPos.Row()); TraceInvalidTab(rPos.Tab(), rMaxPos.Tab()); } void XclTracer::TraceInvalidRow(sal_uInt32 nRow, sal_uInt32 nMaxRow) { if (nRow > nMaxRow) ProcessTraceOnce(eRowLimitExceeded); } void XclTracer::TraceInvalidTab(SCTAB nTab, SCTAB nMaxTab) { if (nTab > nMaxTab) ProcessTraceOnce(eTabLimitExceeded); } void XclTracer::TracePrintRange() { ProcessTraceOnce(ePrintRange); } void XclTracer::TraceDates(sal_uInt16 nNumFmt) { // Short Date = 14 and Short Date+Time = 22 if (nNumFmt == 14 || nNumFmt == 22) ProcessTraceOnce(eShortDate); } void XclTracer::TraceBorderLineStyle(bool bBorderLineStyle) { if (bBorderLineStyle) ProcessTraceOnce(eBorderLineStyle); } void XclTracer::TraceFillPattern(bool bFillPattern) { if (bFillPattern) ProcessTraceOnce(eFillPattern); } void XclTracer::TraceFormulaMissingArg() { // missing parameter in Formula record ProcessTraceOnce(eFormulaMissingArg); } void XclTracer::TracePivotDataSource(bool bExternal) { if (bExternal) ProcessTraceOnce(ePivotDataSource); } void XclTracer::TracePivotChartExists() { // Pivot Charts not currently displayed. ProcessTraceOnce(ePivotChartExists); } void XclTracer::TraceChartUnKnownType() { ProcessTraceOnce(eChartUnKnownType); } void XclTracer::TraceChartOnlySheet() { ProcessTraceOnce(eChartOnlySheet); } void XclTracer::TraceChartDataTable() { // Data table is not supported. ProcessTraceOnce(eChartDataTable); } void XclTracer::TraceChartLegendPosition() { // If position is set to "not docked or inside the plot area" then // we cannot guarantee the legend position. ProcessTraceOnce(eChartLegendPosition); } void XclTracer::TraceUnsupportedObjects() { // Called from Excel 5.0 - limited Graphical object support. ProcessTraceOnce(eUnsupportedObject); } void XclTracer::TraceObjectNotPrintable() { ProcessTraceOnce(eObjectNotPrintable); } void XclTracer::TraceDVType(bool bType) { // Custom types work if 'Data->validity dialog' is not OKed. if (bType) ProcessTraceOnce(eDVType); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */