1/*
2 * This file Copyright (C) Mnemosyne LLC
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2
6 * as published by the Free Software Foundation.
7 *
8 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9 *
10 * $Id: filters.h 12611 2011-08-02 03:59:54Z jordan $
11 */
12
13#ifndef QTR_FILTERS_H
14#define QTR_FILTERS_H
15
16#include <QMetaType>
17#include <QString>
18#include <QVariant>
19
20class FilterMode
21{
22    private:
23        int myMode;
24    public:
25        FilterMode( int mode=SHOW_ALL ): myMode(mode) { }
26        FilterMode( const QString& name ): myMode(modeFromName(name)) { }
27        static const QString names[];
28        enum { SHOW_ALL, SHOW_ACTIVE, SHOW_DOWNLOADING, SHOW_SEEDING, SHOW_PAUSED,
29               SHOW_FINISHED, SHOW_VERIFYING, SHOW_ERROR, NUM_MODES };
30        static int modeFromName( const QString& name );
31        static const QString& nameFromMode( int mode ) { return names[mode]; }
32        int mode() const { return myMode; }
33        const QString& name() const { return names[myMode]; }
34};
35
36class SortMode
37{
38    private:
39        int myMode;
40    public:
41        SortMode( int mode=SORT_BY_ID ): myMode(mode) { }
42        SortMode( const QString& name ): myMode(modeFromName(name)) { }
43        static const QString names[];
44        enum { SORT_BY_ACTIVITY, SORT_BY_AGE, SORT_BY_ETA, SORT_BY_NAME,
45               SORT_BY_PROGRESS, SORT_BY_QUEUE, SORT_BY_RATIO, SORT_BY_SIZE,
46               SORT_BY_STATE, SORT_BY_ID, NUM_MODES };
47        static int modeFromName( const QString& name );
48        static const QString& nameFromMode( int mode );
49        int mode() const { return myMode; }
50        const QString& name() const { return names[myMode]; }
51};
52
53Q_DECLARE_METATYPE(FilterMode)
54Q_DECLARE_METATYPE(SortMode)
55
56#endif
57