/* * UserBackend.h * * Copyright (C) 2008 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef MAD_CORE_USERBACKEND_H_ #define MAD_CORE_USERBACKEND_H_ #include #include #include #include #include #include namespace Mad { namespace Core { class UserBackend { private: struct Compare { bool operator() (const UserBackend *b1, const UserBackend *b2) { if(b1->getPriority() == b2->getPriority()) return (b1 > b2); else return (b1->getPriority() > b2->getPriority()); } }; static std::set backends; protected: UserBackend() {} static void registerBackend(UserBackend *backend) { backends.insert(backend); } static void unregisterBackend(UserBackend *backend) { backends.erase(backend); } virtual bool userList(const sigc::slot& >&) { return false; } virtual bool userInfo(unsigned long, const sigc::slot&) { return false; } virtual bool password(unsigned long, const std::string&, const sigc::slot&) { return false; } virtual int getPriority() const { return 0; } public: virtual ~UserBackend() {} static bool getUserList(const sigc::slot& > &callback); static bool getUserInfo(unsigned long uid, const sigc::slot &callback); static bool setPassword(unsigned long uid, const std::string &password, const sigc::slot &callback); }; } } #endif /* MAD_CORE_USERBACKEND_H_ */