void SettingsSharing::slotRecreateShare(){ ShareManager *SM = ShareManager::getInstance(); SM->setDirty(); SM->refresh(true); HashProgress progress(this); if (progress.exec() == QDialog::Accepted){ updateShareView(); } }
unsigned HashProgress::getHashStatus() { ShareManager *SM = ShareManager::getInstance(); HashManager *HM = HashManager::getInstance(); if( SM->isRefreshing() ) return LISTUPDATE; if( HM->isHashingPaused() ) { return (Util::getUpTime() < SETTING(HASHING_START_DELAY)) ? DELAYED : PAUSED; } string path; int64_t bytes = 0; size_t files = 0; HM->getStats(path, bytes, files); if( bytes != 0 || files != 0 ) return RUNNING; return IDLE; }
void HashProgress::slotStart() { ShareManager *SM = ShareManager::getInstance(); HashManager *HM = HashManager::getInstance(); switch( getHashStatus() ) { case IDLE: SM->setDirty(); SM->refresh(true); break; case LISTUPDATE: case RUNNING: HM->pauseHashing(); //HM->setPriority(Thread::IDLE); break; case DELAYED: case PAUSED: HM->resumeHashing(); //HM->setPriority(Thread::NORMAL); break; } stateButton(); }
QVariant SearchModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); SearchItem *item = static_cast<SearchItem*>(index.internalPointer()); switch(role) { case Qt::DecorationRole: // icon { if (index.column() == COLUMN_SF_FILENAME && !item->isDir) return WulforUtil::getInstance()->getPixmapForFile(item->data(COLUMN_SF_FILENAME).toString()).scaled(16, 16); else if (index.column() == COLUMN_SF_FILENAME && item->isDir) return WICON(WulforUtil::eiFOLDER_BLUE).scaled(16, 16); break; } case Qt::DisplayRole: return item->data(index.column()); case Qt::TextAlignmentRole: { const int i_column = index.column(); bool align_center = (i_column == COLUMN_SF_ALLSLOTS) || (i_column == COLUMN_SF_EXTENSION) || (i_column == COLUMN_SF_FREESLOTS); bool align_right = (i_column == COLUMN_SF_ESIZE) || (i_column == COLUMN_SF_SIZE ) || (i_column == COLUMN_SF_COUNT); if (align_center) return Qt::AlignCenter; else if (align_right) return Qt::AlignRight; break; } case Qt::ForegroundRole: { if (filterRole == static_cast<int>(SearchFrame::Highlight)){ TTHValue t(_tq(item->data(COLUMN_SF_TTH).toString())); if (ShareManager::getInstance()->isTTHShared(t)){ static QColor c; c.setNamedColor(WSGET(WS_APP_SHARED_FILES_COLOR)); c.setAlpha(WIGET(WI_APP_SHARED_FILES_ALPHA)); return c; } } break; } case Qt::BackgroundColorRole: break; case Qt::ToolTipRole: { TTHValue t(_tq(item->data(COLUMN_SF_TTH).toString())); ShareManager *SM = ShareManager::getInstance(); try{ QString toolTip = _q(SM->toReal(SM->toVirtual(t))); return tr("File already exists: %1").arg(toolTip); }catch( ... ){} break; } default: break; } return QVariant(); }
QVariant FileBrowserModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); FileBrowserItem *item = static_cast<FileBrowserItem*>(index.internalPointer()); QString path = "";//virtual path QStringList dirs = createRemotePath(item).split("\\"); if (dirs.size() >= 2){ dirs.removeFirst(); path = "/" + dirs.join("/"); } else path = ""; switch(role) { case Qt::DecorationRole: { if (item->dir && index.column() == COLUMN_FILEBROWSER_NAME) return WICON(WulforUtil::eiFOLDER_BLUE).scaled(16, 16); else if (index.column() == COLUMN_FILEBROWSER_NAME) return WulforUtil::getInstance()->getPixmapForFile(item->data(COLUMN_FILEBROWSER_NAME).toString()).scaled(16, 16); } case Qt::DisplayRole: { if (restrict_map.contains(path) && index.column() == COLUMN_FILEBROWSER_NAME){ QString ret = tr("%1 [%2 Gb]").arg(item->data(index.column()).toString()).arg(restrict_map[path]); return ret; } return item->data(index.column()); } case Qt::TextAlignmentRole: { bool align_right = (index.column() == COLUMN_FILEBROWSER_ESIZE) || (index.column() == COLUMN_FILEBROWSER_SIZE); if (align_right) return Qt::AlignRight; else return Qt::AlignLeft; } case Qt::ForegroundRole: { if (item->dir || ownList) break; TTHValue t(_tq(item->data(COLUMN_FILEBROWSER_TTH).toString())); if (ShareManager::getInstance()->isTTHShared(t)){ static QColor c; c.setNamedColor(WSGET(WS_APP_SHARED_FILES_COLOR)); c.setAlpha(WIGET(WI_APP_SHARED_FILES_ALPHA)); return c; } break; } case Qt::BackgroundColorRole: { if (item->isDuplicate){ QPalette pal = qApp->palette(); return pal.highlight().color(); } } case Qt::ToolTipRole: { if (item->isDuplicate && item->file){ const QString &tth = item->data(COLUMN_FILEBROWSER_TTH).toString(); auto it = hash.find(tth); if (it == hash.end()) break; dcpp::DirectoryListing::File *file = const_cast<dcpp::DirectoryListing::File*>(it.value()); dcpp::DirectoryListing::Directory *parentDir = file->getParent(); if (!parentDir) break; QString path = ""; do { path = _q(parentDir->getName()) + "/" + path; parentDir = parentDir->getParent(); } while (parentDir->getParent()); return tr("File marked as a duplicate of another file: %1").arg(path+_q(file->getName())); } QString tooltip = ""; if (item->dir){ tooltip = item->data(COLUMN_FILEBROWSER_NAME).toString(); } if (item->file){ DirectoryListing::File *f = item->file; if (!f->mediaInfo.video_info.empty() || !f->mediaInfo.audio_info.empty()){ MediaInfo &mi = f->mediaInfo; tooltip = tr("<b>Media Info:</b><br/>"); if (!f->mediaInfo.video_info.empty()) tooltip += tr(" <b>Video:</b> %1<br/>").arg(_q(mi.video_info)); if (!f->mediaInfo.audio_info.empty()) tooltip += tr(" <b>Audio:</b> %1<br/>").arg(_q(mi.audio_info)); if (f->mediaInfo.bitrate > 0) tooltip += tr(" <b>Bitrate:</b> %1<br/>").arg(mi.bitrate); if (!f->mediaInfo.resolution.empty()) tooltip += tr(" <b>Resolution:</b> %1<br/><br/>").arg(_q(mi.resolution)); } } TTHValue t(_tq(item->data(COLUMN_FILEBROWSER_TTH).toString())); ShareManager *SM = ShareManager::getInstance(); if (!ownList){ try{ QString toolTip = _q(SM->toReal(SM->toVirtual(t))); return tooltip + tr("File already exists: %1").arg(toolTip); }catch( ... ){}; } if (!tooltip.isEmpty()) return tooltip; break; } case Qt::FontRole: { if (restrict_map.contains(path) && index.column() == COLUMN_FILEBROWSER_NAME){ QFont f; f.setBold(true); return f; } break; } default: break; } return QVariant(); }