[prev in list] [next in list] [prev in thread] [next in thread]
List: licq-cvs
Subject: [Licq-cvs] msn/src
From: Jon Keating <emostar () users ! sourceforge ! net>
Date: 2004-05-09 11:24:17
Message-ID: E1BMmPp-0004hC-GB () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]
Update of /cvsroot/licq/msn/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17670
Modified Files:
msn.cpp msn.h msnpacket.cpp msnpacket.h
Log Message:
Support changing your status.
Index: msn.cpp
===================================================================
RCS file: /cvsroot/licq/msn/src/msn.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- msn.cpp 7 May 2004 15:30:18 -0000 1.17
+++ msn.cpp 9 May 2004 11:24:14 -0000 1.18
@@ -288,6 +288,12 @@
}
case PROTOxCHANGE_STATUS:
+ {
+ CChangeStatusSignal *sig = static_cast<CChangeStatusSignal *>(s);
+ MSNChangeStatus(sig->Status());
+ break;
+ }
+
case PROTOxLOGOFF:
case PROTOxADD_USER:
case PROTOxREM_USER:
@@ -588,7 +594,18 @@
m_pPacketBuf->SkipParameter();
string strVersion = m_pPacketBuf->GetParameter();
- pReply = new CPS_MSNChangeStatus();
+ pReply = new CPS_MSNChangeStatus(ICQ_STATUS_ONLINE);
+ SendPacket(pReply);
+
+ // Send our local list now
+ FOR_EACH_PROTO_USER_START(MSN_PPID, LOCK_R)
+ {
+ pReply = new CPS_MSNAddUser(pUser->IdString());
+ SendPacket(pReply);
+ }
+ FOR_EACH_PROTO_USER_END
+
+ pReply = 0;
}
else if (strCmd == "LST")
{
@@ -602,15 +619,21 @@
}
else if (strCmd == "CHG")
{
- // Send our local list now
- FOR_EACH_PROTO_USER_START(MSN_PPID, LOCK_R)
- {
- pReply = new CPS_MSNAddUser(pUser->IdString());
- SendPacket(pReply);
- }
- FOR_EACH_PROTO_USER_END
+ string strStatus = m_pPacketBuf->GetParameter();
+ ICQUser *o = gUserManager.FetchOwner(MSN_PPID, LOCK_W);
+ unsigned long nStatus;
- pReply = 0;
+ if (strStatus == "NLN")
+ nStatus = ICQ_STATUS_ONLINE;
+ else if (strStatus == "BSY")
+ nStatus = ICQ_STATUS_DND;
+ else if (strStatus == "HDN")
+ nStatus = ICQ_STATUS_ONLINE | ICQ_STATUS_FxPRIVATE;
+ else
+ nStatus = ICQ_STATUS_AWAY;
+
+ m_pDaemon->ChangeUserStatus(o, nStatus);
+ gUserManager.DropOwner(MSN_PPID);
}
else if (strCmd == "ILN" || strCmd == "NLN")
{
@@ -879,6 +902,11 @@
}
}
+void CMSN::MSNChangeStatus(unsigned long _nStatus)
+{
+ CMSNPacket *pSend = new CPS_MSNChangeStatus(_nStatus);
+ SendPacket(pSend);
+}
void CMSN::MSNPing()
{
Index: msn.h
===================================================================
RCS file: /cvsroot/licq/msn/src/msn.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- msn.h 13 Mar 2004 11:02:08 -0000 1.8
+++ msn.h 9 May 2004 11:24:14 -0000 1.9
@@ -83,8 +83,8 @@
bool MSNSBConnectAnswer(string &, string &, string &, string &);
void MSNSendMessage(char *, char *, pthread_t);
+ void MSNChangeStatus(unsigned long);
-
// Internal functions
int HashValue(int n) { return n % 211; }
Index: msnpacket.cpp
===================================================================
RCS file: /cvsroot/licq/msn/src/msnpacket.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- msnpacket.cpp 13 Mar 2004 11:02:08 -0000 1.10
+++ msnpacket.cpp 9 May 2004 11:24:14 -0000 1.11
@@ -161,13 +161,39 @@
m_pBuffer->Pack("\r\n", 2);
}
-CPS_MSNChangeStatus::CPS_MSNChangeStatus() : CMSNPacket()
+CPS_MSNChangeStatus::CPS_MSNChangeStatus(unsigned long _nStatus) : CMSNPacket()
{
m_szCommand = strdup("CHG");
- char szParams[] = "NLN 268435500";
- m_nSize += strlen(szParams);
+ char szParams[] = " 268435500";
+ m_nSize += strlen(szParams) + 3;
InitBuffer();
+ char szStatus[4];
+
+ if (_nStatus & ICQ_STATUS_FxPRIVATE)
+ strcpy(szStatus, "HDN");
+ else
+ {
+ switch (_nStatus & 0x0000FFFF)
+ {
+ case ICQ_STATUS_ONLINE:
+ case ICQ_STATUS_FREEFORCHAT:
+ strcpy(szStatus, "NLN");
+ break;
+
+ case ICQ_STATUS_OCCUPIED:
+ case ICQ_STATUS_DND:
+ strcpy(szStatus, "BSY");
+ break;
+
+ default:
+ strcpy(szStatus, "AWY");
+ break;
+ }
+ }
+ szStatus[3] = '\0';
+
+ m_pBuffer->Pack(szStatus, strlen(szStatus));
m_pBuffer->Pack(szParams, strlen(szParams));
m_pBuffer->Pack("\r\n", 2);
}
Index: msnpacket.h
===================================================================
RCS file: /cvsroot/licq/msn/src/msnpacket.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- msnpacket.h 13 Mar 2004 11:02:08 -0000 1.8
+++ msnpacket.h 9 May 2004 11:24:14 -0000 1.9
@@ -116,7 +116,7 @@
class CPS_MSNChangeStatus : public CMSNPacket
{
public:
- CPS_MSNChangeStatus();
+ CPS_MSNChangeStatus(unsigned long);
};
class CPS_MSNSync : public CMSNPacket
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
Licq-cvs mailing list
Licq-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/licq-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic