transmission/qt/TorrentModel.h

83 lines
1.7 KiB
C
Raw Normal View History

2009-04-09 18:55:47 +00:00
/*
* This file Copyright (C) 2010-2015 Mnemosyne LLC
2009-04-09 18:55:47 +00:00
*
* It may be used under the GNU GPL versions 2 or 3
* or any future license endorsed by Mnemosyne LLC.
2009-04-09 18:55:47 +00:00
*
* $Id$
2009-04-09 18:55:47 +00:00
*/
#ifndef QTR_TORRENT_MODEL_H
#define QTR_TORRENT_MODEL_H
#include <QAbstractListModel>
#include <QMap>
#include <QSet>
#include <QVector>
class Prefs;
2015-06-12 22:12:12 +00:00
class Speed;
class Torrent;
2009-04-09 18:55:47 +00:00
extern "C"
{
struct tr_variant;
}
2009-04-09 18:55:47 +00:00
class TorrentModel: public QAbstractListModel
{
2013-09-14 22:45:04 +00:00
Q_OBJECT
2015-06-12 22:12:12 +00:00
public:
enum Role
{
TorrentRole = Qt::UserRole
};
2013-09-14 22:45:04 +00:00
public:
2015-06-12 22:12:12 +00:00
TorrentModel (const Prefs& prefs);
virtual ~TorrentModel ();
2013-09-14 22:45:04 +00:00
void clear ();
bool hasTorrent (const QString& hashString) const;
2015-06-12 22:12:12 +00:00
Torrent * getTorrentFromId (int id);
const Torrent * getTorrentFromId (int id) const;
2013-09-14 22:45:04 +00:00
2015-06-12 22:12:12 +00:00
void getTransferSpeed (Speed& uploadSpeed, size_t& uploadPeerCount,
Speed& downloadSpeed, size_t& downloadPeerCount);
2013-09-14 22:45:04 +00:00
2015-06-12 22:12:12 +00:00
// QAbstractItemModel
virtual int rowCount (const QModelIndex& parent = QModelIndex ()) const;
virtual QVariant data (const QModelIndex& index, int role = Qt::DisplayRole) const;
2013-09-14 22:45:04 +00:00
public slots:
void updateTorrents (tr_variant * torrentList, bool isCompleteList);
void removeTorrents (tr_variant * torrentList);
void removeTorrent (int id);
signals:
void torrentsAdded (QSet<int>);
2015-06-12 22:12:12 +00:00
private:
typedef QMap<int, int> id_to_row_t;
typedef QMap<int, Torrent*> id_to_torrent_t;
typedef QVector<Torrent*> torrents_t;
private:
void addTorrent (Torrent *);
QSet<int> getIds () const;
2013-09-14 22:45:04 +00:00
private slots:
void onTorrentChanged (int propertyId);
2015-06-12 22:12:12 +00:00
private:
const Prefs& myPrefs;
id_to_row_t myIdToRow;
id_to_torrent_t myIdToTorrent;
torrents_t myTorrents;
2009-04-09 18:55:47 +00:00
};
#endif // QTR_TORRENT_MODEL_H