summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2009-07-26 12:39:50 (GMT)
committerKevin Smith <git@kismith.co.uk>2009-07-26 12:39:50 (GMT)
commita28d92f3458218d6effbfdd9a42bf8fbe8b8aa72 (patch)
treef666c221dcc899704bb80f67afe383e58b780669
parentc4660f404c9a0dbf1c00a20baacfc738d93eaff5 (diff)
downloadswift-a28d92f3458218d6effbfdd9a42bf8fbe8b8aa72.zip
swift-a28d92f3458218d6effbfdd9a42bf8fbe8b8aa72.tar.bz2
Begin to assage Swift model into Qt Model/View.
-rw-r--r--Swift/QtUI/QtChatWindow.cpp4
-rw-r--r--Swift/QtUI/QtChatWindowFactory.cpp2
-rw-r--r--Swift/QtUI/QtMainWindow.cpp4
-rw-r--r--Swift/QtUI/QtMainWindowFactory.cpp2
-rw-r--r--Swift/QtUI/QtSwift.cpp2
-rw-r--r--Swift/QtUI/QtTreeWidget.cpp29
-rw-r--r--Swift/QtUI/QtTreeWidget.h28
-rw-r--r--Swift/QtUI/QtTreeWidgetItem.h57
-rw-r--r--Swift/QtUI/Roster/QtTreeWidget.cpp37
-rw-r--r--Swift/QtUI/Roster/QtTreeWidget.h32
-rw-r--r--Swift/QtUI/Roster/QtTreeWidgetFactory.cpp (renamed from Swift/QtUI/QtTreeWidgetFactory.cpp)0
-rw-r--r--Swift/QtUI/Roster/QtTreeWidgetFactory.h (renamed from Swift/QtUI/QtTreeWidgetFactory.h)13
-rw-r--r--Swift/QtUI/Roster/QtTreeWidgetItem.cpp17
-rw-r--r--Swift/QtUI/Roster/QtTreeWidgetItem.h65
-rw-r--r--Swift/QtUI/Roster/Roster.pri12
-rw-r--r--Swift/QtUI/Roster/Roster.pro12
-rw-r--r--Swift/QtUI/Roster/RosterDelegate.cpp (renamed from Swift/QtUI/QtTreeWidgetItem.cpp)0
-rw-r--r--Swift/QtUI/Roster/RosterDelegate.h0
-rw-r--r--Swift/QtUI/Roster/RosterItem.cpp28
-rw-r--r--Swift/QtUI/Roster/RosterItem.h20
-rw-r--r--Swift/QtUI/Roster/RosterModel.cpp56
-rw-r--r--Swift/QtUI/Roster/RosterModel.h22
-rw-r--r--Swift/QtUI/Roster/main.cpp31
-rw-r--r--Swift/QtUI/Swift.pro6
-rw-r--r--Swiften/Roster/Roster.cpp4
25 files changed, 352 insertions, 131 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp
index 6328156..2e08adb 100644
--- a/Swift/QtUI/QtChatWindow.cpp
+++ b/Swift/QtUI/QtChatWindow.cpp
@@ -1,7 +1,7 @@
#include "QtChatWindow.h"
#include "QtSwiftUtil.h"
-#include "QtTreeWidget.h"
-#include "QtTreeWidgetFactory.h"
+#include "Roster/QtTreeWidget.h"
+#include "Roster/QtTreeWidgetFactory.h"
#include "QtChatView.h"
#include "MessageSnippet.h"
#include "SystemMessageSnippet.h"
diff --git a/Swift/QtUI/QtChatWindowFactory.cpp b/Swift/QtUI/QtChatWindowFactory.cpp
index 927447c..47c943f 100644
--- a/Swift/QtUI/QtChatWindowFactory.cpp
+++ b/Swift/QtUI/QtChatWindowFactory.cpp
@@ -3,7 +3,7 @@
#include "QtChatTabs.h"
#include "QtChatWindow.h"
#include "QtSwiftUtil.h"
-#include "QtTreeWidgetFactory.h"
+#include "Roster/QtTreeWidgetFactory.h"
namespace Swift {
diff --git a/Swift/QtUI/QtMainWindow.cpp b/Swift/QtUI/QtMainWindow.cpp
index a9ffc51..fffd478 100644
--- a/Swift/QtUI/QtMainWindow.cpp
+++ b/Swift/QtUI/QtMainWindow.cpp
@@ -2,8 +2,8 @@
#include "QtJoinMUCDialog.h"
#include "QtSwiftUtil.h"
-#include "QtTreeWidgetFactory.h"
-#include "QtTreeWidget.h"
+#include "Roster/QtTreeWidgetFactory.h"
+#include "Roster/QtTreeWidget.h"
#include "QtStatusWidget.h"
#include <QBoxLayout>
diff --git a/Swift/QtUI/QtMainWindowFactory.cpp b/Swift/QtUI/QtMainWindowFactory.cpp
index 288d182..9594ade 100644
--- a/Swift/QtUI/QtMainWindowFactory.cpp
+++ b/Swift/QtUI/QtMainWindowFactory.cpp
@@ -1,6 +1,6 @@
#include "QtMainWindowFactory.h"
#include "QtMainWindow.h"
-#include "QtTreeWidgetFactory.h"
+#include "Roster/QtTreeWidgetFactory.h"
namespace Swift {
diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp
index e1fac9c..00efc17 100644
--- a/Swift/QtUI/QtSwift.cpp
+++ b/Swift/QtUI/QtSwift.cpp
@@ -3,7 +3,7 @@
#include "QtLoginWindowFactory.h"
#include "QtChatWindowFactory.h"
#include "QtMainWindowFactory.h"
-#include "QtTreeWidgetFactory.h"
+#include "Roster/QtTreeWidgetFactory.h"
#include "QtSystemTray.h"
#include "QtSoundPlayer.h"
diff --git a/Swift/QtUI/QtTreeWidget.cpp b/Swift/QtUI/QtTreeWidget.cpp
deleted file mode 100644
index 66c653e..0000000
--- a/Swift/QtUI/QtTreeWidget.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "QtTreeWidget.h"
-
-#include "Swiften/Base/Platform.h"
-#include "Swiften/Roster/OpenChatRosterAction.h"
-
-namespace Swift {
-
-QtTreeWidget::QtTreeWidget(QWidget* parent) : QTreeWidget(parent) {
- setHeaderHidden(true);
-#ifdef SWIFT_PLATFORM_MACOSX
- setAlternatingRowColors(true);
-#endif
- setAnimated(true);
- setIndentation(0);
- setRootIsDecorated(true);
- connect(this, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(handleItemActivated(QTreeWidgetItem*, int)));
-}
-
-void QtTreeWidget::handleItemActivated(QTreeWidgetItem* item, int column) {
- QtTreeWidgetItem* qtItem = dynamic_cast<QtTreeWidgetItem*>(item);
- if (qtItem) {
- qtItem->performUserAction(boost::shared_ptr<UserRosterAction>(new OpenChatRosterAction()));
- }
-}
-
-void QtTreeWidget::drawBranches(QPainter*, const QRect&, const QModelIndex&) const {
-}
-
-}
diff --git a/Swift/QtUI/QtTreeWidget.h b/Swift/QtUI/QtTreeWidget.h
deleted file mode 100644
index e1d83de..0000000
--- a/Swift/QtUI/QtTreeWidget.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SWIFT_QtTreeWidget_H
-#define SWIFT_QtTreeWidget_H
-
-#include <QTreeWidget>
-
-#include "Swiften/Roster/TreeWidgetFactory.h"
-#include "Swiften/Roster/TreeWidget.h"
-#include "Swiften/Roster/TreeWidgetItem.h"
-#include "Swift/QtUI/QtTreeWidgetItem.h"
-#include "Swift/QtUI/QtTreeWidget.h"
-
-namespace Swift {
-
-class QtTreeWidget : public QTreeWidget, public TreeWidget {
- Q_OBJECT
- public:
- QtTreeWidget(QWidget* parent = 0);
-
- private slots:
- void handleItemActivated(QTreeWidgetItem*, int);
-
- private:
- void drawBranches(QPainter*, const QRect&, const QModelIndex&) const;
-};
-
-}
-#endif
-
diff --git a/Swift/QtUI/QtTreeWidgetItem.h b/Swift/QtUI/QtTreeWidgetItem.h
deleted file mode 100644
index 34ad93c..0000000
--- a/Swift/QtUI/QtTreeWidgetItem.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef SWIFT_QtTreeWidgetItem_H
-#define SWIFT_QtTreeWidgetItem_H
-
-#include <QColor>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Roster/TreeWidgetFactory.h"
-#include "Swiften/Roster/TreeWidget.h"
-#include "Swiften/Roster/TreeWidgetItem.h"
-#include "Swift/QtUI/QtTreeWidgetItem.h"
-#include "Swift/QtUI/QtTreeWidget.h"
-#include "Swift/QtUI/QtSwiftUtil.h"
-
-namespace Swift {
-
-class QtTreeWidgetItem : public QTreeWidgetItem, public TreeWidgetItem {
- public:
- QtTreeWidgetItem(QTreeWidget* parent) : QTreeWidgetItem(parent) {
- }
-
- QtTreeWidgetItem(QTreeWidgetItem* parent) : QTreeWidgetItem(parent) {
- }
-
- void setText(const String& text) {
- QTreeWidgetItem::setText(0, P2QSTRING(text));
- }
-
- void setTextColor(unsigned long color) {
- QTreeWidgetItem::setTextColor(0, QColor(
- ((color & 0xFF0000)>>16),
- ((color & 0xFF00)>>8),
- (color & 0xFF)));
- }
-
- void setBackgroundColor(unsigned long color) {
- QTreeWidgetItem::setBackgroundColor(0, QColor(
- ((color & 0xFF0000)>>16),
- ((color & 0xFF00)>>8),
- (color & 0xFF)));
- }
-
- void setExpanded(bool b) {
- treeWidget()->setItemExpanded(this, b);
- }
-
- void hide() {
- setHidden(true);
- }
-
- void show() {
- setHidden(false);
- }
-};
-
-}
-#endif
-
diff --git a/Swift/QtUI/Roster/QtTreeWidget.cpp b/Swift/QtUI/Roster/QtTreeWidget.cpp
new file mode 100644
index 0000000..d40169f
--- /dev/null
+++ b/Swift/QtUI/Roster/QtTreeWidget.cpp
@@ -0,0 +1,37 @@
+#include "Roster/QtTreeWidget.h"
+
+#include "Swiften/Base/Platform.h"
+#include "Swiften/Roster/OpenChatRosterAction.h"
+
+namespace Swift {
+
+QtTreeWidget::QtTreeWidget(QWidget* parent) : QTreeView(parent), RosterItem(NULL) {
+ model_ = new RosterModel(this);
+ setModel(model_);
+ //setWindowTitle("A roster");
+ //show();
+ setHeaderHidden(true);
+#ifdef SWIFT_PLATFORM_MACOSX
+ setAlternatingRowColors(true);
+#endif
+ setAnimated(true);
+ setIndentation(0);
+ setRootIsDecorated(true);
+ connect(this, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(handleItemActivated(QTreeWidgetItem*, int)));
+}
+
+// void QtTreeWidget::handleItemActivated(QTreeWidgetItem* item, int column) {
+// QtTreeWidgetItem* qtItem = dynamic_cast<QtTreeWidgetItem*>(item);
+// if (qtItem) {
+// qtItem->performUserAction(boost::shared_ptr<UserRosterAction>(new OpenChatRosterAction()));
+// }
+// }
+
+void QtTreeWidget::drawBranches(QPainter*, const QRect&, const QModelIndex&) const {
+}
+
+void QtTreeWidget::show() {
+ QWidget::show();
+}
+
+}
diff --git a/Swift/QtUI/Roster/QtTreeWidget.h b/Swift/QtUI/Roster/QtTreeWidget.h
new file mode 100644
index 0000000..f246e83
--- /dev/null
+++ b/Swift/QtUI/Roster/QtTreeWidget.h
@@ -0,0 +1,32 @@
+#ifndef SWIFT_QtTreeWidget_H
+#define SWIFT_QtTreeWidget_H
+
+#include <QTreeView>
+
+#include "Swiften/Roster/TreeWidgetFactory.h"
+#include "Swiften/Roster/TreeWidget.h"
+#include "Swiften/Roster/TreeWidgetItem.h"
+#include "Swift/QtUI/Roster/QtTreeWidgetItem.h"
+#include "Swift/QtUI/Roster/QtTreeWidget.h"
+#include "Swift/QtUI/Roster/RosterModel.h"
+#include "Swift/QtUI/Roster/RosterItem.h"
+
+namespace Swift {
+
+class QtTreeWidget : public QTreeView, public TreeWidget, public RosterItem {
+ Q_OBJECT
+ public:
+ QtTreeWidget(QWidget* parent = 0);
+ void show();
+ //private slots:
+ // void handleItemActivated(QTreeWidgetItem*, int);
+
+ private:
+ void drawBranches(QPainter*, const QRect&, const QModelIndex&) const;
+ RosterModel* model_;
+
+};
+
+}
+#endif
+
diff --git a/Swift/QtUI/QtTreeWidgetFactory.cpp b/Swift/QtUI/Roster/QtTreeWidgetFactory.cpp
index e69de29..e69de29 100644
--- a/Swift/QtUI/QtTreeWidgetFactory.cpp
+++ b/Swift/QtUI/Roster/QtTreeWidgetFactory.cpp
diff --git a/Swift/QtUI/QtTreeWidgetFactory.h b/Swift/QtUI/Roster/QtTreeWidgetFactory.h
index e0140d2..353f697 100644
--- a/Swift/QtUI/QtTreeWidgetFactory.h
+++ b/Swift/QtUI/Roster/QtTreeWidgetFactory.h
@@ -4,8 +4,8 @@
#include "Swiften/Roster/TreeWidgetFactory.h"
#include "Swiften/Roster/TreeWidget.h"
#include "Swiften/Roster/TreeWidgetItem.h"
-#include "Swift/QtUI/QtTreeWidgetItem.h"
-#include "Swift/QtUI/QtTreeWidget.h"
+#include "Swift/QtUI/Roster/QtTreeWidgetItem.h"
+#include "Swift/QtUI/Roster/QtTreeWidget.h"
namespace Swift {
@@ -21,13 +21,18 @@ class QtTreeWidgetFactory : public TreeWidgetFactory {
TreeWidgetItem* createTreeWidgetItem(TreeWidgetItem* item) {
QtTreeWidgetItem* qtItem = dynamic_cast<QtTreeWidgetItem*>(item);
assert(qtItem);
- return new QtTreeWidgetItem(qtItem);
+ QtTreeWidgetItem* newItem = new QtTreeWidgetItem(qtItem);
+ qtItem->addChild(newItem);
+ return newItem;
}
TreeWidgetItem* createTreeWidgetItem(TreeWidget* item) {
QtTreeWidget* qtItem = dynamic_cast<QtTreeWidget*>(item);
assert(qtItem);
- return new QtTreeWidgetItem(qtItem);
+ QtTreeWidgetItem* newItem = new QtTreeWidgetItem(qtItem);
+ //qtItem->setItemWidget(newItem, 0, newItem->getCollapsedRosterWidget());
+ qtItem->addChild(newItem);
+ return newItem;
}
};
diff --git a/Swift/QtUI/Roster/QtTreeWidgetItem.cpp b/Swift/QtUI/Roster/QtTreeWidgetItem.cpp
new file mode 100644
index 0000000..f65c3bf
--- /dev/null
+++ b/Swift/QtUI/Roster/QtTreeWidgetItem.cpp
@@ -0,0 +1,17 @@
+#include "Swift/QtUI/Roster/QtTreeWidgetItem.h"
+#include "Swift/QtUI/Roster/QtTreeWidget.h"
+namespace Swift {
+
+QWidget* QtTreeWidgetItem::getCollapsedRosterWidget() {
+ QWidget* widget = new QWidget();
+
+ return widget;
+}
+
+QWidget* QtTreeWidgetItem::getExpandedRosterWidget() {
+ QWidget* widget = new QWidget();
+
+ return widget;
+}
+
+} \ No newline at end of file
diff --git a/Swift/QtUI/Roster/QtTreeWidgetItem.h b/Swift/QtUI/Roster/QtTreeWidgetItem.h
new file mode 100644
index 0000000..c35a840
--- /dev/null
+++ b/Swift/QtUI/Roster/QtTreeWidgetItem.h
@@ -0,0 +1,65 @@
+#ifndef SWIFT_QtTreeWidgetItem_H
+#define SWIFT_QtTreeWidgetItem_H
+
+#include <QColor>
+
+#include "Swiften/Base/String.h"
+#include "Swiften/Roster/TreeWidgetFactory.h"
+#include "Swiften/Roster/TreeWidget.h"
+#include "Swiften/Roster/TreeWidgetItem.h"
+#include "Swift/QtUI/Roster/QtTreeWidgetItem.h"
+#include "Swift/QtUI/Roster/RosterItem.h"
+
+
+#include "Swift/QtUI/QtSwiftUtil.h"
+
+
+namespace Swift {
+class QtTreeWidget;
+class QtTreeWidgetItem : public TreeWidgetItem, public RosterItem {
+ public:
+ QtTreeWidgetItem(RosterItem* parentItem) : RosterItem(parentItem) {
+
+ }
+
+ void setText(const String& text) {
+ displayName_ = P2QSTRING(text);
+ // QTreeWidgetItem::setText(0, P2QSTRING(text));
+ }
+
+ void setTextColor(unsigned long color) {
+ // QTreeWidgetItem::setTextColor(0, QColor(
+ // ((color & 0xFF0000)>>16),
+ // ((color & 0xFF00)>>8),
+ // (color & 0xFF)));
+ }
+
+ void setBackgroundColor(unsigned long color) {
+ // QTreeWidgetItem::setBackgroundColor(0, QColor(
+ // ((color & 0xFF0000)>>16),
+ // ((color & 0xFF00)>>8),
+ // (color & 0xFF)));
+ }
+
+ void setExpanded(bool b) {
+ //treeWidget()->setItemExpanded(this, b);
+ }
+
+ void hide() {
+ //setHidden(true);
+ }
+
+ void show() {
+ //setHidden(false);
+ }
+
+ QWidget* getCollapsedRosterWidget();
+ QWidget* getExpandedRosterWidget();
+
+ private:
+ QString displayName_;
+};
+
+}
+#endif
+
diff --git a/Swift/QtUI/Roster/Roster.pri b/Swift/QtUI/Roster/Roster.pri
new file mode 100644
index 0000000..56ff472
--- /dev/null
+++ b/Swift/QtUI/Roster/Roster.pri
@@ -0,0 +1,12 @@
+SOURCES += $$PWD/RosterDelegate.cpp \
+ $$PWD/RosterItem.cpp \
+ $$PWD/RosterModel.cpp \
+ $$PWD/QtTreeWidget.cpp \
+ $$PWD/QtTreeWidgetItem.cpp
+
+HEADERS += $$PWD/RosterDelegate.h \
+ $$PWD/RosterItem.h \
+ $$PWD/RosterModel.h \
+ $$PWD/QtTreeWidget.h \
+ $$PWD/QtTreeWidgetFactory.h \
+ $$PWD/QtTreeWidgetItem.h
diff --git a/Swift/QtUI/Roster/Roster.pro b/Swift/QtUI/Roster/Roster.pro
new file mode 100644
index 0000000..c829d5c
--- /dev/null
+++ b/Swift/QtUI/Roster/Roster.pro
@@ -0,0 +1,12 @@
+include(Roster.pri)
+SOURCES += main.cpp
+
+DEPENDPATH += ../. ../../.. ../../../3rdParty/Boost
+INCLUDEPATH += ../. ../../.. ../../../3rdParty/Boost
+
+DEFINES += BOOST_SIGNALS_NAMESPACE=bsignals BOOST_ALL_NO_LIB
+
+exists(../config.pri) {
+ LIBS += ../../Controllers/Controllers.a ../../../Swiften/Swiften.a
+ include(../config.pri)
+} \ No newline at end of file
diff --git a/Swift/QtUI/QtTreeWidgetItem.cpp b/Swift/QtUI/Roster/RosterDelegate.cpp
index e69de29..e69de29 100644
--- a/Swift/QtUI/QtTreeWidgetItem.cpp
+++ b/Swift/QtUI/Roster/RosterDelegate.cpp
diff --git a/Swift/QtUI/Roster/RosterDelegate.h b/Swift/QtUI/Roster/RosterDelegate.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Swift/QtUI/Roster/RosterDelegate.h
diff --git a/Swift/QtUI/Roster/RosterItem.cpp b/Swift/QtUI/Roster/RosterItem.cpp
new file mode 100644
index 0000000..14b4525
--- /dev/null
+++ b/Swift/QtUI/Roster/RosterItem.cpp
@@ -0,0 +1,28 @@
+#include "RosterItem.h"
+
+namespace Swift {
+
+RosterItem::RosterItem(RosterItem* parent) {
+ parent_ = parent;
+}
+
+RosterItem* RosterItem::getParentItem() {
+ return parent_;
+}
+
+void RosterItem::addChild(RosterItem* child) {
+ children_.append(child);
+}
+
+int RosterItem::rowCount() {
+ return children_.size();
+}
+
+int RosterItem::rowOf(RosterItem* item) {
+ return children_.indexOf(item);;
+}
+
+RosterItem* RosterItem::getItem(int row) {
+ return children_[row];
+}
+} \ No newline at end of file
diff --git a/Swift/QtUI/Roster/RosterItem.h b/Swift/QtUI/Roster/RosterItem.h
new file mode 100644
index 0000000..f7cd804
--- /dev/null
+++ b/Swift/QtUI/Roster/RosterItem.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include <QList>
+
+namespace Swift {
+ class RosterItem {
+ public:
+ RosterItem(RosterItem* parent);
+ ~RosterItem();
+ void addChild(RosterItem* child);
+ RosterItem* getParentItem();
+ int rowCount();
+ int rowOf(RosterItem* item);
+ RosterItem* getItem(int row);
+ private:
+ QList<RosterItem*> children_;
+ RosterItem* parent_;
+ };
+
+} \ No newline at end of file
diff --git a/Swift/QtUI/Roster/RosterModel.cpp b/Swift/QtUI/Roster/RosterModel.cpp
new file mode 100644
index 0000000..2c9a2cc
--- /dev/null
+++ b/Swift/QtUI/Roster/RosterModel.cpp
@@ -0,0 +1,56 @@
+#include "RosterModel.h"
+
+namespace Swift {
+
+RosterModel::RosterModel(RosterItem* tree) {
+ tree_ = tree;
+}
+
+RosterModel::~RosterModel() {
+
+}
+
+int RosterModel::columnCount(const QModelIndex& parent) const {
+ Q_UNUSED(parent);
+ return 1;
+}
+
+QVariant RosterModel::data(const QModelIndex& index, int role) const {
+ if (!index.isValid()) {
+ return QVariant();
+ }
+ return QVariant("bob");
+}
+
+QModelIndex RosterModel::index(int row, int column, const QModelIndex& parent) const {
+ RosterItem* parentItem = parent.isValid() ? static_cast<RosterItem*>(parent.internalPointer()) : tree_;
+ Q_ASSERT(parentItem);
+
+ return row < parentItem->rowCount() ? createIndex(row, column, parentItem->getItem(row)) : QModelIndex();
+}
+
+QModelIndex RosterModel::parent(const QModelIndex& index) const {
+ if (!index.isValid()) {
+ return QModelIndex();
+ }
+
+ RosterItem* item = static_cast<RosterItem*>(index.internalPointer());
+ Q_ASSERT(item);
+
+ RosterItem* parentItem = item->getParentItem();
+ return parentItem == tree_ ? QModelIndex() : createIndex(parentItem->getParentItem()->rowOf(parentItem), 0, parentItem);
+
+}
+
+int RosterModel::rowCount(const QModelIndex& parent) const {
+ if (!parent.isValid()) {
+ return 0;
+ }
+
+ RosterItem* item = static_cast<RosterItem*>(parent.internalPointer());
+ Q_ASSERT(item);
+
+ return item->rowCount();
+}
+
+} \ No newline at end of file
diff --git a/Swift/QtUI/Roster/RosterModel.h b/Swift/QtUI/Roster/RosterModel.h
new file mode 100644
index 0000000..a958f0d
--- /dev/null
+++ b/Swift/QtUI/Roster/RosterModel.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "Swift/QtUI/Roster/RosterItem.h"
+
+#include <QAbstractItemModel>
+#include <QList>
+
+namespace Swift {
+class RosterModel : public QAbstractItemModel {
+public:
+ RosterModel(RosterItem* tree);
+ ~RosterModel();
+ int columnCount(const QModelIndex& parent = QModelIndex()) const;
+ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
+ QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex& index) const;
+ int rowCount(const QModelIndex& parent = QModelIndex()) const;
+private:
+ RosterItem* tree_;
+};
+
+} \ No newline at end of file
diff --git a/Swift/QtUI/Roster/main.cpp b/Swift/QtUI/Roster/main.cpp
new file mode 100644
index 0000000..f3623ac
--- /dev/null
+++ b/Swift/QtUI/Roster/main.cpp
@@ -0,0 +1,31 @@
+#include <QtGui>
+#include "QtTreeWidget.h"
+#include "QtTreeWidgetFactory.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ //Swift::RosterModel model;
+
+ //QTreeView view;
+ //view.setModel(&model);
+ //view.setWindowTitle("A roster");
+ //view.show();
+
+ Swift::QtTreeWidgetFactory treeWidgetFactory;
+ Swift::QtTreeWidget* tree = dynamic_cast<Swift::QtTreeWidget*>(treeWidgetFactory.createTreeWidget());
+ Swift::QtTreeWidgetItem* group = dynamic_cast<Swift::QtTreeWidgetItem*>(treeWidgetFactory.createTreeWidgetItem(tree));
+ group->setText("People");
+ group->setBackgroundColor(0xBBBBBB);
+ Swift::QtTreeWidgetItem* item1 = dynamic_cast<Swift::QtTreeWidgetItem*>(treeWidgetFactory.createTreeWidgetItem(group));
+ Swift::QtTreeWidgetItem* item2 = dynamic_cast<Swift::QtTreeWidgetItem*>(treeWidgetFactory.createTreeWidgetItem(group));
+ Swift::QtTreeWidgetItem* item3 = dynamic_cast<Swift::QtTreeWidgetItem*>(treeWidgetFactory.createTreeWidgetItem(group));
+ Swift::QtTreeWidgetItem* item4 = dynamic_cast<Swift::QtTreeWidgetItem*>(treeWidgetFactory.createTreeWidgetItem(group));
+ item1->setText("Remko");
+ item2->setText("Kevin");
+ item3->setText("Cath");
+ item4->setText("Kim");
+ tree->show();
+ return app.exec();
+} \ No newline at end of file
diff --git a/Swift/QtUI/Swift.pro b/Swift/QtUI/Swift.pro
index 0af8216..7c36c07 100644
--- a/Swift/QtUI/Swift.pro
+++ b/Swift/QtUI/Swift.pro
@@ -55,9 +55,6 @@ HEADERS += \
QtSettingsProvider.h \
QtStatusWidget.h \
QtSwift.h \
- QtTreeWidget.h \
- QtTreeWidgetFactory.h \
- QtTreeWidgetItem.h \
QtChatView.h \
QtChatTabs.h \
QtSoundPlayer.h \
@@ -79,7 +76,6 @@ SOURCES += \
QtSettingsProvider.cpp \
QtStatusWidget.cpp \
QtSwift.cpp \
- QtTreeWidget.cpp \
QtChatView.cpp \
QtChatTabs.cpp \
QtSoundPlayer.cpp \
@@ -91,6 +87,8 @@ SOURCES += \
FORMS += QtJoinMUCDialog.ui
+include(Roster/Roster.pri)
+
RESOURCES += Swift.qrc DefaultTheme.qrc
win32 {
diff --git a/Swiften/Roster/Roster.cpp b/Swiften/Roster/Roster.cpp
index 61c0286..b51d8eb 100644
--- a/Swiften/Roster/Roster.cpp
+++ b/Swiften/Roster/Roster.cpp
@@ -39,7 +39,7 @@ GroupRosterItem* Roster::getGroup(const String& groupName) {
}
GroupRosterItem* group = new GroupRosterItem(groupName, treeWidget_, widgetFactory_);
children_.push_back(group);
- items_.push_back(group);
+ items_.push_back(group);
return group;
}
@@ -49,7 +49,7 @@ void Roster::handleUserAction(boost::shared_ptr<UserRosterAction> action) {
void Roster::addContact(const JID& jid, const String& name, const String& group) {
ContactRosterItem *item = new ContactRosterItem(jid, name, getGroup(group), widgetFactory_);
- items_.push_back(item);
+ items_.push_back(item);
item->onUserAction.connect(boost::bind(&Roster::handleUserAction, this, _1));
filterItem(item);