merged trunk commits 4060-4075 and 4077 into 0.5.1 branch

git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/0.5.1@4078 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2011-03-05 15:09:17 +00:00
parent 489c627c7e
commit 90ccf47d16
37 changed files with 1220 additions and 269 deletions

View file

@ -0,0 +1,66 @@
Mac OSX Build Instructions.
-------------------------------------------
There are several complications with building Retroshare under OSX.
1) Support Libraries must be built and installed seperately.
2) Universal and OSX 10.5 support is a little tricky, mainly due to the support libraries.
Additional Libraries
---------------------
* GnuPG Package, that comes with Retroshare OSX install image. (GnuPG-1.4.9.dmg)
GPG Development libraries
* libassuan (I'm using 2.0.1)
* libgpg-error (I'm using 1.9)
* libgpgme (I'm using 1.3.0)
These libraries use standard UNIX installation systems: AUTOCONF/AUTOMAKE (configure, make, etc)
Unfortunately, this makes it difficult and a little manual to compile Universal and 10.5 libraries.
UPNPC (for OSX and windows)
* miniupnpc (I'm using 1.0)
You will also need to install
* XCode (available on the Apple Install CDs)
* Qt4 (from trolltech.com)
First Compilation...
--------------------
The First challenge is to build Retroshare on your Mac. For this first compilation,
we only build for your specific machine, and not attempt a Generic / 10.5 / Univeral build.
1) Install / Compile all the packages listed above.
be sure to use a configure command like this where applicable to only create a static library.
./configure --enable-static=yes --enable-shared=no CFLAGS="-arch i386" CPPFLAGS="-arch i386"
2) Check out the Retroshare SVN.
3) compile libbitdht:
cd libbitdht/src
qmake
This recreates a xcodeproj file for compilation using XCode.
Open with Xcode, and build.
4) compile libretroshare: same way.
5) compile retroshare-gui: same way.
Creating Retroshare OSX Distribution Packages.
-----------------------------------------------
TODO, once I've got feedback on First Compilation!

View file

@ -495,6 +495,10 @@ int beMsgMatchString(be_node *n, const char *str, int len)
uint32_t beMsgGetY(be_node *n) uint32_t beMsgGetY(be_node *n)
{ {
be_node *val = beMsgGetDictNode(n, "y"); be_node *val = beMsgGetDictNode(n, "y");
if(val == NULL)
return BE_Y_UNKNOWN ;
if (val->type != BE_STR) if (val->type != BE_STR)
{ {
return BE_Y_UNKNOWN; return BE_Y_UNKNOWN;
@ -539,7 +543,10 @@ uint32_t beMsgType(be_node *n)
#ifdef DEBUG_MSG_TYPE #ifdef DEBUG_MSG_TYPE
std::cerr << "bsMsgType() QUERY MSG TYPE" << std::endl; std::cerr << "bsMsgType() QUERY MSG TYPE" << std::endl;
#endif #endif
be_node *query = beMsgGetDictNode(n, "q"); be_node *query = beMsgGetDictNode(n, "q");
if(query == NULL)
return BITDHT_MSG_TYPE_UNKNOWN;
if (beMsgMatchString(query, "ping", 4)) if (beMsgMatchString(query, "ping", 4))
{ {
@ -800,11 +807,11 @@ int beMsgGetListStrings(be_node *n, std::list<std::string> &values)
for(int i = 0; n->val.l[i] != NULL; i++) for(int i = 0; n->val.l[i] != NULL; i++)
{ {
be_node *val = n->val.l[i]; be_node *val = n->val.l[i];
if (val->type != BE_STR)
{ if (val == NULL || val->type != BE_STR)
return 0; return 0;
}
int len = be_str_len(val); int len = be_str_len(val);
std::string str; std::string str;
str.append(val->val.s, len); str.append(val->val.s, len);
values.push_back(str); values.push_back(str);

View file

@ -453,13 +453,13 @@ void FileIndexMonitor::run()
{ {
updateCycle(); updateCycle();
while(m_bRun) while(isRunning())
{ {
for(int i = 0; i < updatePeriod; i++) for(int i = 0; i < updatePeriod; i++)
{ {
if (m_bRun == false) { if (isRunning() == false) {
return; return;
} }
@ -515,7 +515,7 @@ void FileIndexMonitor::updateCycle()
cache_is_new = useHashCache && hashCache.empty() ; cache_is_new = useHashCache && hashCache.empty() ;
} }
while(moretodo) while(isRunning() && moretodo)
{ {
/* sleep a bit for each loop */ /* sleep a bit for each loop */
/********************************** WINDOWS/UNIX SPECIFIC PART ******************/ /********************************** WINDOWS/UNIX SPECIFIC PART ******************/
@ -571,8 +571,8 @@ void FileIndexMonitor::updateCycle()
#endif #endif
/* check for the dir existance */ /* check for the dir existance */
librs::util::FolderIterator dirIt(realpath); librs::util::FolderIterator dirIt(realpath);
if (!dirIt.isValid()) if (!dirIt.isValid())
{ {
#ifdef FIM_DEBUG #ifdef FIM_DEBUG
std::cerr << "FileIndexMonitor::updateCycle()"; std::cerr << "FileIndexMonitor::updateCycle()";
@ -617,20 +617,20 @@ void FileIndexMonitor::updateCycle()
to_hash.back().realpath = realpath ; to_hash.back().realpath = realpath ;
to_hash.back().dirpath = dirpath ; to_hash.back().dirpath = dirpath ;
while(dirIt.readdir()) while(isRunning() && dirIt.readdir())
{ {
/* check entry type */ /* check entry type */
std::string fname; std::string fname;
dirIt.d_name(fname); dirIt.d_name(fname);
std::string fullname = realpath + "/" + fname; std::string fullname = realpath + "/" + fname;
#ifdef FIM_DEBUG #ifdef FIM_DEBUG
std::cerr << "calling stats on " << fullname <<std::endl; std::cerr << "calling stats on " << fullname <<std::endl;
#endif #endif
#ifdef WINDOWS_SYS #ifdef WINDOWS_SYS
std::wstring wfullname; std::wstring wfullname;
librs::util::ConvertUtf8ToUtf16(fullname, wfullname); librs::util::ConvertUtf8ToUtf16(fullname, wfullname);
if (-1 != _wstati64(wfullname.c_str(), &buf)) if (-1 != _wstati64(wfullname.c_str(), &buf))
#else #else
if (-1 != stat64(fullname.c_str(), &buf)) if (-1 != stat64(fullname.c_str(), &buf))
#endif #endif
@ -738,7 +738,7 @@ void FileIndexMonitor::updateCycle()
// Now, hash all files at once. // Now, hash all files at once.
// //
if(!to_hash.empty()) if(isRunning() && !to_hash.empty())
hashFiles(to_hash) ; hashFiles(to_hash) ;
cb->notifyHashingInfo(NOTIFY_HASHTYPE_FINISH, "") ; cb->notifyHashingInfo(NOTIFY_HASHTYPE_FINISH, "") ;
@ -827,9 +827,12 @@ void FileIndexMonitor::hashFiles(const std::vector<DirContentToHash>& to_hash)
uint64_t hashed_size=0 ; uint64_t hashed_size=0 ;
uint64_t last_save_size=0 ; uint64_t last_save_size=0 ;
// check if thread is running
bool running = isRunning();
/* update files */ /* update files */
for(uint32_t i=0;i<to_hash.size();++i) for(uint32_t i=0;running && i<to_hash.size();++i)
for(uint32_t j=0;j<to_hash[i].fentries.size();++j,++cnt) for(uint32_t j=0;running && j<to_hash[i].fentries.size();++j,++cnt)
{ {
// This is a very basic progress notification. To be more complete and user friendly, one would // This is a very basic progress notification. To be more complete and user friendly, one would
// rather send a completion ratio based on the size of files vs/ total size. // rather send a completion ratio based on the size of files vs/ total size.
@ -846,7 +849,7 @@ void FileIndexMonitor::hashFiles(const std::vector<DirContentToHash>& to_hash)
// //
if(useHashCache && hashCache.find(real_path,fe.size,fe.modtime,fe.hash)) if(useHashCache && hashCache.find(real_path,fe.size,fe.modtime,fe.hash))
fi.updateFileEntry(to_hash[i].dirpath,fe,stamp); fi.updateFileEntry(to_hash[i].dirpath,fe,stamp);
else if(RsDirUtil::getFileHash(real_path, fe.hash,fe.size)) // not found, then hash it. else if(RsDirUtil::getFileHash(real_path, fe.hash,fe.size, this)) // not found, then hash it.
{ {
RsStackMutex stack(fiMutex); /**** LOCKED DIRS ****/ RsStackMutex stack(fiMutex); /**** LOCKED DIRS ****/
@ -893,6 +896,9 @@ void FileIndexMonitor::hashFiles(const std::vector<DirContentToHash>& to_hash)
if(useHashCache) if(useHashCache)
hashCache.save() ; hashCache.save() ;
} }
// check if thread is running
running = isRunning();
} }
cb->notifyListChange(NOTIFY_LIST_DIRLIST_LOCAL, 0); cb->notifyListChange(NOTIFY_LIST_DIRLIST_LOCAL, 0);

View file

@ -209,7 +209,7 @@ void ftController::run()
/* check the queues */ /* check the queues */
uint32_t cnt = 0 ; uint32_t cnt = 0 ;
while(m_bRun) while(isRunning())
{ {
#ifdef WIN32 #ifdef WIN32
Sleep(1000); Sleep(1000);

View file

@ -49,7 +49,7 @@ void ftExtraList::run()
time_t cleanup = 0; time_t cleanup = 0;
time_t now = 0; time_t now = 0;
while (m_bRun) while (isRunning())
{ {
#ifdef DEBUG_ELIST #ifdef DEBUG_ELIST
//std::cerr << "ftExtraList::run() Iteration"; //std::cerr << "ftExtraList::run() Iteration";

View file

@ -225,7 +225,7 @@ CacheTransfer *ftServer::getCacheTransfer()
void ftServer::run() void ftServer::run()
{ {
while(m_bRun) while(isRunning())
{ {
mFtDataplex->deleteUnusedServers() ; mFtDataplex->deleteUnusedServers() ;
#ifdef WIN32 #ifdef WIN32

View file

@ -358,7 +358,7 @@ void AuthGPGimpl::run()
{ {
int count = 0; int count = 0;
while (m_bRun) while (isRunning())
{ {
#ifdef WIN32 #ifdef WIN32
Sleep(100); Sleep(100);

View file

@ -110,7 +110,7 @@ void RsServer::run()
int min = 0; int min = 0;
int loop = 0; int loop = 0;
while(m_bRun) while(isRunning())
{ {
#ifndef WINDOWS_SYS #ifndef WINDOWS_SYS
usleep((int) (timeDelta * 1000000)); usleep((int) (timeDelta * 1000000));

View file

@ -690,7 +690,7 @@ bool p3GroupDistrib::loadGroupKey(RsDistribGrpKey *newKey, bool historical)
std::cerr << std::endl; std::cerr << std::endl;
#endif #endif
if(!updateOk) // if(!updateOk)
delete newKey; delete newKey;
newKey = NULL; newKey = NULL;

View file

@ -32,6 +32,7 @@
#include "util/rsdir.h" #include "util/rsdir.h"
#include "pqi/pqinotify.h" #include "pqi/pqinotify.h"
#include "retroshare/rstypes.h" #include "retroshare/rstypes.h"
#include "rsthreads.h"
#include <string> #include <string>
#include <iostream> #include <iostream>
#include <algorithm> #include <algorithm>
@ -451,6 +452,8 @@ bool RsDirUtil::checkCreateDirectory(const std::string& dir)
std::cerr << "check_create_directory()"; std::cerr << "check_create_directory()";
std::cerr <<std::endl<< "\tcreated:" <<dir<<std::endl; std::cerr <<std::endl<< "\tcreated:" <<dir<<std::endl;
#endif #endif
return 1;
} }
#ifdef RSDIR_DEBUG #ifdef RSDIR_DEBUG
@ -526,7 +529,7 @@ bool RsDirUtil::hashFile(const std::string& filepath,
#include <iomanip> #include <iomanip>
/* Function to hash, and get details of a file */ /* Function to hash, and get details of a file */
bool RsDirUtil::getFileHash(const std::string& filepath, std::string &hash, uint64_t &size) bool RsDirUtil::getFileHash(const std::string& filepath, std::string &hash, uint64_t &size, RsThread *thread /*= NULL*/)
{ {
FILE *fd; FILE *fd;
int len; int len;
@ -549,14 +552,32 @@ bool RsDirUtil::getFileHash(const std::string& filepath, std::string &hash, uint
size = ftello64(fd); size = ftello64(fd);
fseeko64(fd, 0, SEEK_SET); fseeko64(fd, 0, SEEK_SET);
/* check if thread is running */
bool isRunning = thread ? thread->isRunning() : true;
int runningCheckCount = 0;
SHA1_Init(sha_ctx); SHA1_Init(sha_ctx);
while((len = fread(gblBuf,1, 512, fd)) > 0) while(isRunning && (len = fread(gblBuf,1, 512, fd)) > 0)
{ {
SHA1_Update(sha_ctx, gblBuf, len); SHA1_Update(sha_ctx, gblBuf, len);
if (thread && ++runningCheckCount > (10 * 1024)) {
/* check all 50MB if thread is running */
isRunning = thread->isRunning();
runningCheckCount = 0;
}
}
/* Thread has ended */
if (isRunning == false)
{
delete sha_ctx;
fclose(fd);
return false;
} }
/* reading failed for some reason */ /* reading failed for some reason */
if (ferror(fd)) if (ferror(fd))
{ {
delete sha_ctx; delete sha_ctx;
fclose(fd); fclose(fd);
@ -565,7 +586,7 @@ bool RsDirUtil::getFileHash(const std::string& filepath, std::string &hash, uint
SHA1_Final(&sha_buf[0], sha_ctx); SHA1_Final(&sha_buf[0], sha_ctx);
std::ostringstream tmpout; std::ostringstream tmpout;
for(int i = 0; i < SHA_DIGEST_LENGTH; i++) for(int i = 0; i < SHA_DIGEST_LENGTH; i++)
{ {
tmpout << std::setw(2) << std::setfill('0') << std::hex << (unsigned int) (sha_buf[i]); tmpout << std::setw(2) << std::setfill('0') << std::hex << (unsigned int) (sha_buf[i]);

View file

@ -33,6 +33,7 @@
#include <stdint.h> #include <stdint.h>
class CRC32Map ; class CRC32Map ;
class RsThread;
namespace RsDirUtil { namespace RsDirUtil {
@ -64,7 +65,7 @@ bool checkCreateDirectory(const std::string& dir);
bool cleanupDirectory(const std::string& dir, const std::list<std::string> &keepFiles); bool cleanupDirectory(const std::string& dir, const std::list<std::string> &keepFiles);
bool hashFile(const std::string& filepath, std::string &name, std::string &hash, uint64_t &size); bool hashFile(const std::string& filepath, std::string &name, std::string &hash, uint64_t &size);
bool getFileHash(const std::string& filepath,std::string &hash, uint64_t &size); bool getFileHash(const std::string& filepath,std::string &hash, uint64_t &size, RsThread *thread = NULL);
std::wstring getWideTopDir(std::wstring); std::wstring getWideTopDir(std::wstring);

View file

@ -82,7 +82,7 @@ pthread_t createThread(RsThread &thread)
RsThread::RsThread () RsThread::RsThread ()
{ {
m_bRun = true; mIsRunning = true;
#ifdef WINDOWS_SYS #ifdef WINDOWS_SYS
memset (&mTid, 0, sizeof(mTid)); memset (&mTid, 0, sizeof(mTid));
@ -93,7 +93,8 @@ RsThread::RsThread ()
void RsThread::join() /* waits for the the mTid thread to stop */ void RsThread::join() /* waits for the the mTid thread to stop */
{ {
m_bRun = false; // do we need a mutex for this ?
mIsRunning = false;
void *ptr; void *ptr;
pthread_join(mTid, &ptr); pthread_join(mTid, &ptr);
@ -104,6 +105,12 @@ void RsThread::stop()
pthread_exit(NULL); pthread_exit(NULL);
} }
bool RsThread::isRunning()
{
// do we need a mutex for this ?
return mIsRunning;
}
RsQueueThread::RsQueueThread(uint32_t min, uint32_t max, double relaxFactor ) RsQueueThread::RsQueueThread(uint32_t min, uint32_t max, double relaxFactor )
:mMinSleep(min), mMaxSleep(max), mRelaxFactor(relaxFactor) :mMinSleep(min), mMaxSleep(max), mRelaxFactor(relaxFactor)
{ {
@ -113,7 +120,7 @@ RsQueueThread::RsQueueThread(uint32_t min, uint32_t max, double relaxFactor )
void RsQueueThread::run() void RsQueueThread::run()
{ {
while(m_bRun) while(isRunning())
{ {
bool doneWork = false; bool doneWork = false;
while(workQueued() && doWork()) while(workQueued() && doWork())

View file

@ -118,10 +118,13 @@ virtual void run() = 0; /* called once the thread is started */
virtual void join(); /* waits for the the mTid thread to stop */ virtual void join(); /* waits for the the mTid thread to stop */
virtual void stop(); /* calls pthread_exit() */ virtual void stop(); /* calls pthread_exit() */
bool isRunning();
pthread_t mTid; pthread_t mTid;
RsMutex mMutex; RsMutex mMutex;
protected:
bool m_bRun; private:
bool mIsRunning;
}; };

View file

@ -170,14 +170,21 @@ void FixedAllocator::printStatistics() const
SmallObjectAllocator::SmallObjectAllocator(size_t maxObjectSize) SmallObjectAllocator::SmallObjectAllocator(size_t maxObjectSize)
: _maxObjectSize(maxObjectSize) : _maxObjectSize(maxObjectSize)
{ {
RsStackMutex m(SmallObject::_mtx) ;
_lastAlloc = NULL ; _lastAlloc = NULL ;
_lastDealloc = NULL ; _lastDealloc = NULL ;
_active = true ;
} }
SmallObjectAllocator::~SmallObjectAllocator() SmallObjectAllocator::~SmallObjectAllocator()
{ {
RsStackMutex m(SmallObject::_mtx) ;
for(std::map<int,FixedAllocator*>::const_iterator it(_pool.begin());it!=_pool.end();++it) for(std::map<int,FixedAllocator*>::const_iterator it(_pool.begin());it!=_pool.end();++it)
delete it->second ; delete it->second ;
_active = false ;
} }
void *SmallObjectAllocator::allocate(size_t bytes) void *SmallObjectAllocator::allocate(size_t bytes)
@ -255,6 +262,10 @@ void *SmallObject::operator new(size_t size)
#endif #endif
RsStackMutex m(_mtx) ; RsStackMutex m(_mtx) ;
if(!_allocator._active)
return (void*)NULL;
void *p = _allocator.allocate(size) ; void *p = _allocator.allocate(size) ;
#ifdef DEBUG_MEMORY #ifdef DEBUG_MEMORY
std::cerr << "new RsItem: " << p << ", size=" << size << std::endl; std::cerr << "new RsItem: " << p << ", size=" << size << std::endl;
@ -265,6 +276,10 @@ void *SmallObject::operator new(size_t size)
void SmallObject::operator delete(void *p,size_t size) void SmallObject::operator delete(void *p,size_t size)
{ {
RsStackMutex m(_mtx) ; RsStackMutex m(_mtx) ;
if(!_allocator._active)
return ;
_allocator.deallocate(p,size) ; _allocator.deallocate(p,size) ;
#ifdef DEBUG_MEMORY #ifdef DEBUG_MEMORY
std::cerr << "del RsItem: " << p << ", size=" << size << std::endl; std::cerr << "del RsItem: " << p << ", size=" << size << std::endl;
@ -274,6 +289,10 @@ void SmallObject::operator delete(void *p,size_t size)
void SmallObject::printStatistics() void SmallObject::printStatistics()
{ {
RsStackMutex m(_mtx) ; RsStackMutex m(_mtx) ;
if(!_allocator._active)
return ;
_allocator.printStatistics() ; _allocator.printStatistics() ;
} }

View file

@ -85,6 +85,8 @@ namespace RsMemoryManagement
void deallocate(void *p,size_t size) ; void deallocate(void *p,size_t size) ;
void printStatistics() const ; void printStatistics() const ;
bool _active ;
private: private:
std::map<int,FixedAllocator*> _pool ; std::map<int,FixedAllocator*> _pool ;
FixedAllocator *_lastAlloc ; FixedAllocator *_lastAlloc ;
@ -105,6 +107,8 @@ namespace RsMemoryManagement
private: private:
static SmallObjectAllocator _allocator ; static SmallObjectAllocator _allocator ;
static RsMutex _mtx; static RsMutex _mtx;
friend class SmallObjectAllocator ;
}; };
extern void printStatistics() ; extern void printStatistics() ;

View file

@ -1,31 +1,136 @@
Changes for v0.5.1* Changes for v0.5.1a
* custom status now sent without needing to have a private chat New features (DHT, Channels, Network View)
- getcustom status now generate a requests to that peer. Improved stability w.r.t. previous version 0.5.0g"
- setowncustom status now generates an 'status available' item sent to all peers Added lots of improvements, check for details svn log entrys
* added new const ids for custom status 'request' and 'available'
* Udp connection uses now dyndns when available Changes for v0.5.0g
* Remove some error detection in deserial for dynDNS backward compatibility
* Add the setDynDNS to the confcertdialog * corrected a bug that caused file copy error: a closeFile() was missing when the file is complete.
* fixed MessengerWindow TreeWidget stylesheet
* fixed to get work rsStatus under Windows
* display Avatar icons on second item in MessengerWindow, when no Avatar pictures is available show a default one. Changes for v0.5.0f
* restored open messenger to main window left hand panel
* replaced messenger peer icons with avatars * restored the retroshare-nogui executable
* removed offline status msg * bug corrections in cachestrapper
* sendstatus is now on qtimer - think of replacing with rs notify call back * bug corrections in RsTunnelItem and p3tunnel
- hack to load file status from previous rs session * better error handling in rstunnelitem on windows
- also removed 'offline' status * removed deadlock in data multiplex
* Added to count new messages on Tray icon Tooltip. * improved p3disc info update
* implemented simple rsStatus for messenger window
* fixed minor bug with messenger window (starts new pop-up chat dialog when peer responds, if private chat started from messenger window)
* removed double definition Changes for v0.5.0e
* Added ShareDialog for ShareManager
* sorting on date in messages and showing time only for same day messages * Made a pass on the code in p3disc.
* Fixed some labels font display problem
* Improved Display Messages Labels: From, Date, Subject, To, redesign the To Label to display it more user friendly * Corrected some bugs:
* Added to display text for Dir counts - suppressed an unwanted return in packet treatment
* Added to display filesize in Bytes for Details - prevented sending info to a peer about itself
- changed askInfoToAllPeers() such as not to discard info from peers with
NODISC flag (because we especially need info for these)
- enabled receiving p3disc info even if p3discovery is disabled. Indeed,
disabeling p3disc is a measure of protection, so it should limit the
export of p3disc info, not the import.
- removed test discarding info about dummy friends, because it is useless
- don't discard info about peers that have the NODISC flag (meaning that we
especially need info for them)
- added safety check about received GPG keys. Before we relied on this test
being performed by p3ConnMgr::addFriend()
- added some debug info
* put correct (i.e. non conservative) size for RsDiscReply packets
* corrected bug in rsdiscitem that prevented RsDiscReply packets to transfer cp serialiser/rsdiscitems.cc
* switched ip addr finder to on by default (users seem to request it, and its not harmful)
* automatic removal of file lists from deleted peers, at restart (After double check that this does not alter exchange of file lists in any way)
* set heartbeat values to intermediate value
* added verification for file size computation (bug correction)
* augmented the heartbeat parameters, to reduce the stress on connections. Seems to help a lot when the traffic is high.
Changes for v0.5.0d
Package improvements:
* suppressed package dependency on gpg-agent
Improvements:
* implemented a free disk space checking method, with a warning when running low
* fixed proper sorting/updating of IP lists.
* only keep the most recent port for identical ips.
* don't start when the local address+port are already in use to avoid corrupting file lists, config files etc
* added failure tests for fwrite
* added tests against wrong ip 1.0.0.0 on MacOS
Major bug corrections:
* added missing locks in search requests into fimonitor.cc
* Suppressed the possibility for browsable only files to be searched by hash from turtle router.
* cleaned up some deadly code in rsdiscitems.cc, causing crashes
* improved the security of size determination for file lists, that caused a chain reaction ending in crash at clients.
* added missign lock in ftcontroller
Minor bug corrections:
* added a check to avoid (possibly rare) data races in data multiplex
* suppressed double click action for download in Shared File lists
Changes for v0.5.0c
* Fixes two problems in the current group chat:
- the parser fails to embed two links in the same sentence
- the parser can potentially put smileys in the middle of <a> tags
Solution:
Since the message is in HTML, it is parsed into a DOM tree, then that DOM tree
is traversed and only the text nodes are parsed (see HandleRichText.cpp for details).
Bonus fixes:
- missing std:: for endl (which was falling back to its Qt counterpart)
- commenting useless code in PeersDialog::smileyWidgetgroupchat()
- replacing int by size_t
- RetroShare.pro now queries gpgme-config for its include path
* fixed Memory leaks:
- getLocalInterfaces -> iptable = (MIB_IPADDRTABLE *) malloc(dwSize);
- main -> RshareSettings *_settings = new RshareSettings();
- ExtAddrFinder::~ExtAddrFinder - use free for pointer allocated with malloc
* fixed RetroShare stopped responding during signing a key and asking for password.
- The QSingleShotTimer of ConfCertDialog wants to update the gui and stopped in PeerItem::updateItem.
* fixed chat bug that was truncating some messages, due to using a uint16_t to store a local size. Totally backward compatible.
* fixed crash with second open of HelpDialog solved
* implemented a short circuit to local cache transfers.
- This saves a large number of file descriptors, and improves reactivity of the software
Changes for v0.5.0b
* suppressed unused files
* added a checkpoint to file hashing, to save intermediate results every 10 GB
* corrected memory leak in p3disc heart-beat system.
* correct bug with selection with human readable delegate.
* fixed the sorting of SearchDialog by age and by size, by using proper delegates for displaying the numbers.
* Removed the SR_REALSIZE_COL column, that is no longer necessary.
* improved readability of cert generation dialog. Added tooltips, information, and wait cursor
* corrected bug in search: files with size > 2Gb would not be added to transfers
* corrected bug about persistence of default chunk strategy
* fix a gui bug
* The settings in the settings window are only loaded once.
* Saving the settings without changing the network settings doesn't shutdown the connections
* Forwarding a message keep the attached recommended files
- starting with ssl_id which has saved pword, and switching ids at start dialog
- secondary id may or may not have saved pword.
* added check for the result of fscanf
* fixed compatibility issue with dyndns patch
* Ported trunk commit 2780: Set the trust lvl to 3 when accepting a friend and the trust lvl is unknown.
* Removed some potentially harmful (deadlock) code.
* Put some printf into debugging #ifdef
* Bug fix: Checkbox for automatic share of the incoming directory doesn't correctly set with setDown, use setChecked
* ShareManager and RSettingsWin doesn't need to be created all the time
* RSettingsWin: Save the last active page for the current runtime
* ShareManager and DirectoryPage: Show changed shared directories direct after the change
Changes for v0.5.0a Changes for v0.5.0a

View file

@ -144,6 +144,9 @@ p, li { white-space: pre-wrap; }
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Add</string> <string>Add</string>
</property> </property>
@ -197,6 +200,9 @@ p, li { white-space: pre-wrap; }
<height>26</height> <height>26</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Post to Channel</string> <string>Post to Channel</string>
</property> </property>
@ -217,6 +223,9 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item row="0" column="3"> <item row="0" column="3">
<widget class="QPushButton" name="displayButton"> <widget class="QPushButton" name="displayButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Display</string> <string>Display</string>
</property> </property>

View file

@ -619,6 +619,9 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item row="0" column="5"> <item row="0" column="5">
<widget class="QPushButton" name="forumpushButton"> <widget class="QPushButton" name="forumpushButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Add</string> <string>Add</string>
</property> </property>
@ -660,6 +663,9 @@ p, li { white-space: pre-wrap; }
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Start new Thread for Selected Forum</string> <string>Start new Thread for Selected Forum</string>
</property> </property>
@ -677,6 +683,9 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item row="0" column="4"> <item row="0" column="4">
<widget class="QPushButton" name="displayButton"> <widget class="QPushButton" name="displayButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Display</string> <string>Display</string>
</property> </property>
@ -938,6 +947,9 @@ background: white;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Previous Thread</string> <string>Previous Thread</string>
</property> </property>
@ -973,6 +985,9 @@ background: white;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Next Thread</string> <string>Next Thread</string>
</property> </property>
@ -993,6 +1008,9 @@ background: white;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -1080,6 +1098,9 @@ p, li { white-space: pre-wrap; }
<family>MS Shell Dlg 2</family> <family>MS Shell Dlg 2</family>
</font> </font>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reset</string> <string>Reset</string>
</property> </property>
@ -1151,6 +1172,9 @@ border-image: url(:/images/closepressed.png)
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reply Message</string> <string>Reply Message</string>
</property> </property>

View file

@ -93,15 +93,15 @@
/* Images for toolbar icons */ /* Images for toolbar icons */
#define IMAGE_NETWORK2 ":/images/rs1.png" #define IMAGE_NETWORK2 ":/images/rs1.png"
#define IMAGE_PEERS ":/images/groupchat.png" #define IMAGE_PEERS ":/images/groupchat.png"
#define IMAGE_SEARCH ":/images/filefind.png" #define IMAGE_SEARCH ":/images/filefind.png"
#define IMAGE_TRANSFERS ":/images/ktorrent32.png" #define IMAGE_TRANSFERS ":/images/ktorrent32.png"
#define IMAGE_LINKS ":/images/irkick.png" #define IMAGE_LINKS ":/images/irkick.png"
#define IMAGE_FILES ":/images/fileshare24.png" #define IMAGE_FILES ":/images/fileshare32.png"
#define IMAGE_CHANNELS ":/images/channels.png" #define IMAGE_CHANNELS ":/images/channels.png"
#define IMAGE_FORUMS ":/images/konversation.png" #define IMAGE_FORUMS ":/images/konversation.png"
#define IMAGE_PREFERENCES ":/images/kcmsystem24.png" #define IMAGE_PREFERENCES ":/images/kcmsystem24.png"
#define IMAGE_CHAT ":/images/groupchat.png" #define IMAGE_CHAT ":/images/groupchat.png"
#define IMAGE_RETROSHARE ":/images/rstray3.png" #define IMAGE_RETROSHARE ":/images/rstray3.png"
#define IMAGE_ABOUT ":/images/informations_24x24.png" #define IMAGE_ABOUT ":/images/informations_24x24.png"
#define IMAGE_STATISTIC ":/images/utilities-system-monitor.png" #define IMAGE_STATISTIC ":/images/utilities-system-monitor.png"
@ -110,8 +110,8 @@
#define IMAGE_RSM32 ":/images/kdmconfig.png" #define IMAGE_RSM32 ":/images/kdmconfig.png"
#define IMAGE_RSM16 ":/images/rsmessenger16.png" #define IMAGE_RSM16 ":/images/rsmessenger16.png"
#define IMAGE_CLOSE ":/images/close_normal.png" #define IMAGE_CLOSE ":/images/close_normal.png"
#define IMAGE_BLOCK ":/images/blockdevice.png" #define IMAGE_BLOCK ":/images/blockdevice.png"
#define IMAGE_COLOR ":/images/highlight.png" #define IMAGE_COLOR ":/images/highlight.png"
#define IMAGE_GAMES ":/images/kgames.png" #define IMAGE_GAMES ":/images/kgames.png"
#define IMAGE_PHOTO ":/images/lphoto.png" #define IMAGE_PHOTO ":/images/lphoto.png"
#define IMAGE_ADDFRIEND ":/images/add-friend24.png" #define IMAGE_ADDFRIEND ":/images/add-friend24.png"

View file

@ -569,6 +569,9 @@ border: 1px solid #CCCCCC;}</string>
<height>167777</height> <height>167777</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>New Message</string> <string>New Message</string>
</property> </property>
@ -579,7 +582,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Compose</string> <string>Compose</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/folder-draft24.png</normaloff>:/images/folder-draft24.png</iconset> <normaloff>:/images/folder-draft24.png</normaloff>:/images/folder-draft24.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -623,6 +626,9 @@ border: 1px solid #CCCCCC;}</string>
<height>16777</height> <height>16777</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reply to selected message</string> <string>Reply to selected message</string>
</property> </property>
@ -633,7 +639,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Reply</string> <string>Reply</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/replymail-pressed.png</normaloff>:/images/replymail-pressed.png</iconset> <normaloff>:/images/replymail-pressed.png</normaloff>:/images/replymail-pressed.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -664,6 +670,9 @@ border: 1px solid #CCCCCC;}</string>
<height>16777</height> <height>16777</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reply all to selected message</string> <string>Reply all to selected message</string>
</property> </property>
@ -671,7 +680,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Reply all</string> <string>Reply all</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/replymailall24-hover.png</normaloff>:/images/replymailall24-hover.png</iconset> <normaloff>:/images/replymailall24-hover.png</normaloff>:/images/replymailall24-hover.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -702,6 +711,9 @@ border: 1px solid #CCCCCC;}</string>
<height>16777</height> <height>16777</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Forward selected message</string> <string>Forward selected message</string>
</property> </property>
@ -709,7 +721,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Foward</string> <string>Foward</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/mailforward24-hover.png</normaloff>:/images/mailforward24-hover.png</iconset> <normaloff>:/images/mailforward24-hover.png</normaloff>:/images/mailforward24-hover.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -747,6 +759,9 @@ border: 1px solid #CCCCCC;}</string>
<height>16777</height> <height>16777</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Remove selected message</string> <string>Remove selected message</string>
</property> </property>
@ -757,7 +772,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Delete</string> <string>Delete</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/deletemail24.png</normaloff>:/images/deletemail24.png</iconset> <normaloff>:/images/deletemail24.png</normaloff>:/images/deletemail24.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -794,6 +809,9 @@ border: 1px solid #CCCCCC;}</string>
<height>16777</height> <height>16777</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Print selected message</string> <string>Print selected message</string>
</property> </property>
@ -801,7 +819,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Print</string> <string>Print</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/print24.png</normaloff>:/images/print24.png</iconset> <normaloff>:/images/print24.png</normaloff>:/images/print24.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -829,11 +847,14 @@ border: 1px solid #CCCCCC;}</string>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string>Display</string> <string>Display</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/looknfeel.png</normaloff>:/images/looknfeel.png</iconset> <normaloff>:/images/looknfeel.png</normaloff>:/images/looknfeel.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -874,7 +895,7 @@ border: 1px solid #CCCCCC;}</string>
<string/> <string/>
</property> </property>
<property name="pixmap"> <property name="pixmap">
<pixmap>:/images/find-16.png</pixmap> <pixmap resource="images.qrc">:/images/find-16.png</pixmap>
</property> </property>
</widget> </widget>
</item> </item>
@ -895,6 +916,9 @@ border: 1px solid #CCCCCC;}</string>
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reset</string> <string>Reset</string>
</property> </property>
@ -959,6 +983,9 @@ border-image: url(:/images/closepressed.png)
</item> </item>
<item row="0" column="6"> <item row="0" column="6">
<widget class="QToolButton" name="tagButton"> <widget class="QToolButton" name="tagButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Tags</string> <string>Tags</string>
</property> </property>
@ -966,7 +993,7 @@ border-image: url(:/images/closepressed.png)
<string>Tag</string> <string>Tag</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/tag24.png</normaloff>:/images/tag24.png</iconset> <normaloff>:/images/tag24.png</normaloff>:/images/tag24.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
@ -1107,7 +1134,7 @@ border-image: url(:/images/closepressed.png)
<string>Inbox</string> <string>Inbox</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/folder-inbox.png</normaloff>:/images/folder-inbox.png</iconset> <normaloff>:/images/folder-inbox.png</normaloff>:/images/folder-inbox.png</iconset>
</property> </property>
</item> </item>
@ -1116,7 +1143,7 @@ border-image: url(:/images/closepressed.png)
<string>Outbox</string> <string>Outbox</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/folder-outbox.png</normaloff>:/images/folder-outbox.png</iconset> <normaloff>:/images/folder-outbox.png</normaloff>:/images/folder-outbox.png</iconset>
</property> </property>
</item> </item>
@ -1125,7 +1152,7 @@ border-image: url(:/images/closepressed.png)
<string>Draft</string> <string>Draft</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/folder-draft.png</normaloff>:/images/folder-draft.png</iconset> <normaloff>:/images/folder-draft.png</normaloff>:/images/folder-draft.png</iconset>
</property> </property>
</item> </item>
@ -1134,7 +1161,7 @@ border-image: url(:/images/closepressed.png)
<string>Sent</string> <string>Sent</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/folder-sent.png</normaloff>:/images/folder-sent.png</iconset> <normaloff>:/images/folder-sent.png</normaloff>:/images/folder-sent.png</iconset>
</property> </property>
</item> </item>
@ -1143,7 +1170,7 @@ border-image: url(:/images/closepressed.png)
<string>Trash</string> <string>Trash</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/folder-trash.png</normaloff>:/images/folder-trash.png</iconset> <normaloff>:/images/folder-trash.png</normaloff>:/images/folder-trash.png</iconset>
</property> </property>
</item> </item>
@ -1190,7 +1217,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Favorite Tags</string> <string>Favorite Tags</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/tag24.png</normaloff>:/images/tag24.png</iconset> <normaloff>:/images/tag24.png</normaloff>:/images/tag24.png</iconset>
</property> </property>
<property name="checkable"> <property name="checkable">
@ -1324,7 +1351,7 @@ padding: 4px;
<string/> <string/>
</property> </property>
<property name="pixmap"> <property name="pixmap">
<pixmap>:/images/attachment.png</pixmap> <pixmap resource="images.qrc">:/images/attachment.png</pixmap>
</property> </property>
</widget> </widget>
</item> </item>
@ -1353,11 +1380,14 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QPushButton" name="expandFilesButton"> <widget class="QPushButton" name="expandFilesButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/edit_remove24.png</normaloff>:/images/edit_remove24.png</iconset> <normaloff>:/images/edit_remove24.png</normaloff>:/images/edit_remove24.png</iconset>
</property> </property>
<property name="checkable"> <property name="checkable">
@ -1385,6 +1415,9 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item> <item>
<widget class="QPushButton" name="downloadButton"> <widget class="QPushButton" name="downloadButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>&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; <string>&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; } p, li { white-space: pre-wrap; }
@ -1395,7 +1428,7 @@ p, li { white-space: pre-wrap; }
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset resource="images.qrc">
<normaloff>:/images/down.png</normaloff>:/images/down.png</iconset> <normaloff>:/images/down.png</normaloff>:/images/down.png</iconset>
</property> </property>
</widget> </widget>
@ -1832,7 +1865,9 @@ p, li { white-space: pre-wrap; }
<tabstop>msgText</tabstop> <tabstop>msgText</tabstop>
<tabstop>msgList</tabstop> <tabstop>msgList</tabstop>
</tabstops> </tabstops>
<resources/> <resources>
<include location="images.qrc"/>
</resources>
<connections> <connections>
<connection> <connection>
<sender>expandFilesButton</sender> <sender>expandFilesButton</sender>

View file

@ -233,6 +233,9 @@ p, li { white-space: pre-wrap; }
<family>MS Shell Dlg 2</family> <family>MS Shell Dlg 2</family>
</font> </font>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Clear Filter</string> <string>Clear Filter</string>
</property> </property>
@ -295,6 +298,9 @@ border-image: url(:/images/closepressed.png)
</item> </item>
<item> <item>
<widget class="QPushButton" name="viewButton"> <widget class="QPushButton" name="viewButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <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; <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; &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;

View file

@ -399,7 +399,7 @@ void PeersDialog::peertreeWidgetCostumPopupMenu( QPoint point )
iconLabel->setMaximumSize( iconLabel->frameSize().height() + 24, 24 ); iconLabel->setMaximumSize( iconLabel->frameSize().height() + 24, 24 );
hbox->addWidget(iconLabel); hbox->addWidget(iconLabel);
textLabel = new QLabel("<strong>" + tr("RetroShare") + "</strong>", widget ); textLabel = new QLabel("<strong>RetroShare</strong>", widget );
hbox->addWidget(textLabel); hbox->addWidget(textLabel);
@ -1275,7 +1275,7 @@ void PeersDialog::removefriend()
if (rsPeers) if (rsPeers)
{ {
if ((QMessageBox::question(this, tr("RetroShare"),tr("Do you want to remove this Friend?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes) if ((QMessageBox::question(this, "RetroShare",tr("Do you want to remove this Friend?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
{ {
rsPeers->removeFriend(getPeerRsCertId(c)); rsPeers->removeFriend(getPeerRsCertId(c));
emit friendsUpdated() ; emit friendsUpdated() ;
@ -1726,8 +1726,10 @@ void PeersDialog::on_actionClear_Chat_History_triggered()
void PeersDialog::on_actionDelete_Chat_History_triggered() void PeersDialog::on_actionDelete_Chat_History_triggered()
{ {
on_actionClear_Chat_History_triggered(); if ((QMessageBox::question(this, "RetroShare", tr("Do you really want to physically delete the history?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) == QMessageBox::Yes) {
historyKeeper.clear(); on_actionClear_Chat_History_triggered();
historyKeeper.clear();
}
} }
void PeersDialog::smileyWidgetgroupchat() void PeersDialog::smileyWidgetgroupchat()

View file

@ -553,6 +553,9 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item row="0" column="4"> <item row="0" column="4">
<widget class="QPushButton" name="menupushButton"> <widget class="QPushButton" name="menupushButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Add</string> <string>Add</string>
</property> </property>
@ -607,6 +610,9 @@ p, li { white-space: pre-wrap; }
</item> </item>
<item row="0" column="3"> <item row="0" column="3">
<widget class="QPushButton" name="displayButton"> <widget class="QPushButton" name="displayButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Display</string> <string>Display</string>
</property> </property>
@ -965,9 +971,6 @@ background: white;}</string>
</item> </item>
<item> <item>
<widget class="QTextEdit" name="lineEdit"> <widget class="QTextEdit" name="lineEdit">
<property name="toolTip">
<string>Messages entered here are sent to all collected friends</string>
</property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>30</horstretch> <horstretch>30</horstretch>
@ -1001,6 +1004,9 @@ background: white;}</string>
<property name="contextMenuPolicy"> <property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum> <enum>Qt::CustomContextMenu</enum>
</property> </property>
<property name="toolTip">
<string>Messages entered here are sent to all collected friends</string>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QTextEdit#lineEdit{border: 1px solid #CCCCCC; <string notr="true">QTextEdit#lineEdit{border: 1px solid #CCCCCC;
}</string> }</string>
@ -1050,6 +1056,9 @@ border: 1px solid #CCCCCC;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -1088,6 +1097,9 @@ border: 1px solid #CCCCCC;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Bold</string> <string>Bold</string>
</property> </property>
@ -1126,6 +1138,9 @@ border: 1px solid #CCCCCC;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Underline</string> <string>Underline</string>
</property> </property>
@ -1164,6 +1179,9 @@ border: 1px solid #CCCCCC;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Italic</string> <string>Italic</string>
</property> </property>
@ -1202,6 +1220,9 @@ border: 1px solid #CCCCCC;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Font</string> <string>Font</string>
</property> </property>
@ -1237,12 +1258,11 @@ border: 1px solid #CCCCCC;}</string>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <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; <string>Text Color</string>
&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:8.25pt; 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-size:8pt;&quot;&gt;set Text Color&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
@ -1272,6 +1292,9 @@ p, li { white-space: pre-wrap; }
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QPushButton::menu-indicator { <string notr="true">QPushButton::menu-indicator {
subcontrol-origin: padding; subcontrol-origin: padding;
@ -1325,6 +1348,9 @@ p, li { white-space: pre-wrap; }
<height>26</height> <height>26</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Attach File</string> <string>Attach File</string>
</property> </property>

View file

@ -17,6 +17,14 @@ RsAutoUpdatePage::RsAutoUpdatePage(int ms_update_period,QWidget *parent)
_timer->start() ; _timer->start() ;
} }
RsAutoUpdatePage::~RsAutoUpdatePage()
{
if(_timer != NULL)
delete _timer ;
_timer = NULL ;
}
void RsAutoUpdatePage::showEvent(QShowEvent *event) void RsAutoUpdatePage::showEvent(QShowEvent *event)
{ {
//std::cout << "RsAutoUpdatePage::showEvent() In show event !!" << std::endl ; //std::cout << "RsAutoUpdatePage::showEvent() In show event !!" << std::endl ;

View file

@ -19,6 +19,7 @@ class RsAutoUpdatePage: public MainPage
public: public:
RsAutoUpdatePage(int ms_update_period = 1000,QWidget *parent=NULL) ; RsAutoUpdatePage(int ms_update_period = 1000,QWidget *parent=NULL) ;
virtual ~RsAutoUpdatePage() ;
virtual void updateDisplay() {} virtual void updateDisplay() {}

View file

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>574</width> <width>574</width>
<height>344</height> <height>329</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -769,6 +769,9 @@ border: none;}
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reset</string> <string>Reset</string>
</property> </property>
@ -800,6 +803,12 @@ border-image: url(:/images/closepressed.png)
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>16</width> <width>16</width>
@ -830,6 +839,9 @@ border: none;}</string>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButtonsearch"> <widget class="QPushButton" name="pushButtonsearch">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Start Search</string> <string>Start Search</string>
</property> </property>
@ -1042,6 +1054,9 @@ border-image: url(:/images/btn_26_pressed.png) 4;
<family>MS Shell Dlg 2</family> <family>MS Shell Dlg 2</family>
</font> </font>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Clear Filter</string> <string>Clear Filter</string>
</property> </property>

View file

@ -592,6 +592,9 @@ p, li { white-space: pre-wrap; }
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Splitted View</string> <string>Splitted View</string>
</property> </property>
@ -621,6 +624,9 @@ p, li { white-space: pre-wrap; }
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Friends Folders</string> <string>Friends Folders</string>
</property> </property>
@ -650,6 +656,9 @@ p, li { white-space: pre-wrap; }
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>My Folders</string> <string>My Folders</string>
</property> </property>
@ -752,6 +761,9 @@ p, li { white-space: pre-wrap; }
<family>MS Shell Dlg 2</family> <family>MS Shell Dlg 2</family>
</font> </font>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Start Search</string> <string>Start Search</string>
</property> </property>
@ -783,6 +795,9 @@ p, li { white-space: pre-wrap; }
<family>MS Shell Dlg 2</family> <family>MS Shell Dlg 2</family>
</font> </font>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reset</string> <string>Reset</string>
</property> </property>

View file

@ -3,6 +3,8 @@
#include <retroshare/rsturtle.h> #include <retroshare/rsturtle.h>
#include "TurtleRouterDialog.h" #include "TurtleRouterDialog.h"
static const int MAX_TUNNEL_REQUESTS_DISPLAY = 10 ;
TurtleRouterDialog::TurtleRouterDialog(QWidget *parent) TurtleRouterDialog::TurtleRouterDialog(QWidget *parent)
: RsAutoUpdatePage(2000,parent) : RsAutoUpdatePage(2000,parent)
{ {
@ -41,7 +43,11 @@ void TurtleRouterDialog::updateDisplay()
// remove all children of top level objects // remove all children of top level objects
for(int i=0;i<_f2f_TW->topLevelItemCount();++i) for(int i=0;i<_f2f_TW->topLevelItemCount();++i)
while(_f2f_TW->topLevelItem(i)->takeChild(0) != NULL) ; {
QTreeWidgetItem *taken ;
while( (taken = _f2f_TW->topLevelItem(i)->takeChild(0)) != NULL)
delete taken ;
}
for(uint i=0;i<hashes_info.size();++i) for(uint i=0;i<hashes_info.size();++i)
findParentHashItem(hashes_info[i][0]) ; findParentHashItem(hashes_info[i][0]) ;
@ -55,14 +61,14 @@ void TurtleRouterDialog::updateDisplay()
QTreeWidgetItem *parent = findParentHashItem(hash) ; QTreeWidgetItem *parent = findParentHashItem(hash) ;
if(parent->text(0) == QString("Unknown hashes")) if(parent->text(0).left(14) == QString("Unknown hashes"))
unknown_hash_found = true ; unknown_hash_found = true ;
QString str = QString::fromStdString( "Tunnel id: " + tunnels_info[i][0] + "\t [" + tunnels_info[i][2] + "] --> [" + tunnels_info[i][1] + "]\t\t last transfer: " + tunnels_info[i][4] + "\t Speed: " + tunnels_info[i][5] ) ; QString str = QString::fromStdString( "Tunnel id: " + tunnels_info[i][0] + "\t [" + tunnels_info[i][2] + "] --> [" + tunnels_info[i][1] + "]\t\t last transfer: " + tunnels_info[i][4] + "\t Speed: " + tunnels_info[i][5] ) ;
stl.clear() ; stl.clear() ;
stl.push_back(str) ; stl.push_back(str) ;
new QTreeWidgetItem(parent,stl) ; parent->addChild(new QTreeWidgetItem(stl)) ;
} }
for(uint i=0;i<search_reqs_info.size();++i) for(uint i=0;i<search_reqs_info.size();++i)
@ -72,27 +78,41 @@ void TurtleRouterDialog::updateDisplay()
stl.clear() ; stl.clear() ;
stl.push_back(str) ; stl.push_back(str) ;
new QTreeWidgetItem(top_level_s_requests,stl) ; top_level_s_requests->addChild(new QTreeWidgetItem(stl)) ;
} }
top_level_s_requests->setText(0, tr("Search requests") + "(" + QString::number(search_reqs_info.size()) + ")" ) ; top_level_s_requests->setText(0, tr("Search requests") + "(" + QString::number(search_reqs_info.size()) + ")" ) ;
for(uint i=0;i<tunnel_reqs_info.size();++i) int reqs_size = tunnel_reqs_info.size() ;
{
QString str = QString::fromStdString( "Request id: " + tunnel_reqs_info[i][0] + "\t from [" + tunnel_reqs_info[i][1] + "]\t " + tunnel_reqs_info[i][2]) ;
stl.clear() ; for(uint i=0;i<reqs_size;++i)
stl.push_back(str) ; if(i+MAX_TUNNEL_REQUESTS_DISPLAY >= reqs_size || i < MAX_TUNNEL_REQUESTS_DISPLAY)
{
QString str = QString::fromStdString( "Request id: " + tunnel_reqs_info[i][0] + "\t from [" + tunnel_reqs_info[i][1] + "]\t " + tunnel_reqs_info[i][2]) ;
stl.clear() ;
stl.push_back(str) ;
top_level_t_requests->addChild(new QTreeWidgetItem(stl)) ;
}
else if(i == MAX_TUNNEL_REQUESTS_DISPLAY)
{
stl.clear() ;
stl.push_back(QString("...")) ;
top_level_t_requests->addChild(new QTreeWidgetItem(stl)) ;
}
new QTreeWidgetItem(top_level_t_requests,stl) ;
}
top_level_t_requests->setText(0, tr("Tunnel requests") + "("+QString::number(tunnel_reqs_info.size()) + ")") ; top_level_t_requests->setText(0, tr("Tunnel requests") + "("+QString::number(tunnel_reqs_info.size()) + ")") ;
QTreeWidgetItem *unknown_hashs_item = findParentHashItem("") ;
unknown_hashs_item->setText(0,QString("Unknown hashes (") + QString::number(unknown_hashs_item->childCount())+QString(")")) ;
// Ok, this is a N2 search, but there are very few elements in the list. // Ok, this is a N2 search, but there are very few elements in the list.
for(int i=2;i<_f2f_TW->topLevelItemCount();) for(int i=2;i<_f2f_TW->topLevelItemCount();)
{ {
bool found = false ; bool found = false ;
if(_f2f_TW->topLevelItem(i)->text(0) == "Unknown hashes" && unknown_hash_found) if(_f2f_TW->topLevelItem(i)->text(0).left(14) == "Unknown hashes" && unknown_hash_found)
found = true ; found = true ;
if(_f2f_TW->topLevelItem(i)->childCount() > 0) // this saves uploading hashes if(_f2f_TW->topLevelItem(i)->childCount() > 0) // this saves uploading hashes
@ -103,7 +123,7 @@ void TurtleRouterDialog::updateDisplay()
found=true ; found=true ;
if(!found) if(!found)
_f2f_TW->takeTopLevelItem(i) ; delete _f2f_TW->takeTopLevelItem(i) ;
else else
++i ; ++i ;
} }
@ -113,7 +133,7 @@ QTreeWidgetItem *TurtleRouterDialog::findParentHashItem(const std::string& hash)
{ {
// look for the hash, and insert a new element if necessary. // look for the hash, and insert a new element if necessary.
// //
QList<QTreeWidgetItem*> items = _f2f_TW->findItems((hash=="")?QString("Unknown hashes"):QString::fromStdString(hash),Qt::MatchExactly) ; QList<QTreeWidgetItem*> items = _f2f_TW->findItems((hash=="")?QString("Unknown hashes"):QString::fromStdString(hash),Qt::MatchStartsWith) ;
if(items.empty()) if(items.empty())
{ {

View file

@ -833,8 +833,10 @@ void PopupChatDialog::on_actionClear_Chat_History_triggered()
void PopupChatDialog::on_actionDelete_Chat_History_triggered() void PopupChatDialog::on_actionDelete_Chat_History_triggered()
{ {
on_actionClear_Chat_History_triggered(); if ((QMessageBox::question(this, "RetroShare", tr("Do you really want to physically delete the history?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)) == QMessageBox::Yes) {
historyKeeper.clear(); on_actionClear_Chat_History_triggered();
historyKeeper.clear();
}
} }
void PopupChatDialog::updatePeerAvatar(const std::string& peer_id) void PopupChatDialog::updatePeerAvatar(const std::string& peer_id)

View file

@ -325,6 +325,9 @@ stop:0 #FFFFD7, stop:1 #FFFFB2);}</string>
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Close</string> <string>Close</string>
</property> </property>
@ -398,6 +401,9 @@ border-image: url(:/images/closepressed.png)
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QPushButton::menu-indicator { <string notr="true">QPushButton::menu-indicator {
subcontrol-origin: padding; subcontrol-origin: padding;
@ -445,6 +451,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Attach a Picture</string> <string>Attach a Picture</string>
</property> </property>
@ -474,6 +483,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Add a File for your Friend</string> <string>Add a File for your Friend</string>
</property> </property>
@ -535,6 +547,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -563,6 +578,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Bold</string> <string>Bold</string>
</property> </property>
@ -595,6 +613,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Underline</string> <string>Underline</string>
</property> </property>
@ -627,6 +648,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Italic</string> <string>Italic</string>
</property> </property>
@ -659,8 +683,11 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Set Font</string> <string>Font</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
@ -691,6 +718,9 @@ border: 1px solid #CCCCCC;
<height>28</height> <height>28</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Text Color</string> <string>Text Color</string>
</property> </property>

View file

@ -125,6 +125,12 @@ border: none;}
</item> </item>
<item row="0" column="3"> <item row="0" column="3">
<widget class="QComboBox" name="filterCombo"> <widget class="QComboBox" name="filterCombo">
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<item> <item>
<property name="text"> <property name="text">
<string>Title</string> <string>Title</string>
@ -151,6 +157,9 @@ border: none;}
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Reset</string> <string>Reset</string>
</property> </property>

View file

@ -110,6 +110,9 @@ border: 1px solid #CCCCCC;}</string>
</property> </property>
<item> <item>
<widget class="QToolButton" name="attachFileButton"> <widget class="QToolButton" name="attachFileButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Attach File</string> <string>Attach File</string>
</property> </property>
@ -133,6 +136,9 @@ border: 1px solid #CCCCCC;}</string>
</item> </item>
<item> <item>
<widget class="QToolButton" name="emoticonButton"> <widget class="QToolButton" name="emoticonButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -153,6 +159,9 @@ border: 1px solid #CCCCCC;}</string>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="signBox"> <widget class="QCheckBox" name="signBox">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text"> <property name="text">
<string>Sign Message</string> <string>Sign Message</string>
</property> </property>
@ -186,6 +195,9 @@ border: 1px solid #CCCCCC;}</string>
</item> </item>
<item> <item>
<widget class="QToolButton" name="pastersButton"> <widget class="QToolButton" name="pastersButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Paste RetroShare Link</string> <string>Paste RetroShare Link</string>
</property> </property>

View file

@ -431,13 +431,14 @@
<file>images/user/friends24.png</file> <file>images/user/friends24.png</file>
<file>images/user/identity16.png</file> <file>images/user/identity16.png</file>
<file>images/user/identity24.png</file> <file>images/user/identity24.png</file>
<file>images/user/identity32.png</file>
<file>images/user/identity48.png</file>
<file>images/user/identityoffline24.png</file> <file>images/user/identityoffline24.png</file>
<file>images/user/identity24away.png</file> <file>images/user/identity24away.png</file>
<file>images/user/identity24busy.png</file> <file>images/user/identity24busy.png</file>
<file>images/user/identity24idle.png</file> <file>images/user/identity24idle.png</file>
<file>images/user/identityavaiblecyan24.png</file> <file>images/user/identityavaiblecyan24.png</file>
<file>images/user/agt_forum24.png</file> <file>images/user/agt_forum24.png</file>
<file>images/user/identity32.png</file>
<file>images/user/identitygray16.png</file> <file>images/user/identitygray16.png</file>
<file>images/user/add_user16.png</file> <file>images/user/add_user16.png</file>
<file>images/user/personal64.png</file> <file>images/user/personal64.png</file>

View file

@ -126,16 +126,24 @@ void NotifyQt::notifyOwnAvatarChanged()
std::string NotifyQt::askForPassword(const std::string& key_details,bool prev_is_bad) std::string NotifyQt::askForPassword(const std::string& key_details,bool prev_is_bad)
{ {
RsAutoUpdatePage::lockAllEvents() ; RsAutoUpdatePage::lockAllEvents() ;
std::string res = QInputDialog::getText(NULL, tr("GPG key passphrase"), QInputDialog dialog;
(prev_is_bad?tr("Wrong password !") + "\n\n" : QString()) + dialog.setWindowTitle(tr("GPG key passphrase"));
tr("Please enter the password to unlock the following GPG key:") + "\n" + QString::fromStdString(key_details), QLineEdit::Password, NULL, NULL).toStdString(); dialog.setLabelText((prev_is_bad?tr("Wrong password !") + "\n\n" : QString()) +
tr("Please enter the password to unlock the following GPG key:") + "\n" + QString::fromStdString(key_details));
dialog.setTextEchoMode(QLineEdit::Password);
dialog.setWindowIcon(QIcon(":/images/rstray3.png"));
int ret = dialog.exec();
RsAutoUpdatePage::unlockAllEvents() ; RsAutoUpdatePage::unlockAllEvents() ;
return res ; if (ret) {
return dialog.textValue().toStdString();
}
return "";
} }
void NotifyQt::notifyDiscInfoChanged() void NotifyQt::notifyDiscInfoChanged()

View file

@ -1011,12 +1011,12 @@ p, li { white-space: pre-wrap; }
&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:&apos;Arial&apos;; font-size:10pt; font-weight:600;&quot;&gt;Kanäle&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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:&apos;Arial&apos;; font-size:10pt; font-weight:600;&quot;&gt;Kanäle&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+29"/> <location line="+32"/>
<source>Add</source> <source>Add</source>
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
</message> </message>
<message> <message>
<location line="+73"/> <location line="+79"/>
<source>Display</source> <source>Display</source>
<translation>Anzeige</translation> <translation>Anzeige</translation>
</message> </message>
@ -1071,7 +1071,7 @@ p, li { white-space: pre-wrap; }
<translation>Andere Kanäle</translation> <translation>Andere Kanäle</translation>
</message> </message>
<message> <message>
<location filename="../gui/ChannelFeed.ui" line="-168"/> <location filename="../gui/ChannelFeed.ui" line="-171"/>
<location filename="../gui/ChannelFeed.cpp" line="+56"/> <location filename="../gui/ChannelFeed.cpp" line="+56"/>
<source>Post to Channel</source> <source>Post to Channel</source>
<translation>Kanalbeitrag erstellen</translation> <translation>Kanalbeitrag erstellen</translation>
@ -1521,7 +1521,7 @@ p, li { white-space: pre-wrap; }
<translation>Übernehmen und Schliessen</translation> <translation>Übernehmen und Schliessen</translation>
</message> </message>
<message> <message>
<location filename="../gui/connect/ConfCertDialog.cpp" line="+128"/> <location filename="../gui/connect/ConfCertDialog.cpp" line="+133"/>
<location line="+201"/> <location line="+201"/>
<source>RetroShare</source> <source>RetroShare</source>
<translation></translation> <translation></translation>
@ -2377,42 +2377,42 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>CreateForumMsg</name> <name>CreateForumMsg</name>
<message> <message>
<location filename="../gui/forums/CreateForumMsg.ui" line="+321"/> <location filename="../gui/forums/CreateForumMsg.ui" line="+333"/>
<source>Post Forum Msg</source> <source>Post Forum Msg</source>
<translation>Forumbeitrag schreiben</translation> <translation>Forumbeitrag schreiben</translation>
</message> </message>
<message> <message>
<location line="-262"/> <location line="-274"/>
<source>Forum</source> <source>Forum</source>
<translation>Forum</translation> <translation>Forum</translation>
</message> </message>
<message> <message>
<location line="+166"/> <location line="+178"/>
<source>Forum Post</source> <source>Forum Post</source>
<translation>Beitrag</translation> <translation>Beitrag</translation>
</message> </message>
<message> <message>
<location line="-68"/> <location line="-71"/>
<source>Sign Message</source> <source>Sign Message</source>
<translation>Beitrag unterschreiben</translation> <translation>Beitrag unterschreiben</translation>
</message> </message>
<message> <message>
<location line="-80"/> <location line="-89"/>
<source>Subject</source> <source>Subject</source>
<translation>Betreff</translation> <translation>Betreff</translation>
</message> </message>
<message> <message>
<location line="+253"/> <location line="+265"/>
<source>Close</source> <source>Close</source>
<translation>Schliessen</translation> <translation>Schliessen</translation>
</message> </message>
<message> <message>
<location line="-313"/> <location line="-325"/>
<source>Post Forum Message</source> <source>Post Forum Message</source>
<translation>Erstelle Forumbeitrag</translation> <translation>Erstelle Forumbeitrag</translation>
</message> </message>
<message> <message>
<location line="+173"/> <location line="+185"/>
<location filename="../gui/forums/CreateForumMsg.cpp" line="+73"/> <location filename="../gui/forums/CreateForumMsg.cpp" line="+73"/>
<source>Paste RetroShare Link</source> <source>Paste RetroShare Link</source>
<translation>RetroShare Link einfügen</translation> <translation>RetroShare Link einfügen</translation>
@ -2443,12 +2443,12 @@ p, li { white-space: pre-wrap; }
<translation>Zusätzliche Datei hinzufügen</translation> <translation>Zusätzliche Datei hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../gui/forums/CreateForumMsg.ui" line="-76"/> <location filename="../gui/forums/CreateForumMsg.ui" line="-85"/>
<source>Attach File</source> <source>Attach File</source>
<translation>Datei anhängen</translation> <translation>Datei anhängen</translation>
</message> </message>
<message> <message>
<location line="+134"/> <location line="+143"/>
<source>Attach files via drag and drop</source> <source>Attach files via drag and drop</source>
<translation>Hänge Dateien mit Drag&apos;n&apos;Drop an</translation> <translation>Hänge Dateien mit Drag&apos;n&apos;Drop an</translation>
</message> </message>
@ -3698,17 +3698,17 @@ p, li { white-space: pre-wrap; }
&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:&apos;Arial&apos;; font-weight:600;&quot;&gt;Foren&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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:&apos;Arial&apos;; font-weight:600;&quot;&gt;Foren&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+26"/> <location line="+29"/>
<source>Add</source> <source>Add</source>
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
</message> </message>
<message> <message>
<location line="+41"/> <location line="+44"/>
<source>Start new Thread for Selected Forum</source> <source>Start new Thread for Selected Forum</source>
<translation>Starte ein neues Thema im ausgewählten Forum</translation> <translation>Starte ein neues Thema im ausgewählten Forum</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+20"/>
<source>Display</source> <source>Display</source>
<translation>Anzeige</translation> <translation>Anzeige</translation>
</message> </message>
@ -3742,24 +3742,24 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+36"/> <location line="+36"/>
<location line="+264"/> <location line="+276"/>
<source>Date</source> <source>Date</source>
<translation>Datum</translation> <translation>Datum</translation>
</message> </message>
<message> <message>
<location line="-278"/> <location line="-290"/>
<location line="+283"/> <location line="+295"/>
<source>Title</source> <source>Title</source>
<translation>Titel</translation> <translation>Titel</translation>
</message> </message>
<message> <message>
<location line="-264"/> <location line="-276"/>
<location line="+269"/> <location line="+281"/>
<source>Author</source> <source>Author</source>
<translation>Autor</translation> <translation>Autor</translation>
</message> </message>
<message> <message>
<location line="-264"/> <location line="-276"/>
<source>Signed</source> <source>Signed</source>
<translation>Unterzeichnet</translation> <translation>Unterzeichnet</translation>
</message> </message>
@ -3777,17 +3777,17 @@ p, li { white-space: pre-wrap; }
&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-size:10pt; font-weight:600;&quot;&gt;Thema:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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-size:10pt; font-weight:600;&quot;&gt;Thema:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+54"/> <location line="+57"/>
<source>Previous Thread</source> <source>Previous Thread</source>
<translation>Vorheriger Beitrag</translation> <translation>Vorheriger Beitrag</translation>
</message> </message>
<message> <message>
<location line="+35"/> <location line="+38"/>
<source>Next Thread</source> <source>Next Thread</source>
<translation>Nächster Beitrag</translation> <translation>Nächster Beitrag</translation>
</message> </message>
<message> <message>
<location line="+178"/> <location line="+187"/>
<source>Reply Message</source> <source>Reply Message</source>
<translation>Auf Beitrag antworten</translation> <translation>Auf Beitrag antworten</translation>
</message> </message>
@ -3813,7 +3813,7 @@ p, li { white-space: pre-wrap; }
<translation>Erstelle neues Thema</translation> <translation>Erstelle neues Thema</translation>
</message> </message>
<message> <message>
<location filename="../gui/ForumsDialog.ui" line="-164"/> <location filename="../gui/ForumsDialog.ui" line="-170"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&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; &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; } p, li { white-space: pre-wrap; }
@ -3826,7 +3826,7 @@ p, li { white-space: pre-wrap; }
&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-size:8pt;&quot;&gt;Suche Foren&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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-size:8pt;&quot;&gt;Suche Foren&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+28"/> <location line="+31"/>
<source>Reset</source> <source>Reset</source>
<translation>Zurücksetzen</translation> <translation>Zurücksetzen</translation>
</message> </message>
@ -4376,7 +4376,7 @@ Fill in your GPG password when asked, to sign your new key.</source>
<translation>Beschreibung</translation> <translation>Beschreibung</translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="+23"/>
<source>Reset</source> <source>Reset</source>
<translation>Zurücksetzen</translation> <translation>Zurücksetzen</translation>
</message> </message>
@ -6047,7 +6047,7 @@ Willst Du die Nachricht speichern ?</translation>
<context> <context>
<name>MessagesDialog</name> <name>MessagesDialog</name>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="+573"/> <location filename="../gui/MessagesDialog.ui" line="+576"/>
<location filename="../gui/MessagesDialog.cpp" line="+668"/> <location filename="../gui/MessagesDialog.cpp" line="+668"/>
<source>New Message</source> <source>New Message</source>
<translation>Neue Nachricht</translation> <translation>Neue Nachricht</translation>
@ -6063,7 +6063,7 @@ Willst Du die Nachricht speichern ?</translation>
<translation>Nachricht entfernen</translation> <translation>Nachricht entfernen</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="+372"/> <location filename="../gui/MessagesDialog.ui" line="+393"/>
<location filename="../gui/MessagesDialog.cpp" line="-376"/> <location filename="../gui/MessagesDialog.cpp" line="-376"/>
<source>Date</source> <source>Date</source>
<translation>Datum</translation> <translation>Datum</translation>
@ -6076,12 +6076,12 @@ Willst Du die Nachricht speichern ?</translation>
<translation>Von</translation> <translation>Von</translation>
</message> </message>
<message> <message>
<location line="+828"/> <location line="+837"/>
<source>Size</source> <source>Size</source>
<translation>Grösse</translation> <translation>Grösse</translation>
</message> </message>
<message> <message>
<location line="-434"/> <location line="-440"/>
<source>&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; <source>&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; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;
@ -6089,62 +6089,62 @@ p, li { white-space: pre-wrap; }
<translation>&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:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;&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-size:10pt; font-weight:600;&quot;&gt;Empfohlene Dateien&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&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:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;&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-size:10pt; font-weight:600;&quot;&gt;Empfohlene Dateien&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="-701"/> <location line="-722"/>
<source>Reply</source> <source>Reply</source>
<translation>Antworten</translation> <translation>Antworten</translation>
</message> </message>
<message> <message>
<location line="+38"/> <location line="+41"/>
<source>Reply all</source> <source>Reply all</source>
<translation>Allen antworten</translation> <translation>Allen antworten</translation>
</message> </message>
<message> <message>
<location line="+38"/> <location line="+41"/>
<source>Foward</source> <source>Foward</source>
<translation>Weiterleiten</translation> <translation>Weiterleiten</translation>
</message> </message>
<message> <message>
<location line="+48"/> <location line="+51"/>
<source>Delete</source> <source>Delete</source>
<translation>Löschen</translation> <translation>Löschen</translation>
</message> </message>
<message> <message>
<location line="-178"/> <location line="-190"/>
<source>Compose</source> <source>Compose</source>
<translation>Verfassen</translation> <translation>Verfassen</translation>
</message> </message>
<message> <message>
<location line="+48"/> <location line="+51"/>
<source>Reply to selected message</source> <source>Reply to selected message</source>
<translation>Auf gewählte Nachricht antworten</translation> <translation>Auf gewählte Nachricht antworten</translation>
</message> </message>
<message> <message>
<location line="+41"/> <location line="+44"/>
<source>Reply all to selected message</source> <source>Reply all to selected message</source>
<translation>Auf gewählte Nachricht an alle Empfänger antworten</translation> <translation>Auf gewählte Nachricht an alle Empfänger antworten</translation>
</message> </message>
<message> <message>
<location line="+38"/> <location line="+41"/>
<source>Forward selected message</source> <source>Forward selected message</source>
<translation>Gewählte Nachricht weiterleiten</translation> <translation>Gewählte Nachricht weiterleiten</translation>
</message> </message>
<message> <message>
<location line="+45"/> <location line="+48"/>
<source>Remove selected message</source> <source>Remove selected message</source>
<translation>Gewählte Nachricht entfernen</translation> <translation>Gewählte Nachricht entfernen</translation>
</message> </message>
<message> <message>
<location line="+47"/> <location line="+50"/>
<source>Print selected message</source> <source>Print selected message</source>
<translation>Gewählte Nachricht drucken</translation> <translation>Gewählte Nachricht drucken</translation>
</message> </message>
<message> <message>
<location line="+35"/> <location line="+38"/>
<source>Display</source> <source>Display</source>
<translation>Anzeige</translation> <translation>Anzeige</translation>
</message> </message>
<message> <message>
<location line="+66"/> <location line="+69"/>
<source>Reset</source> <source>Reset</source>
<translation>Zurücksetzen</translation> <translation>Zurücksetzen</translation>
</message> </message>
@ -6154,7 +6154,7 @@ p, li { white-space: pre-wrap; }
<translation>Anhänge</translation> <translation>Anhänge</translation>
</message> </message>
<message> <message>
<location line="+177"/> <location line="+180"/>
<location filename="../gui/MessagesDialog.cpp" line="-44"/> <location filename="../gui/MessagesDialog.cpp" line="-44"/>
<location line="+984"/> <location line="+984"/>
<location line="+10"/> <location line="+10"/>
@ -6181,7 +6181,7 @@ p, li { white-space: pre-wrap; }
<translation>Gesendet</translation> <translation>Gesendet</translation>
</message> </message>
<message> <message>
<location line="+520"/> <location line="+526"/>
<source>Cc:</source> <source>Cc:</source>
<translation>Cc:</translation> <translation>Cc:</translation>
</message> </message>
@ -6243,13 +6243,13 @@ p, li { white-space: pre-wrap; }
<translation>Dokument drucken</translation> <translation>Dokument drucken</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="-889"/> <location filename="../gui/MessagesDialog.ui" line="-898"/>
<location filename="../gui/MessagesDialog.cpp" line="-1563"/> <location filename="../gui/MessagesDialog.cpp" line="-1563"/>
<source>Subject</source> <source>Subject</source>
<translation>Betreff</translation> <translation>Betreff</translation>
</message> </message>
<message> <message>
<location line="+523"/> <location line="+532"/>
<source>Subject:</source> <source>Subject:</source>
<translation>Betreff:</translation> <translation>Betreff:</translation>
</message> </message>
@ -6274,7 +6274,7 @@ p, li { white-space: pre-wrap; }
<translation>Prüfsumme</translation> <translation>Prüfsumme</translation>
</message> </message>
<message> <message>
<location line="-972"/> <location line="-987"/>
<source>Print</source> <source>Print</source>
<translation>Drucken</translation> <translation>Drucken</translation>
</message> </message>
@ -6335,7 +6335,7 @@ p, li { white-space: pre-wrap; }
<translation>Allen antworten</translation> <translation>Allen antworten</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="+588"/> <location filename="../gui/MessagesDialog.ui" line="+603"/>
<source>&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; <source>&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; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
@ -6343,19 +6343,19 @@ p, li { white-space: pre-wrap; }
<translation>&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:&apos;Arial&apos;; 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;Alle Dateien runterladen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&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:&apos;Arial&apos;; 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;Alle Dateien runterladen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="-165"/> <location line="-171"/>
<source>Total Inbox:</source> <source>Total Inbox:</source>
<translation>Posteingang gesamt:</translation> <translation>Posteingang gesamt:</translation>
</message> </message>
<message> <message>
<location line="-274"/> <location line="-277"/>
<location filename="../gui/MessagesDialog.cpp" line="-326"/> <location filename="../gui/MessagesDialog.cpp" line="-326"/>
<source>Content</source> <source>Content</source>
<translation>Inhalt</translation> <translation>Inhalt</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<location line="+8"/> <location line="+11"/>
<location filename="../gui/MessagesDialog.cpp" line="-1"/> <location filename="../gui/MessagesDialog.cpp" line="-1"/>
<location line="+180"/> <location line="+180"/>
<source>Tags</source> <source>Tags</source>
@ -7183,7 +7183,7 @@ p, li { white-space: pre-wrap; }
<translation>Bitte geben Sie das Passwort ein um folgenden GPG Schlüssel freizuschalten:</translation> <translation>Bitte geben Sie das Passwort ein um folgenden GPG Schlüssel freizuschalten:</translation>
</message> </message>
<message> <message>
<location line="+122"/> <location line="+130"/>
<source>Examining shared files...</source> <source>Examining shared files...</source>
<translation>Prüfe freigegebene Dateien...</translation> <translation>Prüfe freigegebene Dateien...</translation>
</message> </message>
@ -7382,7 +7382,7 @@ p, li { white-space: pre-wrap; }
<translation>Zertifikate (*.pqi)</translation> <translation>Zertifikate (*.pqi)</translation>
</message> </message>
<message> <message>
<location filename="../gui/PeersDialog.ui" line="+727"/> <location filename="../gui/PeersDialog.ui" line="+733"/>
<source>Status</source> <source>Status</source>
<translation>Status</translation> <translation>Status</translation>
</message> </message>
@ -7504,7 +7504,12 @@ p, li { white-space: pre-wrap; }
<translation>Neuer Gruppenchat</translation> <translation>Neuer Gruppenchat</translation>
</message> </message>
<message> <message>
<location line="+291"/> <location line="+229"/>
<source>Do you really want to physically delete the history?</source>
<translation>Willst Du wirklich den Nachrichtenverlauf physisch löschen?</translation>
</message>
<message>
<location line="+64"/>
<source>Load File</source> <source>Load File</source>
<translation>Lade Datei</translation> <translation>Lade Datei</translation>
</message> </message>
@ -7535,17 +7540,17 @@ p, li { white-space: pre-wrap; }
<translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation> <translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation>
</message> </message>
<message> <message>
<location filename="../gui/PeersDialog.ui" line="+441"/> <location filename="../gui/PeersDialog.ui" line="+453"/>
<source>Italic</source> <source>Italic</source>
<translation>Kursiv</translation> <translation>Kursiv</translation>
</message> </message>
<message> <message>
<location line="-38"/> <location line="-41"/>
<source>Underline</source> <source>Underline</source>
<translation>Unterstrichen</translation> <translation>Unterstrichen</translation>
</message> </message>
<message> <message>
<location line="-586"/> <location line="-601"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&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; &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; } p, li { white-space: pre-wrap; }
@ -7558,12 +7563,12 @@ p, li { white-space: pre-wrap; }
&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-weight:600;&quot;&gt;Freunde&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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-weight:600;&quot;&gt;Freunde&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+16"/>
<source>Add</source> <source>Add</source>
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
</message> </message>
<message> <message>
<location line="+54"/> <location line="+57"/>
<source>Display</source> <source>Display</source>
<translation>Anzeige</translation> <translation>Anzeige</translation>
</message> </message>
@ -7578,12 +7583,12 @@ p, li { white-space: pre-wrap; }
<translation>Statusnachricht ändern</translation> <translation>Statusnachricht ändern</translation>
</message> </message>
<message> <message>
<location line="+112"/> <location line="+145"/>
<source>Messages entered here are sent to all collected friends</source> <source>Messages entered here are sent to all collected friends</source>
<translation type="unfinished"></translation> <translation>Nachrichten, die Du hier eingibst, werden an alle verbundenen Freunde versendet</translation>
</message> </message>
<message> <message>
<location line="+123"/> <location line="+96"/>
<source>Bold</source> <source>Bold</source>
<translation>Fett</translation> <translation>Fett</translation>
</message> </message>
@ -7592,7 +7597,12 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">Nachrichtenverlauf leeren</translation> <translation type="obsolete">Nachrichtenverlauf leeren</translation>
</message> </message>
<message> <message>
<location line="+332"/> <location line="+161"/>
<source>Text Color</source>
<translation>Textfarbe</translation>
</message>
<message>
<location line="+185"/>
<location line="+3"/> <location line="+3"/>
<source>Create new Forum</source> <source>Create new Forum</source>
<translation>Erstelle neues Forum</translation> <translation>Erstelle neues Forum</translation>
@ -7674,40 +7684,43 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="-162"/> <location line="-162"/>
<location filename="../gui/PeersDialog.cpp" line="-1511"/> <location filename="../gui/PeersDialog.cpp" line="-1513"/>
<source>Add Friend</source> <source>Add Friend</source>
<translation>Freund hinzufügen</translation> <translation>Freund hinzufügen</translation>
</message> </message>
<message>
<source>Set Text Color</source>
<translation type="obsolete">Text Farbe</translation>
</message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Create new Profile</source> <source>Create new Profile</source>
<translation>Erstelle neues Profil</translation> <translation>Erstelle neues Profil</translation>
</message> </message>
<message> <message>
<location line="-209"/> <location line="-214"/>
<source>Font</source> <source>Font</source>
<translation>Schriftart</translation> <translation>Schriftart</translation>
</message> </message>
<message> <message>
<location line="-311"/> <location line="-326"/>
<source>Group Chat</source> <source>Group Chat</source>
<translation>Gruppenchat</translation> <translation>Gruppenchat</translation>
</message> </message>
<message> <message>
<location line="+346"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&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; &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; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; 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-size:8pt;&quot;&gt;set Text Color&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &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-size:8pt;&quot;&gt;set Text Color&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <translation type="obsolete">&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; &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; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; 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-size:8pt;&quot;&gt; Text Farbe&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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-size:8pt;&quot;&gt; Text Farbe&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+88"/> <location line="+454"/>
<source>Attach File</source> <source>Attach File</source>
<translation>Datei anhängen</translation> <translation>Datei anhängen</translation>
</message> </message>
@ -7728,13 +7741,7 @@ p, li { white-space: pre-wrap; }
<translation>Nachrichtenverlauf speichern</translation> <translation>Nachrichtenverlauf speichern</translation>
</message> </message>
<message> <message>
<location filename="../gui/PeersDialog.cpp" line="-40"/> <location filename="../gui/PeersDialog.cpp" line="-1"/>
<location line="+876"/>
<source>RetroShare</source>
<translation></translation>
</message>
<message>
<location line="-837"/>
<source>Message Group</source> <source>Message Group</source>
<translation>Gruppe anschreiben</translation> <translation>Gruppe anschreiben</translation>
</message> </message>
@ -7754,7 +7761,7 @@ p, li { white-space: pre-wrap; }
<translation>Willst du diesen Freund entfernen?</translation> <translation>Willst du diesen Freund entfernen?</translation>
</message> </message>
<message> <message>
<location line="+732"/> <location line="+734"/>
<source>Save as...</source> <source>Save as...</source>
<translation>Speichern unter...</translation> <translation>Speichern unter...</translation>
</message> </message>
@ -7790,7 +7797,7 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">Aktivitäten</translation> <translation type="obsolete">Aktivitäten</translation>
</message> </message>
<message> <message>
<location filename="../gui/PeersDialog.cpp" line="-647"/> <location filename="../gui/PeersDialog.cpp" line="-649"/>
<source>is typing...</source> <source>is typing...</source>
<translation>tippt...</translation> <translation>tippt...</translation>
</message> </message>
@ -7805,7 +7812,7 @@ p, li { white-space: pre-wrap; }
<translation>Nachrichtenverlauf</translation> <translation>Nachrichtenverlauf</translation>
</message> </message>
<message> <message>
<location line="-755"/> <location line="-775"/>
<source>Friends</source> <source>Friends</source>
<translation>Freunde</translation> <translation>Freunde</translation>
</message> </message>
@ -8131,7 +8138,12 @@ p, li { white-space: pre-wrap; }
<translation>Avatar zeigen</translation> <translation>Avatar zeigen</translation>
</message> </message>
<message> <message>
<location line="+159"/> <location line="+86"/>
<source>Do you really want to physically delete the history?</source>
<translation>Willst Du wirklich den Nachrichtenverlauf physisch löschen?</translation>
</message>
<message>
<location line="+75"/>
<source>Load Picture File</source> <source>Load Picture File</source>
<translation>Lade Bilddatei</translation> <translation>Lade Bilddatei</translation>
</message> </message>
@ -8146,30 +8158,29 @@ p, li { white-space: pre-wrap; }
<translation>Nachrichten, die Du versendest gehen bei diesem Freund erst wieder ein wenn er Online ist</translation> <translation>Nachrichten, die Du versendest gehen bei diesem Freund erst wieder ein wenn er Online ist</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.ui" line="+567"/> <location filename="../gui/chat/PopupChatDialog.ui" line="+585"/>
<location line="+266"/> <location line="+278"/>
<source>Bold</source> <source>Bold</source>
<translation>Fett</translation> <translation>Fett</translation>
</message> </message>
<message> <message>
<location line="-234"/> <location line="-243"/>
<location line="+244"/> <location line="+253"/>
<source>Underline</source> <source>Underline</source>
<translation>Unterstrichen</translation> <translation>Unterstrichen</translation>
</message> </message>
<message> <message>
<location line="-212"/> <location line="-218"/>
<location line="+207"/> <location line="+213"/>
<source>Italic</source> <source>Italic</source>
<translation>Kursiv</translation> <translation>Kursiv</translation>
</message> </message>
<message> <message>
<location line="-175"/>
<source>Set Font</source> <source>Set Font</source>
<translation>Schriftart setzen</translation> <translation type="obsolete">Schriftart setzen</translation>
</message> </message>
<message> <message>
<location line="+32"/> <location line="-143"/>
<source>Text Color</source> <source>Text Color</source>
<translation>Textfarbe</translation> <translation>Textfarbe</translation>
</message> </message>
@ -8194,7 +8205,12 @@ p, li { white-space: pre-wrap; }
<translation>Nachrichtenverlauf leeren</translation> <translation>Nachrichtenverlauf leeren</translation>
</message> </message>
<message> <message>
<location line="+38"/> <location line="-197"/>
<source>Font</source>
<translation>Schriftart</translation>
</message>
<message>
<location line="+235"/>
<source>Delete Chat History</source> <source>Delete Chat History</source>
<translation>Nachrichtenverlauf löschen</translation> <translation>Nachrichtenverlauf löschen</translation>
</message> </message>
@ -8204,7 +8220,7 @@ p, li { white-space: pre-wrap; }
<translation>Löscht den gespeicherten und angezeigten Chat Verlauf</translation> <translation>Löscht den gespeicherten und angezeigten Chat Verlauf</translation>
</message> </message>
<message> <message>
<location line="-384"/> <location line="-402"/>
<source>Send</source> <source>Send</source>
<translation>Senden</translation> <translation>Senden</translation>
</message> </message>
@ -8213,7 +8229,7 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">Chat Verlauf löschen</translation> <translation type="obsolete">Chat Verlauf löschen</translation>
</message> </message>
<message> <message>
<location line="+351"/> <location line="+369"/>
<source>Disable Emoticons</source> <source>Disable Emoticons</source>
<translation>Deaktiviere Emoticons</translation> <translation>Deaktiviere Emoticons</translation>
</message> </message>
@ -8239,12 +8255,12 @@ p, li { white-space: pre-wrap; }
<translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation> <translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.ui" line="-370"/> <location filename="../gui/chat/PopupChatDialog.ui" line="-388"/>
<source>Add a File for your Friend</source> <source>Add a File for your Friend</source>
<translation>Füge eine Datei für deinen Freund hinzu</translation> <translation>Füge eine Datei für deinen Freund hinzu</translation>
</message> </message>
<message> <message>
<location line="+392"/> <location line="+410"/>
<location line="+3"/> <location line="+3"/>
<source>Save Chat History</source> <source>Save Chat History</source>
<translation>Nachrichtenverlauf speichern</translation> <translation>Nachrichtenverlauf speichern</translation>
@ -8260,18 +8276,18 @@ p, li { white-space: pre-wrap; }
<translation>Text Datei (*.txt );;Alle Dateien (*)</translation> <translation>Text Datei (*.txt );;Alle Dateien (*)</translation>
</message> </message>
<message> <message>
<location line="-718"/> <location line="-720"/>
<source>Your Friend is offline <source>Your Friend is offline
Do you want to send them a Message instead</source> Do you want to send them a Message instead</source>
<translation>Dein Freund ist Offline willst du ihm stattdessen eine Nachricht senden</translation> <translation>Dein Freund ist Offline willst du ihm stattdessen eine Nachricht senden</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.ui" line="-424"/> <location filename="../gui/chat/PopupChatDialog.ui" line="-445"/>
<source>Attach a Picture</source> <source>Attach a Picture</source>
<translation>Bild anhängen</translation> <translation>Bild anhängen</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+761"/> <location filename="../gui/chat/PopupChatDialog.cpp" line="+763"/>
<source>is Idle and may not reply</source> <source>is Idle and may not reply</source>
<translation>antwortet möglicherweise nicht, da der Status auf &quot;Untätig&quot; gesetzt wurde</translation> <translation>antwortet möglicherweise nicht, da der Status auf &quot;Untätig&quot; gesetzt wurde</translation>
</message> </message>
@ -8291,7 +8307,7 @@ Do you want to send them a Message instead</source>
<translation>ist Offline.</translation> <translation>ist Offline.</translation>
</message> </message>
<message> <message>
<location line="-719"/> <location line="-721"/>
<source>Paste RetroShare Link</source> <source>Paste RetroShare Link</source>
<translation>RetroShare Link einfügen</translation> <translation>RetroShare Link einfügen</translation>
</message> </message>
@ -8301,7 +8317,7 @@ Do you want to send them a Message instead</source>
<translation>tippt...</translation> <translation>tippt...</translation>
</message> </message>
<message> <message>
<location filename="../gui/chat/PopupChatDialog.ui" line="-120"/> <location filename="../gui/chat/PopupChatDialog.ui" line="-126"/>
<source>Close</source> <source>Close</source>
<translation>Schliessen</translation> <translation>Schliessen</translation>
</message> </message>
@ -9438,28 +9454,28 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>SearchDialog</name> <name>SearchDialog</name>
<message> <message>
<location filename="../gui/SearchDialog.ui" line="+1146"/> <location filename="../gui/SearchDialog.ui" line="+1155"/>
<source>Sources</source> <source>Sources</source>
<translation>Quellen</translation> <translation>Quellen</translation>
</message> </message>
<message> <message>
<location line="-167"/> <location line="-170"/>
<source>Results</source> <source>Results</source>
<translation>Ergebnisse</translation> <translation>Ergebnisse</translation>
</message> </message>
<message> <message>
<location line="+316"/> <location line="+319"/>
<location filename="../gui/SearchDialog.cpp" line="+238"/> <location filename="../gui/SearchDialog.cpp" line="+280"/>
<source>Download</source> <source>Download</source>
<translation>Herunterladen</translation> <translation>Herunterladen</translation>
</message> </message>
<message> <message>
<location filename="../gui/SearchDialog.cpp" line="-138"/> <location filename="../gui/SearchDialog.cpp" line="-178"/>
<source>Enter a keyword here (at least 3 char long)</source> <source>Enter a keyword here (at least 3 char long)</source>
<translation>Gib einen Suchbegriff ein (min. 3 Zeichen)</translation> <translation>Gib einen Suchbegriff ein (min. 3 Zeichen)</translation>
</message> </message>
<message> <message>
<location line="+141"/> <location line="+181"/>
<source>Copy retroshare Link</source> <source>Copy retroshare Link</source>
<translation>Kopiere RetroShare Link</translation> <translation>Kopiere RetroShare Link</translation>
</message> </message>
@ -9479,7 +9495,7 @@ p, li { white-space: pre-wrap; }
<translation>Freunden empfehlen</translation> <translation>Freunden empfehlen</translation>
</message> </message>
<message> <message>
<location line="+139"/> <location line="+142"/>
<source>Remove</source> <source>Remove</source>
<translation>Entfernen</translation> <translation>Entfernen</translation>
</message> </message>
@ -9500,7 +9516,7 @@ p, li { white-space: pre-wrap; }
<translation>Neu(e) RetroShare Link(s)</translation> <translation>Neu(e) RetroShare Link(s)</translation>
</message> </message>
<message> <message>
<location filename="../gui/SearchDialog.ui" line="-703"/> <location filename="../gui/SearchDialog.ui" line="-712"/>
<source>Any</source> <source>Any</source>
<translation>Alle</translation> <translation>Alle</translation>
</message> </message>
@ -9520,12 +9536,12 @@ p, li { white-space: pre-wrap; }
<translation>Gib einen Suchbegriff ein</translation> <translation>Gib einen Suchbegriff ein</translation>
</message> </message>
<message> <message>
<location line="+273"/> <location line="+279"/>
<source>Filter Search Result</source> <source>Filter Search Result</source>
<translation>Filter Suchergebnis</translation> <translation>Filter Suchergebnis</translation>
</message> </message>
<message> <message>
<location line="+114"/> <location line="+117"/>
<source>Filename</source> <source>Filename</source>
<translation>Dateiname</translation> <translation>Dateiname</translation>
</message> </message>
@ -9540,7 +9556,7 @@ p, li { white-space: pre-wrap; }
<translation>Prüfsumme</translation> <translation>Prüfsumme</translation>
</message> </message>
<message> <message>
<location line="-187"/> <location line="-190"/>
<source>KeyWords</source> <source>KeyWords</source>
<translation>Schlüsselwörter</translation> <translation>Schlüsselwörter</translation>
</message> </message>
@ -9550,7 +9566,7 @@ p, li { white-space: pre-wrap; }
<translation>Such ID</translation> <translation>Such ID</translation>
</message> </message>
<message> <message>
<location filename="../gui/SearchDialog.cpp" line="-953"/> <location filename="../gui/SearchDialog.cpp" line="-955"/>
<source>Download Notice</source> <source>Download Notice</source>
<translation>Download</translation> <translation>Download</translation>
</message> </message>
@ -9560,7 +9576,7 @@ p, li { white-space: pre-wrap; }
<translation>Überspringe lokale Dateien</translation> <translation>Überspringe lokale Dateien</translation>
</message> </message>
<message> <message>
<location line="+56"/> <location line="+58"/>
<location line="+6"/> <location line="+6"/>
<source>Sorry</source> <source>Sorry</source>
<translation>Entschuldigung</translation> <translation>Entschuldigung</translation>
@ -9572,7 +9588,7 @@ p, li { white-space: pre-wrap; }
<translation>Diese Funktion ist noch nicht eingebaut.</translation> <translation>Diese Funktion ist noch nicht eingebaut.</translation>
</message> </message>
<message> <message>
<location filename="../gui/SearchDialog.ui" line="+157"/> <location filename="../gui/SearchDialog.ui" line="+160"/>
<source>Size</source> <source>Size</source>
<translation>Grösse</translation> <translation>Grösse</translation>
</message> </message>
@ -9582,7 +9598,7 @@ p, li { white-space: pre-wrap; }
<translation>Typ</translation> <translation>Typ</translation>
</message> </message>
<message> <message>
<location line="-550"/> <location line="-559"/>
<source>Archive</source> <source>Archive</source>
<translation>Archiv</translation> <translation>Archiv</translation>
</message> </message>
@ -9612,7 +9628,7 @@ p, li { white-space: pre-wrap; }
<translation>Ordner</translation> <translation>Ordner</translation>
</message> </message>
<message> <message>
<location line="+170"/> <location line="+176"/>
<source>Start Search</source> <source>Start Search</source>
<translation>Starte Suche</translation> <translation>Starte Suche</translation>
</message> </message>
@ -9622,7 +9638,7 @@ p, li { white-space: pre-wrap; }
<translation>Suchen</translation> <translation>Suchen</translation>
</message> </message>
<message> <message>
<location line="+189"/> <location line="+192"/>
<source>Clear Filter</source> <source>Clear Filter</source>
<translation>Filter leeren</translation> <translation>Filter leeren</translation>
</message> </message>
@ -9684,12 +9700,12 @@ p, li { white-space: pre-wrap; }
<translation>Begrenze Anzahl der Resultate auf :</translation> <translation>Begrenze Anzahl der Resultate auf :</translation>
</message> </message>
<message> <message>
<location line="-601"/> <location line="-607"/>
<source>Reset</source> <source>Reset</source>
<translation>Zurücksetzen</translation> <translation>Zurücksetzen</translation>
</message> </message>
<message> <message>
<location line="+109"/> <location line="+112"/>
<source>Advanced Search</source> <source>Advanced Search</source>
<translation>Erweiterte Suche</translation> <translation>Erweiterte Suche</translation>
</message> </message>
@ -9699,7 +9715,7 @@ p, li { white-space: pre-wrap; }
<translation>Erweitert</translation> <translation>Erweitert</translation>
</message> </message>
<message> <message>
<location line="+291"/> <location line="+294"/>
<source>Close All Search Results</source> <source>Close All Search Results</source>
<translation>Schließe alle Suchergebnisse</translation> <translation>Schließe alle Suchergebnisse</translation>
</message> </message>
@ -10193,28 +10209,28 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>SharedFilesDialog</name> <name>SharedFilesDialog</name>
<message> <message>
<location filename="../gui/SharedFilesDialog.ui" line="+943"/> <location filename="../gui/SharedFilesDialog.ui" line="+958"/>
<location filename="../gui/SharedFilesDialog.cpp" line="+305"/> <location filename="../gui/SharedFilesDialog.cpp" line="+305"/>
<source>Download</source> <source>Download</source>
<translation>Herunterladen</translation> <translation>Herunterladen</translation>
</message> </message>
<message> <message>
<location line="-347"/> <location line="-359"/>
<source>Splitted View</source> <source>Splitted View</source>
<translation>Geteiltes Fenster</translation> <translation>Geteiltes Fenster</translation>
</message> </message>
<message> <message>
<location line="+29"/> <location line="+32"/>
<source>Friends Folders</source> <source>Friends Folders</source>
<translation>Ordner der Freunde</translation> <translation>Ordner der Freunde</translation>
</message> </message>
<message> <message>
<location line="+29"/> <location line="+32"/>
<source>My Folders</source> <source>My Folders</source>
<translation>Meine Ordner</translation> <translation>Meine Ordner</translation>
</message> </message>
<message> <message>
<location line="-91"/> <location line="-100"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&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; &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; } p, li { white-space: pre-wrap; }
@ -10227,7 +10243,7 @@ p, li { white-space: pre-wrap; }
&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:&apos;MS Shell Dlg 2&apos;; font-weight:600;&quot;&gt;Dateien&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &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:&apos;MS Shell Dlg 2&apos;; font-weight:600;&quot;&gt;Dateien&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="+115"/> <location line="+124"/>
<source>All</source> <source>All</source>
<translation>Alle</translation> <translation>Alle</translation>
</message> </message>
@ -10252,12 +10268,12 @@ p, li { white-space: pre-wrap; }
<translation>Suche Dateien</translation> <translation>Suche Dateien</translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+27"/>
<source>Start Search</source> <source>Start Search</source>
<translation>Starte Suche</translation> <translation>Starte Suche</translation>
</message> </message>
<message> <message>
<location line="+31"/> <location line="+34"/>
<source>Reset</source> <source>Reset</source>
<translation>Zurücksetzen</translation> <translation>Zurücksetzen</translation>
</message> </message>
@ -11446,7 +11462,7 @@ p, li { white-space: pre-wrap; }
<translation>Übertrage</translation> <translation>Übertrage</translation>
</message> </message>
<message> <message>
<location line="+361"/> <location line="+365"/>
<source>RetroShare</source> <source>RetroShare</source>
<translation></translation> <translation></translation>
</message> </message>
@ -11471,7 +11487,7 @@ p, li { white-space: pre-wrap; }
<translation>Soll dieser Download wirklich abgebrochen und gelöscht werden?</translation> <translation>Soll dieser Download wirklich abgebrochen und gelöscht werden?</translation>
</message> </message>
<message> <message>
<location line="-910"/> <location line="-914"/>
<source>Speed / Queue position</source> <source>Speed / Queue position</source>
<translation>Geschwindigkeits- / Warteschlangenposition</translation> <translation>Geschwindigkeits- / Warteschlangenposition</translation>
</message> </message>
@ -11534,38 +11550,38 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+262"/> <location line="+262"/>
<location line="+144"/> <location line="+144"/>
<location line="+133"/> <location line="+135"/>
<source>Failed</source> <source>Failed</source>
<translation>Gescheitert</translation> <translation>Gescheitert</translation>
</message> </message>
<message> <message>
<location line="-273"/> <location line="-275"/>
<location line="+141"/> <location line="+141"/>
<location line="+133"/> <location line="+135"/>
<source>Okay</source> <source>Okay</source>
<translation>OK</translation> <translation>OK</translation>
</message> </message>
<message> <message>
<location line="-132"/> <location line="-134"/>
<location line="+133"/> <location line="+135"/>
<source>Waiting</source> <source>Waiting</source>
<translation>Warte</translation> <translation>Warte</translation>
</message> </message>
<message> <message>
<location line="-132"/> <location line="-134"/>
<source>Downloading</source> <source>Downloading</source>
<translation>Ladend</translation> <translation>Ladend</translation>
</message> </message>
<message> <message>
<location line="-131"/> <location line="-131"/>
<location line="+132"/> <location line="+132"/>
<location line="+133"/> <location line="+135"/>
<location line="+1"/> <location line="+1"/>
<source>Complete</source> <source>Complete</source>
<translation>Vollständig</translation> <translation>Vollständig</translation>
</message> </message>
<message> <message>
<location line="-130"/> <location line="-132"/>
<source>Unknown</source> <source>Unknown</source>
<translation>Unbekannt</translation> <translation>Unbekannt</translation>
</message> </message>
@ -11575,12 +11591,12 @@ p, li { white-space: pre-wrap; }
<translation>Version: </translation> <translation>Version: </translation>
</message> </message>
<message> <message>
<location line="+80"/> <location line="+82"/>
<source>Uploading</source> <source>Uploading</source>
<translation>Hochladend</translation> <translation>Hochladend</translation>
</message> </message>
<message> <message>
<location line="-129"/> <location line="-131"/>
<source>Checking...</source> <source>Checking...</source>
<translation>Überprüfe...</translation> <translation>Überprüfe...</translation>
</message> </message>

View file

@ -0,0 +1,473 @@
; Script generated with the Venis Install Wizard & modified by defnax
; Define your application name
!define APPNAME "RetroShare"
!define VERSION "0.5.1 4069"
!define APPNAMEANDVERSION "${APPNAME} Portable ${VERSION}"
!define QTBASE "D:\qt\2010.01"
; Main Install settings
Name "${APPNAMEANDVERSION}"
InstallDir "$PROGRAMFILES\RetroShare"
InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "RetroSharePortable_${VERSION}_setup.exe"
BrandingText "${APPNAMEANDVERSION}"
; Use compression
SetCompressor /SOLID LZMA
; Modern interface settings
!include Sections.nsh
!include "UMUI.nsh"
;Interface Settings
!define MUI_ABORTWARNING
;!define MUI_HEADERIMAGE
;!define MUI_HEADERIMAGE_BITMAP "retroshare.bmp" ; optional
# MUI defines
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\UltraModernUI\Icon.ico"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_LICENSEPAGE_RADIOBUTTONS
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_LINK "Visit the RetroShare forum for the latest news and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://retroshare.sourceforge.net/forum/"
!define MUI_FINISHPAGE_RUN "$INSTDIR\RetroShare.exe"
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_TEXT changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\UltraModernUI\UnIcon.ico"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
!define MUI_LANGDLL_REGISTRY_ROOT HKLM
!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY}
!define UMUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage
;!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of RetroShare. \r\n\r\nIt is recommended that you close all other applications before starting Setup. This will make it possible to update relevant system files without havinf to reboot your computer. \r\n\r\nIMPORTANT: Ensure that RetroShare is NOT RUNNING before continuing (you can exit from the taskbar menu), otherwise the installer cannot update the executables, and the installation will fail. \r\n\r\nClick Next to continue. "
;!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of RetroShare. \r\n\r\nIMPORTANT: Ensure that RetroShare is NOT RUNNING before continuing (you can exit from the taskbar menu), otherwise the installer cannot update the executables, and the installation will fail. \r\n\r\nClick Next to continue. "
; Defines the un-/installer logo of RetroShare
!insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
!insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
; Set languages (first is default language)
!insertmacro MUI_RESERVEFILE_LANGDLL
ReserveFile "${NSISDIR}\Plugins\AdvSplash.dll"
;--------------------------------
;Configuration
;!insertmacro MUI_RESERVEFILE_SPECIALBITMAP
LicenseLangString myLicenseData 1030 "license\license.txt"
LicenseLangString myLicenseData 1033 "license\license.txt"
LicenseLangString myLicenseData 1031 "license\license-GER.txt"
LicenseLangString myLicenseData 1036 "license\license-FR.txt"
LicenseLangString myLicenseData 1055 "license\license-TR.txt"
LicenseLangString myLicenseData 2052 "license\license.txt"
LicenseLangString myLicenseData 1045 "license\license.txt"
LicenseLangString myLicenseData 1041 "license\license.txt"
LicenseLangString myLicenseData 1042 "license\license.txt"
LicenseLangString myLicenseData 1049 "license\license.txt"
LicenseLangString myLicenseData 1053 "license\license.txt"
LicenseData $(myLicenseData)
# Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(myLicenseData)"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
# Installer languages
!define MUI_LANGDLL_ALLLANGUAGES
!insertmacro MUI_LANGUAGE Danish
!insertmacro MUI_LANGUAGE English
!insertmacro MUI_LANGUAGE French
!insertmacro MUI_LANGUAGE German
!insertmacro MUI_LANGUAGE Japanese
!insertmacro MUI_LANGUAGE Korean
!insertmacro MUI_LANGUAGE Polish
!insertmacro MUI_LANGUAGE Russian
!insertmacro MUI_LANGUAGE Swedish
!insertmacro MUI_LANGUAGE SimpChinese
!insertmacro MUI_LANGUAGE Turkish
;Component-selection page
;Titles
LangString sec_main ${LANG_ENGLISH} "Program Files"
LangString sec_data ${LANG_ENGLISH} "Program Skins"
LangString sec_shortcuts ${LANG_ENGLISH} "Shortcuts"
LangString sec_link ${LANG_ENGLISH} "File Association"
LangString sec_autostart ${LANG_ENGLISH} "Auto Startup"
LangString DESC_sec_main ${LANG_ENGLISH} "Installs the RetroShare program files."
LangString DESC_sec_data ${LANG_ENGLISH} "Installs RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_ENGLISH} "Create RetroShare shortcut icons."
LangString DESC_sec_link ${LANG_ENGLISH} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_ENGLISH} "1033"
LangString sec_main ${LANG_FRENCH} "RetroShare"
LangString sec_data ${LANG_FRENCH} "Programme de Skins"
LangString sec_shortcuts ${LANG_FRENCH} "Raccourcis"
LangString sec_link ${LANG_FRENCH} "RetroShare fichiers Association"
LangString sec_startmenu ${LANG_FRENCH} "Raccourcis du menu Démarrer"
LangString sec_autostart ${LANG_FRENCH} "Démarrage automatique"
LangString DESC_sec_main ${LANG_FRENCH} "Installe les fichiers du programme."
LangString DESC_sec_data ${LANG_FRENCH} "Installe RetroShare Skins"
LangString DESC_sec_startmenu ${LANG_FRENCH} "Crée les raccourcis du menu Démarrer"
LangString DESC_sec_shortcuts ${LANG_FRENCH} "Crée une icône sur le bureau."
LangString DESC_sec_link ${LANG_FRENCH} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_FRENCH} "1036"
LangString sec_main ${LANG_GERMAN} "Programmdateien"
LangString sec_data ${LANG_GERMAN} "Skins fuer das Programm"
LangString sec_shortcuts ${LANG_GERMAN} "Shortcuts"
LangString sec_link ${LANG_GERMAN} "Dateiverknuepfungen"
LangString sec_autostart ${LANG_GERMAN} "Auto Startup"
LangString DESC_sec_main ${LANG_GERMAN} "Installiert die erforderlichen Programmdateien."
LangString DESC_sec_data ${LANG_GERMAN} "Installiert RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_GERMAN} "Erstellt eine RetroShare Verkn<6B>pfung im Startmen<65>, Desktop oder im Schnellstarter."
LangString DESC_sec_link ${LANG_GERMAN} "RetroShare mit .rsc Dateien verkn<6B>pfen"
LangString LANGUAGEID ${LANG_GERMAN} "1031"
LangString sec_main ${LANG_TURKISH} "Program Dosyalar<61>"
LangString sec_data ${LANG_TURKISH} "Program Skinleri"
LangString sec_shortcuts ${LANG_TURKISH} "Shortcut'lar"
LangString sec_link ${LANG_TURKISH} ".rsc Dosya Kaydet"
LangString sec_autostart ${LANG_TURKISH} "Otomatik calistir ve baglan"
LangString DESC_sec_main ${LANG_TURKISH} "Program dosyalar<61>n<EFBFBD> kurar."
LangString DESC_sec_data ${LANG_TURKISH} "RetroShare Skin'leri kurar"
LangString DESC_sec_shortcuts ${TURKISH} "Shortcut yap Start menu , Desktop veya Quicklaunchbar icin."
LangString DESC_sec_link ${LANG_TURKISH} "RetroShare .rsc almas<61> i<>in kaydettirir"
LangString LANGUAGEID ${LANG_TURKISH} "1055"
LangString sec_main ${LANG_SIMPCHINESE} "程序文件"
LangString sec_data ${LANG_SIMPCHINESE} "程序皮肤"
LangString sec_shortcuts ${LANG_SIMPCHINESE} "快捷方式"
LangString sec_link ${LANG_SIMPCHINESE} "RetroShare文件关联"
LangString sec_autostart ${LANG_SIMPCHINESE} "自动启动"
LangString DESC_sec_main ${LANG_SIMPCHINESE} "安装RetroShare程序"
LangString DESC_sec_data ${LANG_SIMPCHINESE} "安装RetroShare皮肤"
LangString DESC_sec_shortcuts ${LANG_SIMPCHINESE} "建RetroShare快捷方式"
LangString DESC_sec_link ${LANG_SIMPCHINESE} "关联.rsc扩"
LangString LANGUAGEID ${LANG_SIMPCHINESE} "2052"
LangString sec_main ${LANG_POLISH} "Pliki programu"
LangString sec_data ${LANG_POLISH} "Skórki"
LangString sec_shortcuts ${LANG_POLISH} "Skróty"
LangString sec_link ${LANG_POLISH} "Skojarz pliki"
LangString sec_autostart ${LANG_POLISH} "Automatyczne uruchamianie"
LangString DESC_sec_main ${LANG_POLISH} "Instaluje pliki programu RetroShare"
LangString DESC_sec_data ${LANG_POLISH} "Instaluje skórki programu RetroShare"
LangString DESC_sec_shortcuts ${LANG_POLISH} "Utwórz ikony skrótów na pulpicie, w menu start oraz na pasku szybkiego uruchamiania."
LangString DESC_sec_link ${LANG_POLISH} "Skojarz pliki o rozszerzeniu .rsc z RetroShare"
LangString LANGUAGEID ${LANG_POLISH} "1045"
LangString sec_main ${LANG_DANISH} "Program Files"
LangString sec_data ${LANG_DANISH} "Program Skins"
LangString sec_shortcuts ${LANG_DANISH} "Shortcuts"
LangString sec_link ${LANG_DANISH} "File Association"
LangString sec_autostart ${LANG_DANISH} "Auto Startup"
LangString DESC_sec_main ${LANG_DANISH} "Installs the RetroShare program files."
LangString DESC_sec_data ${LANG_DANISH} "Installs RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_DANISH} "Create RetroShare shortcut icons."
LangString DESC_sec_link ${LANG_DANISH} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_DANISH} "1030"
LangString sec_main ${LANG_RUSSIAN} "Program Files"
LangString sec_data ${LANG_RUSSIAN} "Program Skins"
LangString sec_shortcuts ${LANG_RUSSIAN} "Shortcuts"
LangString sec_link ${LANG_RUSSIAN} "File Association"
LangString sec_autostart ${LANG_RUSSIAN} "Auto Startup"
LangString DESC_sec_main ${LANG_RUSSIAN} "Installs the RetroShare program files."
LangString DESC_sec_data ${LANG_RUSSIAN} "Installs RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_RUSSIAN} "Create RetroShare shortcut icons."
LangString DESC_sec_link ${LANG_RUSSIAN} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_RUSSIAN} "1049"
LangString sec_main ${LANG_SWEDISH} "Program Files"
LangString sec_data ${LANG_SWEDISH} "Program Skins"
LangString sec_shortcuts ${LANG_SWEDISH} "Shortcuts"
LangString sec_link ${LANG_SWEDISH} "File Association"
LangString sec_autostart ${LANG_SWEDISH} "Auto Startup"
LangString DESC_sec_main ${LANG_SWEDISH} "Installs the RetroShare program files."
LangString DESC_sec_data ${LANG_SWEDISH} "Installs RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_SWEDISH} "Create RetroShare shortcut icons."
LangString DESC_sec_link ${LANG_SWEDISH} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_SWEDISH} "1053"
LangString sec_main ${LANG_JAPANESE} "Program Files"
LangString sec_data ${LANG_JAPANESE} "Program Skins"
LangString sec_shortcuts ${LANG_JAPANESE} "Shortcuts"
LangString sec_link ${LANG_JAPANESE} "File Association"
LangString sec_autostart ${LANG_JAPANESE} "Auto Startup"
LangString DESC_sec_main ${LANG_JAPANESE} "Installs the RetroShare program files."
LangString DESC_sec_data ${LANG_JAPANESE} "Installs RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_JAPANESE} "Create RetroShare shortcut icons."
LangString DESC_sec_link ${LANG_JAPANESE} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_JAPANESE} "1041"
LangString sec_main ${LANG_KOREAN} "Program Files"
LangString sec_data ${LANG_KOREAN} "Program Skins"
LangString sec_shortcuts ${LANG_KOREAN} "Shortcuts"
LangString sec_link ${LANG_KOREAN} "File Association"
LangString sec_autostart ${LANG_KOREAN} "Auto Startup"
LangString DESC_sec_main ${LANG_KOREAN} "Installs the RetroShare program files."
LangString DESC_sec_data ${LANG_KOREAN} "Installs RetroShare Skins"
LangString DESC_sec_shortcuts ${LANG_KOREAN} "Create RetroShare shortcut icons."
LangString DESC_sec_link ${LANG_KOREAN} "Associate RetroShare with .rsc file extension"
LangString LANGUAGEID ${LANG_KOREAN} "1042"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
Section $(sec_main) sec_main
;Set Section required
SectionIn RO
; Set Section properties
SetOverwrite on
; Clears previous error logs
Delete "$INSTDIR\*.log"
; Set Section Files and Shortcuts
SetOutPath "$INSTDIR\"
File /r "release\RetroShare.exe"
File /r "..\..\retroshare-nogui\src\release\retroshare-nogui.exe"
File /r "D:\Qt\2010.01\mingw\bin\mingwm10.dll"
File /r "D:\Qt\2010.01\qt\bin\QtCore4.dll"
File /r "D:\Qt\2010.01\qt\bin\QtGui4.dll"
File /r "D:\Qt\2010.01\qt\bin\QtNetwork4.dll"
File /r "D:\Qt\2010.01\qt\bin\QtXml4.dll"
File /r "D:\Qt\2010.01\qt\bin\QtScript4.dll"
File /r "D:\Qt\2010.01\qt\bin\libgcc_s_dw2-1.dll"
File /r "D:\Qt\2010.01\qt\plugins\imageformats"
File /r "D:\Development\miniupnpc-1.3\miniupnpc.dll"
File /r ${QTBASE}\qt\qt_*.qm
File /r "release\pthreadGC2d.dll"
File /r "release\libgpg-error-0.dll"
File /r "release\libgpgme-11.dll"
File /r "release\gpg.exe"
File /r "release\gpgme-w32spawn.exe"
File /r "changelog.txt"
File /r /x Data "release\bdboot.txt"
SectionEnd
Section $(sec_data) sec_data
; Set Section properties
SetOverwrite on
; Set Section Files and Shortcuts
;SetOutPath "$APPDATA\RetroShare\"
;File /r "data\*"
; Set Section Plugins
;SetOutPath "$APPDATA\RetroShare\plugins\"
;File /r "plugins\"
; Set Section qss and exclude svn
SetOutPath "$INSTDIR\qss\"
File /r /x .svn qss\*.*
; Set Section sounds and exclude svn
SetOutPath "$INSTDIR\sounds\"
File /r /x .svn sounds\*.*
; Set Section skin
; SetOutPath "$INSTDIR\skin\"
; File /r release\skin\*.*
; Add emoticons
;SetOutPath "$INSTDIR\emoticons\"
;File /r emoticons\*.*
; Add Chat Style
;SetOutPath "$INSTDIR\style\"
;File /r style\*.*
SectionEnd
Section $(sec_link) sec_link
; Delete any existing keys
; Write the file association
WriteRegStr HKCR .rsc "" retroshare
WriteRegStr HKCR retroshare "" "RSC File"
WriteRegBin HKCR retroshare EditFlags 00000100
WriteRegStr HKCR "retroshare\shell" "" open
WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\RetroShare.exe" "%1"`
SectionEnd
SectionGroup $(sec_shortcuts) sec_shortcuts
Section StartMenu SEC0001
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\$(^UninstallLink).lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
SectionEnd
Section Desktop SEC0002
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
SectionEnd
Section Quicklaunchbar SEC0003
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
SectionEnd
SectionGroupEnd
;Section $(sec_autostart) sec_autostart
; WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroRun" "$INSTDIR\${APPNAME}.exe -a"
;SectionEnd
;Section $(sec_autostart) sec_autostart
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
;SectionEnd
Section -FinishSection
WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
WriteRegStr HKLM "Software\${APPNAME}" "Version" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd
;--------------------------------
;Descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${sec_main} $(DESC_sec_main)
!insertmacro MUI_DESCRIPTION_TEXT ${sec_data} $(DESC_sec_data)
!insertmacro MUI_DESCRIPTION_TEXT ${sec_shortcuts} $(DESC_sec_shortcuts)
!insertmacro MUI_DESCRIPTION_TEXT ${sec_link} $(DESC_sec_link)
;!insertmacro MUI_DESCRIPTION_TEXT ${sec_autostart} $(DESC_sec_autostart)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;Uninstall section
Section "Uninstall"
; Remove file association registry keys
DeleteRegKey HKCR .rsc
DeleteRegKey HKCR retroshare
; Remove program/uninstall regsitry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
DeleteRegKey HKLM SOFTWARE\${APPNAME}
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroRun"
; Remove files and uninstaller
Delete $INSTDIR\RetroShare.exe
Delete $INSTDIR\retroshare-nogui.exe
Delete $INSTDIR\gpg.exe
Delete $INSTDIR\gpgme-w32spawn.exe
Delete $INSTDIR\*.dll
Delete $INSTDIR\*.dat
Delete $INSTDIR\*.txt
Delete $INSTDIR\*.ini
Delete $INSTDIR\*.log
Delete $INSTDIR\uninstall.exe
; Don't remove the directory, otherwise
; we lose the XPGP keys.
; Should make this an option though...
; Remove shortcuts, if any
Delete "$SMPROGRAMS\${APPNAME}\*.*"
; Remove desktop shortcut
Delete "$DESKTOP\${APPNAME}.lnk"
; Remove Quicklaunch shortcut
Delete "$QUICKLAUNCH\${APPNAME}.lnk"
; Remove Autostart
;Delete "$SMSTARTUP\${APPNAME}.lnk"
; Remove directories used
RMDir "$SMPROGRAMS\${APPNAME}"
RMDir /r "$INSTDIR\qss"
RMDir /r "$INSTDIR\translations"
RMDir /r "$INSTDIR\imageformats"
RMDir /r "$INSTDIR\sounds"
SectionEnd
Function .onInit
InitPluginsDir
Push $R1
File /oname=$PLUGINSDIR\spltmp.bmp "gui\images\splash.bmp"
advsplash::show 1200 1000 1000 -1 $PLUGINSDIR\spltmp
Pop $R1
Pop $R1
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
# Installer Language Strings
# TODO Update the Language Strings with the appropriate translations.
LangString FINISHPAGELINK ${LANG_ENGLISH} "Visit the RetroShare forums for the latest news and support"
LangString FINISHPAGELINK ${LANG_GERMAN} "Besuche RetroShare Support Forum "
LangString FINISHPAGELINK ${LANG_TURKISH} "Destek için Retroshare foruma ziyaret"
LangString FINISHPAGELINK ${LANG_FRENCH} "Consultez le forum RetroShare pour vous tenir au courant des dernieres modifications, et obtenir de l'aide."
LangString FINISHPAGELINK ${LANG_SIMPCHINESE} "帮助论坛"
LangString FINISHPAGELINK ${LANG_POLISH} "Odwiedź forum RetroShare do najświeższych informacji i wsparcia"
LangString FINISHPAGELINK ${LANG_DANISH} "Besøg RetroShare fora for de seneste nyheder og støtte"
LangString FINISHPAGELINK ${LANG_JAPANESE} "Visit the RetroShare forums for the latest news and support"
LangString FINISHPAGELINK ${LANG_KOREAN} "Visit the RetroShare forums for the latest news and support"
LangString FINISHPAGELINK ${LANG_RUSSIAN} "Visit the RetroShare forums for the latest news and support"
LangString FINISHPAGELINK ${LANG_SWEDISH} "Besök RetroShare forum för de senaste nyheterna och stöd"
LangString ^UninstallLink ${LANG_ENGLISH} "Uninstall"
LangString ^UninstallLink ${LANG_GERMAN} "Deinstallieren"
LangString ^UninstallLink ${LANG_TURKISH} "Kald<EFBFBD>r"
LangString ^UninstallLink ${LANG_FRENCH} "Désinstaller"
LangString ^UninstallLink ${LANG_SIMPCHINESE} "卸载"
LangString ^UninstallLink ${LANG_POLISH} "Odinstaluj"
LangString ^UninstallLink ${LANG_DANISH} "Afinstaller"
LangString ^UninstallLink ${LANG_JAPANESE} "Uninstall"
LangString ^UninstallLink ${LANG_KOREAN} "Uninstall"
LangString ^UninstallLink ${LANG_RUSSIAN} "Uninstall"
LangString ^UninstallLink ${LANG_SWEDISH} "Avinstallera"
; eof