//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 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 <http://www.gnu.org/licenses/>.

%ModuleHeaderCode
#include <powermanagement.h>
%End

namespace Solid
{
namespace PowerManagement
{

enum SleepState
{
    StandbyState,
    SuspendState,
    HibernateState
};

bool                    appShouldConserveResources ();
QSet<Solid::PowerManagement::SleepState>  supportedSleepStates ();
void                    requestSleep (Solid::PowerManagement::SleepState state, QObject* receiver, const char* member);
int                     beginSuppressingSleep (const QString& reason = QString());
bool                    stopSuppressingSleep (int cookie);

//ig class Notifier;

//ig Solid::PowerManagement::Notifier*  notifier ();
int                     beginSuppressingScreenPowerManagement (const QString& reason = QString());
bool                    stopSuppressingScreenPowerManagement (int cookie);
};
// PowerManagement

};
// Solid



%ModuleHeaderCode
#include <powermanagement.h>
%End


%MappedType QSet<Solid::PowerManagement::SleepState>
{
%TypeHeaderCode
#include <qset.h>
#include <powermanagement.h>
%End

%ConvertFromTypeCode
    // Create the list.
    PyObject *l;

    if ((l = PyList_New(sipCpp->size())) == NULL)
        return NULL;

    // Set the list elements.
    QSet<Solid::PowerManagement::SleepState> set = *sipCpp;
    int i = 0;
    foreach (Solid::PowerManagement::SleepState value, set)
    {
#if PY_MAJOR_VERSION >= 3
        PyObject *obj = PyLong_FromLong ((long) value);
#else
        PyObject *obj = PyInt_FromLong ((long) value);
#endif
        if (obj == NULL || PyList_SET_ITEM (l, i, obj) < 0)
        {
            Py_DECREF(l);

            if (obj)
                Py_DECREF(obj);

            return NULL;
        }

        Py_DECREF(obj);
        i++;
    }
   
    return l;
%End

%ConvertToTypeCode
    // Check the type if that is all that is required.
    if (sipIsErr == NULL)
    {
        if (!PyList_Check(sipPy))
            return 0;
    }

    // Check the type if that is all that is required.
    if (sipIsErr == NULL)
    {
        if (!PyList_Check(sipPy))
            return 0;
    }

    QSet<Solid::PowerManagement::SleepState> *qs = new QSet<Solid::PowerManagement::SleepState>;
 
    for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
    {
#if PY_MAJOR_VERSION >= 3
        Solid::PowerManagement::SleepState t = (Solid::PowerManagement::SleepState)PyLong_AsLong (PyList_GET_ITEM (sipPy, i));
#else
        Solid::PowerManagement::SleepState t = (Solid::PowerManagement::SleepState)PyInt_AS_LONG (PyList_GET_ITEM (sipPy, i));
#endif
        *qs << t;

    }
 
    *sipCppPtr = qs;
 
    return sipGetState(sipTransferObj);
%End
};

