1 /*
2  * This file Copyright (C) 2010-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  */
8 
9 #pragma once
10 
11 #include <QMetaType>
12 #include <QString>
13 #include <QVariant>
14 
15 class FilterMode
16 {
17 public:
18     enum
19     {
20         SHOW_ALL,
21         SHOW_ACTIVE,
22         SHOW_DOWNLOADING,
23         SHOW_SEEDING,
24         SHOW_PAUSED,
25         SHOW_FINISHED,
26         SHOW_VERIFYING,
27         SHOW_ERROR,
28         NUM_MODES
29     };
30 
31 public:
32     FilterMode(int mode = SHOW_ALL) :
myMode(mode)33         myMode(mode)
34     {
35     }
36 
FilterMode(QString const & name)37     FilterMode(QString const& name) :
38         myMode(modeFromName(name))
39     {
40     }
41 
mode()42     int mode() const
43     {
44         return myMode;
45     }
46 
name()47     QString const& name() const
48     {
49         return names[myMode];
50     }
51 
52     static int modeFromName(QString const& name);
53 
nameFromMode(int mode)54     static QString const& nameFromMode(int mode)
55     {
56         return names[mode];
57     }
58 
59 private:
60     int myMode;
61 
62     static QString const names[];
63 };
64 
Q_DECLARE_METATYPE(FilterMode)65 Q_DECLARE_METATYPE(FilterMode)
66 
67 class SortMode
68 {
69 public:
70     enum
71     {
72         SORT_BY_ACTIVITY,
73         SORT_BY_AGE,
74         SORT_BY_ETA,
75         SORT_BY_NAME,
76         SORT_BY_PROGRESS,
77         SORT_BY_QUEUE,
78         SORT_BY_RATIO,
79         SORT_BY_SIZE,
80         SORT_BY_STATE,
81         SORT_BY_ID,
82         NUM_MODES
83     };
84 
85 public:
86     SortMode(int mode = SORT_BY_ID) :
87         myMode(mode)
88     {
89     }
90 
91     SortMode(QString const& name) :
92         myMode(modeFromName(name))
93     {
94     }
95 
96     int mode() const
97     {
98         return myMode;
99     }
100 
101     QString const& name() const
102     {
103         return names[myMode];
104     }
105 
106     static int modeFromName(QString const& name);
107     static QString const& nameFromMode(int mode);
108 
109 private:
110     int myMode;
111 
112     static QString const names[];
113 };
114 
115 Q_DECLARE_METATYPE(SortMode)
116