mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-26 23:36:59 -05:00
added context menu with copy link in channel posts files
This commit is contained in:
parent
453c656570
commit
5a1e6b8b60
@ -98,6 +98,7 @@ public:
|
|||||||
// Helper functions
|
// Helper functions
|
||||||
|
|
||||||
void clear() ;
|
void clear() ;
|
||||||
|
bool getFileData(const QModelIndex& i, ChannelPostFileInfo &fmpe) const;
|
||||||
|
|
||||||
// AbstractItemModel functions.
|
// AbstractItemModel functions.
|
||||||
|
|
||||||
@ -156,7 +157,6 @@ private:
|
|||||||
quintptr getParentRow(quintptr ref,int& row) const;
|
quintptr getParentRow(quintptr ref,int& row) const;
|
||||||
quintptr getChildRef(quintptr ref, int index) const;
|
quintptr getChildRef(quintptr ref, int index) const;
|
||||||
int getChildrenCount(quintptr ref) const;
|
int getChildrenCount(quintptr ref) const;
|
||||||
bool getFileData(const QModelIndex& i, ChannelPostFileInfo &fmpe) const;
|
|
||||||
|
|
||||||
static bool convertTabEntryToRefPointer(uint32_t entry, quintptr& ref);
|
static bool convertTabEntryToRefPointer(uint32_t entry, quintptr& ref);
|
||||||
static bool convertRefPointerToTabEntry(quintptr ref,uint32_t& entry);
|
static bool convertRefPointerToTabEntry(quintptr ref,uint32_t& entry);
|
||||||
|
@ -406,6 +406,9 @@ GxsChannelPostsWidgetWithModel::GxsChannelPostsWidgetWithModel(const RsGxsGroupI
|
|||||||
connect(ui->channelPostFiles_TV->header(),SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(sortColumnPostFiles(int,Qt::SortOrder)));
|
connect(ui->channelPostFiles_TV->header(),SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(sortColumnPostFiles(int,Qt::SortOrder)));
|
||||||
connect(ui->channelFiles_TV->header(),SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(sortColumnFiles(int,Qt::SortOrder)));
|
connect(ui->channelFiles_TV->header(),SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(sortColumnFiles(int,Qt::SortOrder)));
|
||||||
|
|
||||||
|
connect(ui->channelPostFiles_TV,SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showChannelFilesContextMenu(QPoint)));
|
||||||
|
connect(ui->channelFiles_TV,SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showChannelFilesContextMenu(QPoint)));
|
||||||
|
|
||||||
ui->channelFiles_TV->setModel(mChannelFilesModel = new RsGxsChannelPostFilesModel());
|
ui->channelFiles_TV->setModel(mChannelFilesModel = new RsGxsChannelPostFilesModel());
|
||||||
ui->channelFiles_TV->setItemDelegate(mFilesDelegate = new ChannelPostFilesDelegate(this));
|
ui->channelFiles_TV->setItemDelegate(mFilesDelegate = new ChannelPostFilesDelegate(this));
|
||||||
ui->channelFiles_TV->setPlaceholderText(tr("No files in the channel, or no channel selected"));
|
ui->channelFiles_TV->setPlaceholderText(tr("No files in the channel, or no channel selected"));
|
||||||
@ -1243,6 +1246,35 @@ void GxsChannelPostsWidgetWithModel::insertChannelDetails(const RsGxsChannelGrou
|
|||||||
showPostDetails();
|
showPostDetails();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsChannelPostsWidgetWithModel::showChannelFilesContextMenu(QPoint p)
|
||||||
|
{
|
||||||
|
QMenu contextMnu(this) ;
|
||||||
|
|
||||||
|
QAction *action = contextMnu.addAction(QIcon(), tr("Copy Retroshare link"), this, SLOT(copyChannelFilesLink()));
|
||||||
|
action->setData(QVariant::fromValue(sender()));
|
||||||
|
contextMnu.exec(QCursor::pos());
|
||||||
|
}
|
||||||
|
|
||||||
|
void GxsChannelPostsWidgetWithModel::copyChannelFilesLink()
|
||||||
|
{
|
||||||
|
// Block the popup if no results available
|
||||||
|
QAction *action = dynamic_cast<QAction*>(sender());
|
||||||
|
RSTreeView *tree = dynamic_cast<RSTreeView*>(action->data().value<QWidget*>());
|
||||||
|
|
||||||
|
QModelIndexList sel = tree->selectionModel()->selection().indexes();
|
||||||
|
|
||||||
|
if(sel.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
ChannelPostFileInfo file;
|
||||||
|
|
||||||
|
if(!static_cast<RsGxsChannelPostFilesModel*>(tree->model())->getFileData(sel.front(),file))
|
||||||
|
return;
|
||||||
|
|
||||||
|
RetroShareLink link = RetroShareLink::createFile(QString::fromUtf8(file.mName.c_str()), file.mSize, QString::fromStdString(file.mHash.toStdString()));
|
||||||
|
RSLinkClipboard::copyLinks(QList<RetroShareLink>{ link });
|
||||||
|
}
|
||||||
|
|
||||||
void GxsChannelPostsWidgetWithModel::setSubscribeButtonText(const RsGxsGroupId& group_id,uint32_t flags, uint32_t mPop)
|
void GxsChannelPostsWidgetWithModel::setSubscribeButtonText(const RsGxsGroupId& group_id,uint32_t flags, uint32_t mPop)
|
||||||
{
|
{
|
||||||
if(IS_GROUP_SUBSCRIBED(flags))
|
if(IS_GROUP_SUBSCRIBED(flags))
|
||||||
|
@ -163,6 +163,8 @@ public slots:
|
|||||||
void sortColumnFiles(int col,Qt::SortOrder so);
|
void sortColumnFiles(int col,Qt::SortOrder so);
|
||||||
void sortColumnPostFiles(int col,Qt::SortOrder so);
|
void sortColumnPostFiles(int col,Qt::SortOrder so);
|
||||||
void updateCommentsCount(int n);
|
void updateCommentsCount(int n);
|
||||||
|
void showChannelFilesContextMenu(QPoint p);
|
||||||
|
void copyChannelFilesLink();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void processSettings(bool load);
|
void processSettings(bool load);
|
||||||
|
@ -181,7 +181,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="channel_TW">
|
<widget class="QTabWidget" name="channel_TW">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab_3">
|
<widget class="QWidget" name="tab_3">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@ -552,6 +552,9 @@ p, li { white-space: pre-wrap; }
|
|||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<widget class="RSTreeView" name="channelPostFiles_TV">
|
<widget class="RSTreeView" name="channelPostFiles_TV">
|
||||||
|
<property name="contextMenuPolicy">
|
||||||
|
<enum>Qt::CustomContextMenu</enum>
|
||||||
|
</property>
|
||||||
<property name="editTriggers">
|
<property name="editTriggers">
|
||||||
<set>QAbstractItemView::CurrentChanged|QAbstractItemView::SelectedClicked</set>
|
<set>QAbstractItemView::CurrentChanged|QAbstractItemView::SelectedClicked</set>
|
||||||
</property>
|
</property>
|
||||||
@ -602,6 +605,9 @@ p, li { white-space: pre-wrap; }
|
|||||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
<item>
|
<item>
|
||||||
<widget class="RSTreeView" name="channelFiles_TV">
|
<widget class="RSTreeView" name="channelFiles_TV">
|
||||||
|
<property name="contextMenuPolicy">
|
||||||
|
<enum>Qt::CustomContextMenu</enum>
|
||||||
|
</property>
|
||||||
<property name="editTriggers">
|
<property name="editTriggers">
|
||||||
<set>QAbstractItemView::CurrentChanged|QAbstractItemView::SelectedClicked</set>
|
<set>QAbstractItemView::CurrentChanged|QAbstractItemView::SelectedClicked</set>
|
||||||
</property>
|
</property>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user