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

View File

@ -529,7 +529,7 @@ FileIndex::~FileIndex()
delete root; 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 */ /* set update time to zero */
std::map<std::string, DirEntry *>::iterator it; std::map<std::string, DirEntry *>::iterator it;

View File

@ -204,7 +204,7 @@ class FileIndex
~FileIndex(); ~FileIndex();
/* control root entries */ /* 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); int getRootDirectories(std::list<std::string> &outlist);
/* update (index building) */ /* update (index building) */

View File

@ -198,6 +198,7 @@ std::list<RsItem *> ftFiMonitor::saveList(bool &cleanup)
{ {
RsFileConfigItem *fi = new RsFileConfigItem(); RsFileConfigItem *fi = new RsFileConfigItem();
fi->file.path = (*it).filename ; fi->file.path = (*it).filename ;
fi->file.name = (*it).virtualname ;
fi->flags = (*it).shareflags ; fi->flags = (*it).shareflags ;
sList.push_back(fi); sList.push_back(fi);
@ -234,6 +235,7 @@ bool ftFiMonitor::loadList(std::list<RsItem *> load)
SharedDirInfo info ; SharedDirInfo info ;
info.filename = fi->file.path; info.filename = fi->file.path;
info.virtualname = fi->file.name;
info.shareflags = fi->flags & (RS_FILE_HINTS_BROWSABLE | RS_FILE_HINTS_NETWORK_WIDE) ; info.shareflags = fi->flags & (RS_FILE_HINTS_BROWSABLE | RS_FILE_HINTS_NETWORK_WIDE) ;
dirList.push_back(info) ; dirList.push_back(info) ;
@ -252,7 +254,7 @@ void ftFiMonitor::updateShareFlags(const SharedDirInfo& info)
IndicateConfigChanged(); IndicateConfigChanged();
} }
void ftFiMonitor::setSharedDirectories(std::list<SharedDirInfo> dirList) void ftFiMonitor::setSharedDirectories(std::list<SharedDirInfo>& dirList)
{ {
FileIndexMonitor::setSharedDirectories(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; virtual bool search(std::string hash, uint32_t hintflags, FileInfo &info) const;
/* overloaded set dirs enables config indication */ /* 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) ; virtual void updateShareFlags(const SharedDirInfo& info) ;
/*** /***

View File

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

View File

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

View File

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

View File

@ -92,6 +92,7 @@ const uint32_t CB_CODE_MEDIA = 0x0004;
struct SharedDirInfo struct SharedDirInfo
{ {
std::string filename ; std::string filename ;
std::string virtualname ;
uint32_t shareflags ; // RS_FILE_HINTS_NETWORK_WIDE | RS_FILE_HINTS_BROWSABLE uint32_t shareflags ; // RS_FILE_HINTS_NETWORK_WIDE | RS_FILE_HINTS_BROWSABLE
}; };
@ -184,7 +185,7 @@ class RsFiles
virtual std::string getPartialsDirectory() = 0; virtual std::string getPartialsDirectory() = 0;
virtual bool getSharedDirectories(std::list<SharedDirInfo> &dirs) = 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 updateShareFlags(const SharedDirInfo& dir) = 0; // updates the flags. The directory should already exist !
virtual bool removeSharedDirectory(std::string dir) = 0; 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) 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; 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) if (val == -1)
{ {
#ifdef RSDIR_DEBUG #ifdef RSDIR_DEBUG
@ -373,7 +384,7 @@ bool RsDirUtil::checkDirectory(std::string dir)
#endif #endif
return false; return false;
} }
else if (!S_ISDIR(buf.st_mode)) else if (!S_ISDIR(st_mode))
{ {
// Some other type - error. // Some other type - error.
#ifdef RSDIR_DEBUG #ifdef RSDIR_DEBUG

View File

@ -803,16 +803,16 @@ void RemoteDirModel::downloadDirectory(const DirDetails & dirDetails, int prefix
if (dirDetails.type & DIR_TYPE_FILE) if (dirDetails.type & DIR_TYPE_FILE)
{ {
std::list<std::string> srcIds; 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); 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) else if (dirDetails.type & DIR_TYPE_DIR)
{ {
std::list<DirStub>::const_iterator it; std::list<DirStub>::const_iterator it;
QDir dwlDir(rsFiles->getDownloadDirectory().c_str()); 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; if (!dwlDir.mkpath(cleanPath)) return;

View File

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

View File

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

View File

@ -10,7 +10,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>536</width> <width>536</width>
<height>351</height> <height>313</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -180,27 +180,17 @@ p, li { white-space: pre-wrap; }
<string>Share Flags</string> <string>Share Flags</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0"> <item row="1" column="0">
<widget class="QCheckBox" name="anonymouscheckBox"> <widget class="QCheckBox" name="networkwideCheckBox">
<property name="toolTip"> <property name="toolTip">
<string>Anonymous shared Network Wide</string> <string>Anonymous shared Network Wide</string>
</property> </property>
<property name="text"> <property name="text">
<string>Anonymous</string> <string>Network Wide</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="4" 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"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -213,6 +203,16 @@ p, li { white-space: pre-wrap; }
</property> </property>
</spacer> </spacer>
</item> </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> </layout>
</widget> </widget>
</item> </item>

View File

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

View File

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

View File

@ -125,10 +125,10 @@ 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; &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:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt; &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;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-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;&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;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> &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> </property>
</widget> </widget>
@ -138,6 +138,9 @@ p, li { white-space: pre-wrap; }
<property name="contextMenuPolicy"> <property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum> <enum>Qt::CustomContextMenu</enum>
</property> </property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode"> <property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum> <enum>QAbstractItemView::SingleSelection</enum>
</property> </property>
@ -165,11 +168,31 @@ p, li { white-space: pre-wrap; }
<attribute name="verticalHeaderDefaultSectionSize"> <attribute name="verticalHeaderDefaultSectionSize">
<number>22</number> <number>22</number>
</attribute> </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> <column>
<property name="text"> <property name="text">
<string>Directory</string> <string>Directory</string>
</property> </property>
</column> </column>
<column>
<property name="text">
<string>Virtual Folder</string>
</property>
</column>
<column> <column>
<property name="text"> <property name="text">
<string>Network Wide</string> <string>Network Wide</string>

View File

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

View File

@ -1041,7 +1041,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../gui/ChannelFeed.ui" line="-147"/> <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> <source>Post to Channel</source>
<translation>Kanalbeitrag erstellen</translation> <translation>Kanalbeitrag erstellen</translation>
</message> </message>
@ -1267,7 +1267,7 @@ Keine Beschreibung</translation>
<context> <context>
<name>ChatStyle</name> <name>ChatStyle</name>
<message> <message>
<location filename="../gui/chat/ChatStyle.cpp" line="+374"/> <location filename="../gui/chat/ChatStyle.cpp" line="+367"/>
<source>Standard style for group chat</source> <source>Standard style for group chat</source>
<translation>Standard Stil für den Gruppenchat</translation> <translation>Standard Stil für den Gruppenchat</translation>
</message> </message>
@ -2634,7 +2634,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location filename="../gui/settings/DirectoriesPage.ui" line="+605"/> <location filename="../gui/settings/DirectoriesPage.ui" line="+605"/>
<source>Shared Directories</source> <source>Shared Directories</source>
<translation>Freigegebene Verzeichnisse</translation> <translation>Freigegebene Ordner</translation>
</message> </message>
<message> <message>
<location filename="../gui/settings/DirectoriesPage.cpp" line="+39"/> <location filename="../gui/settings/DirectoriesPage.cpp" line="+39"/>
@ -2660,12 +2660,12 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+29"/> <location line="+29"/>
<source>Set Incoming Directory</source> <source>Set Incoming Directory</source>
<translation>Eingehende Dateien Verzeichnis</translation> <translation>Ordner für eingehende Dateien</translation>
</message> </message>
<message> <message>
<location line="+29"/> <location line="+29"/>
<source>Set Partials Directory</source> <source>Set Partials Directory</source>
<translation>Partielle Dateien</translation> <translation>Ordner für temporäre Dateien</translation>
</message> </message>
<message> <message>
<location filename="../gui/settings/DirectoriesPage.ui" line="-90"/> <location filename="../gui/settings/DirectoriesPage.ui" line="-90"/>
@ -2680,12 +2680,12 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="-67"/> <location line="-67"/>
<source>Partials Directory</source> <source>Partials Directory</source>
<translation>Partielle Dateien</translation> <translation>Temporäre Dateien</translation>
</message> </message>
<message> <message>
<location line="+57"/> <location line="+57"/>
<source>Automatically share incoming directory (Recommended)</source> <source>Automatically share incoming directory (Recommended)</source>
<translation>Automatisch eingehendes Verzeichnis freigeben</translation> <translation>Eingehende Ordner automatisch freigeben</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4958,7 +4958,7 @@ p, li { white-space: pre-wrap; }
Normalerweise hält RetroShare jetzt sicher alle Festplattenzugriffe auf das Verzeichnis an. 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>
<message> <message>
<location line="+12"/> <location line="+12"/>
@ -5948,7 +5948,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+32"/> <location line="+32"/>
<source>Share Files for your Friends</source> <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>
<message> <message>
<location line="+111"/> <location line="+111"/>
@ -8331,7 +8331,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+59"/> <location line="+59"/>
<source>Directory</source> <source>Directory</source>
<translation>Verzeichnis</translation> <translation>Ordner</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -8399,17 +8399,17 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location filename="../gui/QuickStartWizard.cpp" line="+193"/> <location filename="../gui/QuickStartWizard.cpp" line="+193"/>
<source>Select A Folder To Share</source> <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>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Shared Directory Added!</source> <source>Shared Directory Added!</source>
<translation>Verzeichnis wurde hinzugefügt!</translation> <translation>Ordner wurde hinzugefügt!</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+15"/>
<source>Do you really want to stop sharing this directory ? </source> <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>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -8453,7 +8453,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Directories</source> <source>Directories</source>
<translation>Verzeichnisse</translation> <translation>Ordner</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -8539,7 +8539,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>My Directories</source> <source>My Directories</source>
<translation>Meine Verzeichnisse</translation> <translation>Meine Ordner</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -9108,7 +9108,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden.</translation>
<message> <message>
<location line="+86"/> <location line="+86"/>
<source>Transfer</source> <source>Transfer</source>
<translation type="unfinished">Übertragung</translation> <translation>Übertragung</translation>
</message> </message>
<message> <message>
<location line="+18"/> <location line="+18"/>
@ -9148,7 +9148,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden.</translation>
<message> <message>
<location line="+18"/> <location line="+18"/>
<source>Directories</source> <source>Directories</source>
<translation>Verzeichnisse</translation> <translation>Ordner</translation>
</message> </message>
<message> <message>
<location line="+27"/> <location line="+27"/>
@ -9176,7 +9176,7 @@ Es hilft auch, wenn Sie sich hinter einer Firewall/VPN befinden.</translation>
<message> <message>
<location filename="../gui/ShareDialog.ui" line="+17"/> <location filename="../gui/ShareDialog.ui" line="+17"/>
<source>RetroShare Share Folder</source> <source>RetroShare Share Folder</source>
<translation>RetroShare Verzeichnis freigeben </translation> <translation>RetroShare Ordner freigeben</translation>
</message> </message>
<message> <message>
<location line="+75"/> <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; &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-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>
<message> <message>
<location line="+29"/> <location line="+29"/>
<source>Share Folder</source> <source>Share Folder</source>
<translation>Gebe Ordner frei</translation> <translation>Ordner</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
@ -9223,21 +9223,21 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>Anonymous</source> <source>Network Wide</source>
<translation>Anonym</translation> <translation>Netzwerkweit</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+20"/>
<source>Browseable by Friends</source> <source>Browseable by Friends</source>
<translation>Durchsuchbar von Freunden</translation> <translation>Durchsuchbar von Freunden</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>Friends</source> <source>Browsable</source>
<translation>Freunde</translation> <translation>Durchsuchbar</translation>
</message> </message>
<message> <message>
<location line="+38"/> <location line="+25"/>
<source>OK</source> <source>OK</source>
<translation>OK</translation> <translation>OK</translation>
</message> </message>
@ -9247,7 +9247,7 @@ p, li { white-space: pre-wrap; }
<translation>Abbrechen</translation> <translation>Abbrechen</translation>
</message> </message>
<message> <message>
<location filename="../gui/ShareDialog.cpp" line="+58"/> <location filename="../gui/ShareDialog.cpp" line="+56"/>
<source>Select A Folder To Share</source> <source>Select A Folder To Share</source>
<translation>Wähle einen Ordner zum Freigeben aus</translation> <translation>Wähle einen Ordner zum Freigeben aus</translation>
</message> </message>
@ -9311,38 +9311,33 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>ShareManager</name> <name>ShareManager</name>
<message> <message>
<location filename="../gui/ShareManager.cpp" line="+57"/> <location filename="../gui/ShareManager.cpp" line="+60"/>
<source>Add a Share Directory</source> <source>Add a Share Directory</source>
<translation>Verzeichnis hinzufügen</translation> <translation>Ordner hinzufügen</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Stop sharing selected Directory</source> <source>Stop sharing selected Directory</source>
<translation>Stoppe die Freigabe des Verzeichnisses</translation> <translation>Stoppe die Freigabe des Ordners</translation>
</message> </message>
<message> <message>
<location line="+141"/> <location line="+171"/>
<source>Select A Folder To Share</source> <source>Do you really want to stop sharing this directory ?</source>
<translation>Wähle ein Verzeichnis zum Freigeben</translation> <translation>Möchtes Du die Freigabe dieses Ordners wirklich aufheben ?</translation>
</message> </message>
<message> <message>
<location line="+56"/> <location filename="../gui/ShareManager.ui" line="+257"/>
<source>Do you really want to stop sharing this directory ? </source> <location filename="../gui/ShareManager.cpp" line="-151"/>
<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"/>
<source>Remove</source> <source>Remove</source>
<translation>Entfernen</translation> <translation>Entfernen</translation>
</message> </message>
<message> <message>
<location filename="../gui/ShareManager.cpp" line="+180"/> <location filename="../gui/ShareManager.cpp" line="+155"/>
<source>Warning!</source> <source>Warning!</source>
<translation>Warnung!</translation> <translation>Warnung!</translation>
</message> </message>
<message> <message>
<location filename="../gui/ShareManager.ui" line="-217"/> <location filename="../gui/ShareManager.ui" line="-240"/>
<source>RetroShare Share Manager</source> <source>RetroShare Share Manager</source>
<translation>RetroShare Freigabe Manager</translation> <translation>RetroShare Freigabe Manager</translation>
</message> </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; &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;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-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;&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> &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>
<message> <message>
<location line="+46"/> <location line="+64"/>
<source>Directory</source> <source>Directory</source>
<translation>Verzeichnis</translation> <translation>Ordner</translation>
</message>
<message>
<location line="+5"/>
<source>Virtual Folder</source>
<translation>Virtueller Ordner</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Network Wide</source> <source>Network Wide</source>
<translation>Im gesamten Netzwerk</translation> <translation>Netzwerkweit</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
@ -9398,12 +9406,7 @@ p, li { white-space: pre-wrap; }
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../gui/ShareManager.cpp" line="-48"/> <location line="-117"/>
<source>Shared Directory Added!</source>
<translation>Verzeichnis wurde hinzugefügt!</translation>
</message>
<message>
<location filename="../gui/ShareManager.ui" line="-94"/>
<source>Shared Folder Manager</source> <source>Shared Folder Manager</source>
<translation>Freigabe Manager</translation> <translation>Freigabe Manager</translation>
</message> </message>
@ -9424,12 +9427,12 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+29"/> <location line="+29"/>
<source>Friends Folders</source> <source>Friends Folders</source>
<translation>Verzeichnisse der Freunde</translation> <translation>Ordner der Freunde</translation>
</message> </message>
<message> <message>
<location line="+29"/> <location line="+29"/>
<source>My Folders</source> <source>My Folders</source>
<translation>Meine Verzeichnisse</translation> <translation>Meine Ordner</translation>
</message> </message>
<message> <message>
<location line="-91"/> <location line="-91"/>
@ -9478,7 +9481,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="-550"/> <location line="-550"/>
<source>Open Folder</source> <source>Open Folder</source>
<translation>Verzeichnis öffnen</translation> <translation>Ordner öffnen</translation>
</message> </message>
<message> <message>
<location line="+559"/> <location line="+559"/>
@ -10282,7 +10285,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>TransfersDialog</name> <name>TransfersDialog</name>
<message> <message>
<location filename="../gui/TransfersDialog.cpp" line="+232"/> <location filename="../gui/TransfersDialog.cpp" line="+236"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Abbrechen</translation> <translation>Abbrechen</translation>
</message> </message>
@ -10292,13 +10295,13 @@ p, li { white-space: pre-wrap; }
<translation>Fertige ausblenden</translation> <translation>Fertige ausblenden</translation>
</message> </message>
<message> <message>
<location line="-154"/> <location line="-158"/>
<location line="+60"/> <location line="+62"/>
<source>Status</source> <source>Status</source>
<translation>Status</translation> <translation>Status</translation>
</message> </message>
<message> <message>
<location line="-64"/> <location line="-66"/>
<source>Completed</source> <source>Completed</source>
<translation>Fertiggestellt</translation> <translation>Fertiggestellt</translation>
</message> </message>
@ -10352,20 +10355,20 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../gui/TransfersDialog.cpp" line="-2"/> <location filename="../gui/TransfersDialog.cpp" line="-2"/>
<location line="+61"/> <location line="+63"/>
<source>Name</source> <source>Name</source>
<comment>i.e: file name</comment> <comment>i.e: file name</comment>
<translation>Name</translation> <translation>Name</translation>
</message> </message>
<message> <message>
<location line="-60"/> <location line="-62"/>
<location line="+61"/> <location line="+63"/>
<source>Size</source> <source>Size</source>
<comment>i.e: file size</comment> <comment>i.e: file size</comment>
<translation>Grösse</translation> <translation>Grösse</translation>
</message> </message>
<message> <message>
<location line="-59"/> <location line="-61"/>
<source>Speed</source> <source>Speed</source>
<comment>i.e: Download speed</comment> <comment>i.e: Download speed</comment>
<translation>Geschwindigkeit</translation> <translation>Geschwindigkeit</translation>
@ -10388,7 +10391,7 @@ p, li { white-space: pre-wrap; }
<translation>Kern-ID</translation> <translation>Kern-ID</translation>
</message> </message>
<message> <message>
<location line="+54"/> <location line="+56"/>
<source>Progress</source> <source>Progress</source>
<comment>i.e: % uploaded</comment> <comment>i.e: % uploaded</comment>
<translation>Fortschritt</translation> <translation>Fortschritt</translation>
@ -10405,7 +10408,7 @@ p, li { white-space: pre-wrap; }
<translation>Übertragen</translation> <translation>Übertragen</translation>
</message> </message>
<message> <message>
<location line="+119"/> <location line="+121"/>
<source>Play</source> <source>Play</source>
<translation>Abspielen</translation> <translation>Abspielen</translation>
</message> </message>
@ -10422,7 +10425,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Open Folder</source> <source>Open Folder</source>
<translation>Verzeichnis öffnen</translation> <translation>Ordner öffnen</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -10530,7 +10533,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="-897"/> <location line="-901"/>
<source>Speed / Queue position</source> <source>Speed / Queue position</source>
<translation>Geschwindigkeits- / Warteschlangenposition</translation> <translation>Geschwindigkeits- / Warteschlangenposition</translation>
</message> </message>
@ -10546,7 +10549,7 @@ p, li { white-space: pre-wrap; }
<translation>Download Zeit</translation> <translation>Download Zeit</translation>
</message> </message>
<message> <message>
<location line="+54"/> <location line="+56"/>
<source>Peer</source> <source>Peer</source>
<comment>i.e: user name</comment> <comment>i.e: user name</comment>
<translation>Nachbar</translation> <translation>Nachbar</translation>
@ -10557,7 +10560,7 @@ p, li { white-space: pre-wrap; }
<translation>Prüfsumme</translation> <translation>Prüfsumme</translation>
</message> </message>
<message> <message>
<location line="+110"/> <location line="+112"/>
<location line="+525"/> <location line="+525"/>
<source>Slower</source> <source>Slower</source>
<translation>Langsamer</translation> <translation>Langsamer</translation>