summaryrefslogtreecommitdiffstats
path: root/data/siglist.h
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-02-20 19:10:09 -0600
committerAndrew <forkk@forkk.net>2013-02-20 19:10:09 -0600
commitdd2e836b4cf4cfa043f9ea2911f58f1d22d4e282 (patch)
tree07e99dd9c2858e2e46075a649751049c3195b437 /data/siglist.h
parentf71479ec33562c9a0ebbdb335bef5e2824a12710 (diff)
downloadMultiMC-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.tar
MultiMC-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.tar.gz
MultiMC-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.tar.lz
MultiMC-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.tar.xz
MultiMC-dd2e836b4cf4cfa043f9ea2911f58f1d22d4e282.zip
Split MultiMC up into a few separate libraries.
Fixed plugin system. Tons of other stuff...
Diffstat (limited to 'data/siglist.h')
-rw-r--r--data/siglist.h130
1 files changed, 0 insertions, 130 deletions
diff --git a/data/siglist.h b/data/siglist.h
deleted file mode 100644
index b6432b6e..00000000
--- a/data/siglist.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef SIGLIST_H
-#define SIGLIST_H
-
-#include <QObject>
-#include <QList>
-
-// A QList that allows emitting signals when the list changes.
-// Since QObject doesn't support templates, to use this class with a
-// certain type, you should create a class deriving from SigList<T> and then
-// call the DEFINE_SIGLIST_SIGNALS(T) and SETUP_SIGLIST_SIGNALS(T) macros.
-template <typename T>
-class SigList : public QList<T>
-{
-
-public:
- explicit SigList() : QList<T>() {}
-
- virtual void append(const T &value);
- virtual void append(const QList<T> &other);
-
- virtual void clear();
-
- virtual void erase(iterator pos);
- virtual void erase(iterator first, iterator last);
-
- virtual void insert(int i, const T &t);
- virtual void insert(iterator before, const T &t);
-
- virtual void move(int from, int to);
-
- virtual void pop_back() { takeLast(); }
- virtual void pop_front() { takeFirst(); }
-
- virtual void push_back(const T &t) { append(t); }
- virtual void push_front(const T &t) { prepend(t); }
-
- virtual void prepend(const T &t);
-
- virtual int removeAll(const T &t);
- virtual bool removeOne(const T &t);
-
- virtual void removeAt(int i) { takeAt(i); }
- virtual void removeFirst() { takeFirst(); }
- virtual void removeLast() { takeLast(); }
-
- virtual void swap(QList<T> &other);
- virtual void swap(int i, int j);
-
- virtual T takeAt(int i);
- virtual T takeFirst();
- virtual T takeLast();
-
- virtual QList<T> &operator +=(const QList<T> &other) { append(other); return *this; }
- virtual QList<T> &operator +=(const T &value) { append(value); return *this; }
- virtual QList<T> &operator <<(const QList<T> &other) { append(other); return *this; }
- virtual QList<T> &operator <<(const T &value) { append(value); return *this; }
-
- virtual QList<T> &operator =(const QList<T> &other);
-
-
- // Signal emitted after an item is added to the list.
- // Contains a reference to item and the item's new index.
- virtual void onItemAdded(const T &item, int index) = 0;
-
- // Signal emitted after multiple items are added to the list at once.
- // The items parameter is a const reference to a QList of the items that
- // were added.
- // The firstIndex parameter is the new index of the first item added.
- virtual void onItemsAdded(const QList<T> &items, int firstIndex) = 0;
-
- // Signal emitted after an item is removed to the list.
- // Contains a reference to the item and the item's old index.
- virtual void onItemRemoved(const T &item, int index) = 0;
-
- // Signal emitted after multiple items are removed from the list at once.
- // The items parameter is a const reference to a QList of the items that
- // were added.
- // The firstIndex parameter is the new index of the first item added.
- virtual void onItemsRemoved(const QList<T> &items, int firstIndex) = 0;
-
- // Signal emitted after an item is moved to another index.
- // Contains the item, the old index, and the new index.
- virtual void onItemMoved(const T &item, int oldIndex, int newIndex) = 0;
-
- // Signal emitted after an operation that changes the whole list occurs.
- // This signal should be treated as if all data in the entire list was cleared
- // and new data added in its place.
- virtual void onInvalidated() = 0;
-};
-
-// Defines the signals for a SigList
-#define DEFINE_SIGLIST_SIGNALS(TYPE) \
- Q_SIGNAL void itemAdded(TYPE const &item, int index);\
- Q_SIGNAL void itemsAdded(const QList<TYPE> &items, int firstIndex);\
- Q_SIGNAL void itemRemoved(TYPE const &item, int index);\
- Q_SIGNAL void itemsRemoved(const QList<TYPE> &items, int firstIndex);\
- Q_SIGNAL void itemMoved(TYPE const &item, int oldIndex, int newIndex);\
- Q_SIGNAL void invalidated();
-
-// Overrides the onItem* functions and causes them to emit their corresponding
-// signals.
-#define SETUP_SIGLIST_SIGNALS(TYPE) \
- virtual void onItemAdded(TYPE const &item, int index)\
- { emit itemAdded(item, index); }\
- virtual void onItemsAdded(const QList<TYPE> &items, int firstIndex)\
- { emit itemsAdded(items, firstIndex); }\
- virtual void onItemRemoved(TYPE const &item, int index)\
- { emit itemRemoved(item, index); }\
- virtual void onItemsRemoved(const QList<TYPE> &items, int firstIndex)\
- { emit itemsRemoved(items, firstIndex); }\
- virtual void onItemMoved(TYPE const &item, int oldIndex, int newIndex)\
- { emit itemMoved(item, oldIndex, newIndex); }\
- virtual void onInvalidated() { emit invalidated(); }
-
-#endif // SIGLIST_H