diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-05-22 18:48:02 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-05-22 19:00:05 (GMT) |
commit | 182bdd709a57ab4d17f163ae28c5663fb3dd4287 (patch) | |
tree | 0633db17aba8df03d35405a7f102dc6eb6572cbc /Swift/Controllers/Roster | |
parent | fabf140dcbefc420653406e602a521fd0fcba66d (diff) | |
download | swift-182bdd709a57ab4d17f163ae28c5663fb3dd4287.zip swift-182bdd709a57ab4d17f163ae28c5663fb3dd4287.tar.bz2 |
Added TableRoster.
Diffstat (limited to 'Swift/Controllers/Roster')
-rw-r--r-- | Swift/Controllers/Roster/TableRoster.cpp | 36 | ||||
-rw-r--r-- | Swift/Controllers/Roster/TableRoster.h | 51 |
2 files changed, 87 insertions, 0 deletions
diff --git a/Swift/Controllers/Roster/TableRoster.cpp b/Swift/Controllers/Roster/TableRoster.cpp new file mode 100644 index 0000000..fda7de8 --- /dev/null +++ b/Swift/Controllers/Roster/TableRoster.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2011 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <Swift/Controllers/Roster/TableRoster.h> + +#include <boost/cast.hpp> + +#include <Swift/Controllers/Roster/Roster.h> +#include <Swift/Controllers/Roster/GroupRosterItem.h> + +using namespace Swift; + +TableRoster::TableRoster(Roster* model) : model(model) { +} + +size_t TableRoster::getNumberOfSections() const { + return model ? model->getRoot()->getDisplayedChildren().size() : 0; +} + +size_t TableRoster::getNumberOfRowsInSection(size_t section) const { + return boost::polymorphic_downcast<Swift::GroupRosterItem*>(model->getRoot()->getDisplayedChildren()[section])->getDisplayedChildren().size(); +} + +const std::string& TableRoster::getSectionTitle(size_t section) { + return model->getRoot()->getDisplayedChildren()[section]->getDisplayName(); +} + +TableRoster::Item TableRoster::getItem(const Index& index) const { + Item item; + item.name = boost::polymorphic_downcast<Swift::GroupRosterItem*>(model->getRoot()->getDisplayedChildren().at(index.section))->getDisplayedChildren().at(index.row)->getDisplayName(); + item.description = "My Status"; + return item; +} diff --git a/Swift/Controllers/Roster/TableRoster.h b/Swift/Controllers/Roster/TableRoster.h new file mode 100644 index 0000000..7d92995 --- /dev/null +++ b/Swift/Controllers/Roster/TableRoster.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2011 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <string> +#include <vector> +#include <Swiften/Base/boost_bsignals.h> + +#include <Swiften/JID/JID.h> + +namespace Swift { + class Roster; + + class TableRoster { + public: + struct Item { + std::string name; + std::string description; + JID jid; + }; + struct Index { + Index(size_t section, size_t row) : section(section), row(row) { + } + size_t section; + size_t row; + }; + + TableRoster(Roster* model); + + size_t getNumberOfSections() const; + size_t getNumberOfRowsInSection(size_t section) const; + + const std::string& getSectionTitle(size_t); + + Item getItem(const Index&) const; + + boost::signal<void ()> onBeginUpdates; + boost::signal<void (const std::vector<Index>&)> onRowsInserted; + boost::signal<void (const std::vector<Index>&)> onRowsDeleted; + boost::signal<void (const std::vector<size_t>&)> onSectionsInserted; + boost::signal<void (const std::vector<size_t>&)> onSectionsDeleted; + boost::signal<void ()> onEndUpdates; + + private: + Roster* model; + }; +} |