Merge branch 'master' into gxs_mail_experiments

This commit is contained in:
csoler 2017-05-13 21:08:16 +02:00 committed by GitHub
commit c0c5cc52db
94 changed files with 3054 additions and 783 deletions

View File

@ -1,5 +1,172 @@
retroshare06 (0.6.2-1.XXXXXX~YYYYYY) YYYYYY; urgency=low
9714409 csoler Mon, 8 May 2017 10:57:00 +0200 Merge pull request #802 from csoler/v0.6-ImprovedGUI
de0f8b9 csoler Mon, 8 May 2017 10:51:15 +0200 moved passphrase box into start dialog, and removed blank logo, replaced it by RS splash logo
6cb4990 csoler Mon, 8 May 2017 10:06:40 +0200 fixed compilation with qt4
84c8158 csoler Mon, 8 May 2017 09:38:33 +0200 disabled show OpMode status on default
24eca4a defnax Sun, 7 May 2017 19:39:20 +0200 Moved status icon column to the last position
b18a186 csoler Sat, 6 May 2017 18:20:48 +0200 fixed ftExtraList to accept e2e encrypted transfers in addition to direct transfers. This fixed the drag+drop of shared files in a distant chat
59ac5a5 csoler Sat, 6 May 2017 16:51:38 +0200 added on-the-fly fix of group privacy flags, so that edited groups with old un-set flags will be set automatically. Also fixes the bug preventing to grant membership on old circles
868c046 csoler Sat, 6 May 2017 13:23:26 +0200 fixed bug in serializer caused to not updating the size parameter. Also fixes unittests
f7f0d8d csoler Fri, 5 May 2017 23:10:07 +0200 Merge pull request #800 from sehraf/pr-openssl-chacha20
00c80b1 csoler Fri, 5 May 2017 23:06:25 +0200 Merge pull request #797 from PhenomRetroShare/Fix_WindowsCompilation
e4dde95 csoler Fri, 5 May 2017 23:04:28 +0200 Merge pull request #798 from PhenomRetroShare/Fix_TravisCompilation
7371fdc sehraf Fri, 5 May 2017 18:50:40 +0200 add openssl chacha20 support
96b4a1b sehraf Fri, 5 May 2017 15:40:02 +0200 add openssl chacha20-poly1305 support
e913f36 csoler Thu, 4 May 2017 21:40:32 +0200 fixed crash when trying to deserialize an empty buffer in rsrecogn
2f2715b csoler Thu, 4 May 2017 21:23:21 +0200 Merge pull request #799 from csoler/v0.6-ImprovedGUI
6484ea6 csoler Thu, 4 May 2017 21:19:23 +0200 improved graph widget
e6a7168 csoler Thu, 4 May 2017 16:41:02 +0200 merged upstream/master
1c2b43b Phenom Thu, 4 May 2017 15:01:25 +0200 Fix UnitTest compilation
d31b80c Phenom Thu, 4 May 2017 11:31:36 +0200 Fix Windows Compilation
cac335e csoler Wed, 3 May 2017 23:05:50 +0200 Merge pull request #796 from csoler/v0.6-Serialization
4f4240d csoler Wed, 3 May 2017 22:43:16 +0200 fixed bug in history serializer
214aaa7 csoler Wed, 3 May 2017 22:20:58 +0200 added safety check for null chunks in TlvMemBlock_proxy deserialization
f006146 csoler Tue, 2 May 2017 22:41:01 +0200 merged upstream/master
4bee52c csoler Tue, 2 May 2017 22:34:45 +0200 removed old unused serialization code
861dc16 csoler Tue, 2 May 2017 22:05:54 +0200 switched VOIP to new serialization
c481186 csoler Tue, 2 May 2017 10:14:12 +0200 Merge pull request #793 from PhenomRetroShare/Fix_FriendListExport
99d8b7d csoler Mon, 1 May 2017 21:23:34 +0200 switched service control items to new serialization
07201e8 Phenom Mon, 1 May 2017 12:48:11 +0200 Fix FriendList Import/Export filename and error message.
1f56db5 csoler Sun, 30 Apr 2017 22:45:18 +0200 Merge pull request #790 from PhenomRetroShare/Add_CreateGxsIdentityByDefault
0c17570 csoler Sun, 30 Apr 2017 22:44:20 +0200 Merge pull request #792 from PhenomRetroShare/Add_DoubleClickOnTextBrowser
3d17d31 csoler Sun, 30 Apr 2017 22:43:10 +0200 Merge pull request #789 from PhenomRetroShare/Add_FriendTimeOffsetNewsFeed
8aa9be3 csoler Sun, 30 Apr 2017 22:39:07 +0200 Merge pull request #791 from PhenomRetroShare/Fix_MissingMessageMarkedRead
40aff5d csoler Sun, 30 Apr 2017 22:37:54 +0200 Merge pull request #785 from PhenomRetroShare/Add_RelayBandwidthOnServerPage
16b8947 csoler Sun, 30 Apr 2017 20:31:43 +0200 improved serializer documentation
cecd9a3 csoler Sun, 30 Apr 2017 20:14:23 +0200 merged upstream/master
24c7c38 csoler Sun, 30 Apr 2017 20:08:30 +0200 removed old file rssrviceserialiser.h/cc
14076de csoler Sun, 30 Apr 2017 19:17:44 +0200 moved code of rsservicerserialiser into rsserializer.h/cc and renamed it into RsRawSerializer
e401b90 csoler Sun, 30 Apr 2017 16:05:37 +0200 moved rsserializer and rstypeserializer to serialiser/
4f92f48 csoler Sat, 29 Apr 2017 23:02:44 +0200 dwicthed GxsTunnel items to new serialization
4fbcc1e Phenom Sat, 29 Apr 2017 19:47:29 +0200 Add Double Click on Name for Chat to add their name in text writer.
1159c86 csoler Sat, 29 Apr 2017 21:50:55 +0200 moved wiki and wire items to rsitems/
d58c638 csoler Sat, 29 Apr 2017 21:46:54 +0200 switched wiki and wire items to new serialization
77adc82 Phenom Sat, 29 Apr 2017 17:32:23 +0200 Fix Missing messages when mark all as read.
5cba005 csoler Fri, 28 Apr 2017 23:32:47 +0200 moved recognitems to rsitems/
2349269 csoler Fri, 28 Apr 2017 23:28:56 +0200 switch rsrecognitems to new serialization
8341c68 csoler Fri, 28 Apr 2017 18:54:07 +0200 removed old code
688813f csoler Fri, 28 Apr 2017 18:51:35 +0200 moved photo items to rsitems/
634efb6 csoler Fri, 28 Apr 2017 18:42:11 +0200 switched rsphotoitems to new serialization
d3c960e csoler Fri, 28 Apr 2017 17:48:54 +0200 removed old code
22e2416 csoler Fri, 28 Apr 2017 17:47:41 +0200 moved rsserviceinfo items to rsitems/
2d19783 csoler Fri, 28 Apr 2017 17:44:45 +0200 switched serviceinfo items to new serialization
c33c34b csoler Fri, 28 Apr 2017 16:44:04 +0200 moved rspluginitems to rsitems/
d32a8ca csoler Fri, 28 Apr 2017 16:39:54 +0200 switched PluginItems to new serialization
45eaf27 csoler Fri, 28 Apr 2017 16:30:33 +0200 moved rsgxsupdateitems to rsitems/
2e67665 csoler Fri, 28 Apr 2017 16:26:59 +0200 switched MsgUpdate items to new serialization
5995e50 csoler Thu, 27 Apr 2017 21:24:27 +0200 moved rsstatusitem.h to rsitems/
87018ed csoler Thu, 27 Apr 2017 21:20:30 +0200 switched rsstatusitem to new serializer
07a93be csoler Thu, 27 Apr 2017 21:11:10 +0200 moved heartbeatitem.h to rsitems/
9adbab3 csoler Thu, 27 Apr 2017 21:10:22 +0200 switched heartbeatitems to new serialization
8a9edb2 Phenom Thu, 27 Apr 2017 17:03:53 +0200 Create a Gxs Identity by default.
19b4fb8 Phenom Thu, 27 Apr 2017 16:42:25 +0200 Add Friend Time Offset news feed.
349d14b csoler Thu, 27 Apr 2017 14:44:41 +0200 moved rsposteditems to rsitems/
35ecc19 csoler Thu, 27 Apr 2017 14:41:31 +0200 switched rsposteditems to new serialization
22f6d15 csoler Thu, 27 Apr 2017 14:21:46 +0200 moved rsnxsitems.cc to rsitems/
3c20a85 csoler Thu, 27 Apr 2017 14:16:57 +0200 switched RsNxsItems to new serialization
f6e59f7 csoler Thu, 27 Apr 2017 11:59:18 +0200 moved gxsforumitems to rsitems/
449a420 csoler Thu, 27 Apr 2017 11:56:56 +0200 dwitched gxsforum items to new serialization
f50670f csoler Wed, 26 Apr 2017 20:59:59 +0200 moved circle items to rsitems/
559137d csoler Wed, 26 Apr 2017 20:57:28 +0200 switched gxscircleitems to new serialization
db64523 csoler Wed, 26 Apr 2017 20:15:54 +0200 moved rsgxschannel items to rsitems
69729ad csoler Wed, 26 Apr 2017 18:55:23 +0200 switch Channel items to new serialization
77c2e6d csoler Wed, 26 Apr 2017 18:14:10 +0200 improved error handlign in pqistore
8f97647 csoler Wed, 26 Apr 2017 15:43:00 +0200 fixed bug in RsGxsId deserialization
c31396a csoler Wed, 26 Apr 2017 14:31:15 +0200 moved dsdv code to unused directory
508a2e2 csoler Wed, 26 Apr 2017 14:28:25 +0200 moved gxs comment and Id items to rsitems/
97d0df0 csoler Wed, 26 Apr 2017 14:19:34 +0200 added comment about serialization hack
c0d8735 csoler Wed, 26 Apr 2017 14:17:38 +0200 switched RsGxsIdItems to new serialization
fb34fa1 csoler Wed, 26 Apr 2017 13:44:09 +0200 switch GxsComment item to new serialization
9c610a7 csoler Wed, 26 Apr 2017 11:40:46 +0200 cleaned the hierarchy of serialization classes
77e809e csoler Tue, 25 Apr 2017 21:21:46 +0200 switched GRouter to new serialization
9e246c9 Phenom Tue, 25 Apr 2017 18:39:30 +0200 Add warning about relays bandwidth.
4d7bd83 csoler Tue, 25 Apr 2017 10:14:50 +0200 Merge pull request #786 from PhenomRetroShare/Fix_RelaySettingValues
540a8b9 csoler Tue, 25 Apr 2017 10:01:00 +0200 Merge pull request #788 from csoler/v0.6-PRTest
078913f Phenom Fri, 21 Apr 2017 21:29:20 +0200 Fix GCC warnings: enumeration value TYPE_IDENTITY not handled in switch
3592d5b Phenom Fri, 21 Apr 2017 19:55:37 +0200 Fix GCC warnings: unused parameter names
593c0cb Phenom Wed, 19 Apr 2017 14:19:54 +0200 Fix CSA warnings: Called C++ object pointer is null
90aaace Phenom Wed, 19 Apr 2017 14:18:35 +0200 Fix CSA warnings: Called C++ object pointer is null
1f16f46 Phenom Wed, 19 Apr 2017 14:15:34 +0200 Fix CSA warnings: Called C++ object pointer is null
30632dc Phenom Wed, 19 Apr 2017 14:06:56 +0200 Fix CSA warnings: Called C++ object pointer is null
90cd623 Phenom Wed, 19 Apr 2017 14:04:50 +0200 Fix CAS warnings: Potential leak of memory pointed to by 'toaster'
b2b7d00 Phenom Wed, 19 Apr 2017 14:01:35 +0200 Fix CSA warnings: Called C++ object pointer is null
ff1908e Phenom Wed, 19 Apr 2017 11:50:24 +0200 Fix Clang Static Analyser: Undefined allocation of 0 bytes
f22dc0f Phenom Tue, 18 Apr 2017 12:02:34 +0200 Fix Clang warnings: unused variable 'action'
490f8d2 Phenom Tue, 18 Apr 2017 12:00:00 +0200 Fix Clang warnings: 'TYPE_IDENTITY' not handled
6e42cf4 Phenom Tue, 18 Apr 2017 11:56:25 +0200 Fix Clang warnings: field 'mPassword' will be initialized after field 'mPrevIsBad'
0d7df56 csoler Mon, 24 Apr 2017 22:47:08 +0200 moved rsconfigitems and rshistoryitems to rsitems/
f7338d4 csoler Mon, 24 Apr 2017 22:39:05 +0200 removed old code
43b3b87 csoler Mon, 24 Apr 2017 22:36:03 +0200 fixed a few bugs in config items
fcabe63 csoler Mon, 24 Apr 2017 18:51:51 +0200 switch RsConfigItems to new serialization
be9f126 electr Mon, 24 Apr 2017 18:43:17 +0200 Merge pull request #781 from Sonetio/libresapi_requests
af4fcf7 csoler Mon, 24 Apr 2017 17:33:30 +0200 switched rshistoryitems to new serialization
1327582 Phenom Mon, 24 Apr 2017 17:28:25 +0200 Fix Relay setting values
8ae6541 csoler Mon, 24 Apr 2017 17:10:01 +0200 added two new classes for config/service serialisers and a base generic serialiser class
8da5e15 Konrad Mon, 24 Apr 2017 16:00:23 +0200 Changed: difference time to absolute time.
dc2df07 csoler Mon, 24 Apr 2017 14:14:34 +0200 renamed RsSerializer into RsServiceSerializer
976a80a csoler Mon, 24 Apr 2017 13:30:18 +0200 switch rsfilelistitems to new serialization
26e9541 csoler Mon, 24 Apr 2017 11:06:51 +0200 moved RTT items to rsitems/
f6aaee7 csoler Mon, 24 Apr 2017 11:01:45 +0200 converted RTT items to new serialization
5071c4b csoler Mon, 24 Apr 2017 11:00:57 +0200 moved msgitems to rsitems/
fc82b20 csoler Mon, 24 Apr 2017 10:36:22 +0200 removed old serialization code in msgs
0886794 csoler Mon, 24 Apr 2017 10:29:57 +0200 fixed bug caused by wrong cast in lobby msg signature validation
91b0409 csoler Mon, 24 Apr 2017 10:11:24 +0200 fixed two memory bugs in serialization code
6313d89 defnax Mon, 24 Apr 2017 01:23:05 +0200 Improved look n feel of Profile Generation Window.
31c07f4 csoler Sun, 23 Apr 2017 22:40:26 +0200 converted RsMsgItems to new serialization. Added format and flag members to RsSerialiser and used the later to handle signature and config serialization techniques
63b4b3a csoler Sun, 23 Apr 2017 19:07:26 +0200 moved discovery2 items to rsitems/
9d9ff56 csoler Sun, 23 Apr 2017 19:02:12 +0200 switched discovery2items to new serialization
190a638 csoler Sun, 23 Apr 2017 17:53:25 +0200 added zesty to ubuntu releases
06e90e6 csoler Sun, 23 Apr 2017 17:49:07 +0200 added control file for zesty
c738026 csoler Sun, 23 Apr 2017 17:48:39 +0200 updated ubuntu changelog
2e71270 csoler Sat, 22 Apr 2017 21:36:39 +0200 fixed previous file move
bef6db4 csoler Sat, 22 Apr 2017 21:32:57 +0200 moved files
311f257 csoler Sat, 22 Apr 2017 21:10:55 +0200 converted GxsReputationItems to new serialization
782c027 csoler Sat, 22 Apr 2017 16:00:01 +0200 added names for turtle sub items
f571b05 Konrad Sat, 22 Apr 2017 11:06:56 +0200 Added: Checking if the vector is empty; Changed: Grouped values into one member
8c0b7ce Konrad Fri, 21 Apr 2017 23:44:00 +0200 Fixed: Responds sends now correct time difference
c9f618d Konrad Thu, 20 Apr 2017 19:09:57 +0200 Added: Notification about changed peer status
9600359 Konrad Thu, 20 Apr 2017 18:09:19 +0200 Fixed: Password was not stored after creating a new location
4a0b51c Konrad Wed, 19 Apr 2017 22:03:24 +0200 Added: to response information whether the identity is a contact
b43bedf Konrad Tue, 18 Apr 2017 23:00:59 +0200 Added: Handling requests to set opinion about identity
120ca9d Konrad Tue, 18 Apr 2017 22:58:15 +0200 Added: Handling requests to set opinion about identity
3f54568 Konrad Tue, 18 Apr 2017 22:56:35 +0200 Added: Handling requests to get details about identity
e2d9152 csoler Tue, 18 Apr 2017 21:11:37 +0200 moved converted serialisation files into new directory rsitems/, leaving serialiser/ for the serialisation classes
76dd7fe Konrad Tue, 18 Apr 2017 14:02:14 +0200 Added: Handling requests to add and remove contact
4a99000 Konrad Tue, 18 Apr 2017 14:00:30 +0200 Added: Handling requests to get and set node options
f8fc8b4 csoler Sun, 16 Apr 2017 20:16:59 +0200 removed old code in turtle serialiser
2ca46ec csoler Sun, 16 Apr 2017 20:11:54 +0200 fixed bug in serialization of data chunks
1211334 csoler Sun, 16 Apr 2017 19:59:22 +0200 fixed bug in serialization for turtle
636450f csoler Sat, 15 Apr 2017 18:46:44 +0200 moved turtle and FT to new serialization
fd33315 Konrad Fri, 14 Apr 2017 17:44:17 +0200 Added: Handling requests to create lobby
93aeae0 Konrad Fri, 14 Apr 2017 17:41:35 +0200 Added: Handling requests to delete identity
3453a3e csoler Tue, 11 Apr 2017 23:05:27 +0200 switched FileTransfer items to new serialization
80e8769 csoler Tue, 11 Apr 2017 21:37:35 +0200 added missign file and converted BW control items
731e20d csoler Mon, 10 Apr 2017 22:09:56 +0200 switch BanListItem classes to new serialization system
691ed8d csoler Mon, 10 Apr 2017 20:34:02 +0200 added new template for std::string with type id
8b77388 csoler Wed, 5 Apr 2017 21:02:17 +0200 removed all chat serialization code
ae9d0b2 csoler Wed, 5 Apr 2017 20:49:32 +0200 fixed a few bugs in chat serialization
03c31ce csoler Wed, 5 Apr 2017 18:27:29 +0200 fixed serialization test example
6b4fdb4 csoler Wed, 5 Apr 2017 18:25:54 +0200 fixed bug in serialization
a941136 csoler Wed, 5 Apr 2017 18:09:45 +0200 fixed a few bugs in new serialization
5b3e488 csoler Wed, 5 Apr 2017 16:53:20 +0200 fixed compilation
48688ea csoler Wed, 5 Apr 2017 10:27:12 +0200 progress in converting chat items to new serialization
9438d60 csoler Tue, 4 Apr 2017 22:53:50 +0200 progress in converting Chat items to new serialization model
f2fa70e csoler Tue, 4 Apr 2017 16:37:57 +0200 progress in converting Chat items to new serialization model
32ce9ae csoler Tue, 4 Apr 2017 15:33:59 +0200 started converting rschatitems to new serialization
f7e3968 csoler Tue, 4 Apr 2017 14:01:33 +0200 added hability to print in the serialization process
059dfcf csoler Tue, 4 Apr 2017 14:00:17 +0200 added hability to print in the serialization process
75a3cf0 csoler Sun, 2 Apr 2017 15:04:03 +0200 fixed compilation in new serialization test code
ddbe2ef csoler Sun, 2 Apr 2017 14:48:17 +0200 created .cc files for serialization
b52071d csoler Sat, 1 Apr 2017 18:05:53 +0200 removed RsSerializable and merged it into RsItem
1bc4fe5 csoler Sat, 25 Mar 2017 19:01:32 +0100 polished serialisation prototype
369621f csoler Mon, 20 Mar 2017 23:31:04 +0100 simplified new serialization prototype
4f24b95 csoler Sun, 19 Mar 2017 21:28:28 +0100 added new serialization code test example
-- Retroshare Dev Team <contact@retroshare.net> Mon, 8 May 2017 18:00:00 +0100
retroshare06 (0.6.2-1.20170423.190a638c~xenial) xenial; urgency=low
5b3b903 csoler Sun, 23 Apr 2017 17:33:21 +0200 added missing line for ubuntu zesty
73bfc27 csoler Sun, 23 Apr 2017 17:33:50 +0200 Merge pull request #784 from PhenomRetroShare/Fix_RelaySettingsPage
4c326f5 Phenom Sun, 23 Apr 2017 10:27:18 +0200 Fix Relay setting page.

View File

@ -377,8 +377,8 @@ std::string ApiServer::handleRequest(Request &request)
if(data.isRawData())
return data.getRawData();
if(!resp.mCallbackName.empty())
outstream << resource_api::makeKeyValueReference("callback_name", resp.mCallbackName);
if(!resp.mCallbackName.empty())
outstream << resource_api::makeKeyValueReference("callback_name", resp.mCallbackName);
outstream << resource_api::makeKeyValue("debug_msg", debugString.str());
outstream << resource_api::makeKeyValueReference("returncode", returncode);

View File

@ -106,7 +106,7 @@ public:
{}
protected:
virtual void gxsDoWork(Request &req, Response &resp)
virtual void gxsDoWork(Request &req, Response & /* resp */)
{
RsGxsIdGroup group;
std::string gxs_id;
@ -545,7 +545,7 @@ ResponseTask* IdentityHandler::handleCreateIdentity(Request & /* req */, Respons
return new CreateIdentityTask(mRsIdentity);
}
ResponseTask* IdentityHandler::handleDeleteIdentity(Request& req, Response& resp)
ResponseTask* IdentityHandler::handleDeleteIdentity(Request& /* req */, Response& /* resp */)
{
return new DeleteIdentityTask(mRsIdentity);
}

View File

@ -1,6 +1,7 @@
#pragma once
#include <util/rsthreads.h>
#include <util/cxx11retrocompat.h>
#include <retroshare/rsnotify.h>
#include "api/ResourceRouter.h"

View File

@ -428,14 +428,14 @@ bool DistributedChatService::handleRecvItem(RsChatItem *item)
{
switch(item->PacketSubType())
{
case RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_EVENT: handleRecvChatLobbyEventItem (dynamic_cast<RsChatLobbyEventItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE: handleRecvLobbyInvite (dynamic_cast<RsChatLobbyInviteItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_CHALLENGE: handleConnectionChallenge (dynamic_cast<RsChatLobbyConnectChallengeItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_UNSUBSCRIBE: handleFriendUnsubscribeLobby (dynamic_cast<RsChatLobbyUnsubscribeItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST_REQUEST: handleRecvChatLobbyListRequest (dynamic_cast<RsChatLobbyListRequestItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST: handleRecvChatLobbyList (dynamic_cast<RsChatLobbyListItem *>(item)) ; break ;
default:
return false ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_EVENT: handleRecvChatLobbyEventItem (dynamic_cast<RsChatLobbyEventItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE_DEPRECATED: handleRecvLobbyInvite_Deprecated (dynamic_cast<RsChatLobbyInviteItem_Deprecated*>(item)) ; break ; // to be removed (deprecated since May 2017)
case RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE: handleRecvLobbyInvite (dynamic_cast<RsChatLobbyInviteItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_CHALLENGE: handleConnectionChallenge (dynamic_cast<RsChatLobbyConnectChallengeItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_UNSUBSCRIBE: handleFriendUnsubscribeLobby (dynamic_cast<RsChatLobbyUnsubscribeItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST_REQUEST: handleRecvChatLobbyListRequest (dynamic_cast<RsChatLobbyListRequestItem *>(item)) ; break ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST: handleRecvChatLobbyList (dynamic_cast<RsChatLobbyListItem *>(item)) ; break ;
default: return false ;
}
return true ;
}
@ -1233,14 +1233,45 @@ void DistributedChatService::invitePeerToLobby(const ChatLobbyId& lobby_id, cons
RsChatLobbyInviteItem *item = new RsChatLobbyInviteItem ;
item->lobby_id = lobby_id ;
item->lobby_name = it->second.lobby_name ;
item->lobby_topic = it->second.lobby_topic ;
item->lobby_flags = connexion_challenge?RS_CHAT_LOBBY_FLAGS_CHALLENGE:(it->second.lobby_flags) ;
item->lobby_id = lobby_id ;
item->lobby_name = it->second.lobby_name ;
item->lobby_topic = it->second.lobby_topic ;
item->lobby_flags = connexion_challenge?RS_CHAT_LOBBY_FLAGS_CHALLENGE:(it->second.lobby_flags) ;
item->PeerId(peer_id) ;
sendChatItem(item) ;
//FOR BACKWARD COMPATIBILITY
{// to be removed (deprecated since May 2017)
RsChatLobbyInviteItem_Deprecated *item = new RsChatLobbyInviteItem_Deprecated ;
item->lobby_id = lobby_id ;
item->lobby_name = it->second.lobby_name ;
item->lobby_topic = it->second.lobby_topic ;
item->lobby_flags = connexion_challenge?RS_CHAT_LOBBY_FLAGS_CHALLENGE:(it->second.lobby_flags) ;
item->PeerId(peer_id) ;
sendChatItem(item) ;
}
}
// to be removed (deprecated since May 2017)
void DistributedChatService::handleRecvLobbyInvite_Deprecated(RsChatLobbyInviteItem_Deprecated *item)
{
#ifdef DEBUG_CHAT_LOBBIES
std::cerr << "Received deprecated invite to lobby from " << item->PeerId() << " to lobby " << std::hex << item->lobby_id << std::dec << ", named " << item->lobby_name << item->lobby_topic << std::endl;
#endif
RsChatLobbyInviteItem* newItem = new RsChatLobbyInviteItem();
newItem->lobby_id = item->lobby_id ;
newItem->lobby_name = item->lobby_name ;
newItem->lobby_topic = item->lobby_topic ;
newItem->lobby_flags = item->lobby_flags ;
newItem->PeerId( item->PeerId() );
handleRecvLobbyInvite(newItem);
}
void DistributedChatService::handleRecvLobbyInvite(RsChatLobbyInviteItem *item)
{
#ifdef DEBUG_CHAT_LOBBIES
@ -1259,10 +1290,10 @@ void DistributedChatService::handleRecvLobbyInvite(RsChatLobbyInviteItem *item)
{
#ifdef DEBUG_CHAT_LOBBIES
std::cerr << " Lobby already exists. " << std::endl;
std::cerr << " privacy levels: " << item->lobby_flags << " vs. " << it->second.lobby_flags ;
std::cerr << " privacy levels: " << item->lobby_flags << " vs. " << it->second.lobby_flags ;
#endif
if((!IS_CONNEXION_CHALLENGE(item->lobby_flags)) && EXTRACT_PRIVACY_FLAGS(item->lobby_flags) != EXTRACT_PRIVACY_FLAGS(it->second.lobby_flags))
if ((!IS_CONNEXION_CHALLENGE(item->lobby_flags)) && EXTRACT_PRIVACY_FLAGS(item->lobby_flags) != EXTRACT_PRIVACY_FLAGS(it->second.lobby_flags))
{
std::cerr << " : Don't match. Cancelling." << std::endl;
return ;
@ -1274,10 +1305,22 @@ void DistributedChatService::handleRecvLobbyInvite(RsChatLobbyInviteItem *item)
std::cerr << " Adding new friend " << item->PeerId() << " to lobby." << std::endl;
#endif
// to be removed (deprecated since May 2017)
{ //Update Topics if have received deprecated before (withou topic)
if(it->second.lobby_topic.empty() && !item->lobby_topic.empty())
it->second.lobby_topic = item->lobby_topic;
}
it->second.participating_friends.insert(item->PeerId()) ;
return ;
}
// to be removed (deprecated since May 2017)
{//check if invitation is already received by deprecated version
std::map<ChatLobbyId,ChatLobbyInvite>::const_iterator it(_lobby_invites_queue.find( item->lobby_id)) ;
if(it != _lobby_invites_queue.end())
return ;
}
// Don't record the invitation if it's a challenge response item or a lobby we don't have.
//
if(IS_CONNEXION_CHALLENGE(item->lobby_flags))
@ -1290,7 +1333,7 @@ void DistributedChatService::handleRecvLobbyInvite(RsChatLobbyInviteItem *item)
invite.peer_id = item->PeerId() ;
invite.lobby_name = item->lobby_name ;
invite.lobby_topic = item->lobby_topic ;
invite.lobby_flags = item->lobby_flags ;
invite.lobby_flags = item->lobby_flags ;
_lobby_invites_queue[item->lobby_id] = invite ;
}

View File

@ -39,6 +39,7 @@ class RsChatLobbyListRequestItem ;
class RsChatLobbyListItem ;
class RsChatLobbyEventItem ;
class RsChatLobbyBouncingObject ;
class RsChatLobbyInviteItem_Deprecated ; // to be removed (deprecated since May 2017)
class RsChatLobbyInviteItem ;
class RsChatLobbyMsgItem ;
class RsChatLobbyConnectChallengeItem ;
@ -111,6 +112,7 @@ class DistributedChatService
/// receive and handle chat lobby item
bool recvLobbyChat(RsChatLobbyMsgItem*,const RsPeerId& src_peer_id) ;
void handleRecvLobbyInvite_Deprecated(RsChatLobbyInviteItem_Deprecated*) ; // to be removed (deprecated since May 2017)
void handleRecvLobbyInvite(RsChatLobbyInviteItem*) ;
void checkAndRedirectMsgToLobby(RsChatMsgItem*) ;
void handleConnectionChallenge(RsChatLobbyConnectChallengeItem *item) ;

View File

@ -39,23 +39,24 @@ static const uint32_t RS_CHAT_SERIALIZER_FLAGS_NO_SIGNATURE = 0x0001;
RsItem *RsChatSerialiser::create_item(uint16_t service_id,uint8_t item_sub_id) const
{
if(service_id != RS_SERVICE_TYPE_CHAT)
return NULL ;
if (service_id != RS_SERVICE_TYPE_CHAT)
return NULL;
switch(item_sub_id)
{
case RS_PKT_SUBTYPE_DEFAULT: return new RsChatMsgItem() ;
case RS_PKT_SUBTYPE_PRIVATECHATMSG_CONFIG: return new RsPrivateChatMsgConfigItem() ;
case RS_PKT_SUBTYPE_CHAT_STATUS: return new RsChatStatusItem() ;
case RS_PKT_SUBTYPE_CHAT_AVATAR: return new RsChatAvatarItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_MSG: return new RsChatLobbyMsgItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE: return new RsChatLobbyInviteItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_CHALLENGE: return new RsChatLobbyConnectChallengeItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_UNSUBSCRIBE: return new RsChatLobbyUnsubscribeItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_EVENT:return new RsChatLobbyEventItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST_REQUEST:return new RsChatLobbyListRequestItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST: return new RsChatLobbyListItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_CONFIG: return new RsChatLobbyConfigItem() ;
case RS_PKT_SUBTYPE_DEFAULT: return new RsChatMsgItem() ;
case RS_PKT_SUBTYPE_PRIVATECHATMSG_CONFIG: return new RsPrivateChatMsgConfigItem() ;
case RS_PKT_SUBTYPE_CHAT_STATUS: return new RsChatStatusItem() ;
case RS_PKT_SUBTYPE_CHAT_AVATAR: return new RsChatAvatarItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_MSG: return new RsChatLobbyMsgItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE_DEPRECATED: return new RsChatLobbyInviteItem_Deprecated() ; // to be removed (deprecated since May 2017)
case RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE: return new RsChatLobbyInviteItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_CHALLENGE: return new RsChatLobbyConnectChallengeItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_UNSUBSCRIBE: return new RsChatLobbyUnsubscribeItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_EVENT: return new RsChatLobbyEventItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST_REQUEST: return new RsChatLobbyListRequestItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_LIST: return new RsChatLobbyListItem() ;
case RS_PKT_SUBTYPE_CHAT_LOBBY_CONFIG: return new RsChatLobbyConfigItem() ;
default:
std::cerr << "Unknown packet type in chat!" << std::endl ;
return NULL ;
@ -97,12 +98,12 @@ void RsChatLobbyMsgItem::serial_process(RsGenericSerializer::SerializeJob j,RsGe
RsChatLobbyBouncingObject::serial_process(j,ctx) ;
}
void RsChatLobbyListRequestItem::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx)
void RsChatLobbyListRequestItem::serial_process(RsGenericSerializer::SerializeJob /*j*/,RsGenericSerializer::SerializeContext& /*ctx*/)
{
// nothing to do. This is an empty item.
}
template<> void RsTypeSerializer::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx,VisibleChatLobbyInfo& info,const std::string& name)
template<> void RsTypeSerializer::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx,VisibleChatLobbyInfo& info,const std::string& /*name*/)
{
RsTypeSerializer::serial_process<uint64_t>(j,ctx,info.id,"info.id") ;
@ -135,10 +136,19 @@ void RsChatLobbyConnectChallengeItem::serial_process(RsGenericSerializer::Serial
RsTypeSerializer::serial_process<uint64_t>(j,ctx,challenge_code,"challenge_code") ;
}
// to be removed (deprecated since May 2017)
void RsChatLobbyInviteItem_Deprecated::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx)
{
RsTypeSerializer::serial_process<uint64_t>(j,ctx, lobby_id, "lobby_id") ;
RsTypeSerializer::serial_process (j,ctx,TLV_TYPE_STR_NAME,lobby_name, "lobby_name") ;
RsTypeSerializer::serial_process (j,ctx, lobby_flags,"lobby_flags") ;
}
void RsChatLobbyInviteItem::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx)
{
RsTypeSerializer::serial_process<uint64_t>(j,ctx, lobby_id, "lobby_id") ;
RsTypeSerializer::serial_process (j,ctx,TLV_TYPE_STR_NAME,lobby_name, "lobby_name") ;
RsTypeSerializer::serial_process (j,ctx,TLV_TYPE_STR_NAME,lobby_topic,"lobby_topic") ;
RsTypeSerializer::serial_process (j,ctx, lobby_flags,"lobby_flags") ;
}

View File

@ -77,8 +77,10 @@ const uint8_t RS_PKT_SUBTYPE_DISTANT_CHAT_DH_PUBLIC_KEY = 0x16 ;
const uint8_t RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_MSG = 0x17 ;
const uint8_t RS_PKT_SUBTYPE_CHAT_LOBBY_SIGNED_EVENT = 0x18 ;
const uint8_t RS_PKT_SUBTYPE_CHAT_LOBBY_LIST = 0x19 ;
const uint8_t RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE = 0x1A ;
const uint8_t RS_PKT_SUBTYPE_OUTGOING_MAP = 0x1B ;
const uint8_t RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE_DEPRECATED = 0x1A ; // to be removed (deprecated since May 2017)
const uint8_t RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE = 0x1B ;
const uint8_t RS_PKT_SUBTYPE_OUTGOING_MAP = 0x1C ;
typedef uint64_t ChatLobbyId ;
typedef uint64_t ChatLobbyMsgId ;
@ -94,7 +96,7 @@ class RsChatItem: public RsItem
}
virtual ~RsChatItem() {}
virtual std::ostream& print(std::ostream &out, uint16_t indent = 0) { return out; } // derived from RsItem, but should be removed
virtual std::ostream& print(std::ostream &out, uint16_t /*indent*/ = 0) { return out; } // derived from RsItem, but should be removed
virtual void clear() {}
};
@ -239,6 +241,21 @@ class RsChatLobbyConnectChallengeItem: public RsChatItem
uint64_t challenge_code ;
};
// to be removed (deprecated since May 2017)
class RsChatLobbyInviteItem_Deprecated: public RsChatItem
{
public:
RsChatLobbyInviteItem_Deprecated() :RsChatItem(RS_PKT_SUBTYPE_CHAT_LOBBY_INVITE_DEPRECATED) {}
virtual ~RsChatLobbyInviteItem_Deprecated() {}
void serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx);
ChatLobbyId lobby_id ;
std::string lobby_name ;
std::string lobby_topic ;
ChatLobbyFlags lobby_flags ;
};
class RsChatLobbyInviteItem: public RsChatItem
{
public:
@ -250,7 +267,7 @@ class RsChatLobbyInviteItem: public RsChatItem
ChatLobbyId lobby_id ;
std::string lobby_name ;
std::string lobby_topic ;
ChatLobbyFlags lobby_flags ;
ChatLobbyFlags lobby_flags ;
};
/*!

View File

@ -44,6 +44,12 @@
//#define DEBUG_CHACHA20
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
#define AEAD_chacha20_poly1305_openssl AEAD_chacha20_poly1305
#else
#define AEAD_chacha20_poly1305_rs AEAD_chacha20_poly1305
#endif
namespace librs {
namespace crypto {
@ -273,6 +279,7 @@ static void quotient(const uint256_32& n,const uint256_32& p,uint256_32& q,uint2
q += m ;
}
}
static void remainder(const uint256_32& n,const uint256_32& p,uint256_32& r)
{
// simple algorithm: add up multiples of u while keeping below *this. Once done, substract.
@ -356,7 +363,7 @@ static void print(const chacha20_state& s)
}
#endif
void chacha20_encrypt(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12], uint8_t *data, uint32_t size)
void chacha20_encrypt_rs(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12], uint8_t *data, uint32_t size)
{
for(uint32_t i=0;i<size/64 + 1;++i)
{
@ -379,6 +386,50 @@ void chacha20_encrypt(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12]
}
}
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
void chacha20_encrypt_openssl(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12], uint8_t *data, uint32_t size)
{
EVP_CIPHER_CTX *ctx;
int len;
int tmp_len;
uint8_t tmp[size];
uint8_t iv[16];
// create iv with nonce and block counter
memcpy(iv, &block_counter, 4);
memcpy(iv + 4, nonce, 12);
/* Create and initialise the context */
if(!(ctx = EVP_CIPHER_CTX_new())) return;
/* Initialise the encryption operation. IMPORTANT - ensure you use a key
* and IV size appropriate for your cipher
* In this example we are using 256 bit AES (i.e. a 256 bit key). The
* IV size for *most* modes is the same as the block size. For AES this
* is 128 bits */
if(1 != EVP_EncryptInit_ex(ctx, EVP_chacha20(), NULL, key, iv)) goto out;
/* Provide the message to be encrypted, and obtain the encrypted output.
* EVP_EncryptUpdate can be called multiple times if necessary
*/
if(1 != EVP_EncryptUpdate(ctx, tmp, &len, data, size)) goto out;
tmp_len = len;
/* Finalise the encryption. Further ciphertext bytes may be written at
* this stage.
*/
if(1 != EVP_EncryptFinal_ex(ctx, tmp + len, &len)) goto out;
tmp_len += len;
memcpy(data, tmp, tmp_len);
out:
/* Clean up */
EVP_CIPHER_CTX_free(ctx);
}
#endif
struct poly1305_state
{
uint256_32 r ;
@ -475,7 +526,7 @@ bool constant_time_memory_compare(const uint8_t *m1,const uint8_t *m2,uint32_t s
return !CRYPTO_memcmp(m1,m2,size) ;
}
bool AEAD_chacha20_poly1305(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
bool AEAD_chacha20_poly1305_rs(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
{
// encrypt + tag. See RFC7539-2.8
@ -492,7 +543,7 @@ bool AEAD_chacha20_poly1305(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uin
if(encrypt)
{
chacha20_encrypt(key,1,nonce,data,data_size);
chacha20_encrypt_rs(key,1,nonce,data,data_size);
poly1305_state pls ;
@ -520,19 +571,107 @@ bool AEAD_chacha20_poly1305(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uin
// decrypt
chacha20_encrypt(key,1,nonce,data,data_size);
chacha20_encrypt_rs(key,1,nonce,data,data_size);
return constant_time_memory_compare(tag,computed_tag,16) ;
}
}
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
#define errorOut {ret = false; goto out;}
bool AEAD_chacha20_poly1305_openssl(uint8_t key[32], uint8_t nonce[12], uint8_t *data, uint32_t data_size, uint8_t *aad, uint32_t aad_size, uint8_t tag[16], bool encrypt_or_decrypt)
{
EVP_CIPHER_CTX *ctx;
bool ret = true;
int len;
const uint8_t tag_len = 16;
int tmp_len;
uint8_t tmp[data_size];
/* Create and initialise the context */
if(!(ctx = EVP_CIPHER_CTX_new())) return false;
if (encrypt_or_decrypt) {
/* Initialise the encryption operation. */
if(1 != EVP_EncryptInit_ex(ctx, EVP_chacha20_poly1305(), NULL, NULL, NULL)) errorOut
/* Initialise key and IV */
if(1 != EVP_EncryptInit_ex(ctx, NULL, NULL, key, nonce)) errorOut
/* Provide any AAD data. This can be called zero or more times as
* required
*/
if(1 != EVP_EncryptUpdate(ctx, NULL, &len, aad, aad_size)) errorOut
/* Provide the message to be encrypted, and obtain the encrypted output.
* EVP_EncryptUpdate can be called multiple times if necessary
*/
if(1 != EVP_EncryptUpdate(ctx, tmp, &len, data, data_size)) errorOut
tmp_len = len;
/* Finalise the encryption. Normally ciphertext bytes may be written at
* this stage, but this does not occur in GCM mode
*/
if(1 != EVP_EncryptFinal_ex(ctx, data + len, &len)) errorOut
tmp_len += len;
/* Get the tag */
if(1 != EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, tag_len, tag)) errorOut
} else {
/* Initialise the decryption operation. */
if(!EVP_DecryptInit_ex(ctx, EVP_chacha20_poly1305(), NULL, key, nonce)) errorOut
/* Provide any AAD data. This can be called zero or more times as
* required
*/
if(!EVP_DecryptUpdate(ctx, NULL, &len, aad, aad_size)) errorOut
/* Provide the message to be decrypted, and obtain the plaintext output.
* EVP_DecryptUpdate can be called multiple times if necessary
*/
if(!EVP_DecryptUpdate(ctx, tmp, &len, data, data_size)) errorOut
tmp_len = len;
/* Set expected tag value. Works in OpenSSL 1.0.1d and later */
if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, tag_len, tag)) errorOut
/* Finalise the decryption. A positive return value indicates success,
* anything else is a failure - the plaintext is not trustworthy.
*/
if(EVP_DecryptFinal_ex(ctx, tmp + len, &len) > 0) {
/* Success */
tmp_len += len;
ret = true;
} else {
/* Verify failed */
errorOut
}
}
memcpy(data, tmp, tmp_len);
out:
/* Clean up */
EVP_CIPHER_CTX_free(ctx);
return !!ret;
}
#undef errorOut
#endif
bool AEAD_chacha20_sha256(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
{
// encrypt + tag. See RFC7539-2.8
if(encrypt)
{
chacha20_encrypt(key,1,nonce,data,data_size);
#if OPENSSL_VERSION_NUMBER < 0x10100000L
chacha20_encrypt_rs(key,1,nonce,data,data_size);
#else
chacha20_encrypt_openssl(key, 1, nonce, data, data_size);
#endif
uint8_t computed_tag[EVP_MAX_MD_SIZE];
unsigned int md_size ;
@ -594,7 +733,11 @@ bool AEAD_chacha20_sha256(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint3
// decrypt
chacha20_encrypt(key,1,nonce,data,data_size);
#if OPENSSL_VERSION_NUMBER < 0x10100000L
chacha20_encrypt_rs(key,1,nonce,data,data_size);
#else
chacha20_encrypt_openssl(key, 1, nonce, data, data_size);
#endif
return constant_time_memory_compare(tag,computed_tag,16) ;
}
@ -674,7 +817,7 @@ bool perform_tests()
0x74, 0x2e
};
chacha20_encrypt(key,1,nounce2,plaintext,7*16+2) ;
chacha20_encrypt_rs(key,1,nounce2,plaintext,7*16+2) ;
#ifdef DEBUG_CHACHA20
fprintf(stdout,"CipherText: \n") ;
@ -1154,12 +1297,12 @@ bool perform_tests()
uint8_t tag[16] ;
uint8_t test_tag[16] = { 0x1a,0xe1,0x0b,0x59,0x4f,0x09,0xe2,0x6a,0x7e,0x90,0x2e,0xcb,0xd0,0x60,0x06,0x91 };
AEAD_chacha20_poly1305(key,nonce,msg,7*16+2,aad,12,tag,true) ;
AEAD_chacha20_poly1305_rs(key,nonce,msg,7*16+2,aad,12,tag,true) ;
if(!constant_time_memory_compare(msg,test_msg,7*16+2)) return false ;
if(!constant_time_memory_compare(tag,test_tag,16)) return false ;
bool res = AEAD_chacha20_poly1305(key,nonce,msg,7*16+2,aad,12,tag,false) ;
bool res = AEAD_chacha20_poly1305_rs(key,nonce,msg,7*16+2,aad,12,tag,false) ;
if(!res) return false ;
}
@ -1197,7 +1340,7 @@ bool perform_tests()
uint8_t received_tag[16] = { 0xee,0xad,0x9d,0x67,0x89,0x0c,0xbb,0x22,0x39,0x23,0x36,0xfe,0xa1,0x85,0x1f,0x38 };
if(!AEAD_chacha20_poly1305(key,nonce,ciphertext,16*16+9,aad,12,received_tag,false))
if(!AEAD_chacha20_poly1305_rs(key,nonce,ciphertext,16*16+9,aad,12,received_tag,false))
return false ;
uint8_t cleartext[16*16+9] = {
@ -1243,21 +1386,29 @@ bool perform_tests()
{
RsScopeTimer s("AEAD1") ;
chacha20_encrypt(key, 1, nonce, ten_megabyte_data,SIZE) ;
chacha20_encrypt_rs(key, 1, nonce, ten_megabyte_data,SIZE) ;
std::cerr << " Chacha20 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
std::cerr << " Chacha20 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
}
{
RsScopeTimer s("AEAD2") ;
AEAD_chacha20_poly1305(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
AEAD_chacha20_poly1305_rs(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
std::cerr << " AEAD/poly1305 encryption speed: " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
std::cerr << " AEAD/poly1305 own encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
}
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
{
RsScopeTimer s("AEAD3") ;
AEAD_chacha20_poly1305_openssl(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
std::cerr << " AEAD/poly1305 openssl encryption speed: " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
}
#endif
{
RsScopeTimer s("AEAD4") ;
AEAD_chacha20_sha256(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
std::cerr << " AEAD/sha256 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
std::cerr << " AEAD/sha256 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
}
free(ten_megabyte_data) ;

View File

@ -75,6 +75,7 @@ static const int32_t INACTIVE_CHUNKS_CHECK_DELAY = 240 ; // time after which an
static const int32_t MAX_TIME_INACTIVE_REQUEUED = 120 ; // time after which an inactive ftFileControl is bt-queued
static const int32_t FT_FILECONTROL_QUEUE_ADD_END = 0 ;
static const int32_t FT_FILECONTROL_MAX_UPLOAD_SLOTS_DEFAULT= 0 ;
const uint32_t FT_CNTRL_STANDARD_RATE = 10 * 1024 * 1024;
const uint32_t FT_CNTRL_SLOW_RATE = 100 * 1024;
@ -113,6 +114,7 @@ ftController::ftController(ftDataMultiplex *dm, p3ServiceControl *sc, uint32_t f
{
_max_active_downloads = 5 ; // default queue size
mDefaultEncryptionPolicy = RS_FILE_CTRL_ENCRYPTION_POLICY_PERMISSIVE;
_max_uploads_per_friend = FT_FILECONTROL_MAX_UPLOAD_SLOTS_DEFAULT ;
/* TODO */
cnt = 0 ;
}
@ -239,8 +241,8 @@ void ftController::data_tick()
{
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
for(std::map<RsFileHash,ftFileControl*>::iterator it(mDownloads.begin());it!=mDownloads.end();++it)
it->second->mCreator->removeInactiveChunks() ;
for(std::map<RsFileHash,ftFileControl*>::iterator it(mDownloads.begin());it!=mDownloads.end();++it)
it->second->mCreator->removeInactiveChunks() ;
last_clean_time = now ;
}
@ -1723,6 +1725,7 @@ void ftController::statusChange(const std::list<pqiServicePeer> &plist)
const std::string active_downloads_size_ss("MAX_ACTIVE_DOWNLOADS");
const std::string download_dir_ss("DOWN_DIR");
const std::string partial_dir_ss("PART_DIR");
const std::string max_uploads_per_friend_ss("MAX_UPLOADS_PER_FRIEND");
const std::string default_chunk_strategy_ss("DEFAULT_CHUNK_STRATEGY");
const std::string free_space_limit_ss("FREE_SPACE_LIMIT");
const std::string default_encryption_policy_ss("DEFAULT_ENCRYPTION_POLICY");
@ -1771,6 +1774,9 @@ bool ftController::saveList(bool &cleanup, std::list<RsItem *>& saveData)
break ;
}
rs_sprintf(s,"%lu",_max_uploads_per_friend) ;
configMap[max_uploads_per_friend_ss] = s ;
configMap[default_encryption_policy_ss] = (mDefaultEncryptionPolicy==RS_FILE_CTRL_ENCRYPTION_POLICY_PERMISSIVE)?"PERMISSIVE":"STRICT" ;
rs_sprintf(s, "%lu", RsDiscSpace::freeSpaceLimit());
@ -2057,9 +2063,29 @@ bool ftController::loadConfigMap(std::map<std::string, std::string> &configMap)
RsDiscSpace::setFreeSpaceLimit(size) ;
}
}
if(configMap.end() != (mit = configMap.find(max_uploads_per_friend_ss)))
{
uint32_t n ;
if (sscanf(mit->second.c_str(), "%u", &n) == 1) {
std::cerr << "have read a max upload slots limit of " << n << std::endl ;
_max_uploads_per_friend = n ;
}
}
return true;
}
void ftController::setMaxUploadsPerFriend(uint32_t m)
{
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
_max_uploads_per_friend = m ;
IndicateConfigChanged();
}
uint32_t ftController::getMaxUploadsPerFriend()
{
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
return _max_uploads_per_friend ;
}
void ftController::setDefaultEncryptionPolicy(uint32_t p)
{
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/

View File

@ -146,6 +146,9 @@ class ftController: public RsTickingThread, public pqiServiceMonitor, public p3C
void setFreeDiskSpaceLimit(uint32_t size_in_mb) ;
uint32_t defaultEncryptionPolicy();
void setMaxUploadsPerFriend(uint32_t m) ;
uint32_t getMaxUploadsPerFriend() ;
bool FileCancel(const RsFileHash& hash);
bool FileControl(const RsFileHash& hash, uint32_t flags);
bool FileClearCompleted();
@ -261,7 +264,8 @@ class ftController: public RsTickingThread, public pqiServiceMonitor, public p3C
FileChunksInfo::ChunkStrategy mDefaultChunkStrategy ;
uint32_t _max_active_downloads ; // maximum number of simultaneous downloads
uint32_t _max_active_downloads ; // maximum number of simultaneous downloads
uint32_t _max_uploads_per_friend ; // maximum number of uploads per friend. 0 means unlimited.
};
#endif

View File

@ -53,11 +53,6 @@ void ftExtraList::data_tick()
bool todo = false;
time_t now = time(NULL);
#ifdef DEBUG_ELIST
//std::cerr << "ftExtraList::run() Iteration";
//std::cerr << std::endl;
#endif
{
RsStackMutex stack(extMutex);
@ -131,6 +126,7 @@ void ftExtraList::hashAFile()
/* stick it in the available queue */
mFiles[details.info.hash] = details;
mHashOfHash[makeEncryptedHash(details.info.hash)] = details.info.hash ;
/* add to the path->hash map */
mHashedList[details.info.path] = details.info.hash;
@ -169,6 +165,7 @@ bool ftExtraList::addExtraFile(std::string path, const RsFileHash& hash,
/* stick it in the available queue */
mFiles[details.info.hash] = details;
mHashOfHash[makeEncryptedHash(details.info.hash)] = details.info.hash ;
IndicateConfigChanged();
@ -190,6 +187,8 @@ bool ftExtraList::removeExtraFile(const RsFileHash& hash, TransferRequestFlags f
RsStackMutex stack(extMutex);
mHashOfHash.erase(makeEncryptedHash(hash)) ;
std::map<RsFileHash, FileDetails>::iterator it;
it = mFiles.find(hash);
if (it == mFiles.end())
@ -242,29 +241,26 @@ bool ftExtraList::cleanupOldFiles()
time_t now = time(NULL);
std::list<RsFileHash> toRemove;
std::list<RsFileHash>::iterator rit;
std::map<RsFileHash, FileDetails>::iterator it;
for(it = mFiles.begin(); it != mFiles.end(); ++it)
{
/* check timestamps */
for( std::map<RsFileHash, FileDetails>::iterator it = mFiles.begin(); it != mFiles.end(); ++it) /* check timestamps */
if ((time_t)it->second.info.age < now)
{
toRemove.push_back(it->first);
}
}
if (toRemove.size() > 0)
{
std::map<RsFileHash, FileDetails>::iterator it;
/* remove items */
for(rit = toRemove.begin(); rit != toRemove.end(); ++rit)
{
for(std::list<RsFileHash>::iterator rit = toRemove.begin(); rit != toRemove.end(); ++rit)
{
if (mFiles.end() != (it = mFiles.find(*rit)))
{
cleanupEntry(it->second.info.path, it->second.info.transfer_info_flags);
mFiles.erase(it);
}
}
mHashOfHash.erase(makeEncryptedHash(*rit)) ;
}
IndicateConfigChanged();
}
return true;
@ -333,31 +329,71 @@ bool ftExtraList::hashExtraFileDone(std::string path, FileInfo &info)
**/
bool ftExtraList::search(const RsFileHash &hash, FileSearchFlags /*hintflags*/, FileInfo &info) const
{
#ifdef DEBUG_ELIST
std::cerr << "ftExtraList::search()";
std::cerr << std::endl;
std::cerr << "ftExtraList::search() hash=" << hash ;
#endif
/* find hash */
std::map<RsFileHash, FileDetails>::const_iterator fit;
if (mFiles.end() == (fit = mFiles.find(hash)))
{
return false;
#ifdef DEBUG_ELIST
std::cerr << " not found in mFiles. Trying encrypted... " ;
#endif
// File not found. We try to look for encrypted hash.
std::map<RsFileHash,RsFileHash>::const_iterator hit = mHashOfHash.find(hash) ;
if(hit == mHashOfHash.end())
{
#ifdef DEBUG_ELIST
std::cerr << " not found." << std::endl;
#endif
return false;
}
#ifdef DEBUG_ELIST
std::cerr << " found! Reaching data..." ;
#endif
fit = mFiles.find(hit->second) ;
if(fit == mFiles.end()) // not found. This is an error.
{
#ifdef DEBUG_ELIST
std::cerr << " no data. Returning false." << std::endl;
#endif
return false ;
}
#ifdef DEBUG_ELIST
std::cerr << " ok! Accepting encrypted transfer." << std::endl;
#endif
info = fit->second.info;
info.storage_permission_flags = FileStorageFlags(DIR_FLAGS_ANONYMOUS_DOWNLOAD) ;
info.transfer_info_flags |= RS_FILE_REQ_ENCRYPTED ;
}
else
{
#ifdef DEBUG_ELIST
std::cerr << " found! Accepting direct transfer" << std::endl;
#endif
info = fit->second.info;
info = fit->second.info;
// Now setup the file storage flags so that the client can know how to handle permissions
//
#warning mr-alice: make sure this is right
info.storage_permission_flags = FileStorageFlags(0) ;//DIR_FLAGS_BROWSABLE_OTHERS ;
// Unencrypted file transfer: We only allow direct transfers. This is not exactly secure since another friend can
// swarm the file. But the hash being kept secret, there's no risk here.
//
info.storage_permission_flags = FileStorageFlags(DIR_FLAGS_BROWSABLE) ;
}
if(info.transfer_info_flags & RS_FILE_REQ_ANONYMOUS_ROUTING) info.storage_permission_flags |= DIR_FLAGS_ANONYMOUS_DOWNLOAD ;
return true;
}
RsFileHash ftExtraList::makeEncryptedHash(const RsFileHash& hash)
{
return RsDirUtil::sha1sum(hash.toByteArray(),hash.SIZE_IN_BYTES);
}
/***
* Configuration - store extra files.
@ -472,6 +508,8 @@ bool ftExtraList::loadList(std::list<RsItem *>& load)
/* stick it in the available queue */
mFiles[details.info.hash] = details;
mHashOfHash[makeEncryptedHash(details.info.hash)] = details.info.hash ;
delete (*it);
/* short sleep */

View File

@ -109,66 +109,69 @@ const uint32_t CLEANUP_PERIOD = 600; /* 10 minutes */
class ftExtraList: public RsTickingThread, public p3Config, public ftSearch
{
public:
public:
ftExtraList();
ftExtraList();
/***
/***
* If the File is alreay Hashed, then just add it in.
**/
bool addExtraFile(std::string path, const RsFileHash &hash,
uint64_t size, uint32_t period, TransferRequestFlags flags);
bool addExtraFile(std::string path, const RsFileHash &hash,
uint64_t size, uint32_t period, TransferRequestFlags flags);
bool removeExtraFile(const RsFileHash& hash, TransferRequestFlags flags);
bool moveExtraFile(std::string fname, const RsFileHash& hash, uint64_t size,
std::string destpath);
bool removeExtraFile(const RsFileHash& hash, TransferRequestFlags flags);
bool moveExtraFile(std::string fname, const RsFileHash& hash, uint64_t size,
std::string destpath);
/***
* Hash file, and add to the files,
/***
* Hash file, and add to the files,
* file is removed after period.
**/
bool hashExtraFile(std::string path, uint32_t period, TransferRequestFlags flags);
bool hashExtraFileDone(std::string path, FileInfo &info);
bool hashExtraFile(std::string path, uint32_t period, TransferRequestFlags flags);
bool hashExtraFileDone(std::string path, FileInfo &info);
/***
* Search Function - used by File Transfer
/***
* Search Function - used by File Transfer
* implementation of ftSearch.
*
**/
virtual bool search(const RsFileHash &hash, FileSearchFlags hintflags, FileInfo &info) const;
virtual bool search(const RsFileHash &hash, FileSearchFlags hintflags, FileInfo &info) const;
/***
* Thread Main Loop
/***
* Thread Main Loop
**/
virtual void data_tick();
virtual void data_tick();
/***
/***
* Configuration - store extra files.
*
**/
protected:
virtual RsSerialiser *setupSerialiser();
virtual bool saveList(bool &cleanup, std::list<RsItem*>&);
virtual bool loadList(std::list<RsItem *>& load);
protected:
virtual RsSerialiser *setupSerialiser();
virtual bool saveList(bool &cleanup, std::list<RsItem*>&);
virtual bool loadList(std::list<RsItem *>& load);
private:
static RsFileHash makeEncryptedHash(const RsFileHash& hash);
/* Worker Functions */
void hashAFile();
bool cleanupOldFiles();
bool cleanupEntry(std::string path, TransferRequestFlags flags);
private:
mutable RsMutex extMutex;
/* Worker Functions */
void hashAFile();
bool cleanupOldFiles();
bool cleanupEntry(std::string path, TransferRequestFlags flags);
std::list<FileDetails> mToHash;
mutable RsMutex extMutex;
std::map<std::string, RsFileHash> mHashedList; /* path -> hash ( not saved ) */
std::map<RsFileHash, FileDetails> mFiles;
std::list<FileDetails> mToHash;
time_t cleanup ;
std::map<std::string, RsFileHash> mHashedList; /* path -> hash ( not saved ) */
std::map<RsFileHash, FileDetails> mFiles;
std::map<RsFileHash, RsFileHash> mHashOfHash; /* sha1(hash) map so as to answer requests to encrypted transfers */
time_t cleanup ;
};

View File

@ -60,7 +60,8 @@ const int ftserverzone = 29539;
#define FTSERVER_DEBUG() std::cerr << time(NULL) << " : FILE_SERVER : " << __FUNCTION__ << " : "
#define FTSERVER_ERROR() std::cerr << "(EE) FILE_SERVER ERROR : "
static const time_t FILE_TRANSFER_LOW_PRIORITY_TASKS_PERIOD = 5 ; // low priority tasks handling every 5 seconds
static const time_t FILE_TRANSFER_LOW_PRIORITY_TASKS_PERIOD = 5 ; // low priority tasks handling every 5 seconds
static const time_t FILE_TRANSFER_MAX_DELAY_BEFORE_DROP_USAGE_RECORD = 10 ; // keep usage records for 10 secs at most.
/* Setup */
ftServer::ftServer(p3PeerMgr *pm, p3ServiceControl *sc)
@ -318,6 +319,16 @@ uint32_t ftServer::defaultEncryptionPolicy()
{
return mFtController->defaultEncryptionPolicy() ;
}
void ftServer::setMaxUploadSlotsPerFriend(uint32_t n)
{
mFtController->setMaxUploadsPerFriend(n) ;
}
uint32_t ftServer::getMaxUploadSlotsPerFriend()
{
return mFtController->getMaxUploadsPerFriend() ;
}
void ftServer::setDefaultEncryptionPolicy(uint32_t s)
{
mFtController->setDefaultEncryptionPolicy(s) ;
@ -1518,6 +1529,83 @@ int ftServer::tick()
return moreToTick;
}
bool ftServer::checkUploadLimit(const RsPeerId& pid,const RsFileHash& hash)
{
// No need for this extra cost if the value means "unlimited"
#ifdef SERVER_DEBUG
std::cerr << "Checking upload limit for friend " << pid << " and hash " << hash << ": " ;
#endif
uint32_t max_ups = mFtController->getMaxUploadsPerFriend() ;
RS_STACK_MUTEX(srvMutex) ;
if(max_ups == 0)
{
#ifdef SERVER_DEBUG
std::cerr << " no limit! returning true." << std::endl;
#endif
return true ;
}
#ifdef SERVER_DEBUG
std::cerr << " max=" << max_ups ;
#endif
// Find the latest records for this pid.
std::map<RsFileHash,time_t>& tmap(mUploadLimitMap[pid]) ;
std::map<RsFileHash,time_t>::iterator it ;
time_t now = time(NULL) ;
// If the limit has been decresed, we arbitrarily drop some ongoing slots.
while(tmap.size() > max_ups)
tmap.erase(tmap.begin()) ;
// Look in the upload record map. If it's not full, directly allocate a slot. If full, re-use an existing slot if a file is already cited.
if(tmap.size() < max_ups || (tmap.size()==max_ups && tmap.end() != (it = tmap.find(hash))))
{
#ifdef SERVER_DEBUG
std::cerr << " allocated slot for this hash => true" << std::endl;
#endif
tmap[hash] = now ;
return true ;
}
// There's no room in the used slots, but maybe some of them are not used anymore, in which case we remove them, which freeze a slot.
uint32_t cleaned = 0 ;
for(it = tmap.begin();it!=tmap.end() && cleaned<2;)
if(it->second + FILE_TRANSFER_MAX_DELAY_BEFORE_DROP_USAGE_RECORD < now)
{
std::map<RsFileHash,time_t>::iterator tmp(it) ;
++tmp;
tmap.erase(it) ;
it = tmp;
++cleaned ;
}
else
++it ;
if(cleaned > 0)
{
#ifdef SERVER_DEBUG
std::cerr << " cleaned up " << cleaned << " old hashes => true" << std::endl;
#endif
tmap[hash] = now ;
return true ;
}
#ifdef SERVER_DEBUG
std::cerr << " no slot for this hash => false" << std::endl;
#endif
return false ;
}
int ftServer::handleIncoming()
{
// now File Input.
@ -1534,7 +1622,8 @@ int ftServer::handleIncoming()
case RS_PKT_SUBTYPE_FT_DATA_REQUEST:
{
RsFileTransferDataRequestItem *f = dynamic_cast<RsFileTransferDataRequestItem*>(item) ;
if (f)
if (f && checkUploadLimit(f->PeerId(),f->file.hash))
{
#ifdef SERVER_DEBUG
FTSERVER_DEBUG() << "ftServer::handleIncoming: received data request for hash " << f->file.hash << ", offset=" << f->fileoffset << ", chunk size=" << f->chunksize << std::endl;

View File

@ -138,6 +138,8 @@ public:
virtual void setFreeDiskSpaceLimit(uint32_t size_in_mb) ;
virtual void setDefaultEncryptionPolicy(uint32_t policy) ; // RS_FILE_CTRL_ENCRYPTION_POLICY_STRICT/PERMISSIVE
virtual uint32_t defaultEncryptionPolicy() ;
virtual void setMaxUploadSlotsPerFriend(uint32_t n) ;
virtual uint32_t getMaxUploadSlotsPerFriend() ;
/***
* Control of Downloads Priority.
@ -266,6 +268,7 @@ protected:
bool findEncryptedHash(const RsPeerId& virtual_peer_id, RsFileHash& encrypted_hash);
bool encryptHash(const RsFileHash& hash, RsFileHash& hash_of_hash);
bool checkUploadLimit(const RsPeerId& pid,const RsFileHash& hash);
private:
/**** INTERNAL FUNCTIONS ***/
@ -293,6 +296,7 @@ private:
std::map<RsFileHash,RsFileHash> mEncryptedHashes ; // This map is such that sha1(it->second) = it->first
std::map<RsPeerId,RsFileHash> mEncryptedPeerIds ; // This map holds the hash to be used with each peer id
std::map<RsPeerId,std::map<RsFileHash,time_t> > mUploadLimitMap ;
};

View File

@ -1363,6 +1363,18 @@ bool RsGenExchange::getGroupData(const uint32_t &token, std::vector<RsGxsGrpItem
gItem->meta.mPop = 0;
gItem->meta.mVisibleMsgCount = 0;
}
// Also check the group privacy flags. A while ago, it as possible to publish a group without privacy flags. Now it is not possible anymore.
// As a consequence, it's important to supply a correct value in this flag before the data can be edited/updated.
if((gItem->meta.mGroupFlags & GXS_SERV::FLAG_PRIVACY_MASK) == 0)
{
#ifdef GEN_EXCH_DEBUG
std::cerr << "(WW) getGroupData(): mGroupFlags for group " << gItem->meta.mGroupId << " has incorrect value " << std::hex << gItem->meta.mGroupFlags << std::dec << ". Setting value to GXS_SERV::FLAG_PRIVACY_PUBLIC." << std::endl;
#endif
gItem->meta.mGroupFlags |= GXS_SERV::FLAG_PRIVACY_PUBLIC;
}
grpItem.push_back(gItem);
}
else

View File

@ -82,14 +82,23 @@ bool RsGxsMessageCleanUp::clean()
for(; mit != result.end(); ++mit)
{
std::vector<RsGxsMsgMetaData*>& metaV = mit->second;
std::vector<RsGxsMsgMetaData*>::iterator vit = metaV.begin();
for(; vit != metaV.end(); )
// First, make a map of which message have a child message. This allows to only delete messages that dont have child messages.
// A more accurate way to go would be to compute the time of the oldest message and possibly delete all the branch, but in the
// end the message tree will be deleted slice after slice, which should still be reasonnably fast.
//
std::set<RsGxsMessageId> messages_with_kids ;
for( uint32_t i=0;i<metaV.size();++i)
if(!metaV[i]->mParentId.isNull())
messages_with_kids.insert(metaV[i]->mParentId) ;
for( uint32_t i=0;i<metaV.size();++i)
{
RsGxsMsgMetaData* meta = *vit;
RsGxsMsgMetaData* meta = metaV[i];
// check if expired
bool remove = store_period > 0 && (meta->mPublishTs + store_period) < now;
bool remove = store_period > 0 && ((meta->mPublishTs + store_period) < now) && (messages_with_kids.find(meta->mMsgId)==messages_with_kids.end());
// check client does not want the message kept regardless of age
remove &= !(meta->mMsgStatus & GXS_SERV::GXS_MSG_STATUS_KEEP);
@ -106,7 +115,6 @@ bool RsGxsMessageCleanUp::clean()
}
delete meta;
vit = metaV.erase(vit);
}
}

View File

@ -532,7 +532,8 @@ HEADERS += util/folderiterator.h \
util/rsrecogn.h \
util/rsscopetimer.h \
util/stacktrace.h \
util/rsdeprecate.h
util/rsdeprecate.h \
util/cxx11retrocompat.h
SOURCES += ft/ftchunkmap.cc \
ft/ftcontroller.cc \

View File

@ -503,12 +503,15 @@ bool RsPluginManager::loadList(std::list<RsItem*>& list)
delete (*it);
}
// Rejected hashes are always kept, so that RS wont ask again if the executable hash has changed.
//
_rejected_hashes = rejected_hash_candidates ;
if(reference_executable_hash == _current_executable_hash)
{
std::cerr << "(II) Executable hash matches. Updating the list of accepted/rejected plugins." << std::endl;
_accepted_hashes = accepted_hash_candidates ;
_rejected_hashes = rejected_hash_candidates ;
}
else
std::cerr << "(WW) Executable hashes do not match. Executable hash has changed. Discarding the list of accepted/rejected plugins." << std::endl;

View File

@ -815,7 +815,7 @@ X509 *AuthSSLimpl::SignX509ReqWithGPG(X509_REQ *req, long /*days*/)
const EVP_MD *type = EVP_sha1();
EVP_MD_CTX *ctx = EVP_MD_CTX_create();
unsigned char *p,*buf_in=NULL;
unsigned char *buf_in=NULL;
unsigned char *buf_hashout=NULL,*buf_sigout=NULL;
int inl=0,hashoutl=0;
int sigoutl=0;
@ -854,6 +854,7 @@ X509 *AuthSSLimpl::SignX509ReqWithGPG(X509_REQ *req, long /*days*/)
#if OPENSSL_VERSION_NUMBER < 0x10100000L
inl=i2d(data,NULL);
buf_in=(unsigned char *)OPENSSL_malloc((unsigned int)inl);
unsigned char *p=NULL;
#else
inl=i2d_re_X509_tbs(x509,&buf_in) ; // this does the i2d over x509->cert_info
#endif
@ -977,9 +978,9 @@ bool AuthSSLimpl::AuthX509WithGPG(X509 *x509,uint32_t& diagnostic)
/* verify GPG signature */
/*** NOW The Manual signing bit (HACKED FROM asn1/a_sign.c) ***/
int (*i2d)(X509_CINF*, unsigned char**) = i2d_X509_CINF;
#if OPENSSL_VERSION_NUMBER < 0x10100000L
int (*i2d)(X509_CINF*, unsigned char**) = i2d_X509_CINF;
ASN1_BIT_STRING *signature = x509->signature;
X509_CINF *data = x509->cert_info;
#else
@ -993,7 +994,7 @@ bool AuthSSLimpl::AuthX509WithGPG(X509 *x509,uint32_t& diagnostic)
const EVP_MD *type = EVP_sha1();
EVP_MD_CTX *ctx = EVP_MD_CTX_create();
unsigned char *p,*buf_in=NULL;
unsigned char *buf_in=NULL;
unsigned char *buf_hashout=NULL,*buf_sigout=NULL;
int inl=0,hashoutl=0;
int sigoutl=0;
@ -1002,6 +1003,7 @@ bool AuthSSLimpl::AuthX509WithGPG(X509 *x509,uint32_t& diagnostic)
#if OPENSSL_VERSION_NUMBER < 0x10100000L
inl=i2d(data,NULL);
buf_in=(unsigned char *)OPENSSL_malloc((unsigned int)inl);
unsigned char *p=NULL;
#else
inl=i2d_re_X509_tbs(x509,&buf_in) ; // this does the i2d over x509->cert_info
#endif
@ -1026,13 +1028,13 @@ bool AuthSSLimpl::AuthX509WithGPG(X509 *x509,uint32_t& diagnostic)
diagnostic = RS_SSL_HANDSHAKE_DIAGNOSTIC_MALLOC_ERROR ;
goto err;
}
p=buf_in;
#ifdef AUTHSSL_DEBUG
std::cerr << "Buffers Allocated" << std::endl;
#endif
#if OPENSSL_VERSION_NUMBER < 0x10100000L
p=buf_in;
i2d(data,&p);
#endif
/* data in buf_in, ready to be hashed */

View File

@ -167,6 +167,8 @@ class RsFiles
virtual bool FileClearCompleted() = 0;
virtual void setDefaultEncryptionPolicy(uint32_t policy)=0 ; // RS_FILE_CTRL_ENCRYPTION_POLICY_STRICT/PERMISSIVE
virtual uint32_t defaultEncryptionPolicy()=0 ;
virtual void setMaxUploadSlotsPerFriend(uint32_t n)=0 ;
virtual uint32_t getMaxUploadSlotsPerFriend()=0 ;
/***
* Control of Downloads Priority.

View File

@ -192,7 +192,7 @@ void RsPeerStunItem::serial_process(RsGenericSerializer::SerializeJob j,RsGeneri
RsTypeSerializer::serial_process<RsTlvItem>(j,ctx,stunList,"stunList") ;
}
template<> uint32_t RsTypeSerializer::serial_size(const PeerBandwidthLimits& s)
template<> uint32_t RsTypeSerializer::serial_size(const PeerBandwidthLimits& /*s*/)
{
return 4+4 ;
}
@ -213,7 +213,7 @@ template<> bool RsTypeSerializer::deserialize(const uint8_t data[], uint32_t siz
return ok;
}
template<> void RsTypeSerializer::print_data(const std::string& n, const PeerBandwidthLimits& s)
template<> void RsTypeSerializer::print_data(const std::string& /*n*/, const PeerBandwidthLimits& s)
{
std::cerr << " [Peer BW limit] " << s.max_up_rate_kbs << " / " << s.max_dl_rate_kbs << std::endl;
}

View File

@ -7,6 +7,8 @@
#include "serialiser/rsserializer.h"
#include "util/stacktrace.h"
#include <typeinfo>
class RsItem: public RsMemoryManagement::SmallObject
{
public:

View File

@ -162,6 +162,19 @@ void RsNxsGrp::clear()
meta.TlvClear();
}
RsNxsGrp* RsNxsGrp::clone() const {
RsNxsGrp* grp = new RsNxsGrp(this->grp.tlvtype);
*grp = *this;
if(this->metaData)
{
grp->metaData = new RsGxsGrpMetaData();
*(grp->metaData) = *(this->metaData);
}
return grp;
}
void RsNxsSyncGrpReqItem::clear()
{
flag = 0;

View File

@ -37,6 +37,8 @@
#include <map>
#include <vector>
#include <iostream>
#include <typeinfo>
/***
* #define RSSERIAL_DEBUG 1
@ -385,7 +387,7 @@ RsItem * RsSerialiser::deserialise(void *data, uint32_t *size)
//std::cerr << "RsSerialiser::deserialise() RsItem Type: " << std::hex << getRsItemId(data) << " Size: " << pkt_size;
//std::cerr << std::endl;
if (pkt_size != *size)
if (pkt_size > *size)
{
#ifdef RSSERIAL_ERROR_DEBUG
std::cerr << "RsSerialiser::deserialise() ERROR Size mismatch(2)";

View File

@ -60,12 +60,14 @@ RsItem *RsServiceSerializer::deserialise(void *data, uint32_t *size)
item->serial_process(RsGenericSerializer::DESERIALIZE, ctx) ;
if(ctx.mSize != ctx.mOffset)
if(ctx.mSize < ctx.mOffset)
{
std::cerr << "RsSerializer::deserialise(): ERROR. offset does not match expected size!" << std::endl;
delete item ;
return NULL ;
}
*size = ctx.mOffset ;
if(ctx.mOk)
return item ;
@ -96,12 +98,14 @@ RsItem *RsConfigSerializer::deserialise(void *data, uint32_t *size)
item->serial_process(DESERIALIZE, ctx) ;
if(ctx.mSize != ctx.mOffset)
if(ctx.mSize < ctx.mOffset)
{
std::cerr << "RsSerializer::deserialise(): ERROR. offset does not match expected size!" << std::endl;
delete item ;
return NULL ;
}
*size = ctx.mOffset ;
if(ctx.mOk)
return item ;
@ -139,6 +143,8 @@ bool RsGenericSerializer::serialise(RsItem *item,void *data,uint32_t *size)
std::cerr << "RsSerializer::serialise(): ERROR. offset does not match expected size!" << std::endl;
return false ;
}
*size = ctx.mOffset ;
return true ;
}

View File

@ -32,6 +32,9 @@
#include "util/rsprint.h"
#include <iomanip>
#include <typeinfo>
#include <time.h>
static const uint32_t MAX_SERIALIZED_ARRAY_SIZE = 500 ;
static const uint32_t MAX_SERIALIZED_CHUNK_SIZE = 10*1024*1024 ; // 10 MB.
@ -192,7 +195,7 @@ template<> void RsTypeSerializer::print_data(const std::string& n, uint16_t type
// TlvInt with subtype //
//=================================================================================================//
template<> uint32_t RsTypeSerializer::serial_size(uint16_t /* type_subtype */,const uint32_t& s)
template<> uint32_t RsTypeSerializer::serial_size(uint16_t /* type_subtype */,const uint32_t& /*s*/)
{
return GetTlvUInt32Size() ;
}

View File

@ -452,7 +452,6 @@ protected:
template<typename T> static void print_data(
const std::string& name,uint16_t type_id,const T& member );
template<uint32_t ID_SIZE_IN_BYTES,bool UPPER_CASE,uint32_t UNIQUE_IDENTIFIER>
static bool serialize(
uint8_t data[], uint32_t size, uint32_t &offset,

View File

@ -27,6 +27,8 @@
#include "rsitems/rsposteditems.h"
#include <math.h>
#include <typeinfo>
/****
* #define POSTED_DEBUG 1

View File

@ -52,12 +52,14 @@ RsSerialType* init_item(RsChatLobbyListItem& cmi)
cmi.lobby_ids.resize(n) ;
cmi.lobby_names.resize(n) ;
cmi.lobby_topics.resize(n) ;
cmi.lobby_counts.resize(n) ;
for(int i=0;i<n;++i)
{
cmi.lobby_ids[i] = RSRandom::random_u64() ;
randString(5+(rand()%10), cmi.lobby_names[i]);
randString(5+(rand()%10), cmi.lobby_topics[i]);
cmi.lobby_counts[i] = RSRandom::random_u32() ;
}
@ -87,6 +89,7 @@ RsSerialType* init_item(RsChatLobbyInviteItem& cmi)
{
cmi.lobby_id = RSRandom::random_u64() ;
cmi.lobby_name = "Name of the lobby" ;
cmi.lobby_topic = "Topic of the lobby" ;
return new RsChatSerialiser();
}
@ -185,12 +188,14 @@ bool operator ==(const RsChatLobbyListItem& cmiLeft,const RsChatLobbyListItem&
{
if(cmiLeft.lobby_ids.size() != cmiRight.lobby_ids.size()) return false;
if(cmiLeft.lobby_names.size() != cmiRight.lobby_names.size()) return false;
if(cmiLeft.lobby_topics.size() != cmiRight.lobby_topics.size()) return false;
if(cmiLeft.lobby_counts.size() != cmiRight.lobby_counts.size()) return false;
for(uint32_t i=0;i<cmiLeft.lobby_ids.size();++i)
{
if(cmiLeft.lobby_ids[i] != cmiRight.lobby_ids[i]) return false ;
if(cmiLeft.lobby_names[i] != cmiRight.lobby_names[i]) return false ;
if(cmiLeft.lobby_topics[i] != cmiRight.lobby_topics[i]) return false ;
if(cmiLeft.lobby_counts[i] != cmiRight.lobby_counts[i]) return false ;
}
return true ;
@ -254,6 +259,7 @@ bool operator ==(const RsChatLobbyInviteItem& csiLeft, const RsChatLobbyInviteIt
{
if(csiLeft.lobby_id != csiRight.lobby_id) return false ;
if(csiLeft.lobby_name != csiRight.lobby_name) return false ;
if(csiLeft.lobby_topic != csiRight.lobby_topic) return false ;
return true;
}

View File

@ -0,0 +1,25 @@
#pragma once
/*
* RetroShare
* Copyright (C) 2017 Gioacchino Mazzurco <gio@eigenlab.org>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#ifdef __GNUC__
# if __GNUC__*100 + __GNUC_MINOR__ < 40700
# define override
# define final
# endif //GCC version
#endif //defined GNUC

View File

@ -552,8 +552,8 @@ RsGxsRecognTagItem *RsRecogn::extractTag(const std::string &encoded)
std::vector<uint8_t> buffer = Radix64::decode(encoded);
pktsize = buffer.size();
if(buffer.empty())
return NULL ;
if( buffer.empty() )
return NULL;
RsGxsRecognSerialiser serialiser;
RsItem *item = serialiser.deserialise(buffer.data(), &pktsize);

View File

@ -6,103 +6,15 @@
<rect>
<x>0</x>
<y>0</y>
<width>1558</width>
<height>703</height>
<width>675</width>
<height>544</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="1" colspan="2">
<widget class="QFrame" name="addframe">
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Did you receive a certificate from a friend?</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="addButton">
<property name="text">
<string>Add friends certificate</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/png/invite.png</normaloff>:/icons/png/invite.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="LoadCertFileButton">
<property name="text">
<string>Add certificate file</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/svg/folders1.svg</normaloff>:/icons/svg/folders1.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="1">
<widget class="QFrame" name="addFrame">
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item row="3" column="1" colspan="2">
<item row="4" column="1" colspan="2">
<layout class="QGridLayout" name="gridLayout">
<property name="topMargin">
<number>9</number>
@ -245,7 +157,7 @@ private and secure decentralized communication platform.
</property>
</widget>
</item>
<item row="4" column="1">
<item row="6" column="1">
<widget class="QPushButton" name="runStartWizard_PB">
<property name="text">
<string>Launch startup wizard</string>
@ -256,15 +168,149 @@ private and secure decentralized communication platform.
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="openwebhelp">
<property name="text">
<string>Open Web Help</string>
<item row="3" column="1" colspan="2">
<widget class="QFrame" name="addframe">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/settings/webinterface.svg</normaloff>:/icons/settings/webinterface.svg</iconset>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Did you receive a certificate from a friend?</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="addButton">
<property name="text">
<string>Add friends certificate</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/png/invite.png</normaloff>:/icons/png/invite.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="LoadCertFileButton">
<property name="text">
<string>Add certificate file</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/svg/folders1.svg</normaloff>:/icons/svg/folders1.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QFrame" name="addFrame">
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item row="5" column="1" colspan="2">
<widget class="QFrame" name="helpframe">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_4">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Do you need help with RetroShare?</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="openwebhelp">
<property name="text">
<string>Open Web Help</string>
</property>
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/icons/settings/webinterface.svg</normaloff>:/icons/settings/webinterface.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
@ -273,7 +319,8 @@ private and secure decentralized communication platform.
<zorder>label_2</zorder>
<zorder>addframe</zorder>
<zorder>runStartWizard_PB</zorder>
<zorder>openwebhelp</zorder>
<zorder>frame</zorder>
<zorder>helpframe</zorder>
</widget>
<resources>
<include location="icons.qrc"/>

View File

@ -2472,8 +2472,8 @@ void IdDialog::copyRetroshareLink()
RsIdentityDetails details ;
if(! rsIdentity->getIdDetails(gxs_id,details))
return ;
if(! rsIdentity->getIdDetails(gxs_id,details))
return ;
if (!mIdQueue)
return;

View File

@ -265,7 +265,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags flags)
statusBar()->addPermanentWidget(ratesstatus);
opModeStatus = new OpModeStatus();
opModeStatus->setVisible(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(true)).toBool());
opModeStatus->setVisible(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(false)).toBool());
statusBar()->addPermanentWidget(opModeStatus);
soundStatus = new SoundStatus();

View File

@ -600,16 +600,16 @@ void RetroShareLink::check()
if(!checkPGPId(_GPGid)) _valid = false ;
break ;
case TYPE_IDENTITY:
if(_name.isNull())
_valid = false ;
case TYPE_IDENTITY:
if(_name.isNull())
_valid = false ;
if(_radix_group_data.isNull())
_valid = false ;
if(_radix_group_data.isNull())
_valid = false ;
if(_hash.isNull())
_valid = false ;
break ;
if(_hash.isNull())
_valid = false ;
break ;
case TYPE_PERSON:
if(_size != 0)
@ -858,8 +858,8 @@ QString RetroShareLink::niceName() const
if (type() == TYPE_PERSON)
return PeerDefs::rsid(name().toUtf8().constData(), RsPgpId(hash().toStdString()));
if(type() == TYPE_IDENTITY)
return QObject::tr("Identity link (name=%1, ID=%2)").arg(_name).arg(_hash) ;
if(type() == TYPE_IDENTITY)
return QObject::tr("Identity link (name=%1, ID=%2)").arg(_name).arg(_hash) ;
if(type() == TYPE_PUBLIC_MSG) {
RsPeerDetails detail;

View File

@ -19,11 +19,13 @@
* Boston, MA 02110-1301, USA.
****************************************************************/
#include <rshare.h>
#include <retroshare/rsinit.h>
#include <QMessageBox>
#include "rshare.h"
#include "retroshare/rsinit.h"
#include "StartDialog.h"
#include "LogoBar.h"
#include <QMessageBox>
#include "retroshare/rsnotify.h"
#include "settings/rsharesettings.h"
#include <iostream>
@ -43,10 +45,6 @@ StartDialog::StartDialog(QWidget *parent)
Settings->loadWidgetInformation(this);
ui.loadButton->setFocus();
connect(ui.loadButton, SIGNAL(clicked()), this, SLOT(loadPerson()));
/* get all available pgp private certificates....
* mark last one as default.
*/
@ -75,10 +73,22 @@ StartDialog::StartDialog(QWidget *parent)
}
}
QObject::connect(ui.loadName,SIGNAL(currentIndexChanged(int)),this,SLOT(updateSelectedProfile(int))) ;
QObject::connect(ui.password_input,SIGNAL(returnPressed()),this,SLOT(loadPerson())) ;
QObject::connect(ui.loadButton, SIGNAL(clicked()), this, SLOT(loadPerson()));
if (pidx > 0)
{
ui.loadName->setCurrentIndex(pidx);
}
ui.password_input->setFocus();
}
void StartDialog::updateSelectedProfile(int)
{
ui.password_input->clear();
ui.password_input->setFocus();
}
void StartDialog::closeEvent (QCloseEvent * event)
@ -101,18 +111,22 @@ void StartDialog::loadPerson()
QVariant data = ui.loadName->itemData(pgpidx);
RsPeerId accountId = RsPeerId((data.toString()).toStdString());
if (Rshare::loadCertificate(accountId, ui.autologin_checkbox->isChecked())) {
// Cache the passphrase, so that it is not asked again.
rsNotify->cachePgpPassphrase(ui.password_input->text().toUtf8().constData()) ;
bool res = Rshare::loadCertificate(accountId, ui.autologin_checkbox->isChecked()) ;
rsNotify->clearPgpPassphrase();
if(res)
accept();
}
}
void StartDialog::on_labelProfile_linkActivated(QString /*link*/)
{
// if ((QMessageBox::question(this, tr("Create a New Profile"),tr("This will generate a new Profile\n Are you sure you want to continue?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
// {
reqNewCert = true;
accept();
// }
}
bool StartDialog::requestedNewCert()

View File

@ -39,6 +39,7 @@ protected:
private slots:
void loadPerson();
void updateSelectedProfile(int);
#ifdef RS_AUTOLOGIN
/**

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>430</width>
<height>552</height>
<width>516</width>
<height>569</height>
</rect>
</property>
<property name="windowTitle">
@ -31,7 +31,7 @@
<number>0</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout_4">
<layout class="QGridLayout" name="mainGLayout">
<property name="leftMargin">
<number>0</number>
</property>
@ -42,77 +42,7 @@
<number>0</number>
</property>
<item row="0" column="0" colspan="4">
<layout class="QGridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<item row="0" column="0">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="toolButton">
<property name="styleSheet">
<string notr="true">QToolButton {
border-image: url(:/images/avatar_background.png);
}</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="images.qrc">
<normaloff>:/images/user/personal64.png</normaloff>:/images/user/personal64.png</iconset>
</property>
<property name="iconSize">
<size>
<width>96</width>
<height>96</height>
</size>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="1" column="0" colspan="4">
<layout class="QGridLayout" name="gridLayout_2">
<layout class="QGridLayout" name="topGLayout">
<item row="0" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
@ -127,19 +57,13 @@
</spacer>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label">
<widget class="QLabel" name="rsTopLogo">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>32</height>
</size>
</property>
<property name="palette">
<palette>
<active>
@ -183,7 +107,10 @@
</font>
</property>
<property name="text">
<string>Login</string>
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/logo/logo_spash2.png</pixmap>
</property>
</widget>
</item>
@ -202,8 +129,53 @@
</item>
</layout>
</item>
<item row="3" column="1" rowspan="2" colspan="2">
<widget class="QGroupBox" name="groupBox">
<item row="1" column="2" rowspan="2">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>60</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" rowspan="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>60</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QGroupBox" name="profilGBox">
<property name="enabled">
<bool>true</bool>
</property>
@ -213,21 +185,75 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_3">
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>9</number>
</property>
<item row="0" column="1">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Profile - Location</string>
<string>Profile - Location:</string>
</property>
</widget>
</item>
<item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="maximumSize">
<size>
<width>22</width>
<height>22</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="icons.qrc">:/icons/svg/person.svg</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="loadName"/>
</item>
<item>
<item row="2" column="0">
<widget class="QLabel" name="label_11">
<property name="maximumSize">
<size>
<width>22</width>
<height>22</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="icons.qrc">:/icons/svg/password.svg</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="password_input">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
<property name="placeholderText">
<string>Password</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="autologin_checkbox">
<property name="text">
<string>Remember Password</string>
@ -237,108 +263,70 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="loadButton">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Log In</string>
</property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="0" colspan="4">
<layout class="QGridLayout" name="gridLayout_3">
<property name="topMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item row="0" column="1">
<widget class="QPushButton" name="loadButton">
<property name="text">
<string>Log In</string>
</property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer>
<item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>61</width>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>71</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="6" column="1" colspan="2">
<widget class="QLabel" name="labelProfile">
<property name="toolTip">
<string>Opens a dialog for creating a new profile or
<item>
<widget class="QLabel" name="labelProfile">
<property name="toolTip">
<string>Opens a dialog for creating a new profile or
adding locations to an existing profile.
The current identities/locations will not be affected.</string>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;Create new Profile...&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;&quot;&gt;Manage profiles and nodes...&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="4">
<widget class="LogoBar" name="callBarFrame">
<property name="minimumSize">
<size>
<width>16</width>
<height>65</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>LogoBar</class>
<extends>QFrame</extends>
<header>gui/LogoBar.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>loadButton</tabstop>
<tabstop>toolButton</tabstop>
</tabstops>
<resources>
<include location="images.qrc"/>
<include location="icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -19,45 +19,42 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
* ccr . 2016 Jan 26
*
* Play sound on incoming messages.
*
****************************************************************/
#include <unistd.h>
#include <QMessageBox>
#include <QInputDialog>
#include <QMenu>
#include <QMessageBox>
#include <QWidgetAction>
#include "ChatLobbyDialog.h"
#include "gui/ChatLobbyWidget.h"
#include "ChatTabWidget.h"
#include "gui/settings/rsharesettings.h"
#include "gui/settings/RsharePeerSettings.h"
#include "gui/MainWindow.h"
#include "gui/ChatLobbyWidget.h"
#include "gui/FriendsDialog.h"
#include "gui/msgs/MessageComposer.h"
#include <gui/common/html.h>
#include "gui/common/RSTreeWidgetItem.h"
#include "gui/MainWindow.h"
#include "gui/common/html.h"
#include "gui/common/FriendSelectionDialog.h"
#include "gui/gxs/GxsIdTreeWidgetItem.h"
#include "gui/common/RSTreeWidgetItem.h"
#include "gui/gxs/GxsIdChooser.h"
#include "gui/gxs/GxsIdDetails.h"
#include "util/HandleRichText.h"
#include "gui/SoundManager.h"
#include "gui/gxs/GxsIdTreeWidgetItem.h"
#include "gui/Identity/IdDialog.h"
#include "gui/msgs/MessageComposer.h"
#include "gui/settings/RsharePeerSettings.h"
#include "gui/settings/rsharesettings.h"
#include "util/HandleRichText.h"
#include "util/QtVersion.h"
#include <retroshare/rsnotify.h>
#include <time.h>
#include <unistd.h>
#define COLUMN_ICON 0
#define COLUMN_NAME 1
#define COLUMN_ACTIVITY 2
#define COLUMN_ID 3
#define COLUMN_NAME 0
#define COLUMN_ACTIVITY 1
#define COLUMN_ID 2
#define COLUMN_ICON 3
#define COLUMN_COUNT 4
#define ROLE_SORT Qt::UserRole + 1
@ -80,12 +77,16 @@ ChatLobbyDialog::ChatLobbyDialog(const ChatLobbyId& lid, QWidget *parent, Qt::Wi
connect(ui.filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString)));
int S = QFontMetricsF(font()).height() ;
ui.participantsList->setIconSize(QSize(1.3*S,1.3*S));
ui.participantsList->setIconSize(QSize(1.4*S,1.4*S));
ui.participantsList->setColumnCount(COLUMN_COUNT);
ui.participantsList->setColumnWidth(COLUMN_ICON, 1.4*S);
ui.participantsList->setColumnWidth(COLUMN_ICON, 1.7*S);
ui.participantsList->setColumnHidden(COLUMN_ACTIVITY,true);
ui.participantsList->setColumnHidden(COLUMN_ID,true);
/* Set header resize modes and initial section sizes */
QHeaderView * header = ui.participantsList->header();
QHeaderView_setSectionResizeModeColumn(header, COLUMN_NAME, QHeaderView::Stretch);
muteAct = new QAction(QIcon(), tr("Mute participant"), this);
voteNegativeAct = new QAction(QIcon(":/icons/png/thumbs-down.png"), tr("Ban this person (Sets negative opinion)"), this);
@ -472,7 +473,6 @@ void ChatLobbyDialog::addChatMsg(const ChatMessage& msg)
ui.chatWidget->addChatMsg(msg.incoming, name, gxs_id, sendTime, recvTime, message, ChatWidget::MSGTYPE_NORMAL);
emit messageReceived(msg.incoming, id(), sendTime, name, message) ;
SoundManager::play(SOUND_NEW_LOBBY_MESSAGE);
// This is a trick to translate HTML into text.
QTextEdit editor;

View File

@ -145,11 +145,9 @@
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Participants</string>
</property>
</column>
<attribute name="headerStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Name</string>

View File

@ -21,15 +21,19 @@
#include <QTime>
#include <QMenu>
#include "ChatLobbyUserNotify.h"
#include "gui/notifyqt.h"
#include "gui/MainWindow.h"
#include "gui/ChatLobbyWidget.h"
#include "gui/MainWindow.h"
#include "gui/notifyqt.h"
#include "gui/SoundManager.h"
#include "gui/settings/rsharesettings.h"
#include "util/DateTime.h"
#include <retroshare/rsidentity.h>
#include <util/HandleRichText.h>
#include <retroshare/rsidentity.h>
ChatLobbyUserNotify::ChatLobbyUserNotify(QObject *parent) :
UserNotify(parent)
{
@ -273,8 +277,9 @@ void ChatLobbyUserNotify::chatLobbyNewMessage(ChatLobbyId lobby_id, QDateTime ti
_listMsg[lobby_id][strAnchor]=msgData;
emit countChanged(lobby_id, _listMsg[lobby_id].size());
updateIcon();
}
updateIcon();
SoundManager::play(SOUND_NEW_LOBBY_MESSAGE);
}
}
bool ChatLobbyUserNotify::checkWord(QString message, QString word)

View File

@ -59,6 +59,7 @@ RSGraphSource::RSGraphSource()
#endif
_timer = new QTimer ;
_digits = 2 ;
_filtering_enabled = true;
QObject::connect(_timer,SIGNAL(timeout()),this,SLOT(updateIfPossible())) ;
}
@ -123,6 +124,9 @@ void RSGraphSource::getDataPoints(int index,std::vector<QPointF>& pts,float filt
pts.clear() ;
qint64 now = getTime() ;
if(!_filtering_enabled)
filter_factor = 0 ;
std::map<std::string,std::list<std::pair<qint64,float> > >::const_iterator it = _points.begin();
int n=0;
@ -267,11 +271,13 @@ RSGraphWidget::RSGraphWidget(QWidget *parent)
_timer = new QTimer ;
QObject::connect(_timer,SIGNAL(timeout()),this,SLOT(updateIfPossible())) ;
_y_scale = 1.0f ;
_timer->start(1000);
float FS = QFontMetricsF(font()).height();
setMinimumHeight(12*FS);
_graph_base = FS*GRAPH_BASE;
}
void RSGraphWidget::updateIfPossible()
@ -292,7 +298,13 @@ RSGraphWidget::~RSGraphWidget()
delete _source ;
}
/** Gets the width of the desktop, which is the maximum number of points
void RSGraphWidget::setFiltering(bool b)
{
if(_source != NULL)
_source->setFiltering(b) ;
}
/** Gets the width of the desktop, which is the maximum number of points
* we can plot in the graph. */
int
RSGraphWidget::getNumPoints()
@ -373,12 +385,16 @@ default:
}
}
QColor RSGraphWidget::getColor(int i)
QColor RSGraphWidget::getColor(const std::string& name)
{
// shuffle the colors a little bit
int h = (i*86243)%359 ;
uint32_t r = 57 ;
for(uint32_t i=0;i<name.length();++i)
r = (113*name[i] + r)^0x93859aeb;
return QColor::fromHsv(h,128+127*(i&1),255) ;
// shuffle the colors a little bit
int h = (r*86243)%359 ;
return QColor::fromHsv(h,255,255) ;
}
void RSGraphWidget::setCurvesOpacity(float f)
@ -409,17 +425,19 @@ void RSGraphWidget::paintData()
QVector<QPointF> points ;
pointsFromData(values,points) ;
QColor pcolor = getColor(source.displayName(i).toStdString()) ;
/* Plot the bandwidth data as area graphs */
if (_flags & RSGRAPH_FLAGS_PAINT_STYLE_PLAIN)
paintIntegral(points, getColor(i), _opacity);
paintIntegral(points, pcolor, _opacity);
/* Plot the bandwidth as solid lines. If the graph style is currently an
* area graph, we end up outlining the integrals. */
if(_flags & RSGRAPH_FLAGS_PAINT_STYLE_DOTS)
paintDots(points, getColor(i));
paintDots(points, pcolor);
else
paintLine(points, getColor(i));
paintLine(points, pcolor);
}
if(_maxValue > 0.0f)
{
@ -465,42 +483,43 @@ void RSGraphWidget::pointsFromData(const std::vector<QPointF>& values,QVector<QP
qreal px = x - (values[i].x()-last)*_time_scale ;
qreal py = y - valueToPixels(values[i].y()) ;
if(px >= SCALE_WIDTH*fact && last_px < SCALE_WIDTH*fact)
if(!(_flags & RSGRAPH_FLAGS_PAINT_STYLE_DOTS))
{
float alpha = (SCALE_WIDTH*fact - last_px)/(px - last_px) ;
float ipx = SCALE_WIDTH*fact ;
float ipy = (1-alpha)*last_py + alpha*py ;
if(px >= SCALE_WIDTH*fact && last_px < SCALE_WIDTH*fact)
{
float alpha = (SCALE_WIDTH*fact - last_px)/(px - last_px) ;
float ipx = SCALE_WIDTH*fact ;
float ipy = (1-alpha)*last_py + alpha*py ;
points << QPointF(ipx,y) ;
points << QPointF(ipx,ipy) ;
}
else if(i==0)
{
if(px < SCALE_WIDTH*fact)
points << QPointF(SCALE_WIDTH*fact,py) ;
else
points << QPointF(px,y) ;
points << QPointF(ipx,y - _graph_base) ;
points << QPointF(ipx,ipy) ;
}
else if(i==0)
{
if(px < SCALE_WIDTH*fact)
points << QPointF(SCALE_WIDTH*fact,py) ;
else
points << QPointF(px,y - _graph_base) ;
}
}
if(px < SCALE_WIDTH*fact)
continue ;
if((_flags & RSGRAPH_FLAGS_PAINT_STYLE_DOTS) && values[i].y() == 0)
continue ;
_maxValue = std::max(_maxValue,values[i].y()) ;
// remove midle point when 3 consecutive points have the same value.
if(points.size() > 1 && points[points.size()-2].y() == points.back().y() && points.back().y() == py)
points.pop_back() ;
// if(fabs(px - last_px)/_time_scale > min_x_no_data_threshold)
// {
// points << QPointF(last_px,y) ;
// points << QPointF(px,y) ;
// }
if(!(_flags & RSGRAPH_FLAGS_PAINT_STYLE_DOTS))
if(points.size() > 1 && points[points.size()-2].y() == points.back().y() && points.back().y() == py)
points.pop_back() ;
points << QPointF(px,py) ;
if(i==values.size()-1)
if(!(_flags & RSGRAPH_FLAGS_PAINT_STYLE_DOTS) && (i==values.size()-1))
points << QPointF(px,y) ;
last_px = px ;
@ -512,17 +531,17 @@ void RSGraphWidget::pointsFromData(const std::vector<QPointF>& values,QVector<QP
qreal RSGraphWidget::valueToPixels(qreal val)
{
if(_flags & RSGRAPH_FLAGS_LOG_SCALE_Y)
return log(std::max((qreal)1.0,val))*_y_scale ;
return _graph_base + log(std::max((qreal)1.0,val))*_y_scale ;
else
return val*_y_scale ;
return _graph_base + val*_y_scale ;
}
qreal RSGraphWidget::pixelsToValue(qreal val)
{
if(_flags & RSGRAPH_FLAGS_LOG_SCALE_Y)
return exp(val / _y_scale) ;
return exp( (val - _graph_base) / _y_scale) ;
else
return val/_y_scale ;
return (val - _graph_base)/_y_scale ;
}
/** Plots an integral using the data points in <b>points</b>. The area will be
@ -560,7 +579,7 @@ void RSGraphWidget::paintDots(const QVector<QPointF>& points, QColor color)
_painter->setBrush(QBrush(color));
for(int i=0;i<points.size();++i)
_painter->drawEllipse(QRect(points[i].x(),points[i].y(),5*_linewidthscale,5*_linewidthscale)) ;
_painter->drawEllipse(QRect(points[i].x()-2.5*_linewidthscale,points[i].y()-2.5*_linewidthscale,5*_linewidthscale,5*_linewidthscale)) ;
_painter->setPen(oldPen);
_painter->setBrush(oldBrush);
@ -603,8 +622,8 @@ void RSGraphWidget::paintScale1()
float fact = FS/14.0 ;
int top = _rec.y();
int bottom = _rec.height();
qreal paintStep = (bottom - (bottom/10)) / 4;
int bottom = _rec.height() - _graph_base;
qreal paintStep = (bottom - top) / 5;
/* Draw the other marks in their correctly scaled locations */
qreal scale;
@ -615,16 +634,23 @@ void RSGraphWidget::paintScale1()
QString unit_name = _source->unitName() ;
for (int i = 1; i < 5; i++)
for (int i = 0; i < 5; i++)
{
pos = bottom - (i * paintStep);
pos = bottom - (i * paintStep) ;
scale = pixelsToValue(i * paintStep);
scale = pixelsToValue(_graph_base + i * paintStep);
// If legend contains integers only the value should be rounded to the nearest integer
if(_flags & RSGRAPH_FLAGS_LEGEND_INTEGER)
{
scale = (int)scale ;
pos = bottom - (valueToPixels(scale) - _graph_base) ;
}
QString text = _source->displayValue(scale) ;
_painter->setPen(SCALE_COLOR);
_painter->drawText(QPointF(5*fact, pos+0.5*FS), text);
_painter->drawText(QPointF(SCALE_WIDTH*fact - QFontMetricsF(font()).width(text) - 4*fact, pos+0.4*FS), text);
_painter->setPen(GRID_COLOR);
_painter->drawLine(QPointF(SCALE_WIDTH*fact, pos), QPointF(_rec.width(), pos));
}
@ -710,7 +736,11 @@ void RSGraphWidget::paintLegend()
QString text = _source->legend(i,vals[i]) ;
QPen oldPen = _painter->pen();
_painter->setPen(QPen(getColor(i), Qt::SolidLine));
QPen pen(getColor(_source->displayName(i).toStdString()), Qt::SolidLine) ;
pen.setWidth(_linewidthscale);
_painter->setPen(pen);
_painter->drawLine(QPointF(SCALE_WIDTH*fact+10.0*fact, pos+FS/3), QPointF(SCALE_WIDTH*fact+30.0*fact, pos+FS/3));
_painter->setPen(oldPen);

View File

@ -32,8 +32,9 @@
#include <stdint.h>
#define GRAPH_BASE 2 /** Position of the 0 of the scale, in count of the text height */
#define SCALE_WIDTH 75 /** Width of the scale */
#define MINUSER_SCALE 2000 /** 2000 users is the minimum scale */
#define MINUSER_SCALE 2000 /** 2000 users is the minimum scale */
#define SCROLL_STEP 4 /** Horizontal change on graph update */
#define BACK_COLOR Qt::white
@ -87,6 +88,9 @@ public:
// Sets the time period for collecting new values. Units=milliseconds.
void setCollectionTimePeriod(qint64 msecs) ;
// Enables/disables time filtering of the data
void setFiltering(bool b) { _filtering_enabled = b; }
void setDigits(int d) { _digits = d ;}
protected slots:
@ -112,6 +116,7 @@ protected:
qint64 _update_period_msecs ;
qint64 _time_orig_msecs ;
int _digits ;
bool _filtering_enabled ;
};
class RSGraphWidget: public QFrame
@ -127,6 +132,7 @@ public:
static const uint32_t RSGRAPH_FLAGS_PAINT_STYLE_FLAT = 0x0020 ;// do not interpolate, and draw flat colored boxes
static const uint32_t RSGRAPH_FLAGS_LEGEND_CUMULATED = 0x0040 ;// show the total in the legend rather than current values
static const uint32_t RSGRAPH_FLAGS_PAINT_STYLE_DOTS = 0x0080 ;// use dots
static const uint32_t RSGRAPH_FLAGS_LEGEND_INTEGER = 0x0100 ;// use integer number in the legend, and move the lines to match integers
/** Bandwidth graph style. */
enum GraphStyle
@ -156,6 +162,8 @@ public:
void setShowEntry(uint32_t entry, bool show) ;
void setCurvesOpacity(float f) ;
void setFiltering(bool b) ;
void setFlags(uint32_t flag) { _flags |= flag ; }
void resetFlags(uint32_t flag) { _flags &= ~flag ; }
protected:
@ -183,7 +191,7 @@ private:
void paintScale1();
void paintScale2();
QColor getColor(int i) ;
QColor getColor(const std::string &name) ;
/** Returns a formatted string representation of total. */
QString totalToStr(qreal total);
@ -209,6 +217,7 @@ private:
/** The maximum number of points to store. */
qreal _y_scale ;
qreal _opacity ;
qreal _graph_base;
qreal pixelsToValue(qreal) ;
qreal valueToPixels(qreal) ;

View File

@ -345,6 +345,7 @@ void ConnectFriendWizard::initializePage(int id)
connect(ui->userCertOldFormatButton, SIGNAL(clicked()), this, SLOT(toggleFormatState()));
connect(ui->userCertCopyButton, SIGNAL(clicked()), this, SLOT(copyCert()));
connect(ui->userCertPasteButton, SIGNAL(clicked()), this, SLOT(pasteCert()));
connect(ui->userCertOpenButton, SIGNAL(clicked()), this, SLOT(openCert()));
connect(ui->userCertSaveButton, SIGNAL(clicked()), this, SLOT(saveCert()));
connect(ui->userCertMailButton, SIGNAL(clicked()), this, SLOT(runEmailClient()));
connect(ui->friendCertEdit, SIGNAL(textChanged()), this, SLOT(friendCertChanged()));
@ -1077,6 +1078,22 @@ void ConnectFriendWizard::pasteCert()
ui->friendCertEdit->setPlainText(clipboard->text());
}
void ConnectFriendWizard::openCert()
{
QString fileName ;
if(!misc::getOpenFileName(this, RshareSettings::LASTDIR_CERT, tr("Select Certificate"), tr("RetroShare Certificate (*.rsc );;All Files (*)"),fileName))
return ;
if (!fileName.isNull()) {
QFile fileCert(fileName);
if (fileCert.open(QIODevice::ReadOnly )) {
QByteArray arrayCert(fileCert.readAll());
ui->friendCertEdit->setPlainText(QString::fromUtf8(arrayCert));
fileCert.close();
}
}
}
void ConnectFriendWizard::saveCert()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save as..."), "", tr("RetroShare Certificate (*.rsc );;All Files (*)"));

View File

@ -66,6 +66,7 @@ private slots:
void showHelpUserCert();
void copyCert();
void pasteCert();
void openCert();
void saveCert();
void friendCertChanged();
void cleanFriendCert();

View File

@ -279,7 +279,7 @@
</item>
<item>
<widget class="QFrame" name="friendFrame">
<layout class="QGridLayout" name="gridLayout_3">
<layout class="QGridLayout" name="friendFrameGLayout">
<item row="0" column="0">
<widget class="QToolButton" name="userCertPasteButton">
<property name="sizePolicy">
@ -316,6 +316,41 @@
</widget>
</item>
<item row="0" column="1">
<widget class="QToolButton" name="userCertOpenButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Open Cert of your friend from File</string>
</property>
<property name="text">
<string>Open certificate</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/filesharing.svg</normaloff>:/icons/svg/filesharing.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="friendCertCleanLabel">
<property name="pixmap">
<pixmap resource="../images.qrc">:/images/accepted16.png</pixmap>
@ -325,7 +360,7 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<item row="1" column="0" colspan="3">
<widget class="RSPlainTextEdit" name="friendCertEdit">
<property name="font">
<font>

View File

@ -278,10 +278,10 @@ void CreateGxsForumMsg::loadFormInformation()
uint32_t fl = IDCHOOSER_ID_REQUIRED ;
if( (mForumMeta.mSignFlags & GXS_SERV::FLAG_AUTHOR_AUTHENTICATION_GPG) || (mForumMeta.mSignFlags & GXS_SERV::FLAG_AUTHOR_AUTHENTICATION_GPG_KNOWN))
fl |= IDCHOOSER_NON_ANONYMOUS ;
fl |= IDCHOOSER_NON_ANONYMOUS;
if(!mPosterId.isNull())
fl |= IDCHOOSER_NO_CREATE;
if(!mPosterId.isNull())
fl |= IDCHOOSER_NO_CREATE;
ui.idChooser->setFlags(fl) ;

View File

@ -1850,14 +1850,18 @@ void GxsForumThreadWidget::setMsgReadStatus(QList<QTreeWidgetItem*> &rows, bool
rsGxsForums->setMessageReadStatus(token, msgPair, read);
// Look if older version exist to mark them too
QMap<RsGxsMessageId,QVector<QPair<time_t,RsGxsMessageId> > >::const_iterator it = mPostVersions.find(mOrigThreadId) ;
QMap<RsGxsMessageId,QVector<QPair<time_t,RsGxsMessageId> > >::const_iterator it = mPostVersions.find(RsGxsMessageId(msgId)) ;
if(it != mPostVersions.end())
{
std::cerr << (*it).size() << " versions found " << std::endl;
for(int i=0;i<(*it).size();++i)
{
msgPair = std::make_pair( groupId(), (*it)[i].second );
rsGxsForums->setMessageReadStatus(token, msgPair, read);
RsGxsMessageId found = (*it)[i].second;
if(found != RsGxsMessageId(msgId))
{
msgPair = std::make_pair( groupId(), found );
rsGxsForums->setMessageReadStatus(token, msgPair, read);
}
}
}

View File

@ -247,6 +247,7 @@ void GxsForumsFillThread::run()
}
}
// Now remove from msg ids, all posts except the most recent one. And make the mPostVersion be indexed by the most recent version of the post,
// which corresponds to the item in the tree widget.
@ -254,6 +255,7 @@ void GxsForumsFillThread::run()
std::cerr << "Final post versions: " << std::endl;
#endif
QMap<RsGxsMessageId,QVector<QPair<time_t,RsGxsMessageId> > > mTmp;
std::map<RsGxsMessageId,RsGxsMessageId> most_recent_versions ;
for(QMap<RsGxsMessageId,QVector<QPair<time_t,RsGxsMessageId> > >::iterator it(mPostVersions.begin());it!=mPostVersions.end();++it)
{
@ -277,10 +279,16 @@ void GxsForumsFillThread::run()
}
mTmp[(*it)[0].second] = *it ; // index the versions map by the ID of the most recent post.
// Now make sure that message parents are consistent. Indeed, an old post may have the old version of a post as parent. So we need to change that parent
// to the newest version. So we create a map of which is the most recent version of each message, so that parent messages can be searched in it.
for(uint32_t i=1;i<(*it).size();++i)
most_recent_versions[(*it)[i].second] = (*it)[0].second ;
}
mPostVersions = mTmp ;
// The first step is to find the top level thread messages. These are defined as the messages without
// The next step is to find the top level thread messages. These are defined as the messages without
// any parent message ID.
// this trick is needed because while we remove messages, the parents a given msg may already have been removed
@ -325,10 +333,21 @@ void GxsForumsFillThread::run()
#endif
// The same missing parent may appear multiple times, so we first store them into a unique container.
if(msgs.find(msgIt->second.mMeta.mParentId) == msgs.end())
missing_parents.insert(msgIt->second.mMeta.mParentId);
RsGxsMessageId parent_msg = msgIt->second.mMeta.mParentId;
kids_array[msgIt->second.mMeta.mParentId].push_back(msgIt->first) ;
if(msgs.find(parent_msg) == msgs.end())
{
// also check that the message is not versionned
std::map<RsGxsMessageId,RsGxsMessageId>::const_iterator mrit = most_recent_versions.find(parent_msg) ;
if(mrit != most_recent_versions.end())
parent_msg = mrit->second ;
else
missing_parents.insert(parent_msg);
}
kids_array[parent_msg].push_back(msgIt->first) ;
kept_msgs.insert(*msgIt) ;
}
}

View File

@ -1,228 +1,235 @@
<RCC>
<qresource prefix="/">
<file>icons/add_user_256.png</file>
<file>icons/anonymous_blue_128.png</file>
<file>icons/anonymous_green_128.png</file>
<file>icons/aol.png</file>
<file>icons/avatar_128.png</file>
<file>icons/avatar_grey_128.png</file>
<file>icons/biohazard_red.png</file>
<file>icons/biohazard_yellow.png</file>
<file>icons/blank_blue_128.png</file>
<file>icons/blank_green_128.png</file>
<file>icons/blank_red_128.png</file>
<file>icons/browsable_blue_128.png</file>
<file>icons/browsable_green_128.png</file>
<file>icons/bullet_blue_128.png</file>
<file>icons/bullet_green_128.png</file>
<file>icons/bullet_green_yellow_star_128.png</file>
<file>icons/bullet_grey_128.png</file>
<file>icons/bullet_red_128.png</file>
<file>icons/bullet_yellow_128.png</file>
<file>icons/channels_128.png</file>
<file>icons/channels_red_128.png</file>
<file>icons/chat_128.png</file>
<file>icons/chat_red_128.png</file>
<file>icons/circles_128.png</file>
<file>icons/circles_new_128.png</file>
<file>icons/flag-green.png</file>
<file>icons/friends_128.png</file>
<file>icons/global_switch_off_128.png</file>
<file>icons/global_switch_on_128.png</file>
<file>icons/gmail.png</file>
<file>icons/help_128.png</file>
<file>icons/help_64.png</file>
<file>icons/information_128.png</file>
<file>icons/internet_128.png</file>
<file>icons/invite64.png</file>
<file>icons/knews_128.png</file>
<file>icons/knews_red_128.png</file>
<file>icons/konversation_128.png</file>
<file>icons/konversation128.png</file>
<file>icons/konversation_red_128.png</file>
<file>icons/ktorrent_128.png</file>
<file>icons/ktorrent_red_128.png</file>
<file>icons/logo_0_connected_128.png</file>
<file>icons/logo_128.png</file>
<file>icons/logo_1_connected_128.png</file>
<file>icons/logo_2_connected_128.png</file>
<file>icons/mail_128.png</file>
<file>icons/mail_old_128.png</file>
<file>icons/mail_red_128.png</file>
<file>icons/newsfeed128.png</file>
<file>icons/outlook.png</file>
<file>icons/plugins_128.png</file>
<file>icons/png/add.png</file>
<file>icons/png/attach-image.png</file>
<file>icons/png/attach.png</file>
<file>icons/png/channels-notify.png</file>
<file>icons/png/channels.png</file>
<file>icons/png/chat-bubble-notify.png</file>
<file>icons/png/chat-bubble.png</file>
<file>icons/png/chat-lobbies-notify.png</file>
<file>icons/png/chat-lobbies.png</file>
<file>icons/png/circles.png</file>
<file>icons/png/empty-circle.png</file>
<file>icons/png/exit.png</file>
<file>icons/png/feedreader-notify.png</file>
<file>icons/png/feedreader.png</file>
<file>icons/png/filesharing-notify.png</file>
<file>icons/png/filesharing.png</file>
<file>icons/png/font.png</file>
<file>icons/png/forums-notify.png</file>
<file>icons/png/forums.png</file>
<file>icons/png/fullscreen_arrows.png</file>
<file>icons/png/highlight.png</file>
<file>icons/png/info.png</file>
<file>icons/png/invite.png</file>
<file>icons/png/keyring.png</file>
<file>icons/png/leave.png</file>
<file>icons/png/messages-notify.png</file>
<file>icons/png/messages.png</file>
<file>icons/png/microphone_mute.png</file>
<file>icons/png/microphone.png</file>
<file>icons/png/netgraph.png</file>
<file>icons/png/network-notify.png</file>
<file>icons/png/network.png</file>
<file>icons/png/network-puplic.png</file>
<file>icons/png/newsfeed-notify.png</file>
<file>icons/png/newsfeed.png</file>
<file>icons/png/options.png</file>
<file>icons/png/people-notify.png</file>
<file>icons/png/people.png</file>
<file>icons/png/person.png</file>
<file>icons/png/phone_hangup.png</file>
<file>icons/png/phone.png</file>
<file>icons/png/posted-notify.png</file>
<file>icons/png/posted.png</file>
<file>icons/png/search.png</file>
<file>icons/png/send-message-blocked.png</file>
<file>icons/png/send-message.png</file>
<file>icons/png/settings.png</file>
<file>icons/png/smiley.png</file>
<file>icons/png/speaker_mute.png</file>
<file>icons/png/speaker.png</file>
<file>icons/png/thumbs-down.png</file>
<file>icons/png/thumbs-neutral.png</file>
<file>icons/png/thumbs-up.png</file>
<file>icons/png/video.png</file>
<file>icons/posted_128.png</file>
<file>icons/posted_red_128.png</file>
<file>icons/quit_128.png</file>
<file>icons/search_red_128.png</file>
<file>icons/security_high_128.png</file>
<file>icons/security_low_128.png</file>
<file>icons/security_medium_128.png</file>
<file>icons/settings/appearance.svg</file>
<file>icons/settings/channels.svg</file>
<file>icons/settings/chat.svg</file>
<file>icons/settings/directories.svg</file>
<file>icons/settings/filesharing.svg</file>
<file>icons/settings/forums.svg</file>
<file>icons/settings/general.svg</file>
<file>icons/settings/messages.svg</file>
<file>icons/settings/network.svg</file>
<file>icons/settings/notify.svg</file>
<file>icons/settings/people.svg</file>
<file>icons/settings/permissions.svg</file>
<file>icons/settings/plugins.svg</file>
<file>icons/settings/posted.svg</file>
<file>icons/settings/profile.svg</file>
<file>icons/settings/server.svg</file>
<file>icons/settings/sound.svg</file>
<file>icons/settings/webinterface.svg</file>
<file>icons/star_overlay_128.png</file>
<file>icons/svg/add.svg</file>
<file>icons/svg/attach-image.svg</file>
<file>icons/svg/attach.svg</file>
<file>icons/svg/channels-notify.svg</file>
<file>icons/svg/channels.svg</file>
<file>icons/svg/chat-bubble-notify.svg</file>
<file>icons/svg/chat-bubble.svg</file>
<file>icons/svg/chat-lobbies-notify.svg</file>
<file>icons/svg/chat-lobbies.svg</file>
<file>icons/svg/circles.svg</file>
<file>icons/svg/download.svg</file>
<file>icons/svg/empty-circle.svg</file>
<file>icons/svg/exit-red.svg</file>
<file>icons/svg/exit.svg</file>
<file>icons/svg/feedreader-notify.svg</file>
<file>icons/svg/feedreader.svg</file>
<file>icons/svg/filesharing-notify.svg</file>
<file>icons/svg/filesharing.svg</file>
<file>icons/svg/folders1.svg</file>
<file>icons/svg/folders.svg</file>
<file>icons/svg/font.svg</file>
<file>icons/svg/forums-notify.svg</file>
<file>icons/svg/forums.svg</file>
<file>icons/svg/fullscreen_arrows.svg</file>
<file>icons/svg/highlight.svg</file>
<file>icons/svg/info.svg</file>
<file>icons/svg/invite.svg</file>
<file>icons/svg/keyring.svg</file>
<file>icons/svg/leave.svg</file>
<file>icons/svg/magnifying-glass.svg</file>
<file>icons/svg/messages-notify.svg</file>
<file>icons/svg/messages.svg</file>
<file>icons/svg/microphone_mute.svg</file>
<file>icons/svg/microphone.svg</file>
<file>icons/svg/netgraph.svg</file>
<file>icons/svg/network-notify.svg</file>
<file>icons/svg/network-puplic.svg</file>
<file>icons/svg/network.svg</file>
<file>icons/svg/newsfeed-notify.svg</file>
<file>icons/svg/newsfeed.svg</file>
<file>icons/svg/options.svg</file>
<file>icons/svg/paste.svg</file>
<file>icons/svg/people-notify.svg</file>
<file>icons/svg/people.svg</file>
<file>icons/svg/person.svg</file>
<file>icons/svg/phone_hangup.svg</file>
<file>icons/svg/phone.svg</file>
<file>icons/svg/posted-notify.svg</file>
<file>icons/svg/posted.svg</file>
<file>icons/svg/profile.svg</file>
<file>icons/svg/retroshare-info.svg</file>
<file>icons/svg/retroshare-splash.svg</file>
<file>icons/svg/retroshare-symbol_black_bg.svg</file>
<file>icons/svg/retroshare-symbol_gradients.svg</file>
<file>icons/svg/retroshare-symbol-minimal.svg</file>
<file>icons/svg/search.svg</file>
<file>icons/svg/send-message-blocked.svg</file>
<file>icons/svg/send-message.svg</file>
<file>icons/svg/settings.svg</file>
<file>icons/svg/share.svg</file>
<file>icons/svg/smiley.svg</file>
<file>icons/svg/speaker_mute.svg</file>
<file>icons/svg/speaker.svg</file>
<file>icons/svg/thumbs-down.svg</file>
<file>icons/svg/thumbs-neutral.svg</file>
<file>icons/svg/thumbs-up.svg</file>
<file>icons/svg/upload.svg</file>
<file>icons/svg/video.svg</file>
<file>icons/switch00_128.png</file>
<file>icons/switch01_128.png</file>
<file>icons/switch10_128.png</file>
<file>icons/switch11_128.png</file>
<file>icons/system_128.png</file>
<file>icons/tile_checking_48.png</file>
<file>icons/tile_downloaded_48.png</file>
<file>icons/tile_downloading_48.png</file>
<file>icons/tile_inactive_48.png</file>
<file>icons/tor-logo.png</file>
<file>icons/tor-off.png</file>
<file>icons/tor-on.png</file>
<file>icons/tor-starting.png</file>
<file>icons/tor-stopping.png</file>
<file>icons/user-away_64.png</file>
<file>icons/user-away-extended_64.png</file>
<file>icons/user-busy_64.png</file>
<file>icons/user-offline_64.png</file>
<file>icons/user-online_64.png</file>
<file>icons/void_128.png</file>
<file>icons/warning_red_128.png</file>
<file>icons/warning_yellow_128.png</file>
<file>icons/yahoo.png</file>
<file>icons/yandex.png</file>
</qresource>
<qresource prefix="/">
<file>icons/svg/password.svg</file>
<file>icons/stars/star0.png</file>
<file>icons/stars/star1.png</file>
<file>icons/stars/star2.png</file>
<file>icons/stars/star3.png</file>
<file>icons/stars/star4.png</file>
<file>icons/stars/star5.png</file>
<file>icons/add_user_256.png</file>
<file>icons/anonymous_blue_128.png</file>
<file>icons/anonymous_green_128.png</file>
<file>icons/aol.png</file>
<file>icons/avatar_128.png</file>
<file>icons/avatar_grey_128.png</file>
<file>icons/biohazard_red.png</file>
<file>icons/biohazard_yellow.png</file>
<file>icons/blank_blue_128.png</file>
<file>icons/blank_green_128.png</file>
<file>icons/blank_red_128.png</file>
<file>icons/browsable_blue_128.png</file>
<file>icons/browsable_green_128.png</file>
<file>icons/bullet_blue_128.png</file>
<file>icons/bullet_green_128.png</file>
<file>icons/bullet_green_yellow_star_128.png</file>
<file>icons/bullet_grey_128.png</file>
<file>icons/bullet_red_128.png</file>
<file>icons/bullet_yellow_128.png</file>
<file>icons/channels_128.png</file>
<file>icons/channels_red_128.png</file>
<file>icons/chat_128.png</file>
<file>icons/chat_red_128.png</file>
<file>icons/circles_128.png</file>
<file>icons/circles_new_128.png</file>
<file>icons/flag-green.png</file>
<file>icons/friends_128.png</file>
<file>icons/global_switch_off_128.png</file>
<file>icons/global_switch_on_128.png</file>
<file>icons/gmail.png</file>
<file>icons/help_128.png</file>
<file>icons/help_64.png</file>
<file>icons/information_128.png</file>
<file>icons/internet_128.png</file>
<file>icons/invite64.png</file>
<file>icons/knews_128.png</file>
<file>icons/knews_red_128.png</file>
<file>icons/konversation_128.png</file>
<file>icons/konversation128.png</file>
<file>icons/konversation_red_128.png</file>
<file>icons/ktorrent_128.png</file>
<file>icons/ktorrent_red_128.png</file>
<file>icons/logo_0_connected_128.png</file>
<file>icons/logo_128.png</file>
<file>icons/logo_1_connected_128.png</file>
<file>icons/logo_2_connected_128.png</file>
<file>icons/mail_128.png</file>
<file>icons/mail_old_128.png</file>
<file>icons/mail_red_128.png</file>
<file>icons/newsfeed128.png</file>
<file>icons/outlook.png</file>
<file>icons/plugins_128.png</file>
<file>icons/png/add.png</file>
<file>icons/png/attach-image.png</file>
<file>icons/png/attach.png</file>
<file>icons/png/channels-notify.png</file>
<file>icons/png/channels.png</file>
<file>icons/png/chat-bubble-notify.png</file>
<file>icons/png/chat-bubble.png</file>
<file>icons/png/chat-lobbies-notify.png</file>
<file>icons/png/chat-lobbies.png</file>
<file>icons/png/circles.png</file>
<file>icons/png/empty-circle.png</file>
<file>icons/png/exit.png</file>
<file>icons/png/feedreader-notify.png</file>
<file>icons/png/feedreader.png</file>
<file>icons/png/filesharing-notify.png</file>
<file>icons/png/filesharing.png</file>
<file>icons/png/font.png</file>
<file>icons/png/forums-notify.png</file>
<file>icons/png/forums.png</file>
<file>icons/png/fullscreen_arrows.png</file>
<file>icons/png/highlight.png</file>
<file>icons/png/info.png</file>
<file>icons/png/invite.png</file>
<file>icons/png/keyring.png</file>
<file>icons/png/leave.png</file>
<file>icons/png/messages-notify.png</file>
<file>icons/png/messages.png</file>
<file>icons/png/microphone_mute.png</file>
<file>icons/png/microphone.png</file>
<file>icons/png/netgraph.png</file>
<file>icons/png/network-notify.png</file>
<file>icons/png/network.png</file>
<file>icons/png/network-puplic.png</file>
<file>icons/png/newsfeed-notify.png</file>
<file>icons/png/newsfeed.png</file>
<file>icons/png/options.png</file>
<file>icons/png/people-notify.png</file>
<file>icons/png/people.png</file>
<file>icons/png/person.png</file>
<file>icons/png/phone_hangup.png</file>
<file>icons/png/phone.png</file>
<file>icons/png/posted-notify.png</file>
<file>icons/png/posted.png</file>
<file>icons/png/search.png</file>
<file>icons/png/send-message-blocked.png</file>
<file>icons/png/send-message.png</file>
<file>icons/png/settings.png</file>
<file>icons/png/smiley.png</file>
<file>icons/png/speaker_mute.png</file>
<file>icons/png/speaker.png</file>
<file>icons/png/thumbs-down.png</file>
<file>icons/png/thumbs-neutral.png</file>
<file>icons/png/thumbs-up.png</file>
<file>icons/png/video.png</file>
<file>icons/posted_128.png</file>
<file>icons/posted_red_128.png</file>
<file>icons/quit_128.png</file>
<file>icons/search_red_128.png</file>
<file>icons/security_high_128.png</file>
<file>icons/security_low_128.png</file>
<file>icons/security_medium_128.png</file>
<file>icons/settings/appearance.svg</file>
<file>icons/settings/channels.svg</file>
<file>icons/settings/chat.svg</file>
<file>icons/settings/directories.svg</file>
<file>icons/settings/filesharing.svg</file>
<file>icons/settings/forums.svg</file>
<file>icons/settings/general.svg</file>
<file>icons/settings/messages.svg</file>
<file>icons/settings/network.svg</file>
<file>icons/settings/notify.svg</file>
<file>icons/settings/people.svg</file>
<file>icons/settings/permissions.svg</file>
<file>icons/settings/plugins.svg</file>
<file>icons/settings/posted.svg</file>
<file>icons/settings/profile.svg</file>
<file>icons/settings/server.svg</file>
<file>icons/settings/sound.svg</file>
<file>icons/settings/webinterface.svg</file>
<file>icons/star_overlay_128.png</file>
<file>icons/svg/add.svg</file>
<file>icons/svg/attach-image.svg</file>
<file>icons/svg/attach.svg</file>
<file>icons/svg/channels-notify.svg</file>
<file>icons/svg/channels.svg</file>
<file>icons/svg/chat-bubble-notify.svg</file>
<file>icons/svg/chat-bubble.svg</file>
<file>icons/svg/chat-lobbies-notify.svg</file>
<file>icons/svg/chat-lobbies.svg</file>
<file>icons/svg/circles.svg</file>
<file>icons/svg/download.svg</file>
<file>icons/svg/empty-circle.svg</file>
<file>icons/svg/exit-red.svg</file>
<file>icons/svg/exit.svg</file>
<file>icons/svg/feedreader-notify.svg</file>
<file>icons/svg/feedreader.svg</file>
<file>icons/svg/filesharing-notify.svg</file>
<file>icons/svg/filesharing.svg</file>
<file>icons/svg/folders1.svg</file>
<file>icons/svg/folders.svg</file>
<file>icons/svg/font.svg</file>
<file>icons/svg/forums-notify.svg</file>
<file>icons/svg/forums.svg</file>
<file>icons/svg/fullscreen_arrows.svg</file>
<file>icons/svg/highlight.svg</file>
<file>icons/svg/info.svg</file>
<file>icons/svg/invite.svg</file>
<file>icons/svg/keyring.svg</file>
<file>icons/svg/leave.svg</file>
<file>icons/svg/magnifying-glass.svg</file>
<file>icons/svg/messages-notify.svg</file>
<file>icons/svg/messages.svg</file>
<file>icons/svg/microphone_mute.svg</file>
<file>icons/svg/microphone.svg</file>
<file>icons/svg/netgraph.svg</file>
<file>icons/svg/network-notify.svg</file>
<file>icons/svg/network-puplic.svg</file>
<file>icons/svg/network.svg</file>
<file>icons/svg/newsfeed-notify.svg</file>
<file>icons/svg/newsfeed.svg</file>
<file>icons/svg/options.svg</file>
<file>icons/svg/paste.svg</file>
<file>icons/svg/people-notify.svg</file>
<file>icons/svg/people.svg</file>
<file>icons/svg/person.svg</file>
<file>icons/svg/phone_hangup.svg</file>
<file>icons/svg/phone.svg</file>
<file>icons/svg/posted-notify.svg</file>
<file>icons/svg/posted.svg</file>
<file>icons/svg/profile.svg</file>
<file>icons/svg/retroshare-info.svg</file>
<file>icons/svg/retroshare-splash.svg</file>
<file>icons/svg/retroshare-symbol_black_bg.svg</file>
<file>icons/svg/retroshare-symbol_gradients.svg</file>
<file>icons/svg/retroshare-symbol-minimal.svg</file>
<file>icons/svg/search.svg</file>
<file>icons/svg/send-message-blocked.svg</file>
<file>icons/svg/send-message.svg</file>
<file>icons/svg/settings.svg</file>
<file>icons/svg/share.svg</file>
<file>icons/svg/smiley.svg</file>
<file>icons/svg/speaker_mute.svg</file>
<file>icons/svg/speaker.svg</file>
<file>icons/svg/thumbs-down.svg</file>
<file>icons/svg/thumbs-neutral.svg</file>
<file>icons/svg/thumbs-up.svg</file>
<file>icons/svg/upload.svg</file>
<file>icons/svg/video.svg</file>
<file>icons/switch00_128.png</file>
<file>icons/switch01_128.png</file>
<file>icons/switch10_128.png</file>
<file>icons/switch11_128.png</file>
<file>icons/system_128.png</file>
<file>icons/tile_checking_48.png</file>
<file>icons/tile_downloaded_48.png</file>
<file>icons/tile_downloading_48.png</file>
<file>icons/tile_inactive_48.png</file>
<file>icons/tor-logo.png</file>
<file>icons/tor-off.png</file>
<file>icons/tor-on.png</file>
<file>icons/tor-starting.png</file>
<file>icons/tor-stopping.png</file>
<file>icons/user-away_64.png</file>
<file>icons/user-away-extended_64.png</file>
<file>icons/user-busy_64.png</file>
<file>icons/user-offline_64.png</file>
<file>icons/user-online_64.png</file>
<file>icons/void_128.png</file>
<file>icons/warning_red_128.png</file>
<file>icons/warning_yellow_128.png</file>
<file>icons/yahoo.png</file>
<file>icons/yandex.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="star0.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\star0.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45"><metadata
id="metadata113"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs111" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview109"
showgrid="false"
inkscape:zoom="0.75097656"
inkscape:cx="256"
inkscape:cy="206.03082"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1"><inkscape:grid
type="xygrid"
id="grid4241" /></sodipodi:namedview>
<path
style="fill:#E4EAF6;"
d="M494.345,185.379H17.655C7.904,185.379,0,193.284,0,203.034v105.931 c0,9.75,7.904,17.655,17.655,17.655h476.69c9.751,0,17.655-7.905,17.655-17.655V203.034 C512,193.284,504.096,185.379,494.345,185.379z M116.572,250.997l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L81.173,280.5l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.019-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814c0.083-0.127,0.173-0.248,0.273-0.364 c0.497-0.576,1.199-0.995,2.066-1.121L63,243.005l5.719-0.831l5.101-10.335l4.323-8.76c0.465-0.941,1.258-1.529,2.134-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C117.471,245.638,118.577,249.043,116.572,250.997z M203.986,250.997l-15.249,14.863l3.599,20.988 c0.473,2.76-2.423,4.864-4.902,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.083-0.445,0.253-0.872,0.5-1.252c0.164-0.254,0.364-0.487,0.595-0.69 c0.462-0.406,1.05-0.694,1.743-0.796l15.192-2.207l5.881-0.855l6.036-12.23l3.389-6.866c0.465-0.941,1.259-1.529,2.135-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C204.884,245.638,205.99,249.043,203.986,250.997z M291.399,250.997L276.15,265.86l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L256,280.501l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.02-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.055-0.297,0.149-0.585,0.278-0.857c0.13-0.273,0.296-0.527,0.494-0.758c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231 l5.719-0.831l6.036-12.23l3.389-6.866c0.419-0.849,1.113-1.386,1.886-1.661c0.371-0.131,0.753-0.222,1.143-0.222 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062C292.297,245.638,293.404,249.043,291.399,250.997z M378.812,250.997 l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.901,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814 c0.083-0.127,0.173-0.248,0.273-0.364c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231l5.719-0.831l5.101-10.335l4.323-8.76 c0.465-0.941,1.259-1.529,2.135-1.766c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095 l21.073,3.062C379.71,245.638,380.817,249.043,378.812,250.997z M466.225,250.997l-15.249,14.865l3.599,20.989 c0.374,2.183-1.361,3.956-3.329,3.956c-0.52,0-1.055-0.124-1.572-0.395l-18.849-9.909l-18.848,9.909 c-0.518,0.271-1.053,0.395-1.572,0.395c-1.969,0-3.703-1.772-3.329-3.956l3.599-20.989l-15.249-14.865 c-2.005-1.954-0.898-5.358,1.873-5.762l21.074-3.061l9.425-19.096c0.619-1.256,1.824-1.884,3.029-1.884 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.096l21.073,3.061C467.124,245.638,468.23,249.043,466.225,250.997z"
id="path3" />
<polygon
style="fill:#FFFFFF;"
points="437.418,250.242 435.364,246.08 430.827,236.887 426.29,246.08 424.235,250.242 419.642,250.91 409.497,252.384 416.839,259.54 420.162,262.78 419.378,267.353 417.644,277.457 426.719,272.686 430.827,270.527 434.934,272.686 444.009,277.457 442.275,267.353 441.491,262.78 444.814,259.54 452.156,252.384 442.01,250.91 "
id="polygon75" />
<path
style="fill:#ffc864"
d="m 463.0214,244.5718 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77"
inkscape:connector-curvature="0" />
<g
id="g79">
</g>
<g
id="g81">
</g>
<g
id="g83">
</g>
<g
id="g85">
</g>
<g
id="g87">
</g>
<g
id="g89">
</g>
<g
id="g91">
</g>
<g
id="g93">
</g>
<g
id="g95">
</g>
<g
id="g97">
</g>
<g
id="g99">
</g>
<g
id="g101">
</g>
<g
id="g103">
</g>
<g
id="g105">
</g>
<g
id="g107">
</g>
<path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 375.40492,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-0" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 289.20245,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-08" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 202.12003,244.85148 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-2" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 114.47832,245.36368 -21.073005,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517005,0.271 1.053005,0.395 1.572005,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539005,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145005,1.474 -7.341005,7.156 z"
id="path77-2-3" /></svg>

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="star1.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\star1.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45"><metadata
id="metadata113"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs111" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview109"
showgrid="true"
inkscape:zoom="2.6074563"
inkscape:cx="369.19545"
inkscape:cy="235.07602"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1"><inkscape:grid
type="xygrid"
id="grid4241" /></sodipodi:namedview>
<path
style="fill:#E4EAF6;"
d="M494.345,185.379H17.655C7.904,185.379,0,193.284,0,203.034v105.931 c0,9.75,7.904,17.655,17.655,17.655h476.69c9.751,0,17.655-7.905,17.655-17.655V203.034 C512,193.284,504.096,185.379,494.345,185.379z M116.572,250.997l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L81.173,280.5l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.019-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814c0.083-0.127,0.173-0.248,0.273-0.364 c0.497-0.576,1.199-0.995,2.066-1.121L63,243.005l5.719-0.831l5.101-10.335l4.323-8.76c0.465-0.941,1.258-1.529,2.134-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C117.471,245.638,118.577,249.043,116.572,250.997z M203.986,250.997l-15.249,14.863l3.599,20.988 c0.473,2.76-2.423,4.864-4.902,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.083-0.445,0.253-0.872,0.5-1.252c0.164-0.254,0.364-0.487,0.595-0.69 c0.462-0.406,1.05-0.694,1.743-0.796l15.192-2.207l5.881-0.855l6.036-12.23l3.389-6.866c0.465-0.941,1.259-1.529,2.135-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C204.884,245.638,205.99,249.043,203.986,250.997z M291.399,250.997L276.15,265.86l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L256,280.501l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.02-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.055-0.297,0.149-0.585,0.278-0.857c0.13-0.273,0.296-0.527,0.494-0.758c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231 l5.719-0.831l6.036-12.23l3.389-6.866c0.419-0.849,1.113-1.386,1.886-1.661c0.371-0.131,0.753-0.222,1.143-0.222 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062C292.297,245.638,293.404,249.043,291.399,250.997z M378.812,250.997 l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.901,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814 c0.083-0.127,0.173-0.248,0.273-0.364c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231l5.719-0.831l5.101-10.335l4.323-8.76 c0.465-0.941,1.259-1.529,2.135-1.766c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095 l21.073,3.062C379.71,245.638,380.817,249.043,378.812,250.997z M466.225,250.997l-15.249,14.865l3.599,20.989 c0.374,2.183-1.361,3.956-3.329,3.956c-0.52,0-1.055-0.124-1.572-0.395l-18.849-9.909l-18.848,9.909 c-0.518,0.271-1.053,0.395-1.572,0.395c-1.969,0-3.703-1.772-3.329-3.956l3.599-20.989l-15.249-14.865 c-2.005-1.954-0.898-5.358,1.873-5.762l21.074-3.061l9.425-19.096c0.619-1.256,1.824-1.884,3.029-1.884 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.096l21.073,3.061C467.124,245.638,468.23,249.043,466.225,250.997z"
id="path3" />
<g
id="g5">
<path
style="fill:#FFDC69;"
d="M44.92,247.534c0.093-0.287,0.224-0.561,0.388-0.814C45.143,246.974,45.013,247.247,44.92,247.534z"
id="path7" />
<path
style="fill:#FFDC69;"
d="M80.279,221.312c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l4.323-8.76 C78.61,222.136,79.403,221.548,80.279,221.312z"
id="path9" />
<path
style="fill:#FFDC69;"
d="M47.647,245.236L63,243.005L47.647,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C46.078,245.78,46.782,245.362,47.647,245.236z"
id="path11" />
<path
style="fill:#FFDC69;"
d="M44.756,248.422c0.008-0.151,0.025-0.301,0.053-0.449C44.781,248.12,44.764,248.27,44.756,248.422z"
id="path13" />
<path
style="fill:#FFDC69;"
d="M45.775,250.997c-0.337-0.328-0.577-0.697-0.746-1.086 C45.197,250.298,45.439,250.669,45.775,250.997l15.249,14.863l-3.192,18.609l3.191-18.609L45.775,250.997z"
id="path15" />
<path
style="fill:#FFDC69;"
d="M57.374,287.358c0.001-0.061,0.013-0.125,0.019-0.188C57.387,287.233,57.375,287.296,57.374,287.358 z"
id="path17" />
<path
style="fill:#FFDC69;"
d="M114.7,245.236l-21.074-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C118.577,249.043,117.471,245.638,114.7,245.236z"
id="path19" />
</g>
<path
style="fill:#FFC864;"
d="M62.325,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l-5.101,10.335L63,243.006l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.191,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.025,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.192,18.607l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.006,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.004,0.33,0.023,0.49C57.668,290.08,60.157,291.55,62.325,290.41z"
id="path21" />
<path
style="fill:#ffc864"
d="m 464.353,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77"
inkscape:connector-curvature="0" />
<g
id="g79">
</g>
<g
id="g81">
</g>
<g
id="g83">
</g>
<g
id="g85">
</g>
<g
id="g87">
</g>
<g
id="g89">
</g>
<g
id="g91">
</g>
<g
id="g93">
</g>
<g
id="g95">
</g>
<g
id="g97">
</g>
<g
id="g99">
</g>
<g
id="g101">
</g>
<g
id="g103">
</g>
<g
id="g105">
</g>
<g
id="g107">
</g>
<path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 376.353,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-0" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 289.20245,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-08" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 202.12003,244.85148 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-2" /></svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,184 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="star2.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\star2.png"
inkscape:export-xdpi="45.241821"
inkscape:export-ydpi="45.241821"><metadata
id="metadata113"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs111" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview109"
showgrid="false"
inkscape:zoom="1.3037282"
inkscape:cx="260.3235"
inkscape:cy="235.45954"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1"><inkscape:grid
type="xygrid"
id="grid4241" /></sodipodi:namedview>
<path
style="fill:#E4EAF6;"
d="M494.345,185.379H17.655C7.904,185.379,0,193.284,0,203.034v105.931 c0,9.75,7.904,17.655,17.655,17.655h476.69c9.751,0,17.655-7.905,17.655-17.655V203.034 C512,193.284,504.096,185.379,494.345,185.379z M116.572,250.997l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L81.173,280.5l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.019-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814c0.083-0.127,0.173-0.248,0.273-0.364 c0.497-0.576,1.199-0.995,2.066-1.121L63,243.005l5.719-0.831l5.101-10.335l4.323-8.76c0.465-0.941,1.258-1.529,2.134-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C117.471,245.638,118.577,249.043,116.572,250.997z M203.986,250.997l-15.249,14.863l3.599,20.988 c0.473,2.76-2.423,4.864-4.902,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.083-0.445,0.253-0.872,0.5-1.252c0.164-0.254,0.364-0.487,0.595-0.69 c0.462-0.406,1.05-0.694,1.743-0.796l15.192-2.207l5.881-0.855l6.036-12.23l3.389-6.866c0.465-0.941,1.259-1.529,2.135-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C204.884,245.638,205.99,249.043,203.986,250.997z M291.399,250.997L276.15,265.86l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L256,280.501l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.02-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.055-0.297,0.149-0.585,0.278-0.857c0.13-0.273,0.296-0.527,0.494-0.758c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231 l5.719-0.831l6.036-12.23l3.389-6.866c0.419-0.849,1.113-1.386,1.886-1.661c0.371-0.131,0.753-0.222,1.143-0.222 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062C292.297,245.638,293.404,249.043,291.399,250.997z M378.812,250.997 l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.901,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814 c0.083-0.127,0.173-0.248,0.273-0.364c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231l5.719-0.831l5.101-10.335l4.323-8.76 c0.465-0.941,1.259-1.529,2.135-1.766c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095 l21.073,3.062C379.71,245.638,380.817,249.043,378.812,250.997z M466.225,250.997l-15.249,14.865l3.599,20.989 c0.374,2.183-1.361,3.956-3.329,3.956c-0.52,0-1.055-0.124-1.572-0.395l-18.849-9.909l-18.848,9.909 c-0.518,0.271-1.053,0.395-1.572,0.395c-1.969,0-3.703-1.772-3.329-3.956l3.599-20.989l-15.249-14.865 c-2.005-1.954-0.898-5.358,1.873-5.762l21.074-3.061l9.425-19.096c0.619-1.256,1.824-1.884,3.029-1.884 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.096l21.073,3.061C467.124,245.638,468.23,249.043,466.225,250.997z"
id="path3" />
<g
id="g5">
<path
style="fill:#FFDC69;"
d="M44.92,247.534c0.093-0.287,0.224-0.561,0.388-0.814C45.143,246.974,45.013,247.247,44.92,247.534z"
id="path7" />
<path
style="fill:#FFDC69;"
d="M80.279,221.312c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l4.323-8.76 C78.61,222.136,79.403,221.548,80.279,221.312z"
id="path9" />
<path
style="fill:#FFDC69;"
d="M47.647,245.236L63,243.005L47.647,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C46.078,245.78,46.782,245.362,47.647,245.236z"
id="path11" />
<path
style="fill:#FFDC69;"
d="M44.756,248.422c0.008-0.151,0.025-0.301,0.053-0.449C44.781,248.12,44.764,248.27,44.756,248.422z"
id="path13" />
<path
style="fill:#FFDC69;"
d="M45.775,250.997c-0.337-0.328-0.577-0.697-0.746-1.086 C45.197,250.298,45.439,250.669,45.775,250.997l15.249,14.863l-3.192,18.609l3.191-18.609L45.775,250.997z"
id="path15" />
<path
style="fill:#FFDC69;"
d="M57.374,287.358c0.001-0.061,0.013-0.125,0.019-0.188C57.387,287.233,57.375,287.296,57.374,287.358 z"
id="path17" />
<path
style="fill:#FFDC69;"
d="M114.7,245.236l-21.074-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C118.577,249.043,117.471,245.638,114.7,245.236z"
id="path19" />
</g>
<path
style="fill:#FFC864;"
d="M62.325,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l-5.101,10.335L63,243.006l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.191,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.025,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.192,18.607l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.006,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.004,0.33,0.023,0.49C57.668,290.08,60.157,291.55,62.325,290.41z"
id="path21" />
<g
id="g23">
<path
style="fill:#FFDC69;"
d="M132.169,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C132.195,248.12,132.177,248.27,132.169,248.422z"
id="path25" />
<path
style="fill:#FFDC69;"
d="M167.692,221.312c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l3.389-6.866 C166.023,222.136,166.816,221.548,167.692,221.312z"
id="path27" />
<path
style="fill:#FFDC69;"
d="M150.252,243.028l-15.192,2.207c-0.693,0.1-1.281,0.39-1.743,0.796 c0.462-0.406,1.05-0.694,1.743-0.794L150.252,243.028z"
id="path29" />
<path
style="fill:#FFDC69;"
d="M144.787,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C144.801,287.233,144.789,287.296,144.787,287.358z"
id="path31" />
<path
style="fill:#FFDC69;"
d="M133.188,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C132.61,250.298,132.852,250.669,133.188,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L133.188,250.997z"
id="path33" />
<path
style="fill:#FFDC69;"
d="M202.113,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C205.99,249.043,204.884,245.638,202.113,245.236z"
id="path35" />
</g>
<path
style="fill:#FFC864;"
d="M149.738,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l-6.036,12.23l-5.881,0.855l-15.192,2.208c-0.693,0.1-1.281,0.388-1.743,0.794 c-0.231,0.203-0.43,0.436-0.595,0.69c-0.247,0.38-0.417,0.808-0.5,1.252c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C145.081,290.08,147.57,291.55,149.738,290.41z"
id="path37" />
<g
id="g79">
</g>
<g
id="g81">
</g>
<g
id="g83">
</g>
<g
id="g85">
</g>
<g
id="g87">
</g>
<g
id="g89">
</g>
<g
id="g91">
</g>
<g
id="g93">
</g>
<g
id="g95">
</g>
<g
id="g97">
</g>
<g
id="g99">
</g>
<g
id="g101">
</g>
<g
id="g103">
</g>
<g
id="g105">
</g>
<g
id="g107">
</g>
<path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 376.353,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-0" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 289.58597,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-08"
inkscape:export-xdpi="45.241821"
inkscape:export-ydpi="45.241821" /><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 463.83199,245.04613 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-0-1" /></svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="star3.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\star3.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45"><metadata
id="metadata113"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs111" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview109"
showgrid="true"
inkscape:zoom="1.3037281"
inkscape:cx="305.62141"
inkscape:cy="188.36736"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1"><inkscape:grid
type="xygrid"
id="grid4241" /></sodipodi:namedview>
<path
style="fill:#E4EAF6;"
d="M494.345,185.379H17.655C7.904,185.379,0,193.284,0,203.034v105.931 c0,9.75,7.904,17.655,17.655,17.655h476.69c9.751,0,17.655-7.905,17.655-17.655V203.034 C512,193.284,504.096,185.379,494.345,185.379z M116.572,250.997l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L81.173,280.5l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.019-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814c0.083-0.127,0.173-0.248,0.273-0.364 c0.497-0.576,1.199-0.995,2.066-1.121L63,243.005l5.719-0.831l5.101-10.335l4.323-8.76c0.465-0.941,1.258-1.529,2.134-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C117.471,245.638,118.577,249.043,116.572,250.997z M203.986,250.997l-15.249,14.863l3.599,20.988 c0.473,2.76-2.423,4.864-4.902,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.083-0.445,0.253-0.872,0.5-1.252c0.164-0.254,0.364-0.487,0.595-0.69 c0.462-0.406,1.05-0.694,1.743-0.796l15.192-2.207l5.881-0.855l6.036-12.23l3.389-6.866c0.465-0.941,1.259-1.529,2.135-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C204.884,245.638,205.99,249.043,203.986,250.997z M291.399,250.997L276.15,265.86l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L256,280.501l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.02-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.055-0.297,0.149-0.585,0.278-0.857c0.13-0.273,0.296-0.527,0.494-0.758c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231 l5.719-0.831l6.036-12.23l3.389-6.866c0.419-0.849,1.113-1.386,1.886-1.661c0.371-0.131,0.753-0.222,1.143-0.222 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062C292.297,245.638,293.404,249.043,291.399,250.997z M378.812,250.997 l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.901,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814 c0.083-0.127,0.173-0.248,0.273-0.364c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231l5.719-0.831l5.101-10.335l4.323-8.76 c0.465-0.941,1.259-1.529,2.135-1.766c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095 l21.073,3.062C379.71,245.638,380.817,249.043,378.812,250.997z M466.225,250.997l-15.249,14.865l3.599,20.989 c0.374,2.183-1.361,3.956-3.329,3.956c-0.52,0-1.055-0.124-1.572-0.395l-18.849-9.909l-18.848,9.909 c-0.518,0.271-1.053,0.395-1.572,0.395c-1.969,0-3.703-1.772-3.329-3.956l3.599-20.989l-15.249-14.865 c-2.005-1.954-0.898-5.358,1.873-5.762l21.074-3.061l9.425-19.096c0.619-1.256,1.824-1.884,3.029-1.884 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.096l21.073,3.061C467.124,245.638,468.23,249.043,466.225,250.997z"
id="path3" />
<g
id="g5">
<path
style="fill:#FFDC69;"
d="M44.92,247.534c0.093-0.287,0.224-0.561,0.388-0.814C45.143,246.974,45.013,247.247,44.92,247.534z"
id="path7" />
<path
style="fill:#FFDC69;"
d="M80.279,221.312c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l4.323-8.76 C78.61,222.136,79.403,221.548,80.279,221.312z"
id="path9" />
<path
style="fill:#FFDC69;"
d="M47.647,245.236L63,243.005L47.647,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C46.078,245.78,46.782,245.362,47.647,245.236z"
id="path11" />
<path
style="fill:#FFDC69;"
d="M44.756,248.422c0.008-0.151,0.025-0.301,0.053-0.449C44.781,248.12,44.764,248.27,44.756,248.422z"
id="path13" />
<path
style="fill:#FFDC69;"
d="M45.775,250.997c-0.337-0.328-0.577-0.697-0.746-1.086 C45.197,250.298,45.439,250.669,45.775,250.997l15.249,14.863l-3.192,18.609l3.191-18.609L45.775,250.997z"
id="path15" />
<path
style="fill:#FFDC69;"
d="M57.374,287.358c0.001-0.061,0.013-0.125,0.019-0.188C57.387,287.233,57.375,287.296,57.374,287.358 z"
id="path17" />
<path
style="fill:#FFDC69;"
d="M114.7,245.236l-21.074-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C118.577,249.043,117.471,245.638,114.7,245.236z"
id="path19" />
</g>
<path
style="fill:#FFC864;"
d="M62.325,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l-5.101,10.335L63,243.006l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.191,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.025,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.192,18.607l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.006,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.004,0.33,0.023,0.49C57.668,290.08,60.157,291.55,62.325,290.41z"
id="path21" />
<g
id="g23">
<path
style="fill:#FFDC69;"
d="M132.169,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C132.195,248.12,132.177,248.27,132.169,248.422z"
id="path25" />
<path
style="fill:#FFDC69;"
d="M167.692,221.312c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l3.389-6.866 C166.023,222.136,166.816,221.548,167.692,221.312z"
id="path27" />
<path
style="fill:#FFDC69;"
d="M150.252,243.028l-15.192,2.207c-0.693,0.1-1.281,0.39-1.743,0.796 c0.462-0.406,1.05-0.694,1.743-0.794L150.252,243.028z"
id="path29" />
<path
style="fill:#FFDC69;"
d="M144.787,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C144.801,287.233,144.789,287.296,144.787,287.358z"
id="path31" />
<path
style="fill:#FFDC69;"
d="M133.188,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C132.61,250.298,132.852,250.669,133.188,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L133.188,250.997z"
id="path33" />
<path
style="fill:#FFDC69;"
d="M202.113,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C205.99,249.043,204.884,245.638,202.113,245.236z"
id="path35" />
</g>
<path
style="fill:#FFC864;"
d="M149.738,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l-6.036,12.23l-5.881,0.855l-15.192,2.208c-0.693,0.1-1.281,0.388-1.743,0.794 c-0.231,0.203-0.43,0.436-0.595,0.69c-0.247,0.38-0.417,0.808-0.5,1.252c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C145.081,290.08,147.57,291.55,149.738,290.41z"
id="path37" />
<g
id="g39">
<path
style="fill:#FFDC69;"
d="M289.526,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C293.404,249.043,292.297,245.638,289.526,245.236z"
id="path41" />
<path
style="fill:#FFDC69;"
d="M219.914,247.115c0.129-0.273,0.296-0.527,0.494-0.758 C220.21,246.586,220.044,246.842,219.914,247.115z"
id="path43" />
<path
style="fill:#FFDC69;"
d="M254.857,221.417c-0.772,0.275-1.468,0.812-1.886,1.661l-3.389,6.866l3.389-6.866 C253.39,222.23,254.084,221.692,254.857,221.417z"
id="path45" />
<path
style="fill:#FFDC69;"
d="M222.474,245.236l15.353-2.231L222.474,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C220.905,245.78,221.608,245.362,222.474,245.236z"
id="path47" />
<path
style="fill:#FFDC69;"
d="M220.601,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C220.024,250.298,220.265,250.669,220.601,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L220.601,250.997z"
id="path49" />
<path
style="fill:#FFDC69;"
d="M219.583,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C219.608,248.12,219.591,248.27,219.583,248.422z"
id="path51" />
<path
style="fill:#FFDC69;"
d="M232.201,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C232.214,287.233,232.202,287.296,232.201,287.358z"
id="path53" />
</g>
<path
style="fill:#FFC864;"
d="M237.152,290.41L256,280.501v-59.305c-0.391,0-0.772,0.09-1.143,0.222 c-0.772,0.275-1.468,0.812-1.886,1.661l-3.389,6.866l-6.036,12.23l-5.719,0.831l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.199,0.231-0.364,0.487-0.494,0.758s-0.224,0.561-0.278,0.857c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C232.494,290.08,234.984,291.55,237.152,290.41z"
id="path55" />
<path
style="fill:#FFC864;"
d="M464.353,245.235l-21.073-3.061l-9.425-19.096c-0.619-1.256-1.824-1.884-3.029-1.884 c-1.205,0-2.41,0.628-3.029,1.884l-9.425,19.096l-21.074,3.061c-2.771,0.403-3.876,3.808-1.873,5.762l15.249,14.865l-3.599,20.989 c-0.374,2.184,1.361,3.956,3.329,3.956c0.52,0,1.055-0.124,1.572-0.395l18.848-9.909l18.849,9.909 c0.517,0.271,1.053,0.395,1.572,0.395c1.969,0,3.703-1.773,3.329-3.956l-3.599-20.989l15.249-14.865 C468.23,249.043,467.124,245.638,464.353,245.235z M444.814,259.54l-3.324,3.24l0.785,4.575l1.734,10.103l-9.075-4.77l-4.108-2.159 l-4.108,2.159l-9.074,4.77l1.734-10.103l0.785-4.575l-3.324-3.24l-7.341-7.156l10.145-1.474l4.593-0.666l2.053-4.162l4.537-9.193 l4.537,9.193l2.054,4.162l4.593,0.666l10.145,1.474L444.814,259.54z"
id="path77" />
<g
id="g79">
</g>
<g
id="g81">
</g>
<g
id="g83">
</g>
<g
id="g85">
</g>
<g
id="g87">
</g>
<g
id="g89">
</g>
<g
id="g91">
</g>
<g
id="g93">
</g>
<g
id="g95">
</g>
<g
id="g97">
</g>
<g
id="g99">
</g>
<g
id="g101">
</g>
<g
id="g103">
</g>
<g
id="g105">
</g>
<g
id="g107">
</g>
<path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 376.353,245.235 -21.073,-3.061 -9.425,-19.096 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 -1.205,0 -2.41,0.628 -3.029,1.884 l -9.425,19.096 -21.074,3.061 c -2.771,0.403 -3.876,3.808 -1.873,5.762 l 15.249,14.865 -3.599,20.989 c -0.374,2.184 1.361,3.956 3.329,3.956 0.52,0 1.055,-0.124 1.572,-0.395 l 18.848,-9.909 18.849,9.909 c 0.517,0.271 1.053,0.395 1.572,0.395 1.969,0 3.703,-1.773 3.329,-3.956 l -3.599,-20.989 15.249,-14.865 c 2.006,-1.954 0.9,-5.359 -1.871,-5.762 z m -19.539,14.305 -3.324,3.24 0.785,4.575 1.734,10.103 -9.075,-4.77 -4.108,-2.159 -4.108,2.159 -9.074,4.77 1.734,-10.103 0.785,-4.575 -3.324,-3.24 -7.341,-7.156 10.145,-1.474 4.593,-0.666 2.053,-4.162 4.537,-9.193 4.537,9.193 2.054,4.162 4.593,0.666 10.145,1.474 -7.341,7.156 z"
id="path77-0" /></svg>

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="star4.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\star4.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45"><metadata
id="metadata113"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs111" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview109"
showgrid="false"
inkscape:zoom="0.921875"
inkscape:cx="256"
inkscape:cy="253.83051"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<path
style="fill:#E4EAF6;"
d="M494.345,185.379H17.655C7.904,185.379,0,193.284,0,203.034v105.931 c0,9.75,7.904,17.655,17.655,17.655h476.69c9.751,0,17.655-7.905,17.655-17.655V203.034 C512,193.284,504.096,185.379,494.345,185.379z M116.572,250.997l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L81.173,280.5l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.019-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814c0.083-0.127,0.173-0.248,0.273-0.364 c0.497-0.576,1.199-0.995,2.066-1.121L63,243.005l5.719-0.831l5.101-10.335l4.323-8.76c0.465-0.941,1.258-1.529,2.134-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C117.471,245.638,118.577,249.043,116.572,250.997z M203.986,250.997l-15.249,14.863l3.599,20.988 c0.473,2.76-2.423,4.864-4.902,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.083-0.445,0.253-0.872,0.5-1.252c0.164-0.254,0.364-0.487,0.595-0.69 c0.462-0.406,1.05-0.694,1.743-0.796l15.192-2.207l5.881-0.855l6.036-12.23l3.389-6.866c0.465-0.941,1.259-1.529,2.135-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C204.884,245.638,205.99,249.043,203.986,250.997z M291.399,250.997L276.15,265.86l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L256,280.501l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.02-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.055-0.297,0.149-0.585,0.278-0.857c0.13-0.273,0.296-0.527,0.494-0.758c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231 l5.719-0.831l6.036-12.23l3.389-6.866c0.419-0.849,1.113-1.386,1.886-1.661c0.371-0.131,0.753-0.222,1.143-0.222 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062C292.297,245.638,293.404,249.043,291.399,250.997z M378.812,250.997 l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.901,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814 c0.083-0.127,0.173-0.248,0.273-0.364c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231l5.719-0.831l5.101-10.335l4.323-8.76 c0.465-0.941,1.259-1.529,2.135-1.766c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095 l21.073,3.062C379.71,245.638,380.817,249.043,378.812,250.997z M466.225,250.997l-15.249,14.865l3.599,20.989 c0.374,2.183-1.361,3.956-3.329,3.956c-0.52,0-1.055-0.124-1.572-0.395l-18.849-9.909l-18.848,9.909 c-0.518,0.271-1.053,0.395-1.572,0.395c-1.969,0-3.703-1.772-3.329-3.956l3.599-20.989l-15.249-14.865 c-2.005-1.954-0.898-5.358,1.873-5.762l21.074-3.061l9.425-19.096c0.619-1.256,1.824-1.884,3.029-1.884 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.096l21.073,3.061C467.124,245.638,468.23,249.043,466.225,250.997z"
id="path3" />
<g
id="g5">
<path
style="fill:#FFDC69;"
d="M44.92,247.534c0.093-0.287,0.224-0.561,0.388-0.814C45.143,246.974,45.013,247.247,44.92,247.534z"
id="path7" />
<path
style="fill:#FFDC69;"
d="M80.279,221.312c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l4.323-8.76 C78.61,222.136,79.403,221.548,80.279,221.312z"
id="path9" />
<path
style="fill:#FFDC69;"
d="M47.647,245.236L63,243.005L47.647,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C46.078,245.78,46.782,245.362,47.647,245.236z"
id="path11" />
<path
style="fill:#FFDC69;"
d="M44.756,248.422c0.008-0.151,0.025-0.301,0.053-0.449C44.781,248.12,44.764,248.27,44.756,248.422z"
id="path13" />
<path
style="fill:#FFDC69;"
d="M45.775,250.997c-0.337-0.328-0.577-0.697-0.746-1.086 C45.197,250.298,45.439,250.669,45.775,250.997l15.249,14.863l-3.192,18.609l3.191-18.609L45.775,250.997z"
id="path15" />
<path
style="fill:#FFDC69;"
d="M57.374,287.358c0.001-0.061,0.013-0.125,0.019-0.188C57.387,287.233,57.375,287.296,57.374,287.358 z"
id="path17" />
<path
style="fill:#FFDC69;"
d="M114.7,245.236l-21.074-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C118.577,249.043,117.471,245.638,114.7,245.236z"
id="path19" />
</g>
<path
style="fill:#FFC864;"
d="M62.325,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l-5.101,10.335L63,243.006l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.191,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.025,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.192,18.607l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.006,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.004,0.33,0.023,0.49C57.668,290.08,60.157,291.55,62.325,290.41z"
id="path21" />
<g
id="g23">
<path
style="fill:#FFDC69;"
d="M132.169,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C132.195,248.12,132.177,248.27,132.169,248.422z"
id="path25" />
<path
style="fill:#FFDC69;"
d="M167.692,221.312c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l3.389-6.866 C166.023,222.136,166.816,221.548,167.692,221.312z"
id="path27" />
<path
style="fill:#FFDC69;"
d="M150.252,243.028l-15.192,2.207c-0.693,0.1-1.281,0.39-1.743,0.796 c0.462-0.406,1.05-0.694,1.743-0.794L150.252,243.028z"
id="path29" />
<path
style="fill:#FFDC69;"
d="M144.787,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C144.801,287.233,144.789,287.296,144.787,287.358z"
id="path31" />
<path
style="fill:#FFDC69;"
d="M133.188,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C132.61,250.298,132.852,250.669,133.188,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L133.188,250.997z"
id="path33" />
<path
style="fill:#FFDC69;"
d="M202.113,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C205.99,249.043,204.884,245.638,202.113,245.236z"
id="path35" />
</g>
<path
style="fill:#FFC864;"
d="M149.738,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l-6.036,12.23l-5.881,0.855l-15.192,2.208c-0.693,0.1-1.281,0.388-1.743,0.794 c-0.231,0.203-0.43,0.436-0.595,0.69c-0.247,0.38-0.417,0.808-0.5,1.252c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C145.081,290.08,147.57,291.55,149.738,290.41z"
id="path37" />
<g
id="g39">
<path
style="fill:#FFDC69;"
d="M289.526,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C293.404,249.043,292.297,245.638,289.526,245.236z"
id="path41" />
<path
style="fill:#FFDC69;"
d="M219.914,247.115c0.129-0.273,0.296-0.527,0.494-0.758 C220.21,246.586,220.044,246.842,219.914,247.115z"
id="path43" />
<path
style="fill:#FFDC69;"
d="M254.857,221.417c-0.772,0.275-1.468,0.812-1.886,1.661l-3.389,6.866l3.389-6.866 C253.39,222.23,254.084,221.692,254.857,221.417z"
id="path45" />
<path
style="fill:#FFDC69;"
d="M222.474,245.236l15.353-2.231L222.474,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C220.905,245.78,221.608,245.362,222.474,245.236z"
id="path47" />
<path
style="fill:#FFDC69;"
d="M220.601,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C220.024,250.298,220.265,250.669,220.601,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L220.601,250.997z"
id="path49" />
<path
style="fill:#FFDC69;"
d="M219.583,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C219.608,248.12,219.591,248.27,219.583,248.422z"
id="path51" />
<path
style="fill:#FFDC69;"
d="M232.201,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C232.214,287.233,232.202,287.296,232.201,287.358z"
id="path53" />
</g>
<path
style="fill:#FFC864;"
d="M237.152,290.41L256,280.501v-59.305c-0.391,0-0.772,0.09-1.143,0.222 c-0.772,0.275-1.468,0.812-1.886,1.661l-3.389,6.866l-6.036,12.23l-5.719,0.831l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.199,0.231-0.364,0.487-0.494,0.758s-0.224,0.561-0.278,0.857c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C232.494,290.08,234.984,291.55,237.152,290.41z"
id="path55" />
<g
id="g57">
<path
style="fill:#FFDC69;"
d="M319.614,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C319.627,287.233,319.615,287.296,319.614,287.358z"
id="path59" />
<path
style="fill:#FFDC69;"
d="M308.015,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C307.437,250.298,307.679,250.669,308.015,250.997l15.249,14.863l-3.191,18.607l3.191-18.609L308.015,250.997z"
id="path61" />
<path
style="fill:#FFDC69;"
d="M309.887,245.236l15.353-2.231L309.887,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C308.318,245.78,309.021,245.362,309.887,245.236z"
id="path63" />
<path
style="fill:#FFDC69;"
d="M307.16,247.534c0.093-0.287,0.224-0.561,0.388-0.814 C307.383,246.974,307.253,247.247,307.16,247.534z"
id="path65" />
<path
style="fill:#FFDC69;"
d="M306.996,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C307.021,248.12,307.004,248.27,306.996,248.422z"
id="path67" />
<path
style="fill:#FFDC69;"
d="M342.519,221.312c-0.876,0.235-1.67,0.824-2.135,1.766l-4.323,8.76l4.323-8.76 C340.85,222.136,341.643,221.548,342.519,221.312z"
id="path69" />
<path
style="fill:#FFDC69;"
d="M376.94,245.236l-21.073-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.374-0.801,4.901-3.561l-3.599-20.988l15.249-14.863C380.817,249.043,379.71,245.638,376.94,245.236z"
id="path71" />
</g>
<path
style="fill:#FFC864;"
d="M324.565,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.669,0.824-2.135,1.766l-4.323,8.76l-5.101,10.335l-5.719,0.831l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.19,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.191,18.609l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.003,0.33,0.023,0.49C319.908,290.08,322.397,291.55,324.565,290.41z"
id="path73" />
<path
style="fill:#FFC864;"
d="M464.353,245.235l-21.073-3.061l-9.425-19.096c-0.619-1.256-1.824-1.884-3.029-1.884 c-1.205,0-2.41,0.628-3.029,1.884l-9.425,19.096l-21.074,3.061c-2.771,0.403-3.876,3.808-1.873,5.762l15.249,14.865l-3.599,20.989 c-0.374,2.184,1.361,3.956,3.329,3.956c0.52,0,1.055-0.124,1.572-0.395l18.848-9.909l18.849,9.909 c0.517,0.271,1.053,0.395,1.572,0.395c1.969,0,3.703-1.773,3.329-3.956l-3.599-20.989l15.249-14.865 C468.23,249.043,467.124,245.638,464.353,245.235z M444.814,259.54l-3.324,3.24l0.785,4.575l1.734,10.103l-9.075-4.77l-4.108-2.159 l-4.108,2.159l-9.074,4.77l1.734-10.103l0.785-4.575l-3.324-3.24l-7.341-7.156l10.145-1.474l4.593-0.666l2.053-4.162l4.537-9.193 l4.537,9.193l2.054,4.162l4.593,0.666l10.145,1.474L444.814,259.54z"
id="path77" />
<g
id="g79">
</g>
<g
id="g81">
</g>
<g
id="g83">
</g>
<g
id="g85">
</g>
<g
id="g87">
</g>
<g
id="g89">
</g>
<g
id="g91">
</g>
<g
id="g93">
</g>
<g
id="g95">
</g>
<g
id="g97">
</g>
<g
id="g99">
</g>
<g
id="g101">
</g>
<g
id="g103">
</g>
<g
id="g105">
</g>
<g
id="g107">
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 512 512"
style="enable-background:new 0 0 512 512;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="star5.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\star5.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45"><metadata
id="metadata113"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs111" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview109"
showgrid="false"
inkscape:zoom="1.3037282"
inkscape:cx="286.598"
inkscape:cy="233.63082"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<path
style="fill:#E4EAF6;"
d="M494.345,185.379H17.655C7.904,185.379,0,193.284,0,203.034v105.931 c0,9.75,7.904,17.655,17.655,17.655h476.69c9.751,0,17.655-7.905,17.655-17.655V203.034 C512,193.284,504.096,185.379,494.345,185.379z M116.572,250.997l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L81.173,280.5l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.019-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814c0.083-0.127,0.173-0.248,0.273-0.364 c0.497-0.576,1.199-0.995,2.066-1.121L63,243.005l5.719-0.831l5.101-10.335l4.323-8.76c0.465-0.941,1.258-1.529,2.134-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C117.471,245.638,118.577,249.043,116.572,250.997z M203.986,250.997l-15.249,14.863l3.599,20.988 c0.473,2.76-2.423,4.864-4.902,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.083-0.445,0.253-0.872,0.5-1.252c0.164-0.254,0.364-0.487,0.595-0.69 c0.462-0.406,1.05-0.694,1.743-0.796l15.192-2.207l5.881-0.855l6.036-12.23l3.389-6.866c0.465-0.941,1.259-1.529,2.135-1.766 c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062 C204.884,245.638,205.99,249.043,203.986,250.997z M291.399,250.997L276.15,265.86l3.599,20.988c0.473,2.76-2.423,4.864-4.902,3.561 L256,280.501l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c-0.02-0.16-0.028-0.323-0.023-0.49 c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38l3.191-18.607l-15.249-14.863 c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.299-0.989-0.274-1.49c0.008-0.151,0.025-0.301,0.053-0.449 c0.055-0.297,0.149-0.585,0.278-0.857c0.13-0.273,0.296-0.527,0.494-0.758c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231 l5.719-0.831l6.036-12.23l3.389-6.866c0.419-0.849,1.113-1.386,1.886-1.661c0.371-0.131,0.753-0.222,1.143-0.222 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095l21.074,3.062C292.297,245.638,293.404,249.043,291.399,250.997z M378.812,250.997 l-15.249,14.863l3.599,20.988c0.473,2.76-2.423,4.864-4.901,3.561l-18.848-9.909l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562 c-0.02-0.16-0.028-0.323-0.023-0.49c0.001-0.062,0.013-0.125,0.019-0.188c0.009-0.107,0.013-0.213,0.032-0.321l0.408-2.38 l3.191-18.607l-15.249-14.863c-0.337-0.328-0.577-0.698-0.746-1.086c-0.207-0.48-0.3-0.989-0.274-1.49 c0.008-0.151,0.025-0.301,0.053-0.449c0.028-0.148,0.065-0.295,0.111-0.437c0.093-0.287,0.224-0.561,0.388-0.814 c0.083-0.127,0.173-0.248,0.273-0.364c0.497-0.576,1.199-0.995,2.066-1.121l15.353-2.231l5.719-0.831l5.101-10.335l4.323-8.76 c0.465-0.941,1.259-1.529,2.135-1.766c0.292-0.078,0.594-0.118,0.895-0.118c1.205,0,2.41,0.628,3.029,1.884l9.425,19.095 l21.073,3.062C379.71,245.638,380.817,249.043,378.812,250.997z M466.225,250.997l-15.249,14.865l3.599,20.989 c0.374,2.183-1.361,3.956-3.329,3.956c-0.52,0-1.055-0.124-1.572-0.395l-18.849-9.909l-18.848,9.909 c-0.518,0.271-1.053,0.395-1.572,0.395c-1.969,0-3.703-1.772-3.329-3.956l3.599-20.989l-15.249-14.865 c-2.005-1.954-0.898-5.358,1.873-5.762l21.074-3.061l9.425-19.096c0.619-1.256,1.824-1.884,3.029-1.884 c1.205,0,2.41,0.628,3.029,1.884l9.425,19.096l21.073,3.061C467.124,245.638,468.23,249.043,466.225,250.997z"
id="path3" />
<g
id="g5">
<path
style="fill:#FFDC69;"
d="M44.92,247.534c0.093-0.287,0.224-0.561,0.388-0.814C45.143,246.974,45.013,247.247,44.92,247.534z"
id="path7" />
<path
style="fill:#FFDC69;"
d="M80.279,221.312c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l4.323-8.76 C78.61,222.136,79.403,221.548,80.279,221.312z"
id="path9" />
<path
style="fill:#FFDC69;"
d="M47.647,245.236L63,243.005L47.647,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C46.078,245.78,46.782,245.362,47.647,245.236z"
id="path11" />
<path
style="fill:#FFDC69;"
d="M44.756,248.422c0.008-0.151,0.025-0.301,0.053-0.449C44.781,248.12,44.764,248.27,44.756,248.422z"
id="path13" />
<path
style="fill:#FFDC69;"
d="M45.775,250.997c-0.337-0.328-0.577-0.697-0.746-1.086 C45.197,250.298,45.439,250.669,45.775,250.997l15.249,14.863l-3.192,18.609l3.191-18.609L45.775,250.997z"
id="path15" />
<path
style="fill:#FFDC69;"
d="M57.374,287.358c0.001-0.061,0.013-0.125,0.019-0.188C57.387,287.233,57.375,287.296,57.374,287.358 z"
id="path17" />
<path
style="fill:#FFDC69;"
d="M114.7,245.236l-21.074-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C118.577,249.043,117.471,245.638,114.7,245.236z"
id="path19" />
</g>
<path
style="fill:#FFC864;"
d="M62.325,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.134,1.766l-4.323,8.76l-5.101,10.335L63,243.006l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.191,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.025,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.192,18.607l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.006,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.004,0.33,0.023,0.49C57.668,290.08,60.157,291.55,62.325,290.41z"
id="path21" />
<g
id="g23">
<path
style="fill:#FFDC69;"
d="M132.169,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C132.195,248.12,132.177,248.27,132.169,248.422z"
id="path25" />
<path
style="fill:#FFDC69;"
d="M167.692,221.312c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l3.389-6.866 C166.023,222.136,166.816,221.548,167.692,221.312z"
id="path27" />
<path
style="fill:#FFDC69;"
d="M150.252,243.028l-15.192,2.207c-0.693,0.1-1.281,0.39-1.743,0.796 c0.462-0.406,1.05-0.694,1.743-0.794L150.252,243.028z"
id="path29" />
<path
style="fill:#FFDC69;"
d="M144.787,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C144.801,287.233,144.789,287.296,144.787,287.358z"
id="path31" />
<path
style="fill:#FFDC69;"
d="M133.188,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C132.61,250.298,132.852,250.669,133.188,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L133.188,250.997z"
id="path33" />
<path
style="fill:#FFDC69;"
d="M202.113,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C205.99,249.043,204.884,245.638,202.113,245.236z"
id="path35" />
</g>
<path
style="fill:#FFC864;"
d="M149.738,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.67,0.824-2.135,1.766l-3.389,6.866l-6.036,12.23l-5.881,0.855l-15.192,2.208c-0.693,0.1-1.281,0.388-1.743,0.794 c-0.231,0.203-0.43,0.436-0.595,0.69c-0.247,0.38-0.417,0.808-0.5,1.252c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C145.081,290.08,147.57,291.55,149.738,290.41z"
id="path37" />
<g
id="g39">
<path
style="fill:#FFDC69;"
d="M289.526,245.236l-21.074-3.062l-9.425-19.095c-0.62-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.375-0.801,4.902-3.561l-3.599-20.988l15.249-14.863C293.404,249.043,292.297,245.638,289.526,245.236z"
id="path41" />
<path
style="fill:#FFDC69;"
d="M219.914,247.115c0.129-0.273,0.296-0.527,0.494-0.758 C220.21,246.586,220.044,246.842,219.914,247.115z"
id="path43" />
<path
style="fill:#FFDC69;"
d="M254.857,221.417c-0.772,0.275-1.468,0.812-1.886,1.661l-3.389,6.866l3.389-6.866 C253.39,222.23,254.084,221.692,254.857,221.417z"
id="path45" />
<path
style="fill:#FFDC69;"
d="M222.474,245.236l15.353-2.231L222.474,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C220.905,245.78,221.608,245.362,222.474,245.236z"
id="path47" />
<path
style="fill:#FFDC69;"
d="M220.601,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C220.024,250.298,220.265,250.669,220.601,250.997l15.249,14.863l-3.191,18.607l3.192-18.609L220.601,250.997z"
id="path49" />
<path
style="fill:#FFDC69;"
d="M219.583,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C219.608,248.12,219.591,248.27,219.583,248.422z"
id="path51" />
<path
style="fill:#FFDC69;"
d="M232.201,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C232.214,287.233,232.202,287.296,232.201,287.358z"
id="path53" />
</g>
<path
style="fill:#FFC864;"
d="M237.152,290.41L256,280.501v-59.305c-0.391,0-0.772,0.09-1.143,0.222 c-0.772,0.275-1.468,0.812-1.886,1.661l-3.389,6.866l-6.036,12.23l-5.719,0.831l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.199,0.231-0.364,0.487-0.494,0.758s-0.224,0.561-0.278,0.857c-0.028,0.148-0.045,0.299-0.053,0.449 c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863l-3.192,18.609l-0.408,2.38 c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188c-0.004,0.167,0.004,0.33,0.023,0.49 C232.494,290.08,234.984,291.55,237.152,290.41z"
id="path55" />
<g
id="g57">
<path
style="fill:#FFDC69;"
d="M319.614,287.358c0.001-0.061,0.013-0.125,0.019-0.188 C319.627,287.233,319.615,287.296,319.614,287.358z"
id="path59" />
<path
style="fill:#FFDC69;"
d="M308.015,250.997c-0.337-0.328-0.578-0.697-0.746-1.086 C307.437,250.298,307.679,250.669,308.015,250.997l15.249,14.863l-3.191,18.607l3.191-18.609L308.015,250.997z"
id="path61" />
<path
style="fill:#FFDC69;"
d="M309.887,245.236l15.353-2.231L309.887,245.236c-0.866,0.126-1.569,0.544-2.066,1.121 C308.318,245.78,309.021,245.362,309.887,245.236z"
id="path63" />
<path
style="fill:#FFDC69;"
d="M307.16,247.534c0.093-0.287,0.224-0.561,0.388-0.814 C307.383,246.974,307.253,247.247,307.16,247.534z"
id="path65" />
<path
style="fill:#FFDC69;"
d="M306.996,248.422c0.008-0.151,0.025-0.301,0.053-0.449 C307.021,248.12,307.004,248.27,306.996,248.422z"
id="path67" />
<path
style="fill:#FFDC69;"
d="M342.519,221.312c-0.876,0.235-1.67,0.824-2.135,1.766l-4.323,8.76l4.323-8.76 C340.85,222.136,341.643,221.548,342.519,221.312z"
id="path69" />
<path
style="fill:#FFDC69;"
d="M376.94,245.236l-21.073-3.062l-9.425-19.095c-0.619-1.256-1.824-1.884-3.029-1.884V280.5 l-18.848,9.909c-2.168,1.14-4.657-0.329-4.928-2.562c0.271,2.233,2.76,3.702,4.928,2.562l18.848-9.909l18.848,9.909 c2.478,1.303,5.374-0.801,4.901-3.561l-3.599-20.988l15.249-14.863C380.817,249.043,379.71,245.638,376.94,245.236z"
id="path71" />
</g>
<path
style="fill:#FFC864;"
d="M324.565,290.41l18.848-9.909v-59.305c-0.301,0-0.602,0.04-0.895,0.118 c-0.876,0.235-1.669,0.824-2.135,1.766l-4.323,8.76l-5.101,10.335l-5.719,0.831l-15.353,2.231c-0.866,0.126-1.569,0.544-2.066,1.121 c-0.099,0.115-0.19,0.237-0.273,0.364c-0.164,0.254-0.296,0.527-0.388,0.814c-0.046,0.143-0.084,0.289-0.111,0.437 c-0.028,0.148-0.045,0.299-0.053,0.449c-0.026,0.501,0.066,1.01,0.274,1.49c0.168,0.388,0.409,0.758,0.746,1.086l15.249,14.863 l-3.191,18.609l-0.408,2.38c-0.019,0.109-0.023,0.215-0.032,0.321c-0.004,0.062-0.017,0.126-0.019,0.188 c-0.004,0.167,0.003,0.33,0.023,0.49C319.908,290.08,322.397,291.55,324.565,290.41z"
id="path73" />
<polygon
style="fill:#FFFFFF;"
points="437.418,250.242 435.364,246.08 430.827,236.887 426.29,246.08 424.235,250.242 419.642,250.91 409.497,252.384 416.839,259.54 420.162,262.78 419.378,267.353 417.644,277.457 426.719,272.686 430.827,270.527 434.934,272.686 444.009,277.457 442.275,267.353 441.491,262.78 444.814,259.54 452.156,252.384 442.01,250.91 "
id="polygon75" />
<g
id="g79">
</g>
<g
id="g81">
</g>
<g
id="g83">
</g>
<g
id="g85">
</g>
<g
id="g87">
</g>
<g
id="g89">
</g>
<g
id="g91">
</g>
<g
id="g93">
</g>
<g
id="g95">
</g>
<g
id="g97">
</g>
<g
id="g99">
</g>
<g
id="g101">
</g>
<g
id="g103">
</g>
<g
id="g105">
</g>
<g
id="g107">
</g>
<g
transform="translate(87.770585,0.38369948)"
id="g57-5"><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 319.614,287.358 c 0.001,-0.061 0.013,-0.125 0.019,-0.188 -0.006,0.063 -0.018,0.126 -0.019,0.188 z"
id="path59-4" /><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 308.015,250.997 c -0.337,-0.328 -0.578,-0.697 -0.746,-1.086 0.168,0.387 0.41,0.758 0.746,1.086 l 15.249,14.863 -3.191,18.607 3.191,-18.609 -15.249,-14.861 z"
id="path61-4" /><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 309.887,245.236 15.353,-2.231 -15.353,2.231 c -0.866,0.126 -1.569,0.544 -2.066,1.121 0.497,-0.577 1.2,-0.995 2.066,-1.121 z"
id="path63-3" /><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 307.16,247.534 c 0.093,-0.287 0.224,-0.561 0.388,-0.814 -0.165,0.254 -0.295,0.527 -0.388,0.814 z"
id="path65-1" /><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 306.996,248.422 c 0.008,-0.151 0.025,-0.301 0.053,-0.449 -0.028,0.147 -0.045,0.297 -0.053,0.449 z"
id="path67-3" /><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 342.519,221.312 c -0.876,0.235 -1.67,0.824 -2.135,1.766 l -4.323,8.76 4.323,-8.76 c 0.466,-0.942 1.259,-1.53 2.135,-1.766 z"
id="path69-0" /><path
inkscape:connector-curvature="0"
style="fill:#ffdc69"
d="m 376.94,245.236 -21.073,-3.062 -9.425,-19.095 c -0.619,-1.256 -1.824,-1.884 -3.029,-1.884 l 0,59.305 -18.848,9.909 c -2.168,1.14 -4.657,-0.329 -4.928,-2.562 0.271,2.233 2.76,3.702 4.928,2.562 l 18.848,-9.909 18.848,9.909 c 2.478,1.303 5.374,-0.801 4.901,-3.561 l -3.599,-20.988 15.249,-14.863 c 2.005,-1.954 0.898,-5.359 -1.872,-5.761 z"
id="path71-0" /></g><path
inkscape:connector-curvature="0"
style="fill:#ffc864"
d="m 412.10841,290.40931 18.848,-9.909 0,-59.305 c -0.301,0 -0.602,0.04 -0.895,0.118 -0.876,0.235 -1.669,0.824 -2.135,1.766 l -4.323,8.76 -5.101,10.335 -5.719,0.831 -15.353,2.231 c -0.866,0.126 -1.569,0.544 -2.066,1.121 -0.099,0.115 -0.19,0.237 -0.273,0.364 -0.164,0.254 -0.296,0.527 -0.388,0.814 -0.046,0.143 -0.084,0.289 -0.111,0.437 -0.028,0.148 -0.045,0.299 -0.053,0.449 -0.026,0.501 0.066,1.01 0.274,1.49 0.168,0.388 0.409,0.758 0.746,1.086 l 15.249,14.863 -3.191,18.609 -0.408,2.38 c -0.019,0.109 -0.023,0.215 -0.032,0.321 -0.004,0.062 -0.017,0.126 -0.019,0.188 -0.004,0.167 0.003,0.33 0.023,0.49 0.27,2.231 2.759,3.701 4.927,2.561 z"
id="path73-6" /></svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg4155"
version="1.1"
inkscape:version="0.91 r13725"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="password.svg"><metadata
id="metadata4161"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs4159" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
id="namedview4157"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="58.388668"
inkscape:cy="26.810287"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4163" /><g
id="g4163"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.25,0,0,-1.25,0,80)"><path
inkscape:connector-curvature="0"
id="path4167"
style="fill:#039bd5;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 64,32 C 64,14.327 49.673,0 32,0 14.327,0 0,14.327 0,32 0,49.673 14.327,64 32,64 49.673,64 64,49.673 64,32" /><path
inkscape:connector-curvature="0"
style="fill:#ffffff"
d="m 46.424087,35.548069 0,5.917628 c 0,7.93778 -6.457816,14.395593 -14.395592,14.395593 -7.937779,0 -14.39559,-6.457813 -14.39559,-14.395593 l 0,-5.86178 c -0.895103,-0.341509 -1.78065,-1.111894 -1.78065,-2.638029 l 0,-8.059015 c 0,-8.919624 7.256741,-16.176363 16.176363,-16.176363 8.919623,0 16.176116,7.256739 16.176116,16.176363 l 0,8.059015 c 0,1.448075 -0.863829,2.215729 -1.780647,2.582181 z M 35.103086,18.231519 c 0.05063,-0.268294 -0.131297,-0.487813 -0.404301,-0.487813 l -5.27965,0 c -0.273009,0 -0.454934,0.219519 -0.404304,0.487813 l 0.845588,4.481592 c -0.645421,0.588579 -1.050468,1.436283 -1.050468,2.378533 0,1.777558 1.440997,3.218549 3.218544,3.218549 1.777546,0 3.218544,-1.440991 3.218544,-3.218549 0,-0.916689 -0.383827,-1.743168 -0.998847,-2.329385 l 0.854894,-4.53074 z m 6.357174,17.603832 -18.863532,0 0,5.630346 c 0,5.200605 4.231043,9.431762 9.431767,9.431762 5.2006,0 9.431765,-4.231157 9.431765,-9.431762 l 0,-5.630346 z"
id="path3" /></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -756,3 +756,20 @@ ConnectFriendWizard QFrame#friendFrame {
border-radius: 6px;
background: white;
}
HomePage QFrame#helpframe{
border: 2px solid #009933;
border-radius: 6px;
background: white;
}
StartDialog QPushButton#loadButton {
border-image: url(:/images/btn_blue.png) 4;
border-width: 4;
font: bold;
color: white;
}
StartDialog QPushButton#loadButton:hover {
border-image: url(:/images/btn_blue_hover.png) 4;
}

View File

@ -138,9 +138,9 @@ PostedCreatePostDialog QLabel#info_label
ForumsDialog, GxsForumThreadWidget
{
qproperty-textColorRead: gray;
qproperty-textColorRead: darkgray;
qproperty-textColorUnread: black;
qproperty-textColorUnreadChildren: gray;
qproperty-textColorUnreadChildren: darkgray;
qproperty-textColorNotSubscribed: black;
qproperty-textColorMissing: darkRed;
}
@ -223,3 +223,23 @@ GenCertDialog QLabel#entropy_label
{
qproperty-fontSizeFactor: 115;
}
/* OpModeStatus need to be at end to overload other values*/
OpModeStatus {
qproperty-opMode_Full_Color: #CCFFCC;
qproperty-opMode_NoTurtle_Color: #CCCCFF;
qproperty-opMode_Gaming_Color: #FFFFCC;
qproperty-opMode_Minimal_Color: #FFCCCC;
}
OpModeStatus[opMode="Full"] {
background: #CCFFCC;
}
OpModeStatus[opMode="NoTurtle"] {
background: #CCCCFF;
}
OpModeStatus[opMode="Gaming"] {
background: #FFFFCC;
}
OpModeStatus[opMode="Minimal"] {
background: #FFCCCC;
}

View File

@ -304,9 +304,9 @@ void AppearancePage::load()
whileBlocking(ui.checkBoxShowNATStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowNAT", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowDHTStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDHT", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowHashingStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowHashing", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowDiscStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDisc", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowDiscStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDisc", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowRateStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowRate", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowOpModeStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowOpModeStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(false)).toBool());
whileBlocking(ui.checkBoxShowSoundStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowSound", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowToasterDisable)->setChecked(Settings->valueFromGroup("StatusBar", "ShowToaster", QVariant(true)).toBool());
whileBlocking(ui.checkBoxShowSystrayOnStatus)->setChecked(Settings->valueFromGroup("StatusBar", "ShowSysTrayOnStatusBar", QVariant(false)).toBool());

View File

@ -355,7 +355,7 @@ void NotifyPage::load()
QMap<int, QString>::iterator it;
int index = 0;
for (it = toasterPositions.begin(); it != toasterPositions.end(); ++it, ++index) {
ui.comboBoxToasterPosition->addItem(it.value(), it.key());
whileBlocking(ui.comboBoxToasterPosition)->addItem(it.value(), it.key());
if (it.key() == toasterPosition) {
whileBlocking(ui.comboBoxToasterPosition)->setCurrentIndex(index);

View File

@ -38,6 +38,7 @@ TransferPage::TransferPage(QWidget * parent, Qt::WindowFlags flags)
ui.setupUi(this);
QObject::connect(ui._queueSize_SB,SIGNAL(valueChanged(int)),this,SLOT(updateQueueSize(int))) ;
QObject::connect(ui._max_up_SB,SIGNAL(valueChanged(int)),this,SLOT(updateMaxUploadSlots(int))) ;
QObject::connect(ui._defaultStrategy_CB,SIGNAL(activated(int)),this,SLOT(updateDefaultStrategy(int))) ;
QObject::connect(ui._e2e_encryption_CB,SIGNAL(activated(int)),this,SLOT(updateEncryptionPolicy(int))) ;
QObject::connect(ui._diskSpaceLimit_SB,SIGNAL(valueChanged(int)),this,SLOT(updateDiskSizeLimit(int))) ;
@ -59,6 +60,11 @@ void TransferPage::updateMaxTRUpRate(int b)
rsTurtle->setMaxTRForwardRate(b) ;
}
void TransferPage::updateMaxUploadSlots(int b)
{
rsFiles->setMaxUploadSlotsPerFriend(b) ;
}
void TransferPage::updateEncryptionPolicy(int b)
{
switch(b)
@ -100,6 +106,7 @@ void TransferPage::load()
whileBlocking(ui._diskSpaceLimit_SB)->setValue(rsFiles->freeDiskSpaceLimit()) ;
whileBlocking(ui._max_tr_up_per_sec_SB)->setValue(rsTurtle->getMaxTRForwardRate()) ;
whileBlocking(ui._max_up_SB)->setValue(rsFiles->getMaxUploadSlotsPerFriend()) ;
}
void TransferPage::updateDefaultStrategy(int i)

View File

@ -48,6 +48,7 @@ class TransferPage: public ConfigPage
void updateDiskSizeLimit(int) ;
void updateMaxTRUpRate(int);
void updateEncryptionPolicy(int);
void updateMaxUploadSlots(int);
void editDirectories() ;
void setIncomingDirectory();

View File

@ -203,6 +203,13 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Maximum uploads per friend (0 = no limit)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
@ -251,6 +258,9 @@
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="_max_up_SB"/>
</item>
<item>
<widget class="QComboBox" name="_defaultStrategy_CB">
<property name="enabled">

View File

@ -202,12 +202,16 @@ void BandwidthStatsWidget::updateUnitSelection(int n)
{
ui.bwgraph_BW->setUnit(BWGraphSource::UNIT_KILOBYTES) ;
ui.bwgraph_BW->resetFlags(RSGraphWidget::RSGRAPH_FLAGS_PAINT_STYLE_DOTS);
ui.bwgraph_BW->resetFlags(RSGraphWidget::RSGRAPH_FLAGS_LEGEND_INTEGER);
ui.legend_CB->setItemText(1,tr("Average"));
ui.bwgraph_BW->setFiltering(true) ;
}
else
{
ui.bwgraph_BW->setUnit(BWGraphSource::UNIT_COUNT) ;
ui.bwgraph_BW->setFlags(RSGraphWidget::RSGRAPH_FLAGS_PAINT_STYLE_DOTS);
ui.bwgraph_BW->setFlags(RSGraphWidget::RSGRAPH_FLAGS_LEGEND_INTEGER);
ui.bwgraph_BW->setFiltering(false) ;
ui.legend_CB->setItemText(1,tr("Total"));
}
}

View File

@ -15,34 +15,49 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#include <QHBoxLayout>
#include <QMessageBox>
#include <QLabel>
#include "gui/statusbar/OpModeStatus.h"
#include "gui/settings/rsharesettings.h"
#include <retroshare/rsconfig.h>
#include <iostream>
OpModeStatus::OpModeStatus(QWidget *parent)
: QComboBox(parent)
: QComboBox(parent)
{
onUpdate = false;
opMode_Full_Color = QColor("#CCFFCC");
opMode_NoTurtle_Color = QColor("#CCCCFF");
opMode_Gaming_Color = QColor("#FFFFCC");
opMode_Minimal_Color = QColor("#FFCCCC");
/* add the options */
addItem(tr("Normal Mode"), RS_OPMODE_FULL);
setItemData(0, opMode_Full_Color, Qt::BackgroundRole);
addItem(tr("No Anon D/L"), RS_OPMODE_NOTURTLE);
setItemData(1, opMode_NoTurtle_Color, Qt::BackgroundRole);
addItem(tr("Gaming Mode"), RS_OPMODE_GAMING);
setItemData(2, opMode_Gaming_Color, Qt::BackgroundRole);
addItem(tr("Low Traffic"), RS_OPMODE_MINIMAL);
setItemData(3, opMode_Minimal_Color, Qt::BackgroundRole);
connect(this, SIGNAL(activated( int )), this, SLOT(setOpMode()));
setCurrentIndex(Settings->valueFromGroup("StatusBar", "OpMode", QVariant(0)).toInt());
setOpMode();
setToolTip(tr("Use this DropList to quickly change Retroshare's behaviour\n No Anon D/L: switches off file forwarding\n Gaming Mode: 25% standard traffic and TODO: reduced popups\n Low Traffic: 10% standard traffic and TODO: pauses all file-transfers"));
setFocusPolicy(Qt::ClickFocus);
}
void OpModeStatus::getOpMode()
{
int opMode = rsConfig->getOperatingMode();
@ -51,17 +66,26 @@ void OpModeStatus::getOpMode()
default:
case RS_OPMODE_FULL:
setCurrentIndex(0);
break;
setProperty("opMode", "Full");
break;
case RS_OPMODE_NOTURTLE:
setCurrentIndex(1);
break;
setProperty("opMode", "NoTurtle");
break;
case RS_OPMODE_GAMING:
setCurrentIndex(2);
break;
setProperty("opMode", "Gaming");
break;
case RS_OPMODE_MINIMAL:
setCurrentIndex(3);
break;
setProperty("opMode", "Minimal");
break;
}
onUpdate = true;
style()->unpolish(this);
style()->polish(this);
update();
onUpdate = false;
}
void OpModeStatus::setOpMode()
@ -69,14 +93,78 @@ void OpModeStatus::setOpMode()
std::cerr << "OpModeStatus::setOpMode()";
std::cerr << std::endl;
int idx = currentIndex();
QVariant var = itemData(idx);
uint32_t opMode = var.toUInt();
int idx = currentIndex();
QVariant var = itemData(idx);
uint32_t opMode = var.toUInt();
QString message = tr("<p>Warning: This Operating mode disables the tunneling service. This means you can use distant chat not anonymously download files and the mail service will be slower.</p><p>This state will be saved after restart, so do not forget that you changed it!</p>");
if(opMode == RS_OPMODE_NOTURTLE && ! Settings->getPageAlreadyDisplayed(QString("RS_OPMODE_NO_TURTLE")))
{
QMessageBox::warning(NULL,tr("Turtle routing disabled!"),message);
Settings->setPageAlreadyDisplayed(QString("RS_OPMODE_NO_TURTLE"),true) ;
}
if( (opMode == RS_OPMODE_MINIMAL && ! Settings->getPageAlreadyDisplayed(QString("RS_OPMODE_MINIMAL"))))
{
QMessageBox::warning(NULL,tr("Turtle routing disabled!"),message);
Settings->setPageAlreadyDisplayed(QString("RS_OPMODE_MINIMAL"),true) ;
}
rsConfig->setOperatingMode(opMode);
// reload to be safe.
getOpMode();
Settings->setValueToGroup("StatusBar", "OpMode", idx);
}
QColor OpModeStatus::getOpMode_Full_Color() const
{
return opMode_Full_Color;
}
void OpModeStatus::setOpMode_Full_Color( QColor c )
{
opMode_Full_Color = c;
setItemData(0, opMode_Full_Color, Qt::BackgroundRole);
if (!onUpdate)
getOpMode();
}
QColor OpModeStatus::getOpMode_NoTurtle_Color() const
{
return opMode_NoTurtle_Color;
}
void OpModeStatus::setOpMode_NoTurtle_Color( QColor c )
{
opMode_NoTurtle_Color = c;
setItemData(1, opMode_NoTurtle_Color, Qt::BackgroundRole);
if (!onUpdate)
getOpMode();
}
QColor OpModeStatus::getOpMode_Gaming_Color() const
{
return opMode_Gaming_Color;
}
void OpModeStatus::setOpMode_Gaming_Color( QColor c )
{
opMode_Gaming_Color = c;
setItemData(2, opMode_Gaming_Color, Qt::BackgroundRole);
if (!onUpdate)
getOpMode();
}
QColor OpModeStatus::getOpMode_Minimal_Color() const
{
return opMode_Minimal_Color;
}
void OpModeStatus::setOpMode_Minimal_Color( QColor c )
{
opMode_Minimal_Color = c;
setItemData(3, opMode_Minimal_Color, Qt::BackgroundRole);
if (!onUpdate)
getOpMode();
}

View File

@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#ifndef OP_MODE_STATUS_H
@ -26,16 +26,37 @@
class OpModeStatus : public QComboBox
{
Q_OBJECT
Q_PROPERTY(QColor opMode_Full_Color READ getOpMode_Full_Color WRITE setOpMode_Full_Color DESIGNABLE true)
Q_PROPERTY(QColor opMode_NoTurtle_Color READ getOpMode_NoTurtle_Color WRITE setOpMode_NoTurtle_Color DESIGNABLE true)
Q_PROPERTY(QColor opMode_Gaming_Color READ getOpMode_Gaming_Color WRITE setOpMode_Gaming_Color DESIGNABLE true)
Q_PROPERTY(QColor opMode_Minimal_Color READ getOpMode_Minimal_Color WRITE setOpMode_Minimal_Color DESIGNABLE true)
public:
OpModeStatus(QWidget *parent = 0);
QColor getOpMode_Full_Color() const;
void setOpMode_Full_Color( QColor c );
QColor getOpMode_NoTurtle_Color() const;
void setOpMode_NoTurtle_Color( QColor c );
QColor getOpMode_Gaming_Color() const;
void setOpMode_Gaming_Color( QColor c );
QColor getOpMode_Minimal_Color() const;
void setOpMode_Minimal_Color( QColor c );
private slots:
void setOpMode();
void setOpMode();
private:
void getOpMode();
QColor opMode_Full_Color;
QColor opMode_NoTurtle_Color;
QColor opMode_Gaming_Color;
QColor opMode_Minimal_Color;
bool onUpdate;
};
#endif

View File

@ -273,4 +273,22 @@ QTextEdit {
color: white;
}
/* OpModeStatus need to be at end to overload other values*/
OpModeStatus {
qproperty-opMode_Full_Color: #007000;
qproperty-opMode_NoTurtle_Color: #000070;
qproperty-opMode_Gaming_Color: #707000;
qproperty-opMode_Minimal_Color: #700000;
}
OpModeStatus[opMode="Full"] {
background: #007000;
}
OpModeStatus[opMode="NoTurtle"] {
background: #000070;
}
OpModeStatus[opMode="Gaming"] {
background: #707000;
}
OpModeStatus[opMode="Minimal"] {
background: #700000;
}

View File

@ -1060,3 +1060,22 @@ QStatusBar::item {
border-radius: 3px;
}
/* OpModeStatus need to be at end to overload other values*/
OpModeStatus {
qproperty-opMode_Full_Color: #007000;
qproperty-opMode_NoTurtle_Color: #000070;
qproperty-opMode_Gaming_Color: #707000;
qproperty-opMode_Minimal_Color: #700000;
}
OpModeStatus[opMode="Full"] {
background: #007000;
}
OpModeStatus[opMode="NoTurtle"] {
background: #000070;
}
OpModeStatus[opMode="Gaming"] {
background: #707000;
}
OpModeStatus[opMode="Minimal"] {
background: #700000;
}

View File

@ -1,6 +1,7 @@
#include <list>
#include "retroshare/rsids.h"
#include "rsitems/rsitem.h"
#include "serialiser/rsserial.h"
#include "testing/IsolatedServiceTester.h"

View File

@ -1,6 +1,8 @@
#include "SetFilter.h"
#include "rsitems/rsitem.h"
bool SetFilter::filter(const SetPacket &pkt)
{
switch(mFilterMode)

View File

@ -2,6 +2,7 @@
#include <list>
#include "retroshare/rsids.h"
#include "rsitems/rsitem.h"
#include "pqi/p3linkmgr.h"
#include "SetPacket.h"

View File

@ -1,6 +1,6 @@
#pragma once
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
#include "gxs/rsgxsdata.h"
#define RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM 0x012

View File

@ -2,7 +2,7 @@
#define RSDATASERVICE_TEST_H
#include "util/rsthreads.h"
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
#include "gxs/rsgds.h"
void test_messageStoresAndRetrieve();

View File

@ -6,7 +6,7 @@
#include "gxs/rsnxs.h"
#include "gxs/rsgixs.h"
#include "serialiser/rsgxsitems.h"
#include "rsitems/rsgxsitems.h"
class RsDummyNetService: public RsNetworkExchangeService
{

View File

@ -28,7 +28,7 @@
*/
#include <gtest/gtest.h>
#include "serialiser/rsgxsiditems.h"
#include "rsitems/rsgxsiditems.h"
#include "support.h"

View File

@ -8,7 +8,7 @@
#include <gtest/gtest.h>
#include "support.h"
#include "serialiser/rsgxsupdateitems.h"
#include "rsitems/rsgxsupdateitems.h"
#define RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM 0x0010
RsSerialType* init_item(RsGxsGrpUpdateItem& i)

View File

@ -26,7 +26,7 @@
#include <iostream>
#include "util/rsrandom.h"
#include "serialiser/rsmsgitems.h"
#include "rsitems/rsmsgitems.h"
#include "chat/rschatitems.h"
#include "support.h"
@ -88,6 +88,7 @@ RsSerialType* init_item(RsChatLobbyInviteItem& cmi)
{
cmi.lobby_id = RSRandom::random_u64() ;
cmi.lobby_name = "Name of the lobby" ;
cmi.lobby_topic = "Topic of the lobby" ;
return new RsChatSerialiser();
}
@ -141,7 +142,7 @@ RsSerialType* init_item(RsMsgItem& mi)
mi.sendTime = mi.recvTime;
mi.msgFlags = mi.recvTime;
return new RsMsgSerialiser(true);
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
}
RsSerialType* init_item(RsMsgTagType& mtt)
@ -150,7 +151,7 @@ RsSerialType* init_item(RsMsgTagType& mtt)
mtt.tagId = rand()%24242;
randString(SHORT_STR, mtt.text);
return new RsMsgSerialiser();
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
}
@ -163,7 +164,7 @@ RsSerialType* init_item(RsMsgTags& mt)
mt.tagIds.push_back(rand()%21341);
}
return new RsMsgSerialiser();
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
}
RsSerialType* init_item(RsMsgSrcId& ms)
@ -171,7 +172,7 @@ RsSerialType* init_item(RsMsgSrcId& ms)
ms.msgId = rand()%434;
ms.srcId = RsPeerId::random();
return new RsMsgSerialiser();
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
}
RsSerialType* init_item(RsMsgParentId& ms)
@ -179,7 +180,7 @@ RsSerialType* init_item(RsMsgParentId& ms)
ms.msgId = rand()%354;
ms.msgParentId = rand()%476;
return new RsMsgSerialiser();
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
}
bool operator ==(const struct VisibleChatLobbyInfo& l, const struct VisibleChatLobbyInfo& r)
@ -254,6 +255,7 @@ bool operator ==(const RsChatLobbyInviteItem& csiLeft, const RsChatLobbyInviteIt
{
if(csiLeft.lobby_id != csiRight.lobby_id) return false ;
if(csiLeft.lobby_name != csiRight.lobby_name) return false ;
if(csiLeft.lobby_topic != csiRight.lobby_topic) return false ;
return true;
}
@ -288,7 +290,7 @@ bool operator ==(const RsMsgItem& miLeft, const RsMsgItem& miRight)
if(miLeft.recvTime != miRight.recvTime) return false;
if(miLeft.sendTime != miRight.sendTime) return false;
if(miLeft.subject != miRight.subject) return false;
if(miLeft.msgId != miRight.msgId) return false;
//if(miLeft.msgId != miRight.msgId) return false;
if(!(miLeft.attachment == miRight.attachment)) return false;
if(!(miLeft.rspeerid_msgbcc == miRight.rspeerid_msgbcc)) return false;

View File

@ -1,7 +1,7 @@
#include "support.h"
#include "libretroshare/gxs/common/data_support.h"
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
#define NUM_BIN_OBJECTS 5

View File

@ -25,7 +25,7 @@
#include "support.h"
#include "serialiser/rsstatusitems.h"
#include "rsitems/rsstatusitems.h"
RsSerialType* init_item(RsStatusItem& rsi)
{

View File

@ -5,7 +5,7 @@
// from libretroshare
#include "services/p3statusservice.h"
#include "serialiser/rsstatusitems.h"
#include "rsitems/rsstatusitems.h"
#include "gxs/rsgixs.h"
#include "gxs/rsdataservice.h"
#include "gxs/rsgxsnetservice.h"

View File

@ -5,7 +5,7 @@
#include "gxstestservice.h"
// libretroshare
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
GxsPairServiceTester::GxsPairServiceTester(const RsPeerId &peerId1, const RsPeerId &peerId2, int testMode, bool useIdentityService)
:SetServiceTester()

View File

@ -4,7 +4,7 @@
// from librssimulator
// from libretroshare
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
// local
#include "GxsPairServiceTester.h"

View File

@ -8,7 +8,7 @@
//#include "gxs/rsgixs.h"
//#include "gxs/rsdataservice.h"
//#include "gxs/rsgxsnetservice.h"
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
// local
#include "GxsIsolatedServiceTester.h"

View File

@ -4,7 +4,7 @@
// from librssimulator
// from libretroshare
#include "serialiser/rsnxsitems.h"
#include "rsitems/rsnxsitems.h"
// local
#include "GxsPairServiceTester.h"

View File

@ -30,7 +30,7 @@
#include "rsitems/rsserviceids.h"
#include "serialiser/rsserial.h"
#include "serialiser/rsgxsitems.h"
#include "rsitems/rsgxsitems.h"
#include "gxstestservice.h"
const uint8_t RS_PKT_SUBTYPE_TEST_GROUP_ITEM = 0x02;

View File

@ -7,7 +7,7 @@
// from libretroshare
#include "services/p3statusservice.h"
#include "serialiser/rsstatusitems.h"
#include "rsitems/rsstatusitems.h"
#define N_PEERS 10