diff --git a/retroshare-gui/src/gui/TransferFeed.cpp b/retroshare-gui/src/gui/TransferFeed.cpp index 75e0d6fd9..525b3e414 100644 --- a/retroshare-gui/src/gui/TransferFeed.cpp +++ b/retroshare-gui/src/gui/TransferFeed.cpp @@ -224,8 +224,13 @@ void TransferFeed::updateDownloads() if (rsFiles->FileDetails(*it, hintflags, fi)) { + // XXX HACK _ TOFIX >>>> fi.source); + SubFileItem *sfi = new SubFileItem(*it, fi.fname, - fi.size, SFI_STATE_DOWNLOAD, fi.source); + fi.size, SFI_STATE_DOWNLOAD, ""); + + // XXX HACK _ TOFIX >>>> fi.source); + mDownloads[*it] = sfi; mDownloadsLayout->addWidget(sfi); } @@ -314,8 +319,13 @@ void TransferFeed::updateUploads() if (rsFiles->FileDetails(*it, hintflags, fi)) { + // XXX HACK _ TOFIX >>>> fi.source); + SubFileItem *sfi = new SubFileItem(*it, fi.fname, - fi.size, SFI_STATE_UPLOAD, fi.source); + fi.size, SFI_STATE_UPLOAD, ""); + + // XXX HACK _ TOFIX >>>> fi.source); + mUploads[*it] = sfi; mUploadsLayout->addWidget(sfi); } diff --git a/retroshare-gui/src/gui/TransfersDialog.cpp b/retroshare-gui/src/gui/TransfersDialog.cpp index 087a9f34b..2815a51f7 100644 --- a/retroshare-gui/src/gui/TransfersDialog.cpp +++ b/retroshare-gui/src/gui/TransfersDialog.cpp @@ -373,47 +373,93 @@ void TransfersDialog::insertTransfers() std::list::iterator it; for(it = downHashes.begin(); it != downHashes.end(); it++) { - FileInfo info; - if (!rsFiles->FileDetails(*it, 0, info)) - { - continue; - } - + FileInfo info; + if (!rsFiles->FileDetails(*it, 0, info)) + { + continue; + } + + std::list::iterator pit; + for(pit = info.peers.begin(); pit != info.peers.end(); pit++) + { symbol = ""; coreId = QString::fromStdString(info.hash); name = QString::fromStdString(info.fname); - sources = QString::fromStdString(info.source); + sources = QString::fromStdString(pit->peerId); - switch(info.downloadStatus) + switch(pit->status) { - - /******** XXX HAND CODED! -#define FT_STATE_FAILED 0 -#define FT_STATE_OKAY 1 -#define FT_STATE_WAITING 2 -#define FT_STATE_DOWNLOADING 3 -#define FT_STATE_COMPLETE 4 - *******************/ - - case 0: /* FAILED */ + case FT_STATE_FAILED: status = "Failed"; break; - case 1: /* OKAY */ + case FT_STATE_OKAY: status = "Okay"; break; - case 2: /* WAITING */ + case FT_STATE_WAITING: status = "Waiting"; break; - case 3: /* DOWNLOADING */ + case FT_STATE_DOWNLOADING: status = "Downloading"; break; - case 4: /* COMPLETE */ + case FT_STATE_COMPLETE: default: status = "Complete"; break; } + + if (info.downloadStatus == FT_STATE_COMPLETE) + { + status = "Complete"; + } + dlspeed = pit->tfRate * 1024.0; + fileSize = info.size; + completed = info.transfered; + progress = info.transfered * 100.0 / info.size; + remaining = (info.size - info.transfered) / (info.tfRate * 1024.0); + + addItem(symbol, name, coreId, fileSize, progress, + dlspeed, sources, status, completed, remaining); + + /* if found in selectedIds -> select again */ + if (selectedIds.end() != std::find(selectedIds.begin(), selectedIds.end(), info.hash)) + { + selection->select(DLListModel->index(dlCount, 0), + QItemSelectionModel::Rows | QItemSelectionModel::SelectCurrent); + + } + dlCount++; + } + /* alternative ... if no peers there stick it in anyway */ + if (info.peers.size() == 0) + { + symbol = ""; + coreId = QString::fromStdString(info.hash); + name = QString::fromStdString(info.fname); + sources = QString::fromStdString("Unknown"); + + switch(info.downloadStatus) + { + case FT_STATE_FAILED: + status = "Failed"; + break; + case FT_STATE_OKAY: + status = "Okay"; + break; + case FT_STATE_WAITING: + status = "Waiting"; + break; + case FT_STATE_DOWNLOADING: + status = "Downloading"; + break; + case FT_STATE_COMPLETE: + default: + status = "Complete"; + break; + + } + dlspeed = info.tfRate * 1024.0; fileSize = info.size; completed = info.transfered; @@ -431,51 +477,90 @@ void TransfersDialog::insertTransfers() } dlCount++; + } } for(it = upHashes.begin(); it != upHashes.end(); it++) { - FileInfo info; - if (!rsFiles->FileDetails(*it, 0, info)) - { - continue; - } - + FileInfo info; + if (!rsFiles->FileDetails(*it, 0, info)) + { + continue; + } + + std::list::iterator pit; + for(pit = info.peers.begin(); pit != info.peers.end(); pit++) + { symbol = ""; coreId = QString::fromStdString(info.hash); name = QString::fromStdString(info.fname); - sources = QString::fromStdString(info.source); + sources = QString::fromStdString(pit->peerId); - switch(info.downloadStatus) + switch(pit->status) { - - /******** XXX HAND CODED! -#define FT_STATE_FAILED 0 -#define FT_STATE_OKAY 1 -#define FT_STATE_WAITING 2 -#define FT_STATE_DOWNLOADING 3 -#define FT_STATE_COMPLETE 4 - *******************/ - - case 0: /* FAILED */ + case FT_STATE_FAILED: status = "Failed"; break; - case 1: /* OKAY */ + case FT_STATE_OKAY: status = "Okay"; break; - case 2: /* WAITING */ + case FT_STATE_WAITING: status = "Waiting"; break; - case 3: /* DOWNLOADING */ + case FT_STATE_DOWNLOADING: status = "Downloading"; break; - case 4: /* COMPLETE */ + case FT_STATE_COMPLETE: default: status = "Complete"; break; } + + if (info.downloadStatus == FT_STATE_COMPLETE) + { + status = "Complete"; + } + dlspeed = pit->tfRate * 1024.0; + fileSize = info.size; + completed = info.transfered; + progress = info.transfered * 100.0 / info.size; + remaining = (info.size - info.transfered) / (info.tfRate * 1024.0); + + addUploadItem(symbol, name, coreId, fileSize, progress, + dlspeed, sources, status, completed, remaining); + ulCount++; + } + + if (info.peers.size() == 0) + { + symbol = ""; + coreId = QString::fromStdString(info.hash); + name = QString::fromStdString(info.fname); + sources = QString::fromStdString("Unknown"); + + switch(info.downloadStatus) + { + case FT_STATE_FAILED: + status = "Failed"; + break; + case FT_STATE_OKAY: + status = "Okay"; + break; + case FT_STATE_WAITING: + status = "Waiting"; + break; + case FT_STATE_DOWNLOADING: + status = "Downloading"; + break; + case FT_STATE_COMPLETE: + default: + status = "Complete"; + break; + + } + dlspeed = info.tfRate * 1024.0; fileSize = info.size; completed = info.transfered; @@ -485,6 +570,7 @@ void TransfersDialog::insertTransfers() addUploadItem(symbol, name, coreId, fileSize, progress, dlspeed, sources, status, completed, remaining); ulCount++; + } } } diff --git a/retroshare-gui/src/gui/elastic/graphwidget.cpp b/retroshare-gui/src/gui/elastic/graphwidget.cpp index 1205dd4b8..a3c6f60aa 100644 --- a/retroshare-gui/src/gui/elastic/graphwidget.cpp +++ b/retroshare-gui/src/gui/elastic/graphwidget.cpp @@ -51,7 +51,8 @@ GraphWidget::GraphWidget(QWidget *parent) #if 0 QGraphicsScene *scene = new QGraphicsScene(this); scene->setItemIndexMethod(QGraphicsScene::NoIndex); - scene->setSceneRect(-200, -200, 400, 400); + //scene->setSceneRect(-200, -200, 400, 400); + scene->setSceneRect(-200, -200, 1000, 1000); setScene(scene); centerNode = new Node(this, 1, "You"); @@ -66,7 +67,8 @@ GraphWidget::GraphWidget(QWidget *parent) setTransformationAnchor(AnchorUnderMouse); setResizeAnchor(AnchorViewCenter); scale(0.8, 0.8); - setMinimumSize(400, 400); + //setMinimumSize(400, 400); + //setMinimumSize(1000, 1000); setWindowTitle(tr("Elastic Nodes")); clearGraph(); @@ -81,21 +83,14 @@ bool GraphWidget::clearGraph() QGraphicsScene *scene = new QGraphicsScene(this); scene->setItemIndexMethod(QGraphicsScene::NoIndex); - scene->setSceneRect(-200, -200, 400, 400); + //scene->setSceneRect(-200, -200, 400, 400); + scene->setSceneRect(-200, -200, 1000, 1000); setScene(scene); - //setCacheMode(CacheBackground); - //setRenderHint(QPainter::Antialiasing); - //setTransformationAnchor(AnchorUnderMouse); - //setResizeAnchor(AnchorViewCenter); centerNode = new Node(this, 1, "OwnId", "You"); scene->addItem(centerNode); centerNode->setPos(0, 0); - //scale(0.8, 0.8); - //setMinimumSize(400, 400); - //setWindowTitle(tr("Elastic Nodes")); - if (oldscene) { delete oldscene; diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.cpp b/retroshare-gui/src/gui/feeds/SubFileItem.cpp index f32be9c31..3cc918ff7 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.cpp +++ b/retroshare-gui/src/gui/feeds/SubFileItem.cpp @@ -30,7 +30,6 @@ * #define DEBUG_ITEM 1 ****/ -#define DEBUG_ITEM 1 /******************************************************************* * SubFileItem fully controls the file transfer from the gui side @@ -541,7 +540,10 @@ void SubFileItem::download() std::cerr << "SubFileItem::download() Calling File Request"; std::cerr << std::endl; std::list srcIds; - srcIds.push_back(mSrcId); + if (mSrcId != "") + { + srcIds.push_back(mSrcId); + } rsFiles->FileRequest(mFileName, mFileHash, mFileSize, "", 0, srcIds); } diff --git a/retroshare-gui/src/rsiface/rstypes.h b/retroshare-gui/src/rsiface/rstypes.h index 2675c2d5b..fdc8c13f2 100644 --- a/retroshare-gui/src/rsiface/rstypes.h +++ b/retroshare-gui/src/rsiface/rstypes.h @@ -37,6 +37,22 @@ typedef std::string RsChanId; typedef std::string RsMsgId; typedef std::string RsAuthId; +const uint32_t FT_STATE_FAILED = 0x0000; +const uint32_t FT_STATE_OKAY = 0x0001; +const uint32_t FT_STATE_WAITING = 0x0002; +const uint32_t FT_STATE_DOWNLOADING = 0x0003; +const uint32_t FT_STATE_COMPLETE = 0x0004; + +class TransferInfo +{ + public: + /**** Need Some of these Fields ****/ + std::string peerId; + std::string name; /* if has alternative name? */ + double tfRate; /* kbytes */ + int status; /* FT_STATE_... */ +}; + class FileInfo { @@ -75,37 +91,13 @@ static const int kRsFiStatusDone = 2; double rank; int age; - /* Old FileTransferInfo Entries */ - public: - std::string source; - std::list peerIds; - int transfered; - double tfRate; /* kbytes */ - bool download; - int downloadStatus; /* 0 = Err, 1 = Ok, 2 = Done */ - - /* ENTRIES USED BY SFI *** - * - * path, - * fname, - * hash, - * size, - * avail, - * - * source? - * - */ - - + /* Transfer Stuff */ + uint64_t transfered; + double tfRate; /* in kbytes */ + uint32_t downloadStatus; /* 0 = Err, 1 = Ok, 2 = Done */ + std::list peers; }; -class FileTransferInfo: public FileInfo -{ - public: - FileTransferInfo() { return; } -}; - - std::ostream &operator<<(std::ostream &out, const FileInfo &info);