added past RS links to post on channels, and additional check that the file is already shared

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4609 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2011-09-18 19:43:38 +00:00
parent b9dfa27c19
commit ad04f62e80
3 changed files with 78 additions and 5 deletions

View File

@ -24,8 +24,10 @@
#include <QTimer> #include <QTimer>
#include <QMessageBox> #include <QMessageBox>
#include <QBuffer> #include <QBuffer>
#include <QMenu>
#include <QDir> #include <QDir>
#include <gui/RetroShareLink.h>
#include "CreateChannelMsg.h" #include "CreateChannelMsg.h"
#include "gui/feeds/SubFileItem.h" #include "gui/feeds/SubFileItem.h"
#include "util/misc.h" #include "util/misc.h"
@ -45,12 +47,14 @@ CreateChannelMsg::CreateChannelMsg(std::string cId)
setAttribute ( Qt::WA_DeleteOnClose, true ); setAttribute ( Qt::WA_DeleteOnClose, true );
connect(buttonBox, SIGNAL(accepted()), this, SLOT(sendMsg())); connect(buttonBox, SIGNAL(accepted()), this, SLOT(sendMsg()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(cancelMsg())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(cancelMsg()));
connect(addFileButton, SIGNAL(clicked() ), this , SLOT(addExtraFile())); connect(addFileButton, SIGNAL(clicked() ), this , SLOT(addExtraFile()));
connect(addfilepushButton, SIGNAL(clicked() ), this , SLOT(addExtraFile())); connect(addfilepushButton, SIGNAL(clicked() ), this , SLOT(addExtraFile()));
connect(addThumbnailButton, SIGNAL(clicked() ), this , SLOT(addThumbnail())); connect(addThumbnailButton, SIGNAL(clicked() ), this , SLOT(addThumbnail()));
connect(thumbNailCb, SIGNAL(toggled(bool)), this, SLOT(allowAutoMediaThumbNail(bool))); connect(thumbNailCb, SIGNAL(toggled(bool)), this, SLOT(allowAutoMediaThumbNail(bool)));
connect(tabWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenu(QPoint)));
thumbNailCb->setVisible(false); thumbNailCb->setVisible(false);
thumbNailCb->setEnabled(false); thumbNailCb->setEnabled(false);
#ifdef CHANNELS_FRAME_CATCHER #ifdef CHANNELS_FRAME_CATCHER
@ -65,6 +69,63 @@ CreateChannelMsg::CreateChannelMsg(std::string cId)
newChannelMsg(); newChannelMsg();
} }
void CreateChannelMsg::contextMenu(QPoint /*point*/)
{
QList<RetroShareLink> links ;
RSLinkClipboard::pasteLinks(links) ;
int n_file = 0 ;
for(QList<RetroShareLink>::const_iterator it(links.begin());it!=links.end();++it)
if((*it).type() == RetroShareLink::TYPE_FILE)
n_file++ ;
QMenu contextMnu(this) ;
QAction *action ;
if(n_file > 1)
action = contextMnu.addAction(QIcon(":/images/pasterslink.png"), tr("Paste RetroShare Links"), this, SLOT(pasteLink()));
else
action = contextMnu.addAction(QIcon(":/images/pasterslink.png"), tr("Paste RetroShare Link"), this, SLOT(pasteLink()));
action->setDisabled(n_file < 1) ;
contextMnu.exec(QCursor::pos());
}
void CreateChannelMsg::pasteLink()
{
std::cerr << "Pasting links: " << std::endl;
QList<RetroShareLink> links,not_have ;
RSLinkClipboard::pasteLinks(links) ;
for(QList<RetroShareLink>::const_iterator it(links.begin());it!=links.end();++it)
if((*it).type() == RetroShareLink::TYPE_FILE)
{
// 0 - check that we actually have the file!
//
std::cerr << "Pasting " << (*it).toString().toStdString() << std::endl;
FileInfo info ;
if(rsFiles->alreadyHaveFile( (*it).hash().toStdString(),info ) )
addAttachment((*it).hash().toStdString(), (*it).name().toStdString(), (*it).size(), true, "") ;
else
not_have.push_back( *it ) ;
}
if(!not_have.empty())
{
QString msg = tr("Channel security policy prevents you from posting files that you don't have. If you have these files, you need to share them before, or attach them explicitly:")+"<br/><br/>" ;
for(QList<RetroShareLink>::const_iterator it(not_have.begin());it!=not_have.end();++it)
msg += (*it).toString() + "<br/>" ;
QMessageBox::warning(NULL,tr("You can only post files that you do have"),msg) ;
}
}
CreateChannelMsg::~CreateChannelMsg(){ CreateChannelMsg::~CreateChannelMsg(){
#ifdef CHANNELS_FRAME_CATCHER #ifdef CHANNELS_FRAME_CATCHER

View File

@ -61,6 +61,8 @@ private slots:
void cancelMsg(); void cancelMsg();
void sendMsg(); void sendMsg();
void pasteLink() ;
void contextMenu(QPoint) ;
void addThumbnail(); void addThumbnail();
void allowAutoMediaThumbNail(bool); void allowAutoMediaThumbNail(bool);

View File

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>509</width> <width>574</width>
<height>479</height> <height>479</height>
</rect> </rect>
</property> </property>
@ -96,8 +96,17 @@ p, li { white-space: pre-wrap; }
<layout class="QGridLayout" name="gridLayout_6"> <layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="mouseTracking">
<bool>true</bool>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="title"> <attribute name="title">
@ -343,8 +352,8 @@ p, li { white-space: pre-wrap; }
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>456</width> <width>517</width>
<height>260</height> <height>269</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
@ -420,6 +429,7 @@ background: white;}</string>
<include location="../images.qrc"/> <include location="../images.qrc"/>
<include location="../images.qrc"/> <include location="../images.qrc"/>
<include location="../images.qrc"/> <include location="../images.qrc"/>
<include location="../../../../../../../../.designer/images.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>