1 /** 2 * UGENE - Integrated Bioinformatics Tools. 3 * Copyright (C) 2008-2021 UniPro <ugene@unipro.ru> 4 * http://ugene.net 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 19 * MA 02110-1301, USA. 20 */ 21 22 #ifndef _U2_FILTERED_PROJECT_GROUP_H_ 23 #define _U2_FILTERED_PROJECT_GROUP_H_ 24 25 #include <QObject> 26 27 namespace U2 { 28 29 class FilteredProjectGroup; 30 class GObject; 31 32 ////////////////////////////////////////////////////////////////////////// 33 /// WrappedObject 34 ////////////////////////////////////////////////////////////////////////// 35 36 class WrappedObject : public QObject { 37 Q_OBJECT 38 public: 39 WrappedObject(GObject *obj, FilteredProjectGroup *parentGroup); 40 41 GObject *getObject() const; 42 FilteredProjectGroup *getParentGroup() const; 43 44 static bool objectLessThan(const WrappedObject *first, const WrappedObject *second); 45 46 private: 47 GObject *obj; 48 FilteredProjectGroup *parentGroup; 49 }; 50 51 ////////////////////////////////////////////////////////////////////////// 52 /// FilteredProjectGroup 53 ////////////////////////////////////////////////////////////////////////// 54 55 class FilteredProjectGroup : public QObject { 56 Q_OBJECT 57 Q_DISABLE_COPY(FilteredProjectGroup) 58 public: 59 explicit FilteredProjectGroup(const QString &name); 60 ~FilteredProjectGroup(); 61 62 const QString &getGroupName() const; 63 64 void addObject(GObject *obj, int objNumber); 65 void removeAt(int objNumber); 66 67 bool contains(GObject *obj) const; 68 WrappedObject *getWrappedObject(GObject *obj) const; 69 WrappedObject *getWrappedObject(int position) const; 70 int getWrappedObjectNumber(WrappedObject *obj) const; 71 int getObjectsCount() const; 72 int getNewObjectNumber(GObject *obj) const; 73 74 static bool groupLessThan(FilteredProjectGroup *first, FilteredProjectGroup *second); 75 76 private: 77 const QString name; 78 QList<WrappedObject *> filteredObjs; 79 }; 80 81 } // namespace U2 82 83 #endif // _U2_FILTERED_PROJECT_GROUP_H_ 84