mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
278 lines
8.6 KiB
C++
278 lines
8.6 KiB
C++
/*******************************************************************************
|
|
* gui/common/StatusDefs.cpp *
|
|
* *
|
|
* Copyright (c) 2010, RetroShare Team <retroshare.project@gmail.com> *
|
|
* *
|
|
* This program is free software: you can redistribute it and/or modify *
|
|
* it under the terms of the GNU Affero General Public License as *
|
|
* published by the Free Software Foundation, either version 3 of the *
|
|
* License, or (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU Affero General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Affero General Public License *
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
|
* *
|
|
*******************************************************************************/
|
|
|
|
#include <QCoreApplication>
|
|
#include <retroshare/rsstatus.h>
|
|
#include <retroshare/rspeers.h>
|
|
|
|
#include "StatusDefs.h"
|
|
|
|
QString StatusDefs::name(unsigned int status)
|
|
{
|
|
switch (status) {
|
|
case RS_STATUS_OFFLINE:
|
|
return qApp->translate("StatusDefs", "Offline");
|
|
case RS_STATUS_AWAY:
|
|
return qApp->translate("StatusDefs", "Away");
|
|
case RS_STATUS_BUSY:
|
|
return qApp->translate("StatusDefs", "Busy");
|
|
case RS_STATUS_ONLINE:
|
|
return qApp->translate("StatusDefs", "Online");
|
|
case RS_STATUS_INACTIVE:
|
|
return qApp->translate("StatusDefs", "Idle");
|
|
}
|
|
|
|
std::cerr << "StatusDefs::name: Unknown status requested " << status;
|
|
return "";
|
|
}
|
|
|
|
const char *StatusDefs::imageIM(unsigned int status)
|
|
{
|
|
switch (status) {
|
|
case RS_STATUS_OFFLINE:
|
|
return ":/images/im-user-offline.png";
|
|
case RS_STATUS_AWAY:
|
|
return ":/images/im-user-away.png";
|
|
case RS_STATUS_BUSY:
|
|
return ":/images/im-user-busy.png";
|
|
case RS_STATUS_ONLINE:
|
|
return ":/images/im-user.png";
|
|
case RS_STATUS_INACTIVE:
|
|
return ":/images/im-user-inactive.png";
|
|
}
|
|
|
|
std::cerr << "StatusDefs::imageIM: Unknown status requested " << status;
|
|
return "";
|
|
}
|
|
|
|
const char *StatusDefs::imageUser(unsigned int status)
|
|
{
|
|
switch (status) {
|
|
case RS_STATUS_OFFLINE:
|
|
return ":/images/user/identityoffline24.png";
|
|
case RS_STATUS_AWAY:
|
|
return ":/images/user/identity24away.png";
|
|
case RS_STATUS_BUSY:
|
|
return ":/images/user/identity24busy.png";
|
|
case RS_STATUS_ONLINE:
|
|
return ":/images/user/identity24.png";
|
|
case RS_STATUS_INACTIVE:
|
|
return ":/images/user/identity24idle.png";
|
|
}
|
|
|
|
std::cerr << "StatusDefs::imageUser: Unknown status requested " << status;
|
|
return "";
|
|
}
|
|
|
|
const char *StatusDefs::imageStatus(unsigned int status)
|
|
{
|
|
switch (status) {
|
|
case RS_STATUS_OFFLINE:
|
|
return ":/icons/user-offline_64.png";
|
|
case RS_STATUS_AWAY:
|
|
return ":/icons/user-away_64.png";
|
|
case RS_STATUS_BUSY:
|
|
return ":/icons/user-busy_64.png";
|
|
case RS_STATUS_ONLINE:
|
|
return ":/icons/user-online_64.png";
|
|
case RS_STATUS_INACTIVE:
|
|
return ":/icons/user-away-extended_64.png";
|
|
}
|
|
|
|
std::cerr << "StatusDefs::imageUser: Unknown status requested " << status;
|
|
return "";
|
|
}
|
|
|
|
QString StatusDefs::tooltip(unsigned int status)
|
|
{
|
|
switch (status) {
|
|
case RS_STATUS_OFFLINE:
|
|
return qApp->translate("StatusDefs", "Friend is offline");
|
|
case RS_STATUS_AWAY:
|
|
return qApp->translate("StatusDefs", "Friend is away");
|
|
case RS_STATUS_BUSY:
|
|
return qApp->translate("StatusDefs", "Friend is busy");
|
|
case RS_STATUS_ONLINE:
|
|
return qApp->translate("StatusDefs", "Friend is online");
|
|
case RS_STATUS_INACTIVE:
|
|
return qApp->translate("StatusDefs", "Friend is idle");
|
|
}
|
|
|
|
std::cerr << "StatusDefs::tooltip: Unknown status requested " << status;
|
|
return "";
|
|
}
|
|
|
|
QFont StatusDefs::font(unsigned int status)
|
|
{
|
|
QFont font;
|
|
|
|
switch (status) {
|
|
case RS_STATUS_AWAY:
|
|
case RS_STATUS_BUSY:
|
|
case RS_STATUS_ONLINE:
|
|
case RS_STATUS_INACTIVE:
|
|
font.setBold(true);
|
|
return font;
|
|
case RS_STATUS_OFFLINE:
|
|
font.setBold(false);
|
|
return font;
|
|
}
|
|
|
|
std::cerr << "StatusDefs::font: Unknown status requested " << status;
|
|
return font;
|
|
}
|
|
|
|
QString StatusDefs::peerStateString(int peerState)
|
|
{
|
|
if (peerState & RS_PEER_STATE_CONNECTED) {
|
|
return qApp->translate("StatusDefs", "Connected");
|
|
} else if (peerState & RS_PEER_STATE_UNREACHABLE) {
|
|
return qApp->translate("StatusDefs", "Unreachable");
|
|
} else if (peerState & RS_PEER_STATE_ONLINE) {
|
|
return qApp->translate("StatusDefs", "Available");
|
|
} else if (peerState & RS_PEER_STATE_FRIEND) {
|
|
return qApp->translate("StatusDefs", "Offline");
|
|
}
|
|
|
|
return qApp->translate("StatusDefs", "Neighbor");
|
|
}
|
|
|
|
QString StatusDefs::connectStateString(RsPeerDetails &details)
|
|
{
|
|
QString stateString;
|
|
bool isConnected = false;
|
|
|
|
switch (details.connectState) {
|
|
case 0:
|
|
stateString = peerStateString(details.state);
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_TRYING_TCP:
|
|
stateString = qApp->translate("StatusDefs", "Trying TCP");
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_TRYING_UDP:
|
|
stateString = qApp->translate("StatusDefs", "Trying UDP");
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_TCP:
|
|
stateString = qApp->translate("StatusDefs", "Connected: TCP");
|
|
isConnected = true;
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_UDP:
|
|
stateString = qApp->translate("StatusDefs", "Connected: UDP");
|
|
isConnected = true;
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_TOR:
|
|
stateString = qApp->translate("StatusDefs", "Connected: Tor");
|
|
isConnected = true;
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_I2P:
|
|
stateString = qApp->translate("StatusDefs", "Connected: I2P");
|
|
isConnected = true;
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_UNKNOWN:
|
|
stateString = qApp->translate("StatusDefs", "Connected: Unknown");
|
|
isConnected = true;
|
|
break;
|
|
}
|
|
|
|
if(isConnected) {
|
|
stateString += " ";
|
|
if(details.actAsServer)
|
|
stateString += qApp->translate("StatusDefs", "inbound connection");
|
|
else
|
|
stateString += qApp->translate("StatusDefs", "outbound connection");
|
|
}
|
|
|
|
if (details.connectStateString.empty() == false) {
|
|
if (stateString.isEmpty() == false) {
|
|
stateString += ": ";
|
|
}
|
|
stateString += QString::fromStdString(details.connectStateString);
|
|
}
|
|
|
|
/* HACK to display DHT Status info too */
|
|
if (details.foundDHT) {
|
|
if (stateString.isEmpty() == false) {
|
|
stateString += ", ";
|
|
}
|
|
stateString += qApp->translate("StatusDefs", "DHT: Contact");
|
|
}
|
|
|
|
return stateString;
|
|
}
|
|
|
|
QString StatusDefs::connectStateWithoutTransportTypeString(RsPeerDetails &details)
|
|
{
|
|
QString stateString;
|
|
|
|
switch (details.connectState) {
|
|
case 0:
|
|
stateString = peerStateString(details.state);
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_TRYING_TCP:
|
|
stateString = qApp->translate("StatusDefs", "Trying TCP");
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_TRYING_UDP:
|
|
stateString = qApp->translate("StatusDefs", "Trying UDP");
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_TCP:
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_UDP:
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_TOR:
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_I2P:
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_UNKNOWN:
|
|
stateString = qApp->translate("StatusDefs", "Connected");
|
|
break;
|
|
}
|
|
|
|
return stateString;
|
|
}
|
|
|
|
QString StatusDefs::connectStateIpString(RsPeerDetails &details)
|
|
{
|
|
QString stateString = QString("");
|
|
|
|
switch (details.connectState) {
|
|
case 0:
|
|
stateString = peerStateString(details.state);
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_TRYING_TCP:
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_TCP:
|
|
stateString += QString(details.actAsServer ? qApp->translate("StatusDefs", "TCP-in") : qApp->translate("StatusDefs", "TCP-out"));
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_TRYING_UDP:
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_UDP:
|
|
stateString += qApp->translate("StatusDefs", "UDP");
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_TOR:
|
|
stateString += QString(details.actAsServer ? qApp->translate("StatusDefs", "Tor-in") : qApp->translate("StatusDefs", "Tor-out"));
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_I2P:
|
|
stateString += QString(details.actAsServer ? qApp->translate("StatusDefs", "I2P-in") : qApp->translate("StatusDefs", "I2P-out"));
|
|
break;
|
|
case RS_PEER_CONNECTSTATE_CONNECTED_UNKNOWN:
|
|
stateString += qApp->translate("StatusDefs", "unkown");
|
|
break;
|
|
}
|
|
stateString += QString(" : ");
|
|
|
|
stateString += QString(details.connectAddr.c_str()) ;
|
|
|
|
return stateString;
|
|
}
|