summaryrefslogtreecommitdiff
path: root/sc/source/filter/inc/fprogressbar.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/inc/fprogressbar.hxx')
-rw-r--r--sc/source/filter/inc/fprogressbar.hxx246
1 files changed, 0 insertions, 246 deletions
diff --git a/sc/source/filter/inc/fprogressbar.hxx b/sc/source/filter/inc/fprogressbar.hxx
deleted file mode 100644
index cfcd872ef..000000000
--- a/sc/source/filter/inc/fprogressbar.hxx
+++ /dev/null
@@ -1,246 +0,0 @@
-/* -*- 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_FPROGRESSBAR_HXX
-#define SC_FPROGRESSBAR_HXX
-
-#include <boost/noncopyable.hpp>
-#include <boost/ptr_container/ptr_vector.hpp>
-#include "globstr.hrc"
-#include "ftools.hxx"
-#include "scdllapi.h"
-
-class SfxObjectShell;
-class ScProgress;
-
-// ============================================================================
-
-const sal_Int32 SCF_INV_SEGMENT = -1;
-
-// ============================================================================
-
-/** Progress bar for complex progress representation.
-
- The progress bar contains one or more segments, each with customable
- size. Each segment is represented by a unique identifier. While showing the
- progress bar, several segments can be started simultaneously. The progress
- bar displays the sum of all started segments on screen.
-
- It is possible to create a full featured ScfProgressBar object from
- any segment. This sub progress bar works only on that parent segment, with
- the effect, that if the sub progress bar reaches 100%, the parent segment is
- filled completely.
-
- After adding segments, the progress bar has to be activated. In this step the
- total size of all segments is calculated. Therefore it is not possible to add
- more segments from here.
-
- If a sub progress bar is created from a segment, and the main progress bar
- has been started (but not the sub progress bar), it is still possible to add
- segments to the sub progress bar. It is not allowed to get the sub progress bar
- of a started segment. And it is not allowed to modify the segment containing
- a sub progress bar directly.
-
- Following a few code examples, how to use the progress bar.
-
- Example 1: Simple progress bar (see also ScfSimpleProgressBar below).
-
- ScfProgressBar aProgress( ... );
- sal_Int32 nSeg = aProgress.AddSegment( 50 ); // segment with 50 steps (1 step = 2%)
-
- aProgress.ActivateSegment( nSeg ); // start segment nSeg
- aProgress.Progress(); // 0->1; display: 2%
- aProgress.ProgressAbs( 9 ); // 1->9; display: 18%
-
- Example 2: Progress bar with 2 segments.
-
- ScfProgressBar aProgress( ... );
- sal_Int32 nSeg1 = aProgress.AddSegment( 70 ); // segment with 70 steps
- sal_Int32 nSeg2 = aProgress.AddSegment( 30 ); // segment with 30 steps
- // both segments: 100 steps (1 step = 1%)
-
- aProgress.ActivateSegment( nSeg1 ); // start first segment
- aProgress.Progress(); // 0->1, display: 1%
- aProgress.Progress( 2 ); // 1->3, display: 3%
- aProgress.ActivateSegment( nSeg2 ); // start second segment
- aProgress.Progress( 5 ); // 0->5, display: 8% (5+3 steps)
- aProgress.ActivateSegment( nSeg1 ); // continue with first segment
- aProgress.Progress(); // 3->4, display: 9% (5+4 steps)
-
- Example 3: Progress bar with 2 segments, one contains a sub progress bar.
-
- ScfProgressBar aProgress( ... );
- sal_Int32 nSeg1 = aProgress.AddSegment( 75 ); // segment with 75 steps
- sal_Int32 nSeg2 = aProgress.AddSegment( 25 ); // segment with 25 steps
- // both segments: 100 steps (1 step = 1%)
-
- aProgress.ActivateSegment( nSeg1 ); // start first segment
- aProgress.Progress(); // 0->1, display: 1%
-
- ScfProgressBar& rSubProgress = aProgress.GetSegmentProgressBar( nSeg2 );
- // sub progress bar from second segment
- sal_Int32 nSubSeg = rSubProgress.AddSegment( 5 ); // 5 steps, mapped to second segment
- // => 1 step = 5 steps in parent = 5%
-
- rSubProgress.ActivateSegment( nSubSeg ); // start the segment (auto activate parent segment)
- rSubProgress.Progress(); // 0->1 (0->5 in parent); display: 6% (1+5)
-
- // not allowed (second segment active): aProgress.Progress();
- // not allowed (first segment not empty): aProgress.GetSegmentProgressBar( nSeg1 );
- */
-class ScfProgressBar : private boost::noncopyable
-{
-public:
- explicit ScfProgressBar( SfxObjectShell* pDocShell, const String& rText );
- explicit ScfProgressBar( SfxObjectShell* pDocShell, sal_uInt16 nResId );
- virtual ~ScfProgressBar();
-
- /** Adds a new segment to the progress bar.
- @return the identifier of the segment. */
- sal_Int32 AddSegment( sal_Size nSize );
- /** Returns a complete progress bar for the specified segment.
- @descr The progress bar can be used to create sub segments inside of the
- segment. Do not delete it (done by root progress bar)!
- @return A reference to an ScfProgressBar connected to the segment. */
- ScfProgressBar& GetSegmentProgressBar( sal_Int32 nSegment );
-
- /** Returns true, if any progress segment has been started. */
- inline bool IsStarted() const { return mbInProgress; }
- /** Returns true, if the current progress segment is already full. */
- bool IsFull() const;
-
- /** Starts the progress bar or activates another segment. */
- void ActivateSegment( sal_Int32 nSegment );
- /** Starts the progress bar (with first segment). */
- inline void Activate() { ActivateSegment( 0 ); }
- /** Set current segment to the specified absolute position. */
- void ProgressAbs( sal_Size nPos );
- /** Increase current segment by the passed value. */
- void Progress( sal_Size nDelta = 1 );
-
-private:
- struct ScfProgressSegment;
-
- /** Used to create sub progress bars. */
- explicit ScfProgressBar(
- ScfProgressBar& rParProgress,
- ScfProgressSegment* pParSegment );
-
- /** Initializes all members on construction. */
- void Init( SfxObjectShell* pDocShell );
-
- /** Returns the segment specified by list index. */
- ScfProgressSegment* GetSegment( sal_Int32 nSegment );
- /** Activates progress bar and sets current segment. */
- void SetCurrSegment( ScfProgressSegment* pSegment );
- /** Increases mnTotalPos and calls the system progress bar. */
- void IncreaseProgressBar( sal_Size nDelta );
-
-private:
- /** Contains all data of a segment of the progress bar. */
- struct ScfProgressSegment
- {
- typedef ::std::auto_ptr< ScfProgressBar > ScfProgressBarPtr;
-
- ScfProgressBarPtr mxProgress; /// Pointer to sub progress bar for this segment.
- sal_Size mnSize; /// Size of this segment.
- sal_Size mnPos; /// Current position of this segment.
-
- explicit ScfProgressSegment( sal_Size nSize );
- ~ScfProgressSegment();
- };
-
- typedef ::std::auto_ptr< ScProgress > ScProgressPtr;
- typedef boost::ptr_vector< ScfProgressSegment > ScfSegmentList;
-
- ScfSegmentList maSegments; /// List of progress segments.
- String maText; /// UI string for system progress.
-
- ScProgressPtr mxSysProgress; /// System progress bar.
- SfxObjectShell* mpDocShell; /// The document shell for the progress bar.
- ScfProgressBar* mpParentProgress; /// Parent progress bar, if this is a segment progress bar.
- ScfProgressSegment* mpParentSegment; /// Parent segment, if this is a segment progress bar.
- ScfProgressSegment* mpCurrSegment; /// Current segment for progress.
-
- sal_Size mnTotalSize; /// Total size of all segments.
- sal_Size mnTotalPos; /// Sum of positions of all segments.
- sal_Size mnUnitSize; /// Size between two calls of system progress.
- sal_Size mnNextUnitPos; /// Limit for next system progress call.
- sal_Size mnSysProgressScale; /// Additionally scaling factor for system progress.
- bool mbInProgress; /// true = progress bar started.
-};
-
-// ============================================================================
-
-/** A simplified progress bar with only one segment. */
-class ScfSimpleProgressBar
-{
-public:
- explicit ScfSimpleProgressBar( sal_Size nSize, SfxObjectShell* pDocShell, const String& rText );
- explicit ScfSimpleProgressBar( sal_Size nSize, SfxObjectShell* pDocShell, sal_uInt16 nResId );
-
- /** Set progress bar to the specified position. */
- inline void ProgressAbs( sal_Size nPos ) { maProgress.ProgressAbs( nPos ); }
- /** Increase progress bar by 1. */
- inline void Progress( sal_Size nDelta = 1 ) { maProgress.Progress( nDelta ); }
-
-private:
- /** Initializes and starts the progress bar. */
- void Init( sal_Size nSize );
-
-private:
- ScfProgressBar maProgress; /// The used progress bar.
-};
-
-// ============================================================================
-
-/** A simplified progress bar based on the stream position of an existing stream. */
-class ScfStreamProgressBar
-{
-public:
- explicit ScfStreamProgressBar( SvStream& rStrm, SfxObjectShell* pDocShell, sal_uInt16 nResId = STR_LOAD_DOC );
-
- /** Sets the progress bar to the current stream position. */
- void Progress();
-
-private:
- /** Initializes and starts the progress bar. */
- void Init( SfxObjectShell* pDocShell, const String& rText );
-
-private:
- typedef ::std::auto_ptr< ScfSimpleProgressBar > ScfSimpleProgressBarPtr;
-
- ScfSimpleProgressBarPtr mxProgress; /// The used progress bar.
- SvStream& mrStrm; /// The used stream.
-};
-
-// ============================================================================
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */