TrackerList::TrackerList(PropertiesWidget *properties): QTreeWidget(), properties(properties) { // Graphical settings setRootIsDecorated(false); setAllColumnsShowFocus(true); setItemsExpandable(false); setSelectionMode(QAbstractItemView::ExtendedSelection); // Context menu setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showTrackerListMenu(QPoint))); // Set header QStringList header; header << "#"; header << tr("URL"); header << tr("Status"); header << tr("Peers"); header << tr("Message"); setHeaderItem(new QTreeWidgetItem(header)); dht_item = new QTreeWidgetItem(QStringList() << "" << "** [DHT] **"); insertTopLevelItem(0, dht_item); setRowColor(0, QColor("grey")); pex_item = new QTreeWidgetItem(QStringList() << "" << "** [PeX] **"); insertTopLevelItem(1, pex_item); setRowColor(1, QColor("grey")); lsd_item = new QTreeWidgetItem(QStringList() << "" << "** [LSD] **"); insertTopLevelItem(2, lsd_item); setRowColor(2, QColor("grey")); editHotkey = new QShortcut(QKeySequence("F2"), this, SLOT(editSelectedTracker()), 0, Qt::WidgetShortcut); connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(editSelectedTracker())); deleteHotkey = new QShortcut(QKeySequence(QKeySequence::Delete), this, SLOT(deleteSelectedTrackers()), 0, Qt::WidgetShortcut); copyHotkey = new QShortcut(QKeySequence(Qt::ControlModifier + Qt::Key_C), this, SLOT(copyTrackerUrl()), 0, Qt::WidgetShortcut); loadSettings(); }
void ArenaHandler::reshowArena(QString hero) { if(arenaCurrent == NULL || arenaCurrentHero != hero) { showArena(hero); setRowColor(arenaCurrent, YELLOW); return; } setRowColor(arenaCurrent, GREEN); }
void ArenaHandler::currentArenaToWhite() { if(arenaCurrent != NULL) { setRowColor(arenaCurrent, WHITE); //Iniciamos a blanco todas las partidas que no esten en rojo for(int i=0; i<arenaCurrent->childCount(); i++) { setRowColor(arenaCurrent->child(i), WHITE); } } }
void ArenaHandler::allToWhite() { int numTopItems = ui->arenaTreeWidget->topLevelItemCount(); for(int i=0; i<numTopItems; i++) { QTreeWidgetItem * item = ui->arenaTreeWidget->topLevelItem(i); int numItems = item->childCount(); for(int j=0; j<numItems; j++) { setRowColor(item->child(j), WHITE); } setRowColor(item, WHITE); } }
void DownloadAbstractTableWidget::listCellEntered(int row, int column) { QTableWidgetItem *it = item(m_previousColorRow, 0); if(it != nullptr) { setRowColor(m_previousColorRow, m_defaultBkColor); } it = item(row, column); if(it != nullptr) { setRowColor(row, QColor(20, 20, 20, 20)); } m_previousColorRow = row; }
void ArenaHandler::syncArenaCurrent() { int wins = 0; int loses = 0; if(arenaCurrent != NULL) { for(int i=0; i<arenaCurrent->childCount(); i++) { QColor color = getRowColor(arenaCurrent->child(i)); if(color == GREEN || color == YELLOW) { arenaCurrentGameList[i].isWinner?wins++:loses++; } else { setRowColor(arenaCurrent->child(i), RED); } } arenaCurrent->setText(2, QString::number(wins)); arenaCurrent->setText(3, QString::number(loses)); emit pDebug("Recalculate arena win/loses (Web sync)."); } }
void MusicAbstractTableWidget::listCellEntered(int row, int column) { QTableWidgetItem *it = item(m_previousColorRow, 0); if(it != 0) { setRowColor(m_previousColorRow, m_defaultBkColor); } it = item(row, column); if(it != NULL) { setRowColor(row, QColor(20, 20, 20, 40)); } m_previousColorRow = row; }
TrackerList::TrackerList(PropertiesWidget *properties): QTreeWidget(), properties(properties) { // Graphical settings setRootIsDecorated(false); setAllColumnsShowFocus(true); setItemsExpandable(false); setSelectionMode(QAbstractItemView::ExtendedSelection); // Context menu setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showTrackerListMenu(QPoint))); // Set header QStringList header; header << "#"; header << tr("URL"); header << tr("Status"); header << tr("Received"); header << tr("Seeds"); header << tr("Peers"); header << tr("Downloaded"); header << tr("Message"); setHeaderItem(new QTreeWidgetItem(header)); dht_item = new QTreeWidgetItem({ "", "** [DHT] **", "", "0", "", "", "0" }); insertTopLevelItem(0, dht_item); setRowColor(0, QColor("grey")); pex_item = new QTreeWidgetItem({ "", "** [PeX] **", "", "0", "", "", "0" }); insertTopLevelItem(1, pex_item); setRowColor(1, QColor("grey")); lsd_item = new QTreeWidgetItem({ "", "** [LSD] **", "", "0", "", "", "0" }); insertTopLevelItem(2, lsd_item); setRowColor(2, QColor("grey")); editHotkey = new QShortcut(Qt::Key_F2, this, SLOT(editSelectedTracker()), 0, Qt::WidgetShortcut); connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(editSelectedTracker())); deleteHotkey = new QShortcut(QKeySequence::Delete, this, SLOT(deleteSelectedTrackers()), 0, Qt::WidgetShortcut); copyHotkey = new QShortcut(QKeySequence::Copy, this, SLOT(copyTrackerUrl()), 0, Qt::WidgetShortcut); // This hack fixes reordering of first column with Qt5. // https://github.com/qtproject/qtbase/commit/e0fc088c0c8bc61dbcaf5928b24986cd61a22777 QTableView unused; unused.setVerticalHeader(this->header()); this->header()->setParent(this); unused.setVerticalHeader(new QHeaderView(Qt::Horizontal)); loadSettings(); }
void ArenaHandler::reshowGameResult(GameResult gameResult) { if(arenaCurrent == NULL) return; if(!isRowOk(arenaCurrent)) return;//Imposible for(int i=0; i<arenaCurrent->childCount(); i++) { QTreeWidgetItem *item = arenaCurrent->child(i); QColor statusColor = getRowColor(item); if((statusColor == RED || statusColor == WHITE || statusColor == TRANSPARENT) && arenaCurrentGameList.at(i).enemyHero == gameResult.enemyHero && arenaCurrentGameList.at(i).isFirst == gameResult.isFirst && arenaCurrentGameList.at(i).isWinner == gameResult.isWinner) { setRowColor(item, GREEN); return; } } QTreeWidgetItem *item = showGameResult(gameResult, true); setRowColor(item, YELLOW); }
void ArenaHandler::showNoArena() { if(noArena) return; QTreeWidgetItem *item = new QTreeWidgetItem(ui->arenaTreeWidget); item->setText(0, "None"); setRowColor(item, GREEN); arenaCurrent = NULL; arenaCurrentHero = ""; arenaCurrentGameList.clear(); noArena = true; emit pDebug("Show no arena."); }
bool ArenaHandler::newArena(QString hero) { showArena(hero); if(webUploader==NULL) { } else if(!webUploader->uploadNewArena(hero)) { setRowColor(arenaCurrent, RED); return false; } else enableRefreshButton(false); return true; }
QTreeWidgetItem *ArenaHandler::showGameResult(GameResult gameResult, bool arenaMatch) { QTreeWidgetItem *item; if(!arenaMatch || arenaCurrent == NULL || arenaCurrentHero.compare(gameResult.playerHero)!=0) { item = new QTreeWidgetItem(arenaHomeless); } else { item = new QTreeWidgetItem(arenaCurrent); arenaCurrentGameList.append(gameResult); //Add game to score if(gameResult.isWinner) { int wins = arenaCurrent->text(2).toInt() + 1; arenaCurrent->setText(2, QString::number(wins)); } else { int loses = arenaCurrent->text(3).toInt() + 1; arenaCurrent->setText(3, QString::number(loses)); } emit pDebug("Recalculate arena win/loses (1 game)."); } item->setIcon(0, QIcon(":Images/" + (gameResult.playerHero==""?("secretHunter"):("hero"+gameResult.playerHero)) + ".png")); item->setText(0, "vs"); item->setTextAlignment(0, Qt::AlignHCenter|Qt::AlignVCenter); item->setIcon(1, QIcon(":Images/" + (gameResult.enemyHero==""?("secretHunter"):("hero"+gameResult.enemyHero)) + ".png")); item->setToolTip(1, "<span style=\"color:green;\">" + gameResult.enemyName + "</span>"); item->setIcon(2, QIcon(gameResult.isFirst?":Images/first.png":":Images/coin.png")); item->setIcon(3, QIcon(gameResult.isWinner?":Images/win.png":":Images/lose.png")); setRowColor(item, WHITE); return item; }
void ArenaHandler::newGameResult(GameResult gameResult, bool arenaMatch) { QTreeWidgetItem *item = showGameResult(gameResult, arenaMatch); if(arenaMatch && webUploader!=NULL) { QList<DeckCard> *deckCardList = deckHandler->getDeckComplete(); bool uploadSuccess; if(deckCardList != NULL) uploadSuccess=webUploader->uploadNewGameResult(gameResult,deckCardList); else uploadSuccess=webUploader->uploadNewGameResult(gameResult); if(uploadSuccess) { enableRefreshButton(false); currentArenaToWhite(); } else setRowColor(item, RED); } }
void ArenaHandler::showArena(QString hero) { if(noArena) { QTreeWidgetItem *item = ui->arenaTreeWidget->takeTopLevelItem(ui->arenaTreeWidget->topLevelItemCount()-1); delete item; noArena = false; } arenaCurrentHero = QString(hero); arenaCurrent = new QTreeWidgetItem(ui->arenaTreeWidget); arenaCurrent->setExpanded(true); arenaCurrent->setText(0, "Arena"); arenaCurrent->setIcon(1, QIcon(":Images/hero" + arenaCurrentHero + ".png")); arenaCurrent->setText(2, "0"); arenaCurrent->setTextAlignment(2, Qt::AlignHCenter|Qt::AlignVCenter); arenaCurrent->setText(3, "0"); arenaCurrent->setTextAlignment(3, Qt::AlignHCenter|Qt::AlignVCenter); setRowColor(arenaCurrent, WHITE); arenaCurrentGameList.clear(); }
void SearchTab::downloadSelectedItem(const QModelIndex& index) { QString engine_url = proxyModel->data(proxyModel->index(index.row(), SearchEngine::ENGINE_URL)).toString(); QString torrent_url = proxyModel->data(proxyModel->index(index.row(), SearchEngine::DL_LINK)).toString(); setRowColor(index.row(), "red"); parent->downloadTorrent(engine_url, torrent_url); }
TrackerList::TrackerList(PropertiesWidget *properties) : QTreeWidget() , m_properties(properties) { // Set header // Must be set before calling loadSettings() otherwise the header is reset on restart setHeaderLabels(headerLabels()); // Load settings loadSettings(); // Graphical settings setRootIsDecorated(false); setAllColumnsShowFocus(true); setItemsExpandable(false); setSelectionMode(QAbstractItemView::ExtendedSelection); header()->setStretchLastSection(false); // Must be set after loadSettings() in order to work // Ensure that at least one column is visible at all times if (visibleColumnsCount() == 0) setColumnHidden(COL_URL, false); // To also mitigate the above issue, we have to resize each column when // its size is 0, because explicitly 'showing' the column isn't enough // in the above scenario. for (unsigned int i = 0; i < COL_COUNT; ++i) if ((columnWidth(i) <= 0) && !isColumnHidden(i)) resizeColumnToContents(i); // Context menu setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showTrackerListMenu(QPoint))); // Header context menu header()->setContextMenuPolicy(Qt::CustomContextMenu); connect(header(), SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayToggleColumnsMenu(const QPoint&))); // Set DHT, PeX, LSD items m_DHTItem = new QTreeWidgetItem({ "", "** [DHT] **", "", "0", "", "", "0" }); insertTopLevelItem(0, m_DHTItem); setRowColor(0, QColor("grey")); m_PEXItem = new QTreeWidgetItem({ "", "** [PeX] **", "", "0", "", "", "0" }); insertTopLevelItem(1, m_PEXItem); setRowColor(1, QColor("grey")); m_LSDItem = new QTreeWidgetItem({ "", "** [LSD] **", "", "0", "", "", "0" }); insertTopLevelItem(2, m_LSDItem); setRowColor(2, QColor("grey")); // Set static items alignment m_DHTItem->setTextAlignment(COL_RECEIVED, (Qt::AlignRight | Qt::AlignVCenter)); m_PEXItem->setTextAlignment(COL_RECEIVED, (Qt::AlignRight | Qt::AlignVCenter)); m_LSDItem->setTextAlignment(COL_RECEIVED, (Qt::AlignRight | Qt::AlignVCenter)); m_DHTItem->setTextAlignment(COL_SEEDS, (Qt::AlignRight | Qt::AlignVCenter)); m_PEXItem->setTextAlignment(COL_SEEDS, (Qt::AlignRight | Qt::AlignVCenter)); m_LSDItem->setTextAlignment(COL_SEEDS, (Qt::AlignRight | Qt::AlignVCenter)); m_DHTItem->setTextAlignment(COL_PEERS, (Qt::AlignRight | Qt::AlignVCenter)); m_PEXItem->setTextAlignment(COL_PEERS, (Qt::AlignRight | Qt::AlignVCenter)); m_LSDItem->setTextAlignment(COL_PEERS, (Qt::AlignRight | Qt::AlignVCenter)); m_DHTItem->setTextAlignment(COL_DOWNLOADED, (Qt::AlignRight | Qt::AlignVCenter)); m_PEXItem->setTextAlignment(COL_DOWNLOADED, (Qt::AlignRight | Qt::AlignVCenter)); m_LSDItem->setTextAlignment(COL_DOWNLOADED, (Qt::AlignRight | Qt::AlignVCenter)); // Set header alignment headerItem()->setTextAlignment(COL_TIER, (Qt::AlignRight | Qt::AlignVCenter)); headerItem()->setTextAlignment(COL_RECEIVED, (Qt::AlignRight | Qt::AlignVCenter)); headerItem()->setTextAlignment(COL_SEEDS, (Qt::AlignRight | Qt::AlignVCenter)); headerItem()->setTextAlignment(COL_PEERS, (Qt::AlignRight | Qt::AlignVCenter)); headerItem()->setTextAlignment(COL_DOWNLOADED, (Qt::AlignRight | Qt::AlignVCenter)); // Set hotkeys m_editHotkey = new QShortcut(Qt::Key_F2, this, SLOT(editSelectedTracker()), 0, Qt::WidgetShortcut); connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(editSelectedTracker())); m_deleteHotkey = new QShortcut(QKeySequence::Delete, this, SLOT(deleteSelectedTrackers()), 0, Qt::WidgetShortcut); m_copyHotkey = new QShortcut(QKeySequence::Copy, this, SLOT(copyTrackerUrl()), 0, Qt::WidgetShortcut); // This hack fixes reordering of first column with Qt5. // https://github.com/qtproject/qtbase/commit/e0fc088c0c8bc61dbcaf5928b24986cd61a22777 QTableView unused; unused.setVerticalHeader(header()); header()->setParent(this); unused.setVerticalHeader(new QHeaderView(Qt::Horizontal)); }