mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-25 23:49:35 -05:00
PeersDialog:
- Show the highest state of the ssl item in the gpg item. MessengerWindow: - Show the location and the custom state string in the gpg item of the ssl item with the highest state and existing custom state string. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3458 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
3ffbcb5569
commit
196e9cbf2d
@ -450,10 +450,6 @@ void MessengerWindow::insertPeers()
|
|||||||
rsStatus->getStatusList(statusInfo);
|
rsStatus->getStatusList(statusInfo);
|
||||||
#endif // MINIMAL_RSGUI
|
#endif // MINIMAL_RSGUI
|
||||||
|
|
||||||
// if(isIdle)
|
|
||||||
// QMessageBox::StandardButton sb = QMessageBox::warning ( NULL, tr("Idle"),
|
|
||||||
// tr("You are Idle"), QMessageBox::Ok);
|
|
||||||
|
|
||||||
if (!rsPeers) {
|
if (!rsPeers) {
|
||||||
/* not ready yet! */
|
/* not ready yet! */
|
||||||
std::cerr << "PeersDialog::insertPeers() not ready yet : rsPeers unintialized." << std::endl;
|
std::cerr << "PeersDialog::insertPeers() not ready yet : rsPeers unintialized." << std::endl;
|
||||||
@ -477,7 +473,8 @@ void MessengerWindow::insertPeers()
|
|||||||
/* get a link to the table */
|
/* get a link to the table */
|
||||||
QTreeWidget *peertreeWidget = ui.messengertreeWidget;
|
QTreeWidget *peertreeWidget = ui.messengertreeWidget;
|
||||||
|
|
||||||
bool bSortState = ui.actionSort_by_State->isChecked();
|
bool sortState = ui.actionSort_by_State->isChecked();
|
||||||
|
bool hideOfflineFriends = ui.actionHide_Offline_Friends->isChecked();
|
||||||
|
|
||||||
//remove items that are not fiends anymore
|
//remove items that are not fiends anymore
|
||||||
int itemCount = peertreeWidget->topLevelItemCount();
|
int itemCount = peertreeWidget->topLevelItemCount();
|
||||||
@ -526,7 +523,6 @@ void MessengerWindow::insertPeers()
|
|||||||
}
|
}
|
||||||
|
|
||||||
gpg_item -> setTextAlignment(COLUMN_NAME, Qt::AlignLeft | Qt::AlignVCenter );
|
gpg_item -> setTextAlignment(COLUMN_NAME, Qt::AlignLeft | Qt::AlignVCenter );
|
||||||
|
|
||||||
gpg_item -> setSizeHint(COLUMN_NAME, QSize( 40,40 ) );
|
gpg_item -> setSizeHint(COLUMN_NAME, QSize( 40,40 ) );
|
||||||
|
|
||||||
/* not displayed, used to find back the item */
|
/* not displayed, used to find back the item */
|
||||||
@ -551,6 +547,9 @@ void MessengerWindow::insertPeers()
|
|||||||
bool gpg_online = false;
|
bool gpg_online = false;
|
||||||
bool gpg_hasPrivateChat = false;
|
bool gpg_hasPrivateChat = false;
|
||||||
std::list<std::string> sslContacts;
|
std::list<std::string> sslContacts;
|
||||||
|
std::map<std::string, std::string> sslLocations;
|
||||||
|
std::map<std::string, QString> sslCustomStateStrings;
|
||||||
|
|
||||||
rsPeers->getSSLChildListOfGPGId(detail.gpg_id, sslContacts);
|
rsPeers->getSSLChildListOfGPGId(detail.gpg_id, sslContacts);
|
||||||
for(std::list<std::string>::iterator sslIt = sslContacts.begin(); sslIt != sslContacts.end(); sslIt++) {
|
for(std::list<std::string>::iterator sslIt = sslContacts.begin(); sslIt != sslContacts.end(); sslIt++) {
|
||||||
QTreeWidgetItem *sslItem = NULL;
|
QTreeWidgetItem *sslItem = NULL;
|
||||||
@ -583,6 +582,9 @@ void MessengerWindow::insertPeers()
|
|||||||
/* not displayed, used to find back the item */
|
/* not displayed, used to find back the item */
|
||||||
sslItem -> setData(COLUMN_DATA, ROLE_ID, QString::fromStdString(sslDetail.id));
|
sslItem -> setData(COLUMN_DATA, ROLE_ID, QString::fromStdString(sslDetail.id));
|
||||||
|
|
||||||
|
/* store location */
|
||||||
|
sslLocations[sslDetail.id] = sslDetail.location;
|
||||||
|
|
||||||
QString sCustomString;
|
QString sCustomString;
|
||||||
#ifndef MINIMAL_RSGUI
|
#ifndef MINIMAL_RSGUI
|
||||||
if (sslDetail.state & RS_PEER_STATE_CONNECTED) {
|
if (sslDetail.state & RS_PEER_STATE_CONNECTED) {
|
||||||
@ -592,18 +594,17 @@ void MessengerWindow::insertPeers()
|
|||||||
if (sCustomString.isEmpty()) {
|
if (sCustomString.isEmpty()) {
|
||||||
sslItem -> setText( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location) + " " + QString::fromStdString(sslDetail.autoconnect));
|
sslItem -> setText( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location) + " " + QString::fromStdString(sslDetail.autoconnect));
|
||||||
sslItem -> setToolTip( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location));
|
sslItem -> setToolTip( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location));
|
||||||
gpg_item -> setText(COLUMN_NAME, QString::fromStdString(detail.name) + tr("\n") + QString::fromStdString(sslDetail.location));
|
|
||||||
} else {
|
} else {
|
||||||
sslItem -> setText( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location) + " " + QString::fromStdString(sslDetail.autoconnect) );
|
sslItem -> setText( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location) + " " + QString::fromStdString(sslDetail.autoconnect) );
|
||||||
sslItem -> setToolTip( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location) + tr(" - ") + sCustomString);
|
sslItem -> setToolTip( COLUMN_NAME, tr("location : ") + QString::fromStdString(sslDetail.location) + tr(" - ") + sCustomString);
|
||||||
gpg_item -> setText(COLUMN_NAME, QString::fromStdString(detail.name) + tr("\n") + sCustomString);
|
|
||||||
|
/* store custom state string */
|
||||||
|
sslCustomStateStrings[sslDetail.id] = sCustomString;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* not displayed, used to find back the item */
|
|
||||||
//sslItem -> setText(1, QString::fromStdString(sslDetail.autoconnect));
|
|
||||||
|
|
||||||
QIcon sslIcon;
|
QIcon sslIcon;
|
||||||
int i;
|
QFont sslFont;
|
||||||
|
QColor sslColor;
|
||||||
if (sslDetail.state & RS_PEER_STATE_CONNECTED) {
|
if (sslDetail.state & RS_PEER_STATE_CONNECTED) {
|
||||||
sslItem->setHidden(false);
|
sslItem->setHidden(false);
|
||||||
gpg_connected = true;
|
gpg_connected = true;
|
||||||
@ -615,7 +616,7 @@ void MessengerWindow::insertPeers()
|
|||||||
|
|
||||||
gpg_item->setIcon(COLUMN_NAME,(QIcon(IMAGE_ONLINE)));
|
gpg_item->setIcon(COLUMN_NAME,(QIcon(IMAGE_ONLINE)));
|
||||||
gpg_item->setToolTip(COLUMN_NAME, tr("Peer Online"));
|
gpg_item->setToolTip(COLUMN_NAME, tr("Peer Online"));
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(sortState, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
||||||
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
gpg_item->setTextColor(i,(Qt::darkBlue));
|
gpg_item->setTextColor(i,(Qt::darkBlue));
|
||||||
@ -625,36 +626,24 @@ void MessengerWindow::insertPeers()
|
|||||||
|
|
||||||
/* change color and icon */
|
/* change color and icon */
|
||||||
sslIcon = QIcon(":/images/connect_established.png");
|
sslIcon = QIcon(":/images/connect_established.png");
|
||||||
QFont font;
|
sslFont.setBold(true);
|
||||||
font.setBold(true);
|
sslColor = Qt::darkBlue;
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
sslItem -> setTextColor(i,(Qt::darkBlue));
|
|
||||||
sslItem -> setFont(i,font);
|
|
||||||
}
|
|
||||||
} else if (sslDetail.state & RS_PEER_STATE_ONLINE) {
|
} else if (sslDetail.state & RS_PEER_STATE_ONLINE) {
|
||||||
sslItem->setHidden(ui.actionHide_Offline_Friends->isChecked());
|
sslItem->setHidden(hideOfflineFriends);
|
||||||
gpg_online = true;
|
gpg_online = true;
|
||||||
|
|
||||||
QFont font;
|
sslFont.setBold(true);
|
||||||
font.setBold(true);
|
sslColor = Qt::black;
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
sslItem -> setTextColor(i,(Qt::black));
|
|
||||||
sslItem -> setFont(i,font);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
sslItem->setHidden(ui.actionHide_Offline_Friends->isChecked());
|
sslItem->setHidden(hideOfflineFriends);
|
||||||
if (sslDetail.autoconnect !="Offline") {
|
if (sslDetail.autoconnect !="Offline") {
|
||||||
sslIcon = QIcon(":/images/connect_creating.png");
|
sslIcon = QIcon(":/images/connect_creating.png");
|
||||||
} else {
|
} else {
|
||||||
sslIcon = QIcon(":/images/connect_no.png");
|
sslIcon = QIcon(":/images/connect_no.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
QFont font;
|
sslFont.setBold(false);
|
||||||
font.setBold(false);
|
sslColor = Qt::black;
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
sslItem -> setTextColor(i,(Qt::black));
|
|
||||||
sslItem -> setFont(i,font);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (std::find(privateChatIds.begin(), privateChatIds.end(), sslDetail.id) != privateChatIds.end()) {
|
if (std::find(privateChatIds.begin(), privateChatIds.end(), sslDetail.id) != privateChatIds.end()) {
|
||||||
@ -664,6 +653,11 @@ void MessengerWindow::insertPeers()
|
|||||||
}
|
}
|
||||||
sslItem -> setIcon(COLUMN_NAME, sslIcon);
|
sslItem -> setIcon(COLUMN_NAME, sslIcon);
|
||||||
|
|
||||||
|
for (int i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
sslItem -> setTextColor(i, sslColor);
|
||||||
|
sslItem -> setFont(i, sslFont);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef PEERS_DEBUG
|
#ifdef PEERS_DEBUG
|
||||||
std::cerr << "PeersDialog::insertPeers() inserting sslItem." << std::endl;
|
std::cerr << "PeersDialog::insertPeers() inserting sslItem." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
@ -676,30 +670,30 @@ void MessengerWindow::insertPeers()
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
QIcon gpgIcon;
|
QIcon gpgIcon;
|
||||||
|
|
||||||
if (gpg_connected) {
|
if (gpg_connected) {
|
||||||
gpg_item->setHidden(false);
|
gpg_item->setHidden(false);
|
||||||
//gpg_item -> setText(COLUMN_STATE, tr("Online")); // set to online regardless on update
|
//gpg_item -> setText(COLUMN_STATE, tr("Online")); // set to online regardless on update
|
||||||
|
|
||||||
#ifndef MINIMAL_RSGUI
|
#ifndef MINIMAL_RSGUI
|
||||||
std::list<StatusInfo>::iterator it = statusInfo.begin();
|
int bestPeerState = 0; // for gpg item
|
||||||
|
std::string bestSslId; // for gpg item
|
||||||
|
|
||||||
|
std::list<StatusInfo>::iterator it = statusInfo.begin();
|
||||||
for(; it != statusInfo.end() ; it++){
|
for(; it != statusInfo.end() ; it++){
|
||||||
|
|
||||||
std::list<std::string>::iterator cont_it = sslContacts.begin();
|
|
||||||
|
|
||||||
// don't forget the kids
|
// don't forget the kids
|
||||||
for(; cont_it != sslContacts.end(); cont_it++){
|
std::list<std::string>::iterator cont_it = sslContacts.begin();
|
||||||
|
for(; cont_it != sslContacts.end(); cont_it++){
|
||||||
|
|
||||||
if((it->id == *cont_it) && (rsPeers->isOnline(*cont_it))) {
|
if((it->id == *cont_it) && (rsPeers->isOnline(*cont_it))) {
|
||||||
|
|
||||||
|
int peerState = 0;
|
||||||
|
|
||||||
std::string status;
|
std::string status;
|
||||||
rsStatus->getStatusString(it->status, status);
|
rsStatus->getStatusString(it->status, status);
|
||||||
gpg_item -> setText(COLUMN_STATE, QString::fromStdString(status));
|
gpg_item -> setText(COLUMN_STATE, QString::fromStdString(status));
|
||||||
|
|
||||||
QFont font;
|
|
||||||
font.setBold(true);
|
|
||||||
|
|
||||||
unsigned char *data = NULL;
|
unsigned char *data = NULL;
|
||||||
int size = 0 ;
|
int size = 0 ;
|
||||||
rsMsgs->getAvatarData(it->id ,data,size);
|
rsMsgs->getAvatarData(it->id ,data,size);
|
||||||
@ -711,63 +705,136 @@ void MessengerWindow::insertPeers()
|
|||||||
gpg_item-> setIcon(COLUMN_STATE, avatar_icon);
|
gpg_item-> setIcon(COLUMN_STATE, avatar_icon);
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
gpg_item -> setIcon(COLUMN_STATE,(QIcon(":/images/no_avatar_70.png")));
|
gpg_item -> setIcon(COLUMN_STATE,(QIcon(":/images/no_avatar_70.png")));
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (it->status) {
|
switch (it->status) {
|
||||||
case RS_STATUS_INACTIVE:
|
case RS_STATUS_INACTIVE:
|
||||||
gpgIcon = QIcon(IMAGE_INACTIVE);
|
peerState = PEER_STATE_INACTIVE;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Idle"));
|
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_INACTIVE));
|
|
||||||
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::gray));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RS_STATUS_ONLINE:
|
case RS_STATUS_ONLINE:
|
||||||
gpgIcon = QIcon(IMAGE_ONLINE);
|
peerState = PEER_STATE_ONLINE;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Online"));
|
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
|
||||||
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::darkBlue));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RS_STATUS_AWAY:
|
case RS_STATUS_AWAY:
|
||||||
gpgIcon = QIcon(IMAGE_AWAY);
|
peerState = PEER_STATE_AWAY;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Away"));
|
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_AWAY));
|
|
||||||
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::gray));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RS_STATUS_BUSY:
|
case RS_STATUS_BUSY:
|
||||||
gpgIcon = QIcon(IMAGE_BUSY);
|
peerState = PEER_STATE_BUSY;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Busy"));
|
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_BUSY));
|
|
||||||
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::gray));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* find the best ssl contact for the gpg item */
|
||||||
|
if (bestPeerState == 0) {
|
||||||
|
/* first ssl contact */
|
||||||
|
bestPeerState = peerState;
|
||||||
|
bestSslId = *cont_it;
|
||||||
|
} else if (peerState < bestPeerState) {
|
||||||
|
/* higher state */
|
||||||
|
bestPeerState = peerState;
|
||||||
|
bestSslId = *cont_it;
|
||||||
|
} else if (peerState == bestPeerState) {
|
||||||
|
/* equal state */
|
||||||
|
|
||||||
|
/* use the ssl id with existing custom state string */
|
||||||
|
std::map<std::string, QString>::iterator it1 = sslCustomStateStrings.find(bestSslId);
|
||||||
|
std::map<std::string, QString>::iterator it2 = sslCustomStateStrings.find(*cont_it);
|
||||||
|
|
||||||
|
if (it1 == sslCustomStateStrings.end()) {
|
||||||
|
if (it2 == sslCustomStateStrings.end()) {
|
||||||
|
/* both with no custom state string ... use first */
|
||||||
|
} else {
|
||||||
|
/* second with a custom state string ... use second */
|
||||||
|
bestPeerState = peerState;
|
||||||
|
bestSslId = *cont_it;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* use first */
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bestPeerState) {
|
||||||
|
QFont font;
|
||||||
|
font.setBold(true);
|
||||||
|
|
||||||
|
switch (bestPeerState) {
|
||||||
|
case PEER_STATE_INACTIVE:
|
||||||
|
gpgIcon = QIcon(IMAGE_INACTIVE);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Idle"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::gray));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PEER_STATE_ONLINE:
|
||||||
|
gpgIcon = QIcon(IMAGE_ONLINE);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Online"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::darkBlue));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PEER_STATE_AWAY:
|
||||||
|
gpgIcon = QIcon(IMAGE_AWAY);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Away"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::gray));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PEER_STATE_BUSY:
|
||||||
|
gpgIcon = QIcon(IMAGE_BUSY);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Busy"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::gray));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name));
|
||||||
|
|
||||||
|
std::map<std::string, QString>::iterator customStateString = sslCustomStateStrings.find(bestSslId);
|
||||||
|
if (customStateString == sslCustomStateStrings.end()) {
|
||||||
|
std::map<std::string, std::string>::iterator location = sslLocations.find(bestSslId);
|
||||||
|
if (location == sslLocations.end()) {
|
||||||
|
/* show only the name */
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name));
|
||||||
|
} else {
|
||||||
|
/* show the name with location */
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name) + "\n" + QString::fromStdString(location->second));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* show the name with custom state string */
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name) + "\n" + customStateString->second);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* show only the name */
|
||||||
|
gpgIcon = QIcon(IMAGE_ONLINE);
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name));
|
||||||
|
bestPeerState = PEER_STATE_ONLINE; // show as online
|
||||||
|
}
|
||||||
|
|
||||||
|
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(sortState, gpg_item->text(COLUMN_NAME), bestPeerState));
|
||||||
|
|
||||||
#endif // MINIMAL_RSGUI
|
#endif // MINIMAL_RSGUI
|
||||||
} else if (gpg_online) {
|
} else if (gpg_online) {
|
||||||
gpg_item->setHidden(ui.actionHide_Offline_Friends->isChecked());
|
gpg_item->setHidden(hideOfflineFriends);
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name));
|
||||||
gpgIcon = QIcon(IMAGE_AVAIBLE);
|
gpgIcon = QIcon(IMAGE_AVAIBLE);
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(sortState, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
||||||
//gpg_item -> setText(COLUMN_STATE, tr("Available"));
|
//gpg_item -> setText(COLUMN_STATE, tr("Available"));
|
||||||
QFont font;
|
QFont font;
|
||||||
font.setBold(true);
|
font.setBold(true);
|
||||||
@ -776,9 +843,10 @@ void MessengerWindow::insertPeers()
|
|||||||
gpg_item -> setFont(i,font);
|
gpg_item -> setFont(i,font);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
gpg_item->setHidden(ui.actionHide_Offline_Friends->isChecked());
|
gpg_item->setHidden(hideOfflineFriends);
|
||||||
|
gpg_item->setText(COLUMN_NAME, QString::fromStdString(detail.name));
|
||||||
gpgIcon = QIcon(IMAGE_OFFLINE);
|
gpgIcon = QIcon(IMAGE_OFFLINE);
|
||||||
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(bSortState, gpg_item->text(COLUMN_NAME), PEER_STATE_OFFLINE));
|
gpg_item->setData(COLUMN_NAME, ROLE_SORT, BuildStateSortString(sortState, gpg_item->text(COLUMN_NAME), PEER_STATE_OFFLINE));
|
||||||
//gpg_item -> setText(COLUMN_STATE, tr("Offline"));
|
//gpg_item -> setText(COLUMN_STATE, tr("Offline"));
|
||||||
QFont font;
|
QFont font;
|
||||||
font.setBold(false);
|
font.setBold(false);
|
||||||
@ -794,6 +862,7 @@ void MessengerWindow::insertPeers()
|
|||||||
|
|
||||||
gpg_item -> setIcon(COLUMN_NAME, gpgIcon);
|
gpg_item -> setIcon(COLUMN_NAME, gpgIcon);
|
||||||
|
|
||||||
|
|
||||||
/* add gpg item to the list. If item is already in the list, it won't be duplicated thanks to Qt */
|
/* add gpg item to the list. If item is already in the list, it won't be duplicated thanks to Qt */
|
||||||
peertreeWidget->addTopLevelItem(gpg_item);
|
peertreeWidget->addTopLevelItem(gpg_item);
|
||||||
|
|
||||||
|
@ -600,6 +600,7 @@ void PeersDialog::insertPeers()
|
|||||||
bool gpg_online = false;
|
bool gpg_online = false;
|
||||||
bool gpg_hasPrivateChat = false;
|
bool gpg_hasPrivateChat = false;
|
||||||
std::list<std::string> sslContacts;
|
std::list<std::string> sslContacts;
|
||||||
|
|
||||||
rsPeers->getSSLChildListOfGPGId(detail.gpg_id, sslContacts);
|
rsPeers->getSSLChildListOfGPGId(detail.gpg_id, sslContacts);
|
||||||
for(std::list<std::string>::iterator sslIt = sslContacts.begin(); sslIt != sslContacts.end(); sslIt++) {
|
for(std::list<std::string>::iterator sslIt = sslContacts.begin(); sslIt != sslContacts.end(); sslIt++) {
|
||||||
QTreeWidgetItem *sslItem = NULL;
|
QTreeWidgetItem *sslItem = NULL;
|
||||||
@ -653,29 +654,23 @@ void PeersDialog::insertPeers()
|
|||||||
|
|
||||||
/* change color and icon */
|
/* change color and icon */
|
||||||
QIcon sslIcon;
|
QIcon sslIcon;
|
||||||
int i;
|
QFont sslFont;
|
||||||
|
QColor sslColor;
|
||||||
if (sslDetail.state & RS_PEER_STATE_CONNECTED) {
|
if (sslDetail.state & RS_PEER_STATE_CONNECTED) {
|
||||||
sslItem->setHidden(false);
|
sslItem->setHidden(false);
|
||||||
gpg_connected = true;
|
gpg_connected = true;
|
||||||
|
|
||||||
sslIcon = QIcon(":/images/connect_established.png");
|
sslIcon = QIcon(":/images/connect_established.png");
|
||||||
sslItem -> setIcon(COLUMN_STATE,(QIcon(":/images/encrypted32.png")));
|
sslItem -> setIcon(COLUMN_STATE,(QIcon(":/images/encrypted32.png")));
|
||||||
QFont font;
|
|
||||||
font.setBold(true);
|
sslFont.setBold(true);
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
sslColor = Qt::darkBlue;
|
||||||
sslItem -> setTextColor(i,(Qt::darkBlue));
|
|
||||||
sslItem -> setFont(i,font);
|
|
||||||
}
|
|
||||||
} else if (sslDetail.state & RS_PEER_STATE_ONLINE) {
|
} else if (sslDetail.state & RS_PEER_STATE_ONLINE) {
|
||||||
sslItem->setHidden(bHideUnconnected);
|
sslItem->setHidden(bHideUnconnected);
|
||||||
gpg_online = true;
|
gpg_online = true;
|
||||||
|
|
||||||
QFont font;
|
sslFont.setBold(true);
|
||||||
font.setBold(true);
|
sslColor = Qt::black;
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
sslItem -> setTextColor(i,(Qt::black));
|
|
||||||
sslItem -> setFont(i,font);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
sslItem->setHidden(bHideUnconnected);
|
sslItem->setHidden(bHideUnconnected);
|
||||||
if (sslDetail.autoconnect != "Offline") {
|
if (sslDetail.autoconnect != "Offline") {
|
||||||
@ -684,12 +679,8 @@ void PeersDialog::insertPeers()
|
|||||||
sslIcon = QIcon(":/images/connect_no.png");
|
sslIcon = QIcon(":/images/connect_no.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
QFont font;
|
sslFont.setBold(false);
|
||||||
font.setBold(false);
|
sslColor = Qt::black;
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
sslItem -> setTextColor(i,(Qt::black));
|
|
||||||
sslItem -> setFont(i,font);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (std::find(privateChatIds.begin(), privateChatIds.end(), sslDetail.id) != privateChatIds.end()) {
|
if (std::find(privateChatIds.begin(), privateChatIds.end(), sslDetail.id) != privateChatIds.end()) {
|
||||||
@ -699,6 +690,11 @@ void PeersDialog::insertPeers()
|
|||||||
}
|
}
|
||||||
sslItem -> setIcon(COLUMN_NAME, sslIcon);
|
sslItem -> setIcon(COLUMN_NAME, sslIcon);
|
||||||
|
|
||||||
|
for (int i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
sslItem -> setTextColor(i, sslColor);
|
||||||
|
sslItem -> setFont(i, sslFont);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef PEERS_DEBUG
|
#ifdef PEERS_DEBUG
|
||||||
std::cerr << "PeersDialog::insertPeers() inserting sslItem." << std::endl;
|
std::cerr << "PeersDialog::insertPeers() inserting sslItem." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
@ -713,75 +709,115 @@ void PeersDialog::insertPeers()
|
|||||||
QIcon gpgIcon;
|
QIcon gpgIcon;
|
||||||
if (gpg_connected) {
|
if (gpg_connected) {
|
||||||
gpg_item->setHidden(false);
|
gpg_item->setHidden(false);
|
||||||
gpgIcon = QIcon(IMAGE_ONLINE);
|
|
||||||
gpg_item -> setText(COLUMN_STATE, tr("Online"));
|
int bestPeerState = 0; // for gpg item
|
||||||
gpg_item -> setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
std::string bestSslId; // for gpg item
|
||||||
|
|
||||||
std::list<StatusInfo>::iterator it;
|
std::list<StatusInfo>::iterator it;
|
||||||
for(it = statusInfo.begin(); it != statusInfo.end() ; it++) {
|
for(it = statusInfo.begin(); it != statusInfo.end() ; it++) {
|
||||||
|
|
||||||
std::list<std::string>::iterator cont_it;
|
|
||||||
|
|
||||||
// don't forget the kids
|
// don't forget the kids
|
||||||
|
std::list<std::string>::iterator cont_it;
|
||||||
for (cont_it = sslContacts.begin(); cont_it != sslContacts.end(); cont_it++) {
|
for (cont_it = sslContacts.begin(); cont_it != sslContacts.end(); cont_it++) {
|
||||||
|
|
||||||
if((it->id == *cont_it) && (rsPeers->isOnline(*cont_it))){
|
if((it->id == *cont_it) && (rsPeers->isOnline(*cont_it))){
|
||||||
|
|
||||||
|
int peerState = 0;
|
||||||
|
|
||||||
std::string status;
|
std::string status;
|
||||||
rsStatus->getStatusString(it->status, status);
|
rsStatus->getStatusString(it->status, status);
|
||||||
gpg_item -> setText(COLUMN_INFO, QString::fromStdString(status));
|
gpg_item -> setText(COLUMN_INFO, QString::fromStdString(status));
|
||||||
|
|
||||||
QFont font;
|
|
||||||
font.setBold(true);
|
|
||||||
|
|
||||||
switch (it->status) {
|
switch (it->status) {
|
||||||
case RS_STATUS_INACTIVE:
|
case RS_STATUS_INACTIVE:
|
||||||
gpgIcon = QIcon(IMAGE_INACTIVE);
|
peerState = PEER_STATE_INACTIVE;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Idle"));
|
|
||||||
gpg_item -> setText(COLUMN_STATE, tr("Idle"));
|
|
||||||
gpg_item -> setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpg_item->text(COLUMN_NAME), PEER_STATE_INACTIVE));
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::gray));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RS_STATUS_ONLINE:
|
case RS_STATUS_ONLINE:
|
||||||
gpgIcon = QIcon(IMAGE_ONLINE);
|
peerState = PEER_STATE_ONLINE;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Online"));
|
|
||||||
gpg_item -> setText(COLUMN_STATE, tr("Online"));
|
|
||||||
gpg_item -> setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpg_item->text(COLUMN_NAME), PEER_STATE_ONLINE));
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::darkBlue));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RS_STATUS_AWAY:
|
case RS_STATUS_AWAY:
|
||||||
gpgIcon = QIcon(IMAGE_AWAY);
|
peerState = PEER_STATE_AWAY;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Away"));
|
|
||||||
gpg_item -> setText(COLUMN_STATE, tr("Away"));
|
|
||||||
gpg_item -> setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpg_item->text(COLUMN_NAME), PEER_STATE_AWAY));
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::gray));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RS_STATUS_BUSY:
|
case RS_STATUS_BUSY:
|
||||||
gpgIcon = QIcon(IMAGE_BUSY);
|
peerState = PEER_STATE_BUSY;
|
||||||
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Busy"));
|
|
||||||
gpg_item -> setText(COLUMN_STATE, tr("Busy"));
|
|
||||||
gpg_item -> setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpg_item->text(COLUMN_NAME), PEER_STATE_BUSY));
|
|
||||||
for(i = 0; i < COLUMN_COUNT; i++) {
|
|
||||||
gpg_item -> setTextColor(i,(Qt::gray));
|
|
||||||
gpg_item -> setFont(i,font);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* find the best ssl contact for the gpg item */
|
||||||
|
if (bestPeerState == 0) {
|
||||||
|
/* first ssl contact */
|
||||||
|
bestPeerState = peerState;
|
||||||
|
bestSslId = *cont_it;
|
||||||
|
} else if (peerState < bestPeerState) {
|
||||||
|
/* higher state */
|
||||||
|
bestPeerState = peerState;
|
||||||
|
bestSslId = *cont_it;
|
||||||
|
} else if (peerState == bestPeerState) {
|
||||||
|
/* equal state ... use first */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bestPeerState) {
|
||||||
|
QFont font;
|
||||||
|
font.setBold(true);
|
||||||
|
|
||||||
|
switch (bestPeerState) {
|
||||||
|
case PEER_STATE_INACTIVE:
|
||||||
|
gpgIcon = QIcon(IMAGE_INACTIVE);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Idle"));
|
||||||
|
gpg_item -> setText(COLUMN_STATE, tr("Idle"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::gray));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PEER_STATE_ONLINE:
|
||||||
|
gpgIcon = QIcon(IMAGE_ONLINE);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Online"));
|
||||||
|
gpg_item -> setText(COLUMN_STATE, tr("Online"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::darkBlue));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PEER_STATE_AWAY:
|
||||||
|
gpgIcon = QIcon(IMAGE_AWAY);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Away"));
|
||||||
|
gpg_item -> setText(COLUMN_STATE, tr("Away"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::gray));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PEER_STATE_BUSY:
|
||||||
|
gpgIcon = QIcon(IMAGE_BUSY);
|
||||||
|
gpg_item -> setToolTip(COLUMN_NAME, tr("Peer Busy"));
|
||||||
|
gpg_item -> setText(COLUMN_STATE, tr("Busy"));
|
||||||
|
|
||||||
|
for(i = 0; i < COLUMN_COUNT; i++) {
|
||||||
|
gpg_item -> setTextColor(i,(Qt::gray));
|
||||||
|
gpg_item -> setFont(i,font);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
gpgIcon = QIcon(IMAGE_ONLINE);
|
||||||
|
bestPeerState = PEER_STATE_ONLINE; // show as online
|
||||||
|
}
|
||||||
|
|
||||||
|
gpg_item -> setData(COLUMN_STATE, ROLE_SORT, BuildStateSortString(true, gpg_item->text(COLUMN_NAME), PEER_STATE_INACTIVE));
|
||||||
} else if (gpg_online) {
|
} else if (gpg_online) {
|
||||||
gpg_item->setHidden(bHideUnconnected);
|
gpg_item->setHidden(bHideUnconnected);
|
||||||
gpgIcon = QIcon(IMAGE_AVAILABLE);
|
gpgIcon = QIcon(IMAGE_AVAILABLE);
|
||||||
|
Loading…
Reference in New Issue
Block a user