Fixed umlauts (utf8) in Windows. Changed some parameters to reference pointer. Added virtual folders to the lib.

Recompile needed.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3509 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-09-17 18:27:30 +00:00
parent dccfbf20b0
commit ed737e2c9f
21 changed files with 892 additions and 914 deletions

View File

@ -801,7 +801,7 @@ void FileIndexMonitor::updateShareFlags(const SharedDirInfo& dir)
cb->notifyListChange(NOTIFY_LIST_DIRLIST_LOCAL, 0);
}
/* interface */
void FileIndexMonitor::setSharedDirectories(std::list<SharedDirInfo> dirs)
void FileIndexMonitor::setSharedDirectories(std::list<SharedDirInfo>& dirs)
{
cb->notifyListPreChange(NOTIFY_LIST_DIRLIST_LOCAL, 0);
@ -822,8 +822,7 @@ void FileIndexMonitor::setSharedDirectories(std::list<SharedDirInfo> dirs)
/* check if dir exists before adding in */
std::string path = (*it).filename;
DIR *dir = opendir(path.c_str());
if (!dir)
if (!RsDirUtil::checkDirectory(path))
{
#ifdef FIM_DEBUG
std::cerr << "FileIndexMonitor::setSharedDirectories()";
@ -834,7 +833,6 @@ void FileIndexMonitor::setSharedDirectories(std::list<SharedDirInfo> dirs)
{
checkeddirs.push_back(*it);
}
closedir(dir);
}
{
@ -915,7 +913,10 @@ bool FileIndexMonitor::internal_setSharedDirectories()
{
/* get the head directory */
std::string root_dir = (*it).filename;
std::string top_dir = RsDirUtil::getTopDir(root_dir);
std::string top_dir = it->virtualname;
if (top_dir.empty()) {
top_dir = RsDirUtil::getTopDir(root_dir);
}
/* if unique -> add, else add modifier */
bool unique = false;
@ -931,6 +932,8 @@ bool FileIndexMonitor::internal_setSharedDirectories()
if (directoryMap.end()== (cit=directoryMap.find(tst_dir)))
{
unique = true;
/* store calculated name */
it->virtualname = tst_dir;
/* add it! */
directoryMap[tst_dir.c_str()] = *it;
#ifdef FIM_DEBUG

View File

@ -109,7 +109,7 @@ class FileIndexMonitor: public CacheSource, public RsThread
int RequestDirDetails(std::string uid, std::string path, DirDetails &details) const ;
// set/update shared directories
virtual void setSharedDirectories(std::list<SharedDirInfo> dirs);
virtual void setSharedDirectories(std::list<SharedDirInfo>& dirs);
void getSharedDirectories(std::list<SharedDirInfo>& dirs);
void updateShareFlags(const SharedDirInfo& info) ;

View File

@ -529,7 +529,7 @@ FileIndex::~FileIndex()
delete root;
}
int FileIndex::setRootDirectories(std::list<std::string> inlist, time_t updtime)
int FileIndex::setRootDirectories(std::list<std::string> &inlist, time_t updtime)
{
/* set update time to zero */
std::map<std::string, DirEntry *>::iterator it;

View File

@ -204,7 +204,7 @@ class FileIndex
~FileIndex();
/* control root entries */
int setRootDirectories(std::list<std::string> inlist, time_t utime);
int setRootDirectories(std::list<std::string> &inlist, time_t utime);
int getRootDirectories(std::list<std::string> &outlist);
/* update (index building) */

View File

@ -198,6 +198,7 @@ std::list<RsItem *> ftFiMonitor::saveList(bool &cleanup)
{
RsFileConfigItem *fi = new RsFileConfigItem();
fi->file.path = (*it).filename ;
fi->file.name = (*it).virtualname ;
fi->flags = (*it).shareflags ;
sList.push_back(fi);
@ -234,6 +235,7 @@ bool ftFiMonitor::loadList(std::list<RsItem *> load)
SharedDirInfo info ;
info.filename = fi->file.path;
info.virtualname = fi->file.name;
info.shareflags = fi->flags & (RS_FILE_HINTS_BROWSABLE | RS_FILE_HINTS_NETWORK_WIDE) ;
dirList.push_back(info) ;
@ -252,7 +254,7 @@ void ftFiMonitor::updateShareFlags(const SharedDirInfo& info)
IndicateConfigChanged();
}
void ftFiMonitor::setSharedDirectories(std::list<SharedDirInfo> dirList)
void ftFiMonitor::setSharedDirectories(std::list<SharedDirInfo>& dirList)
{
FileIndexMonitor::setSharedDirectories(dirList);

View File

@ -63,7 +63,7 @@ class ftFiMonitor: public FileIndexMonitor, public ftSearch, public p3Config
virtual bool search(std::string hash, uint32_t hintflags, FileInfo &info) const;
/* overloaded set dirs enables config indication */
virtual void setSharedDirectories(std::list<SharedDirInfo> dirList);
virtual void setSharedDirectories(std::list<SharedDirInfo>& dirList);
virtual void updateShareFlags(const SharedDirInfo& info) ;
/***

View File

@ -235,7 +235,6 @@ int ftFileCreator::locked_initializeFileAttrs()
#ifdef FILE_DEBUG
std::cerr << "ftFileCreator::initializeFileAttrs() trying (r+b) " << file_name << " this: " << this << std::endl;
#endif
std::cerr << std::endl;
}
/*

View File

@ -578,7 +578,7 @@ bool ftServer::setSharedDirectories(std::list<SharedDirInfo> &dirs)
return true;
}
bool ftServer::addSharedDirectory(SharedDirInfo dir)
bool ftServer::addSharedDirectory(SharedDirInfo& dir)
{
std::list<SharedDirInfo> dirList;
mFiMon->getSharedDirectories(dirList);

View File

@ -191,7 +191,7 @@ virtual std::string getPartialsDirectory();
virtual bool getSharedDirectories(std::list<SharedDirInfo> &dirs);
virtual bool setSharedDirectories(std::list<SharedDirInfo> &dirs);
virtual bool addSharedDirectory(SharedDirInfo dir);
virtual bool addSharedDirectory(SharedDirInfo& dir);
virtual bool updateShareFlags(const SharedDirInfo& dir); // updates the flags. The directory should already exist !
virtual bool removeSharedDirectory(std::string dir);

View File

@ -92,6 +92,7 @@ const uint32_t CB_CODE_MEDIA = 0x0004;
struct SharedDirInfo
{
std::string filename ;
std::string virtualname ;
uint32_t shareflags ; // RS_FILE_HINTS_NETWORK_WIDE | RS_FILE_HINTS_BROWSABLE
};
@ -184,7 +185,7 @@ class RsFiles
virtual std::string getPartialsDirectory() = 0;
virtual bool getSharedDirectories(std::list<SharedDirInfo> &dirs) = 0;
virtual bool addSharedDirectory(SharedDirInfo dir) = 0;
virtual bool addSharedDirectory(SharedDirInfo& dir) = 0;
virtual bool updateShareFlags(const SharedDirInfo& dir) = 0; // updates the flags. The directory should already exist !
virtual bool removeSharedDirectory(std::string dir) = 0;

View File

@ -363,8 +363,19 @@ int RsDirUtil::breakupDirList(std::string path,
bool RsDirUtil::checkDirectory(std::string dir)
{
int val;
mode_t st_mode;
#ifdef WINDOWS_SYS
std::wstring wdir;
librs::util::ConvertUtf8ToUtf16(dir, wdir);
struct _stat buf;
val = _wstat(wdir.c_str(), &buf);
st_mode = buf.st_mode;
#else
struct stat buf;
int val = stat(dir.c_str(), &buf);
val = stat(dir.c_str(), &buf);
st_mode = buf.st_mode;
#endif
if (val == -1)
{
#ifdef RSDIR_DEBUG
@ -373,7 +384,7 @@ bool RsDirUtil::checkDirectory(std::string dir)
#endif
return false;
}
else if (!S_ISDIR(buf.st_mode))
else if (!S_ISDIR(st_mode))
{
// Some other type - error.
#ifdef RSDIR_DEBUG

View File

@ -803,16 +803,16 @@ void RemoteDirModel::downloadDirectory(const DirDetails & dirDetails, int prefix
if (dirDetails.type & DIR_TYPE_FILE)
{
std::list<std::string> srcIds;
QString cleanPath = QDir::cleanPath((rsFiles->getDownloadDirectory() + "/" + dirDetails.path.substr(prefixLen)).c_str());
QString cleanPath = QDir::cleanPath(QString::fromUtf8(rsFiles->getDownloadDirectory().c_str()) + "/" + QString::fromUtf8(dirDetails.path.substr(prefixLen).c_str()));
srcIds.push_back(dirDetails.id);
rsFiles->FileRequest(dirDetails.name, dirDetails.hash, dirDetails.count, cleanPath.toStdString(), RS_FILE_HINTS_NETWORK_WIDE, srcIds);
rsFiles->FileRequest(dirDetails.name, dirDetails.hash, dirDetails.count, cleanPath.toUtf8().constData(), RS_FILE_HINTS_NETWORK_WIDE, srcIds);
}
else if (dirDetails.type & DIR_TYPE_DIR)
{
std::list<DirStub>::const_iterator it;
QDir dwlDir(rsFiles->getDownloadDirectory().c_str());
QString cleanPath = QDir::cleanPath(QString(dirDetails.path.c_str()).right(dirDetails.path.length() - prefixLen));
QString cleanPath = QDir::cleanPath(QString::fromUtf8(dirDetails.path.substr(prefixLen).c_str()));
if (!dwlDir.mkpath(cleanPath)) return;

View File

@ -23,7 +23,7 @@
#include <retroshare/rsfiles.h>
#include <QContextMenuEvent>
#include <QFileDialog>
#include <QMessageBox>
#include <QComboBox>
@ -31,89 +31,73 @@
ShareDialog::ShareDialog(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
/* Invoke Qt Designer generated QObject setup routine */
ui.setupUi(this);
/* Invoke Qt Designer generated QObject setup routine */
ui.setupUi(this);
connect(ui.browseButton, SIGNAL(clicked( bool ) ), this , SLOT( browseDirectory() ) );
connect(ui.okButton, SIGNAL(clicked( bool ) ), this , SLOT( addDirectory() ) );
connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(closedialog()));
load();
connect(ui.browseButton, SIGNAL(clicked( bool ) ), this , SLOT( browseDirectory() ) );
connect(ui.okButton, SIGNAL(clicked( bool ) ), this , SLOT( addDirectory() ) );
connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(closedialog()));
ui.okButton->setEnabled(false);
load();
}
void ShareDialog::load()
{
ui.localpath_lineEdit->clear();
ui.anonymouscheckBox->setChecked(false);
ui.friendscheckBox->setChecked(false);
ui.localpath_lineEdit->clear();
ui.browsableCheckBox->setChecked(false);
ui.networkwideCheckBox->setChecked(false);
}
void ShareDialog::browseDirectory()
{
/* select a dir*/
QString qdir = QFileDialog::getExistingDirectory(this, tr("Select A Folder To Share"), "", QFileDialog::DontUseNativeDialog | QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
/* select a dir*/
QString qdir = QFileDialog::getExistingDirectory(this, tr("Select A Folder To Share"), "", QFileDialog::DontUseNativeDialog | QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
/* add it to the server */
currentDir = qdir.toStdString();
if (currentDir != "")
{
ui.localpath_lineEdit->setText(QString::fromStdString(currentDir));
}
/* add it to the server */
if (qdir.isEmpty()) {
ui.okButton->setEnabled(false);
return;
}
ui.okButton->setEnabled(true);
ui.localpath_lineEdit->setText(qdir);
}
void ShareDialog::addDirectory()
{
SharedDirInfo sdi ;
sdi.filename = ui.localpath_lineEdit->text().toUtf8().constData();
sdi.virtualname = ui.virtualpath_lineEdit->text().toUtf8().constData();
SharedDirInfo sdi ;
sdi.filename = currentDir ;
if( ui.anonymouscheckBox->isChecked() && ui.friendscheckBox->isChecked())
{
sdi.shareflags = RS_FILE_HINTS_NETWORK_WIDE | RS_FILE_HINTS_BROWSABLE ;
}
if ( ui.anonymouscheckBox->isChecked() && !ui.friendscheckBox->isChecked() )
{
sdi.shareflags = RS_FILE_HINTS_NETWORK_WIDE;
}
if ( ui.friendscheckBox->isChecked() && !ui.anonymouscheckBox->isChecked())
{
sdi.shareflags = RS_FILE_HINTS_BROWSABLE ;
}
rsFiles->addSharedDirectory(sdi);
sdi.shareflags = 0;
//messageBoxOk(tr("Shared Directory Added!"));
load();
close();
if (ui.browsableCheckBox->isChecked()) {
sdi.shareflags |= RS_FILE_HINTS_BROWSABLE ;
}
if (ui.networkwideCheckBox->isChecked()) {
sdi.shareflags |= RS_FILE_HINTS_NETWORK_WIDE;
}
rsFiles->addSharedDirectory(sdi);
load();
close();
}
void ShareDialog::showEvent(QShowEvent *event)
{
if (!event->spontaneous())
{
load();
}
if (!event->spontaneous())
{
load();
}
}
void ShareDialog::closedialog()
{
ui.localpath_lineEdit->clear();
ui.anonymouscheckBox->setChecked(false);
ui.friendscheckBox->setChecked(false);
close();
}
ui.localpath_lineEdit->clear();
ui.browsableCheckBox->setChecked(false);
ui.networkwideCheckBox->setChecked(false);
bool ShareDialog::messageBoxOk(QString msg)
{
QMessageBox mb("Share Manager InfoBox!",msg,QMessageBox::Information,QMessageBox::Ok,0,0);
mb.setButtonText( QMessageBox::Ok, "OK" );
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
mb.exec();
return true;
close();
}

View File

@ -23,7 +23,6 @@
#define _SHAREDIALOG_H
#include <QDialog>
#include <QFileDialog>
#include "ui_ShareDialog.h"
@ -31,14 +30,12 @@ class ShareDialog : public QDialog
{
Q_OBJECT
public:
public:
/** Default constructor */
ShareDialog( QWidget *parent = 0, Qt::WFlags flags = 0);
/** Default destructor */
bool messageBoxOk(QString);
public slots:
/** Loads the settings for this page */
@ -55,7 +52,6 @@ private slots:
private:
std::string currentDir;
/** Qt Designer generated object */
Ui::ShareDialog ui;
};

View File

@ -1,282 +1,282 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ShareDialog</class>
<widget class="QDialog" name="ShareDialog">
<property name="windowModality">
<enum>Qt::NonModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>536</width>
<height>351</height>
</rect>
</property>
<property name="windowTitle">
<string>RetroShare Share Folder</string>
</property>
<property name="windowIcon">
<iconset resource="images.qrc">
<normaloff>:/images/rstray3.png</normaloff>:/images/rstray3.png</iconset>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>60</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QFrame#frame{background-image: url(:/images/connect/connectFriendBanner.png);}
</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="piclabel">
<property name="minimumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/fileshare48.png</pixmap>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'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-family:'Sans Serif'; font-size:26pt; font-weight:600; color:#ffffff;&quot;&gt;Share Folder&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="topMargin">
<number>6</number>
</property>
<item row="0" column="0" colspan="6">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Share Folder</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Local Path</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="localpath_lineEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="browseButton">
<property name="minimumSize">
<size>
<width>27</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Virtual Folder</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="virtualpath_lineEdit"/>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Share Flags</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QCheckBox" name="anonymouscheckBox">
<property name="toolTip">
<string>Anonymous shared Network Wide</string>
</property>
<property name="text">
<string>Anonymous</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="friendscheckBox">
<property name="toolTip">
<string>Browseable by Friends</string>
</property>
<property name="text">
<string>Friends</string>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="okButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>OK</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="3">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>191</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="closeButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="images.qrc"/>
</resources>
<connections/>
</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ShareDialog</class>
<widget class="QDialog" name="ShareDialog">
<property name="windowModality">
<enum>Qt::NonModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>536</width>
<height>313</height>
</rect>
</property>
<property name="windowTitle">
<string>RetroShare Share Folder</string>
</property>
<property name="windowIcon">
<iconset resource="images.qrc">
<normaloff>:/images/rstray3.png</normaloff>:/images/rstray3.png</iconset>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>60</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QFrame#frame{background-image: url(:/images/connect/connectFriendBanner.png);}
</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="piclabel">
<property name="minimumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/fileshare48.png</pixmap>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'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-family:'Sans Serif'; font-size:26pt; font-weight:600; color:#ffffff;&quot;&gt;Share Folder&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="topMargin">
<number>6</number>
</property>
<item row="0" column="0" colspan="6">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Share Folder</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Local Path</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="localpath_lineEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="browseButton">
<property name="minimumSize">
<size>
<width>27</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Virtual Folder</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="virtualpath_lineEdit"/>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Share Flags</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="0">
<widget class="QCheckBox" name="networkwideCheckBox">
<property name="toolTip">
<string>Anonymous shared Network Wide</string>
</property>
<property name="text">
<string>Network Wide</string>
</property>
</widget>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="browsableCheckBox">
<property name="toolTip">
<string>Browseable by Friends</string>
</property>
<property name="text">
<string>Browsable</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="okButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>OK</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="3">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>191</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="closeButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="images.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -29,262 +29,228 @@
#include <QCursor>
#include <QPoint>
#include <QHeaderView>
#include <QMessageBox>
#include <QComboBox>
/* Images for context menu icons */
#define IMAGE_CANCEL ":/images/delete.png"
#define COLUMN_PATH 0
#define COLUMN_VIRTUALNAME 1
#define COLUMN_NETWORKWIDE 2
#define COLUMN_BROWSABLE 3
ShareManager *ShareManager::_instance = NULL ;
/** Default constructor */
ShareManager::ShareManager(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
/* Invoke Qt Designer generated QObject setup routine */
ui.setupUi(this);
/* Invoke Qt Designer generated QObject setup routine */
ui.setupUi(this);
isLoading = false;
load();
isLoading = false;
load();
connect(ui.addButton, SIGNAL(clicked( bool ) ), this , SLOT( showShareDialog() ) );
connect(ui.removeButton, SIGNAL(clicked( bool ) ), this , SLOT( removeShareDirectory() ) );
connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(close()));
connect(ui.addButton, SIGNAL(clicked( bool ) ), this , SLOT( showShareDialog() ) );
connect(ui.removeButton, SIGNAL(clicked( bool ) ), this , SLOT( removeShareDirectory() ) );
connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(close()));
connect( ui.shareddirList, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( shareddirListCostumPopupMenu( QPoint ) ) );
connect( ui.shareddirList, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( shareddirListCostumPopupMenu( QPoint ) ) );
ui.addButton->setToolTip(tr("Add a Share Directory"));
ui.removeButton->setToolTip(tr("Stop sharing selected Directory"));
ui.addButton->setToolTip(tr("Add a Share Directory"));
ui.removeButton->setToolTip(tr("Stop sharing selected Directory"));
ui.shareddirList->horizontalHeader()->setResizeMode( 0,QHeaderView::Stretch);
ui.shareddirList->horizontalHeader()->setResizeMode( 2,QHeaderView::Interactive);
ui.shareddirList->horizontalHeader()->resizeSection( 0, 360 );
ui.shareddirList->horizontalHeader()->setStretchLastSection(false);
ui.shareddirList->horizontalHeader()->setResizeMode( COLUMN_PATH, QHeaderView::Stretch);
ui.shareddirList->horizontalHeader()->setResizeMode( COLUMN_BROWSABLE, QHeaderView::Interactive);
setAttribute(Qt::WA_DeleteOnClose, true);
ui.shareddirList->horizontalHeader()->resizeSection( COLUMN_PATH, 360 );
ui.shareddirList->horizontalHeader()->setStretchLastSection(false);
setAttribute(Qt::WA_DeleteOnClose, true);
}
ShareManager::~ShareManager()
{
_instance = NULL;
_instance = NULL;
}
void ShareManager::shareddirListCostumPopupMenu( QPoint point )
{
QMenu contextMnu( this );
QMenu contextMnu( this );
removeAct = new QAction(QIcon(IMAGE_CANCEL), tr( "Remove" ), this );
connect( removeAct , SIGNAL( triggered() ), this, SLOT( removeShareDirectory() ) );
removeAct = new QAction(QIcon(IMAGE_CANCEL), tr( "Remove" ), this );
connect( removeAct , SIGNAL( triggered() ), this, SLOT( removeShareDirectory() ) );
contextMnu.addAction( removeAct );
contextMnu.addAction( removeAct );
contextMnu.exec(QCursor::pos());
contextMnu.exec(QCursor::pos());
}
/** Loads the settings for this page */
void ShareManager::load()
{
isLoading = true;
std::cerr << "ShareManager:: In load !!!!!" << std::endl ;
isLoading = true;
std::cerr << "ShareManager:: In load !!!!!" << std::endl ;
std::list<SharedDirInfo>::const_iterator it;
std::list<SharedDirInfo> dirs;
rsFiles->getSharedDirectories(dirs);
std::list<SharedDirInfo>::const_iterator it;
std::list<SharedDirInfo> dirs;
rsFiles->getSharedDirectories(dirs);
/* get a link to the table */
QTableWidget *listWidget = ui.shareddirList;
/* get a link to the table */
QTableWidget *listWidget = ui.shareddirList;
/* set new row count */
listWidget->setRowCount(dirs.size());
/* set new row count */
listWidget->setRowCount(dirs.size());
connect(this,SIGNAL(itemClicked(QTableWidgetItem*)),this,SLOT(updateFlags(QTableWidgetItem*))) ;
connect(this,SIGNAL(itemClicked(QTableWidgetItem*)),this,SLOT(updateFlags(QTableWidgetItem*))) ;
#ifndef USE_COMBOBOX
QString ToolTips [2] = { QString("If checked, the share is anonymously shared to anybody."),
QString("If checked, the share is browsable by your friends.") };
int Flags [2] = { RS_FILE_HINTS_NETWORK_WIDE, RS_FILE_HINTS_BROWSABLE };
QString ToolTips [2] = { QString("If checked, the share is anonymously shared to anybody."),
QString("If checked, the share is browsable by your friends.") };
int Flags [2] = { RS_FILE_HINTS_NETWORK_WIDE, RS_FILE_HINTS_BROWSABLE };
#endif
int row=0 ;
for(it = dirs.begin(); it != dirs.end(); it++,++row)
{
listWidget->setItem(row, COLUMN_PATH, new QTableWidgetItem(QString::fromUtf8((*it).filename.c_str())));
listWidget->setItem(row, COLUMN_VIRTUALNAME, new QTableWidgetItem(QString::fromUtf8((*it).virtualname.c_str())));
int row=0 ;
for(it = dirs.begin(); it != dirs.end(); it++,++row)
{
listWidget->setItem(row,0,new QTableWidgetItem(QString::fromUtf8((*it).filename.c_str())));
#ifdef USE_COMBOBOX
QComboBox *cb = new QComboBox ;
cb->addItem(QString("Network Wide")) ;
cb->addItem(QString("Browsable")) ;
cb->addItem(QString("Universal")) ;
QComboBox *cb = new QComboBox ;
cb->addItem(QString("Network Wide")) ;
cb->addItem(QString("Browsable")) ;
cb->addItem(QString("Universal")) ;
cb->setToolTip(QString("Decide here whether this directory is\n* Network Wide: \tanonymously shared over the network (including your friends)\n* Browsable: \tbrowsable by your friends\n* Universal: \t\tboth")) ;
cb->setToolTip(QString("Decide here whether this directory is\n* Network Wide: \tanonymously shared over the network (including your friends)\n* Browsable: \tbrowsable by your friends\n* Universal: \t\tboth")) ;
// TODO
// - set combobox current value depending on what rsFiles reports.
// - use a signal mapper to get the correct row that contains the combo box sending the signal:
// mapper = new SignalMapper(this) ;
//
// for(all cb)
// {
// signalMapper->setMapping(cb,...)
// }
//
int index = 0 ;
index += ((*it).shareflags & RS_FILE_HINTS_NETWORK_WIDE) > 0 ;
index += (((*it).shareflags & RS_FILE_HINTS_BROWSABLE) > 0) * 2 ;
listWidget->setCellWidget(row,1,cb);
// TODO
// - set combobox current value depending on what rsFiles reports.
// - use a signal mapper to get the correct row that contains the combo box sending the signal:
// mapper = new SignalMapper(this) ;
//
// for(all cb)
// {
// signalMapper->setMapping(cb,...)
// }
//
int index = 0 ;
index += ((*it).shareflags & RS_FILE_HINTS_NETWORK_WIDE) > 0 ;
index += (((*it).shareflags & RS_FILE_HINTS_BROWSABLE) > 0) * 2 ;
listWidget->setCellWidget(row,1,cb);
if(index < 1 || index > 3)
std::cerr << "******* ERROR IN FILE SHARING FLAGS. Flags = " << (*it).shareflags << " ***********" << std::endl ;
else
index-- ;
if(index < 1 || index > 3)
std::cerr << "******* ERROR IN FILE SHARING FLAGS. Flags = " << (*it).shareflags << " ***********" << std::endl ;
else
index-- ;
cb->setCurrentIndex(index) ;
cb->setCurrentIndex(index) ;
#else
int col;
for (col = 1; col <= 2; col++) {
QModelIndex index = listWidget->model()->index(row, col, QModelIndex());
QCheckBox *cb = (QCheckBox*) listWidget->indexWidget(index);
if (cb == NULL) {
cb = new QCheckBox;
cb->setToolTip(ToolTips [col - 1]);
listWidget->setCellWidget(row, col, cb);
int col;
for (col = 0; col <= 1; col++) {
QModelIndex index = listWidget->model()->index(row, col + COLUMN_NETWORKWIDE, QModelIndex());
QCheckBox *cb = (QCheckBox*) listWidget->indexWidget(index);
if (cb == NULL) {
cb = new QCheckBox;
cb->setToolTip(ToolTips [col]);
listWidget->setCellWidget(row, col + COLUMN_NETWORKWIDE, cb);
QObject::connect(cb, SIGNAL(toggled(bool)), this, SLOT(updateFlags(bool))) ;
}
cb->setChecked((*it).shareflags & Flags [col - 1]);
}
QObject::connect(cb, SIGNAL(toggled(bool)), this, SLOT(updateFlags(bool))) ;
}
cb->setChecked((*it).shareflags & Flags [col]);
}
#endif
}
}
//ui.incomingDir->setText(QString::fromStdString(rsFiles->getDownloadDirectory()));
//ui.incomingDir->setText(QString::fromStdString(rsFiles->getDownloadDirectory()));
listWidget->update(); /* update display */
update();
listWidget->update(); /* update display */
update();
isLoading = false ;
isLoading = false ;
}
void ShareManager::showYourself()
{
if(_instance == NULL)
_instance = new ShareManager(NULL,0) ;
if(_instance == NULL)
_instance = new ShareManager(NULL,0) ;
_instance->show() ;
_instance->activateWindow();
_instance->show() ;
_instance->activateWindow();
}
/*static*/ void ShareManager::postModDirectories(bool update_local)
{
if (_instance == NULL || _instance->isHidden()) {
return;
}
if (update_local) {
_instance->load();
}
}
if (_instance == NULL || _instance->isHidden()) {
return;
}
void ShareManager::addShareDirectory()
{
/* select a dir
*/
QString qdir = QFileDialog::getExistingDirectory(this, tr("Select A Folder To Share"), "", QFileDialog::DontUseNativeDialog | QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
/* add it to the server */
std::string dir = qdir.toStdString();
if (dir != "")
{
SharedDirInfo sdi ;
sdi.filename = dir ;
sdi.shareflags = RS_FILE_HINTS_NETWORK_WIDE | RS_FILE_HINTS_BROWSABLE ;
rsFiles->addSharedDirectory(sdi);
messageBoxOk(tr("Shared Directory Added!"));
load();
}
if (update_local) {
_instance->load();
}
}
void ShareManager::updateFlags(bool b)
{
if(isLoading)
return ;
if(isLoading)
return ;
std::cerr << "Updating flags (b=" << b << ") !!!" << std::endl ;
std::cerr << "Updating flags (b=" << b << ") !!!" << std::endl ;
std::list<SharedDirInfo>::iterator it;
std::list<SharedDirInfo> dirs;
rsFiles->getSharedDirectories(dirs);
std::list<SharedDirInfo>::iterator it;
std::list<SharedDirInfo> dirs;
rsFiles->getSharedDirectories(dirs);
int row=0 ;
for(it = dirs.begin(); it != dirs.end(); it++,++row)
{
std::cerr << "Looking for row=" << row << ", file=" << (*it).filename << ", flags=" << (*it).shareflags << std::endl ;
uint32_t current_flags = 0 ;
current_flags |= (dynamic_cast<QCheckBox*>(ui.shareddirList->cellWidget(row,1)))->isChecked()? RS_FILE_HINTS_NETWORK_WIDE:0 ;
current_flags |= (dynamic_cast<QCheckBox*>(ui.shareddirList->cellWidget(row,2)))->isChecked()? RS_FILE_HINTS_BROWSABLE:0 ;
int row=0 ;
for(it = dirs.begin(); it != dirs.end(); it++,++row)
{
std::cerr << "Looking for row=" << row << ", file=" << (*it).filename << ", flags=" << (*it).shareflags << std::endl ;
uint32_t current_flags = 0 ;
current_flags |= (dynamic_cast<QCheckBox*>(ui.shareddirList->cellWidget(row,COLUMN_NETWORKWIDE)))->isChecked()? RS_FILE_HINTS_NETWORK_WIDE:0 ;
current_flags |= (dynamic_cast<QCheckBox*>(ui.shareddirList->cellWidget(row,COLUMN_BROWSABLE)))->isChecked()? RS_FILE_HINTS_BROWSABLE:0 ;
if( (*it).shareflags ^ current_flags )
{
(*it).shareflags = current_flags ;
rsFiles->updateShareFlags(*it) ; // modifies the flags
if( (*it).shareflags ^ current_flags )
{
(*it).shareflags = current_flags ;
rsFiles->updateShareFlags(*it) ; // modifies the flags
std::cout << "Updating share flags for directory " << (*it).filename << std::endl ;
}
}
std::cout << "Updating share flags for directory " << (*it).filename << std::endl ;
}
}
}
void ShareManager::removeShareDirectory()
{
/* id current dir */
/* ask for removal */
QTableWidget *listWidget = ui.shareddirList;
int row = listWidget -> currentRow();
QTableWidgetItem *qdir = listWidget->item(row,0) ;
/* id current dir */
/* ask for removal */
QTableWidget *listWidget = ui.shareddirList;
int row = listWidget -> currentRow();
QTableWidgetItem *qdir = listWidget->item(row, COLUMN_PATH);
QString queryWrn;
queryWrn.clear();
queryWrn.append(tr("Do you really want to stop sharing this directory ? "));
QString queryWrn;
queryWrn.clear();
queryWrn.append(tr("Do you really want to stop sharing this directory ?"));
if (qdir)
{
if ((QMessageBox::question(this, tr("Warning!"),queryWrn,QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok))== QMessageBox::Ok)
{
rsFiles->removeSharedDirectory( qdir->text().toStdString());
load();
}
else
return;
}
if (qdir)
{
if ((QMessageBox::question(this, tr("Warning!"),queryWrn,QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
{
rsFiles->removeSharedDirectory( qdir->text().toUtf8().constData());
load();
}
}
}
bool ShareManager::messageBoxOk(QString msg)
{
QMessageBox mb("Share Manager InfoBox!",msg,QMessageBox::Information,QMessageBox::Ok,0,0);
mb.setButtonText( QMessageBox::Ok, "OK" );
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
mb.exec();
return true;
}
void ShareManager::showEvent(QShowEvent *event)
{
if (!event->spontaneous())
{
load();
}
if (!event->spontaneous())
{
load();
}
}
void ShareManager::showShareDialog()
{
ShareDialog sharedlg (this);
sharedlg.exec();
ShareDialog sharedlg (this);
sharedlg.exec();
}

View File

@ -30,53 +30,43 @@
class ShareManager : public QDialog
{
Q_OBJECT
Q_OBJECT
public:
static void showYourself() ;
static void postModDirectories(bool update_local);
public:
static void showYourself() ;
static void postModDirectories(bool update_local);
private:
/** Default constructor */
ShareManager( QWidget *parent = 0, Qt::WFlags flags = 0);
/** Default destructor */
~ShareManager();
/** Loads the settings for this page */
void load();
bool messageBoxOk(QString);
public slots:
void showShareDialog();
/** Default constructor */
ShareManager( QWidget *parent = 0, Qt::WFlags flags = 0);
/** Default destructor */
~ShareManager();
/** Loads the settings for this page */
void load();
protected:
virtual void showEvent(QShowEvent * event);
virtual void showEvent(QShowEvent * event);
private slots:
/** Create the context popup menu and it's submenus */
void shareddirListCostumPopupMenu( QPoint point );
/** Create the context popup menu and it's submenus */
void shareddirListCostumPopupMenu( QPoint point );
void addShareDirectory();
void removeShareDirectory();
void updateFlags(bool);
void showShareDialog();
void removeShareDirectory();
void updateFlags(bool);
private:
static ShareManager *_instance;
bool isLoading;
static ShareManager *_instance;
bool isLoading;
/** Define the popup menus for the Context menu */
QMenu* contextMnu;
/** Define the popup menus for the Context menu */
QMenu* contextMnu;
/** Defines the actions for the context menu */
QAction* removeAct;
QAction* removeAct;
/** Qt Designer generated object */
Ui::ShareManager ui;
/** Qt Designer generated object */
Ui::ShareManager ui;
};
#endif

View File

@ -1,273 +1,296 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ShareManager</class>
<widget class="QDialog" name="ShareManager">
<property name="windowModality">
<enum>Qt::NonModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>538</width>
<height>343</height>
</rect>
</property>
<property name="windowTitle">
<string>RetroShare Share Manager</string>
</property>
<property name="windowIcon">
<iconset resource="images.qrc">
<normaloff>:/images/rstray3.png</normaloff>:/images/rstray3.png</iconset>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="styleSheet">
<string notr="true">QFrame#frame{background-image: url(:/images/connect/connectFriendBanner.png);}
</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="piclabel">
<property name="minimumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/fileshare48.png</pixmap>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'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-family:'Sans Serif'; font-size:26pt; font-weight:600; color:#ffffff;&quot;&gt;Share Manager&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="topMargin">
<number>6</number>
</property>
<item row="0" column="0" colspan="5">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Shared Folder Manager</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<property name="topMargin">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelInstructions">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'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;This is a list of shared folders . You can add and remove folders using the button on the left. &lt;/span&gt;&lt;/p&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;When you add a new folder, intially all files in that folder are shared.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt;&quot;&gt;You can separately setup share flags for each shared directory:&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt; font-weight:600;&quot;&gt;Browsable &lt;/span&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt;&quot;&gt;: files are browsable from your direct friends.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt; font-weight:600;&quot;&gt;Network Wide&lt;/span&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt;&quot;&gt;: files can be downloaded by anybody through anonymous tunnels.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="shareddirList">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="showGrid">
<bool>true</bool>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>100</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<column>
<property name="text">
<string>Directory</string>
</property>
</column>
<column>
<property name="text">
<string>Network Wide</string>
</property>
<property name="toolTip">
<string comment="If activated, the share is anonymously accessible to anybody"/>
</property>
</column>
<column>
<property name="text">
<string>Browsable</string>
</property>
<property name="toolTip">
<string comment="If checked, the share is browsable by your friends"/>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="addButton">
<property name="minimumSize">
<size>
<width>27</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>Add</string>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="removeButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>Remove</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>191</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="closeButton">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="images.qrc"/>
</resources>
<connections/>
</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ShareManager</class>
<widget class="QDialog" name="ShareManager">
<property name="windowModality">
<enum>Qt::NonModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>538</width>
<height>343</height>
</rect>
</property>
<property name="windowTitle">
<string>RetroShare Share Manager</string>
</property>
<property name="windowIcon">
<iconset resource="images.qrc">
<normaloff>:/images/rstray3.png</normaloff>:/images/rstray3.png</iconset>
</property>
<property name="modal">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QFrame" name="frame">
<property name="styleSheet">
<string notr="true">QFrame#frame{background-image: url(:/images/connect/connectFriendBanner.png);}
</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="piclabel">
<property name="minimumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/fileshare48.png</pixmap>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'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-family:'Sans Serif'; font-size:26pt; font-weight:600; color:#ffffff;&quot;&gt;Share Manager&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="topMargin">
<number>6</number>
</property>
<item row="0" column="0" colspan="5">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Shared Folder Manager</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<property name="topMargin">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelInstructions">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'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;This is a list of shared folders. You can add and remove folders using the buttons at the bottom.&lt;/span&gt;&lt;/p&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;When you add a new folder, intially all files in that folder are shared.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt;&quot;&gt;You can separately setup share flags for each shared directory:&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt; font-weight:600;&quot;&gt;Browsable&lt;/span&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt;&quot;&gt;: files are browsable from your direct friends.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt; font-weight:600;&quot;&gt;Network Wide&lt;/span&gt;&lt;span style=&quot; font-family:'Sans'; font-size:8pt;&quot;&gt;: files can be downloaded by anybody through anonymous tunnels.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="shareddirList">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="showGrid">
<bool>true</bool>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>100</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>100</number>
</attribute>
<column>
<property name="text">
<string>Directory</string>
</property>
</column>
<column>
<property name="text">
<string>Virtual Folder</string>
</property>
</column>
<column>
<property name="text">
<string>Network Wide</string>
</property>
<property name="toolTip">
<string comment="If activated, the share is anonymously accessible to anybody"/>
</property>
</column>
<column>
<property name="text">
<string>Browsable</string>
</property>
<property name="toolTip">
<string comment="If checked, the share is browsable by your friends"/>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="addButton">
<property name="minimumSize">
<size>
<width>27</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>Add</string>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="removeButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="text">
<string>Remove</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>191</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="closeButton">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="images.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -152,7 +152,7 @@ void NotifyQt::notifyTurtleSearchResult(uint32_t search_id,const std::list<Turtl
void NotifyQt::notifyHashingInfo(std::string fileinfo)
{
emit hashingInfoChanged(QString::fromStdString(fileinfo)) ;
emit hashingInfoChanged(QString::fromUtf8(fileinfo.c_str())) ;
}
//void NotifyQt::notifyChat()

View File

@ -1041,7 +1041,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../gui/ChannelFeed.ui" line="-147"/>
<location filename="../gui/ChannelFeed.cpp" line="+36"/>
<location filename="../gui/ChannelFeed.cpp" line="+39"/>
<source>Post to Channel</source>
<translation>Kanalbeitrag erstellen</translation>
</message>
@ -1267,7 +1267,7 @@ Keine Beschreibung</translation>
<context>
<name>ChatStyle</name>
<message>
<location filename="../gui/chat/ChatStyle.cpp" line="+374"/>
<location filename="../gui/chat/ChatStyle.cpp" line="+367"/>
<source>Standard style for group chat</source>
<translation>Standard Stil für den Gruppenchat</translation>
</message>
@ -2634,7 +2634,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../gui/settings/DirectoriesPage.ui" line="+605"/>
<source>Shared Directories</source>
<translation>Freigegebene Verzeichnisse</translation>
<translation>Freigegebene Ordner</translation>
</message>
<message>
<location filename="../gui/settings/DirectoriesPage.cpp" line="+39"/>
@ -2660,12 +2660,12 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+29"/>
<source>Set Incoming Directory</source>
<translation>Eingehende Dateien Verzeichnis</translation>
<translation>Ordner für eingehende Dateien</translation>
</message>
<message>
<location line="+29"/>
<source>Set Partials Directory</source>
<translation>Partielle Dateien</translation>
<translation>Ordner für temporäre Dateien</translation>
</message>
<message>
<location filename="../gui/settings/DirectoriesPage.ui" line="-90"/>
@ -2680,12 +2680,12 @@ p, li { white-space: pre-wrap; }
<message>
<location line="-67"/>
<source>Partials Directory</source>
<translation>Partielle Dateien</translation>
<translation>Temporäre Dateien</translation>
</message>
<message>
<location line="+57"/>
<source>Automatically share incoming directory (Recommended)</source>
<translation>Automatisch eingehendes Verzeichnis freigeben</translation>
<translation>Eingehende Ordner automatisch freigeben</translation>
</message>
</context>
<context>
@ -4958,7 +4958,7 @@ p, li { white-space: pre-wrap; }
Normalerweise hält RetroShare jetzt sicher alle Festplattenzugriffe auf das Verzeichnis an.
Bitte gib etwas SPeicher frei und drücke OK.</translation>
Bitte gib etwas Speicher frei und drücke OK.</translation>
</message>
<message>
<location line="+12"/>
@ -5948,7 +5948,7 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+32"/>
<source>Share Files for your Friends</source>
<translation>Verzeichnis für deine Freunde freigeben</translation>
<translation>Ordner für deine Freunde freigeben</translation>
</message>
<message>
<location line="+111"/>
@ -8331,7 +8331,7 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+59"/>
<source>Directory</source>
<translation>Verzeichnis</translation>
<translation>Ordner</translation>
</message>
<message>
<location line="+5"/>
@ -8399,17 +8399,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../gui/QuickStartWizard.cpp" line="+193"/>
<source>Select A Folder To Share</source>
<translation>Wählen Sie ein Verzeichnis zum Freigeben</translation>
<translation>Wählen Sie ein Ordner zum Freigeben</translation>
</message>
<message>
<location line="+13"/>
<source>Shared Directory Added!</source>
<translation>Verzeichnis wurde hinzugefügt!</translation>
<translation>Ordner wurde hinzugefügt!</translation>
</message>
<message>
<location line="+15"/>
<source>Do you really want to stop sharing this directory ? </source>
<translation>Möchtest Du wirklich die Freigabe dieses Verzeichnises entfernen ? </translation>
<translation>Möchtes Du die Freigabe dieses Ordners wirklich aufheben ?</translation>
</message>
<message>
<location line="+4"/>
@ -8453,7 +8453,7 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+4"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
<translation>Ordner</translation>
</message>
<message>
<location line="+4"/>
@ -8539,7 +8539,7 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+4"/>
<source>My Directories</source>
<translation>Meine Verzeichnisse</translation>
<translation>Meine Ordner</translation>
</message>
<message>
<location line="+4"/>
@ -9108,7 +9108,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden.</translation>
<message>
<location line="+86"/>
<source>Transfer</source>
<translation type="unfinished">Übertragung</translation>
<translation>Übertragung</translation>
</message>
<message>
<location line="+18"/>
@ -9148,7 +9148,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden.</translation>
<message>
<location line="+18"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
<translation>Ordner</translation>
</message>
<message>
<location line="+27"/>
@ -9176,7 +9176,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden.</translation>
<message>
<location filename="../gui/ShareDialog.ui" line="+17"/>
<source>RetroShare Share Folder</source>
<translation>RetroShare Verzeichnis freigeben </translation>
<translation>RetroShare Ordner freigeben</translation>
</message>
<message>
<location line="+75"/>
@ -9189,12 +9189,12 @@ p, li { white-space: pre-wrap; }
&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;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-family:&apos;Sans Serif&apos;; font-size:26pt; font-weight:600; color:#ffffff;&quot;&gt;Verzeichnis freigeben&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;Sans Serif&apos;; font-size:26pt; font-weight:600; color:#ffffff;&quot;&gt;Ordner freigeben&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location line="+29"/>
<source>Share Folder</source>
<translation>Gebe Ordner frei</translation>
<translation>Ordner</translation>
</message>
<message>
<location line="+8"/>
@ -9223,21 +9223,21 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+3"/>
<source>Anonymous</source>
<translation>Anonym</translation>
<source>Network Wide</source>
<translation>Netzwerkweit</translation>
</message>
<message>
<location line="+7"/>
<location line="+20"/>
<source>Browseable by Friends</source>
<translation>Durchsuchbar von Freunden</translation>
</message>
<message>
<location line="+3"/>
<source>Friends</source>
<translation>Freunde</translation>
<source>Browsable</source>
<translation>Durchsuchbar</translation>
</message>
<message>
<location line="+38"/>
<location line="+25"/>
<source>OK</source>
<translation>OK</translation>
</message>
@ -9247,7 +9247,7 @@ p, li { white-space: pre-wrap; }
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../gui/ShareDialog.cpp" line="+58"/>
<location filename="../gui/ShareDialog.cpp" line="+56"/>
<source>Select A Folder To Share</source>
<translation>Wähle einen Ordner zum Freigeben aus</translation>
</message>
@ -9311,38 +9311,33 @@ p, li { white-space: pre-wrap; }
<context>
<name>ShareManager</name>
<message>
<location filename="../gui/ShareManager.cpp" line="+57"/>
<location filename="../gui/ShareManager.cpp" line="+60"/>
<source>Add a Share Directory</source>
<translation>Verzeichnis hinzufügen</translation>
<translation>Ordner hinzufügen</translation>
</message>
<message>
<location line="+1"/>
<source>Stop sharing selected Directory</source>
<translation>Stoppe die Freigabe des Verzeichnisses</translation>
<translation>Stoppe die Freigabe des Ordners</translation>
</message>
<message>
<location line="+141"/>
<source>Select A Folder To Share</source>
<translation>Wähle ein Verzeichnis zum Freigeben</translation>
<location line="+171"/>
<source>Do you really want to stop sharing this directory ?</source>
<translation>Möchtes Du die Freigabe dieses Ordners wirklich aufheben ?</translation>
</message>
<message>
<location line="+56"/>
<source>Do you really want to stop sharing this directory ? </source>
<translation>Möchtes Du wirklich die Freigabe dieses Ordners aufheben ? </translation>
</message>
<message>
<location filename="../gui/ShareManager.ui" line="+234"/>
<location filename="../gui/ShareManager.cpp" line="-176"/>
<location filename="../gui/ShareManager.ui" line="+257"/>
<location filename="../gui/ShareManager.cpp" line="-151"/>
<source>Remove</source>
<translation>Entfernen</translation>
</message>
<message>
<location filename="../gui/ShareManager.cpp" line="+180"/>
<location filename="../gui/ShareManager.cpp" line="+155"/>
<source>Warning!</source>
<translation>Warnung!</translation>
</message>
<message>
<location filename="../gui/ShareManager.ui" line="-217"/>
<location filename="../gui/ShareManager.ui" line="-240"/>
<source>RetroShare Share Manager</source>
<translation>RetroShare Freigabe Manager</translation>
</message>
@ -9365,22 +9360,35 @@ p, li { white-space: pre-wrap; }
&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;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;This is a list of shared folders . You can add and remove folders using the button on the left. &lt;/span&gt;&lt;/p&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;This is a list of shared folders. You can add and remove folders using the buttons at the bottom.&lt;/span&gt;&lt;/p&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;When you add a new folder, intially all files in that folder are shared.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;You can separately setup share flags for each shared directory:&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt; font-weight:600;&quot;&gt;Browsable &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;: files are browsable from your direct friends.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt; font-weight:600;&quot;&gt;Browsable&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;: files are browsable from your direct friends.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt; font-weight:600;&quot;&gt;Network Wide&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;: files can be downloaded by anybody through anonymous tunnels.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
<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;
&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;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;Das ist die Liste der freigegebenen Ordner. Mit den unteren Knöpfen kannst Du neue Ordner hinzufügen oder vorhandene Ordner entfernen.&lt;/span&gt;&lt;/p&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;Wenn Du einen neuen Ordner hinzufügst, werden alle Dateien aus dem Ordner und Unterordnern freigegeben.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;Du kannst für jeden freigegebenen Ordner die Art der Freigabe einstellen:&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt; font-weight:600;&quot;&gt;Durchsuchbar&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;: Dateien sind von Deinen direkten Freunden durchsuchbar.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt; font-weight:600;&quot;&gt;Netzwerkweit&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:8pt;&quot;&gt;: Dateien können von jedem über anoynme Tunnel heruntergeladen werden.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location line="+46"/>
<location line="+64"/>
<source>Directory</source>
<translation>Verzeichnis</translation>
<translation>Ordner</translation>
</message>
<message>
<location line="+5"/>
<source>Virtual Folder</source>
<translation>Virtueller Ordner</translation>
</message>
<message>
<location line="+5"/>
<source>Network Wide</source>
<translation>Im gesamten Netzwerk</translation>
<translation>Netzwerkweit</translation>
</message>
<message>
<location line="+8"/>
@ -9398,12 +9406,7 @@ p, li { white-space: pre-wrap; }
<translation>Hinzufügen</translation>
</message>
<message>
<location filename="../gui/ShareManager.cpp" line="-48"/>
<source>Shared Directory Added!</source>
<translation>Verzeichnis wurde hinzugefügt!</translation>
</message>
<message>
<location filename="../gui/ShareManager.ui" line="-94"/>
<location line="-117"/>
<source>Shared Folder Manager</source>
<translation>Freigabe Manager</translation>
</message>
@ -9424,12 +9427,12 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+29"/>
<source>Friends Folders</source>
<translation>Verzeichnisse der Freunde</translation>
<translation>Ordner der Freunde</translation>
</message>
<message>
<location line="+29"/>
<source>My Folders</source>
<translation>Meine Verzeichnisse</translation>
<translation>Meine Ordner</translation>
</message>
<message>
<location line="-91"/>
@ -9478,7 +9481,7 @@ p, li { white-space: pre-wrap; }
<message>
<location line="-550"/>
<source>Open Folder</source>
<translation>Verzeichnis öffnen</translation>
<translation>Ordner öffnen</translation>
</message>
<message>
<location line="+559"/>
@ -10282,7 +10285,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>TransfersDialog</name>
<message>
<location filename="../gui/TransfersDialog.cpp" line="+232"/>
<location filename="../gui/TransfersDialog.cpp" line="+236"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@ -10292,13 +10295,13 @@ p, li { white-space: pre-wrap; }
<translation>Fertige ausblenden</translation>
</message>
<message>
<location line="-154"/>
<location line="+60"/>
<location line="-158"/>
<location line="+62"/>
<source>Status</source>
<translation>Status</translation>
</message>
<message>
<location line="-64"/>
<location line="-66"/>
<source>Completed</source>
<translation>Fertiggestellt</translation>
</message>
@ -10352,20 +10355,20 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../gui/TransfersDialog.cpp" line="-2"/>
<location line="+61"/>
<location line="+63"/>
<source>Name</source>
<comment>i.e: file name</comment>
<translation>Name</translation>
</message>
<message>
<location line="-60"/>
<location line="+61"/>
<location line="-62"/>
<location line="+63"/>
<source>Size</source>
<comment>i.e: file size</comment>
<translation>Grösse</translation>
</message>
<message>
<location line="-59"/>
<location line="-61"/>
<source>Speed</source>
<comment>i.e: Download speed</comment>
<translation>Geschwindigkeit</translation>
@ -10388,7 +10391,7 @@ p, li { white-space: pre-wrap; }
<translation>Kern-ID</translation>
</message>
<message>
<location line="+54"/>
<location line="+56"/>
<source>Progress</source>
<comment>i.e: % uploaded</comment>
<translation>Fortschritt</translation>
@ -10405,7 +10408,7 @@ p, li { white-space: pre-wrap; }
<translation>Übertragen</translation>
</message>
<message>
<location line="+119"/>
<location line="+121"/>
<source>Play</source>
<translation>Abspielen</translation>
</message>
@ -10422,7 +10425,7 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+9"/>
<source>Open Folder</source>
<translation>Verzeichnis öffnen</translation>
<translation>Ordner öffnen</translation>
</message>
<message>
<location line="+3"/>
@ -10530,7 +10533,7 @@ p, li { white-space: pre-wrap; }
<translation>Soll dieser Download wirklich abgebrochen und gelöscht werden?</translation>
</message>
<message>
<location line="-897"/>
<location line="-901"/>
<source>Speed / Queue position</source>
<translation>Geschwindigkeits- / Warteschlangenposition</translation>
</message>
@ -10546,7 +10549,7 @@ p, li { white-space: pre-wrap; }
<translation>Download Zeit</translation>
</message>
<message>
<location line="+54"/>
<location line="+56"/>
<source>Peer</source>
<comment>i.e: user name</comment>
<translation>Nachbar</translation>
@ -10557,7 +10560,7 @@ p, li { white-space: pre-wrap; }
<translation>Prüfsumme</translation>
</message>
<message>
<location line="+110"/>
<location line="+112"/>
<location line="+525"/>
<source>Slower</source>
<translation>Langsamer</translation>