mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-21 03:12:21 +08: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>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="content_tree">
|
||||
<widget class="TorrentContentTreeView" name="content_tree">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
@ -262,6 +262,13 @@
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>TorrentContentTreeView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header>torrentcontenttreeview.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
@ -702,7 +702,7 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="filesList">
|
||||
<widget class="TorrentContentTreeView" name="filesList">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
@ -753,6 +753,13 @@
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>TorrentContentTreeView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header location="global">torrentcontenttreeview.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
@ -133,6 +133,7 @@ nox {
|
||||
torrentcontentmodelfolder.h \
|
||||
torrentcontentmodelfile.h \
|
||||
torrentcontentfiltermodel.h \
|
||||
torrentcontenttreeview.h \
|
||||
deletionconfirmationdlg.h \
|
||||
statusbar.h \
|
||||
reverseresolution.h \
|
||||
@ -167,6 +168,7 @@ nox {
|
||||
torrentcontentmodelfolder.cpp \
|
||||
torrentcontentmodelfile.cpp \
|
||||
torrentcontentfiltermodel.cpp \
|
||||
torrentcontenttreeview.cpp \
|
||||
sessionapplication.cpp \
|
||||
torrentimportdlg.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…
Reference in New Issue
Block a user