summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/buddywindow.cpp11
-rw-r--r--src/gui/buddywindow.h3
-rw-r--r--src/resources/buddylist.cpp39
-rw-r--r--src/resources/buddylist.h13
4 files changed, 33 insertions, 33 deletions
diff --git a/src/gui/buddywindow.cpp b/src/gui/buddywindow.cpp
index e5b0d82f..54652a30 100644
--- a/src/gui/buddywindow.cpp
+++ b/src/gui/buddywindow.cpp
@@ -23,17 +23,17 @@
#include "buddywindow.h"
BuddyWindow::BuddyWindow():
- Window("")
+ Window("Buddys")
{
setContentSize(80,200);
- textlist = new TextBox();
- textlist->setEditable(false);
- scrollArea = new ScrollArea(textlist);
+ listbox = new gcn::ListBox();
+ listbox->setListModel(dynamic_cast<ListModel*>(this));
+ scrollArea = new ScrollArea(listbox);
}
BuddyWindow::~BuddyWindow()
{
- delete textlist;
+ delete listbox;
delete scrollArea;
}
@@ -41,6 +41,7 @@ void BuddyWindow::draw(gcn::Graphics *graphics)
{
// Draw the children
Window::draw(graphics);
+
}
void BuddyWindow::action(const std::string& eventId)
diff --git a/src/gui/buddywindow.h b/src/gui/buddywindow.h
index 8fa515d5..00fb07fb 100644
--- a/src/gui/buddywindow.h
+++ b/src/gui/buddywindow.h
@@ -26,7 +26,6 @@
#include <guichan.hpp>
#include "window.h"
#include "scrollarea.h"
-#include "textbox.h"
#include "../resources/buddylist.h"
/**
@@ -59,7 +58,7 @@ class BuddyWindow : public Window, public BuddyList,
void action(const std::string &actionId);
private:
- TextBox *textlist;
+ gcn::ListBox *listbox;
ScrollArea *scrollArea;
};
diff --git a/src/resources/buddylist.cpp b/src/resources/buddylist.cpp
index 0f64492b..87e6438f 100644
--- a/src/resources/buddylist.cpp
+++ b/src/resources/buddylist.cpp
@@ -24,7 +24,7 @@
#include <iostream>
BuddyList::BuddyList()
-{
+{
}
BuddyList::~BuddyList()
@@ -39,19 +39,22 @@ bool BuddyList::addBuddy(const std::string buddy)
if(*buddyit == buddy) return false;
}
- // Buddy doesnt exist
+ // Buddy doesnt exist, add it
buddylist.push_back(buddy);
+
return true;
}
bool BuddyList::removeBuddy(const std::string buddy)
{
- for(buddyit = buddylist.begin(); buddyit != buddylist.end(); buddyit++)
- {
- // Buddy exist, remove it
- if(*buddyit == buddy) {
- buddylist.remove(buddy);
- return true;
+ if(buddylist.size() > 0) {
+ for(buddyit = buddylist.begin(); buddyit != buddylist.end(); buddyit++)
+ {
+ // Buddy exist, remove it
+ if(*buddyit == buddy) {
+ buddylist.remove(buddy);
+ return true;
+ }
}
}
@@ -59,24 +62,20 @@ bool BuddyList::removeBuddy(const std::string buddy)
return false;
}
-int BuddyList::getBuddyNumber(void)
+int BuddyList::getNumberOfElements(void)
{
- int ret = 0;
- for(buddyit = buddylist.begin(); buddyit != buddylist.end(); buddyit++)
- ret++;
- return ret;
+ return buddylist.size();
}
-std::string BuddyList::getBuddy(int number)
+std::string BuddyList::getElementAt(int number)
{
- int i = 0;
- for(buddyit = buddylist.begin(); buddyit != buddylist.end(); buddyit++)
+ if(number <= buddylist.size())
{
- if(i == number)
- return *buddyit;
- i++;
+ buddyit = buddylist.begin();
+ std::advance(buddyit, number);
+ return *buddyit;
}
-
+
return "";
}
diff --git a/src/resources/buddylist.h b/src/resources/buddylist.h
index cb798f1e..704ce450 100644
--- a/src/resources/buddylist.h
+++ b/src/resources/buddylist.h
@@ -23,10 +23,11 @@
#ifndef _TMW_BUDDYLIST_H
#define _TMW_BUDDYLIST_H
+#include <guichan.hpp>
#include <list>
#include <string>
-class BuddyList {
+class BuddyList : public gcn::ListModel {
public:
/**
* Constructor
@@ -36,27 +37,27 @@ class BuddyList {
/**
* Destructor
*/
- ~BuddyList();
+ virtual ~BuddyList();
/**
- * Adds 'buddy' to the list
+ * Adds buddy to the list
*/
bool addBuddy(const std::string buddy);
/**
- * Removes 'buddy' from the list
+ * Removes buddy from the list
*/
bool removeBuddy(const std::string buddy);
/**
* Returns the number of buddy on the list
*/
- int getBuddyNumber(void);
+ int getNumberOfElements(void);
/**
* Returns the buddy of the number or null
*/
- std::string getBuddy(int number);
+ std::string getElementAt(int number);
private:
std::list<std::string> buddylist; /**< Buddy list */