ControllerForm *conForm, QGraphicsScene *scene) : SkinView(parent, scene)
{
this->parent = (DockingController *)parent;
- this->conViewStat = CONVIEW_RELEASED;
+ this->conViewStat = CONVIEW_NORMAL;
setFocusPolicy(Qt::NoFocus);
setStyleSheet("DockingConView { background: transparent; border-style: none; }" +
QString(STYLE_TOOLTIP));
- rubberPos = QPoint(-1, -1);
+ rubberPos = SKINVIEW_NULLITY_POSITION;
rubberBand = new QRubberBand(QRubberBand::Rectangle, NULL);
createItems(conForm);
}
}
+void DockingConView::grabWindow(QMouseEvent *event)
+{
+ SkinView::grabWindow(event->globalPos());
+
+ eventPos = event->pos();
+}
+
+/* override */
+void DockingConView::releaseWindow()
+{
+ SkinView::releaseWindow();
+
+ eventPos = SKINVIEW_NULLITY_POSITION;
+ setConViewStatus(CONVIEW_NORMAL);
+}
+
/* override */
QRegion DockingConView::getKeyWinRegion(
QWidget *base, QRect &keyRect, LayoutForm::SkinImgType type)
}
if (event->button() == Qt::LeftButton) {
- QWidget *win = parent->parentWidget();
+ grabWindow(event);
- grabPos = event->globalPos();
- eventPos = event->pos();
+ QWidget *win = parent->parentWidget();
rubberPos.setX(win->pos().x() + parent->pos().x());
rubberPos.setY(win->pos().y() + parent->pos().y());
rubberBand->show();
}
}
-
- setConViewStatus(CONVIEW_PRESSED);
}
/* override */
{
SkinView::mouseDoubleClickEvent(event);
- if (bezelItem->isHWKeyHandling() == true) {
- /* do nothing */
- return;
- }
-
- if (event->button() == Qt::LeftButton) {
- grabPos = event->globalPos();
- eventPos = event->pos();
- }
-
- setConViewStatus(CONVIEW_DOUBLECLICKED);
+ /* do nothing */
}
/* override */
}
if (event->button() == Qt::LeftButton) {
- if (grabPos != QPoint(-1, -1)) {
+ if (isGrabWindow() == true) {
if (rubberBand != NULL) {
rubberBand->hide();
}
- if (getConViewStatus() != CONVIEW_PRESSED &&
- getConViewStatus() != CONVIEW_DOUBLECLICKED) {
+ if (getConViewStatus() == CONVIEW_DRAG_OUT) {
/* toggle */
MainWindow *win = ((MainWindow *)parent->parent());
win->getUiState()->getConState()->setRecentlyFloatPos(
}
}
- setConViewStatus(CONVIEW_RELEASED);
+ releaseWindow();
}
/* override */
return;
}
- if (grabPos != QPoint(-1, -1) && rubberBand != NULL) {
- rubberBand->setGeometry(
- QRect(rubberPos + (event->globalPos() - grabPos), size()));
+ if (isGrabWindow() == true) {
+ if (rubberBand != NULL) {
+ rubberBand->setGeometry(
+ QRect(rubberPos + (event->globalPos() - grabPos), size()));
+ }
+ setConViewStatus(CONVIEW_DRAG_OUT);
}
-
- setConViewStatus(CONVIEW_MOVED);
}
void DockingConView::setConViewStatus(conViewStatus status)
{
- if (conViewStat == CONVIEW_PRESSED && status == CONVIEW_MOVED) {
- conViewStat = CONVIEW_DRAGGED;
- } else {
- conViewStat = status;
- }
+ conViewStat = status;
}
int DockingConView::getConViewStatus()
~DockingConView();
enum conViewStatus {
- CONVIEW_PRESSED,
- CONVIEW_DOUBLECLICKED,
- CONVIEW_RELEASED,
- CONVIEW_MOVED,
- CONVIEW_DRAGGED
+ CONVIEW_NORMAL,
+ CONVIEW_DRAG_OUT
};
+
void setConViewStatus(conViewStatus status);
int getConViewStatus();
protected:
+ void grabWindow(QMouseEvent *event);
+ void releaseWindow();
+
QRegion getKeyWinRegion(
QWidget *base, QRect &keyRect, LayoutForm::SkinImgType type);
setStyleSheet("FloatingConView { background: transparent; border-style: none; }" +
QString(STYLE_TOOLTIP));
- conPos = QPoint(-1, -1);
+ conPos = SKINVIEW_NULLITY_POSITION;
rubberBand = new QRubberBand(QRubberBand::Rectangle, NULL);
createItems(conForm);
}
}
+/* override */
+void FloatingConView::grabWindow(QPoint pos)
+{
+ SkinView::grabWindow(pos);
+
+ conPos = parent->pos();
+}
+
+/* override */
+void FloatingConView::releaseWindow()
+{
+ SkinView::releaseWindow();
+
+ conPos = SKINVIEW_NULLITY_POSITION;
+}
+
/* override */
QRegion FloatingConView::getKeyWinRegion(
QWidget *base, QRect &keyRect, LayoutForm::SkinImgType type)
}
if (event->button() == Qt::LeftButton) {
- grabPos = event->globalPos();
- conPos = parent->pos();
+ grabWindow(event->globalPos());
}
}
}
if (event->button() == Qt::LeftButton) {
- grabPos = QPoint(-1, -1);
if (rubberBand != NULL) {
rubberBand->hide();
}
}
- const FloatingController *con = parent;
- MainWindow *win = ((MainWindow *)con->parent());
+ releaseWindow();
+
+ MainWindow *win = ((MainWindow *)parent->parentWidget());
int dockPos = isDockable((QWidget *)win, (QWidget *)parent);
if (dockPos != -1) {
return;
}
- if (grabPos != QPoint(-1, -1)) {
+ if (isGrabWindow() == true) {
/* draw guide for dockable position */
const FloatingController *con = parent;
MainWindow *win = ((MainWindow *)con->parent());
~FloatingConView();
protected:
+ void grabWindow(QPoint pos);
+ void releaseWindow();
+
QRegion getKeyWinRegion(
QWidget *base, QRect &keyRect, LayoutForm::SkinImgType type);
SkinView(parent, scene)
{
this->win = ((MainWindow *)parent);
- this->grabWinPos = QPoint(-1, -1);
+ this->grabWinPos = SKINVIEW_NULLITY_POSITION;
this->kbdHelper = new KeyboardHelper(this);
updateLayout();
return kbdHelper;
}
-bool MainView::isGrabWindow()
+/* override */
+void MainView::grabWindow(QPoint pos)
{
- return (grabPos != QPoint(-1, -1));
-}
+ SkinView::grabWindow(pos);
-void MainView::grabWindow(QPoint globalPos)
-{
grabWinPos = parentWidget()->pos();
- grabPos = globalPos;
}
+/* override */
void MainView::releaseWindow()
{
- grabPos = QPoint(-1, -1);
+ SkinView::releaseWindow();
+
+ grabWinPos = SKINVIEW_NULLITY_POSITION;
}
void MainView::updateLayout()
~MainView();
KeyboardHelper *getKbdHelper();
- bool isGrabWindow();
- void grabWindow(QPoint globalPos);
+
void releaseWindow();
void updateLayout();
protected:
+ void grabWindow(QPoint pos);
QRegion getKeyWinRegion(QWidget *base, QRect &keyRect, LayoutForm::SkinImgType type);
void resizeEvent(QResizeEvent *event);
SkinView::SkinView(QWidget *parent, QGraphicsScene *scene) :
QGraphicsView(scene, parent)
{
- this->grabPos = QPoint(-1, -1);
+ this->grabPos = SKINVIEW_NULLITY_POSITION;
/* note: do not call setStyleSheet() separately for each style */
setStyleSheet("QGraphicsView { border-style: none; }" +
&pressedKeyImg, reMasking, form->getHoverType());
}
+bool SkinView::isGrabWindow()
+{
+ return (grabPos != SKINVIEW_NULLITY_POSITION);
+}
+
+void SkinView::grabWindow(QPoint pos)
+{
+ qDebug("grab");
+
+ grabPos = pos;
+}
+
+void SkinView::releaseWindow()
+{
+ qDebug("release");
+
+ grabPos = SKINVIEW_NULLITY_POSITION;
+}
+
SkinView::~SkinView()
{
/* do nothing */
#include "skinkeyitem.h"
#include "layout/layoutform.h"
+#define SKINVIEW_NULLITY_POSITION QPoint(-1, -1)
+
class SkinView : public QGraphicsView
{
public:
SkinView(QWidget *parent, QGraphicsScene *scene);
~SkinView();
+ bool isGrabWindow();
+
virtual QRegion getKeyWinRegion(
QWidget *base, QRect &keyRect, LayoutForm::SkinImgType type) = 0;
SkinKeyItem *createKeyItem(QGraphicsItem *parent,
LayoutForm *form, HardwareKey *hwKey);
+ void grabWindow(QPoint pos);
+ void releaseWindow();
+
QPoint grabPos;
};