Merge branch 'master' of github.com:RetroShare/RetroShare

This commit is contained in:
Gioacchino Mazzurco 2019-10-17 13:52:34 +02:00
commit e7833174f3
No known key found for this signature in database
GPG Key ID: A1FBCA3872E87051
101 changed files with 1976 additions and 1342 deletions

View File

@ -18,7 +18,7 @@ if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
:: Install needed things
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-libmicrohttpd mingw-w64-%RsMSYS2Architecture%-xapian-core"
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-libmicrohttpd mingw-w64-%RsMSYS2Architecture%-xapian-core mingw-w64-%RsMSYS2Architecture%-cmake mingw-w64-%RsMSYS2Architecture%-rapidjson"
:: Plugins
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"

View File

@ -99,6 +99,7 @@ copy nul "%RsDeployPath%\portable" %Quite%
echo copy binaries
copy "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\RetroShare*.exe" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\retroshare-nogui\src\%RsBuildConfig%\retroshare*-nogui.exe" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\retroshare-service\src\%RsBuildConfig%\retroshare*-service.exe" "%RsDeployPath%" %Quite%
echo copy extensions
for /D %%D in ("%RsBuildPath%\plugins\*") do (
@ -127,6 +128,9 @@ if exist "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" (
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
for %%D in ("%RsDeployPath%\imageformats\*.dll") do (
call :copy_dependencies "%%D" "%RsDeployPath%"
)
echo copy qss
xcopy /S "%SourcePath%\retroshare-gui\src\qss" "%RsDeployPath%\qss" %Quite%

View File

@ -341,7 +341,7 @@ bool p3ChatService::sendChat(ChatId destination, std::string msg)
message.incoming = false;
message.online = true;
if(!isOnline(vpid))
if(!isOnline(vpid) && !destination.isDistantChatId())
{
message.online = false;
RsServer::notify()->notifyChatMessage(message);
@ -352,11 +352,15 @@ bool p3ChatService::sendChat(ChatId destination, std::string msg)
RsGxsTransId tId = RSRandom::random_u64();
#ifdef SUSPENDED_CODE
// this part of the code was formerly used to send the traffic over GxsTransport. The problem is that
// gxstunnel takes care of reaching the peer already, so GxsTransport would only be needed when the
// current peer is offline. So we need to fin a way to quickly push the items to friends when quitting RS.
if(destination.isDistantChatId())
{
RS_STACK_MUTEX(mDGMutex);
DIDEMap::const_iterator it =
mDistantGxsMap.find(destination.toDistantChatId());
DIDEMap::const_iterator it = mDistantGxsMap.find(destination.toDistantChatId());
if(it != mDistantGxsMap.end())
{
const DistantEndpoints& de(it->second);
@ -371,6 +375,7 @@ bool p3ChatService::sendChat(ChatId destination, std::string msg)
<< "chat id in mDistantGxsMap this is unxpected!"
<< std::endl;
}
#endif
// peer is offline, add to outgoing list
{
@ -412,10 +417,10 @@ bool p3ChatService::sendChat(ChatId destination, std::string msg)
RsServer::notify()->notifyChatMessage(message);
// cyril: history is temporarily diabled for distant chat, since we need to store the full tunnel ID, but then
// cyril: history is temporarily disabled for distant chat, since we need to store the full tunnel ID, but then
// at loading time, the ID is not known so that chat window shows 00000000 as a peer.
if(!message.chat_id.isDistantChatId())
//if(!message.chat_id.isDistantChatId())
mHistoryMgr->addMessage(message);
checkSizeAndSendMessage(ci);
@ -871,10 +876,6 @@ bool p3ChatService::handleRecvChatMsgItem(RsChatMsgItem *& ci)
cm.online = true;
RsServer::notify()->notifyChatMessage(cm);
// cyril: history is temporarily diabled for distant chat, since we need to store the full tunnel ID, but then
// at loading time, the ID is not known so that chat window shows 00000000 as a peer.
if(!cm.chat_id.isDistantChatId())
mHistoryMgr->addMessage(cm);
return true ;

View File

@ -112,6 +112,8 @@ int p3GxsTunnelService::tick()
#endif
flush() ;
rstime::rs_usleep(1000*500);
return 0 ;
}
@ -1294,8 +1296,7 @@ bool p3GxsTunnelService::locked_sendEncryptedTunnelData(RsGxsTunnelItem *item)
}
if(it->second.status != RS_GXS_TUNNEL_STATUS_CAN_TALK)
{
std::cerr << "(EE) Cannot talk to tunnel id " << tunnel_id
<< ". Tunnel status is: " << it->second.status << std::endl;
std::cerr << "(EE) Cannot talk to tunnel id " << tunnel_id << ". Tunnel status is: " << it->second.status << std::endl;
return false;
}

View File

@ -48,10 +48,13 @@ p3HistoryMgr::p3HistoryMgr()
mPublicEnable = false;
mPrivateEnable = true;
mLobbyEnable = true;
mDistantEnable = true;
mPublicSaveCount = 0;
mLobbySaveCount = 0;
mPrivateSaveCount = 0;
mDistantSaveCount = 0;
mLastCleanTime = 0 ;
mMaxStorageDurationSeconds = 10*86400 ; // store for 10 days at most.
@ -99,11 +102,25 @@ void p3HistoryMgr::addMessage(const ChatMessage& cm)
enabled = true;
}
if(cm.chat_id.isDistantChatId())
if(cm.chat_id.isDistantChatId()&& mDistantEnable == true)
{
DistantChatPeerInfo dcpinfo;
if (rsMsgs->getDistantChatStatus(cm.chat_id.toDistantChatId(), dcpinfo))
peerName = cm.chat_id.toPeerId().toStdString();
{
RsIdentityDetails det;
RsGxsId writer_id = cm.incoming?(dcpinfo.to_id):(dcpinfo.own_id);
if(rsIdentity->getIdDetails(writer_id,det))
peerName = det.mNickname;
else
peerName = writer_id.toStdString();
}
else
{
RsErr() << "Cannot retrieve friend name for distant chat " << cm.chat_id.toDistantChatId() << std::endl;
peerName = "";
}
enabled = true;
}
@ -258,6 +275,10 @@ bool p3HistoryMgr::saveList(bool& cleanup, std::list<RsItem*>& saveData)
kv.key = "LOBBY_ENABLE";
kv.value = mLobbyEnable ? "TRUE" : "FALSE";
vitem->tlvkvs.pairs.push_back(kv);
kv.key = "DISTANT_ENABLE";
kv.value = mDistantEnable ? "TRUE" : "FALSE";
vitem->tlvkvs.pairs.push_back(kv);
kv.key = "MAX_STORAGE_TIME";
rs_sprintf(kv.value,"%d",mMaxStorageDurationSeconds) ;
@ -274,6 +295,10 @@ bool p3HistoryMgr::saveList(bool& cleanup, std::list<RsItem*>& saveData)
kv.key = "PRIVATE_SAVECOUNT";
rs_sprintf(kv.value, "%lu", mPrivateSaveCount);
vitem->tlvkvs.pairs.push_back(kv);
kv.key = "DISTANT_SAVECOUNT";
rs_sprintf(kv.value, "%lu", mDistantSaveCount);
vitem->tlvkvs.pairs.push_back(kv);
saveData.push_back(vitem);
saveCleanupList.push_back(vitem);
@ -343,6 +368,11 @@ bool p3HistoryMgr::loadList(std::list<RsItem*>& load)
mLobbyEnable = (kit->value == "TRUE") ? true : false;
continue;
}
if (kit->key == "DISTANT_ENABLE") {
mDistantEnable = (kit->value == "TRUE") ? true : false;
continue;
}
if (kit->key == "MAX_STORAGE_TIME") {
uint32_t val ;
@ -367,6 +397,10 @@ bool p3HistoryMgr::loadList(std::list<RsItem*>& load)
mLobbySaveCount = atoi(kit->value.c_str());
continue;
}
if (kit->key == "DISTANT_SAVECOUNT") {
mDistantSaveCount = atoi(kit->value.c_str());
continue;
}
}
delete (*it);
@ -444,7 +478,7 @@ bool p3HistoryMgr::getMessages(const ChatId &chatId, std::list<HistoryMsg> &msgs
if (chatId.isLobbyId() && mLobbyEnable == true) {
enabled = true;
}
if (chatId.isDistantChatId() && mPrivateEnable == true) {
if (chatId.isDistantChatId() && mDistantEnable == true) {
enabled = true;
}
@ -586,6 +620,7 @@ bool p3HistoryMgr::getEnable(uint32_t chat_type)
case RS_HISTORY_TYPE_PUBLIC : return mPublicEnable ;
case RS_HISTORY_TYPE_LOBBY : return mLobbyEnable ;
case RS_HISTORY_TYPE_PRIVATE: return mPrivateEnable ;
case RS_HISTORY_TYPE_DISTANT: return mDistantEnable ;
default:
std::cerr << "Unexpected value " << chat_type<< " in p3HistoryMgr::getEnable(): this is a bug." << std::endl;
return 0 ;
@ -623,6 +658,9 @@ void p3HistoryMgr::setEnable(uint32_t chat_type, bool enable)
case RS_HISTORY_TYPE_PRIVATE: oldValue = mPrivateEnable ;
mPrivateEnable = enable ;
break ;
case RS_HISTORY_TYPE_DISTANT: oldValue = mDistantEnable ;
mDistantEnable = enable ;
break ;
default:
return;
}

View File

@ -82,10 +82,12 @@ private:
bool mPublicEnable;
bool mLobbyEnable;
bool mPrivateEnable;
bool mDistantEnable;
uint32_t mPublicSaveCount;
uint32_t mLobbySaveCount;
uint32_t mPrivateSaveCount;
uint32_t mDistantSaveCount;
uint32_t mMaxStorageDurationSeconds ;
rstime_t mLastCleanTime ;

View File

@ -1074,26 +1074,22 @@ bool p3PeerMgrIMPL::addFriend(const RsPeerId& input_id, const RsPgpId& input_gpg
bool p3PeerMgrIMPL::addSslOnlyFriend(
const RsPeerId& sslId, const RsPgpId& pgp_id, const RsPeerDetails& dt )
{
if(sslId.isNull())
constexpr auto fname = __PRETTY_FUNCTION__;
const auto failure = [&](const std::string& err)
{
RsErr() << __PRETTY_FUNCTION__ << " Cannot add a null "
<< "ID as SSL-only friend " << std::endl;
RsErr() << fname << " " << err << std::endl;
return false;
}
};
if(sslId.isNull())
return failure("Cannot add a null ID as SSL-only friend");
if(pgp_id.isNull())
{
RsErr() << __PRETTY_FUNCTION__ << " Cannot add as SSL-only friend a "
<< "peer with null PGP" << std::endl;
return false;
}
return failure( " Cannot add as SSL-only friend a peer with null PGP");
if(sslId == getOwnId())
{
RsErr() << __PRETTY_FUNCTION__ << " Cannot add yourself as SSL-only "
<< "friend (id=" << sslId << ")" << std::endl;
return false;
}
return failure( "Cannot add yourself as SSL-only friend id:" +
sslId.toStdString() );
bool alreadySslFriend = false;
peerState pstate;
@ -1116,13 +1112,10 @@ bool p3PeerMgrIMPL::addSslOnlyFriend(
* PGP id we already know, to avoid nasty tricks with malevolently forged
* short invites.*/
if(alreadySslFriend && pstate.gpg_id != pgp_id)
{
RsErr() << __PRETTY_FUNCTION__ << " Cannot SSL-only friend for "
<< "a pre-existing friend with mismatching PGP-id "
<< "known: " << pstate.gpg_id << " new: " << pgp_id
<< std::endl;
return false;
}
return failure( "Cannot SSL-only friend for a pre-existing friend with "
"mismatching PGP-id known: " +
pstate.gpg_id.toStdString() + " new: " +
pgp_id.toStdString() );
/* It is very important to be expecially carefull setting
* pstate.skip_pgp_signature_validation to true because this effectively
@ -1137,8 +1130,11 @@ bool p3PeerMgrIMPL::addSslOnlyFriend(
* connection closed.
* Instead if pstate.skip_pgp_signature_validation would have been
* superficially set to true the PGP signature verification would have been
* skipped and the attacker connection would be accepted. */
if(!AuthGPG::getAuthGPG()->isPgpPubKeyAvailable(pgp_id))
* skipped and the attacker connection would be accepted.
* If the PGP key is available add it as full friend. */
if(AuthGPG::getAuthGPG()->isPgpPubKeyAvailable(pgp_id))
AuthGPG::getAuthGPG()->AllowConnection(pgp_id, true);
else
pstate.skip_pgp_signature_validation = true;
pstate.gpg_id = pgp_id;

View File

@ -1078,7 +1078,7 @@ int pqissl::SSL_Connection_Complete()
/* if we are passive - then accept! */
int err;
if (sslmode)
if (sslmode == PQISSL_ACTIVE)
{
#ifdef PQISSL_LOG_DEBUG
rslog(RSL_DEBUG_BASIC, pqisslzone, "--------> Active Connect! Client side.");

View File

@ -3,7 +3,8 @@
* *
* libretroshare: retroshare core library *
* *
* Copyright 2004-2006 by Robert Fernie <retroshare@lunamutt.com> *
* Copyright (C) 2004-2006 Robert Fernie <retroshare@lunamutt.com> *
* Copyright (C) 2015-2019 Gioacchino Mazzurco <gio@altermundi.net> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
@ -50,39 +51,22 @@ static const uint32_t PQI_SSLUDP_DEF_CONN_PERIOD = 300; /* 5 minutes? */
/********** PQI SSL UDP STUFF **************************************/
pqissludp::pqissludp(PQInterface *parent, p3LinkMgr *lm) :
pqissl(NULL, parent, lm), tou_bio(NULL),// listen_checktime(0),
mConnectPeriod(PQI_SSLUDP_DEF_CONN_PERIOD), mConnectFlags(0),
mConnectBandwidth(0)
{
RS_STACK_MUTEX(mSslMtx);
pqissl(nullptr, parent, lm), tou_bio(nullptr),
mConnectPeriod(PQI_SSLUDP_DEF_CONN_PERIOD), mConnectFlags(0),
mConnectBandwidth(0), mConnectProxyAddr(), mConnectSrcAddr() {}
sockaddr_storage_clear(remote_addr);
sockaddr_storage_clear(mConnectProxyAddr);
sockaddr_storage_clear(mConnectSrcAddr);
}
/*
* No need to call reset() here as it will be called in the upper class,
* pqissludp::reset_locked() just reset a few members to 0 that (that will be
* deleted anyway when this destructor ends), so pqissl::reset_locked() that is
* called by in parent class destructor will do just fine.
*
* DISCLAIMER: do not double free tou_bio here, as it is implicitely freed
* by SSL_free(...) in pqissl::reset()
*/
pqissludp::~pqissludp() = default;
pqissludp::~pqissludp()
{
rslog(RSL_ALERT, pqissludpzone,
"pqissludp::~pqissludp -> destroying pqissludp");
/* must call reset from here, so that the
* virtual functions will still work.
* -> as they stop working in base class destructor.
*
* This means that reset() will be called twice, but this should
* be harmless.
*/
stoplistening(); /* remove from p3proxy listenqueue */
reset();
RS_STACK_MUTEX(mSslMtx);
if (tou_bio) // this should be in the reset?
BIO_free(tou_bio);
}
int pqissludp::reset_locked()
{
/* reset for next time.*/
@ -203,7 +187,7 @@ int pqissludp::Initiate_Connection()
out += sockaddr_storage_tostring(remote_addr);
out += " ";
if (sslmode)
if (sslmode == PQISSL_ACTIVE)
{
out += "ACTIVE Connect (SSL_Connect)";
}
@ -430,30 +414,6 @@ int pqissludp::net_internal_SSL_set_fd(SSL *ssl, int fd)
return 1;
}
int pqissludp::net_internal_fcntl_nonblock(int /*fd*/)
{
rslog(RSL_DEBUG_BASIC, pqissludpzone,
"pqissludp::net_internal_fcntl_nonblock()");
return 0;
}
// listen fns call the udpproxy.
int pqissludp::listen()
{
rslog(RSL_DEBUG_BASIC, pqissludpzone, "pqissludp::listen() (NULLOP)");
return 1; //udpproxy->listen();
}
int pqissludp::stoplistening()
{
rslog(RSL_DEBUG_BASIC, pqissludpzone, "pqissludp::stoplistening() (NULLOP)");
return 1; //udpproxy->stoplistening();
}
bool pqissludp::connect_parameter(uint32_t type, uint32_t value)
{
{

View File

@ -3,7 +3,8 @@
* *
* libretroshare: retroshare core library *
* *
* Copyright 2004-2006 by Robert Fernie. *
* Copyright (C) 2004-2006 Robert Fernie <retroshare@lunamutt.com> *
* Copyright (C) 2015-2019 Gioacchino Mazzurco <gio@altermundi.net> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
@ -19,42 +20,31 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
#ifndef MRK_PQI_SSL_UDP_HEADER
#define MRK_PQI_SSL_UDP_HEADER
// operating system specific network header.
#include "pqi/pqinetwork.h"
#pragma once
#include <string>
#include <map>
#include "pqi/pqissl.h"
#include "pqi/pqinetwork.h"
#include "util/rsdebug.h"
/* So pqissludp is the special firewall breaking protocol.
* This class will implement the basics of streaming
* ssl over udp using a tcponudp library....
* and a small extension to ssl.
*/
class pqissludp;
class cert;
/* This provides a NetBinInterface, which is
* primarily inherited from pqissl.
* fns declared here are different -> all others are identical.
/**
* @brief pqissludp is the special NAT traversal protocol.
* This class will implement the basics of streaming ssl over udp using a
* tcponudp library.
* It provides a NetBinInterface, which is primarily inherited from pqissl.
* Some methods are override all others are identical.
*/
class pqissludp: public pqissl
{
public:
pqissludp(PQInterface *parent, p3LinkMgr *lm);
~pqissludp() override;
virtual ~pqissludp();
// NetInterface.
// listen fns call the udpproxy.
virtual int listen();
virtual int stoplistening();
int listen() override { return 1; }
int stoplistening() override { return 1; }
virtual bool connect_parameter(uint32_t type, uint32_t value);
virtual bool connect_additional_address(uint32_t type, const struct sockaddr_storage &addr);
@ -83,20 +73,18 @@ protected:
*/
virtual int net_internal_close(int fd);
virtual int net_internal_SSL_set_fd(SSL *ssl, int fd);
virtual int net_internal_fcntl_nonblock(int fd);
virtual int net_internal_fcntl_nonblock(int /*fd*/) { return 0; }
private:
BIO *tou_bio; // specific to ssludp.
//long listen_checktime;
uint32_t mConnectPeriod;
uint32_t mConnectFlags;
uint32_t mConnectBandwidth;
struct sockaddr_storage mConnectProxyAddr;
struct sockaddr_storage mConnectSrcAddr;
};
#endif // MRK_PQI_SSL_UDP_HEADER
RS_SET_CONTEXT_DEBUG_LEVEL(2)
};

View File

@ -39,6 +39,7 @@ extern RsHistory *rsHistory;
static const uint32_t RS_HISTORY_TYPE_PUBLIC = 0 ;
static const uint32_t RS_HISTORY_TYPE_PRIVATE = 1 ;
static const uint32_t RS_HISTORY_TYPE_LOBBY = 2 ;
static const uint32_t RS_HISTORY_TYPE_DISTANT = 3 ;
class HistoryMsg
{

View File

@ -39,14 +39,23 @@
</size>
</property>
<layout class="QGridLayout">
<property name="margin">
<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>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="titleBarFrame">
<widget class="QFrame" name="toolBarFrame">
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
@ -54,7 +63,16 @@
<enum>QFrame::Sunken</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="margin">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item>
@ -160,6 +178,11 @@
</layout>
</widget>
<customwidgets>
<customwidget>
<class>StyledLabel</class>
<extends>QLabel</extends>
<header>gui/common/StyledLabel.h</header>
</customwidget>
<customwidget>
<class>RSTreeWidget</class>
<extends>QTreeWidget</extends>
@ -171,11 +194,6 @@
<header>gui/common/RSTabWidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>StyledLabel</class>
<extends>QLabel</extends>
<header>gui/common/StyledLabel.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="FeedReader_images.qrc"/>

View File

@ -62,7 +62,7 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="icons.qrc">:/icons/png/chat-lobbies.png</pixmap>
<pixmap resource="icons.qrc">:/icons/png/chats.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>

View File

@ -62,7 +62,7 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="../icons.qrc">:/icons/png/filesharing.png</pixmap>
<pixmap resource="../icons.qrc">:/icons/png/fileshare.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>

View File

@ -62,7 +62,7 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="icons.qrc">:/icons/png/network.png</pixmap>
<pixmap resource="icons.qrc">:/icons/png/network2.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>

View File

@ -17,6 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
#include <QDateTime>
#include "IdDetailsDialog.h"
#include "ui_IdDetailsDialog.h"
@ -53,6 +54,7 @@ IdDetailsDialog::IdDetailsDialog(const RsGxsGroupId& id, QWidget *parent) :
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_GpgId);
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_GpgName);
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_Type);
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_Created);
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->ownOpinion_CB);
mStateHelper->addWidget(IDDETAILSDIALOG_IDDETAILS, ui->overallOpinion_TF);
@ -63,6 +65,7 @@ IdDetailsDialog::IdDetailsDialog(const RsGxsGroupId& id, QWidget *parent) :
mStateHelper->addLoadPlaceholder(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_KeyId);
mStateHelper->addLoadPlaceholder(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_GpgId);
mStateHelper->addLoadPlaceholder(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_Type);
mStateHelper->addLoadPlaceholder(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_Created);
mStateHelper->addLoadPlaceholder(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
mStateHelper->addLoadPlaceholder(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_GpgName);
@ -70,6 +73,7 @@ IdDetailsDialog::IdDetailsDialog(const RsGxsGroupId& id, QWidget *parent) :
mStateHelper->addClear(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_KeyId);
mStateHelper->addClear(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_GpgId);
mStateHelper->addClear(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_Type);
mStateHelper->addClear(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_Created);
mStateHelper->addClear(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
mStateHelper->addClear(IDDETAILSDIALOG_IDDETAILS, ui->lineEdit_GpgName);
@ -80,7 +84,7 @@ IdDetailsDialog::IdDetailsDialog(const RsGxsGroupId& id, QWidget *parent) :
Settings->loadWidgetInformation(this);
ui->headerFrame->setHeaderImage(QPixmap(":/images/identity/identity_64.png"));
ui->headerFrame->setHeaderImage(QPixmap(":/icons/png/person.png"));
ui->headerFrame->setHeaderText(tr("Person Details"));
//connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(changeGroup()));
@ -178,8 +182,10 @@ void IdDetailsDialog::insertIdDetails(uint32_t token)
ui->autoBanIdentities_CB->setVisible(!data.mPgpId.isNull()) ;
ui->banoption_label->setVisible(!data.mPgpId.isNull()) ;
time_t now = time(NULL) ;
ui->lineEdit_LastUsed->setText(getHumanReadableDuration(now - data.mLastUsageTS)) ;
ui->lineEdit_Created->setText(QDateTime::fromMSecsSinceEpoch(qint64(1000)*data.mMeta.mPublishTs).toString(Qt::SystemLocaleShortDate));
time_t now = time(NULL) ;
ui->lineEdit_LastUsed->setText(getHumanReadableDuration(now - data.mLastUsageTS)) ;
QPixmap pixmap;

View File

@ -17,7 +17,7 @@
<iconset resource="../images.qrc">
<normaloff>:/images/logo/logo_32.png</normaloff>:/images/logo/logo_32.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
@ -30,6 +30,9 @@
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="HeaderFrame" name="headerFrame">
<property name="frameShape">
@ -41,7 +44,7 @@
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>9</number>
</property>
@ -52,235 +55,99 @@
<number>9</number>
</property>
<property name="bottomMargin">
<number>0</number>
<number>9</number>
</property>
<item>
<widget class="QGroupBox" name="detailsGroupBox">
<property name="title">
<string>Identity Info</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0" rowspan="2">
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>6</number>
<layout class="QGridLayout" name="gridLayout">
<item row="11" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="topMargin">
<number>6</number>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item row="9" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Overall:</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Friends votes:</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Your opinion:</string>
</property>
</widget>
</item>
<item row="7" column="1" colspan="2">
<widget class="QComboBox" name="ownOpinion_CB">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<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:'MS Shell Dlg 2'; font-size:8pt; 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;span style=&quot; font-family:'Sans'; font-size:9pt;&quot;&gt;Your own opinion about an identity rules the visibility of that identity for yourself and your friend nodes. Your own opinion is shared among friends and used to compute a reputation score: If your opinion about an identity is neutral, the reputation score is the average of your friend's opinions. If not, your own opinion gives the score.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:9pt;&quot;&gt;The overall score is used in chat lobbies, forums and channels to decide on the actions to take for each specific identity. When the overall score is lower than -0.6, the identity is banned, which prevents all messages and forums/channels authored by this identity to be forwarded, both ways. Some forums also have special anti-spam flags that require a higher reputation level, making them more sensitive to bad opinions. Banned identities gradually lose their activity and eventually disappear (after 30 days). &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Negative</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/thumbs-down.png</normaloff>:/icons/png/thumbs-down.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>Neutral</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/thumbs-neutral.png</normaloff>:/icons/png/thumbs-neutral.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>Positive</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/thumbs-up.png</normaloff>:/icons/png/thumbs-up.png</iconset>
</property>
</item>
</widget>
</item>
<item row="8" column="1" colspan="2">
<widget class="QLineEdit" name="neighborNodesOpinion_TF">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Average opinion of neighbor nodes about this identity. Negative is bad,&lt;/p&gt;&lt;p&gt;positive is good. Zero is neutral.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="1" colspan="2">
<widget class="QLineEdit" name="overallOpinion_TF">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Overall reputation score, accounting for yours and your friends'.&lt;/p&gt;&lt;p&gt;Negative is bad, positive is good. Zero is neutral. If the score is too low,&lt;/p&gt;&lt;p&gt;the identity is flagged as bad, and will be filtered out in forums, chat lobbies,&lt;/p&gt;&lt;p&gt;channels, etc.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="PgpId_LB">
<property name="text">
<string>Owner node ID :</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="PgpName_LB">
<property name="text">
<string>Owner node name :</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Identity name :</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Identity ID :</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Last used:</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="banoption_label">
<property name="text">
<string>Ban-option:</string>
</property>
</widget>
</item>
<item row="10" column="1" colspan="2">
<widget class="QCheckBox" name="autoBanIdentities_CB">
<property name="text">
<string>Auto-Ban all identities signed by the same node</string>
</property>
</widget>
</item>
<item row="6" column="1" colspan="2">
<widget class="QLineEdit" name="lineEdit_LastUsed">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="1" colspan="2">
<widget class="QLineEdit" name="lineEdit_GpgName">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2">
<widget class="QLineEdit" name="lineEdit_GpgId">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2">
<widget class="QLineEdit" name="lineEdit_Type"/>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="lineEdit_KeyId">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QLineEdit" name="lineEdit_Nickname">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</spacer>
</item>
<item row="1" column="1">
<item row="10" column="0">
<widget class="QLabel" name="banoption_label">
<property name="text">
<string>Ban-option:</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="overallOpinion_TF">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Overall reputation score, accounting for yours and your friends'.&lt;/p&gt;&lt;p&gt;Negative is bad, positive is good. Zero is neutral. If the score is too low,&lt;/p&gt;&lt;p&gt;the identity is flagged as bad, and will be filtered out in forums, chat lobbies,&lt;/p&gt;&lt;p&gt;channels, etc.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QCheckBox" name="autoBanIdentities_CB">
<property name="text">
<string>Auto-Ban all identities signed by the same node</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Overall:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Identity ID :</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_Type"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="PgpId_LB">
<property name="text">
<string>Owner node ID :</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_GpgId">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2" rowspan="12">
<layout class="QGridLayout" name="gridLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
@ -426,25 +293,172 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</item>
<item row="3" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
<item row="4" column="0">
<widget class="QLabel" name="PgpName_LB">
<property name="text">
<string>Owner node name :</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_GpgName">
<property name="enabled">
<bool>true</bool>
</property>
</spacer>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Last used:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lineEdit_LastUsed">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Identity name :</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_Nickname">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_KeyId">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Friends votes:</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="ownOpinion_CB">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<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:'MS Shell Dlg 2'; font-size:8pt; 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;span style=&quot; font-family:'Sans'; font-size:9pt;&quot;&gt;Your own opinion about an identity rules the visibility of that identity for yourself and your friend nodes. Your own opinion is shared among friends and used to compute a reputation score: If your opinion about an identity is neutral, the reputation score is the average of your friend's opinions. If not, your own opinion gives the score.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:9pt;&quot;&gt;The overall score is used in chat lobbies, forums and channels to decide on the actions to take for each specific identity. When the overall score is lower than -0.6, the identity is banned, which prevents all messages and forums/channels authored by this identity to be forwarded, both ways. Some forums also have special anti-spam flags that require a higher reputation level, making them more sensitive to bad opinions. Banned identities gradually lose their activity and eventually disappear (after 30 days). &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Negative</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/thumbs-down.png</normaloff>:/icons/png/thumbs-down.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>Neutral</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/thumbs-neutral.png</normaloff>:/icons/png/thumbs-neutral.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>Positive</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/thumbs-up.png</normaloff>:/icons/png/thumbs-up.png</iconset>
</property>
</item>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Your opinion:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="neighborNodesOpinion_TF">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Average opinion of neighbor nodes about this identity. Negative is bad,&lt;/p&gt;&lt;p&gt;positive is good. Zero is neutral.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit_Created">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Created :</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<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>
</layout>
</item>
<item row="3" column="0">
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>9</number>
@ -483,19 +497,6 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</item>
<item row="2" column="0">
<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>
</layout>
</widget>
<customwidgets>

View File

@ -2019,7 +2019,9 @@ QString IdDialog::createUsageString(const RsIdentityUsage& u) const
case RsIdentityUsage::CHAT_LOBBY_MSG_VALIDATION: // Chat lobby msgs are signed, so each time one comes, or a chat lobby event comes, a signature verificaiton happens.
{
ChatId id = ChatId(ChatLobbyId(u.mAdditionalId));
RetroShareLink l = RetroShareLink::createChatRoom(id, QString::fromStdString(id.toStdString()));
ChatLobbyInfo linfo ;
rsMsgs->getChatLobbyInfo(ChatLobbyId(u.mAdditionalId),linfo);
RetroShareLink l = RetroShareLink::createChatRoom(id, QString::fromUtf8(linfo.lobby_name.c_str()));
return tr("Message in chat room %1").arg(l.toHtml()) ;
}
case RsIdentityUsage::GLOBAL_ROUTER_SIGNATURE_CHECK: // Global router message validation

View File

@ -80,7 +80,7 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="../icons.qrc">:/icons/png/people.png</pixmap>
<pixmap resource="../icons.qrc">:/icons/png/people2.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>

View File

@ -59,7 +59,7 @@
</size>
</property>
<property name="pixmap">
<pixmap resource="icons.qrc">:/icons/png/newsfeed.png</pixmap>
<pixmap resource="icons.qrc">:/icons/png/newsfeed2.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>

View File

@ -99,7 +99,7 @@ QString PostedDialog::icon(IconType type)
{
switch (type) {
case ICON_NAME:
return ":/icons/png/posted.png";
return ":/icons/png/postedlinks.png";
case ICON_NEW:
return ":/icons/png/add.png";
case ICON_YOUR_GROUP:
@ -109,7 +109,7 @@ QString PostedDialog::icon(IconType type)
case ICON_POPULAR_GROUP:
return "";
case ICON_OTHER_GROUP:
return ":/icons/png/feed-other.png";
return "";
case ICON_SEARCH:
return ":/images/find.png";
case ICON_DEFAULT:

View File

@ -306,7 +306,7 @@ void PostedItem::fill()
urlstr += messageName();
urlstr += QString(" </span></a>");
QString siteurl = url.scheme() + "://" + url.host();
QString siteurl = url.toEncoded();
sitestr = QString("<a href=\"%1\" ><span style=\" text-decoration: underline; color:#0079d3;\"> %2 </span></a>").arg(siteurl).arg(siteurl);
ui->titleLabel->setText(urlstr);

View File

@ -407,6 +407,9 @@
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
@ -539,8 +542,8 @@
<string>Set as read and remove item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/cancel.png</normaloff>:/images/cancel.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/correct.png</normaloff>:/icons/png/correct.png</iconset>
</property>
</widget>
</item>
@ -559,8 +562,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -685,6 +688,7 @@
<resources>
<include location="Posted_images.qrc"/>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -124,6 +124,13 @@ QIcon PostedListWidget::groupIcon()
return QIcon();
}
void PostedListWidget::groupIdChanged()
{
mPostIndex = 0;
GxsMessageFramePostWidget::groupIdChanged();
updateShowText();
}
/*****************************************************************************************/
// Overloaded from FeedHolder.
QScrollArea *PostedListWidget::getScrollArea()

View File

@ -44,6 +44,7 @@ public:
/* GxsMessageFrameWidget */
virtual QIcon groupIcon();
virtual void groupIdChanged();
/* FeedHolder */
virtual QScrollArea *getScrollArea();

View File

@ -363,8 +363,8 @@ void ChatWidget::init(const ChatId &chat_id, const QString &title)
QString customStateString = QString::fromUtf8(rsMsgs->getCustomStateString(chatId.toPeerId()).c_str());
updatePeersCustomStateString(QString::fromStdString(chatId.toPeerId().toStdString()), customStateString);
} else if (chatType() == CHATTYPE_DISTANT){
hist_chat_type = RS_HISTORY_TYPE_PRIVATE ;
messageCount = Settings->getPrivateChatHistoryCount();
hist_chat_type = RS_HISTORY_TYPE_DISTANT ;
messageCount = Settings->getDistantChatHistoryCount();
} else if(chatId.isBroadcast()){
hist_chat_type = RS_HISTORY_TYPE_PUBLIC;
messageCount = Settings->getPublicChatHistoryCount();
@ -435,8 +435,8 @@ ChatWidget::ChatType ChatWidget::chatType()
void ChatWidget::blockSending(QString msg)
{
#ifndef RS_ASYNC_CHAT
sendingBlocked = true;
ui->sendButton->setEnabled(false);
// sendingBlocked = true;
// ui->sendButton->setEnabled(false);
#endif
ui->sendButton->setToolTip(msg);
}

View File

@ -303,7 +303,7 @@ border-image: url(:/images/closepressed.png)
</widget>
</item>
<item>
<widget class="QFrame" name="toolBarFrame">
<widget class="QFrame" name="toolBarFrameTop">
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>543</width>
<height>201</height>
<height>208</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_1">
@ -31,70 +31,6 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>254</red>
<green>246</green>
<blue>222</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>254</red>
<green>246</green>
<blue>222</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>254</red>
<green>246</green>
<blue>222</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>254</red>
<green>246</green>
<blue>222</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>240</red>
<green>240</green>
<blue>240</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>254</red>
<green>246</green>
<blue>222</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
@ -201,8 +137,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -406,20 +342,21 @@
</layout>
</widget>
<customwidgets>
<customwidget>
<class>StyledLabel</class>
<extends>QLabel</extends>
<header>gui/common/StyledLabel.h</header>
</customwidget>
<customwidget>
<class>AvatarWidget</class>
<extends>QLabel</extends>
<header>gui/common/AvatarWidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>StyledLabel</class>
<extends>QLabel</extends>
<header>gui/common/StyledLabel.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -176,13 +176,13 @@ void GxsChannelGroupItem::doExpand(bool open)
if (open)
{
ui->expandFrame->show();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
ui->expandButton->setToolTip(tr("Hide"));
}
else
{
ui->expandFrame->hide();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
ui->expandButton->setToolTip(tr("Expand"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>618</width>
<height>157</height>
<height>161</height>
</rect>
</property>
<layout class="QGridLayout">
@ -125,7 +125,10 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="../images.qrc">:/images/channels.png</pixmap>
<pixmap resource="../icons.qrc">:/icons/png/channel.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
@ -153,6 +156,12 @@
</item>
<item>
<widget class="QLabel" name="nameLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">name</string>
</property>
@ -178,6 +187,25 @@
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="subscribeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Subscribe to Channel</string>
</property>
<property name="text">
<string>Subscribe</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
@ -200,28 +228,8 @@
<enum>Qt::NoFocus</enum>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="subscribeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Subscribe to Channel</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/directoryadd_24x24_shadow.png</normaloff>:/images/directoryadd_24x24_shadow.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/copy.png</normaloff>:/icons/png/copy.png</iconset>
</property>
</widget>
</item>
@ -240,8 +248,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -260,8 +268,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -329,6 +337,7 @@
</layout>
</widget>
<resources>
<include location="../icons.qrc"/>
<include location="../images.qrc"/>
</resources>
<connections/>

View File

@ -389,12 +389,26 @@ void GxsChannelPostItem::fill()
mInFill = true;
QString title;
float f = QFontMetricsF(font()).height()/14.0 ;
if(mPost.mThumbnail.mData != NULL)
{
QPixmap thumbnail;
QPixmap thumbnail;
GxsIdDetails::loadPixmapFromData(mPost.mThumbnail.mData, mPost.mThumbnail.mSize, thumbnail,GxsIdDetails::ORIGINAL);
// Wiping data - as its been passed to thumbnail.
if( thumbnail.width() < 90 ){
ui->logoLabel->setMaximumSize(82*f,108*f);
}
else if( thumbnail.width() < 109 ){
ui->logoLabel->setMinimumSize(108*f,108*f);
ui->logoLabel->setMaximumSize(108*f,108*f);
}
else{
ui->logoLabel->setMinimumSize(156*f,108*f);
ui->logoLabel->setMaximumSize(156*f,108*f);
}
ui->logoLabel->setPixmap(thumbnail);
}
@ -687,7 +701,7 @@ void GxsChannelPostItem::doExpand(bool open)
if (open)
{
ui->expandFrame->show();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
ui->expandButton->setToolTip(tr("Hide"));
readToggled(false);
@ -695,7 +709,7 @@ void GxsChannelPostItem::doExpand(bool open)
else
{
ui->expandFrame->hide();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
ui->expandButton->setToolTip(tr("Expand"));
}

View File

@ -51,9 +51,15 @@
<layout class="QHBoxLayout" name="mainTopHLayout">
<item>
<widget class="QLabel" name="logoLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>158</width>
<width>82</width>
<height>108</height>
</size>
</property>
@ -303,8 +309,8 @@
<string>Download</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/download16.png</normaloff>:/images/download16.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/download.png</normaloff>:/icons/png/download.png</iconset>
</property>
<property name="autoExclusive">
<bool>false</bool>
@ -320,8 +326,8 @@
<string>Play</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/player_play.png</normaloff>:/images/player_play.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/play.png</normaloff>:/icons/png/play.png</iconset>
</property>
</widget>
</item>
@ -330,6 +336,10 @@
<property name="text">
<string>Comments</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/comment.png</normaloff>:/icons/png/comment.png</iconset>
</property>
</widget>
</item>
<item>
@ -367,8 +377,8 @@
<string>Copy RetroShare Link</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/copy.png</normaloff>:/icons/png/copy.png</iconset>
</property>
</widget>
</item>
@ -386,9 +396,8 @@
<property name="toolTip">
<string>Unsubscribe From Channel</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/mail_delete.png</normaloff>:/images/mail_delete.png</iconset>
<property name="text">
<string>Unsubscribe</string>
</property>
</widget>
</item>
@ -407,8 +416,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -427,8 +436,8 @@
<string>Set as read and remove item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/cancel.png</normaloff>:/images/cancel.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/correct.png</normaloff>:/icons/png/correct.png</iconset>
</property>
</widget>
</item>
@ -447,8 +456,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -558,6 +567,7 @@
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -132,9 +132,9 @@ void GxsForumGroupItem::fill()
ui->descLabel->setText(QString::fromUtf8(mGroup.mDescription.c_str()));
if (IS_GROUP_PUBLISHER(mGroup.mMeta.mSubscribeFlags)) {
ui->forumlogo_label->setPixmap(QPixmap(":/images/konv_message64.png"));
ui->forumlogo_label->setPixmap(QPixmap(":/icons/png/forums.png"));
} else {
ui->forumlogo_label->setPixmap(QPixmap(":/images/konversation64.png"));
ui->forumlogo_label->setPixmap(QPixmap(":/icons/png/forums-default.png"));
}
if (IS_GROUP_SUBSCRIBED(mGroup.mMeta.mSubscribeFlags)) {
@ -174,13 +174,13 @@ void GxsForumGroupItem::doExpand(bool open)
if (open)
{
ui->expandFrame->show();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
ui->expandButton->setToolTip(tr("Hide"));
}
else
{
ui->expandFrame->hide();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
ui->expandButton->setToolTip(tr("Expand"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>618</width>
<height>157</height>
<height>161</height>
</rect>
</property>
<layout class="QGridLayout">
@ -125,7 +125,10 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="../images.qrc">:/images/konversation64.png</pixmap>
<pixmap resource="../icons.qrc">:/icons/png/forums-default.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
@ -153,6 +156,12 @@
</item>
<item>
<widget class="QLabel" name="nameLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">name</string>
</property>
@ -178,6 +187,25 @@
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="subscribeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Subscribe to Forum</string>
</property>
<property name="text">
<string>Subscribe</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
@ -200,28 +228,8 @@
<enum>Qt::NoFocus</enum>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="subscribeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Subscribe to Forum</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/directoryadd_24x24_shadow.png</normaloff>:/images/directoryadd_24x24_shadow.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/copy.png</normaloff>:/icons/png/copy.png</iconset>
</property>
</widget>
</item>
@ -240,8 +248,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -260,8 +268,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -330,6 +338,7 @@
</widget>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -28,9 +28,12 @@
#include "FeedHolder.h"
#include "gui/RetroShareLink.h"
#include "gui/gxs/GxsIdDetails.h"
#include "util/HandleRichText.h"
#include "util/DateTime.h"
#include <retroshare/rsidentity.h>
#include <iostream>
/****
@ -279,9 +282,9 @@ void GxsForumMsgItem::fill()
}
if (IS_GROUP_PUBLISHER(mGroup.mMeta.mSubscribeFlags)) {
ui->iconLabel->setPixmap(QPixmap(":/images/konv_message64.png"));
ui->iconLabel->setPixmap(QPixmap(":/icons/png/forums.png"));
} else {
ui->iconLabel->setPixmap(QPixmap(":/images/konversation64.png"));
ui->iconLabel->setPixmap(QPixmap(":/icons/png/forums-default.png"));
}
if (!mIsHome) {
@ -289,6 +292,16 @@ void GxsForumMsgItem::fill()
mCloseOnRead = true;
}
}
RsIdentityDetails idDetails ;
rsIdentity->getIdDetails(mMessage.mMeta.mAuthorId,idDetails);
QPixmap pixmap ;
if(idDetails.mAvatar.mSize == 0 || !GxsIdDetails::loadPixmapFromData(idDetails.mAvatar.mData, idDetails.mAvatar.mSize, pixmap,GxsIdDetails::SMALL))
pixmap = GxsIdDetails::makeDefaultIcon(mMessage.mMeta.mAuthorId,GxsIdDetails::SMALL);
ui->avatar->setPixmap(pixmap);
ui->nameLabel->setId(mMessage.mMeta.mAuthorId);
@ -322,6 +335,16 @@ void GxsForumMsgItem::fill()
ui->parentMsgLabel->setText(RsHtml().formatText(NULL, QString::fromUtf8(mParentMessage.mMsg.c_str()), RSHTML_FORMATTEXT_EMBED_SMILEYS | RSHTML_FORMATTEXT_EMBED_LINKS));
ui->parentNameLabel->setId(mParentMessage.mMeta.mAuthorId);
RsIdentityDetails idDetails ;
rsIdentity->getIdDetails(mParentMessage.mMeta.mAuthorId,idDetails);
QPixmap pixmap ;
if(idDetails.mAvatar.mSize == 0 || !GxsIdDetails::loadPixmapFromData(idDetails.mAvatar.mData, idDetails.mAvatar.mSize, pixmap,GxsIdDetails::SMALL))
pixmap = GxsIdDetails::makeDefaultIcon(mParentMessage.mMeta.mAuthorId,GxsIdDetails::SMALL);
ui->parentAvatar->setPixmap(pixmap);
// if (rsPeers->getPeerName(msgParent.srcId) !="")
// {
@ -369,7 +392,7 @@ void GxsForumMsgItem::doExpand(bool open)
if (open)
{
ui->expandFrame->show();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
ui->expandButton->setToolTip(tr("Hide"));
if (!mParentMessage.mMeta.mMsgId.isNull()) {
@ -382,7 +405,7 @@ void GxsForumMsgItem::doExpand(bool open)
{
ui->expandFrame->hide();
ui->parentFrame->hide();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
ui->expandButton->setToolTip(tr("Expand"));
}

View File

@ -77,9 +77,95 @@
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout">
<item row="1" column="0" colspan="2">
<layout class="QHBoxLayout">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" rowspan="2">
<widget class="QLabel" name="iconLabel">
<property name="minimumSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="pixmap">
<pixmap resource="../icons.qrc">:/icons/png/forums-default.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="titleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Forum Name</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>358</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="timestamplabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Timestamp</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="font">
@ -110,16 +196,13 @@
</widget>
</item>
<item>
<spacer>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<width>168</width>
<height>20</height>
</size>
</property>
@ -139,9 +222,8 @@
<property name="toolTip">
<string>Unsubscribe To Forum</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/mail_delete.png</normaloff>:/images/mail_delete.png</iconset>
<property name="text">
<string>Unsubscribe</string>
</property>
</widget>
</item>
@ -160,8 +242,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -180,8 +262,8 @@
<string>Set as read and remove item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/cancel.png</normaloff>:/images/cancel.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/correct.png</normaloff>:/icons/png/correct.png</iconset>
</property>
</widget>
</item>
@ -200,238 +282,13 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QGridLayout">
<item row="0" column="0">
<widget class="QLabel" name="iconLabel">
<property name="minimumSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="pixmap">
<pixmap resource="../images.qrc">:/images/konversation64.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="titleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Forum Name</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1">
<layout class="QGridLayout">
<item row="0" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>358</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1" colspan="2">
<widget class="QLabel" name="timestamplabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Timestamp</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="1" column="0" colspan="4">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>518</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="3" column="0" colspan="2">
<widget class="QFrame" name="expandFrame">
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout">
<item row="0" column="0" rowspan="3">
<widget class="AvatarWidget" name="avatar">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="GxsIdLabel" name="nameLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Name</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Subject: </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="subLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Message is about ???</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>27</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2" rowspan="2">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="msgLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Current Message..</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QFrame" name="parentFrame">
<property name="frameShape">
@ -589,6 +446,131 @@
</layout>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QFrame" name="expandFrame">
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout">
<item row="0" column="0" rowspan="3">
<widget class="AvatarWidget" name="avatar">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="GxsIdLabel" name="nameLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Name</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Subject: </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="subLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Message is about ???</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>27</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2" rowspan="2">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="msgLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">Current Message..</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
@ -609,6 +591,7 @@
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -236,7 +236,7 @@ void MsgItem::doExpand(bool open)
if (open)
{
expandFrame->show();
expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
expandButton->setToolTip(tr("Hide"));
mCloseOnRead = false;
@ -246,7 +246,7 @@ void MsgItem::doExpand(bool open)
else
{
expandFrame->hide();
expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
expandButton->setToolTip(tr("Expand"));
}

View File

@ -31,70 +31,6 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>52</red>
<green>177</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>51</red>
<green>174</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>52</red>
<green>177</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>51</red>
<green>174</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>240</red>
<green>240</green>
<blue>240</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>51</red>
<green>174</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
@ -215,7 +151,7 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="replyButton">
<widget class="QPushButton" name="replyButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
@ -229,12 +165,6 @@
<iconset resource="../images.qrc">
<normaloff>:/images/mail_reply.png</normaloff>:/images/mail_reply.png</iconset>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
<property name="autoRaise">
<bool>false</bool>
</property>
</widget>
</item>
<item>
@ -265,8 +195,8 @@
<string>Delete Message</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/mail_delete.png</normaloff>:/images/mail_delete.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/cancel.png</normaloff>:/icons/png/cancel.png</iconset>
</property>
</widget>
</item>
@ -285,8 +215,8 @@
<string>Play Media</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/startall.png</normaloff>:/images/startall.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/play.png</normaloff>:/icons/png/play.png</iconset>
</property>
</widget>
</item>
@ -305,8 +235,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -325,8 +255,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -493,7 +423,7 @@
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../../../../RetroShare/RetroShare/retroshare-gui/src/gui/images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -236,13 +236,13 @@ void PeerItem::doExpand(bool open)
if (open)
{
expandFrame->show();
expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
expandButton->setToolTip(tr("Hide"));
}
else
{
expandFrame->hide();
expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
expandButton->setToolTip(tr("Expand"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>476</width>
<height>250</height>
<height>262</height>
</rect>
</property>
<layout class="QGridLayout" name="PeerItemGLayout">
@ -294,8 +294,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -314,8 +314,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -581,6 +581,7 @@
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -189,13 +189,13 @@ void PostedGroupItem::doExpand(bool open)
if (open)
{
ui->expandFrame->show();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
ui->expandButton->setToolTip(tr("Hide"));
}
else
{
ui->expandFrame->hide();
ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
ui->expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
ui->expandButton->setToolTip(tr("Expand"));
}

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>618</width>
<height>157</height>
<height>161</height>
</rect>
</property>
<layout class="QGridLayout">
@ -153,6 +153,12 @@
</item>
<item>
<widget class="QLabel" name="nameLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">name</string>
</property>
@ -178,6 +184,25 @@
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="subscribeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Subscribe to Posted</string>
</property>
<property name="text">
<string>Subscribe</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
@ -200,28 +225,8 @@
<enum>Qt::NoFocus</enum>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="subscribeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Subscribe to Posted</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/directoryadd_24x24_shadow.png</normaloff>:/images/directoryadd_24x24_shadow.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/copy.png</normaloff>:/icons/png/copy.png</iconset>
</property>
</widget>
</item>
@ -240,8 +245,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -260,8 +265,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -330,6 +335,8 @@
</widget>
<resources>
<include location="../images.qrc"/>
<include location="../Posted/Posted_images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -203,13 +203,13 @@ void SecurityIpItem::doExpand(bool open)
if (open)
{
ui->expandFrame->show();
ui->expandButton->setIcon(QIcon(":/images/edit_remove24.png"));
ui->expandButton->setIcon(QIcon(":/icons/png/up-arrow.png"));
ui->expandButton->setToolTip(tr("Hide"));
}
else
{
ui->expandFrame->hide();
ui->expandButton->setIcon(QIcon(":/images/edit_add24.png"));
ui->expandButton->setIcon(QIcon(":/icons/png/down-arrow.png"));
ui->expandButton->setToolTip(tr("Expand"));
}

View File

@ -11,7 +11,16 @@
</rect>
</property>
<layout class="QGridLayout">
<property name="margin">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item row="0" column="0">
@ -105,10 +114,19 @@
<item row="0" column="0">
<widget class="QFrame" name="headFrame">
<layout class="QGridLayout">
<property name="verticalSpacing">
<property name="leftMargin">
<number>0</number>
</property>
<property name="margin">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="0" column="0" rowspan="2">
@ -215,8 +233,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -235,8 +253,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -475,6 +493,7 @@
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -294,13 +294,13 @@ void SecurityItem::doExpand(bool open)
if (open)
{
expandFrame->show();
expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
expandButton->setIcon(QIcon(QString(":/icons/png/up-arrow.png")));
expandButton->setToolTip(tr("Hide"));
}
else
{
expandFrame->hide();
expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
expandButton->setIcon(QIcon(QString(":/icons/png/down-arrow.png")));
expandButton->setToolTip(tr("Expand"));
}

View File

@ -7,11 +7,20 @@
<x>0</x>
<y>0</y>
<width>763</width>
<height>241</height>
<height>246</height>
</rect>
</property>
<layout class="QGridLayout">
<property name="margin">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item row="0" column="0">
@ -102,10 +111,19 @@
<item row="0" column="0">
<widget class="QFrame" name="headFrame">
<layout class="QGridLayout">
<property name="verticalSpacing">
<property name="leftMargin">
<number>0</number>
</property>
<property name="margin">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="0" column="0" rowspan="2">
@ -362,8 +380,8 @@
<string>Expand</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/edit_add24.png</normaloff>:/images/edit_add24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/down-arrow.png</normaloff>:/icons/png/down-arrow.png</iconset>
</property>
</widget>
</item>
@ -382,8 +400,8 @@
<string>Remove Item</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/close_normal.png</normaloff>:/images/close_normal.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/svg/exit-red.svg</normaloff>:/icons/svg/exit-red.svg</iconset>
</property>
</widget>
</item>
@ -625,6 +643,7 @@
</customwidgets>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -718,6 +718,7 @@ void SubFileItem::mediatype()
/* check if the file is not a media file and change text */
playButton->setText(tr("Open"));
playButton->setToolTip(tr("Open File"));
playButton->setIcon(QIcon());
}
void SubFileItem::copyLink()

View File

@ -83,8 +83,8 @@
<string>Cancel Download</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/delete.png</normaloff>:/images/delete.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/cancel.png</normaloff>:/icons/png/cancel.png</iconset>
</property>
</widget>
</item>
@ -112,8 +112,8 @@
<string>Download</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/download.png</normaloff>:/images/download.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/download.png</normaloff>:/icons/png/download.png</iconset>
</property>
</widget>
</item>
@ -141,8 +141,8 @@
<string>Play</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/player_play.png</normaloff>:/images/player_play.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/play.png</normaloff>:/icons/png/play.png</iconset>
</property>
</widget>
</item>
@ -167,8 +167,8 @@
<string>Copy RetroShare Link</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/copy.png</normaloff>:/icons/png/copy.png</iconset>
</property>
</widget>
</item>
@ -242,6 +242,7 @@
</widget>
<resources>
<include location="../images.qrc"/>
<include location="../icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -19,6 +19,7 @@
*******************************************************************************/
#include "gui/gxs/GxsCommentDialog.h"
#include "gui/gxs/GxsCommentTreeWidget.h"
#include "ui_GxsCommentDialog.h"
#include <iostream>
@ -50,6 +51,7 @@ GxsCommentDialog::GxsCommentDialog(QWidget *parent, RsTokenService *token_servic
connect(ui->idChooser, SIGNAL(currentIndexChanged( int )), this, SLOT(voterSelectionChanged( int )));
connect(ui->idChooser, SIGNAL(idsLoaded()), this, SLOT(idChooserReady()));
connect(ui->commentButton, SIGNAL(clicked()), ui->treeWidget, SLOT(makeComment()));
connect(ui->sortBox, SIGNAL(currentIndexChanged(int)), this, SLOT(sortComments(int)));
// default sort method "HOT".

View File

@ -40,6 +40,32 @@
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="toolBarHLayout">
<item>
<widget class="QToolButton" name="commentButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Comment</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/comment.png</normaloff>:/icons/png/comment.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextBesideIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="sortBox">
<property name="toolTip">

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>600</width>
<height>633</height>
<height>563</height>
</rect>
</property>
<property name="windowTitle">
@ -51,6 +51,9 @@
<property name="topMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>3</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="groupBoxLogo">
<property name="title">
@ -64,7 +67,7 @@
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
<number>0</number>
</property>
<property name="rightMargin">
<number>4</number>
@ -213,159 +216,6 @@
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="distribGroupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Message Distribution</string>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="4">
<widget class="QRadioButton" name="typePublic">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Messages will spread way beyond your friend nodes, as long as people subscribe to the channel/forum/posted you're creating.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Public</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/network-puplic.png</normaloff>:/icons/png/network-puplic.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="typeGroup">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Messages will spread among Retroshare nodes that host one of the identities listed as member of the circle and who also subscribe the media. Only these nodes will be able to see that this forum/channel/posted media exists. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Restricted to Circle</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/circles.png</normaloff>:/icons/png/circles.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="typeLocal">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Messages will only be distributed to the selected subset of your friend nodes. They will not forward messages with each other, but only use your own node as a central hub to distribute them.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Restricted node group </string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/network.png</normaloff>:/icons/png/network.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="GroupChooser" name="localComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="2" column="3">
<spacer name="horizontalSpacer_4">
<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="1" column="3">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>68</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1" colspan="2">
<widget class="GxsCircleChooser" name="circleComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="1" rowspan="3">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QComboBox" name="filtercomboBox"/>
</item>
<item>
<widget class="FriendSelectionWidget" name="adminsList" native="true"/>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="FriendSelectionWidget" name="shareKeyList" native="true"/>
</item>
@ -601,6 +451,161 @@
</property>
</widget>
</item>
<item row="2" column="1" rowspan="2">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QComboBox" name="filtercomboBox"/>
</item>
<item>
<widget class="FriendSelectionWidget" name="adminsList" native="true"/>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QGroupBox" name="distribGroupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Message Distribution</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="topMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QRadioButton" name="typePublic">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Messages will spread way beyond your friend nodes, as long as people subscribe to the channel/forum/posted you're creating.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Public</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/network-puplic.png</normaloff>:/icons/png/network-puplic.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="typeGroup">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Messages will spread among Retroshare nodes that host one of the identities listed as member of the circle and who also subscribe the media. Only these nodes will be able to see that this forum/channel/posted media exists. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Restricted to Circle</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/circles.png</normaloff>:/icons/png/circles.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="GxsCircleChooser" name="circleComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="typeLocal">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Messages will only be distributed to the selected subset of your friend nodes. They will not forward messages with each other, but only use your own node as a central hub to distribute them.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Restricted node group </string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/network.png</normaloff>:/icons/png/network.png</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="GroupChooser" name="localComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1</width>
<height>25</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="showmode">

View File

@ -23,7 +23,7 @@
#include "gui/gxs/GxsGroupFrameDialog.h"
#define IMAGE_GXSCHANNELS ":/icons/png/channels.png"
#define IMAGE_GXSCHANNELS ":/icons/png/channel.png"
class GxsChannelDialog : public GxsGroupFrameDialog
{

View File

@ -99,11 +99,11 @@ QPixmap GxsChannelGroupDialog::serviceImage()
switch (mode())
{
case MODE_CREATE:
return QPixmap(":/icons/png/channels.png");
return QPixmap(":/icons/png/channel.png");
case MODE_SHOW:
return QPixmap(":/icons/png/channels.png");
return QPixmap(":/icons/png/channel.png");
case MODE_EDIT:
return QPixmap(":/icons/png/channels.png");
return QPixmap(":/icons/png/channel.png");
}
return QPixmap();

View File

@ -36,12 +36,12 @@ bool GxsChannelUserNotify::hasSetting(QString *name, QString *group)
QIcon GxsChannelUserNotify::getIcon()
{
return QIcon(":/icons/png/channels.png");
return QIcon(":/icons/png/channel.png");
}
QIcon GxsChannelUserNotify::getMainIcon(bool hasNew)
{
return hasNew ? QIcon(":/icons/png/channels-notify.png") : QIcon(":/icons/png/channels.png");
return hasNew ? QIcon(":/icons/png/channels-notify.png") : QIcon(":/icons/png/channel.png");
}
void GxsChannelUserNotify::iconClicked()

View File

@ -117,6 +117,8 @@ CreateGxsForumMsg::CreateGxsForumMsg(const RsGxsGroupId &fId, const RsGxsMessage
mForumCircleLoaded = false;
newMsg();
ui.hashGroupBox->hide();
#ifndef ENABLE_GENERATE
ui.generateCheckBox->hide();
@ -348,10 +350,13 @@ void CreateGxsForumMsg::checkLength()
RsHtml::optimizeHtml(ui.forumMessage, text);
std::wstring msg = text.toStdWString();
int charRemains = MAX_ALLOWED_GXS_MESSAGE_SIZE - msg.length();
if(charRemains >= 0)
if(charRemains >= 0) {
text = tr("It remains %1 characters after HTML conversion.").arg(charRemains);
else
ui.infoLabel->setStyleSheet("QLabel#infoLabel { }");
}else{
text = tr("Warning: This message is too big of %1 characters after HTML conversion.").arg((0-charRemains));
ui.infoLabel->setStyleSheet("QLabel#infoLabel {color: red; font: bold; }");
}
ui.buttonBox->button(QDialogButtonBox::Ok)->setToolTip(text);
ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(charRemains>=0);
ui.infoLabel->setText(text);
@ -506,6 +511,7 @@ void CreateGxsForumMsg::addFile()
QStringList files;
if (misc::getOpenFileNames(this, RshareSettings::LASTDIR_EXTRAFILE, tr("Add Extra File"), "", files)) {
ui.hashBox->addAttachments(files,RS_FILE_REQ_ANONYMOUS_ROUTING);
ui.hashGroupBox->show();
}
}
@ -542,6 +548,7 @@ void CreateGxsForumMsg::fileHashingFinished(QList<HashedFile> hashedFiles)
}
ui.forumMessage->setFocus( Qt::OtherFocusReason );
ui.hashGroupBox->hide();
}
void CreateGxsForumMsg::loadForumInfo(const uint32_t &token)

View File

@ -139,14 +139,17 @@
<enum>QFrame::Sunken</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>1</number>
<number>6</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
<number>6</number>
</property>
<property name="bottomMargin">
<number>1</number>
@ -163,8 +166,8 @@
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/add-share24.png</normaloff>:/images/add-share24.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/attach.png</normaloff>:/icons/png/attach.png</iconset>
</property>
<property name="iconSize">
<size>
@ -186,8 +189,8 @@
<string/>
</property>
<property name="icon">
<iconset resource="../emojione.qrc">
<normaloff>:/emojione/1F603.png</normaloff>:/emojione/1F603.png</iconset>
<iconset resource="../icons.qrc">
<normaloff>:/icons/png/smiley.png</normaloff>:/icons/png/smiley.png</iconset>
</property>
<property name="iconSize">
<size>

View File

@ -56,7 +56,10 @@ void RsGxsForumModel::preMods()
}
void RsGxsForumModel::postMods()
{
emit dataChanged(createIndex(0,0,(void*)NULL), createIndex(0,COLUMN_THREAD_NB_COLUMNS-1,(void*)NULL));
if(mTreeMode == TREE_MODE_FLAT)
emit dataChanged(createIndex(0,0,(void*)NULL), createIndex(mPosts.size(),COLUMN_THREAD_NB_COLUMNS-1,(void*)NULL));
else
emit dataChanged(createIndex(0,0,(void*)NULL), createIndex(mPosts[0].mChildren.size(),COLUMN_THREAD_NB_COLUMNS-1,(void*)NULL));
}
void RsGxsForumModel::setTreeMode(TreeMode mode)
@ -65,7 +68,21 @@ void RsGxsForumModel::setTreeMode(TreeMode mode)
return;
preMods();
if(mode == TREE_MODE_TREE) // means we were in FLAT mode, so the last rows are removed.
{
beginRemoveRows(QModelIndex(),mPosts[0].mChildren.size(),mPosts.size()-1);
endRemoveRows();
}
mTreeMode = mode;
if(mode == TREE_MODE_FLAT) // means we were in tree mode, so the last rows are added.
{
beginInsertRows(QModelIndex(),mPosts[0].mChildren.size(),mPosts.size()-1);
endInsertRows();
}
postMods();
}
@ -264,12 +281,22 @@ void *RsGxsForumModel::getParentRef(void *ref,int& row) const
{
ForumModelIndex ref_entry;
if(mTreeMode == TREE_MODE_FLAT)
return NULL;
if(!convertRefPointerToTabEntry(ref,ref_entry) || ref_entry >= mPosts.size())
return NULL ;
if(mTreeMode == TREE_MODE_FLAT)
{
if(ref_entry == 0)
{
RsErr() << "getParentRef() shouldn't be asked for the parent of NULL" << std::endl;
row = 0;
}
else
row = ref_entry-1;
return NULL;
}
ForumModelIndex parent_entry = mPosts[ref_entry].mParent;
if(parent_entry == 0) // top level index
@ -296,11 +323,21 @@ int RsGxsForumModel::getChildrenCount(void *ref) const
if(mTreeMode == TREE_MODE_FLAT)
if(entry == 0)
{
#ifdef DEBUG_FORUMMODEL
std::cerr << "Children count (flat mode): " << mPosts.size()-1 << std::endl;
#endif
return ((int)mPosts.size())-1;
}
else
return 0;
else
{
#ifdef DEBUG_FORUMMODEL
std::cerr << "Children count (tree mode): " << mPosts[entry].mChildren.size() << std::endl;
#endif
return mPosts[entry].mChildren.size();
}
}
QVariant RsGxsForumModel::headerData(int section, Qt::Orientation /*orientation*/, int role) const
@ -699,7 +736,11 @@ void RsGxsForumModel::setPosts(const RsGxsForumGroup& group, const std::vector<F
{
preMods();
beginRemoveRows(QModelIndex(),0,mPosts[0].mChildren.size()-1);
if(mTreeMode == TREE_MODE_FLAT)
beginRemoveRows(QModelIndex(),0,mPosts.size()-1);
else
beginRemoveRows(QModelIndex(),0,mPosts[0].mChildren.size()-1);
endRemoveRows();
mForumGroup = group;
@ -723,7 +764,10 @@ void RsGxsForumModel::setPosts(const RsGxsForumGroup& group, const std::vector<F
debug_dump();
#endif
beginInsertRows(QModelIndex(),0,mPosts[0].mChildren.size()-1);
if(mTreeMode == TREE_MODE_FLAT)
beginInsertRows(QModelIndex(),0,mPosts.size()-1);
else
beginInsertRows(QModelIndex(),0,mPosts[0].mChildren.size()-1);
endInsertRows();
postMods();
emit forumLoaded();
@ -1247,18 +1291,24 @@ QModelIndex RsGxsForumModel::getIndexOfMessage(const RsGxsMessageId& mid) const
// First look into msg versions, in case the msg is a version of an existing message
for(auto it(mPostVersions.begin());it!=mPostVersions.end();++it)
for(auto it(mPostVersions.begin());it!=mPostVersions.end() && postId==mid;++it)
for(uint32_t i=0;i<it->second.size();++i)
if(it->second[i].second == mid)
{
postId = it->first;
break;
}
for(uint32_t i=0;i<mPosts.size();++i)
for(uint32_t i=1;i<mPosts.size();++i)
if(mPosts[i].mMsgId == postId)
{
void *ref ;
convertTabEntryToRefPointer(i,ref);
convertTabEntryToRefPointer(i,ref); // we dont use i+1 here because i is not a row, but an index in the mPosts tab
return createIndex(mPosts[i].prow,0,ref);
if(mTreeMode == TREE_MODE_FLAT)
return createIndex(i-1,0,ref);
else
return createIndex(mPosts[i].prow,0,ref);
}
return QModelIndex();

View File

@ -84,20 +84,6 @@
// We need consts for that!! Defined in multiple places.
#ifdef TO_REMOVE
#define ROLE_THREAD_MSGID Qt::UserRole
#define ROLE_THREAD_STATUS Qt::UserRole + 1
#define ROLE_THREAD_MISSING Qt::UserRole + 2
#define ROLE_THREAD_AUTHOR Qt::UserRole + 3
// no need to copy, don't count in ROLE_THREAD_COUNT
#define ROLE_THREAD_READCHILDREN Qt::UserRole + 4
#define ROLE_THREAD_UNREADCHILDREN Qt::UserRole + 5
#define ROLE_THREAD_SORT Qt::UserRole + 6
#define ROLE_THREAD_PINNED Qt::UserRole + 7
#define ROLE_THREAD_COUNT 4
#endif
#ifdef DEBUG_FORUMS
static std::ostream& operator<<(std::ostream& o,const QModelIndex& q)
{

View File

@ -114,7 +114,7 @@ QString GxsForumsDialog::icon(IconType type)
{
switch (type) {
case ICON_NAME:
return ":/icons/png/forums.png";
return ":/icons/png/forum.png";
case ICON_NEW:
return ":/icons/png/add.png";
case ICON_YOUR_GROUP:

View File

@ -71,7 +71,7 @@
<file>icons/png/add.png</file>
<file>icons/png/attach-image.png</file>
<file>icons/png/attach.png</file>
<file>icons/png/cert.png</file>
<file>icons/png/cert.png</file>
<file>icons/png/channels-notify.png</file>
<file>icons/png/channels.png</file>
<file>icons/png/chat-bubble-notify.png</file>
@ -105,6 +105,7 @@
<file>icons/png/netgraph.png</file>
<file>icons/png/network-notify.png</file>
<file>icons/png/network.png</file>
<file>icons/png/network2.png</file>
<file>icons/png/network-puplic.png</file>
<file>icons/png/newsfeed-notify.png</file>
<file>icons/png/newsfeed.png</file>
@ -261,5 +262,20 @@
<file>icons/png/flame.png</file>
<file>icons/png/new.png</file>
<file>icons/png/top.png</file>
<file>icons/png/copy.png</file>
<file>icons/png/down-arrow.png</file>
<file>icons/png/download.png</file>
<file>icons/png/up-arrow.png</file>
<file>icons/png/play.png</file>
<file>icons/png/cancel.png</file>
<file>icons/png/correct.png</file>
<file>icons/png/comment.png</file>
<file>icons/png/chats.png</file>
<file>icons/png/fileshare.png</file>
<file>icons/png/forum.png</file>
<file>icons/png/message.png</file>
<file>icons/png/newsfeed2.png</file>
<file>icons/png/postedlinks.png</file>
<file>icons/png/people2.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -2,7 +2,6 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
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#"
@ -12,24 +11,16 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg4155"
version="1.1"
inkscape:version="0.91 r13725"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="channels-notify.svg"
inkscape:export-filename="C:\Qt\RetroShare\RetroShare\retroshare-gui\src\gui\icons\png\channels-notify.png"
inkscape:export-xdpi="144"
inkscape:export-ydpi="144"><metadata
width="128"
height="128"
viewBox="0 0 128 128"
sodipodi:docname="channels-notify.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 /></cc:Work></rdf:RDF></metadata><defs
id="defs4159"><linearGradient
id="linearGradient4148"
osb:paint="solid"><stop
style="stop-color:#7b2a46;stop-opacity:1;"
offset="0"
id="stop4150" /></linearGradient></defs><sodipodi:namedview
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"
@ -38,13 +29,13 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
inkscape:window-width="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="7.2390057"
inkscape:cx="23.793449"
inkscape:cy="41.710731"
inkscape:zoom="1.8097514"
inkscape:cx="-59.637341"
inkscape:cy="70.230868"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -55,33 +46,20 @@
transform="matrix(1.25,0,0,-1.25,0,80)"><path
inkscape:connector-curvature="0"
id="path4167"
style="fill:#ff990d;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"
inkscape:export-xdpi="144"
inkscape:export-ydpi="144" /><rect
y="-53.716011"
x="9.6750126"
style="fill:none;stroke-width:1.7944;stroke-miterlimit:10;stroke-dasharray:none"
height="44.862545"
width="44.862545"
id="rect3"
transform="scale(1,-1)" /><rect
style="fill:none;stroke:#fffff0;stroke-width:1.7944;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
height="26.917528"
stroke-miterlimit="10"
width="43.068047"
x="10.572263"
y="-46.538002"
id="rect5"
transform="scale(1,-1)" /><line
style="fill:#ffffff;stroke:#fffff0;stroke-width:1.7944;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:none;fill-opacity:1;stroke-opacity:0.96078432"
stroke-miterlimit="10"
x1="44.667801"
x2="19.544771"
y1="16.031466"
y2="16.031466"
id="line7" /><path
style="fill:#ff990d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.60000002"
d="M 102.4,12.8 C 102.4,-15.4768 79.4768,-38.4 51.2,-38.4 22.9232,-38.4 0,-15.4768 0,12.8 0,41.0768 22.9232,64 51.2,64 79.4768,64 102.4,41.0768 102.4,12.8" /><path
inkscape:connector-curvature="0"
d="m 38.366406,33.035271 -9.888603,5.709207 c -0.176758,0.10139 -0.395687,0.10139 -0.571548,0 -0.177656,-0.101389 -0.286223,-0.289812 -0.286223,-0.493488 l 0,-11.421107 c 0,-0.204573 0.108567,-0.392996 0.285325,-0.494385 0.08793,-0.05114 0.186629,-0.07627 0.285326,-0.07627 0.0978,0 0.197395,0.02512 0.285326,0.07627 l 9.888602,5.709208 c 0.176759,0.102286 0.285326,0.290709 0.285326,0.495282 0,0.204573 -0.106773,0.392996 -0.283531,0.495283 z"
id="path9"
style="stroke-width:1.7944;stroke-miterlimit:10;stroke-dasharray:none;fill:#ffffff;fill-opacity:1" /></g></svg>
style="fill:#ffffff;stroke-width:0.79999691"
d="m 248.98415,94.44643 -0.0187,0.1875 c -0.34688,3.29687 -3.79998,32.62175 -18.05618,47.53732 -16.47808,17.54368 -35.15926,19.67492 -44.14359,20.69679 -0.74376,0.0844 -1.425,0.1625 -2.03437,0.24375 l -0.71563,0.075 c -54.14979,3.93749 -135.927597,4.47498 -136.746347,4.47811 l -0.07189,0.003 -0.0719,-0.003 c -0.81875,-0.003 -82.59655,-0.54062 -137.233842,-4.4781 l -0.721873,-0.075 c -0.581218,-0.0781 -1.22184,-0.15003 -1.918712,-0.23128 -8.881216,-1.02499 -27.362396,-3.15936 -43.887326,-21.33741 -13.57808,-14.7562 -17.50306,-43.45296 -17.90618,-46.67795 l -0.0469,-0.41875 c -0.12187,-1.37187 -3.01249,-34.031118 -3.01249,-66.818486 v -30.64988 c 0,-32.78738 2.89062,-65.44662 3.01249,-66.82162 l 0.0219,-0.20624 c 0.34687,-3.24374 3.79686,-32.031134 17.98743,-46.952954 15.49369,-16.95618 35.08423,-19.19992 45.621694,-20.40617 1.665619,-0.19063 3.099988,-0.35312 4.078109,-0.525 l 0.946872,-0.13124 c 31.265508,-2.975 129.293238,-4.44061 133.449478,-4.49999 l 0.125,-0.003 0.125,0.003 c 0.81875,0.003 82.593427,0.54063 136.743217,4.47811 l 0.71562,0.075 c 0.68437,0.0906 1.45312,0.17188 2.29687,0.25938 8.83121,0.93749 27.21239,2.88436 43.5092,20.81554 13.57807,14.75932 17.50619,43.456084 17.90618,46.677944 l 0.0469,0.41874 c 0.12188,1.375 3.01562,34.03112 3.01562,66.8185 v 30.64988 c -0.003,32.787408 -2.89375,65.443536 -3.01563,66.818526 z M 227.99362,-3.021936 c 0,-30.34675 -2.65,-61.59976 -2.9,-64.4685 -1.01874,-7.90309 -5.15936,-26.05928 -11.77495,-33.249874 -10.19996,-11.22183 -20.67804,-12.33433 -28.32801,-13.1437 -0.925,-0.0969 -1.78125,-0.19063 -2.55624,-0.2875 -52.3748,-3.78749 -131.065117,-4.36873 -134.690107,-4.39061 -4.06561,0.0594 -100.65898,1.53749 -130.97136,4.35311 -1.553118,0.25313 -3.231236,0.44688 -4.99998,0.64688 -8.97184,1.02811 -21.253043,2.43437 -30.696753,12.82182 l -0.22188,0.2375 c -6.49997,6.771854 -10.52183,23.749914 -11.5437,32.918614 -0.19063,2.16875 -2.90937,33.79051 -2.90937,64.56226 v 30.64988 c 0,30.312376 2.64374,61.531006 2.89999,64.459126 1.21562,9.30934 5.43436,26.36552 11.77496,33.25924 10.51246,11.56246 21.596789,12.8437 28.928009,13.69058 0.699998,0.0812 1.353121,0.15624 1.956244,0.23437 53.13729,3.80623 132.39323,4.37186 135.23697,4.39373 2.84374,-0.0187 82.071557,-0.5875 134.736977,-4.39373 0.64688,-0.0812 1.35312,-0.1625 2.11249,-0.25 7.54059,-0.85937 18.93743,-2.15937 29.39676,-13.31557 l 0.0969,-0.10313 c 6.49997,-6.77185 10.52183,-24.04678 11.5437,-33.39987 0.18125,-2.04686 2.90937,-33.73737 2.90937,-64.574746 z m 0,0"
id="path24" /><path
d="m 62.437944,16.256885 -16.269576,8.902003 c -0.935486,0.511849 -2.041222,0.492745 -2.958159,-0.05056 -0.917511,-0.543876 -1.464751,-1.504644 -1.464751,-2.571041 V 4.8861 c 0,-1.06134 0.543868,-2.020425 1.455198,-2.564861 0.475888,-0.284297 1.003467,-0.427007 1.532174,-0.427007 0.484319,0 0.969759,0.119673 1.416433,0.360148 l 16.270142,8.748615 c 0.965829,0.519715 1.568689,1.523748 1.573191,2.621046 0.0042,1.0973 -0.591638,2.105826 -1.554652,2.632844 z M 46.061048,7.106544 v 13.192313 l 12.15963,-6.653465 z m 0,0"
id="path22-4"
style="fill:#ffffff;stroke-width:0.14383444"
inkscape:connector-curvature="0" /><g
id="g107-6"
transform="matrix(0.44860463,0,0,-0.44860463,-39.480898,89.10247)"><g
id="g103-0"><path
d="m 282.79566,136.90407 -0.007,-0.0751 c -0.13903,-1.32133 -1.52298,-13.07429 -7.23664,-19.05221 -6.60416,-7.03124 -14.09128,-7.8854 -17.69207,-8.29495 -0.29808,-0.0338 -0.57112,-0.0652 -0.81534,-0.0977 l -0.2868,-0.0301 c -21.7024,-1.57808 -54.47767,-1.79351 -54.80581,-1.79475 l -0.0289,-8.4e-4 -0.0289,8.4e-4 c -0.32814,8.4e-4 -33.10341,0.21667 -55.00118,1.79475 l -0.28931,0.0301 c -0.23297,0.0312 -0.48972,0.0601 -0.769,0.0927 -3.55946,0.41079 -10.96642,1.26622 -17.58937,8.55169 -5.44187,5.91406 -7.01494,17.41528 -7.17651,18.70779 l -0.0188,0.16784 c -0.0489,0.54982 -1.20736,13.63914 -1.20736,26.7798 v 12.284 c 0,13.14067 1.15851,26.22998 1.20736,26.78106 l 0.009,0.0827 c 0.13903,1.30005 1.52172,12.83758 7.20908,18.81802 6.20962,6.79576 14.06121,7.69502 18.28446,8.17846 0.66756,0.0764 1.24243,0.14153 1.63445,0.21042 l 0.37948,0.0526 c 12.53073,1.19232 51.81872,1.77972 53.48447,1.80351 l 0.0501,0.002 0.0501,-0.002 c 0.32814,-0.002 33.10215,-0.21666 54.80455,-1.79474 l 0.28681,-0.03 c 0.27428,-0.0364 0.58238,-0.0689 0.92054,-0.10395 3.53941,-0.37573 10.9063,-1.15601 17.43782,-8.34254 5.44187,-5.91532 7.0162,-17.41652 7.1765,-18.70779 l 0.0188,-0.16783 c 0.0488,-0.55108 1.20861,-13.63913 1.20861,-26.77981 v -12.284 c -8.5e-4,-13.14067 -1.15977,-26.22875 -1.20861,-26.77982 z m -8.41269,39.06381 c 0,12.16251 -1.06208,24.68823 -1.16226,25.83797 -0.4083,3.16743 -2.06779,10.44414 -4.71923,13.32602 -4.08798,4.49755 -8.28744,4.94342 -11.35341,5.26779 -0.37073,0.0388 -0.71391,0.0764 -1.02451,0.11522 -20.991,1.51797 -52.52885,1.75092 -53.98169,1.75969 -1.62944,-0.0238 -40.34255,-0.6162 -52.49127,-1.74466 -0.62248,-0.10144 -1.29504,-0.17909 -2.00393,-0.25925 -3.59576,-0.41206 -8.51788,-0.97565 -12.30278,-5.13879 l -0.089,-0.0951 c -2.60509,-2.71405 -4.21699,-9.51859 -4.62654,-13.19327 -0.0764,-0.86921 -1.16603,-13.5427 -1.16603,-25.87554 v -12.284 c 0,-12.14872 1.05958,-24.66067 1.16228,-25.83421 0.4872,-3.73104 2.17799,-10.56689 4.71921,-13.32978 4.21323,-4.63405 8.65566,-5.14756 11.5939,-5.48698 0.28055,-0.0326 0.54231,-0.0627 0.78404,-0.0939 21.29658,-1.52547 53.06113,-1.75217 54.20086,-1.76093 1.13972,0.007 32.89299,0.23546 54.00047,1.76093 0.25926,0.0326 0.54232,0.0651 0.84666,0.10021 3.02215,0.34442 7.58982,0.86545 11.78175,5.33667 l 0.0389,0.0413 c 2.60509,2.71404 4.21698,9.63757 4.62653,13.38614 0.0727,0.82034 1.16603,13.52141 1.16603,25.88055 z m 0,0"
id="path24-7"
style="fill:#ffffff;stroke-width:0.32062626"
inkscape:connector-curvature="0" /></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,64 @@
<?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.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="chats.svg"
inkscape:export-filename="C:\Users\Mustermann\Documents\GitHub\RetroShare\retroshare-gui\src\gui\icons\png\chats.png"
inkscape:export-xdpi="153"
inkscape:export-ydpi="153"><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="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="5.11875"
inkscape:cx="27.545788"
inkscape:cy="55.377339"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4163"><inkscape:grid
type="xygrid"
id="grid4146" /></sodipodi:namedview><g
id="g4163"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.25,0,0,-1.25,0,80)"><g
transform="matrix(2.0115028,0,0,-2.0115028,1.8333347,61.674992)"
id="g3"
style="opacity:0.97000002;fill:#039bd5;fill-opacity:1"><g
id="g5"
style="fill:#039bd5;fill-opacity:1"><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
d="m 30,18.3 c 0,-2.682 -1.877,-5.024 -4.673,-6.291 0.164,0.585 0.259,1.189 0.276,1.809 0.279,0.166 0.549,0.345 0.801,0.54 1.41,1.088 2.188,2.487 2.188,3.942 0,1.454 -0.775,2.854 -2.188,3.941 -1.547,1.192 -3.627,1.85 -5.855,1.85 -1.504,0 -2.938,-0.301 -4.188,-0.859 -0.778,0.153 -1.585,0.25 -2.416,0.284 1.705,1.282 4.033,2.073 6.603,2.073 1.648,0 3.198,-0.325 4.549,-0.898 l 3.439,1.756 -0.695,-3.511 C 29.191,21.676 30,20.061 30,18.3 Z"
id="path7" /><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
d="M 24.625,12.837 C 24.607,12.218 24.512,11.613 24.348,11.029 23.147,6.755 18.215,3.554 12.314,3.554 5.513,3.554 0,7.806 0,13.051 c 0,2.295 1.055,4.399 2.812,6.041 l -0.906,4.573 4.483,-2.287 c 1.758,0.746 3.777,1.17 5.925,1.17 0.219,0 0.437,-0.004 0.653,-0.014 0.829,-0.032 1.637,-0.129 2.414,-0.283 5.316,-1.051 9.246,-4.771 9.246,-9.2 0,-0.072 -10e-4,-0.143 -0.002,-0.214 z M 6.506,14.615 c -0.99,0 -1.792,-0.802 -1.792,-1.791 0,-0.99 0.802,-1.792 1.792,-1.792 0.989,0 1.792,0.802 1.792,1.792 0,0.988 -0.802,1.791 -1.792,1.791 z m 5.808,0 c -0.99,0 -1.792,-0.802 -1.792,-1.791 0,-0.99 0.802,-1.792 1.792,-1.792 0.989,0 1.792,0.802 1.792,1.792 0,0.988 -0.803,1.791 -1.792,1.791 z m 5.808,0 c -0.989,0 -1.792,-0.802 -1.792,-1.791 0,-0.99 0.803,-1.792 1.792,-1.792 0.989,0 1.792,0.802 1.792,1.792 0,0.988 -0.803,1.791 -1.792,1.791 z"
id="path9" /></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,105 @@
<?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.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="fileshare.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="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="5.11875"
inkscape:cx="27.545788"
inkscape:cy="40.51764"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4163"><inkscape:grid
type="xygrid"
id="grid4206" /></sodipodi:namedview><g
id="g4163"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.25,0,0,-1.25,0,80)"><g
transform="matrix(0.11671438,0,0,-0.11671438,3.3813893,59.508284)"
id="g3"
style="fill:#039bd5;fill-opacity:1"
inkscape:export-filename="C:\Users\Mustermann\Documents\GitHub\RetroShare\retroshare-gui\src\gui\icons\png\fileshare.png"
inkscape:export-xdpi="153"
inkscape:export-ydpi="153"><g
id="g5"
style="fill:#039bd5;fill-opacity:1"><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
d="m 387.196,459.652 c -5.63,11.368 -20.6,20.708 -33.284,20.708 H 22.024 c -12.705,0 -18.486,-9.34 -12.899,-20.708 l 89.26,-180.828 c 5.587,-11.368 20.579,-20.686 33.284,-20.686 h 331.888 c 12.727,0 18.465,9.319 12.899,20.686 z"
id="path7" /><polygon
style="fill:#039bd5;fill-opacity:1"
points="328.803,196.575 233.223,196.575 233.223,235.057 367.307,235.057 "
id="polygon9" /><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
d="M 0,180.871 V 425.98 L 77.676,268.621 c 2.955,-5.91 7.507,-11.152 12.619,-15.876 V 151.729 H 29.164 C 13.137,151.729 0,164.844 0,180.871 Z"
id="path11" /><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
d="M 161.781,10.354 59.773,112.362 h 57.119 v 106.495 h 89.756 V 112.362 h 57.119 z"
id="path13" /><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
d="M 385.491,215.665 283.483,113.656 h 57.098 V 7.118 h 89.734 v 106.517 h 57.163 z"
id="path15" /></g><g
id="g17"
style="fill:#039bd5;fill-opacity:1" /><g
id="g19"
style="fill:#039bd5;fill-opacity:1" /><g
id="g21"
style="fill:#039bd5;fill-opacity:1" /><g
id="g23"
style="fill:#039bd5;fill-opacity:1" /><g
id="g25"
style="fill:#039bd5;fill-opacity:1" /><g
id="g27"
style="fill:#039bd5;fill-opacity:1" /><g
id="g29"
style="fill:#039bd5;fill-opacity:1" /><g
id="g31"
style="fill:#039bd5;fill-opacity:1" /><g
id="g33"
style="fill:#039bd5;fill-opacity:1" /><g
id="g35"
style="fill:#039bd5;fill-opacity:1" /><g
id="g37"
style="fill:#039bd5;fill-opacity:1" /><g
id="g39"
style="fill:#039bd5;fill-opacity:1" /><g
id="g41"
style="fill:#039bd5;fill-opacity:1" /><g
id="g43"
style="fill:#039bd5;fill-opacity:1" /><g
id="g45"
style="fill:#039bd5;fill-opacity:1" /></g></g></svg>

After

Width:  |  Height:  |  Size: 4.3 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.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="forum.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="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="5.11875"
inkscape:cx="38.637054"
inkscape:cy="37.23375"
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)"><g
transform="matrix(0.68101956,0,0,-0.68101956,-1.959855,714.36887)"
id="g4"
style="fill:#039bd5;fill-opacity:1"><path
inkscape:connector-curvature="0"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#039bd5;fill-opacity:1;stroke:none;stroke-width:4.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="M 92,8 58,22.15625 v 37.6875 L 92,74 Z M 26,23 c -9.89251,-10e-6 -18,8.02802 -18,18 0,9.97195 8.10749,18 18,18 H 54 V 23 Z M 27.40625,63 34,82 c 1.595005,4.178 4.856818,10 13,10 6.697928,0 11,-5.3726 11,-12 0,-6.6274 -5.372583,-12 -12,-12 h -1 l -1.65625,-5 z"
transform="translate(0,952.36218)"
id="path6" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
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.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="message.svg"
inkscape:export-filename="C:\Users\Mustermann\Documents\GitHub\RetroShare\retroshare-gui\src\gui\icons\png\message.png"
inkscape:export-xdpi="153.60001"
inkscape:export-ydpi="153.60001"><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"><linearGradient
id="linearGradient4148"
osb:paint="solid"><stop
style="stop-color:#7b2a46;stop-opacity:1;"
offset="0"
id="stop4150" /></linearGradient></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="5.11875"
inkscape:cx="22.066693"
inkscape:cy="66.571881"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g4163"
showguides="false"><inkscape:grid
type="xygrid"
id="grid4138" /></sodipodi:namedview><g
id="g4163"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.25,0,0,-1.25,0,80)"><rect
y="-53.716011"
x="9.6750126"
style="fill:none;stroke-width:1.7944;stroke-miterlimit:10;stroke-dasharray:none"
height="44.862545"
width="44.862545"
id="rect3"
transform="scale(1,-1)" /><path
inkscape:connector-curvature="0"
d="M 62.59383,14.011166 44.82995,31.87346 62.643037,49.63734 V 14.011166 h -0.0492 z M 4.8735216,10.66506 22.785025,28.576564 26.721618,24.689177 c 1.476222,-1.476223 3.247689,-2.460373 5.412815,-2.460373 2.165128,0 3.936596,0.98415 5.412819,2.460373 L 41.483845,28.576564 59.395347,10.66506 Z M 59.493762,53.377103 33.955109,27.740037 c -0.492074,-0.492075 -0.93494,-0.787319 -1.820676,-0.787319 -0.885732,0 -1.3286,0.295244 -1.820675,0.787319 L 4.7751066,53.377103 Z M 1.6750374,49.63734 19.488126,31.87346 1.6750374,14.011166 Z"
id="path8"
style="fill:#039bd5;fill-opacity:1;stroke-width:1.4163276" /></g></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
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.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="newsfeed2.svg"
inkscape:export-filename="C:\Users\Mustermann\Documents\GitHub\RetroShare\retroshare-gui\src\gui\icons\png\newsfeed2.png"
inkscape:export-xdpi="153.60001"
inkscape:export-ydpi="153.60001"><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"><linearGradient
id="linearGradient4148"
osb:paint="solid"><stop
style="stop-color:#7b2a46;stop-opacity:1;"
offset="0"
id="stop4150" /></linearGradient></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="7.2390057"
inkscape:cx="39.106102"
inkscape:cy="40.251477"
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)"><rect
y="-53.716011"
x="9.6750126"
style="fill:none;stroke-width:1.7944;stroke-miterlimit:10;stroke-dasharray:none"
height="44.862545"
width="44.862545"
id="rect3"
transform="scale(1,-1)" /><g
transform="matrix(1.8658071,0,0,-1.8658071,2.4355314,66.783036)"
id="news_1_"
style="fill:#039bd5;fill-opacity:1"><path
inkscape:connector-curvature="0"
d="M 4,14 H 24 V 12 H 4 Z m 11,12 h 7 v -2 h -7 z m 0,-4 h 9 v -2 h -9 z m 0,-4 h 9 V 16 H 15 Z M 4,26 h 9 V 16 H 4 Z M 28,10 V 6 H 0 v 22 c 0,0 0,4 4,4 h 25 c 0,0 3,-0.062 3,-4 V 10 Z M 4,30 C 2,30 2,28 2,28 V 8 h 24 v 20 c 0,0.921 0.284,1.558 0.676,2 z"
id="path7"
style="fill:#039bd5;fill-opacity:1" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -11,7 +11,7 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg4155"
version="1.1"
inkscape:version="0.91 r13725"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
@ -19,7 +19,7 @@
sodipodi:docname="people.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
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs4159" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@ -29,12 +29,12 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="706"
inkscape:window-width="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="7.2390057"
inkscape:cx="28.118007"
inkscape:zoom="5.11875"
inkscape:cx="35.169457"
inkscape:cy="41.257386"
inkscape:window-x="-8"
inkscape:window-y="-8"
@ -48,58 +48,10 @@
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" /><g
transform="matrix(2.2768478,0,0,-2.2768478,4.7264277,60.413755)"
id="g3"
style="fill:#ffffff"><path
transform="matrix(0.59825677,0,0,-0.59825677,7.9206488,54.751896)"
id="g4"
style="fill:#f9f9f9"><path
inkscape:connector-curvature="0"
d="m 9,9 c 0,-1.7 1.3,-3 3,-3 1.7,0 3,1.3 3,3 0,1.7 -1.3,3 -3,3 -1.7,0 -3,-1.3 -3,-3 z m 3,5 c -4.6,0 -6,3.3 -6,3.3 l 0,1.7 12,0 0,-1.7 c 0,0 -1.4,-3.3 -6,-3.3 z"
id="path5"
style="fill:#ffffff" /></g><g
transform="matrix(2.2768478,0,0,-2.2768478,4.7264277,60.413755)"
id="g7"
style="fill:#ffffff"><g
id="g9"
style="fill:#ffffff"><circle
cx="18.5"
cy="8.5"
r="2.5"
id="circle11"
style="fill:#ffffff" /></g><g
id="g13"
style="fill:#ffffff"><path
inkscape:connector-curvature="0"
d="m 18.5,13 c -1.2,0 -2.1,0.3 -2.8,0.8 2.3,1.1 3.2,3 3.2,3.2 l 0,0.1 4.1,0 0,-1.3 C 23,15.7 21.9,13 18.5,13 Z"
id="path15"
style="fill:#ffffff" /></g></g><g
transform="matrix(2.2768478,0,0,-2.2768478,4.7264277,60.413755)"
id="g17"
style="fill:#ffffff"><g
id="g19"
style="fill:#ffffff"><circle
cx="18.5"
cy="8.5"
r="2.5"
id="circle21"
style="fill:#ffffff" /></g><g
id="g23"
style="fill:#ffffff"><path
inkscape:connector-curvature="0"
d="m 18.5,13 c -1.2,0 -2.1,0.3 -2.8,0.8 2.3,1.1 3.2,3 3.2,3.2 l 0,0.1 4.1,0 0,-1.3 C 23,15.7 21.9,13 18.5,13 Z"
id="path25"
style="fill:#ffffff" /></g></g><g
transform="matrix(2.2768478,0,0,-2.2768478,4.7264277,60.413755)"
id="g27"
style="fill:#ffffff"><g
id="g29"
style="fill:#ffffff"><circle
cx="5.5"
cy="8.5"
r="2.5"
id="circle31"
style="fill:#ffffff" /></g><g
id="g33"
style="fill:#ffffff"><path
inkscape:connector-curvature="0"
d="m 5.5,13 c 1.2,0 2.1,0.3 2.8,0.8 -2.3,1.1 -3.2,3 -3.2,3.2 l 0,0.1 -4.1,0 0,-1.3 C 1,15.7 2.1,13 5.5,13 Z"
id="path35"
style="fill:#ffffff" /></g></g></g></svg>
d="m 48.355,17.922 c 3.705,2.323 6.303,6.254 6.776,10.817 1.511,0.706 3.188,1.112 4.966,1.112 6.491,0 11.752,-5.261 11.752,-11.751 0,-6.491 -5.261,-11.752 -11.752,-11.752 -6.429,0.002 -11.644,5.169 -11.742,11.574 z m -7.699,24.062 c 6.491,0 11.752,-5.262 11.752,-11.752 0,-6.49 -5.262,-11.751 -11.752,-11.751 -6.49,0 -11.754,5.262 -11.754,11.752 0,6.49 5.264,11.751 11.754,11.751 z m 4.985,0.801 h -9.972 c -8.297,0 -15.047,6.751 -15.047,15.048 v 12.195 l 0.031,0.191 0.84,0.263 c 7.918,2.474 14.797,3.299 20.459,3.299 11.059,0 17.469,-3.153 17.864,-3.354 l 0.785,-0.397 h 0.084 V 57.833 C 60.688,49.536 53.938,42.785 45.641,42.785 Z M 65.084,30.653 h -9.895 c -0.107,3.959 -1.797,7.524 -4.47,10.088 7.375,2.193 12.771,9.032 12.771,17.11 v 3.758 c 9.77,-0.358 15.4,-3.127 15.771,-3.313 l 0.785,-0.398 H 80.13 V 45.699 c 0,-8.296 -6.75,-15.046 -15.046,-15.046 z m -45.049,-0.8 c 2.299,0 4.438,-0.671 6.25,-1.814 0.576,-3.757 2.59,-7.04 5.467,-9.276 0.012,-0.22 0.033,-0.438 0.033,-0.66 0,-6.491 -5.262,-11.752 -11.75,-11.752 -6.492,0 -11.752,5.261 -11.752,11.752 0,6.488 5.26,11.75 11.752,11.75 z M 30.589,40.741 C 27.929,38.19 26.245,34.644 26.122,30.709 25.755,30.682 25.392,30.653 25.018,30.653 H 15.047 C 6.75,30.653 0,37.403 0,45.699 v 12.197 l 0.031,0.188 0.84,0.265 c 6.352,1.983 12.021,2.897 16.945,3.185 v -3.683 c 0.002,-8.078 5.396,-14.915 12.773,-17.11 z"
id="path2"
style="fill:#f9f9f9" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,56 @@
<?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.92.3 (2405546, 2018-03-11)"
xml:space="preserve"
width="80"
height="80"
viewBox="0 0 80 80"
sodipodi:docname="people2.svg"
inkscape:export-filename="C:\Users\Mustermann\Documents\GitHub\RetroShare\retroshare-gui\src\gui\icons\png\people2.png"
inkscape:export-xdpi="153.60001"
inkscape:export-ydpi="153.60001"><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="1152"
inkscape:window-height="801"
id="namedview4157"
showgrid="false"
inkscape:zoom="5.11875"
inkscape:cx="27.545788"
inkscape:cy="41.257386"
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)"><g
transform="matrix(0.73469753,0,0,-0.73469753,2.5571465,60.826386)"
id="g4"
style="fill:#039bd5;fill-opacity:1"><path
inkscape:connector-curvature="0"
d="m 48.355,17.922 c 3.705,2.323 6.303,6.254 6.776,10.817 1.511,0.706 3.188,1.112 4.966,1.112 6.491,0 11.752,-5.261 11.752,-11.751 0,-6.491 -5.261,-11.752 -11.752,-11.752 -6.429,0.002 -11.644,5.169 -11.742,11.574 z m -7.699,24.062 c 6.491,0 11.752,-5.262 11.752,-11.752 0,-6.49 -5.262,-11.751 -11.752,-11.751 -6.49,0 -11.754,5.262 -11.754,11.752 0,6.49 5.264,11.751 11.754,11.751 z m 4.985,0.801 h -9.972 c -8.297,0 -15.047,6.751 -15.047,15.048 v 12.195 l 0.031,0.191 0.84,0.263 c 7.918,2.474 14.797,3.299 20.459,3.299 11.059,0 17.469,-3.153 17.864,-3.354 l 0.785,-0.397 h 0.084 V 57.833 C 60.688,49.536 53.938,42.785 45.641,42.785 Z M 65.084,30.653 h -9.895 c -0.107,3.959 -1.797,7.524 -4.47,10.088 7.375,2.193 12.771,9.032 12.771,17.11 v 3.758 c 9.77,-0.358 15.4,-3.127 15.771,-3.313 l 0.785,-0.398 H 80.13 V 45.699 c 0,-8.296 -6.75,-15.046 -15.046,-15.046 z m -45.049,-0.8 c 2.299,0 4.438,-0.671 6.25,-1.814 0.576,-3.757 2.59,-7.04 5.467,-9.276 0.012,-0.22 0.033,-0.438 0.033,-0.66 0,-6.491 -5.262,-11.752 -11.75,-11.752 -6.492,0 -11.752,5.261 -11.752,11.752 0,6.488 5.26,11.75 11.752,11.75 z M 30.589,40.741 C 27.929,38.19 26.245,34.644 26.122,30.709 25.755,30.682 25.392,30.653 25.018,30.653 H 15.047 C 6.75,30.653 0,37.403 0,45.699 v 12.197 l 0.031,0.188 0.84,0.265 c 6.352,1.983 12.021,2.897 16.945,3.185 v -3.683 c 0.002,-8.078 5.396,-14.915 12.773,-17.11 z"
id="path2"
style="fill:#039bd5;fill-opacity:1" /></g></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
enable-background="new 0 0 64 64"
height="64px"
version="1.1"
viewBox="0 0 64 64"
width="64px"
xml:space="preserve"
id="svg2"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="postedlinks.svg"
inkscape:export-filename="C:\Users\Mustermann\Documents\GitHub\RetroShare\retroshare-gui\src\gui\icons\png\postedlinks.png"
inkscape:export-xdpi="192"
inkscape:export-ydpi="192"><metadata
id="metadata34"><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="defs32" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1152"
inkscape:window-height="801"
id="namedview30"
showgrid="false"
inkscape:zoom="5.2149125"
inkscape:cx="34.647847"
inkscape:cy="37.811922"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><g
style="opacity:0.2"
id="g9"
transform="matrix(1.2929069,0,0,1.2929069,-8.743574,-10.129018)"><g
id="g11"><path
style="fill:#231f20"
inkscape:connector-curvature="0"
id="path13"
d="m 32,11.914 c -12.15,0 -22,9.85 -22,22 0,12.15 9.85,22 22,22 12.15,0 22,-9.85 22,-22 0,-12.15 -9.85,-22 -22,-22 z M 14.053,24.72 c 0.21,0.844 -0.21,2.36 -0.534,4.538 -0.378,2.54 1.647,1.991 1.579,4.393 -0.068,2.402 1.785,3.398 1.544,3.638 -0.24,0.24 -1.201,0.583 0.24,3.707 1.441,3.123 2.677,4.05 2.849,5.731 0.172,1.682 2.025,4.153 2.025,4.153 l 0.103,0.462 c -5.994,-3.501 -10.032,-10 -10.032,-17.428 0,-3.311 0.807,-6.435 2.226,-9.194 z m 9.968,27.086 c -0.103,-0.446 0.103,-2.849 2.986,-3.809 2.883,-0.961 2.402,-2.231 3.26,-3.466 0.858,-1.235 1.03,-2.162 -0.618,-2.54 -1.647,-0.378 -3.363,-0.652 -4.839,-2.986 -1.476,-2.334 -3.535,-2.402 -4.633,-3.123 -1.098,-0.721 -1.991,-0.583 -3.329,-0.755 -1.338,-0.172 -0.892,-3.912 -0.824,-4.736 0.069,-0.824 -0.824,0.275 -1.476,-0.296 -0.652,-0.571 0.618,-3.239 1.888,-3.136 1.27,0.103 0.961,0.721 1.201,2.128 0.24,1.407 0.686,1.064 0.789,0.618 0.103,-0.446 0.172,-2.334 0.618,-2.917 0.446,-0.583 0.549,-2.162 1.991,-2.094 1.441,0.069 1.407,-1.304 2.471,-0.858 1.064,0.446 1.819,0.103 1.133,-0.48 -0.686,-0.583 -0.309,-1.167 0.858,-0.789 1.167,0.378 1.235,-1.682 1.03,-2.746 -0.206,-1.064 -1.064,-1.373 -2.128,-0.721 -1.064,0.652 -1.853,0.378 -1.304,-0.721 0.549,-1.098 2.711,-0.172 4.015,0.378 1.304,0.549 1.647,-1.441 0.927,-2.402 -0.721,-0.961 -0.755,-0.515 -2.814,-0.378 -0.82,0.055 -0.736,-0.386 -0.338,-0.936 2.214,-0.838 4.612,-1.3 7.116,-1.3 2.535,0 4.96,0.474 7.197,1.332 0.282,0.394 0.396,0.704 0.2,0.835 -0.824,0.549 -1.544,0.059 -1.304,1.591 0.24,1.532 1.373,3.352 2.265,2.751 0.892,-0.601 2.437,0.154 1.098,0.978 -1.338,0.824 -1.716,0.755 -2.334,1.304 -0.618,0.549 -0.343,0.275 0.275,0.961 0.618,0.686 0.549,0.824 -0.309,1.167 -0.858,0.343 -1.373,1.098 -0.549,1.956 0.824,0.858 1.373,1.579 2.299,0 0.927,-1.579 1.098,-2.951 1.888,-2.54 0.789,0.412 1.682,1.682 2.265,0.961 0.583,-0.721 0.48,-1.201 1.27,-0.652 0.789,0.549 3.707,0.583 1.75,2.025 -1.956,1.441 -1.613,2.059 -2.54,1.888 -0.927,-0.172 -5.114,-1.064 -6.075,1.27 -0.961,2.334 -4.462,4.187 -2.643,6.452 1.819,2.265 1.407,3.912 4.015,4.256 2.608,0.343 3.947,-0.824 4.599,0.378 0.652,1.202 0.137,1.339 0.172,3.157 0.017,0.902 0.498,2.601 0.978,4.089 -3.672,3.81 -8.821,6.188 -14.518,6.188 -2.868,0 -5.597,-0.606 -8.07,-1.69 0.074,-0.285 0.112,-0.501 0.091,-0.592 z" /></g><g
id="g15"><path
style="fill:#231f20"
inkscape:connector-curvature="0"
id="path17"
d="m 32.086,18.207 c 0.632,-0.38 0.686,0.137 1.235,-1.613 0.549,-1.75 -2.059,-1.991 -3.295,-1.785 -1.235,0.206 -0.686,0.721 -0.686,0.721 0.412,0.652 0.684,3.054 -0.053,3.947 -0.736,0.892 0.602,1.064 1.185,0.24 0.585,-0.824 0.93,-1.099 1.614,-1.51 z" /></g></g><g
id="g19"
transform="matrix(1.2929069,0,0,1.2929069,-8.743574,-10.129018)"
style="fill:#039bd5;fill-opacity:1"><g
id="g21"
style="fill:#039bd5;fill-opacity:1"><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
id="path23"
d="m 32,10.087 c -12.15,0 -22,9.85 -22,22 0,12.15 9.85,22 22,22 12.15,0 22,-9.85 22,-22 0,-12.15 -9.85,-22 -22,-22 z M 14.053,22.893 c 0.21,0.844 -0.21,2.36 -0.534,4.538 -0.378,2.54 1.647,1.991 1.579,4.393 -0.068,2.402 1.785,3.398 1.544,3.638 -0.24,0.24 -1.201,0.583 0.24,3.707 1.441,3.123 2.677,4.05 2.849,5.731 0.172,1.682 2.025,4.153 2.025,4.153 l 0.103,0.462 c -5.994,-3.501 -10.032,-10 -10.032,-17.428 0,-3.311 0.807,-6.435 2.226,-9.194 z m 9.968,27.086 c -0.103,-0.446 0.103,-2.849 2.986,-3.809 2.883,-0.961 2.402,-2.231 3.26,-3.466 0.858,-1.235 1.03,-2.162 -0.618,-2.54 C 28.002,39.786 26.286,39.512 24.81,37.178 23.334,34.844 21.275,34.776 20.177,34.055 19.079,33.334 18.186,33.472 16.848,33.3 15.51,33.128 15.956,29.388 16.024,28.564 16.093,27.74 15.2,28.839 14.548,28.268 c -0.652,-0.571 0.618,-3.239 1.888,-3.136 1.27,0.103 0.961,0.721 1.201,2.128 0.24,1.407 0.686,1.064 0.789,0.618 0.103,-0.446 0.172,-2.334 0.618,-2.917 0.446,-0.583 0.549,-2.162 1.991,-2.093 1.441,0.069 1.407,-1.304 2.471,-0.858 1.064,0.446 1.819,0.103 1.133,-0.48 -0.686,-0.583 -0.309,-1.167 0.858,-0.789 1.167,0.378 1.235,-1.682 1.03,-2.746 -0.206,-1.064 -1.064,-1.373 -2.128,-0.721 -1.064,0.652 -1.853,0.378 -1.304,-0.721 0.549,-1.098 2.711,-0.172 4.015,0.378 1.304,0.549 1.647,-1.441 0.927,-2.402 -0.721,-0.961 -0.755,-0.515 -2.814,-0.378 -0.82,0.055 -0.736,-0.386 -0.338,-0.936 2.214,-0.838 4.612,-1.3 7.116,-1.3 2.535,0 4.96,0.474 7.197,1.332 0.282,0.394 0.396,0.704 0.2,0.835 -0.824,0.549 -1.544,0.059 -1.304,1.591 0.24,1.532 1.373,3.352 2.265,2.751 0.892,-0.601 2.437,0.154 1.098,0.978 -1.338,0.824 -1.716,0.755 -2.334,1.304 -0.618,0.549 -0.343,0.275 0.275,0.961 0.618,0.686 0.549,0.824 -0.309,1.167 -0.858,0.343 -1.373,1.098 -0.549,1.956 0.824,0.858 1.373,1.579 2.299,0 0.927,-1.579 1.098,-2.951 1.888,-2.54 0.789,0.412 1.682,1.682 2.265,0.961 0.583,-0.721 0.48,-1.201 1.27,-0.652 0.789,0.549 3.707,0.583 1.75,2.025 -1.956,1.441 -1.613,2.059 -2.54,1.888 -0.927,-0.172 -5.114,-1.064 -6.075,1.27 -0.961,2.334 -4.462,4.187 -2.643,6.452 1.819,2.265 1.407,3.912 4.015,4.256 2.608,0.343 3.947,-0.824 4.599,0.378 0.652,1.201 0.137,1.339 0.172,3.157 0.017,0.902 0.498,2.601 0.978,4.089 -3.672,3.81 -8.821,6.188 -14.518,6.188 -2.868,0 -5.597,-0.606 -8.07,-1.69 0.074,-0.286 0.112,-0.502 0.091,-0.593 z" /></g><g
id="g25"
style="fill:#039bd5;fill-opacity:1"><path
style="fill:#039bd5;fill-opacity:1"
inkscape:connector-curvature="0"
id="path27"
d="m 32.086,16.38 c 0.632,-0.38 0.686,0.137 1.235,-1.613 0.549,-1.75 -2.059,-1.991 -3.295,-1.785 -1.235,0.206 -0.686,0.721 -0.686,0.721 0.412,0.652 0.684,3.054 -0.053,3.947 -0.736,0.892 0.602,1.064 1.185,0.24 0.583,-0.824 0.93,-1.099 1.614,-1.51 z" /></g></g><g
id="Layer_2"
transform="matrix(1.2929069,0,0,1.2929069,-9.79543,-9.7783992)" /></svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@ -324,7 +324,7 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="../icons.qrc">:/icons/png/messages.png</pixmap>
<pixmap resource="../icons.qrc">:/icons/png/message.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>

View File

@ -2,7 +2,7 @@
/* Standard rules */
QFrame#toolBarFrame {
QFrame#toolBarFrame, QFrame#toolBarFrameTop {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FEFEFE, stop:1 #E8E8E8);
border: 1px solid #CCCCCC;
}

View File

@ -166,14 +166,18 @@ void ChatPage::updateHistoryParams()
Settings->setPublicChatHistoryCount(ui.publicChatLoadCount->value());
Settings->setPrivateChatHistoryCount(ui.privateChatLoadCount->value());
Settings->setLobbyChatHistoryCount(ui.lobbyChatLoadCount->value());
Settings->setDistantChatHistoryCount(ui.distantChatLoadCount->value());
rsHistory->setEnable(RS_HISTORY_TYPE_PUBLIC , ui.publicChatEnable->isChecked());
rsHistory->setEnable(RS_HISTORY_TYPE_PRIVATE, ui.privateChatEnable->isChecked());
rsHistory->setEnable(RS_HISTORY_TYPE_LOBBY , ui.lobbyChatEnable->isChecked());
rsHistory->setEnable(RS_HISTORY_TYPE_DISTANT, ui.distantChatEnable->isChecked());
rsHistory->setSaveCount(RS_HISTORY_TYPE_PUBLIC , ui.publicChatSaveCount->value());
rsHistory->setSaveCount(RS_HISTORY_TYPE_PRIVATE, ui.privateChatSaveCount->value());
rsHistory->setSaveCount(RS_HISTORY_TYPE_LOBBY , ui.lobbyChatSaveCount->value());
rsHistory->setSaveCount(RS_HISTORY_TYPE_DISTANT, ui.distantChatSaveCount->value());
}
void ChatPage::updatePublicStyle()
@ -247,13 +251,19 @@ ChatPage::ChatPage(QWidget * parent, Qt::WindowFlags flags)
connect(ui.publicChatLoadCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.privateChatLoadCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.distantChatLoadCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.lobbyChatLoadCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.publicChatEnable, SIGNAL(toggled(bool)), this, SLOT(updateHistoryParams()));
connect(ui.privateChatEnable, SIGNAL(toggled(bool)), this, SLOT(updateHistoryParams()));
connect(ui.distantChatEnable, SIGNAL(toggled(bool)), this, SLOT(updateHistoryParams()));
connect(ui.lobbyChatEnable, SIGNAL(toggled(bool)), this, SLOT(updateHistoryParams()));
connect(ui.publicChatSaveCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.privateChatSaveCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.lobbyChatSaveCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.distantChatSaveCount, SIGNAL(valueChanged(int)), this, SLOT(updateHistoryParams()));
connect(ui.publicStyle, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePublicStyle())) ;
connect(ui.publicComboBoxVariant, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePublicStyle())) ;
@ -349,14 +359,18 @@ ChatPage::load()
whileBlocking(ui.publicChatLoadCount)->setValue(Settings->getPublicChatHistoryCount());
whileBlocking(ui.privateChatLoadCount)->setValue(Settings->getPrivateChatHistoryCount());
whileBlocking(ui.lobbyChatLoadCount)->setValue(Settings->getLobbyChatHistoryCount());
whileBlocking(ui.distantChatLoadCount)->setValue(Settings->getDistantChatHistoryCount());
whileBlocking(ui.publicChatEnable)->setChecked(rsHistory->getEnable(RS_HISTORY_TYPE_PUBLIC));
whileBlocking(ui.privateChatEnable)->setChecked(rsHistory->getEnable(RS_HISTORY_TYPE_PRIVATE));
whileBlocking(ui.lobbyChatEnable)->setChecked(rsHistory->getEnable(RS_HISTORY_TYPE_LOBBY));
whileBlocking(ui.distantChatEnable)->setChecked(rsHistory->getEnable(RS_HISTORY_TYPE_DISTANT));
whileBlocking(ui.publicChatSaveCount)->setValue(rsHistory->getSaveCount(RS_HISTORY_TYPE_PUBLIC));
whileBlocking(ui.privateChatSaveCount)->setValue(rsHistory->getSaveCount(RS_HISTORY_TYPE_PRIVATE));
whileBlocking(ui.lobbyChatSaveCount)->setValue(rsHistory->getSaveCount(RS_HISTORY_TYPE_LOBBY));
whileBlocking(ui.distantChatSaveCount)->setValue(rsHistory->getSaveCount(RS_HISTORY_TYPE_DISTANT));
// using fontTempChat.rawname() does not always work!
// see http://doc.qt.digia.com/qt-maemo/qfont.html#rawName

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1216</width>
<height>1127</height>
<width>800</width>
<height>600</height>
</rect>
</property>
<layout class="QGridLayout">
@ -598,8 +598,21 @@
<layout class="QHBoxLayout" name="histSetupVLayout">
<item>
<layout class="QGridLayout" name="histSetupGLayout">
<item row="0" column="1">
<widget class="QLabel" name="publicHeaderLabel">
<item row="1" column="0">
<widget class="QLabel" name="labelChatEnable">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Enabled:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QLabel" name="lobbyHeaderLabel">
<property name="font">
<font>
<weight>75</weight>
@ -607,7 +620,7 @@
</font>
</property>
<property name="text">
<string>Group chat</string>
<string>Chatlobbies</string>
</property>
</widget>
</item>
@ -624,8 +637,8 @@
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="lobbyHeaderLabel">
<item row="0" column="1">
<widget class="QLabel" name="publicHeaderLabel">
<property name="font">
<font>
<weight>75</weight>
@ -633,20 +646,7 @@
</font>
</property>
<property name="text">
<string>Chatlobbies</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelChatEnable">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Enabled:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<string>Group chat</string>
</property>
</widget>
</item>
@ -657,20 +657,6 @@
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QCheckBox" name="privateChatEnable">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QCheckBox" name="lobbyChatEnable">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelChatSaveCount">
<property name="text">
@ -681,6 +667,13 @@
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QCheckBox" name="privateChatEnable">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="publicChatSaveCount">
<property name="maximumSize">
@ -700,27 +693,15 @@
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSpinBox" name="privateChatSaveCount">
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="suffix">
<item row="1" column="4">
<widget class="QCheckBox" name="lobbyChatEnable">
<property name="text">
<string/>
</property>
<property name="prefix">
<string/>
</property>
<property name="maximum">
<number>1000000000</number>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="lobbyChatSaveCount">
<item row="2" column="2">
<widget class="QSpinBox" name="privateChatSaveCount">
<property name="maximumSize">
<size>
<width>60</width>
@ -761,6 +742,25 @@
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QSpinBox" name="lobbyChatSaveCount">
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="suffix">
<string/>
</property>
<property name="prefix">
<string/>
</property>
<property name="maximum">
<number>1000000000</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="privateChatLoadCount">
<property name="maximumSize">
@ -774,7 +774,7 @@
</property>
</widget>
</item>
<item row="3" column="3">
<item row="3" column="4">
<widget class="QSpinBox" name="lobbyChatLoadCount">
<property name="maximumSize">
<size>
@ -787,6 +787,32 @@
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="distantchatHeaderLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Distant chat</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QCheckBox" name="distantChatEnable">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="distantChatSaveCount"/>
</item>
<item row="3" column="3">
<widget class="QSpinBox" name="distantChatLoadCount"/>
</item>
</layout>
</item>
<item>
@ -866,7 +892,7 @@
<enum>QTabWidget::North</enum>
</property>
<property name="currentIndex">
<number>2</number>
<number>0</number>
</property>
<widget class="QWidget" name="publicTab">
<attribute name="title">

View File

@ -728,6 +728,16 @@ void RshareSettings::setPrivateChatHistoryCount(int value)
setValueToGroup("Chat", "PrivateChatHistoryCount", value);
}
int RshareSettings::getDistantChatHistoryCount()
{
return valueFromGroup("Chat", "DistantChatHistoryCount", 20).toInt();
}
void RshareSettings::setDistantChatHistoryCount(int value)
{
setValueToGroup("Chat", "DistantChatHistoryCount", value);
}
/** Returns true if RetroShare is set to run on system boot. */
bool
RshareSettings::runRetroshareOnBoot(bool &minimized)

View File

@ -273,6 +273,9 @@ public:
int getLobbyChatHistoryCount();
void setLobbyChatHistoryCount(int value);
int getDistantChatHistoryCount();
void setDistantChatHistoryCount(int value);
//! Save placement, state and size information of a window.
void saveWidgetInformation(QWidget *widget);

View File

@ -18,6 +18,7 @@
* *
*******************************************************************************/
#include <QDateTime>
#include <iostream>
#include <QTimer>
#include <QObject>
@ -39,6 +40,9 @@
#include "gui/Identity/IdDetailsDialog.h"
#include "gui/settings/rsharesettings.h"
#include "gui/gxs/GxsIdDetails.h"
#include "gui/gxs/GxsIdTreeWidgetItem.h"
#include "util/DateTime.h"
#include "util/QtVersion.h"
#include "util/misc.h"
@ -49,9 +53,11 @@
#define COL_TUNNELSTATUS 4
#define COL_DATASIZE 5
#define COL_DATAHASH 6
#define COL_RECEIVED 7
#define COL_SEND 8
#define COL_RECEIVED 7
#define COL_SEND 8
#define COL_DUPLICATION_FACTOR 9
#define COL_RECEIVEDTIME 10
#define COL_SENDTIME 11
static const int PARTIAL_VIEW_SIZE = 9 ;
//static const int MAX_TUNNEL_REQUESTS_DISPLAY = 10 ;
@ -65,7 +71,7 @@ static QColor colorScale(float f)
}
GlobalRouterStatistics::GlobalRouterStatistics(QWidget *parent)
: RsAutoUpdatePage(2000,parent)
: RsAutoUpdatePage(4000,parent)
{
setupUi(this) ;
@ -168,7 +174,8 @@ void GlobalRouterStatistics::updateContent()
for(uint32_t i=0;i<cache_infos.size();++i)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
//QTreeWidgetItem *item = new QTreeWidgetItem();
GxsIdRSTreeWidgetItem *item = new GxsIdRSTreeWidgetItem(NULL,GxsIdDetails::ICON_TYPE_AVATAR) ;
treeWidget->addTopLevelItem(item);
RsIdentityDetails details ;
@ -177,7 +184,13 @@ void GlobalRouterStatistics::updateContent()
if(nicknames.isEmpty())
nicknames = tr("Unknown");
QDateTime routingtime;
routingtime.setTime_t(cache_infos[i].routing_time);
QDateTime senttime;
senttime.setTime_t(cache_infos[i].last_sent_time);
item -> setId(cache_infos[i].destination,COL_NICKNAME, false) ;
item -> setData(COL_ID, Qt::DisplayRole, QString::number(cache_infos[i].mid,16).rightJustified(16,'0'));
item -> setData(COL_NICKNAME, Qt::DisplayRole, nicknames ) ;
item -> setData(COL_DESTINATION, Qt::DisplayRole, QString::fromStdString(cache_infos[i].destination.toStdString()));
@ -185,9 +198,11 @@ void GlobalRouterStatistics::updateContent()
item -> setData(COL_TUNNELSTATUS, Qt::DisplayRole, tunnel_status_string[cache_infos[i].tunnel_status % 3]);
item -> setData(COL_DATASIZE, Qt::DisplayRole, misc::friendlyUnit(cache_infos[i].data_size));
item -> setData(COL_DATAHASH, Qt::DisplayRole, QString::fromStdString(cache_infos[i].item_hash.toStdString()));
item -> setData(COL_RECEIVED, Qt::DisplayRole, QString::number(now - cache_infos[i].routing_time));
item -> setData(COL_SEND, Qt::DisplayRole, QString::number(now - cache_infos[i].last_sent_time));
item -> setData(COL_DUPLICATION_FACTOR, Qt::DisplayRole, QString::number(cache_infos[i].duplication_factor));
item -> setData(COL_RECEIVED, Qt::DisplayRole, DateTime::formatDateTime(routingtime));
item -> setData(COL_SEND, Qt::DisplayRole, DateTime::formatDateTime(senttime));
item -> setData(COL_DUPLICATION_FACTOR, Qt::DisplayRole, QString::number(cache_infos[i].duplication_factor));
item -> setData(COL_RECEIVEDTIME, Qt::DisplayRole, QString::number(now - cache_infos[i].routing_time));
item -> setData(COL_SENDTIME, Qt::DisplayRole, QString::number(now - cache_infos[i].last_sent_time));
}
}

View File

@ -91,6 +91,21 @@
<string>Data hash</string>
</property>
</column>
<column>
<property name="text">
<string>Receive time</string>
</property>
</column>
<column>
<property name="text">
<string>Sending time</string>
</property>
</column>
<column>
<property name="text">
<string>Branching factor</string>
</property>
</column>
<column>
<property name="text">
<string>Receive time (secs ago)</string>
@ -101,11 +116,6 @@
<string>Sending time (secs ago)</string>
</property>
</column>
<column>
<property name="text">
<string>Branching factor</string>
</property>
</column>
</widget>
</item>
</layout>

View File

@ -33,7 +33,6 @@
#include <QTreeWidget>
#include <QWheelEvent>
#include <retroshare/rsgxstrans.h>
#include <retroshare/rspeers.h>
#include <retroshare/rsidentity.h>
@ -47,6 +46,8 @@
#include "gui/common/UIStateHelper.h"
#include "util/misc.h"
#include "gui/gxs/GxsIdLabel.h"
#include "gui/gxs/GxsIdDetails.h"
#include "gui/gxs/GxsIdTreeWidgetItem.h"
#define COL_PENDING_ID 0
#define COL_PENDING_DESTINATION 1
@ -55,6 +56,8 @@
#define COL_PENDING_DATAHASH 4
#define COL_PENDING_SEND 5
#define COL_PENDING_GROUP_ID 6
#define COL_PENDING_SENDTIME 7
#define COL_PENDING_DESTINATION_ID 8
#define COL_GROUP_GRP_ID 0
#define COL_GROUP_NUM_MSGS 1
@ -89,9 +92,11 @@ GxsTransportStatistics::GxsTransportStatistics(QWidget *parent)
/* Set header resize modes and initial section sizes Uploads TreeView*/
QHeaderView_setSectionResizeMode(treeWidget->header(), QHeaderView::ResizeToContents);
QHeaderView_setSectionResizeMode(groupTreeWidget->header(), QHeaderView::ResizeToContents);
connect(treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(CustomPopupMenu(QPoint)));
treeWidget->setColumnHidden(COL_PENDING_DESTINATION_ID,true);
// load settings
processSettings(true);
@ -204,6 +209,8 @@ void GxsTransportStatistics::updateContent()
//time_t now = time(NULL) ;
// 1 - fill the table for pending packets
time_t now = time(NULL) ;
groupBox->setTitle(tr("Pending data items")+": " + QString::number(transinfo.outgoing_records.size()) );
@ -211,7 +218,8 @@ void GxsTransportStatistics::updateContent()
{
const RsGxsTransOutgoingRecord& rec(transinfo.outgoing_records[i]) ;
QTreeWidgetItem *item = new QTreeWidgetItem();
//QTreeWidgetItem *item = new QTreeWidgetItem();
GxsIdRSTreeWidgetItem *item = new GxsIdRSTreeWidgetItem(NULL,GxsIdDetails::ICON_TYPE_AVATAR) ;
treeWidget->addTopLevelItem(item);
RsIdentityDetails details ;
@ -221,17 +229,19 @@ void GxsTransportStatistics::updateContent()
if(nickname.isEmpty())
nickname = tr("Unknown");
item -> setId(rec.recipient,COL_PENDING_DESTINATION, false) ;
item -> setData(COL_PENDING_ID, Qt::DisplayRole, QString::number(rec.trans_id,16).rightJustified(8,'0'));
item -> setData(COL_PENDING_DATASTATUS, Qt::DisplayRole, getStatusString(rec.status));
item -> setData(COL_PENDING_DATASIZE, Qt::DisplayRole, misc::friendlyUnit(rec.data_size));
item -> setData(COL_PENDING_DATAHASH, Qt::DisplayRole, QString::fromStdString(rec.data_hash.toStdString()));
item -> setData(COL_PENDING_SEND, Qt::DisplayRole, QDateTime::fromTime_t(rec.send_TS).toString());
item -> setData(COL_PENDING_GROUP_ID, Qt::DisplayRole, QString::fromStdString(rec.group_id.toStdString()));
item -> setData(COL_PENDING_DESTINATION_ID, Qt::DisplayRole, QString::fromStdString(rec.recipient.toStdString()));
item -> setData(COL_PENDING_SENDTIME, Qt::DisplayRole, QString::number(now - rec.send_TS));
GxsIdLabel *label = new GxsIdLabel() ;
label->setId(rec.recipient) ;
item->setTextAlignment(COL_PENDING_DATASIZE, Qt::AlignRight );
item->setTextAlignment(COL_PENDING_SEND, Qt::AlignRight );
treeWidget -> setItemWidget(item,COL_PENDING_DESTINATION, label) ;
}
// 2 - fill the table for pending group data
@ -293,6 +303,16 @@ void GxsTransportStatistics::updateContent()
GxsIdLabel *label = new GxsIdLabel();
label->setId(meta.mAuthorId) ;
groupTreeWidget->setItemWidget(sitem,COL_GROUP_GRP_ID,label) ;
RsIdentityDetails idDetails ;
rsIdentity->getIdDetails(meta.mAuthorId,idDetails);
QPixmap pixmap ;
if(idDetails.mAvatar.mSize == 0 || !GxsIdDetails::loadPixmapFromData(idDetails.mAvatar.mData, idDetails.mAvatar.mSize, pixmap,GxsIdDetails::SMALL))
pixmap = GxsIdDetails::makeDefaultIcon(meta.mAuthorId,GxsIdDetails::SMALL);
sitem->setIcon(COL_GROUP_GRP_ID, QIcon(pixmap));
sitem->setData(COL_GROUP_UNIQUE_ID, Qt::DisplayRole,QString::fromStdString(meta.mMsgId.toStdString()));
sitem->setData(COL_GROUP_NUM_MSGS,Qt::DisplayRole, QDateTime::fromTime_t(meta.mPublishTs).toString());
@ -303,7 +323,7 @@ void GxsTransportStatistics::updateContent()
void GxsTransportStatistics::personDetails()
{
QTreeWidgetItem *item = treeWidget->currentItem();
std::string id = item->text(COL_PENDING_DESTINATION).toStdString();
std::string id = item->text(COL_PENDING_DESTINATION_ID).toStdString();
if (id.empty()) {
return;

View File

@ -70,7 +70,7 @@
</column>
<column>
<property name="text">
<string>Sending time (secs ago)</string>
<string>Sending time</string>
</property>
</column>
<column>
@ -78,6 +78,16 @@
<string>Group ID</string>
</property>
</column>
<column>
<property name="text">
<string>Sending time (secs ago)</string>
</property>
</column>
<column>
<property name="text">
<string>Destination ID</string>
</property>
</column>
</widget>
</item>
</layout>
@ -95,6 +105,9 @@
<enum>Qt::Vertical</enum>
</property>
<widget class="QTreeWidget" name="groupTreeWidget">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<column>
<property name="text">
<string>Group ID / Author</string>

View File

@ -241,6 +241,11 @@ Rshare::Rshare(QStringList args, int &argc, char **argv, const QString &dir)
localServer= new QLocalServer();
QObject::connect(localServer, SIGNAL(newConnection()), this, SLOT(slotConnectionEstablished()));
updateLocalServer();
// clear out any old arguments (race condition?)
QSharedMemory newArgs;
newArgs.setKey(QString(TARGET) + "_newArgs");
if(newArgs.attach(QSharedMemory::ReadWrite))
newArgs.detach();
}
}
@ -325,20 +330,27 @@ Rshare::~Rshare()
*/
void Rshare::slotConnectionEstablished()
{
QLocalSocket *socket = localServer->nextPendingConnection();
socket->close();
delete socket;
QSharedMemory newArgs;
newArgs.setKey(QString(TARGET) + "_newArgs");
QLocalSocket *socket = localServer->nextPendingConnection();
if (!newArgs.attach())
{
std::cerr << "(EE) Rshare::slotConnectionEstablished() Unable to attach to shared memory segment."
<< newArgs.errorString().toStdString() << std::endl;
/* this is not an error. It just means we were notified to check
newArgs, but none had been set yet.
TODO: implement separate ping/take messages
std::cerr << "(EE) Rshare::slotConnectionEstablished() Unable to attach to shared memory segment."
<< newArgs.errorString().toStdString() << std::endl;
*/
socket->close();
delete socket;
return;
}
socket->close();
delete socket;
QBuffer buffer;
QDataStream in(&buffer);
QStringList args;

Some files were not shown because too many files have changed in this diff Show More