00001 #ifndef PROFILEGROUP_H
00002 #define PROFILEGROUP_H
00003
00004 #include <QString>
00005
00006 #include "mythtvexp.h"
00007 #include "settings.h"
00008 #include "mythwidgets.h"
00009
00010 class ProfileGroup;
00011
00012
00013 class ProfileGroupStorage : public SimpleDBStorage
00014 {
00015 protected:
00016 ProfileGroupStorage(StorageUser *_user,
00017 const ProfileGroup &_parentProfile,
00018 QString _name) :
00019 SimpleDBStorage(_user, "profilegroups", _name),
00020 m_parent(_parentProfile)
00021 {
00022 }
00023
00024 virtual QString GetSetClause(MSqlBindings &bindings) const;
00025 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00026 const ProfileGroup& m_parent;
00027 };
00028
00029 class ProfileGroup : public ConfigurationWizard
00030 {
00031 friend class ProfileGroupEditor;
00032 protected:
00033 class ID : public AutoIncrementDBSetting
00034 {
00035 public:
00036 ID() : AutoIncrementDBSetting("profilegroups", "id")
00037 {
00038 setVisible(false);
00039 }
00040 };
00041
00042 class Is_default : public IntegerSetting, public ProfileGroupStorage
00043 {
00044 public:
00045 Is_default(const ProfileGroup &parent) :
00046 IntegerSetting(this),
00047 ProfileGroupStorage(this, parent, "is_default")
00048 {
00049 setVisible(false);
00050 }
00051 };
00052
00053 class Name : public LineEditSetting, public ProfileGroupStorage
00054 {
00055 public:
00056 Name(const ProfileGroup &parent) :
00057 LineEditSetting(this),
00058 ProfileGroupStorage(this, parent, "name")
00059 {
00060 setLabel(QObject::tr("Profile Group Name"));
00061 }
00062 };
00063
00064 class HostName : public ComboBoxSetting, public ProfileGroupStorage
00065 {
00066 public:
00067 HostName(const ProfileGroup &parent) :
00068 ComboBoxSetting(this),
00069 ProfileGroupStorage(this, parent, "hostname")
00070 {
00071 setLabel(QObject::tr("Hostname"));
00072 }
00073 void fillSelections();
00074 };
00075
00076 class CardInfo : public ComboBoxSetting, public ProfileGroupStorage
00077 {
00078 public:
00079 CardInfo(const ProfileGroup &parent) :
00080 ComboBoxSetting(this),
00081 ProfileGroupStorage(this, parent, "cardtype")
00082 {
00083 setLabel(QObject::tr("Card-Type"));
00084 }
00085 };
00086
00087 public:
00088 ProfileGroup();
00089
00090 virtual void loadByID(int id);
00091
00092 static void fillSelections(SelectSetting* setting);
00093 static void getHostNames(QStringList* hostnames);
00094 int getProfileNum(void) const {
00095 return id->intValue();
00096 };
00097
00098 int isDefault(void) const {
00099 return is_default->intValue();
00100 };
00101
00102 QString getName(void) const { return name->getValue(); };
00103 static QString getName(int group);
00104 void setName(QString newName) { name->setValue(newName); };
00105 bool allowedGroupName(void);
00106
00107 private:
00108 ID* id;
00109 Name* name;
00110 HostName* host;
00111 Is_default* is_default;
00112 };
00113
00114 class MTV_PUBLIC ProfileGroupEditor :
00115 public QObject, public ConfigurationDialog
00116 {
00117 Q_OBJECT
00118
00119 public:
00120 ProfileGroupEditor() :
00121 listbox(new ListBoxSetting(this)), dialog(NULL), redraw(true)
00122 { addChild(listbox); }
00123
00124 virtual DialogCode exec(void);
00125
00126 virtual void Load(void);
00127 virtual void Save(void) {}
00128
00129 protected slots:
00130 void open(int id);
00131 void callDelete(void);
00132
00133 protected:
00134 ListBoxSetting *listbox;
00135 MythDialog *dialog;
00136 bool redraw;
00137 };
00138
00139 #endif
00140