00001 #ifndef PARENTALCONTROLS_H_
00002 #define PARENTALCONTROLS_H_
00003
00004 #include <QObject>
00005 #include <QMetaType>
00006
00007 #include "mythmetaexp.h"
00008
00009 class META_PUBLIC ParentalLevel
00010 {
00011 public:
00012 enum Level { plNone = 0, plLowest = 1, plLow = 2, plMedium = 3,
00013 plHigh = 4 };
00014
00015 public:
00016 ParentalLevel(Level pl);
00017 explicit ParentalLevel(int pl);
00018 ParentalLevel(const ParentalLevel &rhs);
00019 ParentalLevel &operator=(const ParentalLevel &rhs);
00020 ParentalLevel &operator=(Level pl);
00021 ParentalLevel &operator++();
00022 ParentalLevel &operator+=(int amount);
00023 ParentalLevel &operator--();
00024 ParentalLevel &operator-=(int amount);
00025
00026 Level GetLevel() const;
00027
00028 void reset() { m_hitlimit = false; }
00029 bool good() const { return !m_hitlimit; }
00030
00031 private:
00032 Level m_level;
00033 bool m_hitlimit;
00034 };
00035
00036 META_PUBLIC bool operator!=(const ParentalLevel &lhs, const ParentalLevel &rhs);
00037 META_PUBLIC bool operator==(const ParentalLevel &lhs, const ParentalLevel &rhs);
00038 META_PUBLIC bool operator<(const ParentalLevel &lhs, const ParentalLevel &rhs);
00039 META_PUBLIC bool operator>(const ParentalLevel &lhs, const ParentalLevel &rhs);
00040 META_PUBLIC bool operator<=(const ParentalLevel &lhs, const ParentalLevel &rhs);
00041 META_PUBLIC bool operator>=(const ParentalLevel &lhs, const ParentalLevel &rhs);
00042
00043 class META_PUBLIC ParentalLevelChangeChecker : public QObject
00044 {
00045 Q_OBJECT
00046
00047 public:
00048 ParentalLevelChangeChecker();
00049
00050 void Check(ParentalLevel::Level fromLevel, ParentalLevel::Level toLevel);
00051
00052 signals:
00053 void SigResultReady(bool passwordValid, ParentalLevel::Level newLevel);
00054
00055 private slots:
00056 void OnResultReady(bool passwordValid, ParentalLevel::Level newLevel);
00057
00058 private:
00059 class ParentalLevelChangeCheckerPrivate *m_private;
00060 };
00061
00062 Q_DECLARE_METATYPE(ParentalLevelChangeChecker*)
00063 Q_DECLARE_METATYPE(ParentalLevel*)
00064
00065 #endif // PARENTALCONTROLS_H_