File indexing completed on 2024-12-01 08:18:29

0001 /***************************************************************************
0002  *   Copyright (C) 2005 by David Saxton                                    *
0003  *   david@bluehaze.org                                                    *
0004  *                                                                         *
0005  *   This program is free software; you can redistribute it and/or modify  *
0006  *   it under the terms of the GNU General Public License as published by  *
0007  *   the Free Software Foundation; either version 2 of the License, or     *
0008  *   (at your option) any later version.                                   *
0009  ***************************************************************************/
0010 
0011 #ifndef MECHANICSGROUP_H
0012 #define MECHANICSGROUP_H
0013 
0014 #include <itemgroup.h>
0015 
0016 class MechanicsItem;
0017 class MechanicsDocument;
0018 typedef QList<MechanicsItem *> MechanicsItemList;
0019 
0020 /**
0021 @author David Saxton
0022 */
0023 class MechanicsGroup : public ItemGroup
0024 {
0025     Q_OBJECT
0026 public:
0027     MechanicsGroup(MechanicsDocument *mechanicsDocument);
0028     ~MechanicsGroup() override;
0029 
0030     /**
0031      * Returns a list of top-level mechanics items only
0032      */
0033     MechanicsItemList toplevelMechItemList() const;
0034     /**
0035      * Sets the selection mode of all MechanicsItems in the group
0036      */
0037     void setSelectionMode(uint sm);
0038     /**
0039      * "Raises" (increases the z value of) the selected group of items
0040      */
0041     void setRaised(bool isRaised);
0042     /**
0043      * Removes all the children of the given item from the group
0044      */
0045     void removeChildren(Item *item);
0046     bool addItem(Item *item);
0047     bool removeItem(Item *item);
0048     bool addQCanvasItem(KtlQCanvasItem *item) override;
0049     bool contains(KtlQCanvasItem *item) const override;
0050     uint count() const override
0051     {
0052         return itemCount();
0053     }
0054     void deleteAllItems() override;
0055     void mergeGroup(ItemGroup *group) override;
0056     void removeAllItems() override;
0057     void removeQCanvasItem(KtlQCanvasItem *item) override;
0058     void setItems(KtlQCanvasItemList list) override;
0059     /**
0060      * Sets the selected state of all items in the group
0061      */
0062     void setSelected(bool sel) override;
0063 
0064     /**
0065      * Extracts the mechanics items from the item list
0066      */
0067     MechanicsItemList extractMechanicsItems() const;
0068 
0069 protected:
0070     void updateInfo();
0071 
0072     bool b_isRaised;
0073 };
0074 
0075 #endif