int x, int y, int w, int h)
{
DisplaySurface *surf = qemu_console_surface(dcl->con);
-
if (!surf) {
return;
}
-// qt5_update_internal(surface_data(surf), surface_width(surf), surface_height(surf));
+#if 0
+ /* testing */
+ qt5_update_internal(surface_data(surf), surface_width(surf), surface_height(surf));
+#endif
}
static void qt5_switch(DisplayChangeListener *dcl,
qt5_console[i].idx = i;
}
- // TODO: show icon
-
if (full_screen) {
// TODO
}
static QApplication *app;
-QT5Console::QT5Console()
-{
-
-}
-
static int argc = 0;
static char *argv[0];
-//static QT5Console *console;
+
static MainWindow *mainwindow;
static UIInformation *uiInfo;
mainwindow = new MainWindow(uiInfo);
// mainwindow->move(100, 100); // TODO: MRU
mainwindow->show();
-
-// app.exec();
}
void qt5_early_prepare(void)
void qt5_prepare(void)
{
qt5_skin_init();
-
-// app = new QApplication(argc, argv);
-// console = new QT5Console();
-// console->show();
}
void qt5_update_internal(void *data, int width, int height)
#ifndef __QT5_INTERNAL_H__
#define __QT5_INTERNAL_H__
-#ifdef __cplusplus
-#include <QtWidgets>
-
-class QT5Console : public QWidget
-{
- Q_OBJECT
-
-public:
- QT5Console();
-
-protected:
-
-private:
-};
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
rcc -name resource $< -o $@
obj-$(CONFIG_QT) += controllerlayout.o
+obj-$(CONFIG_QT) += controllerwidget.o moc_controllerwidget.o
obj-$(CONFIG_QT) += displaywidget.o moc_displaywidget.o
obj-$(CONFIG_QT) += hardwarekey.o
obj-$(CONFIG_QT) += mainwindow.o moc_mainwindow.o
obj-$(CONFIG_QT) += menu/
+$(obj)/moc_controllerwidget.o: $(obj)/moc_controllerwidget.cpp
+$(obj)/moc_controllerwidget.cpp: $(obj)/controllerwidget.h
+ moc $< -o $@
$(obj)/moc_displaywidget.o: $(obj)/moc_displaywidget.cpp
$(obj)/moc_displaywidget.cpp: $(obj)/displaywidget.h
moc $< -o $@
--- /dev/null
+#include <QtWidgets>
+
+#include "controllerwidget.h"
+
+ControllerWidget::ControllerWidget(ControllerLayout *conLayout, QWidget *parent) :
+ QLabel(parent)
+{
+ setStyleSheet("border-style: none");
+
+ QHBoxLayout *layout = new QHBoxLayout(this);
+ layout->setMargin(0);
+ layout->setSpacing(0);
+
+ QGraphicsScene *conScene = new QGraphicsScene(this);
+
+ conView = new SkinControllerView(conLayout, conScene, this);
+ conView->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+ layout->addWidget(conView);
+}
+
+ControllerWidget::~ControllerWidget()
+{
+ qDebug("destroy contoller");
+}
--- /dev/null
+#ifndef CONTROLLERWIDGET_H
+#define CONTROLLERWIDGET_H
+
+#include <QLabel>
+
+#include "controllerlayout.h"
+#include "skincontrollerview.h"
+
+class ControllerWidget : public QLabel
+{
+ Q_OBJECT
+
+public:
+ explicit ControllerWidget(ControllerLayout *conLayout, QWidget *parent = 0);
+ ~ControllerWidget();
+
+private:
+ SkinControllerView *conView;
+};
+
+#endif // CONTROLLERWIDGET_H
#include "displaywidget.h"
#include "skinlayout.h"
#include "skincontrollerview.h"
+#include "controllerwidget.h"
QOpenGLContext *qt5GLContext = NULL;
QSurfaceFormat qt5GLFormat;
/* scene */
QGraphicsScene* skinScene = new QGraphicsScene(this);
- //item->setFlags(QGraphicsItem::ItemIsMovable);
- //item->setAttribute(Qt::WA_Hover);
/* view */
skinView = new SkinView(skinScene, this);
skinView->setStyleSheet("background: transparent");
+ //skinView->setStyleSheet("border-style: none");
skinView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
skinView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- //view->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
winLayout->addWidget(skinView);
- /* TODO */
if (uiInfo->controllerList.count() > 0) {
+#if 0
+ // TODO: docked controller
QGraphicsScene *conScene = new QGraphicsScene(this);
+
conView = new SkinControllerView(conScene, this);
- conView->setStyleSheet("background: transparent");
- conView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- conView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
conView->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
winLayout->addWidget(conView);
+#endif
+
+ /* floated controller */
+ ControllerLayout *conLayout = uiInfo->controllerList.at(0);
+ ControllerWidget *con = new ControllerWidget(conLayout);
+ con->show();
}
QGLContext *wrapperContext = QGLContext::fromOpenGLContext(qt5GLContext);
context->create(wrapperContext);
/* popup menu */
+ // TODO: thread
popupMenu = new ContextMenu(this);
setContextMenuPolicy(Qt::CustomContextMenu);
{
qDebug("set region");
- // TODO: remove border
-
QImage region = baseImage.createAlphaMask().scaled(
baseImage.width() * getUIState()->getScaleFactor(),
baseImage.height() * getUIState()->getScaleFactor());
#include "mainwindow.h"
#include "skinkeyitem.h"
-SkinControllerView::SkinControllerView(QGraphicsScene *scene, QWidget *parent) :
+SkinControllerView::SkinControllerView(ControllerLayout *conLayout, QGraphicsScene *scene, QWidget *parent) :
QGraphicsView(scene, parent)
{
+ setStyleSheet("background: transparent");
+ setStyleSheet("border-style: none");
+ setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
setAlignment(Qt::AlignLeft | Qt::AlignTop);
- createItems();
+ createItems(conLayout);
}
-void SkinControllerView::createItems()
+void SkinControllerView::createItems(ControllerLayout *conLayout)
{
- MainWindow *win = ((MainWindow *)this->parent());
-
/* bezel */
- SkinBezelItem *bezelItem = new SkinBezelItem(
- win->uiInfo->controllerList.at(0)->conImg[0]);
+ SkinBezelItem *bezelItem = new SkinBezelItem(conLayout->conImg[ControllerLayout::normal]);
scene()->addItem(bezelItem);
/* HW keys */
- QList<HardwareKey *> keyList = win->uiInfo->controllerList.at(0)->keyList;
+ QList<HardwareKey *> keyList = conLayout->keyList;
HardwareKey *hwKey = NULL;
for (int i = 0; i < keyList.count(); i++) {
hwKey = keyList.at(i);
if (hwKey != NULL) {
- new SkinKeyItem(win->uiInfo->controllerList.at(0)->conImg[0].copy(hwKey->region),
+ new SkinKeyItem(conLayout->conImg[ControllerLayout::pressed].copy(hwKey->region),
hwKey, bezelItem);
}
}
#define SKINCONTROLLERVIEW_H
#include "skinview.h"
+#include "controllerlayout.h"
class SkinControllerView : public QGraphicsView
{
public:
- SkinControllerView(QGraphicsScene *scene, QWidget *parent = 0);
+ SkinControllerView(ControllerLayout *conLayout, QGraphicsScene *scene, QWidget *parent = 0);
~SkinControllerView();
protected:
void resizeEvent(QResizeEvent *event);
private:
- void createItems();
+ void createItems(ControllerLayout *conLayout);
};
#endif // SKINCONTROLLERVIEW_H