3 files changed, 174 insertions, 0 deletions
diff --git a/libopie2/examples/opieui/okeyconfigwidget/keyconfig.pro b/libopie2/examples/opieui/okeyconfigwidget/keyconfig.pro new file mode 100644 index 0000000..b38cf3b --- a/dev/null +++ b/libopie2/examples/opieui/okeyconfigwidget/keyconfig.pro @@ -0,0 +1,12 @@ +CONFIG += qt debug + +TEMPLATE = app +SOURCES = ../../../../noncore/graphics/opie-eye/lib/okeyconfigwidget.cpp testwidget.cpp +HEADERS = ../../../../noncore/graphics/opie-eye/lib/okeyconfigwidget.h testwidget.h + +INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/graphics/opie-eye/lib/ +DESTPATH += $(OPIEDIR)/include + +LIBS += -lopieui2 -lopiecore2 + +include ( $(OPIEDIR)/include.pro ) diff --git a/libopie2/examples/opieui/okeyconfigwidget/testwidget.cpp b/libopie2/examples/opieui/okeyconfigwidget/testwidget.cpp new file mode 100644 index 0000000..329df09 --- a/dev/null +++ b/libopie2/examples/opieui/okeyconfigwidget/testwidget.cpp @@ -0,0 +1,122 @@ +#include "testwidget.h" + +#include "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::Ui::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 ); + 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::Ui::OKeyPair::List blackList; + blackList.append( Opie::Ui::OKeyPair::leftArrowKey() ); + blackList.append( Opie::Ui::OKeyPair::rightArrowKey() ); + blackList.append( Opie::Ui::OKeyPair::downArrowKey() ); + blackList.append( Opie::Ui::OKeyPair::upArrowKey() ); + + m_manager = new Opie::Ui::OKeyConfigManager( m_config, "Key Group", + blackList, false, this, "Key Manager" ); + + m_manager->addKeyConfig( Opie::Ui::OKeyConfigItem( tr( "Delete Action" ), "delete_key", QPixmap(), + 10, Opie::Ui::OKeyPair( Qt::Key_D, 0 ), this, + SLOT(slotDelete(QWidget*,QKeyEvent*)) ) ); + + connect(m_manager, SIGNAL(actionActivated(QWidget*,QKeyEvent*,const Opie::Ui::OKeyConfigItem&)), + this, SLOT(slotAction(QWidget*, QKeyEvent*, const Opie::Ui::OKeyConfigItem&)) ); +// when commenting the line below out the keyPressEvent will work + m_manager->handleWidget( this ); + m_manager->load(); +} + +TestMainWindow::~TestMainWindow() { + m_manager->save(); +} + +Opie::Ui::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 ) { + qWarning( "String is "+ m_manager->handleKeyEvent( ev ).text() ); + qWarning( "Id was %d", m_manager->handleKeyEventId( ev ) ); +} + +void TestMainWindow::slotDelete( QWidget* wid, QKeyEvent* ev ) { + qWarning( "Slot Delete %d %d %d", wid, ev->key(), ev->state() ); +} + +void TestMainWindow::slotAction( QWidget* wid, QKeyEvent* ev, const Opie::Ui::OKeyConfigItem& item) { + qWarning( "Slot Action %d %d %d %s %d", wid, ev->key(), ev->state(), item.text().latin1(), item.id() ); +} + +#include "testwidget.moc" diff --git a/libopie2/examples/opieui/okeyconfigwidget/testwidget.h b/libopie2/examples/opieui/okeyconfigwidget/testwidget.h new file mode 100644 index 0000000..b95c225 --- a/dev/null +++ b/libopie2/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 OKeyConfigManager; + class OListView; + class OKeyConfigItem; +} +namespace Core { + class OConfig; +} +} +class QKeyEvent; + + +class TestMainWindow : public Opie::Ui::OListView { + Q_OBJECT +public: + + TestMainWindow(QWidget* parent, const char*, WFlags fl ); + ~TestMainWindow(); + + Opie::Ui::OKeyConfigManager *manager(); +protected: + void keyPressEvent( QKeyEvent* ); +private slots: + void slotDelete( QWidget*, QKeyEvent* ); + void slotAction( QWidget*, QKeyEvent*, const Opie::Ui::OKeyConfigItem& ); +private: + Opie::Core::OConfig *m_config; + Opie::Ui::OKeyConfigManager *m_manager; +}; + +#endif |