mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-23 04:54:18 +00:00
Merge pull request #2172 from sorokin/fix-space-key
Implement sane behavior of space key in torrent content list. Closes #140.
This commit is contained in:
commit
ba054f34c8
@ -166,7 +166,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeView" name="content_tree">
|
<widget class="TorrentContentTreeView" name="content_tree">
|
||||||
<property name="contextMenuPolicy">
|
<property name="contextMenuPolicy">
|
||||||
<enum>Qt::CustomContextMenu</enum>
|
<enum>Qt::CustomContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -262,6 +262,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>TorrentContentTreeView</class>
|
||||||
|
<extends>QTreeView</extends>
|
||||||
|
<header>torrentcontenttreeview.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
<connection>
|
||||||
|
@ -702,7 +702,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeView" name="filesList">
|
<widget class="TorrentContentTreeView" name="filesList">
|
||||||
<property name="contextMenuPolicy">
|
<property name="contextMenuPolicy">
|
||||||
<enum>Qt::CustomContextMenu</enum>
|
<enum>Qt::CustomContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -753,6 +753,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>TorrentContentTreeView</class>
|
||||||
|
<extends>QTreeView</extends>
|
||||||
|
<header location="global">torrentcontenttreeview.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -133,6 +133,7 @@ nox {
|
|||||||
torrentcontentmodelfolder.h \
|
torrentcontentmodelfolder.h \
|
||||||
torrentcontentmodelfile.h \
|
torrentcontentmodelfile.h \
|
||||||
torrentcontentfiltermodel.h \
|
torrentcontentfiltermodel.h \
|
||||||
|
torrentcontenttreeview.h \
|
||||||
deletionconfirmationdlg.h \
|
deletionconfirmationdlg.h \
|
||||||
statusbar.h \
|
statusbar.h \
|
||||||
reverseresolution.h \
|
reverseresolution.h \
|
||||||
@ -167,6 +168,7 @@ nox {
|
|||||||
torrentcontentmodelfolder.cpp \
|
torrentcontentmodelfolder.cpp \
|
||||||
torrentcontentmodelfile.cpp \
|
torrentcontentmodelfile.cpp \
|
||||||
torrentcontentfiltermodel.cpp \
|
torrentcontentfiltermodel.cpp \
|
||||||
|
torrentcontenttreeview.cpp \
|
||||||
sessionapplication.cpp \
|
sessionapplication.cpp \
|
||||||
torrentimportdlg.cpp \
|
torrentimportdlg.cpp \
|
||||||
executionlog.cpp \
|
executionlog.cpp \
|
||||||
|
78
src/torrentcontenttreeview.cpp
Normal file
78
src/torrentcontenttreeview.cpp
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Bittorrent Client using Qt4 and libtorrent.
|
||||||
|
* Copyright (C) 2014 Ivan Sorokin
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* In addition, as a special exception, the copyright holders give permission to
|
||||||
|
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||||
|
* modified versions of it that use the same license as the "OpenSSL" library),
|
||||||
|
* and distribute the linked executables. You must obey the GNU General Public
|
||||||
|
* License in all respects for all of the code used other than "OpenSSL". If you
|
||||||
|
* modify file(s), you may extend this exception to your version of the file(s),
|
||||||
|
* but you are not obligated to do so. If you do not wish to do so, delete this
|
||||||
|
* exception statement from your version.
|
||||||
|
*
|
||||||
|
* Contact : vanyacpp@gmail.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "torrentcontenttreeview.h"
|
||||||
|
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QModelIndexList>
|
||||||
|
|
||||||
|
#include "torrentcontentmodelitem.h"
|
||||||
|
|
||||||
|
TorrentContentTreeView::TorrentContentTreeView(QWidget* parent)
|
||||||
|
: QTreeView(parent)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void TorrentContentTreeView::keyPressEvent(QKeyEvent *event) {
|
||||||
|
if (event->key() != Qt::Key_Space && event->key() != Qt::Key_Select) {
|
||||||
|
QTreeView::keyPressEvent(event);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event->accept();
|
||||||
|
|
||||||
|
QModelIndex current = currentNameCell();
|
||||||
|
|
||||||
|
QVariant value = current.data(Qt::CheckStateRole);
|
||||||
|
if (!value.isValid()) {
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Qt::CheckState state = (static_cast<Qt::CheckState>(value.toInt()) == Qt::Checked
|
||||||
|
? Qt::Unchecked : Qt::Checked);
|
||||||
|
|
||||||
|
QModelIndexList selection = selectionModel()->selectedRows(TorrentContentModelItem::COL_NAME);
|
||||||
|
|
||||||
|
for (QModelIndexList::const_iterator i = selection.begin(); i != selection.end(); ++i) {
|
||||||
|
QModelIndex index = *i;
|
||||||
|
Q_ASSERT(i->column() == TorrentContentModelItem::COL_NAME);
|
||||||
|
model()->setData(index, state, Qt::CheckStateRole);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QModelIndex TorrentContentTreeView::currentNameCell() {
|
||||||
|
QModelIndex current = currentIndex();
|
||||||
|
if (!current.isValid()) {
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return QModelIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
return model()->index(current.row(), TorrentContentModelItem::COL_NAME, current.parent());
|
||||||
|
}
|
47
src/torrentcontenttreeview.h
Normal file
47
src/torrentcontenttreeview.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Bittorrent Client using Qt4 and libtorrent.
|
||||||
|
* Copyright (C) 2014 Ivan Sorokin
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* In addition, as a special exception, the copyright holders give permission to
|
||||||
|
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||||
|
* modified versions of it that use the same license as the "OpenSSL" library),
|
||||||
|
* and distribute the linked executables. You must obey the GNU General Public
|
||||||
|
* License in all respects for all of the code used other than "OpenSSL". If you
|
||||||
|
* modify file(s), you may extend this exception to your version of the file(s),
|
||||||
|
* but you are not obligated to do so. If you do not wish to do so, delete this
|
||||||
|
* exception statement from your version.
|
||||||
|
*
|
||||||
|
* Contact : vanyacpp@gmail.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TORRENTCONTENTTREEVIEW_H
|
||||||
|
#define TORRENTCONTENTTREEVIEW_H
|
||||||
|
|
||||||
|
#include <QTreeView>
|
||||||
|
|
||||||
|
class TorrentContentTreeView : public QTreeView {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit TorrentContentTreeView(QWidget *parent = 0);
|
||||||
|
void keyPressEvent(QKeyEvent *event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QModelIndex currentNameCell();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user