You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
polkit-tqt/core/polkittqt1-identity.h

212 lines
4.9 KiB

/*
* This file is part of the Polkit-tqt project
* Copyright (C) 2009 Lukas Tinkl <ltinkl@redhat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef POLKITTQT1_IDENTITY_H
#define POLKITTQT1_IDENTITY_H
#include "polkittqt1-export.h"
#include <unistd.h>
#include <TQtCore/TQObject>
#include <TQtCore/TQSharedData>
typedef struct _PolkitIdentity PolkitIdentity;
typedef struct _PolkitUnixUser PolkitUnixUser;
typedef struct _PolkitUnixGroup PolkitUnixGroup;
/**
* \namespace PolkitTQt1 PolkitTQt
*
* \brief Namespace wrapping Polkit-TQt classes
*
* This namespace wraps all Polkit-TQt classes.
*/
namespace PolkitTQt1
{
class UnixUserIdentity;
class UnixGroupIdentity;
/**
* \class Identity polkittqt1-identity.h Identity
* \author Lukas Tinkl <ltinkl@redhat.com>
*
* This class encapsulates the PolkitIdentity interface.
*
* \brief Abstract class representing identities
*
* \see UnixGroup
* \see UnixUser
*/
class POLKITTQT1_EXPORT Identity
{
public:
typedef TQList< Identity > List;
Identity();
explicit Identity(PolkitIdentity *polkitIdentity);
Identity(const Identity &other);
~Identity();
Identity &operator=(const Identity &other);
bool isValid() const;
/**
* Serialization of object to the string
*
* \return Serialized Identity object
*/
TQString toString() const;
/**
* Creates the Identity object from string representation
*
* \param string string representation of the object
*
* \return Pointer to new Identity instance
*/
static Identity fromString(const TQString &string);
UnixUserIdentity toUnixUserIdentity();
UnixGroupIdentity toUnixGroupIdentity();
/**
* Gets PolkitIdentity object.
*
* \warning It shouldn't be used directly unless you are completely aware of what are you doing
*
* \return Pointer to PolkitIdentity instance
*/
PolkitIdentity *identity() const;
protected:
void setIdentity(PolkitIdentity *identity);
private:
class Data;
TQExplicitlySharedDataPointer< Data > d;
};
/**
* \class UnixUserIdentity polkittqt1-identity.h Identity
*
* An object representing a user identity on a UNIX system.
*
* \brief UNIX user identity
* \sa Identity
*/
class POLKITTQT1_EXPORT UnixUserIdentity : public Identity
{
public:
UnixUserIdentity();
/**
* Creates UnixUser object by UID of the user
*
* \param uid user id
*/
explicit UnixUserIdentity(uid_t uid);
/**
* Creates UnixUser object by unix name of the user
*
* \param name Unix name
*/
explicit UnixUserIdentity(const TQString &name);
/**
* Creates UnixUser object from PolkitUnixUser object
*
* \warning Use this only if you are completely aware of what are you doing!
*
* \param pkUnixUser The PolkitUnixUser object
*/
explicit UnixUserIdentity(PolkitUnixUser *pkUnixUser);
/**
* Gets an user id
*
* \return user id
*/
uid_t uid() const;
/**
* Sets the id of user
*
* \param uid user id
*/
void setUid(uid_t uid);
};
/**
* \class UnixGroupIdentity polkittqt1-identity.h Identity
*
* An object representing a group identity on a UNIX system.
*
* \brief UNIX group identity
* \sa Identity
*/
class POLKITTQT1_EXPORT UnixGroupIdentity : public Identity
{
public:
UnixGroupIdentity();
/**
* Creates UnixGroup object by GID of the group
*
* \param gid group id
*/
explicit UnixGroupIdentity(gid_t gid);
/**
* Creates UnixGroup object by unix name of the group
*
* \param name group name
*/
explicit UnixGroupIdentity(const TQString &name);
/**
* Creates UnixGroup object from PolkitUnixGroup object
*
* \warning Use this only if you are completely aware of what are you doing!
*
* \param pkUnixGroup The PolkitUnixGroup object
*/
explicit UnixGroupIdentity(PolkitUnixGroup *pkUnixGroup);
/**
* Gets a group id
*
* \return group id
*/
gid_t gid() const;
/**
* Sets the id of group
*
* \param gid group id
*/
void setGid(gid_t gid);
};
}
#endif // POLKIT_TQT_IDENTITY_H