summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeva <deva>2011-03-11 13:41:42 +0000
committerdeva <deva>2011-03-11 13:41:42 +0000
commit33ca5716dd3bb93caf87bce65de15986dde86c63 (patch)
tree3571e4e0426f6516f09632281b2cefc70e8b67f9
parent0a1d9ad482e343fe96e0e447a1c173654d6fd3af (diff)
Huge improvements on 'keyboard-only' use.
-rw-r--r--client/macro.cc8
-rw-r--r--client/macrowindow.cc13
-rw-r--r--client/macrowindow.h8
-rw-r--r--client/widgets/frame.h2
-rw-r--r--client/widgets/groupbox.h2
-rw-r--r--client/widgets/label.h2
-rw-r--r--client/widgets/textedit.cc4
-rw-r--r--client/widgets/window.h2
8 files changed, 34 insertions, 7 deletions
diff --git a/client/macro.cc b/client/macro.cc
index ad21cc4..0dcf590 100644
--- a/client/macro.cc
+++ b/client/macro.cc
@@ -61,11 +61,15 @@ void Macro::update(QDomNode &node)
name = elem.attribute("name");
iscompleted = elem.attribute("completed", "false") == "true";
+ if(drawer == NULL) {
+ drawer = new MacroDrawer(this, elem.attribute("caption", name));
+
if(window == NULL) {
isstatic = elem.attribute("static", "false") == "true";
iscompact = elem.attribute("compact", "false") == "true";
- window = new MacroWindow(netcom, templ, isstatic, iscompact, scrollarea);
+ window = new MacroWindow(netcom, templ, isstatic, iscompact,
+ scrollarea, drawer);
QFont f = window->font();
f.setBold(false);
@@ -73,8 +77,6 @@ void Macro::update(QDomNode &node)
window->setFont(f);
}
- if(drawer == NULL) {
- drawer = new MacroDrawer(this, elem.attribute("caption", name));
QHBoxLayout *l = new QHBoxLayout();
l->setContentsMargins(10,0,10,0);
drawer->setLayout(l);
diff --git a/client/macrowindow.cc b/client/macrowindow.cc
index ca76b46..d96facb 100644
--- a/client/macrowindow.cc
+++ b/client/macrowindow.cc
@@ -37,6 +37,7 @@
#include "widgets/window.h"
#include "lua.h"
#include "mainwindow.h"
+#include "macrodrawer.h"
#include "debug.h"
@@ -47,9 +48,11 @@ extern QString user;
MacroWindow::MacroWindow(NetCom &n, QString templ,
bool is_static, bool compact,
- QScrollArea *scrollarea)
+ QScrollArea *scrollarea,
+ MacroDrawer *d)
: Collapser(NULL, compact?NULL:scrollarea), netcom(n)
{
+ drawer = d;
this->is_static = is_static;
DEBUG(macrowindow, "Constructor %p\n", this);
@@ -267,6 +270,7 @@ void MacroWindow::clear()
if(mainwidget) {
delete mainwidget;
mainwidget = NULL;
+ drawer->setFocus();
}
}
@@ -283,15 +287,20 @@ void MacroWindow::animated(QWidget *w)
waschanged = false;
mainwidget->setValues();
+ if(is_static) return;
+
+ printf("SetFocus:\n");
// Set keyboard focus on the first focusable widget in the macro.
QVector< Widget* > widgets;
widgets = mainwidget->widgetList(true);
QVector< Widget* >::iterator i = widgets.begin();
while(i != widgets.end()) {
Widget *w = *i;
+ if(w) {
+ printf("\t%s\n", w->type().toStdString().c_str());
+ }
if(w && w->setKeyboardFocus()) break;
i++;
}
-
}
}
diff --git a/client/macrowindow.h b/client/macrowindow.h
index 65fcbf1..f92b4c0 100644
--- a/client/macrowindow.h
+++ b/client/macrowindow.h
@@ -36,13 +36,15 @@
class LUA;
class Widget;
+class MacroDrawer;
class MacroWindow : public Collapser
{
Q_OBJECT
public:
MacroWindow(NetCom &netcom, QString templ,
- bool is_static = false, bool compact = false,
- QScrollArea *scrollarea = NULL);
+ bool is_static, bool compact,
+ QScrollArea *scrollarea,
+ MacroDrawer *drawer);
~MacroWindow();
LUA *lua;
void update(QDomNode &xml_doc);
@@ -88,6 +90,8 @@ private:
bool active;
bool is_static;
+
+ MacroDrawer *drawer;
};
#endif/*__PRACRO_MACROWINDOW_H__*/
diff --git a/client/widgets/frame.h b/client/widgets/frame.h
index fe57a0f..219ecf8 100644
--- a/client/widgets/frame.h
+++ b/client/widgets/frame.h
@@ -43,6 +43,8 @@ public:
void setWdgValid(bool) {}
+ bool setKeyboardFocus() { return false; }
+
private:
QFrame *frame;
};
diff --git a/client/widgets/groupbox.h b/client/widgets/groupbox.h
index bf12765..22aa644 100644
--- a/client/widgets/groupbox.h
+++ b/client/widgets/groupbox.h
@@ -43,6 +43,8 @@ public:
void setWdgValid(bool) {}
+ bool setKeyboardFocus() { return false; }
+
private:
QGroupBox *groupbox;
};
diff --git a/client/widgets/label.h b/client/widgets/label.h
index 529a79e..b4e352c 100644
--- a/client/widgets/label.h
+++ b/client/widgets/label.h
@@ -44,6 +44,8 @@ public:
void setWdgValid(bool) {}
+ bool setKeyboardFocus() { return false; }
+
private:
QLabel *label;
};
diff --git a/client/widgets/textedit.cc b/client/widgets/textedit.cc
index c597359..757a353 100644
--- a/client/widgets/textedit.cc
+++ b/client/widgets/textedit.cc
@@ -85,6 +85,10 @@ bool TextEdit::eventFilter(QObject *, QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+ if(keyEvent->text() == "\t") {
+ event->ignore();
+ return true;
+ }
if(keyEvent->text() != "") emit wasChanged();
}
return false;
diff --git a/client/widgets/window.h b/client/widgets/window.h
index b7098d6..2214b16 100644
--- a/client/widgets/window.h
+++ b/client/widgets/window.h
@@ -40,6 +40,8 @@ public:
void setValue(QString, QString) {}
void setWdgValid(bool) {}
+
+ bool setKeyboardFocus() { return false; }
};
#endif/*__PRACRO_WINDOW_H__*/