diff --git a/src/TransferListWidget.cpp b/src/TransferListWidget.cpp index b13859b20..821ade418 100644 --- a/src/TransferListWidget.cpp +++ b/src/TransferListWidget.cpp @@ -79,6 +79,10 @@ TransferListWidget::TransferListWidget(QWidget *parent, bittorrent *_BTSession): setRootIsDecorated(false); setAllColumnsShowFocus(true); setSortingEnabled(true); + setSelectionMode(QAbstractItemView::ExtendedSelection); + setItemsExpandable(false); + setAutoScroll(true); + hideColumn(PRIORITY); hideColumn(HASH); hideColumn(STATUS); @@ -139,6 +143,9 @@ void TransferListWidget::addTorrent(QTorrentHandle& h) { listModel->setData(listModel->index(row, STATUS), DOWNLOADING); //setRowColor(row, QString::fromUtf8("grey")); } + // Select first torrent to be added + if(listModel->rowCount() == 1) + selectionModel()->setCurrentIndex(proxyModel->index(row, NAME), QItemSelectionModel::SelectCurrent|QItemSelectionModel::Rows); } catch(invalid_handle e) { // Remove added torrent listModel->removeRow(row); @@ -403,11 +410,13 @@ void TransferListWidget::deleteSelectedTorrents() { tr("&Yes"), tr("&No"), QString(), 0, 1); if(ret) return; + QStringList hashes; foreach(const QModelIndex &index, selectedIndexes) { // Get the file hash - int row = proxyModel->mapToSource(index).row(); - QString hash = getHashFromRow(row); - deleteTorrent(row); + hashes << getHashFromRow(proxyModel->mapToSource(index).row()); + } + foreach(const QString &hash, hashes) { + deleteTorrent(getRowFromHash(hash)); BTSession->deleteTorrent(hash, false); } } @@ -423,11 +432,13 @@ void TransferListWidget::deletePermSelectedTorrents() { tr("&Yes"), tr("&No"), QString(), 0, 1); if(ret) return; + QStringList hashes; foreach(const QModelIndex &index, selectedIndexes) { // Get the file hash - int row = proxyModel->mapToSource(index).row(); - QString hash = getHashFromRow(row); - deleteTorrent(row); + hashes << getHashFromRow(proxyModel->mapToSource(index).row()); + } + foreach(const QString &hash, hashes) { + deleteTorrent(getRowFromHash(hash)); BTSession->deleteTorrent(hash, true); } } @@ -790,8 +801,11 @@ void TransferListWidget::loadLastSortedColumn() { } void TransferListWidget::currentChanged(const QModelIndex& current, const QModelIndex&) { - int row = proxyModel->mapToSource(current).row(); - QTorrentHandle h = BTSession->getTorrentHandle(getHashFromRow(row)); + QTorrentHandle h; + if(current.isValid()) { + int row = proxyModel->mapToSource(current).row(); + h = BTSession->getTorrentHandle(getHashFromRow(row)); + } emit currentTorrentChanged(h); } diff --git a/src/propertieswidget.cpp b/src/propertieswidget.cpp index 31b43e39f..63d160e70 100644 --- a/src/propertieswidget.cpp +++ b/src/propertieswidget.cpp @@ -46,7 +46,13 @@ PropertiesWidget::PropertiesWidget(QWidget *parent, TransferListWidget *transferList, bittorrent* BTSession): QWidget(parent), transferList(transferList), BTSession(BTSession) { setupUi(this); state = VISIBLE; - reduce(); + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + if(!settings.value("TorrentProperties/Visible", false).toBool()) { + reduce(); + } else { + main_infos_button->setStyleSheet(SELECTED_BUTTON_CSS); + setEnabled(false); + } connect(transferList, SIGNAL(currentTorrentChanged(QTorrentHandle&)), this, SLOT(loadTorrentInfos(QTorrentHandle &))); connect(incrementalDownload, SIGNAL(stateChanged(int)), this, SLOT(setIncrementalDownload(int))); @@ -64,6 +70,8 @@ PropertiesWidget::PropertiesWidget(QWidget *parent, TransferListWidget *transfer } PropertiesWidget::~PropertiesWidget() { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + settings.setValue("TorrentProperties/Visible", state==VISIBLE); delete refreshTimer; if(progressBarUpdater) delete progressBarUpdater; @@ -85,9 +93,29 @@ void PropertiesWidget::slide() { } } +void PropertiesWidget::clear() { + save_path->clear(); + creator->clear(); + hash_lbl->clear(); + comment_lbl->clear(); + incrementalDownload->setChecked(false); + trackersURLS->clear(); + trackerURL->clear(); + progressBar->setProgress(QRealArray()); + failed->clear(); + upTotal->clear(); + dlTotal->clear(); + shareRatio->clear(); + setEnabled(false); +} + void PropertiesWidget::loadTorrentInfos(QTorrentHandle &_h) { h = _h; - if(!h.is_valid()) return; + if(!h.is_valid()) { + clear(); + return; + } + setEnabled(true); if(progressBarUpdater) delete progressBarUpdater; progressBarUpdater = 0; diff --git a/src/propertieswidget.h b/src/propertieswidget.h index 1fdd8006d..ba12d5f9f 100644 --- a/src/propertieswidget.h +++ b/src/propertieswidget.h @@ -74,6 +74,7 @@ protected slots: public slots: void reduce(); void slide(); + void clear(); public: PropertiesWidget(QWidget *parent, TransferListWidget *transferList, bittorrent* BTSession);