summaryrefslogtreecommitdiffstats
path: root/sigtools
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-23 18:54:29 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-23 18:54:29 -0400
commitdbe9aeae0776185978ceafbaa8aaa99c46078ee7 (patch)
tree7af94e41a78755b87321f8968ef1bc7fb47f134f /sigtools
parent740bdd2a6972afe8d8f4c1b7e04a669c29fd7459 (diff)
downloadsigen-dbe9aeae0776185978ceafbaa8aaa99c46078ee7.tar.gz
sigen-dbe9aeae0776185978ceafbaa8aaa99c46078ee7.tar.xz
sigen-dbe9aeae0776185978ceafbaa8aaa99c46078ee7.zip
Add PluginTypeModel header
Diffstat (limited to 'sigtools')
-rw-r--r--sigtools/PluginTypeModel.h58
-rw-r--r--sigtools/RootPluginModel.cpp7
2 files changed, 65 insertions, 0 deletions
diff --git a/sigtools/PluginTypeModel.h b/sigtools/PluginTypeModel.h
new file mode 100644
index 00000000..9c31e32a
--- /dev/null
+++ b/sigtools/PluginTypeModel.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2009 Ben Boeckel <MathStuf@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SIGTOOLS_PLUGINTYPEMODEL
+#define SIGTOOLS_PLUGINTYPEMODEL
+
+// Sigtools includes
+#include "BaseModel.h"
+
+// KDE includes
+#include <KService>
+
+namespace Sigtools
+{
+// Forward declarations
+class PluginModel;
+class RootPluginModel;
+
+class SIGTOOLS_NO_EXPORT PluginTypeModel : public QObject
+{
+ Q_OBJECT
+
+ public:
+ PluginTypeModel(const QString& type, RootPluginModel* parent);
+
+ int rowCount() const;
+
+ Qt::ItemFlags flags() const;
+
+ void paint(QPainter* painter, const QStyleOptionViewItem& option) const;
+ QSize sizeHint(const QStyleOptionViewItem& option) const;
+
+ BaseModel* childItem(const int row);
+
+ void addPlugin(KService::Ptr service);
+ protected:
+ int findChild(BaseModel* model) const;
+
+ const QString m_type;
+ QList<PluginModel*> m_services;
+};
+}
+
+#endif
diff --git a/sigtools/RootPluginModel.cpp b/sigtools/RootPluginModel.cpp
index 0f75ef3a..eeb11f34 100644
--- a/sigtools/RootPluginModel.cpp
+++ b/sigtools/RootPluginModel.cpp
@@ -48,12 +48,19 @@ QSize RootPluginModel::sizeHint(const QStyleOptionViewItem& option) const
BaseModel* RootPluginModel::childItem(const int row)
{
+ if ((0 <= row) && (row < m_types.size()))
+ return m_types.values()[row];
+ return NULL;
}
void RootPluginModel::addPlugin(const QString& type, KService::Ptr service)
{
+ if (!m_types.contains(type))
+ m_types[type] = new PluginTypeModel(type, this);
+ m_types[type]->addPlugin(service);
}
int RootPluginModel::findChild(BaseModel* model) const
{
+ return m_types.values().indexOf(model);
}