Commit 2718542e authored by Christoffer Ackelman's avatar Christoffer Ackelman

QT: Made xtt_keyboard resizable.

parent 82b8cdcf
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
#include <QApplication> #include <QApplication>
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QResizeEvent>
#include <QVBoxLayout> #include <QVBoxLayout>
void XttKeyboardQtWidget::closeEvent(QCloseEvent* event) void XttKeyboardQtWidget::closeEvent(QCloseEvent* event)
{ {
debug_print("XttKeyboardQtWidget::closeEvent\n");
if (kb->close_cb) { if (kb->close_cb) {
(kb->close_cb)(kb->parent_ctx); (kb->close_cb)(kb->parent_ctx);
} else { } else {
...@@ -61,26 +61,19 @@ XttKeyboardQt::XttKeyboardQt(void* xn_parent_ctx, QWidget* xn_parent_wid, ...@@ -61,26 +61,19 @@ XttKeyboardQt::XttKeyboardQt(void* xn_parent_ctx, QWidget* xn_parent_wid,
const char* xn_name, QWidget** w, keyboard_eKeymap xn_keymap, const char* xn_name, QWidget** w, keyboard_eKeymap xn_keymap,
keyboard_eType xn_type, int xn_color_theme, pwr_tStatus* status) keyboard_eType xn_type, int xn_color_theme, pwr_tStatus* status)
: XttKeyboard( : XttKeyboard(
xn_parent_ctx, xn_name, xn_keymap, xn_type, xn_color_theme, status), xn_parent_ctx, xn_name, xn_keymap, xn_type, xn_color_theme, status)
displayed(0), closing_down(0)
{ {
int width = 1145; int width = 1145;
int height = 161; int height = 161;
toplevel = new XttKeyboardQtWidget(this, xn_parent_wid); toplevel = new XttKeyboardQtWidget(this, xn_parent_wid);
toplevel->setToolTip(fl("xtt_keyboard widget"));
toplevel->setMinimumSize(width, height);
toplevel->setWindowTitle(translate_utf8(xn_name)); toplevel->setWindowTitle(translate_utf8(xn_name));
toplevel->setAttribute(Qt::WA_DeleteOnClose); toplevel->setAttribute(Qt::WA_DeleteOnClose);
debug_print("creating a keyboardwidgetqt\n");
keyboard_widget = keyboardwidgetqt_new(init_keyboard_cb, this); keyboard_widget = keyboardwidgetqt_new(init_keyboard_cb, this);
QVBoxLayout* vbox = new QVBoxLayout(toplevel); QVBoxLayout* vbox = new QVBoxLayout(toplevel);
add_expanding(vbox, keyboard_widget); add_expanding(vbox, keyboard_widget);
toplevel->setLayout(vbox); toplevel->setLayout(vbox);
toplevel->show(); toplevel->show();
...@@ -97,40 +90,44 @@ XttKeyboardQt::XttKeyboardQt(void* xn_parent_ctx, QWidget* xn_parent_wid, ...@@ -97,40 +90,44 @@ XttKeyboardQt::XttKeyboardQt(void* xn_parent_ctx, QWidget* xn_parent_wid,
keyboard_SetSize(keyboardctx, width, height); keyboard_SetSize(keyboardctx, width, height);
} }
aspectRatio = width / ((double) height);
toplevel->resize(width, height); toplevel->resize(width, height);
toplevel->move(screen_width / 2 - width / 2, screen_height - height);
int x = screen_width / 2 - width / 2;
int y = screen_height - height;
toplevel->move(x, y);
displayed = 1;
*status = 1; *status = 1;
} }
XttKeyboardQt::~XttKeyboardQt()
{
debug_print("XttKeyboardQt::~XttKeyboardQt\n");
closing_down = 1;
}
void XttKeyboardQt::set_inputfocus() void XttKeyboardQt::set_inputfocus()
{ {
if (displayed) { if (toplevel->isVisible()) {
keyboard_widget->setFocus(); keyboard_widget->setFocus();
} }
} }
void XttKeyboardQtWidget::focusInEvent(QFocusEvent* event) void XttKeyboardQtWidget::focusInEvent(QFocusEvent* event)
{ {
if (kb->displayed) { if (isVisible()) {
// kb->set_input_focus(); // kb->set_input_focus();
} }
QWidget::focusInEvent(event); QWidget::focusInEvent(event);
} }
void XttKeyboardQtWidget::resizeEvent(QResizeEvent *event)
{
if (kb->aspectRatio == 0) {
return;
}
if (event->size().width() == prevWidth) {
QWidget::resize(event->size().height() * kb->aspectRatio, event->size().height());
} else {
QWidget::resize(event->size().width(), event->size().width() / kb->aspectRatio);
}
keyboard_SetSize(kb->keyboardctx, width(), height());
prevWidth = width();
}
void XttKeyboardQt::pop() void XttKeyboardQt::pop()
{ {
::pop(toplevel); ::pop(toplevel);
......
...@@ -49,7 +49,6 @@ public: ...@@ -49,7 +49,6 @@ public:
XttKeyboardQt(void* xn_parent_ctx, QWidget* xn_parent_wid, XttKeyboardQt(void* xn_parent_ctx, QWidget* xn_parent_wid,
const char* xn_name, QWidget** w, keyboard_eKeymap keymap, const char* xn_name, QWidget** w, keyboard_eKeymap keymap,
keyboard_eType type, int xn_color_theme, pwr_tStatus* status); keyboard_eType type, int xn_color_theme, pwr_tStatus* status);
~XttKeyboardQt();
void set_inputfocus(); void set_inputfocus();
void pop(); void pop();
...@@ -57,8 +56,7 @@ public: ...@@ -57,8 +56,7 @@ public:
QWidget* keyboard_widget; QWidget* keyboard_widget;
QWidget* form_widget; QWidget* form_widget;
int displayed; double aspectRatio = 0;
int closing_down;
private: private:
QDialog* toplevel; QDialog* toplevel;
...@@ -74,9 +72,11 @@ public: ...@@ -74,9 +72,11 @@ public:
protected: protected:
void focusInEvent(QFocusEvent* event); void focusInEvent(QFocusEvent* event);
void closeEvent(QCloseEvent* event); void closeEvent(QCloseEvent* event);
void resizeEvent(QResizeEvent *event);
private: private:
XttKeyboardQt* kb; XttKeyboardQt* kb;
int prevWidth;
}; };
#endif #endif
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment