Removed menus with friends in SharedFilesDialog.

Add a single action to send files as message.
Add send as message to the remote files too.
The files are now send as recommended files.
Disable context menus for the person item.
Auto hide the AttachFileItem in all dialogs after the successfully finish of the hash.
Removed the column source of the files in messages.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3759 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-11-07 21:33:48 +00:00
parent 4751295a3f
commit dd4c43cf7d
12 changed files with 287 additions and 463 deletions

View File

@ -72,6 +72,11 @@
#define ROLE_UNREAD Qt::UserRole + 3
#define ROLE_MSGFLAGS Qt::UserRole + 4
#define COLUMN_FILE_NAME 0
#define COLUMN_FILE_SIZE 1
#define COLUMN_FILE_HASH 2
#define COLUMN_FILE_COUNT 3
#define ROW_INBOX 0
#define ROW_OUTBOX 1
#define ROW_DRAFTBOX 2
@ -335,15 +340,13 @@ MessagesDialog::MessagesDialog(QWidget *parent)
/* Set header resize modes and initial section sizes */
QHeaderView * msglheader = ui.msgList->header () ;
msglheader->setResizeMode (0, QHeaderView::Interactive);
msglheader->setResizeMode (1, QHeaderView::Interactive);
msglheader->setResizeMode (2, QHeaderView::Interactive);
msglheader->setResizeMode (3, QHeaderView::Interactive);
msglheader->setResizeMode (COLUMN_FILE_NAME, QHeaderView::Interactive);
msglheader->setResizeMode (COLUMN_FILE_SIZE, QHeaderView::Interactive);
msglheader->setResizeMode (COLUMN_FILE_HASH, QHeaderView::Interactive);
msglheader->resizeSection (0, 200);
msglheader->resizeSection (1, 100);
msglheader->resizeSection (2, 100);
msglheader->resizeSection (3, 200);
msglheader->resizeSection (COLUMN_FILE_NAME, 200);
msglheader->resizeSection (COLUMN_FILE_SIZE, 100);
msglheader->resizeSection (COLUMN_FILE_HASH, 200);
ui.forwardmessageButton->setToolTip(tr("Forward selected Message"));
ui.replyallmessageButton->setToolTip(tr("Reply to All"));
@ -887,13 +890,15 @@ void MessagesDialog::getcurrentrecommended()
switch(it->column())
{
case 0: f.fname = it->data().toString().toStdString() ;
case COLUMN_FILE_NAME:
f.fname = it->data().toString().toStdString() ;
break ;
case 1: f.size = it->data().toULongLong() ;
case COLUMN_FILE_SIZE:
f.size = it->data().toULongLong() ;
break ;
case 3: f.hash = it->data().toString().toStdString() ;
case COLUMN_FILE_HASH:
f.hash = it->data().toString().toStdString() ;
break ;
default: ;
}
}
@ -1663,7 +1668,6 @@ void MessagesDialog::insertMsgTxtAndFiles(QModelIndex Index, bool bSetToRead)
/* get the MessageInfo */
tree->clear();
tree->setColumnCount(4);
QList<QTreeWidgetItem *> items;
for(it = recList.begin(); it != recList.end(); it++)
@ -1671,12 +1675,11 @@ void MessagesDialog::insertMsgTxtAndFiles(QModelIndex Index, bool bSetToRead)
/* make a widget per person */
QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidget*)0);
/* (0) Filename */
item -> setText(0, QString::fromStdString(it->fname));
item -> setText(COLUMN_FILE_NAME, QString::fromStdString(it->fname));
//std::cerr << "Msg FileItem(" << it->fname.length() << ") :" << it->fname << std::endl;
item -> setText(1, QString::number(it->size)); /* (1) Size */
item -> setText(2, QString::number(0)); /* (2) Rank */ // what is this ???
item -> setText(3, QString::fromStdString(it->hash));
item -> setText(COLUMN_FILE_SIZE, QString::number(it->size)); /* (1) Size */
item -> setText(COLUMN_FILE_HASH, QString::fromStdString(it->hash));
/* add to the list */
items.append(item);

View File

@ -579,7 +579,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Compose</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/folder-draft24.png</normaloff>:/images/folder-draft24.png</iconset>
</property>
<property name="iconSize">
@ -633,7 +633,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Reply</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/replymail-pressed.png</normaloff>:/images/replymail-pressed.png</iconset>
</property>
<property name="iconSize">
@ -671,7 +671,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Reply all</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/replymailall24-hover.png</normaloff>:/images/replymailall24-hover.png</iconset>
</property>
<property name="iconSize">
@ -709,7 +709,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Foward</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/mailforward24-hover.png</normaloff>:/images/mailforward24-hover.png</iconset>
</property>
<property name="iconSize">
@ -757,7 +757,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Delete</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/deletemail24.png</normaloff>:/images/deletemail24.png</iconset>
</property>
<property name="iconSize">
@ -801,7 +801,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Print</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/print24.png</normaloff>:/images/print24.png</iconset>
</property>
<property name="iconSize">
@ -833,7 +833,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Display</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/looknfeel.png</normaloff>:/images/looknfeel.png</iconset>
</property>
<property name="iconSize">
@ -874,7 +874,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/find-16.png</pixmap>
<pixmap>:/images/find-16.png</pixmap>
</property>
</widget>
</item>
@ -966,7 +966,7 @@ border-image: url(:/images/closepressed.png)
<string>Tag</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/tag24.png</normaloff>:/images/tag24.png</iconset>
</property>
<property name="iconSize">
@ -1107,7 +1107,7 @@ border-image: url(:/images/closepressed.png)
<string>Inbox</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/folder-inbox.png</normaloff>:/images/folder-inbox.png</iconset>
</property>
</item>
@ -1116,7 +1116,7 @@ border-image: url(:/images/closepressed.png)
<string>Outbox</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/folder-outbox.png</normaloff>:/images/folder-outbox.png</iconset>
</property>
</item>
@ -1125,7 +1125,7 @@ border-image: url(:/images/closepressed.png)
<string>Draft</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/folder-draft.png</normaloff>:/images/folder-draft.png</iconset>
</property>
</item>
@ -1134,7 +1134,7 @@ border-image: url(:/images/closepressed.png)
<string>Sent</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/folder-sent.png</normaloff>:/images/folder-sent.png</iconset>
</property>
</item>
@ -1143,7 +1143,7 @@ border-image: url(:/images/closepressed.png)
<string>Trash</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/folder-trash.png</normaloff>:/images/folder-trash.png</iconset>
</property>
</item>
@ -1190,7 +1190,7 @@ border: 1px solid #CCCCCC;}</string>
<string>Favorite Tags</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/tag24.png</normaloff>:/images/tag24.png</iconset>
</property>
<property name="checkable">
@ -1321,7 +1321,7 @@ padding: 4px;
<string/>
</property>
<property name="pixmap">
<pixmap resource="images.qrc">:/images/attachment.png</pixmap>
<pixmap>:/images/attachment.png</pixmap>
</property>
</widget>
</item>
@ -1354,7 +1354,7 @@ p, li { white-space: pre-wrap; }
<string/>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/edit_remove24.png</normaloff>:/images/edit_remove24.png</iconset>
</property>
<property name="checkable">
@ -1392,7 +1392,7 @@ p, li { white-space: pre-wrap; }
<string/>
</property>
<property name="icon">
<iconset resource="images.qrc">
<iconset>
<normaloff>:/images/down.png</normaloff>:/images/down.png</iconset>
</property>
</widget>
@ -1765,11 +1765,6 @@ p, li { white-space: pre-wrap; }
<string>Size</string>
</property>
</column>
<column>
<property name="text">
<string>Sources</string>
</property>
</column>
<column>
<property name="text">
<string>Hash</string>
@ -1834,9 +1829,7 @@ p, li { white-space: pre-wrap; }
<tabstop>msgText</tabstop>
<tabstop>msgList</tabstop>
</tabstops>
<resources>
<include location="images.qrc"/>
</resources>
<resources/>
<connections>
<connection>
<sender>expandFilesButton</sender>

View File

@ -939,60 +939,6 @@ void RemoteDirModel::getFileInfoFromIndexList(const QModelIndexList& list, std::
#endif
}
#if 0
void RemoteDirModel::recommendSelectedOnly(QModelIndexList list)
{
#ifdef RDM_DEBUG
std::cerr << "recommendSelectedOnly()" << std::endl;
#endif
if (RemoteMode)
{
#ifdef RDM_DEBUG
std::cerr << "Cannot recommend remote! (should download)" << std::endl;
#endif
}
rsFiles->ClearInRecommend();
/* Fire off requests */
QModelIndexList::iterator it;
for(it = list.begin(); it != list.end(); it++)
{
void *ref = it -> internalPointer();
DirDetails details;
uint32_t flags = DIR_FLAGS_DETAILS;
if (RemoteMode)
{
flags |= DIR_FLAGS_REMOTE;
continue; /* don't recommend remote stuff */
}
else
{
flags |= DIR_FLAGS_LOCAL;
}
if (!rsFiles->RequestDirDetails(ref, details, flags))
{
continue;
}
#ifdef RDM_DEBUG
std::cerr << "::::::::::::FileRecommend:::: " << std::endl;
std::cerr << "Name: " << details.name << std::endl;
std::cerr << "Hash: " << details.hash << std::endl;
std::cerr << "Size: " << details.count << std::endl;
std::cerr << "Path: " << details.path << std::endl;
#endif
rsFiles -> FileRecommend(details.name, details.hash, details.count);
rsFiles -> SetInRecommend(details.name, true);
}
#ifdef RDM_DEBUG
std::cerr << "::::::::::::Done FileRecommend" << std::endl;
#endif
}
#endif
/****************************************************************************
* OLD RECOMMEND SYSTEM - DISABLED
******/
@ -1218,8 +1164,7 @@ QStringList RemoteDirModel::mimeTypes () const
//============================================================================
bool
RemoteDirModel::isDir ( const QModelIndex & index ) const
int RemoteDirModel::getType ( const QModelIndex & index ) const
{
//if (RemoteMode) // only local files can be opened
// return ;
@ -1239,5 +1184,5 @@ RemoteDirModel::isDir ( const QModelIndex & index ) const
return false;//not good, but....
}
return (details.type == DIR_TYPE_DIR) ;
return details.type;
}

View File

@ -67,13 +67,9 @@ class RemoteDirModel : public QAbstractItemModel
void getDirDetailsFromSelect (QModelIndexList list, std::vector <DirDetails>& dirVec);
bool isDir ( const QModelIndex & index ) const ;
int getType ( const QModelIndex & index ) const ;
//void openFile(QModelIndex fileIndex, const QString command);
//#if 0 /****** REMOVED ******/
// void recommendSelected(QModelIndexList list);
// void recommendSelectedOnly(QModelIndexList list);
//#endif
void getFileInfoFromIndexList(const QModelIndexList& list, std::list<DirDetails>& files_info) ;
void openSelected(QModelIndexList list, bool openFolder);

View File

@ -66,8 +66,8 @@ public:
protected:
virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const
{
bool dirLeft = m_dirModel->isDir(left);
bool dirRight = m_dirModel->isDir(right);
bool dirLeft = (m_dirModel->getType(left) == DIR_TYPE_DIR);
bool dirRight = (m_dirModel->getType(right) == DIR_TYPE_DIR);
if (dirLeft ^ dirRight) {
return dirLeft;
@ -95,10 +95,7 @@ SharedFilesDialog::SharedFilesDialog(QWidget *parent)
connect(ui.remoteButton, SIGNAL(toggled(bool)), this, SLOT(showFrameRemote(bool)));
connect(ui.splittedButton, SIGNAL(toggled(bool)), this, SLOT(showFrameSplitted(bool)));
connect( ui.localDirTreeView, SIGNAL( customContextMenuRequested( QPoint ) ),
this, SLOT( sharedDirTreeWidgetContextMenu( QPoint ) ) );
connect( ui.localDirTreeView, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( sharedDirTreeWidgetContextMenu( QPoint ) ) );
connect( ui.remoteDirTreeView, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( shareddirtreeviewCostumPopupMenu( QPoint ) ) );
// connect( ui.remoteDirTreeView, SIGNAL( doubleClicked(const QModelIndex&)), this, SLOT( downloadRemoteSelected()));
@ -275,27 +272,37 @@ void SharedFilesDialog::forceCheck()
void SharedFilesDialog::shareddirtreeviewCostumPopupMenu( QPoint point )
{
QModelIndex idx = ui.remoteDirTreeView->indexAt(point);
if (!idx.isValid())
return;
QModelIndex midx = proxyModel->mapToSource(idx);
if (!midx.isValid())
return;
int type = model->getType(midx);
if (type != DIR_TYPE_DIR && type != DIR_TYPE_FILE) {
return;
}
QMenu contextMnu( this );
QAction *downloadAct = new QAction(QIcon(IMAGE_DOWNLOAD), tr( "Download" ), &contextMnu );
connect( downloadAct , SIGNAL( triggered() ), this, SLOT( downloadRemoteSelected() ) );
contextMnu.addAction( downloadAct);
if (type == DIR_TYPE_FILE) {
QAction *copyremotelinkAct = new QAction(QIcon(IMAGE_COPYLINK), tr( "Copy retroshare Link" ), &contextMnu );
connect( copyremotelinkAct , SIGNAL( triggered() ), this, SLOT( copyLinkRemote() ) );
QAction *sendremotelinkAct = new QAction(QIcon(IMAGE_COPYLINK), tr( "Send retroshare Link" ), &contextMnu );
connect( sendremotelinkAct , SIGNAL( triggered() ), this, SLOT( sendremoteLinkTo( ) ) );
// addMsgAct = new QAction( tr( "Add to Message" ), this );
// connect( addMsgAct , SIGNAL( triggered() ), this, SLOT( addMsgRemoteSelected() ) );
contextMnu.addAction( downloadAct);
contextMnu.addSeparator();
contextMnu.addAction( copyremotelinkAct);
contextMnu.addAction( sendremotelinkAct);
// contextMnu.addAction( addMsgAct);
contextMnu.addSeparator();
contextMnu.addAction(QIcon(IMAGE_MSG), tr("Recommend in a message to"), this, SLOT(addMsgRemoteSelected()));
}
contextMnu.exec(QCursor::pos());
}
@ -539,88 +546,31 @@ void SharedFilesDialog::playselectedfiles()
std::cerr << std::endl;
}
//#if 0
//void SharedFilesDialog::addMsgRemoteSelected()
//{
// /* call back to the model (which does all the interfacing? */
//
// std::cerr << "Recommending Files";
// std::cerr << std::endl;
//
// model -> recommendSelected(getRemoteSelected());
//}
//void SharedFilesDialog::recommendfile()
//{
// /* call back to the model (which does all the interfacing? */
//
// std::cerr << "Recommending Files";
// std::cerr << std::endl;
//
// localModel -> recommendSelected(getLocalSelected());
//}
//void SharedFilesDialog::recommendFileSetOnly()
//{
// /* call back to the model (which does all the interfacing? */
//
// std::cerr << "Recommending File Set (clearing old selection)";
// std::cerr << std::endl;
//
// /* clear current recommend Selection done by model */
//
// localModel -> recommendSelectedOnly(getLocalSelected());
//}
void SharedFilesDialog::recommendFilesTo( std::string rsid )
void SharedFilesDialog::addMsgRemoteSelected()
{
// recommendFileSetOnly();
// rsicontrol -> ClearInMsg();
// rsicontrol -> SetInMsg(rsid, true);
std::list<DirDetails> files_info ;
localModel->getFileInfoFromIndexList(getLocalSelected(),files_info);
model->getFileInfoFromIndexList(getRemoteSelected(),files_info);
if(files_info.empty())
return ;
/* create a message */
MessageComposer *nMsgDialog = MessageComposer::newMsg();
if (nMsgDialog == NULL) {
return;
}
/* fill it in
* files are receommended already
* just need to set peers
*/
nMsgDialog->insertFileList(files_info) ;
nMsgDialog->insertTitleText(tr("Recommendation(s)"));
QString peerName = QString::fromStdString(rsPeers->getPeerName(rsPeers->getOwnId()));
if (files_info.size() > 1) {
nMsgDialog->insertMsgText(tr("%1 recommends a list of files to you").arg(peerName));
} else {
nMsgDialog->insertMsgText(tr("%1 recommends a file to you").arg(peerName));
}
nMsgDialog->addRecipient(MessageComposer::TO, rsid, false) ;
nMsgDialog->sendMessage();
nMsgDialog->close();
nMsgDialog->insertMsgText(tr("Recommendation(s)"));
nMsgDialog->show();
/* window will destroy itself! */
}
void SharedFilesDialog::recommendFilesToMsg( std::string rsid )
void SharedFilesDialog::recommendFilesToMsg()
{
std::list<DirDetails> files_info ;
@ -641,15 +591,9 @@ void SharedFilesDialog::recommendFilesToMsg( std::string rsid )
nMsgDialog->insertMsgText(tr("Recommendation(s)"));
nMsgDialog->show();
std::cout << "recommending to " << rsid << std::endl ;
nMsgDialog->addRecipient(MessageComposer::TO, rsid, false) ;
/* window will destroy itself! */
}
//#endif
void SharedFilesDialog::openfile()
{
/* call back to the model (which does all the interfacing? */
@ -700,17 +644,23 @@ void SharedFilesDialog::postModDirectories(bool update_local)
void SharedFilesDialog::sharedDirTreeWidgetContextMenu( QPoint point )
{
//=== at this moment we'll show menu only for files, not for folders
if (!rsPeers) {
/* not ready yet! */
return;
}
QModelIndex idx = ui.localDirTreeView->indexAt(point);
if (!idx.isValid())
return;
QModelIndex midx = localProxyModel->mapToSource(idx);
if (!midx.isValid())
return;
currentFile = localModel->data(midx, RemoteDirModel::FileNameRole).toString();
QMenu contextMnu2( this );
//
int type = localModel->getType(midx);
QMenu contextMnu(this);
// QAction* menuAction = fileAssotiationAction(currentFile) ;
//new QAction(QIcon(IMAGE_PLAY), currentFile, this);
@ -718,93 +668,31 @@ void SharedFilesDialog::sharedDirTreeWidgetContextMenu( QPoint point )
// connect( openfolderAct , SIGNAL( triggered() ), this,
// SLOT( playselectedfiles() ) );
// openfileAct = new QAction(QIcon(IMAGE_ATTACHMENT), tr( "Add to Recommend List" ), this );
// connect( openfileAct , SIGNAL( triggered() ), this, SLOT( recommendfile() ) );
// #if 0
/* now we're going to ask who to recommend it to...
* First Level.
*
* Add to Recommend List.
* Recommend to >
* all.
* list of <people>
* Recommend with msg >
* all.
* list of <people>
*
*/
QMenu recMenu( tr("Recommend (Automated message) To "), this );
recMenu.setIcon(QIcon(IMAGE_ATTACHMENT));
QMenu msgMenu( tr("Recommend in a message to "), &contextMnu2 );
msgMenu.setIcon(QIcon(IMAGE_MSG));
std::list<std::string> peers;
std::list<std::string>::iterator it;
if (!rsPeers)
{
/* not ready yet! */
switch (type) {
case DIR_TYPE_DIR:
contextMnu.addAction(openfolderAct);
break;
case DIR_TYPE_FILE:
contextMnu.addAction(openfileAct);
contextMnu.addSeparator();
contextMnu.addAction(copylinklocalAct);
// contextMnu.addAction(copylinklocalhtmlAct);
contextMnu.addAction(sendlinkAct);
// contextMnu.addAction(sendhtmllinkAct);
contextMnu.addSeparator();
#ifndef RS_RELEASE_VERSION
contextMnu.addAction(sendlinkCloudAct);
contextMnu.addAction(addlinkCloudAct);
contextMnu.addSeparator();
#endif
contextMnu.addSeparator();
contextMnu.addAction(QIcon(IMAGE_MSG), tr("Recommend in a message to"), this, SLOT(recommendFilesToMsg()));
break;
default:
return;
}
rsPeers->getFriendList(peers);
for(it = peers.begin(); it != peers.end(); it++)
{
RsPeerDetails details ;
if(!rsPeers->getPeerDetails(*it,details))
continue ;
QString nn = PeerDefs::nameWithLocation(details);
/* parents are
* recMenu
* msgMenu
*/
RsAction *qaf1 = new RsAction( QIcon(IMAGE_FRIEND), nn, &recMenu, *it );
connect( qaf1 , SIGNAL( triggeredId( std::string ) ), this, SLOT( recommendFilesTo( std::string ) ) );
RsAction *qaf2 = new RsAction( QIcon(IMAGE_FRIEND), nn, &msgMenu, *it );
connect( qaf2 , SIGNAL( triggeredId( std::string ) ), this, SLOT( recommendFilesToMsg( std::string ) ) );
recMenu.addAction(qaf1);
msgMenu.addAction(qaf2);
/* create list of ids */
}
//#endif
if(localModel->isDir( midx ) )
contextMnu2.addAction( openfolderAct);
else
{
// contextMnu2.addAction( menuAction );
contextMnu2.addAction( openfileAct);
}
contextMnu2.addSeparator();
if(!localModel->isDir( midx ) )
{
contextMnu2.addAction( copylinklocalAct);
// contextMnu2.addAction( copylinklocalhtmlAct);
contextMnu2.addAction( sendlinkAct);
// contextMnu2.addAction( sendhtmllinkAct);
// contextMnu2.addAction( sendchatlinkAct);
contextMnu2.addSeparator();
#ifndef RS_RELEASE_VERSION
contextMnu2.addAction( sendlinkCloudAct);
contextMnu2.addAction( addlinkCloudAct);
contextMnu2.addSeparator();
#endif
contextMnu2.addMenu( &recMenu);
contextMnu2.addMenu( &msgMenu);
}
contextMnu2.exec(QCursor::pos());
contextMnu.exec(QCursor::pos());
}
//============================================================================

View File

@ -56,7 +56,7 @@ private slots:
void sharedDirTreeWidgetContextMenu( QPoint point );
void downloadRemoteSelected();
// void addMsgRemoteSelected();
void addMsgRemoteSelected();
void copyLinkRemote();
void copyLinkLocal();
@ -66,20 +66,16 @@ private slots:
void sendHtmlLinkTo();
void sendLinkToCloud();
void addLinkToCloud();
// void sendLinktoChat();
void showFrame(bool show);
void showFrameRemote(bool show);
void showFrameSplitted(bool show);
// void recommendfile();
void playselectedfiles();
void openfile();
void openfolder();
// void recommendFileSetOnly();
void recommendFilesTo( std::string rsid );
void recommendFilesToMsg( std::string rsid );
void recommendFilesToMsg();
void runCommandForFile();
void tryToAddNewAssotiation();

View File

@ -477,6 +477,7 @@ void AttachFileItem::updateItem()
case AFI_STATE_LOCAL:
repeat = 0;
emit fileFinished(this);
hide(); // auto hide
break;
case AFI_STATE_UPLOAD:

View File

@ -75,6 +75,11 @@
#define ROLE_RECIPIENT_ID Qt::UserRole
#define ROLE_RECIPIENT_GROUP Qt::UserRole + 1
#define COLUMN_FILE_NAME 0
#define COLUMN_FILE_SIZE 1
#define COLUMN_FILE_HASH 2
#define COLUMN_FILE_COUNT 3
#define STYLE_NORMAL "QLineEdit#%1 { border : none; }"
#define STYLE_FAIL "QLineEdit#%1 { border : none; color : red; }"
@ -242,16 +247,11 @@ MessageComposer::MessageComposer(QWidget *parent, Qt::WFlags flags)
ui.colorbtn->setIcon(pxm);
/* Set header resize modes and initial section sizes */
ui.msgFileList->setColumnCount(5);
ui.msgFileList->setColumnHidden ( 4, true);
QHeaderView * _smheader = ui.msgFileList->header () ;
_smheader->resizeSection ( 0, 200 );
_smheader->resizeSection ( 1, 60 );
_smheader->resizeSection ( 2, 60 );
_smheader->resizeSection ( 3, 220 );
_smheader->resizeSection ( 4, 10 );
_smheader->resizeSection(COLUMN_FILE_NAME, 200);
_smheader->resizeSection(COLUMN_FILE_SIZE, 60);
_smheader->resizeSection(COLUMN_FILE_HASH, 220);
QPalette palette = QApplication::palette();
codeBackground = palette.color( QPalette::Active, QPalette::Midlight );
@ -679,7 +679,6 @@ void MessageComposer::insertFileList(const std::list<DirDetails>& dir_info)
FileInfo info ;
info.fname = it->name ;
info.hash = it->hash ;
info.rank = 0;//it->rank ;
info.size = it->count ;
info.inRecommend = true;
files_info.push_back(info) ;
@ -692,37 +691,31 @@ void MessageComposer::insertFileList(const std::list<FileInfo>& files_info)
{
_recList.clear() ;
ui.msgFileList->clear();
std::list<FileInfo>::const_iterator it;
/* get a link to the table */
QTreeWidget *tree = ui.msgFileList;
tree->clear();
tree->setColumnCount(5);
QList<QTreeWidgetItem *> items;
for(it = files_info.begin(); it != files_info.end(); it++)
{
_recList.push_back(*it) ;
/* make a widget per person */
QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidget*)0);
item->setText(0, QString::fromUtf8(it->fname.c_str())); /* (0) Filename */
item->setText(1, misc::friendlyUnit(it->size)); /* (1) Size */
item->setText(2, QString::number(0)) ;//it->rank));
item->setText(3, QString::fromStdString(it->hash));
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setCheckState(0, it->inRecommend ? Qt::Checked : Qt::Unchecked);
/* add to the list */
items.append(item);
for(it = files_info.begin(); it != files_info.end(); it++) {
addFile(*it);
}
/* add the items in! */
tree->insertTopLevelItems(0, items);
ui.msgFileList->update(); /* update display */
}
tree->update(); /* update display */
void MessageComposer::addFile(const FileInfo &fileInfo)
{
_recList.push_back(fileInfo) ;
/* make a widget per person */
QTreeWidgetItem *item = new QTreeWidgetItem;
item->setText(COLUMN_FILE_NAME, QString::fromUtf8(fileInfo.fname.c_str()));
item->setText(COLUMN_FILE_SIZE, misc::friendlyUnit(fileInfo.size));
item->setText(COLUMN_FILE_HASH, QString::fromStdString(fileInfo.hash));
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setCheckState(COLUMN_FILE_NAME, fileInfo.inRecommend ? Qt::Checked : Qt::Unchecked);
/* add to the list */
ui.msgFileList->addTopLevelItem(item);
}
/* title changed */
@ -2141,13 +2134,13 @@ void MessageComposer::fileHashingFinished(AttachFileItem* file)
return;
}
RetroShareLink message(QString::fromUtf8(file->FileName().c_str()), file->FileSize(), QString::fromStdString(file->FileHash()));
#ifdef CHAT_DEBUG
std::cerr << "MessageComposer::anchorClicked message : " << message.toHtmlFull().toStdString() << std::endl;
#endif
FileInfo fileInfo;
fileInfo.fname = file->FileName();
fileInfo.hash = file->FileHash();
fileInfo.size = file->FileSize();
fileInfo.inRecommend = true;
ui.msgText->textCursor().insertHtml(message.toHtmlFull() + QString("<br>"));
ui.msgText->setFocus( Qt::OtherFocusReason );
addFile(fileInfo);
}
void MessageComposer::checkAttachmentReady()

View File

@ -59,6 +59,7 @@ public:
void insertSendList();
void insertFileList(const std::list<DirDetails>&);
void insertFileList(const std::list<FileInfo>&);
void addFile(const FileInfo &fileInfo);
void insertTitleText(const QString &title, enumMessageType type = NORMAL);
void insertPastedText(QString msg) ;
void insertForwardPastedText(QString msg);

View File

@ -17,7 +17,7 @@
<string>Compose</string>
</property>
<property name="windowIcon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/folder-draft.png</normaloff>:/images/folder-draft.png</iconset>
</property>
<property name="styleSheet">
@ -379,7 +379,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/textedit/format_font_size_more.png</normaloff>:/images/textedit/format_font_size_more.png</iconset>
</property>
<property name="iconSize">
@ -408,7 +408,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/textedit/format_font_size_less.png</normaloff>:/images/textedit/format_font_size_less.png</iconset>
</property>
<property name="iconSize">
@ -443,7 +443,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/textedit/textbold.png</normaloff>:/images/textedit/textbold.png</iconset>
</property>
<property name="iconSize">
@ -481,7 +481,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/textedit/textunder.png</normaloff>:/images/textedit/textunder.png</iconset>
</property>
<property name="iconSize">
@ -519,7 +519,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/textedit/textitalic.png</normaloff>:/images/textedit/textitalic.png</iconset>
</property>
<property name="iconSize">
@ -616,7 +616,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/add_image24.png</normaloff>:/images/add_image24.png</iconset>
</property>
<property name="iconSize">
@ -639,7 +639,7 @@ border: 1px solid #CCCCCC;}</string>
<string/>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/textedit/hi22-action-format-text-code.png</normaloff>:/images/textedit/hi22-action-format-text-code.png</iconset>
</property>
<property name="iconSize">
@ -805,11 +805,6 @@ border: 1px solid #CCCCCC;}</string>
<string>Size</string>
</property>
</column>
<column>
<property name="text">
<string>Sources</string>
</property>
</column>
<column>
<property name="text">
<string>Hash</string>
@ -866,7 +861,7 @@ border: 1px solid #CCCCCC;}</string>
</widget>
<action name="actionSend">
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/send24.png</normaloff>:/images/send24.png</iconset>
</property>
<property name="text">
@ -878,7 +873,7 @@ border: 1px solid #CCCCCC;}</string>
</action>
<action name="actionReply">
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/replymail24.png</normaloff>:/images/replymail24.png</iconset>
</property>
<property name="text">
@ -887,7 +882,7 @@ border: 1px solid #CCCCCC;}</string>
</action>
<action name="actionContactsView">
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/contacts24.png</normaloff>:/images/contacts24.png</iconset>
</property>
<property name="text">
@ -899,7 +894,7 @@ border: 1px solid #CCCCCC;}</string>
</action>
<action name="actionSaveas">
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/save24.png</normaloff>:/images/save24.png</iconset>
</property>
<property name="text">
@ -911,7 +906,7 @@ border: 1px solid #CCCCCC;}</string>
</action>
<action name="actionAttach">
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/attach.png</normaloff>:/images/attach.png</iconset>
</property>
<property name="text">
@ -926,7 +921,7 @@ border: 1px solid #CCCCCC;}</string>
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<iconset>
<normaloff>:/images/quote_24.png</normaloff>:/images/quote_24.png</iconset>
</property>
<property name="text">
@ -942,8 +937,6 @@ border: 1px solid #CCCCCC;}</string>
<tabstop>msgText</tabstop>
<tabstop>msgFileList</tabstop>
</tabstops>
<resources>
<include location="../images.qrc"/>
</resources>
<resources/>
<connections/>
</ui>

View File

@ -862,7 +862,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+26"/>
<location filename="../gui/feeds/ChanMsgItem.cpp" line="+292"/>
<location filename="../gui/feeds/ChanMsgItem.cpp" line="+316"/>
<source>Expand</source>
<translation>Erweitern</translation>
</message>
@ -896,7 +896,17 @@ p, li { white-space: pre-wrap; }
<translation>Kanal abbestellen</translation>
</message>
<message>
<location filename="../gui/feeds/ChanMsgItem.cpp" line="-6"/>
<location line="+79"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/feeds/ChanMsgItem.cpp" line="-102"/>
<source>Warning! You have less than %1 hours and %2 minute before this file is delted Consider saving it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+96"/>
<source>Hide</source>
<translation>Verbergen</translation>
</message>
@ -1064,7 +1074,7 @@ p, li { white-space: pre-wrap; }
<translation>Kanal abbestellen</translation>
</message>
<message>
<location filename="../gui/ChannelFeed.cpp" line="+87"/>
<location filename="../gui/ChannelFeed.cpp" line="+91"/>
<source>Name</source>
<translation>Name</translation>
</message>
@ -1093,9 +1103,14 @@ p, li { white-space: pre-wrap; }
<source>Other Channels</source>
<translation>Andere Kanäle</translation>
</message>
<message>
<location line="+410"/>
<source>Popularity: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/ChannelFeed.ui" line="-162"/>
<location filename="../gui/ChannelFeed.cpp" line="+38"/>
<location filename="../gui/ChannelFeed.cpp" line="-372"/>
<source>Post to Channel</source>
<translation>Kanalbeitrag erstellen</translation>
</message>
@ -1120,21 +1135,20 @@ p, li { white-space: pre-wrap; }
<translation>Verteile Kanal</translation>
</message>
<message>
<location line="+314"/>
<source>Popularity: %1
Fetches: %2
Available: %3</source>
<translation>Popularität: %1
<translation type="obsolete">Popularität: %1
Abgeholt: %2
Verfügbar: %3</translation>
</message>
<message>
<location line="+128"/>
<location line="+484"/>
<source>No Channel Selected</source>
<translation>Keinen Kanal gewählt</translation>
</message>
<message>
<location line="-448"/>
<location line="-490"/>
<source>Restore Publish Rights for Channel</source>
<translation>Stelle Veröffentlichungsrechte für Kanal wieder her</translation>
</message>
@ -5309,18 +5323,18 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<name>MessageComposer</name>
<message>
<location filename="../gui/msgs/MessageComposer.ui" line="+17"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="+737"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="+730"/>
<source>Compose</source>
<translation>Verfassen</translation>
</message>
<message>
<location line="+49"/>
<location line="+828"/>
<location line="+823"/>
<source>Contacts</source>
<translation>Kontakte</translation>
</message>
<message>
<location line="-813"/>
<location line="-808"/>
<source>Search for Name:</source>
<translation>Suche Name:</translation>
</message>
@ -5481,9 +5495,8 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Grösse</translation>
</message>
<message>
<location line="+5"/>
<source>Sources</source>
<translation>Quellen</translation>
<translation type="obsolete">Quellen</translation>
</message>
<message>
<location line="+5"/>
@ -5541,7 +5554,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Blockquote hinzufügen</translation>
</message>
<message>
<location filename="../gui/msgs/MessageComposer.cpp" line="-1073"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="-1061"/>
<source>&amp;Left</source>
<translation>&amp;Links</translation>
</message>
@ -5561,20 +5574,20 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>&amp;Blocksatz</translation>
</message>
<message>
<location line="+211"/>
<location line="+1541"/>
<location line="+206"/>
<location line="+1534"/>
<source>Save Message</source>
<translation>Nachricht speichern</translation>
</message>
<message>
<location line="-1540"/>
<location line="-1533"/>
<source>Message has not been Sent.
Do you want to save message to draft box?</source>
<translation>Nachricht wurde noch nicht gesendet.
Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
</message>
<message>
<location line="+580"/>
<location line="+573"/>
<source>Re:</source>
<translation>Re:</translation>
</message>
@ -5758,17 +5771,17 @@ Willst Du die Nachricht speichern ?</translation>
<translation>Zusätzliche Datei hinzufügen</translation>
</message>
<message>
<location line="-1702"/>
<location line="-1695"/>
<source>Friend Recommendation(s)</source>
<translation>Freundempfehlung(en)</translation>
</message>
<message>
<location line="+500"/>
<location line="+493"/>
<source>No Title</source>
<translation>Kein Titel</translation>
</message>
<message>
<location line="-498"/>
<location line="-491"/>
<source>I recommend a good friend of me, you can trust him too when you trust me. &lt;br&gt; Copy friend link and paste to Friends list</source>
<translation>Ich empfehle Dir einen guten Freund von mir. Du kannst ihm vertrauen, wenn Du mir vertraust. &lt;br&gt; Kopiere den Link und füge ihn in der Freundesliste ein</translation>
</message>
@ -5858,7 +5871,7 @@ Willst Du die Nachricht speichern ?</translation>
<name>MessagesDialog</name>
<message>
<location filename="../gui/MessagesDialog.ui" line="+573"/>
<location filename="../gui/MessagesDialog.cpp" line="+693"/>
<location filename="../gui/MessagesDialog.cpp" line="+696"/>
<source>New Message</source>
<translation>Neue Nachricht</translation>
</message>
@ -5874,7 +5887,7 @@ Willst Du die Nachricht speichern ?</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.ui" line="+372"/>
<location filename="../gui/MessagesDialog.cpp" line="-374"/>
<location filename="../gui/MessagesDialog.cpp" line="-372"/>
<source>Date</source>
<translation>Datum</translation>
</message>
@ -5966,15 +5979,15 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+177"/>
<location filename="../gui/MessagesDialog.cpp" line="-44"/>
<location line="+995"/>
<location line="+993"/>
<location line="+10"/>
<source>Inbox</source>
<translation>Posteingang</translation>
</message>
<message>
<location line="+9"/>
<location filename="../gui/MessagesDialog.cpp" line="-1000"/>
<location line="+1013"/>
<location filename="../gui/MessagesDialog.cpp" line="-998"/>
<location line="+1011"/>
<location line="+8"/>
<source>Outbox</source>
<translation>Postausgang</translation>
@ -5986,7 +5999,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+9"/>
<location filename="../gui/MessagesDialog.cpp" line="-1011"/>
<location filename="../gui/MessagesDialog.cpp" line="-1009"/>
<source>Sent</source>
<translation>Gesendet</translation>
</message>
@ -6006,7 +6019,7 @@ p, li { white-space: pre-wrap; }
<translation>Schlagwörter:</translation>
</message>
<message>
<location line="+63"/>
<location line="+58"/>
<location line="+3"/>
<source>Print...</source>
<translation>Drucken...</translation>
@ -6048,13 +6061,13 @@ p, li { white-space: pre-wrap; }
<translation>Speichern unter...</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.cpp" line="+760"/>
<location filename="../gui/MessagesDialog.cpp" line="+758"/>
<source>Print Document</source>
<translation>Dokument drucken</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.ui" line="-891"/>
<location filename="../gui/MessagesDialog.cpp" line="-1574"/>
<location filename="../gui/MessagesDialog.ui" line="-886"/>
<location filename="../gui/MessagesDialog.cpp" line="-1572"/>
<source>Subject</source>
<translation>Betreff</translation>
</message>
@ -6079,22 +6092,21 @@ p, li { white-space: pre-wrap; }
<translation>Dateiname</translation>
</message>
<message>
<location line="+10"/>
<source>Sources</source>
<translation>Quellen</translation>
<translation type="obsolete">Quellen</translation>
</message>
<message>
<location line="+5"/>
<location line="+10"/>
<source>Hash</source>
<translation>Prüfsumme</translation>
</message>
<message>
<location line="-974"/>
<location line="-969"/>
<source>Print</source>
<translation>Drucken</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.cpp" line="+56"/>
<location filename="../gui/MessagesDialog.cpp" line="+54"/>
<source>Forward selected Message</source>
<translation>Gewählte Nachricht weiterleiten</translation>
</message>
@ -6154,7 +6166,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="-274"/>
<location filename="../gui/MessagesDialog.cpp" line="-324"/>
<location filename="../gui/MessagesDialog.cpp" line="-322"/>
<source>Content</source>
<translation>Inhalt</translation>
</message>
@ -6162,7 +6174,7 @@ p, li { white-space: pre-wrap; }
<location line="+5"/>
<location line="+8"/>
<location filename="../gui/MessagesDialog.cpp" line="-1"/>
<location line="+178"/>
<location line="+176"/>
<source>Tags</source>
<translation>Schlagwörter</translation>
</message>
@ -6173,8 +6185,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+177"/>
<location filename="../gui/MessagesDialog.cpp" line="+637"/>
<location line="+1037"/>
<location filename="../gui/MessagesDialog.cpp" line="+639"/>
<location line="+1035"/>
<location line="+5"/>
<source>Trash</source>
<translation>Papierkorb</translation>
@ -6220,19 +6232,19 @@ p, li { white-space: pre-wrap; }
<translation>Papierkorb leeren</translation>
</message>
<message>
<location line="+367"/>
<location line="+1028"/>
<location line="+369"/>
<location line="+1026"/>
<location line="+8"/>
<source>Drafts</source>
<translation>Entwürfe</translation>
</message>
<message>
<location line="-1000"/>
<location line="-998"/>
<source>To</source>
<translation>An</translation>
</message>
<message>
<location line="-504"/>
<location line="-506"/>
<source>Edit...</source>
<translation>Editieren...</translation>
</message>
@ -7281,7 +7293,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>PeersDialog</name>
<message>
<location filename="../gui/PeersDialog.cpp" line="+425"/>
<location filename="../gui/PeersDialog.cpp" line="+428"/>
<source>Chat</source>
<translation>Chat</translation>
</message>
@ -7306,7 +7318,7 @@ p, li { white-space: pre-wrap; }
<translation>Verbinde zum Freund</translation>
</message>
<message>
<location line="-295"/>
<location line="-298"/>
<source>Profile</source>
<translation>Profil</translation>
</message>
@ -7321,7 +7333,7 @@ p, li { white-space: pre-wrap; }
<translation>Willkommen bei RetroShare&apos;s Gruppenchat.</translation>
</message>
<message>
<location line="+57"/>
<location line="+60"/>
<source>me</source>
<translation>ich</translation>
</message>
@ -7638,12 +7650,12 @@ p, li { white-space: pre-wrap; }
<translation>Status Spalte ausblenden</translation>
</message>
<message>
<location filename="../gui/PeersDialog.cpp" line="-1817"/>
<location filename="../gui/PeersDialog.cpp" line="-1820"/>
<source>Friends Storm</source>
<translation>Aktivitäten</translation>
</message>
<message>
<location line="+1157"/>
<location line="+1160"/>
<source>is typing...</source>
<translation>tippt...</translation>
</message>
@ -7966,7 +7978,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>PopupChatDialog</name>
<message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+783"/>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+786"/>
<source>Hide Avatar</source>
<translation>Avatar verstecken</translation>
</message>
@ -8044,7 +8056,7 @@ p, li { white-space: pre-wrap; }
<translation>Deaktiviere Emoticons</translation>
</message>
<message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="-1040"/>
<location filename="../gui/chat/PopupChatDialog.cpp" line="-1043"/>
<source>Paste retroshare Link</source>
<translation>RetroShare Link einfügen</translation>
</message>
@ -8064,7 +8076,7 @@ p, li { white-space: pre-wrap; }
<translation>Wähle dein Avatar Bild aus</translation>
</message>
<message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+776"/>
<location filename="../gui/chat/PopupChatDialog.cpp" line="+779"/>
<source>Add Extra File</source>
<translation>Zusätzlich eine Datei hinzufügen</translation>
</message>
@ -8148,12 +8160,12 @@ Do you want to send them a Message instead</source>
<translation>Schliessen</translation>
</message>
<message>
<location filename="../gui/chat/PopupChatDialog.cpp" line="-331"/>
<location filename="../gui/chat/PopupChatDialog.cpp" line="-334"/>
<source>RetroShare</source>
<translation></translation>
</message>
<message>
<location line="+283"/>
<location line="+286"/>
<source>Friend not Online</source>
<translation>Freund ist nicht online</translation>
</message>
@ -9962,7 +9974,7 @@ p, li { white-space: pre-wrap; }
<name>SharedFilesDialog</name>
<message>
<location filename="../gui/SharedFilesDialog.ui" line="+846"/>
<location filename="../gui/SharedFilesDialog.cpp" line="+280"/>
<location filename="../gui/SharedFilesDialog.cpp" line="+289"/>
<source>Download</source>
<translation>Herunterladen</translation>
</message>
@ -10020,28 +10032,28 @@ p, li { white-space: pre-wrap; }
<translation>Prüfe Dateien</translation>
</message>
<message>
<location filename="../gui/SharedFilesDialog.cpp" line="-68"/>
<location line="+610"/>
<location filename="../gui/SharedFilesDialog.cpp" line="-80"/>
<location line="+501"/>
<source>Open File</source>
<translation>Datei öffnen</translation>
</message>
<message>
<location line="-608"/>
<location line="-499"/>
<source>Open Folder</source>
<translation>Ordner öffnen</translation>
</message>
<message>
<location line="+617"/>
<location line="+508"/>
<source>Set command for opening this file</source>
<translation>Setze eine Regel zum Öffnen dieser Datei</translation>
</message>
<message>
<location line="-548"/>
<location line="-425"/>
<source>Copy retroshare Link</source>
<translation>Kopiere RetroShare Link</translation>
</message>
<message>
<location line="-27"/>
<location line="-41"/>
<source>Checking...</source>
<translation>Überprüfe...</translation>
</message>
@ -10051,32 +10063,28 @@ p, li { white-space: pre-wrap; }
<translation>Überprüfe Dateien</translation>
</message>
<message>
<location line="+26"/>
<location line="+40"/>
<source>Send retroshare Link</source>
<translation>Sende RetroShare Link</translation>
</message>
<message>
<location line="+325"/>
<source>%1 recommends a list of files to you</source>
<translation>%1 empfiehlt Dir eine Liste von Dateien</translation>
<translation type="obsolete">%1 empfiehlt Dir eine Liste von Dateien</translation>
</message>
<message>
<location line="+2"/>
<source>%1 recommends a file to you</source>
<translation>%1 empfiehlt Dir eine Datei</translation>
<translation type="obsolete">%1 empfiehlt Dir eine Datei</translation>
</message>
<message>
<location line="+125"/>
<source>Recommend (Automated message) To </source>
<translation>Empfehle (automatisch) in einer Nachricht an </translation>
<translation type="obsolete">Empfehle (automatisch) in einer Nachricht an </translation>
</message>
<message>
<location line="+2"/>
<source>Recommend in a message to </source>
<translation>Empfehle in einer Nachricht an </translation>
<translation type="obsolete">Empfehle in einer Nachricht an </translation>
</message>
<message>
<location line="-540"/>
<location line="-100"/>
<source>Copy retroshare Links to Clipboard</source>
<translation>Kopiere RetroShare Links in die Zwischenablage</translation>
</message>
@ -10106,21 +10114,28 @@ p, li { white-space: pre-wrap; }
<translation>Füge die Links zur Verknüpfungs-Wolke hinzu</translation>
</message>
<message>
<location line="+213"/>
<location line="+97"/>
<location line="+385"/>
<source>Recommend in a message to</source>
<translation>Empfehle in einer Nachricht an</translation>
</message>
<message>
<location line="-259"/>
<location line="+23"/>
<location line="+24"/>
<source>RetroShare Link</source>
<translation>RetroShare Link</translation>
</message>
<message>
<location line="+137"/>
<location line="+33"/>
<location line="+89"/>
<location line="+1"/>
<location line="+23"/>
<location line="+1"/>
<source>Recommendation(s)</source>
<translation>Empfehlung(en)</translation>
</message>
<message>
<location line="+250"/>
<location line="+188"/>
<source>&lt;strong&gt;My Shared Files&lt;/strong&gt;</source>
<translation>&lt;strong&gt;Meine Dateien&lt;/strong&gt;</translation>
</message>