summaryrefslogtreecommitdiff
path: root/protocols/Skype/src/skype_account.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Skype/src/skype_account.cpp')
-rw-r--r--protocols/Skype/src/skype_account.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/protocols/Skype/src/skype_account.cpp b/protocols/Skype/src/skype_account.cpp
new file mode 100644
index 0000000000..18505d9af4
--- /dev/null
+++ b/protocols/Skype/src/skype_account.cpp
@@ -0,0 +1,43 @@
+#include "skype_proto.h"
+
+void CSkypeProto::OnAccountChanged(int prop)
+{
+ switch(prop)
+ {
+ case CAccount::P_STATUS:
+ CAccount::STATUS loginStatus;
+ this->account->GetPropStatus(loginStatus);
+
+ if (loginStatus == CAccount::LOGGED_IN)
+ {
+ this->ForkThread(&CSkypeProto::SignInAsync, 0);
+ //this->SignInAsync(this);
+ }
+
+ if ((loginStatus == CAccount::LOGGED_OUT || loginStatus == CAccount::LOGGED_OUT_AND_PWD_SAVED))
+ {
+ CAccount::LOGOUTREASON whyLogout;
+ this->account->GetPropLogoutreason(whyLogout);
+ if (whyLogout != CAccount::LOGOUT_CALLED)
+ {
+ this->m_iStatus = ID_STATUS_OFFLINE;
+ this->SendBroadcast(
+ ACKTYPE_LOGIN,
+ ACKRESULT_FAILED,
+ NULL,
+ this->SkypeToMirandaLoginError(whyLogout));
+
+ this->ShowNotification(NULL, CSkypeProto::LogoutReasons[whyLogout - 1]);
+ }
+ }
+ break;
+
+ default :
+ OnProfileChanged(prop);
+ }
+}
+
+bool CSkypeProto::IsOnline()
+{
+ return this->m_iStatus > ID_STATUS_OFFLINE;
+} \ No newline at end of file