mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-10 23:30:14 -04:00
merged with upstream/master
This commit is contained in:
commit
5c2f714ada
756 changed files with 25906 additions and 14932 deletions
86
retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.cpp
Normal file
86
retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.cpp
Normal file
|
@ -0,0 +1,86 @@
|
|||
/*******************************************************************************
|
||||
* retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.cpp *
|
||||
* *
|
||||
* Copyright 2018 by Retroshare Team <retroshare.team@gmail.com> *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU Affero General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Affero General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Affero General Public License *
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#include <QMenu>
|
||||
#include <QDateTime>
|
||||
|
||||
#include "retroshare/rsfiles.h"
|
||||
|
||||
#include "BannedFilesDialog.h"
|
||||
|
||||
#define COLUMN_FILE_NAME 0
|
||||
#define COLUMN_FILE_HASH 1
|
||||
#define COLUMN_FILE_SIZE 2
|
||||
#define COLUMN_FILE_TIME 3
|
||||
|
||||
BannedFilesDialog::BannedFilesDialog(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
|
||||
fillFilesList() ;
|
||||
|
||||
connect(ui.bannedFiles_TW, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(bannedFilesContextMenu(QPoint)));
|
||||
}
|
||||
|
||||
BannedFilesDialog::~BannedFilesDialog() {}
|
||||
|
||||
void BannedFilesDialog::unbanFile()
|
||||
{
|
||||
int row = ui.bannedFiles_TW->currentRow();
|
||||
|
||||
QTableWidgetItem *item = ui.bannedFiles_TW->item(row, COLUMN_FILE_HASH);
|
||||
|
||||
RsFileHash hash(item->data(Qt::UserRole).toString().toStdString()) ;
|
||||
rsFiles->unbanFile(hash) ;
|
||||
|
||||
fillFilesList();
|
||||
}
|
||||
|
||||
void BannedFilesDialog::bannedFilesContextMenu(QPoint)
|
||||
{
|
||||
QMenu menu(this);
|
||||
|
||||
menu.addAction(QIcon(":/images/FeedAdd.png"), tr("Remove"), this, SLOT(unbanFile()));
|
||||
|
||||
menu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
void BannedFilesDialog::fillFilesList()
|
||||
{
|
||||
std::map<RsFileHash,BannedFileEntry> banned_files ;
|
||||
|
||||
rsFiles->getPrimaryBannedFilesList(banned_files);
|
||||
int row=0;
|
||||
|
||||
ui.bannedFiles_TW->setRowCount(banned_files.size()) ;
|
||||
|
||||
for(auto it(banned_files.begin());it!=banned_files.end();++it)
|
||||
{
|
||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_NAME, new QTableWidgetItem(QIcon(),QString::fromUtf8(it->second.filename.c_str()),0));
|
||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_HASH, new QTableWidgetItem(QIcon(),QString::fromStdString(it->first.toStdString()),0));
|
||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_SIZE, new QTableWidgetItem(QIcon(),QString::number(it->second.size),0));
|
||||
ui.bannedFiles_TW->setItem(row, COLUMN_FILE_TIME, new QTableWidgetItem(QIcon(),QDateTime::fromTime_t(it->second.ban_time_stamp).toString(),0));
|
||||
|
||||
ui.bannedFiles_TW->item(row, COLUMN_FILE_HASH)->setData(Qt::UserRole, QString::fromStdString(it->first.toStdString()));
|
||||
|
||||
row++;
|
||||
}
|
||||
}
|
49
retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.h
Normal file
49
retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.h
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*******************************************************************************
|
||||
* retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.h *
|
||||
* *
|
||||
* Copyright 2018 by Retroshare Team <retroshare.team@gmail.com> *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU Affero General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Affero General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Affero General Public License *
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
*******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RsAutoUpdatePage.h"
|
||||
#include "ui_BannedFilesDialog.h"
|
||||
|
||||
class BannedFilesDialog: public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/** Default Constructor */
|
||||
BannedFilesDialog(QWidget *parent = 0);
|
||||
/** Default Destructor */
|
||||
~BannedFilesDialog();
|
||||
|
||||
private slots:
|
||||
void unbanFile();
|
||||
|
||||
/** management of the adv search dialog object when switching search modes */
|
||||
//void hideEvent(QHideEvent * event);
|
||||
void bannedFilesContextMenu(QPoint);
|
||||
|
||||
private:
|
||||
void fillFilesList();
|
||||
|
||||
/** Qt Designer generated object */
|
||||
Ui::BannedFilesDialog ui;
|
||||
};
|
||||
|
67
retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.ui
Normal file
67
retroshare-gui/src/gui/FileTransfer/BannedFilesDialog.ui
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>BannedFilesDialog</class>
|
||||
<widget class="QDialog" name="BannedFilesDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>923</width>
|
||||
<height>810</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p><span style=" font-weight:600;">Collaborative file control</span>: the list below contains files you choose to ban from your <span style=" font-weight:600;">local</span> network: you will not forward search results nor data from these files to your friends. This list is securely shared with your friends, unless they uncheck option &quot;Trust my friends for banning unwanted content&quot;. This feature cannot globally hide a file unless a signficant proportion of users in the same network decide to ban it.</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignJustify|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="bannedFiles_TW">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Filename</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Hash</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Size</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Banned since...</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "rshare.h"
|
||||
#include "SearchDialog.h"
|
||||
#include "gui/FileTransfer/BannedFilesDialog.h"
|
||||
#include "gui/RSHumanReadableDelegate.h"
|
||||
#include "gui/RetroShareLink.h"
|
||||
#include "retroshare-gui/RsAutoUpdatePage.h"
|
||||
|
@ -54,6 +55,7 @@
|
|||
#define IMAGE_COLLVIEW ":/images/library_view.png"
|
||||
#define IMAGE_COLLOPEN ":/images/library.png"
|
||||
#define IMAGE_COPYLINK ":/images/copyrslink.png"
|
||||
#define IMAGE_BANFILE ":/icons/biohazard_red.png"
|
||||
|
||||
/* Key for UI Preferences */
|
||||
#define UI_PREF_ADVANCED_SEARCH "UIOptions/AdvancedSearch"
|
||||
|
@ -117,6 +119,7 @@ SearchDialog::SearchDialog(QWidget *parent)
|
|||
connect( ui.searchResultWidget, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( searchResultWidgetCustomPopupMenu( QPoint ) ) );
|
||||
|
||||
connect( ui.searchSummaryWidget, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( searchSummaryWidgetCustomPopupMenu( QPoint ) ) );
|
||||
connect( ui.showBannedFiles_TB, SIGNAL( clicked() ), this, SLOT( openBannedFiles() ) );
|
||||
|
||||
connect( ui.lineEdit, SIGNAL( returnPressed ( void ) ), this, SLOT( searchKeywords( void ) ) );
|
||||
connect( ui.lineEdit, SIGNAL( textChanged ( const QString& ) ), this, SLOT( checkText( const QString& ) ) );
|
||||
|
@ -165,8 +168,10 @@ SearchDialog::SearchDialog(QWidget *parent)
|
|||
QHeaderView_setSectionResizeModeColumn(_smheader, SS_KEYWORDS_COL, QHeaderView::Interactive);
|
||||
QHeaderView_setSectionResizeModeColumn(_smheader, SS_RESULTS_COL, QHeaderView::Interactive);
|
||||
|
||||
_smheader->resizeSection ( SS_KEYWORDS_COL, 160 );
|
||||
_smheader->resizeSection ( SS_RESULTS_COL, 50 );
|
||||
float f = QFontMetricsF(font()).height()/14.0 ;
|
||||
|
||||
_smheader->resizeSection ( SS_KEYWORDS_COL, 160*f );
|
||||
_smheader->resizeSection ( SS_RESULTS_COL, 50*f );
|
||||
|
||||
ui.searchResultWidget->setColumnCount(SR_COL_COUNT);
|
||||
_smheader = ui.searchResultWidget->header () ;
|
||||
|
@ -174,12 +179,12 @@ SearchDialog::SearchDialog(QWidget *parent)
|
|||
QHeaderView_setSectionResizeModeColumn(_smheader, SR_SIZE_COL, QHeaderView::Interactive);
|
||||
QHeaderView_setSectionResizeModeColumn(_smheader, SR_SOURCES_COL, QHeaderView::Interactive);
|
||||
|
||||
_smheader->resizeSection ( SR_NAME_COL, 240 );
|
||||
_smheader->resizeSection ( SR_SIZE_COL, 75 );
|
||||
_smheader->resizeSection ( SR_SOURCES_COL, 75 );
|
||||
_smheader->resizeSection ( SR_TYPE_COL, 75 );
|
||||
_smheader->resizeSection ( SR_AGE_COL, 90 );
|
||||
_smheader->resizeSection ( SR_HASH_COL, 240 );
|
||||
_smheader->resizeSection ( SR_NAME_COL, 240*f );
|
||||
_smheader->resizeSection ( SR_SIZE_COL, 75*f );
|
||||
_smheader->resizeSection ( SR_SOURCES_COL, 75*f );
|
||||
_smheader->resizeSection ( SR_TYPE_COL, 75*f );
|
||||
_smheader->resizeSection ( SR_AGE_COL, 90*f );
|
||||
_smheader->resizeSection ( SR_HASH_COL, 240*f );
|
||||
|
||||
// set header text aligment
|
||||
QTreeWidgetItem * headerItem = ui.searchResultWidget->headerItem();
|
||||
|
@ -201,10 +206,10 @@ SearchDialog::SearchDialog(QWidget *parent)
|
|||
// load settings
|
||||
processSettings(true);
|
||||
|
||||
ui._ownFiles_CB->setMinimumWidth(20);
|
||||
ui._friendListsearch_SB->setMinimumWidth(20);
|
||||
ui._anonF2Fsearch_CB->setMinimumWidth(20);
|
||||
ui.label->setMinimumWidth(20);
|
||||
ui._ownFiles_CB->setMinimumWidth(20*f);
|
||||
ui._friendListsearch_SB->setMinimumWidth(20*f);
|
||||
ui._anonF2Fsearch_CB->setMinimumWidth(20*f);
|
||||
ui.label->setMinimumWidth(20*f);
|
||||
|
||||
// workaround for Qt bug, be solved in next Qt release 4.7.0
|
||||
// https://bugreports.qt-project.org/browse/QTBUG-8270
|
||||
|
@ -325,6 +330,7 @@ void SearchDialog::searchResultWidgetCustomPopupMenu( QPoint /*point*/ )
|
|||
QMenu contextMnu(this) ;
|
||||
|
||||
contextMnu.addAction(QIcon(IMAGE_START), tr("Download"), this, SLOT(download())) ;
|
||||
contextMnu.addAction(QIcon(IMAGE_BANFILE), tr("Mark as bad"), this, SLOT(ban())) ;
|
||||
contextMnu.addSeparator();//--------------------------------------
|
||||
|
||||
contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyResultLink())) ;
|
||||
|
@ -404,22 +410,53 @@ void SearchDialog::download()
|
|||
std::cout << "isuing file request from search dialog: -"
|
||||
<< (item->text(SR_NAME_COL)).toStdString()
|
||||
<< "-" << hash << "-" << (item->text(SR_SIZE_COL)).toULongLong() << "-ids=" ;
|
||||
for(std::list<RsPeerId>::const_iterator it(srcIds.begin()); it!=srcIds.end(); ++it) {
|
||||
for(std::list<RsPeerId>::const_iterator it(srcIds.begin()); it!=srcIds.end(); ++it)
|
||||
std::cout << *it << "-" << std::endl;
|
||||
}//for(std::list<RsPeerId>::const_iterator
|
||||
//QColor foreground = QColor(0, 128, 0); // green
|
||||
|
||||
QColor foreground = textColorDownloading();
|
||||
QBrush brush(foreground);
|
||||
for (int i = 0; i < item->columnCount(); ++i)
|
||||
{
|
||||
item->setForeground(i, brush);
|
||||
}
|
||||
}//if(!rsFiles -> FileRequest(
|
||||
}//if (item->text(SR_HASH_COL).isEmpty())
|
||||
}//for (int i = 0
|
||||
if (attemptDownloadLocal) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (attemptDownloadLocal)
|
||||
QMessageBox::information(this, tr("Download Notice"), tr("Skipping Local Files")) ;
|
||||
}//if (attemptDownloadLocal)
|
||||
}
|
||||
|
||||
void SearchDialog::ban()
|
||||
{
|
||||
/* should also be able to handle multi-selection */
|
||||
|
||||
QList<QTreeWidgetItem*> itemsForDownload = ui.searchResultWidget->selectedItems() ;
|
||||
int numdls = itemsForDownload.size() ;
|
||||
QTreeWidgetItem * item ;
|
||||
|
||||
for (int i = 0; i < numdls; ++i)
|
||||
{
|
||||
item = itemsForDownload.at(i) ;
|
||||
// call the download
|
||||
// *
|
||||
if(!item->text(SR_HASH_COL).isEmpty())
|
||||
{
|
||||
std::cerr << "SearchDialog::download() Calling File Ban" << std::endl ;
|
||||
|
||||
RsFileHash hash( item->text(SR_HASH_COL).toStdString()) ;
|
||||
|
||||
rsFiles -> banFile( hash, (item->text(SR_NAME_COL)).toUtf8().constData() , (item->text(SR_SIZE_COL)).toULongLong());
|
||||
|
||||
while(item->parent() != NULL)
|
||||
item = item->parent();
|
||||
|
||||
ui.searchResultWidget->takeTopLevelItem(ui.searchResultWidget->indexOfTopLevelItem(item)) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SearchDialog::openBannedFiles()
|
||||
{
|
||||
BannedFilesDialog d ;
|
||||
d.exec();
|
||||
}
|
||||
|
||||
void SearchDialog::collCreate()
|
||||
|
@ -792,7 +829,7 @@ void SearchDialog::advancedSearch(RsRegularExpression::Expression* expression)
|
|||
RsRegularExpression::LinearizedExpression e ;
|
||||
expression->linearize(e) ;
|
||||
|
||||
TurtleRequestId req_id = rsTurtle->turtleSearch(e) ;
|
||||
TurtleRequestId req_id = rsFiles->turtleSearch(e) ;
|
||||
|
||||
// This will act before turtle results come to the interface, thanks to the signals scheduling policy.
|
||||
initSearchResult(QString::fromStdString(e.GetStrings()),req_id, ui.FileTypeComboBox->currentIndex(), true) ;
|
||||
|
@ -858,9 +895,9 @@ void SearchDialog::searchKeywords(const QString& keywords)
|
|||
if(ui._anonF2Fsearch_CB->isChecked())
|
||||
{
|
||||
if(n==1)
|
||||
req_id = rsTurtle->turtleSearch(words.front()) ;
|
||||
req_id = rsFiles->turtleSearch(words.front()) ;
|
||||
else
|
||||
req_id = rsTurtle->turtleSearch(lin_exp) ;
|
||||
req_id = rsFiles->turtleSearch(lin_exp) ;
|
||||
}
|
||||
else
|
||||
req_id = RSRandom::random_u32() ; // generate a random 32 bits request id
|
||||
|
@ -940,9 +977,7 @@ void SearchDialog::processResultQueue()
|
|||
while(!searchResultsQueue.empty() && nb_treated_elements++ < 250)
|
||||
{
|
||||
qulonglong search_id = searchResultsQueue.back().first ;
|
||||
FileDetail file = searchResultsQueue.back().second ;
|
||||
|
||||
searchResultsQueue.pop_back() ;
|
||||
FileDetail& file = searchResultsQueue.back().second ;
|
||||
|
||||
#ifdef DEBUG
|
||||
std::cout << "Updating file detail:" << std::endl ;
|
||||
|
@ -952,6 +987,8 @@ void SearchDialog::processResultQueue()
|
|||
#endif
|
||||
|
||||
insertFile(search_id,file);
|
||||
|
||||
searchResultsQueue.pop_back() ;
|
||||
}
|
||||
ui.searchResultWidget->setSortingEnabled(true);
|
||||
if(!searchResultsQueue.empty())
|
||||
|
@ -1286,6 +1323,7 @@ void SearchDialog::insertFile(qulonglong searchId, const FileDetail& file, int s
|
|||
modifiedResult =QString::number(friendSource) + "/" + QString::number(anonymousSource);
|
||||
float fltRes = friendSource + (float)anonymousSource/1000;
|
||||
item->setText(SR_SOURCES_COL,modifiedResult);
|
||||
item->setToolTip(SR_SOURCES_COL, tr("Obtained via ")+QString::fromStdString(rsPeers->getPeerName(file.id)) );
|
||||
item->setData(SR_SOURCES_COL, ROLE_SORT, fltRes);
|
||||
item->setTextAlignment( SR_SOURCES_COL, Qt::AlignRight );
|
||||
item->setText(SR_SEARCH_ID_COL, sid_hexa);
|
||||
|
|
|
@ -75,6 +75,7 @@ private slots:
|
|||
void searchSummaryWidgetCustomPopupMenu( QPoint point );
|
||||
|
||||
void download();
|
||||
void ban();
|
||||
|
||||
void collCreate();
|
||||
void collModif();
|
||||
|
@ -86,6 +87,7 @@ private slots:
|
|||
void recommendtofriends();
|
||||
void checkText(const QString&);
|
||||
|
||||
void openBannedFiles();
|
||||
void copyResultLink();
|
||||
void copySearchLink();
|
||||
void openFolderSearch();
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>758</width>
|
||||
<height>339</height>
|
||||
<width>1531</width>
|
||||
<height>889</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -32,7 +32,16 @@
|
|||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<property name="margin">
|
||||
<property name="leftMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
|
@ -55,15 +64,24 @@
|
|||
</size>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="LineEditClear" name="lineEdit">
|
||||
<property name="toolTip">
|
||||
|
@ -152,6 +170,23 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="showBannedFiles_TB">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<normaloff>:/icons/biohazard_red.png</normaloff>:/icons/biohazard_red.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -307,7 +342,7 @@
|
|||
<string>Any</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeAny.png</normaloff>:/images/FileTypeAny.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -316,7 +351,7 @@
|
|||
<string>Archive</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeArchive.png</normaloff>:/images/FileTypeArchive.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<string>Audio</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeAudio.png</normaloff>:/images/FileTypeAudio.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -334,7 +369,7 @@
|
|||
<string>CD-Image</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeCDImage.png</normaloff>:/images/FileTypeCDImage.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -343,7 +378,7 @@
|
|||
<string>Document</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeDocument.png</normaloff>:/images/FileTypeDocument.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -352,7 +387,7 @@
|
|||
<string>Picture</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypePicture.png</normaloff>:/images/FileTypePicture.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -361,7 +396,7 @@
|
|||
<string>Program</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeProgram.png</normaloff>:/images/FileTypeProgram.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -370,7 +405,7 @@
|
|||
<string>Video</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/FileTypeVideo.png</normaloff>:/images/FileTypeVideo.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -379,7 +414,7 @@
|
|||
<string>Directory</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/folder16.png</normaloff>:/images/folder16.png</iconset>
|
||||
</property>
|
||||
</item>
|
||||
|
@ -406,7 +441,7 @@
|
|||
<string>Download selected</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="images.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/download16.png</normaloff>:/images/download16.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
|
@ -423,7 +458,7 @@
|
|||
<customwidget>
|
||||
<class>LineEditClear</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>gui/common/LineEditClear.h</header>
|
||||
<header location="global">gui/common/LineEditClear.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>SearchTreeWidget</class>
|
||||
|
@ -432,7 +467,8 @@
|
|||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="images.qrc"/>
|
||||
<include location="../icons.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -1140,14 +1140,14 @@ void LocalSharedFilesDialog::spawnCustomPopupMenu( QPoint point )
|
|||
{
|
||||
shareChannelMenu.setIcon(QIcon(IMAGE_CHANNEL));
|
||||
|
||||
std::list<RsGroupMetaData> grp_metas ;
|
||||
std::map<RsGxsGroupId,RsGroupMetaData> grp_metas ;
|
||||
channelDialog->getGroupList(grp_metas) ;
|
||||
|
||||
std::vector<std::pair<std::string,RsGxsGroupId> > grplist ; // I dont use a std::map because two or more channels may have the same name.
|
||||
|
||||
for(auto it(grp_metas.begin());it!=grp_metas.end();++it)
|
||||
if(IS_GROUP_PUBLISHER((*it).mSubscribeFlags) && IS_GROUP_SUBSCRIBED((*it).mSubscribeFlags))
|
||||
grplist.push_back(std::make_pair((*it).mGroupName, (*it).mGroupId));
|
||||
if(IS_GROUP_PUBLISHER((*it).second.mSubscribeFlags) && IS_GROUP_SUBSCRIBED((*it).second.mSubscribeFlags))
|
||||
grplist.push_back(std::make_pair((*it).second.mGroupName, (*it).second.mGroupId));
|
||||
|
||||
std::sort(grplist.begin(),grplist.end(),ChannelCompare()) ;
|
||||
|
||||
|
@ -1164,14 +1164,14 @@ void LocalSharedFilesDialog::spawnCustomPopupMenu( QPoint point )
|
|||
{
|
||||
shareForumMenu.setIcon(QIcon(IMAGE_FORUMS));
|
||||
|
||||
std::list<RsGroupMetaData> grp_metas ;
|
||||
std::map<RsGxsGroupId,RsGroupMetaData> grp_metas ;
|
||||
forumsDialog->getGroupList(grp_metas) ;
|
||||
|
||||
std::vector<std::pair<std::string,RsGxsGroupId> > grplist ; // I dont use a std::map because two or more channels may have the same name.
|
||||
|
||||
for(auto it(grp_metas.begin());it!=grp_metas.end();++it)
|
||||
if(IS_GROUP_SUBSCRIBED((*it).mSubscribeFlags))
|
||||
grplist.push_back(std::make_pair((*it).mGroupName, (*it).mGroupId));
|
||||
if(IS_GROUP_SUBSCRIBED((*it).second.mSubscribeFlags))
|
||||
grplist.push_back(std::make_pair((*it).second.mGroupName, (*it).second.mGroupId));
|
||||
|
||||
std::sort(grplist.begin(),grplist.end(),ChannelCompare()) ;
|
||||
|
||||
|
|
|
@ -55,7 +55,8 @@ public:
|
|||
/* Fixed numbers for load and save the last page */
|
||||
SearchTab = 0, /** Network page. */
|
||||
LocalSharedFilesTab = 1, /** Network new graph. */
|
||||
RemoteSharedFilesTab = 2 /** Old group chat page. */
|
||||
RemoteSharedFilesTab = 2, /** Old group chat page. */
|
||||
DownloadTab = 3
|
||||
};
|
||||
|
||||
|
||||
|
@ -108,9 +109,6 @@ private slots:
|
|||
void expandAllUL();
|
||||
void collapseAllUL();
|
||||
|
||||
// void rootdecorated();
|
||||
// void rootisnotdecorated();
|
||||
|
||||
void pauseFileTransfer();
|
||||
void resumeFileTransfer();
|
||||
void dlOpenFolder();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue