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
1.5.1