You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.0 KiB
112 lines
4.0 KiB
/* This file is part of the KOffice project
|
|
* Copyright (C) 2005 Thomas Zander <zander@kde.org>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; version 2.
|
|
|
|
* This library 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
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public License
|
|
* along with this library; see the file COPYING.LIB. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
#ifndef kw_framelist_h
|
|
#define kw_framelist_h
|
|
|
|
#include "KWFrame.h"
|
|
|
|
#include <tqptrlist.h>
|
|
#include <tqvaluevector.h>
|
|
|
|
class KWDocument;
|
|
|
|
/**
|
|
* This class calculates and caches a list of frames that are on top or below the KWFrame
|
|
* instance this class is created for.
|
|
*/
|
|
class KWFrameList {
|
|
public:
|
|
/**
|
|
* Constructor.
|
|
* @param doc the document that will reference all framesets.
|
|
* @param theFrame the frame this framestack work for.
|
|
*/
|
|
KWFrameList(KWDocument *doc, KWFrame *theFrame);
|
|
|
|
/**
|
|
* Fetches the frames below the frame this frameList is for.
|
|
*/
|
|
TQValueList<KWFrame *> framesBelow() const;
|
|
|
|
/**
|
|
* Fetches the frames on top of the frame this frameList is for.
|
|
*/
|
|
TQValueList<KWFrame *> framesOnTop() const;
|
|
|
|
/**
|
|
* Update the z-ordering around the frame we host the framelist for.
|
|
* This is typically called after this frame has been moved.
|
|
* This will make sure all frames on the same page will also be updated.
|
|
* @param oldPageNum a frame that has moved naturally has a previous page number which
|
|
* also needs to be updated because this frame has gone missing.
|
|
*/
|
|
void updateAfterMove(int oldPageNum);
|
|
|
|
/**
|
|
* Update the z-ordering around the frame we host the framelist for.
|
|
* This will make sure all frames on the same page will also be updated.
|
|
*/
|
|
void update();
|
|
|
|
/**
|
|
* Update the z-ordering for all frames of the whole document.
|
|
* @param doc the document where we can find the frames to be updated
|
|
*/
|
|
static void recalcAllFrames(KWDocument *doc);
|
|
|
|
/**
|
|
* Update the z-ordering for all frames in the page section of the whole document.
|
|
* @param doc the document where we can find the frames to be updated
|
|
* @param pageFrom the first page that will be updated
|
|
* @param pageTo the last page (including) that will be updated
|
|
*/
|
|
static void recalcFrames(KWDocument *doc, int pageFrom, int pageTo);
|
|
|
|
/**
|
|
* Factory method to create and attach a new instance of a framelist.
|
|
* Note; when an instance of a frameList already exists, calling this will do nothing.
|
|
* @param f the frame to add te new framelist to.
|
|
* @param doc the document that the frame belongs to.
|
|
*/
|
|
static void createFrameList(KWFrame *f, KWDocument *doc);
|
|
|
|
/**
|
|
* Factory method to create and attach a new instance of a framelist to each frame
|
|
* on the frameset.
|
|
* Note; when an instance of a frameList already exists on a frame, calling this will
|
|
* not overwrite the one on that frame.
|
|
* @param fs the frameset to add te new framelists to.
|
|
* @param doc the document that the frame belongs to.
|
|
* @param forceUpdate when true, even already existing frameList instances will be
|
|
* updated.
|
|
* @see update();
|
|
*/
|
|
static void createFrameList(KWFrameSet *fs, KWDocument *doc, bool forceUpdate=true);
|
|
|
|
private:
|
|
static KWFrameList *getFirstFrameList(KWDocument *doc);
|
|
void updateZOrderFor(const TQPtrList<KWFrame> &frames);
|
|
void setFrames(const TQPtrList<KWFrame> &frames);
|
|
|
|
TQValueVector<KWFrame *> m_frames; // sorted by Z Order
|
|
KWDocument *m_doc;
|
|
KWFrame *m_frame;
|
|
};
|
|
|
|
#endif
|