summaryrefslogtreecommitdiff
path: root/examples/opieui/okeyconfigwidget
Side-by-side diff
Diffstat (limited to 'examples/opieui/okeyconfigwidget') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/opieui/okeyconfigwidget/keyconfig.pro12
-rw-r--r--examples/opieui/okeyconfigwidget/testwidget.cpp128
-rw-r--r--examples/opieui/okeyconfigwidget/testwidget.h40
3 files changed, 180 insertions, 0 deletions
diff --git a/examples/opieui/okeyconfigwidget/keyconfig.pro b/examples/opieui/okeyconfigwidget/keyconfig.pro
new file mode 100644
index 0000000..5f379ef
--- a/dev/null
+++ b/examples/opieui/okeyconfigwidget/keyconfig.pro
@@ -0,0 +1,12 @@
+CONFIG += qt
+
+TEMPLATE = app
+SOURCES = testwidget.cpp
+HEADERS = testwidget.h
+
+INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/graphics/opie-eye/lib/
+DESTPATH += $(OPIEDIR)/include
+
+LIBS += -lopieui2 -lopiecore2
+
+include( $(OPIEDIR)/include.pro )
diff --git a/examples/opieui/okeyconfigwidget/testwidget.cpp b/examples/opieui/okeyconfigwidget/testwidget.cpp
new file mode 100644
index 0000000..6d2c773
--- a/dev/null
+++ b/examples/opieui/okeyconfigwidget/testwidget.cpp
@@ -0,0 +1,128 @@
+#include "testwidget.h"
+
+#include <opie2/okeyconfigwidget.h>
+
+#include <opie2/oapplicationfactory.h>
+#include <opie2/otabwidget.h>
+
+#include <qpe/qpeapplication.h>
+
+#include <qevent.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qmainwindow.h>
+#include <qdialog.h>
+
+
+/**
+ * QObject with signals and slots inside a .cpp
+ * requires the .moc at the bottom! and a run of qmake
+ */
+class MainWindow : public QMainWindow {
+ Q_OBJECT
+public:
+ static QString appName() {
+ return QString::fromLatin1("keyconfig");
+ }
+ MainWindow( QWidget*, const char*, WFlags fl );
+ ~MainWindow() {}
+private slots:
+ void slotClicked();
+private:
+ Opie::Core::OKeyConfigManager *m_manager;
+};
+
+
+OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<MainWindow> )
+
+
+MainWindow::MainWindow( QWidget* parent, const char* name, WFlags fl )
+ : QMainWindow( parent, name, fl )
+{
+ QVBoxLayout *lay = new QVBoxLayout( this );
+ QPushButton *btn = new QPushButton( tr("Configure" ), this );
+ TestMainWindow *wid = new TestMainWindow( this, "name", 0 );
+
+ lay->addWidget( btn );
+ lay->addWidget( wid );
+ m_manager = wid->manager();
+
+ connect( btn, SIGNAL(clicked()), this, SLOT(slotClicked()) );
+}
+
+void MainWindow::slotClicked() {
+ QDialog diag( this, "name", true );
+ diag.setCaption( tr( "Manage Keys" ) );
+
+ QHBoxLayout *lay = new QHBoxLayout( &diag );
+ Opie::Ui::OKeyConfigWidget *wid = new Opie::Ui::OKeyConfigWidget( &diag, "key config" );
+ wid->setChangeMode( Opie::Ui::OKeyConfigWidget::Queue );
+ wid->insert( tr("MainWindow Options" ), m_manager );
+ wid->load();
+
+ lay->addWidget( wid );
+
+ if ( QPEApplication::execDialog( &diag ) == QDialog::Accepted ) {
+ wid->save();
+ }
+}
+
+TestMainWindow::TestMainWindow( QWidget* parent, const char* slot, WFlags fl )
+ : Opie::Ui::OListView( parent, slot, fl)
+{
+ addColumn( tr( "A Doo" ) );
+ addColumn( tr( "B Doo" ) );
+
+ m_config = new Opie::Core::OConfig( "test_config_foo" );
+
+ /* generate the black list */
+ Opie::Core::OKeyPair::List blackList;
+ blackList.append( Opie::Core::OKeyPair::leftArrowKey() );
+ blackList.append( Opie::Core::OKeyPair::rightArrowKey() );
+ blackList.append( Opie::Core::OKeyPair::downArrowKey() );
+ blackList.append( Opie::Core::OKeyPair::upArrowKey() );
+
+ m_manager = new Opie::Core::OKeyConfigManager( m_config, "Key Group",
+ blackList, false, this, "Key Manager" );
+
+ m_manager->addKeyConfig( Opie::Core::OKeyConfigItem( tr( "Delete Action" ), "delete_key", QPixmap(),
+ 10, Opie::Core::OKeyPair( Qt::Key_D, Qt::ShiftButton ), this,
+ SLOT(slotDelete(QWidget*,QKeyEvent*)) ) );
+ m_manager->addKeyConfig( Opie::Core::OKeyConfigItem( tr( "Show Action" ), "show_key", QPixmap(),
+ 11, Opie::Core::OKeyPair( Qt::Key_S, Qt::AltButton ) ) );
+
+ connect(m_manager, SIGNAL(actionActivated(QWidget*,QKeyEvent*,const Opie::Core::OKeyConfigItem&)),
+ this, SLOT(slotAction(QWidget*, QKeyEvent*, const Opie::Core::OKeyConfigItem&)) );
+// when commenting the line below out the keyPressEvent will work
+ m_manager->handleWidget( this );
+ m_manager->load();
+}
+
+TestMainWindow::~TestMainWindow() {
+ m_manager->save();
+ delete m_config;
+}
+
+Opie::Core::OKeyConfigManager* TestMainWindow::manager() {
+ return m_manager;
+}
+
+/*
+ * This only works if we do not handle the even with m_manager->handleWidget( this )
+ * So this is only for demo purposes
+ */
+void TestMainWindow::keyPressEvent( QKeyEvent* ev ) {
+ owarn << "String is "+ m_manager->handleKeyEvent( ev ).text() << oendl;
+ owarn << "Id was " << m_manager->handleKeyEventId( ev ) << " " << ev->key() << " " << ev->state() << " " << ev->ascii() << "" << oendl;
+ ev->ignore();
+}
+
+void TestMainWindow::slotDelete( QWidget* wid, QKeyEvent* ev ) {
+ owarn << "Slot Delete " << wid << " " << ev->key() << " " << ev->state() << "" << oendl;
+}
+
+void TestMainWindow::slotAction( QWidget* wid, QKeyEvent* ev, const Opie::Core::OKeyConfigItem& item) {
+ owarn << "Slot Action " << wid << " " << ev->key() << " " << ev->state() << " " << item.text() << " " << item.id() << "" << oendl;
+}
+
+#include "testwidget.moc"
diff --git a/examples/opieui/okeyconfigwidget/testwidget.h b/examples/opieui/okeyconfigwidget/testwidget.h
new file mode 100644
index 0000000..6ecb346
--- a/dev/null
+++ b/examples/opieui/okeyconfigwidget/testwidget.h
@@ -0,0 +1,40 @@
+#ifndef TEST_WIDGET_H
+#define TEST_WIDGET_H
+
+#include <qmainwindow.h>
+
+#include <opie2/olistview.h>
+
+namespace Opie{
+namespace Ui{
+ class OTabWidget;
+ class OListView;
+}
+namespace Core {
+ class OConfig;
+ class OKeyConfigManager;
+ class OKeyConfigItem;
+}
+}
+class QKeyEvent;
+
+
+class TestMainWindow : public Opie::Ui::OListView {
+ Q_OBJECT
+public:
+
+ TestMainWindow(QWidget* parent, const char*, WFlags fl );
+ ~TestMainWindow();
+
+ Opie::Core::OKeyConfigManager *manager();
+protected:
+ void keyPressEvent( QKeyEvent* );
+private slots:
+ void slotDelete( QWidget*, QKeyEvent* );
+ void slotAction( QWidget*, QKeyEvent*, const Opie::Core::OKeyConfigItem& );
+private:
+ Opie::Core::OConfig *m_config;
+ Opie::Core::OKeyConfigManager *m_manager;
+};
+
+#endif