00001 /* 00002 * synergy -- mouse and keyboard sharing utility 00003 * Copyright (C) 2003 Chris Schoeneman 00004 * 00005 * This package is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public License 00007 * found in the file COPYING that should have accompanied this file. 00008 * 00009 * This package is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 */ 00014 00015 #include "CServerTaskBarReceiver.h" 00016 #include "CServer.h" 00017 #include "CLock.h" 00018 #include "CStringUtil.h" 00019 #include "IEventQueue.h" 00020 #include "CArch.h" 00021 #include "Version.h" 00022 00023 // 00024 // CServerTaskBarReceiver 00025 // 00026 00027 CServerTaskBarReceiver::CServerTaskBarReceiver() : 00028 m_state(kNotRunning) 00029 { 00030 // do nothing 00031 } 00032 00033 CServerTaskBarReceiver::~CServerTaskBarReceiver() 00034 { 00035 // do nothing 00036 } 00037 00038 void 00039 CServerTaskBarReceiver::updateStatus(CServer* server, const CString& errorMsg) 00040 { 00041 { 00042 // update our status 00043 m_errorMessage = errorMsg; 00044 if (server == NULL) { 00045 if (m_errorMessage.empty()) { 00046 m_state = kNotRunning; 00047 } 00048 else { 00049 m_state = kNotWorking; 00050 } 00051 } 00052 else { 00053 m_clients.clear(); 00054 server->getClients(m_clients); 00055 if (m_clients.size() <= 1) { 00056 m_state = kNotConnected; 00057 } 00058 else { 00059 m_state = kConnected; 00060 } 00061 } 00062 00063 // let subclasses have a go 00064 onStatusChanged(server); 00065 } 00066 00067 // tell task bar 00068 ARCH->updateReceiver(this); 00069 } 00070 00071 CServerTaskBarReceiver::EState 00072 CServerTaskBarReceiver::getStatus() const 00073 { 00074 return m_state; 00075 } 00076 00077 const CString& 00078 CServerTaskBarReceiver::getErrorMessage() const 00079 { 00080 return m_errorMessage; 00081 } 00082 00083 const CServerTaskBarReceiver::CClients& 00084 CServerTaskBarReceiver::getClients() const 00085 { 00086 return m_clients; 00087 } 00088 00089 void 00090 CServerTaskBarReceiver::quit() 00091 { 00092 EVENTQUEUE->addEvent(CEvent(CEvent::kQuit)); 00093 } 00094 00095 void 00096 CServerTaskBarReceiver::onStatusChanged(CServer*) 00097 { 00098 // do nothing 00099 } 00100 00101 void 00102 CServerTaskBarReceiver::lock() const 00103 { 00104 // do nothing 00105 } 00106 00107 void 00108 CServerTaskBarReceiver::unlock() const 00109 { 00110 // do nothing 00111 } 00112 00113 std::string 00114 CServerTaskBarReceiver::getToolTip() const 00115 { 00116 switch (m_state) { 00117 case kNotRunning: 00118 return CStringUtil::print("%s: Not running", kAppVersion); 00119 00120 case kNotWorking: 00121 return CStringUtil::print("%s: %s", 00122 kAppVersion, m_errorMessage.c_str()); 00123 00124 case kNotConnected: 00125 return CStringUtil::print("%s: Waiting for clients", kAppVersion); 00126 00127 case kConnected: 00128 return CStringUtil::print("%s: Connected", kAppVersion); 00129 00130 default: 00131 return ""; 00132 } 00133 }