QtMultiViewLayout.hh

00001 /*===========================================================================*\
00002  *                                                                           *
00003  *                              OpenFlipper                                  *
00004  *      Copyright (C) 2001-2009 by Computer Graphics Group, RWTH Aachen      *
00005  *                           www.openflipper.org                             *
00006  *                                                                           *
00007  *---------------------------------------------------------------------------*
00008  *  This file is part of OpenFlipper.                                        *
00009  *                                                                           *
00010  *  OpenFlipper is free software: you can redistribute it and/or modify      *
00011  *  it under the terms of the GNU Lesser General Public License as           *
00012  *  published by the Free Software Foundation, either version 3 of           *
00013  *  the License, or (at your option) any later version with the              *
00014  *  following exceptions:                                                    *
00015  *                                                                           *
00016  *  If other files instantiate templates or use macros                       *
00017  *  or inline functions from this file, or you compile this file and         *
00018  *  link it with other files to produce an executable, this file does        *
00019  *  not by itself cause the resulting executable to be covered by the        *
00020  *  GNU Lesser General Public License. This exception does not however       *
00021  *  invalidate any other reasons why the executable file might be            *
00022  *  covered by the GNU Lesser General Public License.                        *
00023  *                                                                           *
00024  *  OpenFlipper is distributed in the hope that it will be useful,           *
00025  *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
00026  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
00027  *  GNU Lesser General Public License for more details.                      *
00028  *                                                                           *
00029  *  You should have received a copy of the GNU LesserGeneral Public          *
00030  *  License along with OpenFlipper. If not,                                  *
00031  *  see <http://www.gnu.org/licenses/>.                                      *
00032  *                                                                           *
00033 \*===========================================================================*/
00034 
00035 /*===========================================================================*\
00036  *                                                                           *
00037  *   $Revision: 6727 $                                                         *
00038  *   $Author: moebius $                                                      *
00039  *   $Date: 2009-08-05 08:03:50 +0200 (Mi, 05. Aug 2009) $                   *
00040  *                                                                           *
00041 \*===========================================================================*/
00042 
00043 
00044 
00045 
00046 //=============================================================================
00047 //
00048 //  CLASS QtMultiViewLayout - IMPLEMENTATION
00049 //
00050 //=============================================================================
00051 
00052 //== INCLUDES =================================================================
00053 
00054 #include <OpenFlipper/common/GlobalDefines.hh>
00055 #include <QGraphicsLayout>
00056 #include <QGraphicsLayoutItem>
00057 #include <QGraphicsWidget>
00058 
00059 //== NAMESPACES ===============================================================
00060 
00061 //== CLASS DEFINITION =========================================================
00062 
00063 
00067 class DLLEXPORT QtMultiViewLayout : public QGraphicsLayout
00068 {
00069   public:
00070 
00072     enum MultiViewMode {
00073        /*
00074        * #############
00075        * #           #
00076        * #           #
00077        * #     1     #
00078        * #           #
00079        * #           #
00080        * #############
00081        */
00082        SingleView,
00083        /*
00084        * #############
00085        * #  1  #  2  #
00086        * #     #     #
00087        * #############
00088        * #  3  #  4  #
00089        * #     #     #
00090        * #############
00091        */
00092       Grid,
00093       /*
00094        * #############
00095        * #       # 2 #
00096        * #       #####
00097        * #   1   # 3 #
00098        * #       #####
00099        * #       # 4 #
00100        * #############
00101        */       
00102       HSplit
00103     };
00104 
00105     QtMultiViewLayout (QGraphicsLayoutItem * _parent = 0);
00106 
00108     void addItem (QGraphicsWidget *_item, unsigned int _pos);
00109 
00111     void setMode (MultiViewMode _mode);
00112 
00114     MultiViewMode mode() const { return mode_;};
00115 
00117     void setSpacing (unsigned int _s);
00118 
00120     void setPrimary (unsigned int _i);
00121 
00122 
00124     virtual int count() const;
00125     virtual QGraphicsLayoutItem * itemAt(int _i) const;
00126     virtual void removeAt (int _index);
00127 
00128     virtual QSizeF sizeHint(Qt::SizeHint _which, const QSizeF & _constraint = QSizeF()) const;
00129 
00131     virtual void setGeometry(const QRectF & rect);
00132 
00133 
00134   private:
00135 
00137     void reLayout ();
00138 
00140     MultiViewMode mode_;
00141 
00143     unsigned int  spacing_;
00144 
00146     QGraphicsWidget *items_[4];
00147 
00149     unsigned int primary_;
00150 
00151 };
00152 
00153 //=============================================================================
00154 
00155 //=============================================================================

acg pic Project OpenFlipper, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .