RetroShare/retroshare-gui/src/gui/qskinobject/qskinwidgetresizehandler.h
2007-11-15 03:18:48 +00:00

116 lines
3.3 KiB
C++

/****************************************************************
* RShare is distributed under the following license:
*
* Copyright (C) 2006, The RetroShare Team
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#ifndef QSKINWIDGETRESIZEHANDLER_P_H
#define QSKINWIDGETRESIZEHANDLER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. This header file may
// change from version to version without notice, or even be
// removed.
//
// We mean it.
//
#include <QObject>
#include <QPoint>
#include "qskinobject.h"
class QSkinObject;
class QMouseEvent;
class QKeyEvent;
class QSkinWidgetResizeHandler : public QObject
{
Q_OBJECT
friend class QSkinObject;
public:
enum Action {
Move = 0x01,
Resize = 0x02,
Any = Move|Resize
};
explicit QSkinWidgetResizeHandler(QSkinObject * skobj, QWidget *parent, QWidget *cw = 0);
void setActive(bool b) { setActive(Any, b); }
void setActive(Action ac, bool b);
bool isActive() const { return isActive(Any); }
bool isActive(Action ac) const;
void setMovingEnabled(bool b) { movingEnabled = b; }
bool isMovingEnabled() const { return movingEnabled; }
bool isButtonDown() const { return buttonDown; }
void setExtraHeight(int h) { extrahei = h; }
void setSizeProtection(bool b) { sizeprotect = b; }
void setFrameWidth(int w) { fw = w; }
void doResize();
void doMove();
Q_SIGNALS:
void activate();
protected:
bool eventFilter(QObject *o, QEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void keyPressEvent(QKeyEvent *e);
private:
Q_DISABLE_COPY(QSkinWidgetResizeHandler)
QSkinObject *obj;
enum MousePosition {
Nowhere,
TopLeft, BottomRight, BottomLeft, TopRight,
Top, Bottom, Left, Right,
Center
};
QWidget *widget;
QWidget *childWidget;
QPoint moveOffset;
QPoint invertedMoveOffset;
MousePosition mode;
int fw;
int extrahei;
int range;
uint buttonDown :1;
uint moveResizeMode :1;
uint activeForResize :1;
uint sizeprotect :1;
uint movingEnabled :1;
uint activeForMove :1;
uint widgetType;
void setMouseCursor(MousePosition m);
bool isMove() const {
return moveResizeMode && mode == Center;
}
bool isResize() const {
return moveResizeMode && !isMove();
}
};
#endif // QSkinWidgetResizeHandler_P_H