itemgroup.h

00001 /***************************************************************************
00002  *   Copyright (C) 2005 by David Saxton                                    *
00003  *   david@bluehaze.org                                                    *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  ***************************************************************************/
00010 
00011 #ifndef ITEMGROUP_H
00012 #define ITEMGROUP_H
00013 
00014 #include <qguardedptr.h>
00015 
00016 class Item;
00017 class ICNDocument;
00018 class ItemDocument;
00019 class DoubleSpinBox;
00020 class ItemGroup;
00021 class MechanicsDocument;
00022 class Variant;
00023 
00024 typedef QValueList<QGuardedPtr<Item> > ItemList;
00025 
00026 class QCanvasItem;
00027 class QCanvasItemList;
00028 
00034 class ItemGroup : public QObject
00035 {
00036 Q_OBJECT
00037 public:
00038         ItemGroup( ItemDocument *view, const char *name = 0 );
00039         virtual ~ItemGroup();
00040         
00046         Item *activeItem() const { return m_activeItem; }
00047         uint itemCount() const { return m_itemList.count(); }
00048         virtual bool addQCanvasItem( QCanvasItem *qcanvasItem ) = 0;
00049         virtual void setItems( QCanvasItemList list ) = 0;
00050         virtual void removeQCanvasItem( QCanvasItem *qcanvasItem ) = 0;
00051         virtual bool contains( QCanvasItem *qcanvasItem ) const = 0;
00052         virtual uint count() const = 0;
00053         bool isEmpty() const { return (count() == 0); }
00054         virtual void mergeGroup( ItemGroup *group ) = 0;
00055         virtual void removeAllItems() = 0;
00056         virtual void deleteAllItems() = 0;
00062         ItemList items( bool excludeParented = true ) const;
00066         virtual void setSelected( bool sel ) = 0;
00067         
00072         bool itemsHaveSameData() const;
00077         bool itemsHaveSameDataValue( const QString &id ) const;
00082         bool itemsHaveDefaultData() const;
00089         bool itemsAreSameType() const { return b_itemsAreSameType; }
00090         
00091 public slots:
00096         void slotAlignHorizontally();
00101         void slotAlignVertically();
00106         void slotDistributeHorizontally();
00111         void slotDistributeVertically();
00112         
00113 signals:
00114         void itemAdded( Item *item );
00115         void itemRemoved( Item *item );
00116         
00117 protected:
00121         void registerItem( Item *item );
00125         void unregisterItem( Item *item );
00126         void updateAreSameStatus();
00127         
00128         ItemList m_itemList;
00129         bool b_itemsAreSameType;
00130         ItemDocument * p_view;
00131         
00132         ICNDocument *p_icnDocument;
00133         MechanicsDocument *p_mechanicsDocument;;
00134         Item *m_activeItem;
00135         
00136 private slots:
00137         void getViewPtrs();
00138 };
00139 
00140 #endif

Generated on Tue May 8 17:05:30 2007 for KTechLab by  doxygen 1.5.1