From 01fa9eec3f136b5a541189c44fa8da99a1d0965b Mon Sep 17 00:00:00 2001 From: thunder2 Date: Sun, 21 Aug 2011 22:28:19 +0000 Subject: [PATCH] Added a new checbox in the settings (NotifyPage) to enable/disable the new SecurityItem. It is enabled by default, but all existing users need to enable it. Added new buttons to SecurityItem to add/remove the peer and view peer details. Added new call to notifyListChange with NOTIFY_LIST_FRIENDS in AuthGPGimpl::AllowConnection. Fixed german language. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4572 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/pqi/authgpg.cc | 7 +- libretroshare/src/retroshare/rsnotify.h | 16 +- retroshare-gui/src/gui/NewsFeed.cpp | 25 +- retroshare-gui/src/gui/feeds/PeerItem.cpp | 165 ++- retroshare-gui/src/gui/feeds/PeerItem.h | 1 - retroshare-gui/src/gui/feeds/PeerItem.ui | 6 +- retroshare-gui/src/gui/feeds/SecurityItem.cpp | 295 ++--- retroshare-gui/src/gui/feeds/SecurityItem.h | 33 +- retroshare-gui/src/gui/feeds/SecurityItem.ui | 64 +- retroshare-gui/src/gui/notifyqt.cpp | 6 +- retroshare-gui/src/gui/notifyqt.h | 2 +- .../src/gui/settings/NotifyPage.cpp | 3 + retroshare-gui/src/gui/settings/NotifyPage.ui | 9 +- .../src/gui/settings/rsharesettings.cpp | 4 +- retroshare-gui/src/lang/retroshare_de.qm | Bin 328849 -> 330219 bytes retroshare-gui/src/lang/retroshare_de.ts | 1078 ++--------------- retroshare-gui/src/main.cpp | 2 +- 17 files changed, 419 insertions(+), 1297 deletions(-) diff --git a/libretroshare/src/pqi/authgpg.cc b/libretroshare/src/pqi/authgpg.cc index f5d5e4a55..eac0de832 100644 --- a/libretroshare/src/pqi/authgpg.cc +++ b/libretroshare/src/pqi/authgpg.cc @@ -30,6 +30,7 @@ #ifdef WINDOWS_SYS #include "retroshare/rsinit.h" #endif +#include "pqi/pqinotify.h" #include #include @@ -1520,9 +1521,11 @@ bool AuthGPGimpl::AllowConnection(const std::string &gpg_id, bool accept) mAcceptToConnectMap[gpg_id] = accept; } - IndicateConfigChanged(); + IndicateConfigChanged(); - return true; + rsicontrol->getNotify().notifyListChange(NOTIFY_LIST_FRIENDS, accept ? NOTIFY_TYPE_ADD : NOTIFY_TYPE_DEL); + + return true; } /* These take PGP Ids */ diff --git a/libretroshare/src/retroshare/rsnotify.h b/libretroshare/src/retroshare/rsnotify.h index 6147184a9..aabd86245 100644 --- a/libretroshare/src/retroshare/rsnotify.h +++ b/libretroshare/src/retroshare/rsnotify.h @@ -55,14 +55,14 @@ const uint32_t RS_CHAT_OPEN = 0x0001; const uint32_t RS_CHAT_FOCUS = 0x0004; const uint32_t RS_CHAT_TABBED_WINDOW = 0x0008; -const uint32_t RS_FEED_TYPE_PEER = 0x0010; -const uint32_t RS_FEED_TYPE_CHAN = 0x0020; -const uint32_t RS_FEED_TYPE_FORUM = 0x0040; -const uint32_t RS_FEED_TYPE_BLOG = 0x0080; -const uint32_t RS_FEED_TYPE_CHAT = 0x0100; -const uint32_t RS_FEED_TYPE_MSG = 0x0200; -const uint32_t RS_FEED_TYPE_FILES = 0x0400; -const uint32_t RS_FEED_TYPE_SECURITY = 0x0800; +const uint32_t RS_FEED_TYPE_PEER = 0x0010; +const uint32_t RS_FEED_TYPE_CHAN = 0x0020; +const uint32_t RS_FEED_TYPE_FORUM = 0x0040; +const uint32_t RS_FEED_TYPE_BLOG = 0x0080; +const uint32_t RS_FEED_TYPE_CHAT = 0x0100; +const uint32_t RS_FEED_TYPE_MSG = 0x0200; +const uint32_t RS_FEED_TYPE_FILES = 0x0400; +const uint32_t RS_FEED_TYPE_SECURITY = 0x0800; const uint32_t RS_FEED_ITEM_PEER_CONNECT = RS_FEED_TYPE_PEER | 0x0001; const uint32_t RS_FEED_ITEM_PEER_DISCONNECT = RS_FEED_TYPE_PEER | 0x0002; diff --git a/retroshare-gui/src/gui/NewsFeed.cpp b/retroshare-gui/src/gui/NewsFeed.cpp index 9f980ab37..b746b5f5a 100644 --- a/retroshare-gui/src/gui/NewsFeed.cpp +++ b/retroshare-gui/src/gui/NewsFeed.cpp @@ -77,8 +77,6 @@ NewsFeed::NewsFeed(QWidget *parent) timer->start(1000); } - - void NewsFeed::updateFeed() { if (!rsNotify) @@ -86,9 +84,6 @@ void NewsFeed::updateFeed() uint flags = Settings->getNewsFeedFlags(); - /* HACK until SECURITY is in feeds */ - flags |= RS_FEED_TYPE_SECURITY; - /* check for new messages */ RsFeedItem fi; if (rsNotify->GetFeedItem(fi)) @@ -238,7 +233,6 @@ void NewsFeed::addFeedItemPeerConnect(RsFeedItem &fi) } - void NewsFeed::addFeedItemPeerDisconnect(RsFeedItem &fi) { /* make new widget */ @@ -255,7 +249,6 @@ void NewsFeed::addFeedItemPeerDisconnect(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemPeerHello(RsFeedItem &fi) { /* make new widget */ @@ -272,7 +265,6 @@ void NewsFeed::addFeedItemPeerHello(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemPeerNew(RsFeedItem &fi) { /* make new widget */ @@ -289,8 +281,6 @@ void NewsFeed::addFeedItemPeerNew(RsFeedItem &fi) #endif } - - void NewsFeed::addFeedItemSecurityConnectAttempt(RsFeedItem &fi) { /* make new widget */ @@ -307,7 +297,6 @@ void NewsFeed::addFeedItemSecurityConnectAttempt(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemSecurityAuthDenied(RsFeedItem &fi) { /* make new widget */ @@ -356,8 +345,6 @@ void NewsFeed::addFeedItemSecurityUnknownOut(RsFeedItem &fi) #endif } - - void NewsFeed::addFeedItemChanNew(RsFeedItem &fi) { /* make new widget */ @@ -374,7 +361,6 @@ void NewsFeed::addFeedItemChanNew(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemChanUpdate(RsFeedItem &fi) { /* make new widget */ @@ -391,7 +377,6 @@ void NewsFeed::addFeedItemChanUpdate(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemChanMsg(RsFeedItem &fi) { /* make new widget */ @@ -408,7 +393,6 @@ void NewsFeed::addFeedItemChanMsg(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemForumNew(RsFeedItem &fi) { /* make new widget */ @@ -426,7 +410,6 @@ void NewsFeed::addFeedItemForumNew(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemForumUpdate(RsFeedItem &fi) { /* make new widget */ @@ -444,7 +427,6 @@ void NewsFeed::addFeedItemForumUpdate(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemForumMsg(RsFeedItem &fi) { /* make new widget */ @@ -501,7 +483,6 @@ void NewsFeed::addFeedItemBlogMsg(RsFeedItem &fi) #endif } - void NewsFeed::addFeedItemChatNew(RsFeedItem &fi) { #ifdef NEWS_DEBUG @@ -555,9 +536,9 @@ void NewsFeed::deleteFeedItem(QWidget *item, uint32_t /*type*/) std::cerr << std::endl; #endif - if (item) { - item->close (); - } + if (item) { + item->close (); + } } void NewsFeed::openChat(std::string peerId) diff --git a/retroshare-gui/src/gui/feeds/PeerItem.cpp b/retroshare-gui/src/gui/feeds/PeerItem.cpp index 1834839e0..6fee61eca 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.cpp +++ b/retroshare-gui/src/gui/feeds/PeerItem.cpp @@ -64,7 +64,8 @@ PeerItem::PeerItem(FeedHolder *parent, uint32_t feedId, std::string peerId, uint connect( sendmsgButton, SIGNAL( clicked( ) ), this, SLOT( sendMessage() ) ); connect(NotifyQt::getInstance(), SIGNAL(peerHasNewAvatar(const QString&)), this, SLOT(updateAvatar(const QString&))); - + connect(NotifyQt::getInstance(), SIGNAL(friendsChanged()), this, SLOT(updateItem())); + QMenu *msgmenu = new QMenu(); msgmenu->addAction(actionNew_Message); @@ -82,46 +83,44 @@ void PeerItem::updateItemStatic() if (!rsPeers) return; - /* fill in */ #ifdef DEBUG_ITEM std::cerr << "PeerItem::updateItemStatic()"; std::cerr << std::endl; #endif + QString title; + + switch(mType) + { + case PEER_TYPE_STD: + title = tr("Friend"); + break; + case PEER_TYPE_CONNECT: + title = tr("Friend Connected"); + break; + case PEER_TYPE_HELLO: + title = tr("Connect Attempt"); + break; + case PEER_TYPE_NEW_FOF: + title = tr("Friend of Friend"); + break; + default: + title = tr("Peer"); + break; + } + + titleLabel->setText(title); + + /* set textcolor for peer name */ + QString nameStr("%1"); + RsPeerDetails details; if (rsPeers->getPeerDetails(mPeerId, details)) { - QString title; - - switch(mType) - { - case PEER_TYPE_STD: - title = tr("Friend"); - break; - case PEER_TYPE_CONNECT: - title = tr("Friend Connected"); - break; - case PEER_TYPE_HELLO: - title = tr("Connect Attempt"); - break; - case PEER_TYPE_NEW_FOF: - title = tr("Friend of Friend"); - break; - default: - title = tr("Peer"); - break; - } - - titleLabel->setText(title); - - /* set textcolor for peername */ - QString nameStr("%1"); - - /* set Blog name */ - QString peername = QString::fromUtf8(details.name.c_str()); - peernameLabel->setText(nameStr.arg(peername)); + /* set peer name */ + QString peername = QString::fromUtf8(details.name.c_str()); + peernameLabel->setText(nameStr.arg(peername)); QDateTime date = QDateTime::fromTime_t(details.lastConnect); QString stime = date.toString(Qt::LocalDate); @@ -134,33 +133,29 @@ void PeerItem::updateItemStatic() } else { - statusLabel->setText(tr("Unknown Peer")); - titleLabel->setText(tr("Unknown Peer")); - trustLabel->setText(tr("Unknown Peer")); - nameLabel->setText(tr("Unknown Peer")); - idLabel->setText(tr("Unknown Peer")); - locLabel->setText(tr("Unknown Peer")); - ipLabel->setText(tr("Unknown Peer")); - connLabel->setText(tr("Unknown Peer")); - lastLabel->setText(tr("Unknown Peer")); + statusLabel->setText(tr("Unknown Peer")); + titleLabel->setText(tr("Unknown Peer")); + trustLabel->setText(tr("Unknown Peer")); + nameLabel->setText(tr("Unknown Peer")); + idLabel->setText(tr("Unknown Peer")); + locLabel->setText(tr("Unknown Peer")); + ipLabel->setText(tr("Unknown Peer")); + connLabel->setText(tr("Unknown Peer")); + lastLabel->setText(tr("Unknown Peer")); chatButton->setEnabled(false); - } if (mIsHome) { /* disable buttons */ clearButton->setEnabled(false); - //gotoButton->setEnabled(false); - /* disable buttons */ + /* hide buttons */ clearButton->hide(); } - } - void PeerItem::updateItem() { if (!rsPeers) @@ -172,9 +167,15 @@ void PeerItem::updateItem() std::cerr << std::endl; #endif if(!RsAutoUpdatePage::eventsLocked()) { + /* set textcolor for peer name */ + QString nameStr("%1"); + RsPeerDetails details; if (!rsPeers->getPeerDetails(mPeerId, details)) { + chatButton->setEnabled(false); + quickmsgButton->setEnabled(false); + return; } @@ -190,8 +191,7 @@ void PeerItem::updateItem() } #endif statusLabel->setText(status); - trustLabel->setText(QString::fromStdString( - RsPeerTrustString(details.trustLvl))); + trustLabel->setText(QString::fromStdString(RsPeerTrustString(details.trustLvl))); { std::ostringstream out; @@ -208,14 +208,10 @@ void PeerItem::updateItem() chatButton->setEnabled(details.state & RS_PEER_STATE_CONNECTED); if (details.state & RS_PEER_STATE_FRIEND) { - //addButton->setEnabled(false); - //removeButton->setEnabled(true); quickmsgButton->setEnabled(true); } else { - //addButton->setEnabled(true); - //removeButton->setEnabled(false); quickmsgButton->setEnabled(false); } } @@ -238,13 +234,13 @@ void PeerItem::toggle() { expandFrame->show(); expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png"))); - expandButton->setToolTip(tr("Hide")); + expandButton->setToolTip(tr("Hide")); } else { expandFrame->hide(); expandButton->setIcon(QIcon(QString(":/images/edit_add24.png"))); - expandButton->setToolTip(tr("Expand")); + expandButton->setToolTip(tr("Expand")); } } @@ -262,15 +258,6 @@ void PeerItem::removeItem() } } - -void PeerItem::gotoHome() -{ -#ifdef DEBUG_ITEM - std::cerr << "PeerItem::gotoHome()"; - std::cerr << std::endl; -#endif -} - /*********** SPECIFIC FUNCTIOSN ***********************/ void PeerItem::addFriend() @@ -281,8 +268,6 @@ void PeerItem::addFriend() #endif } - - void PeerItem::removeFriend() { #ifdef DEBUG_ITEM @@ -291,8 +276,6 @@ void PeerItem::removeFriend() #endif } - - void PeerItem::sendMsg() { #ifdef DEBUG_ITEM @@ -300,10 +283,6 @@ void PeerItem::sendMsg() std::cerr << std::endl; #endif - if (mParent) - { - //mParent->openMsg(FEEDHOLDER_MSG_MESSAGE, mPeerId, ""); - MessageComposer *nMsgDialog = MessageComposer::newMsg(); if (nMsgDialog == NULL) { return; @@ -314,7 +293,6 @@ void PeerItem::sendMsg() nMsgDialog->activateWindow(); /* window will destroy itself! */ - } } @@ -332,32 +310,28 @@ void PeerItem::openChat() void PeerItem::updateAvatar(const QString &peer_id) { - if (peer_id.toStdString() != mPeerId) { - /* it 's not me */ - return; - } + if (peer_id.toStdString() != mPeerId) { + /* it 's not me */ + return; + } - unsigned char *data = NULL; - int size = 0 ; - - rsMsgs->getAvatarData(mPeerId,data,size); - - - if(size != 0) - { - // set the image - QPixmap pix ; - pix.loadFromData(data,size,"PNG") ; - avatar_label->setPixmap(pix); - delete[] data ; - - } - else - { - avatar_label->setPixmap(QPixmap(":/images/user/personal64.png")); - } + unsigned char *data = NULL; + int size = 0 ; + rsMsgs->getAvatarData(mPeerId,data,size); + if(size != 0) + { + // set the image + QPixmap pix ; + pix.loadFromData(data,size,"PNG") ; + avatar_label->setPixmap(pix); + delete[] data ; + } + else + { + avatar_label->setPixmap(QPixmap(":/images/user/personal64.png")); + } } void PeerItem::togglequickmessage() @@ -370,7 +344,6 @@ void PeerItem::togglequickmessage() { messageframe->setVisible(false); } - } void PeerItem::sendMessage() diff --git a/retroshare-gui/src/gui/feeds/PeerItem.h b/retroshare-gui/src/gui/feeds/PeerItem.h index 551659fec..009fe6ab5 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.h +++ b/retroshare-gui/src/gui/feeds/PeerItem.h @@ -48,7 +48,6 @@ public: private slots: /* default stuff */ - void gotoHome(); void removeItem(); void toggle(); diff --git a/retroshare-gui/src/gui/feeds/PeerItem.ui b/retroshare-gui/src/gui/feeds/PeerItem.ui index 1db0e6d0f..7d07769b9 100644 --- a/retroshare-gui/src/gui/feeds/PeerItem.ui +++ b/retroshare-gui/src/gui/feeds/PeerItem.ui @@ -421,7 +421,7 @@ border-radius: 10px} - Location + Location: @@ -434,7 +434,7 @@ border-radius: 10px} - IP Address + IP Address: @@ -447,7 +447,7 @@ border-radius: 10px} - Connection Method + Connection Method: diff --git a/retroshare-gui/src/gui/feeds/SecurityItem.cpp b/retroshare-gui/src/gui/feeds/SecurityItem.cpp index 75c3cb61d..f79ad0345 100644 --- a/retroshare-gui/src/gui/feeds/SecurityItem.cpp +++ b/retroshare-gui/src/gui/feeds/SecurityItem.cpp @@ -21,12 +21,14 @@ #include #include +#include #include "SecurityItem.h" #include "FeedHolder.h" #include "../RsAutoUpdatePage.h" #include "gui/msgs/MessageComposer.h" #include "gui/common/StatusDefs.h" +#include "gui/connect/ConfCertDialog.h" #include "gui/notifyqt.h" @@ -49,6 +51,12 @@ SecurityItem::SecurityItem(FeedHolder *parent, uint32_t feedId, std::string gpgI messageframe->setVisible(false); sendmsgButton->setEnabled(false); + quickmsgButton->setEnabled(false); + chatButton->setEnabled(false); + addFriendButton->setEnabled(false); + removeFriendButton->setEnabled(false); + removeFriendButton->hide(); + peerDetailsButton->setEnabled(false); /* general ones */ connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) ); @@ -62,9 +70,13 @@ SecurityItem::SecurityItem(FeedHolder *parent, uint32_t feedId, std::string gpgI connect( cancelButton, SIGNAL( clicked( ) ), this, SLOT( togglequickmessage() ) ); connect( sendmsgButton, SIGNAL( clicked( ) ), this, SLOT( sendMessage() ) ); + connect(addFriendButton, SIGNAL(clicked()), this, SLOT(addFriend())); + connect(removeFriendButton, SIGNAL(clicked()), this, SLOT(removeFriend())); + connect(peerDetailsButton, SIGNAL(clicked()), this, SLOT(peerDetails())); connect(NotifyQt::getInstance(), SIGNAL(peerHasNewAvatar(const QString&)), this, SLOT(updateAvatar(const QString&))); - + connect(NotifyQt::getInstance(), SIGNAL(friendsChanged()), this, SLOT(updateItem())); + QMenu *msgmenu = new QMenu(); msgmenu->addAction(actionNew_Message); @@ -73,7 +85,7 @@ SecurityItem::SecurityItem(FeedHolder *parent, uint32_t feedId, std::string gpgI small(); updateItemStatic(); updateItem(); - updateAvatar(QString::fromStdString(mGpgId)); + updateAvatar(QString::fromStdString(mSslId)); } @@ -92,7 +104,6 @@ void SecurityItem::updateItemStatic() if (!rsPeers) return; - /* fill in */ #ifdef DEBUG_ITEM std::cerr << "SecurityItem::updateItemStatic()"; @@ -121,63 +132,16 @@ void SecurityItem::updateItemStatic() titleLabel->setText(title); - - RsPeerDetails details; - if (rsPeers->getPeerDetails(mGpgId, details)) - { - - /* set textcolor for peername */ - QString nameStr("%1"); - - /* set Blog name */ - QString peername = QString::fromStdString(details.name); - peernameLabel->setText(nameStr.arg(peername)); - - QDateTime date = QDateTime::fromTime_t(details.lastConnect); - QString stime = date.toString(Qt::LocalDate); - lastLabel-> setText(stime); - - /* expanded Info */ - nameLabel->setText(QString::fromUtf8(details.name.c_str())); - idLabel->setText(QString::fromStdString(details.id)); - locLabel->setText(QString::fromUtf8(details.location.c_str())); - } - else - { - /* it is very likely that we will end up here for some of the - * Unknown peer cases.... so allow them here - */ - - QDateTime date = QDateTime::currentDateTime(); - QString stime = date.toString(Qt::LocalDate); - lastLabel-> setText(stime); - nameLabel->setText(QString::fromStdString(mGpgId)); - idLabel->setText(QString::fromStdString(mSslId)); - - statusLabel->setText(tr("Unknown Peer")); - trustLabel->setText(tr("Unknown Peer")); - locLabel->setText(tr("Unknown Peer")); - ipLabel->setText(tr("Unknown Peer")); - connLabel->setText(tr("Unknown Peer")); - - chatButton->setEnabled(false); - - } - if (mIsHome) { /* disable buttons */ clearButton->setEnabled(false); - //gotoButton->setEnabled(false); - /* disable buttons */ + /* hide buttons */ clearButton->hide(); } - } - void SecurityItem::updateItem() { if (!rsPeers) @@ -188,13 +152,58 @@ void SecurityItem::updateItem() std::cerr << "SecurityItem::updateItem()"; std::cerr << std::endl; #endif + QDateTime currentTime = QDateTime::currentDateTime(); + timeLabel->setText(currentTime.toString(Qt::LocalDate)); + if(!RsAutoUpdatePage::eventsLocked()) { + /* set textcolor for peer name */ + QString nameStr("%1"); + RsPeerDetails details; - if (!rsPeers->getPeerDetails(mGpgId, details)) + /* first try sslid */ + if (!rsPeers->getPeerDetails(mSslId, details)) { - return; + /* then gpgid */ + if (!rsPeers->getPeerDetails(mGpgId, details)) + { + /* it is very likely that we will end up here for some of the + * Unknown peer cases.... so allow them here + */ + + /* set peer name */ + peernameLabel->setText(nameStr.arg(tr("Unknown Peer"))); + + nameLabel->setText(QString::fromStdString(mGpgId)); + idLabel->setText(QString::fromStdString(mSslId)); + + statusLabel->setText(tr("Unknown Peer")); + trustLabel->setText(tr("Unknown Peer")); + locLabel->setText(tr("Unknown Peer")); + ipLabel->setText(tr("Unknown Peer")); + connLabel->setText(tr("Unknown Peer")); + + chatButton->setEnabled(false); + quickmsgButton->setEnabled(false); + + addFriendButton->setEnabled(false); + addFriendButton->show(); + removeFriendButton->setEnabled(false); + removeFriendButton->hide(); + peerDetailsButton->setEnabled(false); + + return; + } } + /* set peer name */ + QString peername = QString::fromUtf8(details.name.c_str()); + peernameLabel->setText(nameStr.arg(peername)); + + /* expanded Info */ + nameLabel->setText(QString::fromUtf8(details.name.c_str())); + idLabel->setText(QString::fromStdString(details.id)); + locLabel->setText(QString::fromUtf8(details.location.c_str())); + /* top Level info */ QString status = StatusDefs::peerStateString(details.state); @@ -207,8 +216,7 @@ void SecurityItem::updateItem() } #endif statusLabel->setText(status); - trustLabel->setText(QString::fromStdString( - RsPeerTrustString(details.trustLvl))); + trustLabel->setText(QString::fromStdString(RsPeerTrustString(details.trustLvl))); { std::ostringstream out; @@ -223,23 +231,36 @@ void SecurityItem::updateItem() /* do buttons */ chatButton->setEnabled(details.state & RS_PEER_STATE_CONNECTED); + peerDetailsButton->setEnabled(true); + + if (details.accept_connection) + { + addFriendButton->setEnabled(false); + addFriendButton->hide(); + removeFriendButton->setEnabled(true); + removeFriendButton->show(); + } + else + { + addFriendButton->setEnabled(true); + addFriendButton->show(); + removeFriendButton->setEnabled(false); + removeFriendButton->hide(); + } + if (details.state & RS_PEER_STATE_FRIEND) { - //addButton->setEnabled(false); - //removeButton->setEnabled(true); quickmsgButton->setEnabled(true); } else { - //addButton->setEnabled(true); - //removeButton->setEnabled(false); quickmsgButton->setEnabled(false); } } /* slow Tick */ int msec_rate = 10129; - + QTimer::singleShot( msec_rate, this, SLOT(updateItem( void ) )); return; } @@ -255,17 +276,16 @@ void SecurityItem::toggle() { expandFrame->show(); expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png"))); - expandButton->setToolTip(tr("Hide")); + expandButton->setToolTip(tr("Hide")); } else { expandFrame->hide(); expandButton->setIcon(QIcon(QString(":/images/edit_add24.png"))); - expandButton->setToolTip(tr("Expand")); + expandButton->setToolTip(tr("Expand")); } } - void SecurityItem::removeItem() { #ifdef DEBUG_ITEM @@ -279,15 +299,6 @@ void SecurityItem::removeItem() } } - -void SecurityItem::gotoHome() -{ -#ifdef DEBUG_ITEM - std::cerr << "SecurityItem::gotoHome()"; - std::cerr << std::endl; -#endif -} - /*********** SPECIFIC FUNCTIOSN ***********************/ void SecurityItem::addFriend() @@ -296,19 +307,44 @@ void SecurityItem::addFriend() std::cerr << "SecurityItem::addFriend()"; std::cerr << std::endl; #endif + + ConfCertDialog::showIt(mGpgId, ConfCertDialog::PageTrust); } - - void SecurityItem::removeFriend() { #ifdef DEBUG_ITEM std::cerr << "SecurityItem::removeFriend()"; std::cerr << std::endl; #endif + + if ((QMessageBox::question(this, "RetroShare", tr("Do you want to remove this Friend?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) == QMessageBox::Yes) + { + rsPeers->removeFriend(mGpgId); + } } +void SecurityItem::peerDetails() +{ +#ifdef DEBUG_ITEM + std::cerr << "SecurityItem::peerDetails()"; + std::cerr << std::endl; +#endif + RsPeerDetails details; + /* first try sslid */ + if (rsPeers->getPeerDetails(mSslId, details)) + { + ConfCertDialog::showIt(mSslId, ConfCertDialog::PageDetails); + return; + } + + /* then gpgid */ + if (rsPeers->getPeerDetails(mGpgId, details)) + { + ConfCertDialog::showIt(mGpgId, ConfCertDialog::PageDetails); + } +} void SecurityItem::sendMsg() { @@ -317,23 +353,17 @@ void SecurityItem::sendMsg() std::cerr << std::endl; #endif - if (mParent) - { - //mParent->openMsg(FEEDHOLDER_MSG_MESSAGE, mPeerId, ""); - - MessageComposer *nMsgDialog = MessageComposer::newMsg(); - if (nMsgDialog == NULL) { - return; - } - - nMsgDialog->addRecipient(MessageComposer::TO, mGpgId, false); - nMsgDialog->show(); - nMsgDialog->activateWindow(); - - /* window will destroy itself! */ + MessageComposer *nMsgDialog = MessageComposer::newMsg(); + if (nMsgDialog == NULL) { + return; } -} + nMsgDialog->addRecipient(MessageComposer::TO, mGpgId, false); + nMsgDialog->show(); + nMsgDialog->activateWindow(); + + /* window will destroy itself! */ +} void SecurityItem::openChat() { @@ -349,70 +379,65 @@ void SecurityItem::openChat() void SecurityItem::updateAvatar(const QString &peer_id) { - if (peer_id.toStdString() != mGpgId) { - /* it 's not me */ - return; - } + if (peer_id.toStdString() != mSslId) { + /* it 's not me */ + return; + } - unsigned char *data = NULL; - int size = 0 ; - - rsMsgs->getAvatarData(mGpgId,data,size); - - - if(size != 0) - { - // set the image - QPixmap pix ; - pix.loadFromData(data,size,"PNG") ; - avatar_label->setPixmap(pix); - delete[] data ; - - } - else - { - avatar_label->setPixmap(QPixmap(":/images/user/personal64.png")); - } + unsigned char *data = NULL; + int size = 0 ; + rsMsgs->getAvatarData(mSslId, data, size); + if(size != 0) + { + // set the image + QPixmap pix ; + pix.loadFromData(data,size,"PNG") ; + avatar_label->setPixmap(pix); + delete[] data ; + } + else + { + avatar_label->setPixmap(QPixmap(":/images/user/personal64.png")); + } } void SecurityItem::togglequickmessage() { if (messageframe->isHidden()) { - messageframe->setVisible(true); - } + messageframe->setVisible(true); + } else { - messageframe->setVisible(false); - } - + messageframe->setVisible(false); + } } void SecurityItem::sendMessage() { - /* construct a message */ - MessageInfo mi; - - mi.title = tr("Quick Message").toStdWString(); - mi.msg = quickmsgText->toHtml().toStdWString(); - mi.msgto.push_back(mGpgId); - - rsMsgs->MessageSend(mi); + /* construct a message */ + MessageInfo mi; - quickmsgText->clear(); - messageframe->setVisible(false); + mi.title = tr("Quick Message").toStdWString(); + mi.msg = quickmsgText->toHtml().toStdWString(); + mi.msgto.push_back(mGpgId); + + rsMsgs->MessageSend(mi); + + quickmsgText->clear(); + messageframe->setVisible(false); } void SecurityItem::on_quickmsgText_textChanged() { - if (quickmsgText->toPlainText().isEmpty()) - { - sendmsgButton->setEnabled(false); - } - else - { - sendmsgButton->setEnabled(true); - } + if (quickmsgText->toPlainText().isEmpty()) + { + sendmsgButton->setEnabled(false); + } + else + { + sendmsgButton->setEnabled(true); + } } diff --git a/retroshare-gui/src/gui/feeds/SecurityItem.h b/retroshare-gui/src/gui/feeds/SecurityItem.h index a72ae5f6c..fd9054249 100644 --- a/retroshare-gui/src/gui/feeds/SecurityItem.h +++ b/retroshare-gui/src/gui/feeds/SecurityItem.h @@ -25,47 +25,44 @@ #include "ui_SecurityItem.h" #include -const uint32_t SEC_TYPE_CONNECT_ATTEMPT = 0x0001; /* failed Connect Attempt */ -const uint32_t SEC_TYPE_AUTH_DENIED = 0x0002; /* failed outgoing attempt */ -const uint32_t SEC_TYPE_UNKNOWN_IN = 0x0003; /* failed incoming with unknown peer */ -const uint32_t SEC_TYPE_UNKNOWN_OUT = 0x0004; /* failed outgoing with unknown peer */ +const uint32_t SEC_TYPE_CONNECT_ATTEMPT = 0x0001; /* failed Connect Attempt */ +const uint32_t SEC_TYPE_AUTH_DENIED = 0x0002; /* failed outgoing attempt */ +const uint32_t SEC_TYPE_UNKNOWN_IN = 0x0003; /* failed incoming with unknown peer */ +const uint32_t SEC_TYPE_UNKNOWN_OUT = 0x0004; /* failed outgoing with unknown peer */ class FeedHolder; - class SecurityItem : public QWidget, private Ui::SecurityItem { - Q_OBJECT + Q_OBJECT public: - /** Default Constructor */ - SecurityItem(FeedHolder *parent, uint32_t feedId, std::string gpgId, std::string sslId, uint32_t type, bool isHome); - - /** Default Destructor */ + /** Default Constructor */ + SecurityItem(FeedHolder *parent, uint32_t feedId, std::string gpgId, std::string sslId, uint32_t type, bool isHome); void updateItemStatic(); - void small(); + void small(); bool isSame(const std::string &sslId, uint32_t type); + private slots: /* default stuff */ - void gotoHome(); - void removeItem(); + void removeItem(); void toggle(); void addFriend(); void removeFriend(); + void peerDetails(); void sendMsg(); void openChat(); void updateItem(); void updateAvatar(const QString &peer_id); - - void togglequickmessage(); - void sendMessage(); - - void on_quickmsgText_textChanged(); + void togglequickmessage(); + void sendMessage(); + + void on_quickmsgText_textChanged(); private: FeedHolder *mParent; diff --git a/retroshare-gui/src/gui/feeds/SecurityItem.ui b/retroshare-gui/src/gui/feeds/SecurityItem.ui index d6afff92f..43ff63086 100644 --- a/retroshare-gui/src/gui/feeds/SecurityItem.ui +++ b/retroshare-gui/src/gui/feeds/SecurityItem.ui @@ -6,13 +6,10 @@ 0 0 - 476 + 675 382 - - - 6 @@ -149,7 +146,7 @@ border-radius: 10px} - + 0 @@ -230,6 +227,57 @@ border-radius: 10px} + + + + Peer details + + + + :/images/peerdetails_16x16.png:/images/peerdetails_16x16.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + Deny friend + + + + :/images/denied16.png:/images/denied16.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + Make friend + + + + :/images/user/add_user16.png:/images/user/add_user16.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + @@ -421,7 +469,7 @@ border-radius: 10px} - Location + Location: @@ -434,7 +482,7 @@ border-radius: 10px} - IP Address + IP Address: @@ -447,7 +495,7 @@ border-radius: 10px} - Connection Method + Connection Method: diff --git a/retroshare-gui/src/gui/notifyqt.cpp b/retroshare-gui/src/gui/notifyqt.cpp index 427d4814b..1f8c46019 100644 --- a/retroshare-gui/src/gui/notifyqt.cpp +++ b/retroshare-gui/src/gui/notifyqt.cpp @@ -292,9 +292,9 @@ void NotifyQt::notifyListChange(int list, int type) { case NOTIFY_LIST_NEIGHBOURS: #ifdef NOTIFY_DEBUG - std::cerr << "received neighbrs changed" << std::endl ; + std::cerr << "received neighbours changed" << std::endl ; #endif - emit neighborsChanged(); + emit neighboursChanged(); break; case NOTIFY_LIST_FRIENDS: #ifdef NOTIFY_DEBUG @@ -433,7 +433,7 @@ void NotifyQt::UpdateGUI() if(!already_updated) { emit messagesChanged() ; - emit neighborsChanged(); + emit neighboursChanged(); emit configChanged(); already_updated = true ; diff --git a/retroshare-gui/src/gui/notifyqt.h b/retroshare-gui/src/gui/notifyqt.h index dc3915bb4..085f075a3 100644 --- a/retroshare-gui/src/gui/notifyqt.h +++ b/retroshare-gui/src/gui/notifyqt.h @@ -66,7 +66,7 @@ class NotifyQt: public QObject, public NotifyBase void filesPostModChanged(bool) const ; void transfersChanged() const ; void friendsChanged() const ; - void neighborsChanged() const ; + void neighboursChanged() const ; void messagesChanged() const ; void messagesTagsChanged() const; void forumsChanged() const ; // use connect with Qt::QueuedConnection diff --git a/retroshare-gui/src/gui/settings/NotifyPage.cpp b/retroshare-gui/src/gui/settings/NotifyPage.cpp index 96c81f625..b7f72ecec 100755 --- a/retroshare-gui/src/gui/settings/NotifyPage.cpp +++ b/retroshare-gui/src/gui/settings/NotifyPage.cpp @@ -84,6 +84,8 @@ NotifyPage::save(QString &/*errmsg*/) newsflags |= RS_FEED_TYPE_MSG; if (ui.notify_Chat->isChecked()) newsflags |= RS_FEED_TYPE_CHAT; + if (ui.notify_Security->isChecked()) + newsflags |= RS_FEED_TYPE_SECURITY; if (ui.chat_NewWindow->isChecked()) chatflags |= RS_CHAT_OPEN; @@ -157,6 +159,7 @@ void NotifyPage::load() ui.notify_Chat->setChecked(newsflags & RS_FEED_TYPE_CHAT); ui.notify_Messages->setChecked(newsflags & RS_FEED_TYPE_MSG); ui.notify_Chat->setChecked(newsflags & RS_FEED_TYPE_CHAT); + ui.notify_Security->setChecked(newsflags & RS_FEED_TYPE_SECURITY); ui.chat_NewWindow->setChecked(chatflags & RS_CHAT_OPEN); ui.chat_Focus->setChecked(chatflags & RS_CHAT_FOCUS); diff --git a/retroshare-gui/src/gui/settings/NotifyPage.ui b/retroshare-gui/src/gui/settings/NotifyPage.ui index f33656abc..ce20a639f 100755 --- a/retroshare-gui/src/gui/settings/NotifyPage.ui +++ b/retroshare-gui/src/gui/settings/NotifyPage.ui @@ -6,7 +6,7 @@ 0 0 - 427 + 516 425 @@ -558,6 +558,13 @@ + + + + Security + + + diff --git a/retroshare-gui/src/gui/settings/rsharesettings.cpp b/retroshare-gui/src/gui/settings/rsharesettings.cpp index 34137d396..a9e830921 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.cpp +++ b/retroshare-gui/src/gui/settings/rsharesettings.cpp @@ -130,7 +130,7 @@ void RshareSettings::initSettings() uint defNewsFeed = (RS_FEED_TYPE_PEER | RS_FEED_TYPE_CHAN | RS_FEED_TYPE_FORUM | RS_FEED_TYPE_BLOG | RS_FEED_TYPE_CHAT | RS_FEED_TYPE_MSG | - RS_FEED_TYPE_FILES); + RS_FEED_TYPE_FILES | RS_FEED_TYPE_SECURITY); setDefault(SETTING_NEWSFEED_FLAGS, defNewsFeed); setDefault(SETTING_CHAT_FLAGS, defChat); @@ -309,7 +309,7 @@ void RshareSettings::setNotifyFlags(uint flags) uint RshareSettings::getTrayNotifyFlags() { - return value(SETTING_TRAYNOTIFY_FLAGS, TRAYNOTIFY_PRIVATECHAT | TRAYNOTIFY_MESSAGES | TRAYNOTIFY_CHANNELS | TRAYNOTIFY_FORUMS | TRAYNOTIFY_TRANSFERS).toUInt(); + return value(SETTING_TRAYNOTIFY_FLAGS, TRAYNOTIFY_PRIVATECHAT | TRAYNOTIFY_MESSAGES | TRAYNOTIFY_CHANNELS | TRAYNOTIFY_FORUMS ).toUInt(); } void RshareSettings::setTrayNotifyFlags(uint flags) diff --git a/retroshare-gui/src/lang/retroshare_de.qm b/retroshare-gui/src/lang/retroshare_de.qm index ffc9d2190f0bf83041687bc227a4a8b741016369..8ae9e5929c14b61d433e5be5f4dc3e367d51cae7 100644 GIT binary patch delta 10163 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 delta 9389 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 - - AddLinksDialog - - Add Link - Link hinzufügen - - - Add a new Link - Neuen Link hinzufügen - - - Title: - Titel: - - - Url: - URL: - - - +2 Great! - +2 Super! - - - +1 Good - +1 Gut - - - 0 Okay - 0 In Ordnung - - - -1 Sux - -1 Schrott - - - -2 Bad Link - -2 Pfui - - - Add Anonymous Link - Anonyme Verknüpfung hinzufügen - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:18pt; font-weight:600; color:#ffffff;">Add Link to Cloud</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:18pt; font-weight:600; color:#ffffff;">Link zur Verknüpfungs-Wolke hinzufügen</span></p></body></html> - - - Cancel - Abbrechen - - - Add Link Failure - Fehle beim Hinzufügen des Links - - - Missing Link and/or Title - Fehlernder Link oder Titel - - AdvancedSearchDialog @@ -863,14 +796,6 @@ p, li { white-space: pre-wrap; } Play Abspielen - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Toggle Message Read Status</p></body></html> - Gelesen Status umschalten - New @@ -881,10 +806,6 @@ p, li { white-space: pre-wrap; } Unsubscribe From Channel Kanal abbestellen - - Go to Channel Message - Gehe zum Kanalbeitrag - Copy RetroShare Link @@ -918,10 +839,6 @@ p, li { white-space: pre-wrap; } Subscribe to Channel Kanal abonnieren - - Go to Channel - Gehe zum Kanal - Unknown Channel @@ -1032,10 +949,6 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:10pt; font-weight:600;">Kanäle</span></p></body></html> - - Add - Hinzufügen - Display @@ -1672,10 +1585,6 @@ und meinen GPG Schlüssel nicht unterzeichnet RetroShare ID - - Copy Peer - Kopiere Nachbar - Certificate @@ -2227,14 +2136,6 @@ Möchten Sie die Änderungen speichern? Load channel logo Lade Kanal Logo - - Load File - Lade Datei - - - Pictures (*.png *.xpm *.jpg) - Bilder (*.png *.xpm *.jpg) - CreateChannelMsg @@ -2368,14 +2269,6 @@ p, li { white-space: pre-wrap; } Load thumbnail picture Lade Miniaturbild - - Load File - Lade Datei - - - Pictures (*.png *.xpm *.jpg) - Bilder (*.png *.xpm *.jpg) - CreateForum @@ -2671,10 +2564,6 @@ p, li { white-space: pre-wrap; } DHT DHT - - DHT On - DHT An - DHT Off @@ -3193,14 +3082,6 @@ Das ist nützlich, wenn Du eine externe Festplatte freigibst und die Datei nicht Add Channel Logo Kanal Logo hinzufügen - - Load File - Lade Datei - - - Pictures (*.png *.xpm *.jpg) - Bilder (*.png *.xpm *.jpg) - Load channel logo @@ -3760,10 +3641,6 @@ p, li { white-space: pre-wrap; } Subject: Betreff: - - Go to Forum Message - Gehe zum Forumbeitrag - Unsubscribe To Forum @@ -3829,10 +3706,6 @@ p, li { white-space: pre-wrap; } Subscribe to Forum Forum abonnieren - - Go to Forum - Gehe zum Forum - Expand @@ -3945,18 +3818,6 @@ p, li { white-space: pre-wrap; } AUTHD - - Anonymous - Anonym - - - signed - unterzeichnet - - - none - keine - @@ -4006,10 +3867,6 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-weight:600;">Foren</span></p></body></html> - - Add - Hinzufügen - Start new Thread for Selected Forum @@ -4238,10 +4095,6 @@ p, li { white-space: pre-wrap; } Group Chat Gruppenchat - - Messages entered here are sent to all collected friends - Nachrichten, die Du hier eingibst, werden an alle verbundenen Freunde versendet - Messages entered here are sent to all connected friends @@ -4541,10 +4394,6 @@ p, li { white-space: pre-wrap; } Collapse all Alle reduzieren - - location - Standort - @@ -4582,14 +4431,6 @@ p, li { white-space: pre-wrap; } Do you really want to physically delete the history? Willst Du wirklich den Nachrichtenverlauf physisch löschen? - - Load File - Lade Datei - - - Pictures (*.png *.xpm *.jpg *.tiff *.gif) - Bilder (*.png *.xpm *.jpg *.tiff *.gif) - Add Extra File @@ -5041,10 +4882,6 @@ Gib Dein GPG Passwort wenn Du gefragt wirst ein, um Deinen neuen Schlüssel zu u Do not Minimize to Tray Icon Nicht in den Systemabschnitt minimieren - - You need administrator rights to set this option. - Du benötigst Administratorrechte zum aktivieren der Einstellung. - seconds @@ -5956,195 +5793,6 @@ Die folgenden Wege sind möglich: (Er/Sie erhält eine Email mit der Anleitung zum Herunterladen von RetroShare) - - LinksDialog - - Share Link Anonymously - Verknüpfung anonym teilen - - - Vote on Link - Über diese Verknüpfung abstimmen - - - Download - Herunterladen - - - Expand - Erweitern - - - Hide - Verbergen - - - File Request Confirmation - Bestätigung der Dateianforderung - - - The file has been added to your download list. - Die Datei wurde zur Downloadliste hinzugefügt. - - - File Request canceled - Dateianforderung abgebrochen - - - The file has not been added to your download list, because you already have it. - Die Datei wurde nicht zur Downloadliste hinzugefügt, da Sie sie schon haben. - - - File Request Error - Fehler bei der Dateianforderung - - - The file link is malformed. - Link ist fehlerhaft. - - - Title / Comment - Titel / Kommentar - - - Score - Punkte - - - Peer / Link - Nachbar / Verknüpfung - - - Sort by - Sortieren nach - - - Time - Zeit - - - Ranking - Rangfolge - - - In last - Seit letztem - - - Month - Monat - - - Week - Woche - - - Day - Tag - - - From - Von - - - All Peers - Alle Nachbarn - - - Own Links - Eigene Verknüpfungen - - - Show - Zeigen - - - Top 100 - Top 100 - - - 101-200 - 101-200 - - - 201-300 - 201-300 - - - 301-400 - 301-400 - - - 401-500 - 401-500 - - - Bottom 100 - Letzte 100 - - - Link: - Verknüpfung: - - - Add Anonymous Link - Anonyme Verknüpfung hinzufügen - - - Add Link/Comment - Verknüpfung/Kommentar hinzufügen - - - Title: - Titel: - - - Score: - Punkte: - - - +2 Great! - +2 Super! - - - +1 Good - +1 Gut - - - 0 Okay - 0 Okay - - - -1 Sux - -1 Schrott - - - -2 Bad Link - -2 Pfui - - - Url: - URL: - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-weight:600;">Links Cloud</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-weight:600;">Verknüpfungs-Wolke</span></p></body></html> - - - Add new link - Neuen Link hinzufügen - - - Combo - Kombiniert - - MainWindow @@ -6192,10 +5840,6 @@ p, li { white-space: pre-wrap; } Dht Details - - Chat - Chat - @@ -6382,10 +6026,6 @@ p, li { white-space: pre-wrap; } Maximize Maximieren - - Links Cloud - Verknüpfungs-Wolke - Unfinished @@ -6998,10 +6638,6 @@ Willst Du die Nachricht speichern ? MessagePage - - Misc - Verschiedenes - Reading @@ -7065,10 +6701,6 @@ Willst Du die Nachricht speichern ? MessageToaster - - <b>1 new Message from</b> - <b>1 neue Nachricht von</b> - 1 new Message from @@ -7092,10 +6724,6 @@ Willst Du die Nachricht speichern ? MessageWidget - - MainWindow - Hauptfenster - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -7217,10 +6845,6 @@ p, li { white-space: pre-wrap; } MessageWindow - - MainWindow - Hauptfenster - New Message @@ -7392,17 +7016,6 @@ p, li { white-space: pre-wrap; } From Von - - Size - Grösse - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Recommended Files</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Empfohlene Dateien</span></p></body></html> - Reply @@ -7500,22 +7113,6 @@ p, li { white-space: pre-wrap; } Quick View Schnellansicht - - Download all Recommended Files - Alle Dateien runterladen - - - Cc: - Cc: - - - Bcc: - Bcc: - - - Tags: - Schlagwörter: - @@ -7558,36 +7155,12 @@ p, li { white-space: pre-wrap; } Save As... Speichern unter... - - Print Document - Dokument drucken - Subject Betreff - - Subject: - Betreff: - - - From: - Von: - - - To: - An: - - - File Name - Dateiname - - - Hash - Prüfsumme - Print @@ -7654,56 +7227,17 @@ p, li { white-space: pre-wrap; } Click to sort by tags Klicken, um nach Schlagwörter zu sortieren - - Click to sort by mark - Klicken, um nach Kennzeichnung zu sortieren - - - Download - Herunterladen - - - Hide - Empfohlene Dateien ausblenden - - - Expand - Empfohlene Dateien einblenden - Click to sort by to Klicken, um nach Empfänger zu sortieren - - File - Datei - - - Files - Dateien - - - Save as... - Speichern unter... - - - HTML-Files (*.htm *.html);;All Files (*) - HTML-Dateien (*.htm *.html);;Alle Dateien (*) - Reply to All Allen antworten - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download all Recommended Files</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alle Dateien runterladen</p></body></html> - Total Inbox: @@ -7724,10 +7258,6 @@ p, li { white-space: pre-wrap; } Tags Schlagwörter - - Tag - Schlagwort - @@ -7736,23 +7266,11 @@ p, li { white-space: pre-wrap; } Trash Papierkorb - - Favorite Tags - Schlagwörter - Folders Ordner - - Remove All Tags - Alle Schlagwörter entfernen - - - New tag ... - Neues Schlagwort... - Mark as read @@ -7790,10 +7308,6 @@ p, li { white-space: pre-wrap; } To An - - Edit... - Editieren... - Click to sort by star @@ -8445,7 +7959,7 @@ p, li { white-space: pre-wrap; } Chat - + Chat @@ -8458,7 +7972,12 @@ p, li { white-space: pre-wrap; } Nachrichten - + + Security + Sicherheit + + + Systray Icon Systray Icon @@ -8488,10 +8007,6 @@ p, li { white-space: pre-wrap; } Download completed Download fertig - - Combined icon - Kombiniertes Icon - @@ -8567,7 +8082,7 @@ p, li { white-space: pre-wrap; } Feeds am Ende anfügen - + Top Left Oben Links @@ -8646,12 +8161,27 @@ p, li { white-space: pre-wrap; } - + Expand Erweitern - + + Location: + Standort: + + + + IP Address: + IP-Adresse: + + + + Connection Method: + Verbindungsmethode: + + + Status: Status: @@ -8676,22 +8206,7 @@ p, li { white-space: pre-wrap; } Peer ID: - - Location - Ort - - - - IP Address - IP-Adresse - - - - Connection Method - Verbindungsmethode - - - + Write Message Nachricht schreiben @@ -8716,7 +8231,7 @@ p, li { white-space: pre-wrap; } Abbrechen - + Friend Connected Freund verbunden @@ -8741,7 +8256,7 @@ p, li { white-space: pre-wrap; } Nachbar - + @@ -8754,12 +8269,12 @@ p, li { white-space: pre-wrap; } Unbekannter Nachbar - + Hide Verbergen - + Quick Message Schnelle Nachrricht @@ -8782,333 +8297,6 @@ p, li { white-space: pre-wrap; } Freunde - - PeersDialog - - Chat - Chat - - - Save Certificate - Zertifikat speichern - - - Certificates (*.pqi) - Zertifikate (*.pqi) - - - Status - Status - - - Connect To Friend - Verbinde zum Freund - - - Profile - Profil - - - Welcome to RetroShare's group chat. - Willkommen bei RetroShare's Gruppenchat. - - - me - ich - - - Group - Gruppe - - - Friend - Freund - - - Location - Standort - - - Friend Details - Freund-Details - - - Expand all - Alle erweitern - - - Collapse all - Alle reduzieren - - - Message Friend - Freund anschreiben - - - News Feed - Neuigkeiten - - - Paste RetroShare Link - RetroShare Link einfügen - - - Recommend this Friend to... - Freund weiterempfehlen... - - - Copy RetroShare Link - Kopiere RetroShare Link - - - Deny Friend - Blockiere Freund - - - Remove Friend Location - Freund entfernen - - - Add to group - Hinzufügen zur Gruppe - - - Move to group - Verschiebe in Gruppe - - - Groups - Gruppen - - - Remove from group - Aus Gruppe entfernen - - - Remove from all groups - Aus allen Gruppen entfernen - - - Available - Verfügbar - - - New group chat - Neuer Gruppenchat - - - Do you really want to physically delete the history? - Willst Du wirklich den Nachrichtenverlauf physisch löschen? - - - Load File - Lade Datei - - - Pictures (*.png *.xpm *.jpg *.tiff *.gif) - Bilder (*.png *.xpm *.jpg *.tiff *.gif) - - - Add Extra File - Zusätzliche Datei hinzufügen - - - Drop file error. - Dateifehler bei Drag'n'Drop. - - - File not found or file name not accepted. - Datei nicht gefunden oder Dateiname nicht akzeptiert. - - - Directory can't be dropped, only files are accepted. - Ordner können nicht für Drag'n'Drop genutzt werden. Nur Dateien werden akzeptiert. - - - Italic - Kursiv - - - Underline - Unterstrichen - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Friends</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Freunde</span></p></body></html> - - - Add - Hinzufügen - - - Display - Anzeige - - - Add or Change your Avatar - Wähle oder ändere dein Avatar Bild - - - Edit Personal message - Statusnachricht ändern - - - Messages entered here are sent to all collected friends - Nachrichten, die Du hier eingibst, werden an alle verbundenen Freunde versendet - - - Bold - Fett - - - Text Color - Textfarbe - - - Create new Forum - Erstelle neues Forum - - - Create new Channel - Erstelle neuen Kanal - - - Add your Avatar Picture - Wähle dein Avatar Bild - - - Set your Personal Message - Statusnachricht ändern - - - Edit your status Message - Statusnachricht ändern - - - Sort by State - Sortiere nach Status - - - Hide State - Status ausblenden - - - Add a new Group - Neue Gruppe hinzufügen - - - Sort Descending Order - Absteigend sortieren - - - Sort Ascending Order - Aufsteigend sortieren - - - Delete Chat History - Nachrichtenverlauf löschen - - - Deletes all stored and displayed chat history - Löscht den gespeicherten und angezeigten Chat Verlauf - - - Add Friend - Freund hinzufügen - - - Create new Profile - Erstelle neues Profil - - - Font - Schriftart - - - Group Chat - Gruppenchat - - - Attach File - Datei anhängen - - - Send - Senden - - - Clear Chat History - Nachrichtenverlauf leeren - - - Save Chat History - Nachrichtenverlauf speichern - - - Message Group - Gruppe anschreiben - - - Edit Group - Gruppe ändern - - - Remove Group - Gruppe entfernen - - - Do you want to remove this Friend? - Willst du diesen Freund entfernen? - - - Save as... - Speichern unter... - - - Text File (*.txt );;All Files (*) - Text Datei (*.txt );;Alle Dateien (*) - - - Hide Offline Friends - Verstecke offline Freunde - - - Hide Status Column - Status Spalte ausblenden - - - is typing... - tippt... - - - Browse Message History - Nachrichtenverlauf anzeigen - - - Browse History - Nachrichtenverlauf - - - Friends - Freunde - - - Paste Friend Link - RetroShare Link einfügen - - - location - Standort - - PhotoDialog @@ -9470,10 +8658,6 @@ p, li { white-space: pre-wrap; } Plugin look-up directories - - Description - Beschreibung - Hash rejected. Add to white list. @@ -9758,14 +8942,6 @@ Do you want to send them a Message instead RetroShare RetroShare - - Load File - Lade Datei - - - Pictures (*.png *.xpm *.jpg *.tiff *.gif) - Bilder (*.png *.xpm *.jpg *.tiff *.gif) - PrintPreview @@ -10247,14 +9423,6 @@ Lockdatei: Lockdatei: - - Another RetroShare using the same profile is already running on your system. Please close that instance first - Ein laufendes RetroShare benutzt das gleiche Profil. Bitte schliesse diese Instanz - - - An unexpected error occurred when Retrosharetried to acquire the single instance lock - Ein unerwartete Fehler während des "Single instance lock" ist aufgetreten - Login Failure @@ -10356,19 +9524,11 @@ Lockdatei: %1 of %2 RetroShare links processed. %1 von %2 RetroShare Links verarbeitet. - - %1 of %2 RetroShare links processed - %1 von %2 RetroShare Links verarbeitet. - Request Confirmation Anfrage bestätigen - - The forum message could not be found. - Der Forumbeitrag "%1" konnte nicht gefunden werden. - @@ -10391,10 +9551,6 @@ Lockdatei: Message Request canceled Nachrichtenanfrage abgebrochen - - The receipient of the message "%1" is unknown. - Der Empfänger der Nachricht "%1" ist unbekannt. - File Request Error @@ -10420,10 +9576,6 @@ Lockdatei: Peer details Nachbar Details - - No running instance of RetroShare found. - Kein laufendes RetroShare gefunden. - Start with a RetroShare link is only supported for Windows. @@ -10850,65 +10002,6 @@ p, li { white-space: pre-wrap; } <strong>Hoch:</strong> - - RemoteDirModel - - Friends Directories - Dateien von Freunden - - - My Directories - Meine Ordner - - - Size - Grösse - - - Share Type - Freigabe Typ - - - What's new - Was ist neu - - - Age - Alter - - - Anonymous - Anonym - - - Anonymous and browsable by friends - Anonym und Durchsuchbar von Freunden - - - Only browsable by friends - Nur Durchsuchbar von Freunden - - - NEW - NEU - - - FILE - DATEI - - - Files - Dateien - - - File - Datei - - - DIR - ORDNER - - RetroshareDirModel @@ -11074,22 +10167,6 @@ p, li { white-space: pre-wrap; } Enter a keyword here (at least 3 char long) Gib einen Suchbegriff ein (min. 3 Zeichen) - - Copy retroshare Link - Kopiere RetroShare Link - - - Send retroshare Link - Sende RetroShare Link - - - Broadcast on Channel - Im Kanal bekanntgeben - - - Recommend to Friends - Freunden empfehlen - @@ -11330,124 +10407,145 @@ p, li { white-space: pre-wrap; } SecurityItem - - + + Expand - + Erweitern Remove Item - + Entferne Element + Peer details + Nachbar Details + + + + Deny friend + Blockiere Freund + + + + Make friend + Freund hinzufügen + + + Write a quick Message - Schnelle Nachricht schreiben + Schnelle Nachricht schreiben Chat - + Chat Start Chat - Chat starten + Chat starten Cancel - Abbrechen + Abbrechen Send - Senden + Senden Name: - Name: + Name: Peer ID: - Peer ID: + Peer ID: Trust: - Vertrauen: + Vertrauen: - Location - + Location: + Standort: - IP Address - IP-Adresse + IP Address: + IP-Adresse: - Connection Method - Verbindungsmethode + Connection Method: + Verbindungsmethode: Status: - Status: + Status: Write Message - Nachricht schreiben + Nachricht schreiben - + Connect Attempt - Verbindungsversuch + Verbindungsversuch Not Yet Friends - + Noch keine Freunde Unknown (Incoming) Connect Attempt - + Unbekannter (eingehender) Verbindungsversuch Unknown (Outgoing) Connect Attempt - + Unbekannter (ausgehender) Verbindungsversuch Unknown Security Issue - + Unbekanntes Sicherheitsproblem - + + Unknown Peer - Unbekannter Nachbar + Unbekannter Nachbar Hide - + Verbergen - + + Do you want to remove this Friend? + Willst du diesen Freund entfernen? + + + Quick Message - Schnelle Nachrricht + Schnelle Nachrricht @@ -12312,14 +11410,6 @@ p, li { white-space: pre-wrap; } Multiple instances Mehrere Instanzen - - Another RetroShare using the same profile is already running on your system. Please close that instance first, or choose another profile - Ein laufendes RetroShare benutzt das gleiche Profil. Bitte schliesse diese Instanz oder benutze ein anderes Profil - - - An unexpected error occurred when Retrosharetried to acquire the single instance lock - Ein unerwartete Fehler während des "Single instance lock" ist aufgetreten - Another RetroShare using the same profile is already running on your system. Please close that instance first, or choose another profile @@ -12741,10 +11831,6 @@ p, li { white-space: pre-wrap; } Cancel Abbrechen - - Paste RetroShare Link - RetroShare Link einfügen - StyleDialog diff --git a/retroshare-gui/src/main.cpp b/retroshare-gui/src/main.cpp index d418b7684..e86012f56 100644 --- a/retroshare-gui/src/main.cpp +++ b/retroshare-gui/src/main.cpp @@ -276,7 +276,7 @@ int main(int argc, char *argv[]) QObject::connect(notify,SIGNAL(publicChatChanged(int)) ,w->friendsDialog ,SLOT(publicChatChanged(int) )); QObject::connect(notify,SIGNAL(groupsChanged(int)) ,w->friendsDialog ,SLOT(groupsChanged(int) )); QObject::connect(notify,SIGNAL(privateChatChanged(int, int)) ,w ,SLOT(privateChatChanged(int, int) )); - QObject::connect(notify,SIGNAL(neighborsChanged()) ,w->networkDialog ,SLOT(insertConnect() )) ; + QObject::connect(notify,SIGNAL(neighboursChanged()) ,w->networkDialog ,SLOT(insertConnect() )) ; QObject::connect(notify,SIGNAL(messagesChanged()) ,w->messagesDialog ,SLOT(insertMessages() )) ; QObject::connect(notify,SIGNAL(messagesTagsChanged()) ,w->messagesDialog ,SLOT(messagesTagsChanged() )) ; QObject::connect(notify,SIGNAL(messagesChanged()) ,w ,SLOT(updateMessages() )) ;