diff --git a/src/propertieswidget.cpp b/src/propertieswidget.cpp index 78b510a49..6fc683f63 100644 --- a/src/propertieswidget.cpp +++ b/src/propertieswidget.cpp @@ -99,7 +99,14 @@ PropertiesWidget::PropertiesWidget(QWidget *parent, GUI* main_window, TransferLi ProgressHLayout_2->insertWidget(1, pieces_availability); // Tracker list trackerList = new TrackerList(this); - verticalLayout_trackers->addWidget(trackerList); +#ifdef LIBTORRENT_0_15 + trackerUpButton->setVisible(false); + trackerDownButton->setVisible(false); +#else + connect(trackerUpButton, SIGNAL(clicked()), trackerList, SLOT(moveSelectionUp())); + connect(trackerDownButton, SIGNAL(clicked()), trackerList, SLOT(moveSelectionDown())); +#endif + horizontalLayout_trackers->insertWidget(0, trackerList); // Peers list peersList = new PeerListWidget(this); peerpage_layout->addWidget(peersList); @@ -119,7 +126,6 @@ PropertiesWidget::~PropertiesWidget() { delete PropDelegate; } - void PropertiesWidget::showPiecesAvailability(bool show) { avail_pieces_lbl->setVisible(show); pieces_availability->setVisible(show); diff --git a/src/trackerlist.h b/src/trackerlist.h index 6ad0a5ec3..52fc95e9b 100644 --- a/src/trackerlist.h +++ b/src/trackerlist.h @@ -112,6 +112,80 @@ public slots: } } +#ifndef LIBTORRENT_0_15 + void moveSelectionUp() { + QTorrentHandle h = properties->getCurrentTorrent(); + if(!h.is_valid()) { + clear(); + return; + } + QList selected_items = getSelectedTrackerItems(); + if(selected_items.isEmpty()) return; + bool change = false; + foreach(QTreeWidgetItem *item, selected_items){ + int index = indexOfTopLevelItem(item); + if(index > NB_STICKY_ITEM) { + insertTopLevelItem(index-1, takeTopLevelItem(index)); + change = true; + } + } + if(!change) return; + // Restore selection + QItemSelectionModel *selection = selectionModel(); + foreach(QTreeWidgetItem *item, selected_items) { + selection->select(indexFromItem(item), QItemSelectionModel::Rows|QItemSelectionModel::Select); + } + setSelectionModel(selection); + // Update torrent trackers + std::vector trackers; + for(int i=NB_STICKY_ITEM; idata(COL_URL, Qt::DisplayRole).toString(); + announce_entry e(tracker_url.toStdString()); + e.tier = i-NB_STICKY_ITEM; + trackers.push_back(e); + } + h.replace_trackers(trackers); + // Reannounce + h.force_reannounce(); + } + + void moveSelectionDown() { + QTorrentHandle h = properties->getCurrentTorrent(); + if(!h.is_valid()) { + clear(); + return; + } + QList selected_items = getSelectedTrackerItems(); + if(selected_items.isEmpty()) return; + bool change = false; + for(int i=selectedItems().length()-1; i>= 0; --i) { + int index = indexOfTopLevelItem(selected_items.at(i)); + if(index < topLevelItemCount()-1) { + insertTopLevelItem(index+1, takeTopLevelItem(index)); + change = true; + } + } + if(!change) return; + // Restore selection + QItemSelectionModel *selection = selectionModel(); + foreach(QTreeWidgetItem *item, selected_items) { + selection->select(indexFromItem(item), QItemSelectionModel::Rows|QItemSelectionModel::Select); + } + setSelectionModel(selection); + // Update torrent trackers + std::vector trackers; + for(int i=NB_STICKY_ITEM; idata(COL_URL, Qt::DisplayRole).toString(); + announce_entry e(tracker_url.toStdString()); + e.tier = i-NB_STICKY_ITEM; + trackers.push_back(e); + } + h.replace_trackers(trackers); + // Reannounce + h.force_reannounce(); + } +#endif + void clear() { qDeleteAll(tracker_items.values()); tracker_items.clear(); diff --git a/src/ui/propertieswidget.ui b/src/ui/propertieswidget.ui index 99e2fcde1..6d5ab9241 100644 --- a/src/ui/propertieswidget.ui +++ b/src/ui/propertieswidget.ui @@ -53,9 +53,9 @@ 0 - -81 + 0 518 - 371 + 359 @@ -621,7 +621,112 @@ p, li { white-space: pre-wrap; } - + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 31 + 27 + + + + + 31 + 27 + + + + + 31 + 27 + + + + + + + + :/Icons/uparrow.png:/Icons/uparrow.png + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 28 + + + + + + + + + 31 + 27 + + + + + 31 + 27 + + + + + 31 + 27 + + + + + + + + :/Icons/downarrow.png:/Icons/downarrow.png + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + @@ -664,7 +769,7 @@ p, li { white-space: pre-wrap; } - + :/Icons/oxygen/list-remove.png:/Icons/oxygen/list-remove.png @@ -681,7 +786,7 @@ p, li { white-space: pre-wrap; } - + :/Icons/oxygen/list-add.png:/Icons/oxygen/list-add.png @@ -796,7 +901,7 @@ p, li { white-space: pre-wrap; } General - + :/Icons/oxygen/help-about.png:/Icons/oxygen/help-about.png @@ -813,7 +918,7 @@ p, li { white-space: pre-wrap; } Trackers - + :/Icons/oxygen/network-server.png:/Icons/oxygen/network-server.png @@ -836,7 +941,7 @@ p, li { white-space: pre-wrap; } Peers - + :/Icons/oxygen/peer.png:/Icons/oxygen/peer.png @@ -853,7 +958,7 @@ p, li { white-space: pre-wrap; } URL seeds - + :/Icons/oxygen/urlseed.png:/Icons/oxygen/urlseed.png @@ -870,7 +975,7 @@ p, li { white-space: pre-wrap; } Files - + :/Icons/oxygen/folder.png:/Icons/oxygen/folder.png @@ -898,6 +1003,8 @@ p, li { white-space: pre-wrap; } - + + +