// Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This program 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, 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 Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


namespace Plasma
{

enum Constraint
{
    NoConstraint,
    FormFactorConstraint,
    LocationConstraint,
    ScreenConstraint,
    SizeConstraint,
    ImmutableConstraint,
    StartupCompletedConstraint,
    ContextConstraint,
    AllConstraints
};

typedef QFlags<Plasma::Constraint> Constraints;


enum FormFactor
{
    Planar,
    MediaCenter,
    Horizontal,
    Vertical
};


enum Direction
{
    Down,
    Up,
    Left,
    Right
};


enum ZoomDirection
{
    ZoomIn,
    ZoomOut
};


enum Location
{
    Floating,
    Desktop,
    FullScreen,
    TopEdge,
    BottomEdge,
    LeftEdge,
    RightEdge
};


enum Position
{
    LeftPositioned,
    RightPositioned,
    TopPositioned,
    BottomPositioned,
    CenterPositioned
};


enum PopupPlacement
{
    FloatingPopup,
    TopPosedLeftAlignedPopup,
    TopPosedRightAlignedPopup,
    LeftPosedTopAlignedPopup,
    LeftPosedBottomAlignedPopup,
    BottomPosedLeftAlignedPopup,
    BottomPosedRightAlignedPopup,
    RightPosedTopAlignedPopup,
    RightPosedBottomAlignedPopup
};


enum FlipDirection
{
    NoFlip,
    HorizontalFlip,
    VerticalFlip
};

typedef QFlags<Plasma::FlipDirection> Flip;


enum ZoomLevel
{
    DesktopZoom,
    GroupZoom,
    OverviewZoom
};


enum IntervalAlignment
{
    NoAlignment,
    AlignToMinute,
    AlignToHour
};


enum ItemTypes
{
    AppletType,
    LineEditType
};


enum ImmutabilityType
{
    Mutable,
    UserImmutable,
    SystemImmutable
};


enum AspectRatioMode
{
    InvalidAspectRatioMode,
    IgnoreAspectRatio,
    KeepAspectRatio,
    Square,
    ConstrainedSquare,
    FixedSize
};


enum ComponentType
{
    AppletComponent,
    DataEngineComponent,
    RunnerComponent,
    AnimatorComponent,
    ContainmentComponent
};

typedef QFlags<Plasma::ComponentType> ComponentTypes;


enum MarginEdge
{
    TopMargin,
    BottomMargin,
    LeftMargin,
    RightMargin
};


enum MessageButton
{
    ButtonNone,
    ButtonOk,
    ButtonYes,
    ButtonNo,
    ButtonCancel
};

typedef QFlags<Plasma::MessageButton> MessageButtons;

qreal                   scalingFactor (Plasma::ZoomLevel level);
Plasma::Direction       locationToDirection (Plasma::Location location);
Plasma::Direction       locationToInverseDirection (Plasma::Location location);
QGraphicsView*          viewFor (const QGraphicsItem* item);

};   // Plasma
