Index: contacts.cpp =================================================================== --- contacts.cpp (revision 15345) +++ contacts.cpp (working copy) @@ -114,7 +114,12 @@ } else { setWord(hContact, "Status", ID_STATUS_OFFLINE); - setDword(hContact, WHATSAPP_KEY_LAST_SEEN, lastSeenTime); + if (lastSeenTime != -1) { + setDword(hContact, WHATSAPP_KEY_LAST_SEEN, lastSeenTime); + setByte(hContact, WHATSAPP_KEY_LAST_SEEN_DENIED, 0); + } + else + setByte(hContact, WHATSAPP_KEY_LAST_SEEN_DENIED, 1); } UpdateStatusMsg(hContact); } @@ -124,21 +129,19 @@ { std::wstringstream ss; + int status = getWord(hContact, "Status", ID_STATUS_OFFLINE); int lastSeen = getDword(hContact, WHATSAPP_KEY_LAST_SEEN, -1); - // TODO define these somewhere - // lastSeen -1: no time available in DB - // lastSeen -2: last seen denied by user - // lastSeen >= 0: timestamp - if (lastSeen >= 0) { + bool denied = getByte(hContact, WHATSAPP_KEY_LAST_SEEN_DENIED, 0); + if (lastSeen != -1) { time_t ts = lastSeen; TCHAR stzLastSeen[MAX_PATH]; - _tcsftime(stzLastSeen, _countof(stzLastSeen), TranslateT("Last seen on %x at %X"), localtime(&ts)); + if(status == ID_STATUS_ONLINE) + _tcsftime(stzLastSeen, _countof(stzLastSeen), TranslateT("Last online on %x at %X"), localtime(&ts)); + else { + _tcsftime(stzLastSeen, _countof(stzLastSeen), denied ? TranslateT("Denied: Last online on %x at %X") : TranslateT("Last seen on %x at %X"), localtime(&ts)); + } ss << stzLastSeen; } - else if (lastSeen == -2) { - ss << TranslateT("Last seen denied"); - } - db_set_ws(hContact, "CList", "StatusMsg", ss.str().c_str()); } Index: db.h =================================================================== --- db.h (revision 15345) +++ db.h (working copy) @@ -9,6 +9,7 @@ #define WHATSAPP_KEY_LOGGING_ENABLE "LoggingEnable" #define WHATSAPP_KEY_NAME "RealName" #define WHATSAPP_KEY_LAST_SEEN "LastSeen" +#define WHATSAPP_KEY_LAST_SEEN_DENIED "LastSeenDenied" #define WHATSAPP_KEY_AVATAR_ID "AvatarId" #define WHATSAPP_KEY_SYSTRAY_NOTIFY "UseSystrayNotify" #define WHATSAPP_KEY_DEF_GROUP "DefaultGroup" Index: WhatsAPI++/WAConnection.cpp =================================================================== --- WhatsAPI++/WAConnection.cpp (revision 15345) +++ WhatsAPI++/WAConnection.cpp (working copy) @@ -588,7 +588,7 @@ const string &type = node->getAttributeValue("type"); if (type == "unavailable") { const string &lastSeen = node->getAttributeValue("last"); - m_pEventHandler->onAvailable(from, false, (lastSeen == "deny") ? -2 : atoi(lastSeen.c_str())); + m_pEventHandler->onAvailable(from, false, (lastSeen == "deny") ? -1 : atoi(lastSeen.c_str())); } else if (type == "available" || type == "") m_pEventHandler->onAvailable(from, true);