void OmegleProto::NewChat() { if (facy.state_ == STATE_WAITING) { UpdateChat(NULL, TranslateT("We are already waiting for new stranger..."), false); return; } else if (facy.state_ == STATE_ACTIVE || facy.state_ == STATE_SPY) { UpdateChat(NULL, TranslateT("Disconnecting..."), true); if (facy.stop()) debugLogA("***** Disconnected from stranger %s", facy.chat_id_.c_str()); else debugLogA("***** Error in disconnecting from stranger %s", facy.chat_id_.c_str()); if (facy.state_ == STATE_SPY) { DeleteChatContact(TranslateT("Stranger 1")); DeleteChatContact(TranslateT("Stranger 2")); } else { DeleteChatContact(TranslateT("Stranger")); } SetTopic(); // reset topic content ClearChat(); UpdateChat(NULL, TranslateT("Connecting..."), true); facy.state_ = STATE_WAITING; if (facy.start()) { UpdateChat(NULL, TranslateT("Waiting for Stranger..."), true); debugLogA("***** Waiting for stranger %s", facy.chat_id_.c_str()); } } else if (facy.state_ == STATE_DISCONNECTING) { //UpdateChat(NULL, TranslateT("We are disconnecting now, wait..."), false); return; } else { ClearChat(); UpdateChat(NULL, TranslateT("Connecting..."), true); facy.state_ = STATE_WAITING; if (facy.start()) { UpdateChat(NULL, TranslateT("Waiting for Stranger..."), true); debugLogA("***** Waiting for stranger %s", facy.chat_id_.c_str()); ForkThread(&OmegleProto::EventsLoop, this); } } }
void OmegleProto::StopChat(bool disconnect) { if (facy.state_ == STATE_WAITING) { UpdateChat(NULL, TranslateT("Connecting canceled."), false); } else if (facy.state_ == STATE_ACTIVE || facy.state_ == STATE_SPY) { bool spy = facy.state_ == STATE_SPY; if (disconnect) { facy.state_ = STATE_DISCONNECTING; UpdateChat(NULL, TranslateT("Disconnecting..."), true); if (facy.stop()) debugLogA("***** Disconnected from stranger %s", facy.chat_id_.c_str()); else debugLogA("***** Error in disconnecting from stranger %s", facy.chat_id_.c_str()); } if (spy) { DeleteChatContact(TranslateT("Stranger 1")); DeleteChatContact(TranslateT("Stranger 2")); } else { DeleteChatContact(TranslateT("Stranger")); } SetTopic(); // reset topic content CallService(MS_MSG_SETSTATUSTEXT, (WPARAM)GetChatHandle(), NULL); } else { // disconnecting or inactive return; } facy.state_ = STATE_INACTIVE; facy.chat_id_.clear(); }
int TwitterProto::OnContactDeleted(WPARAM wParam, LPARAM) { MCONTACT hContact = (MCONTACT)wParam; if (m_iStatus != ID_STATUS_ONLINE) return 0; if (!IsMyContact(hContact)) return 0; DBVARIANT dbv; if (!getString(hContact, TWITTER_KEY_UN, &dbv)) { if (in_chat_) DeleteChatContact(dbv.pszVal); mir_cslock s(twitter_lock_); twit_.remove_friend(dbv.pszVal); // Be careful about this until Miranda is fixed db_free(&dbv); } return 0; }