------------------------------------------------------------
revno: 248
committer: Alan Alvarez <aalva...@aliensoft.net>
branch nick: login-system
timestamp: Tue 2010-10-05 15:28:40 -0400
message:
  Remove user leaving workplace from workplace tab
modified:
  mira-client/include/gui/qt/Workplace.h
  mira-client/include/gui/qt/WorkplaceMember.h
  mira-client/src/gui/qt/Workplace.cpp


--
lp:~mira-dev/mira/login-system
https://code.launchpad.net/~mira-dev/mira/login-system

You are subscribed to branch lp:~mira-dev/mira/login-system.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mira-dev/mira/login-system/+edit-subscription
=== modified file 'mira-client/include/gui/qt/Workplace.h'
--- mira-client/include/gui/qt/Workplace.h	2010-08-24 20:10:25 +0000
+++ mira-client/include/gui/qt/Workplace.h	2010-10-05 19:28:40 +0000
@@ -28,7 +28,6 @@
         typedef GuiInterface Utility;
         typedef std::list<Utility*> UtilityList;
         typedef std::list<WorkplaceMember> MemberList;
-        typedef std::list<QLabel*> MemberStatusList;
 
         Workplace() {}
         Workplace(const std::string& name);
@@ -60,7 +59,6 @@
         std::string      m_name;
         UtilityList      m_utilities;
         MemberList       m_members;
-        MemberStatusList m_memberStatusList;
 
         // GUI Objects
         QWidget*      m_summaryTab;

=== modified file 'mira-client/include/gui/qt/WorkplaceMember.h'
--- mira-client/include/gui/qt/WorkplaceMember.h	2010-02-18 13:40:18 +0000
+++ mira-client/include/gui/qt/WorkplaceMember.h	2010-10-05 19:28:40 +0000
@@ -2,6 +2,7 @@
 #define _WORKPLACE_MEMBER__H
 
 #include <string>
+#include <QLabel>
 
 #define STATUS_ONLINE  'n'
 #define STATUS_OFFLINE 'f'
@@ -10,6 +11,10 @@
 {
     std::string username;
     char        status;
+
+    // Used for Workplace tab (by class Workplace)
+    QLabel *iconLabel;
+    QLabel *usernameLabel;
 };
 
 #endif // _WORKPLACE_MEMBER__H

=== modified file 'mira-client/src/gui/qt/Workplace.cpp'
--- mira-client/src/gui/qt/Workplace.cpp	2010-09-09 00:19:31 +0000
+++ mira-client/src/gui/qt/Workplace.cpp	2010-10-05 19:28:40 +0000
@@ -10,6 +10,8 @@
 #include <QThread>
 #include <QLayoutItem>
 
+#include <iostream>
+
 typedef GuiInterface Utility;
 
 using namespace miraclient::gui;
@@ -145,18 +147,18 @@
 void Workplace::addMember(const WorkplaceMember& member)
 {
     m_members.push_back(member);
-    QLabel* icon = new QLabel(m_membersBox);
-    m_memberStatusList.push_back(icon);
+
+    m_members.back().iconLabel = new QLabel(m_membersBox);
 
     if (member.status == STATUS_ONLINE)
-        icon->setPixmap(QPixmap(":/images/chat-online.png"));
+        m_members.back().iconLabel->setPixmap(QPixmap(":/images/chat-online.png"));
     else if (member.status == STATUS_OFFLINE)
-        icon->setPixmap(QPixmap(":/images/chat-offline.png"));
+        m_members.back().iconLabel->setPixmap(QPixmap(":/images/chat-offline.png"));
     else
-        icon->setPixmap(QPixmap(":/images/chat-offline.png"));
+        m_members.back().iconLabel->setPixmap(QPixmap(":/images/chat-offline.png"));
 
-    QLabel* username = new QLabel(QString::fromStdString(member.username), m_membersBox);
-    m_membersBoxLayout->addRow(icon, username);
+    m_members.back().usernameLabel = new QLabel(QString::fromStdString(member.username), m_membersBox);
+    m_membersBoxLayout->addRow( m_members.back().iconLabel,  m_members.back().usernameLabel);
 }
 
 void Workplace::removeMember(const std::string &username)
@@ -164,9 +166,13 @@
     unsigned int i = 1; // Start at 1, because the local user is at position 0 (look at constructor)
     for (MemberList::iterator Iter = m_members.begin(); Iter != m_members.end(); ++Iter, ++i)
     {
+        std::cout << "Member " << Iter->username << std::endl;
         if (Iter->username == username)
         {
+            delete Iter->iconLabel;
+            delete Iter->usernameLabel;
             m_members.erase(Iter);
+
             QLayoutItem *item = m_membersBoxLayout->takeAt(i);
             if (item != 0)
                 delete item;
@@ -183,8 +189,7 @@
 
 void Workplace::changeMemberStatus(const std::string& username, char status)
 {
-    MemberStatusList::iterator statusIter = m_memberStatusList.begin();
-    for (MemberList::iterator Iter = m_members.begin(); Iter != m_members.end(); ++Iter, ++statusIter)
+    for (MemberList::iterator Iter = m_members.begin(); Iter != m_members.end(); ++Iter)
     {
         if (Iter->username == username)
         {
@@ -193,10 +198,10 @@
             switch (status)
             {
                 case STATUS_ONLINE:
-                    (*statusIter)->setPixmap(QPixmap(":/images/chat-online.png"));
+                    Iter->iconLabel->setPixmap(QPixmap(":/images/chat-online.png"));
                     break;
                 case STATUS_OFFLINE:
-                    (*statusIter)->setPixmap(QPixmap(":/images/chat-offline.png"));
+                    Iter->iconLabel->setPixmap(QPixmap(":/images/chat-offline.png"));
                     break;
             }
 
@@ -214,11 +219,10 @@
 void Workplace::goOffline()
 {
     // Mark all users as offline
-    MemberStatusList::iterator statusIter = m_memberStatusList.begin();
-    for (MemberList::iterator Iter = m_members.begin(); Iter != m_members.end(); ++Iter, ++statusIter)
+    for (MemberList::iterator Iter = m_members.begin(); Iter != m_members.end(); ++Iter)
     {
         Iter->status = STATUS_OFFLINE;
-        (*statusIter)->setPixmap(QPixmap(":/images/chat-offline.png"));
+        Iter->iconLabel->setPixmap(QPixmap(":/images/chat-offline.png"));
     }
 
     // TODO: Tell Utilities to go offline

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Mira-development mailing list
Mira-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mira-development

Reply via email to