root/src/preferences/screensaver/ScreenCornerSelector.h
/*
 * Copyright 2003-2013 Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Michael Phipps
 *              Axel Dörfler, axeld@pinc-software.de
 */
#ifndef SCREEN_CORNER_SELECTOR_H
#define SCREEN_CORNER_SELECTOR_H


#include <Control.h>


#include "ScreenSaverSettings.h"


class ScreenCornerSelector : public BControl {
public:
                                                                ScreenCornerSelector(BRect frame,
                                                                        const char *name, BMessage* message,
                                                                        uint32 resizingMode);

        virtual void                            Draw(BRect updateRect);
        virtual void                            MouseDown(BPoint point);
        virtual void                            MouseUp(BPoint point);
        virtual void                            MouseMoved(BPoint where, uint32 transit,
                                                                        const BMessage* dragMessage);
        virtual void                            KeyDown(const char* bytes, int32 numBytes);

        virtual void                            SetValue(int32 value);
        virtual int32                           Value();

                        void                            SetCorner(screen_corner corner);
                        screen_corner           Corner() const;

private:
                        BRect                           _MonitorFrame() const;
                        BRect                           _InnerFrame(BRect monitorFrame) const;
                        BRect                           _CenterFrame(BRect innerFrame) const;
                        void                            _DrawStop(BRect innerFrame);
                        void                            _DrawArrow(BRect innerFrame);
                        screen_corner           _ScreenCorner(BPoint point,
                                                                        screen_corner previous) const;

                        screen_corner           fCurrentCorner;
                        int32                           fPreviousCorner;
};


#endif  // SCREEN_CORNER_SELECTOR_H