mirror of
https://github.com/transmission/transmission
synced 2024-12-23 00:04:06 +00:00
d7930984ef
There're places where manual intervention is still required as uncrustify is not ideal (unfortunately), but at least one may rely on it to do the right thing most of the time (e.g. when sending in a patch). The style itself is quite different from what we had before but making it uniform across all the codebase is the key. I also hope that it'll make the code more readable (YMMV) and less sensitive to further changes.
119 lines
2.4 KiB
C++
119 lines
2.4 KiB
C++
/*
|
|
* This file Copyright (C) 2009-2015 Mnemosyne LLC
|
|
*
|
|
* It may be used under the GNU GPL versions 2 or 3
|
|
* or any future license endorsed by Mnemosyne LLC.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
#include <QCoreApplication>
|
|
#include <QHash>
|
|
#include <QList>
|
|
#include <QSet>
|
|
#include <QString>
|
|
#include <QVariant>
|
|
|
|
class FileTreeItem
|
|
{
|
|
Q_DECLARE_TR_FUNCTIONS(FileTreeItem)
|
|
Q_DISABLE_COPY(FileTreeItem)
|
|
|
|
public:
|
|
enum
|
|
{
|
|
LOW = (1 << 0),
|
|
NORMAL = (1 << 1),
|
|
HIGH = (1 << 2)
|
|
};
|
|
|
|
public:
|
|
FileTreeItem(const QString& name = QString(), int fileIndex = -1, uint64_t size = 0) :
|
|
myName(name),
|
|
myFileIndex(fileIndex),
|
|
myTotalSize(size),
|
|
myParent(nullptr),
|
|
myPriority(0),
|
|
myIsWanted(false),
|
|
myHaveSize(0),
|
|
myFirstUnhashedRow(0)
|
|
{
|
|
}
|
|
|
|
~FileTreeItem();
|
|
|
|
public:
|
|
void appendChild(FileTreeItem* child);
|
|
FileTreeItem* child(const QString& filename);
|
|
|
|
FileTreeItem* child(int row)
|
|
{
|
|
return myChildren.at(row);
|
|
}
|
|
|
|
int childCount() const
|
|
{
|
|
return myChildren.size();
|
|
}
|
|
|
|
FileTreeItem* parent()
|
|
{
|
|
return myParent;
|
|
}
|
|
|
|
const FileTreeItem* parent() const
|
|
{
|
|
return myParent;
|
|
}
|
|
|
|
int row() const;
|
|
|
|
const QString& name() const
|
|
{
|
|
return myName;
|
|
}
|
|
|
|
QVariant data(int column, int role) const;
|
|
std::pair<int, int> update(const QString& name, bool want, int priority, uint64_t have, bool updateFields);
|
|
void setSubtreeWanted(bool, QSet<int>& fileIds);
|
|
void setSubtreePriority(int priority, QSet<int>& fileIds);
|
|
|
|
int fileIndex() const
|
|
{
|
|
return myFileIndex;
|
|
}
|
|
|
|
uint64_t totalSize() const
|
|
{
|
|
return myTotalSize;
|
|
}
|
|
|
|
QString path() const;
|
|
bool isComplete() const;
|
|
int priority() const;
|
|
int isSubtreeWanted() const;
|
|
|
|
private:
|
|
QString priorityString() const;
|
|
QString sizeString() const;
|
|
void getSubtreeWantedSize(uint64_t& have, uint64_t& total) const;
|
|
double progress() const;
|
|
uint64_t size() const;
|
|
const QHash<QString, int>& getMyChildRows();
|
|
|
|
private:
|
|
QString myName;
|
|
const int myFileIndex;
|
|
const uint64_t myTotalSize;
|
|
|
|
FileTreeItem* myParent;
|
|
QList<FileTreeItem*> myChildren;
|
|
QHash<QString, int> myChildRows;
|
|
int myPriority;
|
|
bool myIsWanted;
|
|
uint64_t myHaveSize;
|
|
size_t myFirstUnhashedRow;
|
|
};
|