source: trunk/qt/FileTreeItem.h @ 14539

Last change on this file since 14539 was 14539, checked in by mikedld, 6 years ago

Unify/prettify Qt client headers style

  • Property svn:keywords set to Date Rev Author Id
File size: 2.4 KB
Line 
1/*
2 * This file Copyright (C) 2009-2015 Mnemosyne LLC
3 *
4 * It may be used under the GNU GPL versions 2 or 3
5 * or any future license endorsed by Mnemosyne LLC.
6 *
7 * $Id: FileTreeItem.h 14539 2015-06-12 22:12:12Z mikedld $
8 */
9
10#ifndef QTR_FILE_TREE_ITEM_H
11#define QTR_FILE_TREE_ITEM_H
12
13#include <stdint.h>
14
15#include <QCoreApplication>
16#include <QHash>
17#include <QList>
18#include <QSet>
19#include <QString>
20#include <QVariant>
21
22class FileTreeItem
23{
24    Q_DECLARE_TR_FUNCTIONS (FileTreeItem)
25
26  public:
27    FileTreeItem (const QString& name = QString (), int fileIndex = -1, uint64_t size = 0):
28      myName (name),
29      myFileIndex (fileIndex),
30      myTotalSize (size),
31      myParent (nullptr),
32      myPriority (0),
33      myIsWanted (false),
34      myHaveSize (0),
35      myFirstUnhashedRow (0) {}
36    ~FileTreeItem();
37
38  public:
39    void appendChild (FileTreeItem * child);
40    FileTreeItem * child (const QString& filename);
41    FileTreeItem * child (int row) { return myChildren.at (row); }
42    int childCount () const { return myChildren.size (); }
43    FileTreeItem * parent () { return myParent; }
44    const FileTreeItem * parent () const { return myParent; }
45    int row () const;
46    const QString& name () const { return myName; }
47    QVariant data (int column, int role) const;
48    std::pair<int, int> update (const QString& name, bool want, int priority, uint64_t have, bool updateFields);
49    void twiddleWanted (QSet<int>& fileIds, bool&);
50    void twiddlePriority (QSet<int>& fileIds, int&);
51    int fileIndex () const { return myFileIndex; }
52    uint64_t totalSize () const { return myTotalSize; }
53    QString path () const;
54    bool isComplete () const;
55
56  private:
57    enum
58    {
59      LOW    = (1 << 0),
60      NORMAL = (1 << 1),
61      HIGH   = (1 << 2)
62    };
63
64  private:
65    void setSubtreePriority (int priority, QSet<int>& fileIds);
66    void setSubtreeWanted (bool, QSet<int>& fileIds);
67    QString priorityString () const;
68    QString sizeString () const;
69    void getSubtreeWantedSize (uint64_t& have, uint64_t& total) const;
70    double progress () const;
71    int priority () const;
72    int isSubtreeWanted () const;
73    const QHash<QString,int>& getMyChildRows();
74
75  private:
76    QString myName;
77    const int myFileIndex;
78    const uint64_t myTotalSize;
79
80    FileTreeItem * myParent;
81    QList<FileTreeItem*> myChildren;
82    QHash<QString,int> myChildRows;
83    int myPriority;
84    bool myIsWanted;
85    uint64_t myHaveSize;
86    size_t myFirstUnhashedRow;
87};
88
89#endif // QTR_FILE_TREE_ITEM_H
Note: See TracBrowser for help on using the repository browser.