| 34 | static QCollator comparer; |
| 35 | } |
| 36 | PoolManager::PoolManager(QWidget *parent) : CFramelessDialog(tr("Danmu Pool Manager"),parent) |
| 37 | { |
| 38 | comparer.setNumericMode(true); |
| 39 | setFont(QFont(GlobalObjects::normalFont, 10)); |
| 40 | QTreeView *poolView=new QTreeView(this); |
| 41 | poolView->setItemDelegate(new KTreeviewItemDelegate(poolView)); |
| 42 | poolView->setSelectionMode(QAbstractItemView::SingleSelection); |
| 43 | poolView->setFont(QFont(GlobalObjects::normalFont, 11)); |
| 44 | poolView->setAnimated(true); |
| 45 | poolView->setAlternatingRowColors(true); |
| 46 | poolView->header()->setSortIndicator(0, Qt::SortOrder::AscendingOrder); |
| 47 | |
| 48 | DanmuManagerModel *managerModel=new DanmuManagerModel(this); |
| 49 | PoolSortProxyModel *proxyModel=new PoolSortProxyModel(this); |
| 50 | proxyModel->setSourceModel(managerModel); |
| 51 | proxyModel->setFilterKeyColumn(0); |
| 52 | proxyModel->setRecursiveFilteringEnabled(true); |
| 53 | poolView->setModel(proxyModel); |
| 54 | poolView->setSortingEnabled(true); |
| 55 | poolView->setContextMenuPolicy(Qt::CustomContextMenu); |
| 56 | |
| 57 | QLabel *stateLabel=new QLabel(this); |
| 58 | stateLabel->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Minimum); |
| 59 | QObject::connect(GlobalObjects::danmuManager,&DanmuManager::workerStateMessage,stateLabel,[stateLabel,managerModel](const QString &msg){ |
| 60 | if(msg=="Done") |
| 61 | stateLabel->setText(tr("Pool: %1 Danmu: %2").arg(managerModel->totalPoolCount()).arg(managerModel->totalDanmuCount())); |
| 62 | else |
| 63 | stateLabel->setText(msg); |
| 64 | }); |
| 65 | |
| 66 | QAction *act_editTimeLine=new QAction(tr("Edit TimeLine"),this); |
| 67 | QObject::connect(act_editTimeLine,&QAction::triggered,this,[this,managerModel,poolView,proxyModel](){ |
| 68 | QModelIndexList indexList = poolView->selectionModel()->selectedRows(); |
| 69 | if(indexList.size()==0)return; |
| 70 | DanmuPoolSourceNode *srcNode=managerModel->getSourceNode(proxyModel->mapToSource(indexList.first())); |
| 71 | if (!srcNode) return; |
| 72 | QVector<SimpleDanmuInfo> simpleDanmuList; |
| 73 | Pool *pool=GlobalObjects::danmuManager->getPool(srcNode->parent->idInfo); |
| 74 | if(pool) |
| 75 | { |
| 76 | pool->exportSimpleInfo(srcNode->srcId,simpleDanmuList); |
| 77 | DanmuSource srcInfo(pool->sources()[srcNode->srcId]); |
| 78 | TimelineEdit timeLineEdit(&srcInfo,simpleDanmuList,this); |
| 79 | if(QDialog::Accepted==timeLineEdit.exec()) |
| 80 | { |
| 81 | pool->setTimeline(srcNode->srcId,timeLineEdit.timelineInfo); |
| 82 | srcNode->hasTimeline = !pool->sources()[srcNode->srcId].timelineInfo.isEmpty(); |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | }); |
| 87 | QAction *act_addWebSource=new QAction(tr("Add Web Source"),this); |
| 88 | QObject::connect(act_addWebSource,&QAction::triggered,this,[this,stateLabel,managerModel,poolView,proxyModel](){ |
| 89 | QModelIndexList indexList = poolView->selectionModel()->selectedRows(); |
| 90 | if(indexList.size()==0)return; |
| 91 | DanmuPoolNode *poolNode=managerModel->getPoolNode(proxyModel->mapToSource(indexList.first())); |
| 92 | if(!poolNode)return; |
| 93 | PlayListItem item; |
nothing calls this directly
no test coverage detected