Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

CServerTaskBarReceiver.cpp

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 }

Generated on Fri Nov 6 00:21:14 2009 for synergy-plus by  doxygen 1.3.9.1