mcabber/src/jabglue.c
changeset 116 1e7e59775f12
parent 114 065d8368c36b
child 118 1e8f646e2c5b
equal deleted inserted replaced
115:33bff2c57293 116:1e7e59775f12
    34 jconn jc;
    34 jconn jc;
    35 time_t LastPingTime;
    35 time_t LastPingTime;
    36 unsigned int KeepaliveDelay;
    36 unsigned int KeepaliveDelay;
    37 static int s_id = 1;  // FIXME which use??
    37 static int s_id = 1;  // FIXME which use??
    38 static int regmode, regdone;
    38 static int regmode, regdone;
       
    39 static enum imstatus mystatus = offline;
    39 unsigned char online;
    40 unsigned char online;
    40 
    41 
    41 char imstatus2char[imstatus_size] = {
    42 char imstatus2char[imstatus_size] = {
    42     '_', 'o', 'i', 'f', 'd', 'c', 'n', 'a'
    43     '_', 'o', 'i', 'f', 'd', 'c', 'n', 'a'
    43 };
    44 };
   201     if (now > LastPingTime + KeepaliveDelay)
   202     if (now > LastPingTime + KeepaliveDelay)
   202       jb_keepalive();
   203       jb_keepalive();
   203   }
   204   }
   204 }
   205 }
   205 
   206 
   206 void setjabberstatus(enum imstatus st, char *msg)
   207 inline enum imstatus jb_getstatus()
   207 {
   208 {
   208   xmlnode x = jutil_presnew(JPACKET__UNKNOWN, 0, 0);
   209   return mystatus;
       
   210 }
       
   211 
       
   212 void jb_setstatus(enum imstatus st, char *msg)
       
   213 {
       
   214   xmlnode x;
       
   215 
       
   216   if (!online)
       
   217     return;
       
   218 
       
   219   x = jutil_presnew(JPACKET__UNKNOWN, 0, 0);
   209 
   220 
   210   switch(st) {
   221   switch(st) {
   211     case away:
   222     case away:
   212         xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), "away",
   223         xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), "away",
   213                 (unsigned) -1);
   224                 (unsigned) -1);
   241   if (!add["prio"].empty())
   252   if (!add["prio"].empty())
   242     xmlnode_insert_cdata(xmlnode_insert_tag(x, "priority"),
   253     xmlnode_insert_cdata(xmlnode_insert_tag(x, "priority"),
   243             add["prio"].c_str(), (unsigned) -1);
   254             add["prio"].c_str(), (unsigned) -1);
   244   */
   255   */
   245 
   256 
   246   if (!msg || !*msg) {
   257   if (!msg) {
   247     msg  = ""; // FIXME
   258     msg  = ""; // FIXME
   248     //msg = imstatus2str(st);
   259     //msg = imstatus2str(st);
   249   }
   260   }
   250 
   261 
   251   xmlnode_insert_cdata(xmlnode_insert_tag(x, "status"), msg,
   262   xmlnode_insert_cdata(xmlnode_insert_tag(x, "status"), msg,
   252           (unsigned) -1);
   263           (unsigned) -1);
   253 
   264 
   254   jab_send(jc, x);
   265   jab_send(jc, x);
   255   xmlnode_free(x);
   266   xmlnode_free(x);
   256 
   267 
   257   //sendvisibility();
   268   //sendvisibility();   ???
   258 
   269 
   259   // XXX logger.putourstatus(proto, getstatus(), ourstatus = st);
   270   hk_mystatuschange(0, mystatus, st);
       
   271   mystatus = st;
   260 }
   272 }
   261 
   273 
   262 void jb_send_msg(const char *jid, const char *text)
   274 void jb_send_msg(const char *jid, const char *text)
   263 {
   275 {
   264   xmlnode x = jutil_msgnew(TMSG_CHAT, (char*)jid, 0, (char*)text);
   276   xmlnode x = jutil_msgnew(TMSG_CHAT, (char*)jid, 0, (char*)text);
   274   //flogged = TRUE;
   286   //flogged = TRUE;
   275   //ourstatus = available;
   287   //ourstatus = available;
   276 
   288 
   277   //setautostatus(jhook.manualstatus);
   289   //setautostatus(jhook.manualstatus);
   278 
   290 
   279   setjabberstatus(1, "I'm here!");
   291   jb_setstatus(available, "I'm here!"); // XXX not always "available"...
   280   buddylist_build();
   292   buddylist_build();
   281   /*
   293   /*
   282   for (i = 0; i < clist.count; i++) {
   294   for (i = 0; i < clist.count; i++) {
   283     c = (icqcontact *) clist.at(i);
   295     c = (icqcontact *) clist.at(i);
   284 
   296