-rw-r--r-- | noncore/apps/opie-console/function_keyboard.cpp | 43 | ||||
-rw-r--r-- | noncore/apps/opie-console/function_keyboard.h | 7 | ||||
-rw-r--r-- | noncore/apps/opie-console/mainwindow.cpp | 6 |
3 files changed, 48 insertions, 8 deletions
diff --git a/noncore/apps/opie-console/function_keyboard.cpp b/noncore/apps/opie-console/function_keyboard.cpp index 3da8d61..ce65052 100644 --- a/noncore/apps/opie-console/function_keyboard.cpp +++ b/noncore/apps/opie-console/function_keyboard.cpp @@ -46,32 +46,68 @@ FunctionKeyboard::FunctionKeyboard(QWidget *parent) : */ if (keys.isEmpty()) loadDefaults(); } FunctionKeyboard::~FunctionKeyboard() {} void FunctionKeyboard::changeRows(int r) { numRows = r; - repaint(false); + + // have to do this so the whole thing gets redrawn + hide(); show(); } void FunctionKeyboard::changeCols(int c) { numCols = c; keyWidth = (double)width()/numCols; // have to reset this thing too repaint(false); } +void FunctionKeyboard::load (const Profile& prof) { + + keys.clear(); + + numRows = prof.readNumEntry("keb_rows", 2); + numCols = prof.readNumEntry("keb_cols", 10); + keyWidth = (double)width()/numCols; // have to reset this thing too + + /* load all the keys to the keyboard */ + for (ushort i = 0; i <= numRows - 1; i++) + for (ushort j = 0; j <= numCols - 1; j++) { + + QString h = "r" + QString::number(i) + "c" + QString::number(j); + QString values = prof.readEntry("keb_" + h); + + if (!values.isEmpty()) { + + QStringList l = QStringList::split(QChar('|'), values, TRUE); + keys[h] = FKey(l[0], l[1], l[2].toInt(), l[3].toInt()); + + // load pixmap if used + if (!l[1].isEmpty()) { + + keys[h].pix = new QPixmap( Resource::loadPixmap( "console/keys/" + l[1] ) ); + } + } + } + + if (keys.isEmpty()) loadDefaults(); + + hide(); + show(); + +} void FunctionKeyboard::paintEvent(QPaintEvent *e) { QPainter p(this); p.setClipRect(e->rect()); p.fillRect(0, 0, width(), height(), QColor(255,255,255)); p.setPen(QColor(0,0,0)); /* those decimals do count! becomes short if use plain int */ for (double i = 0; i <= width(); i += keyWidth) { @@ -264,24 +300,27 @@ FunctionKeyboardConfig::FunctionKeyboardConfig(const QString& name, QWidget* par connect (m_uniValues, SIGNAL(textChanged(const QString &)), this, SLOT(slotChangeUnicode(const QString&))); QVBoxLayout *root = new QVBoxLayout(this, 2); root->addWidget(kb); root->addWidget(dimentions); root->addWidget(editKey); } FunctionKeyboardConfig::~FunctionKeyboardConfig() { } void FunctionKeyboardConfig::load (const Profile& prof) { + kb->keys.clear(); + kb->loadDefaults(); + m_rowBox->setValue(prof.readNumEntry("keb_rows", 2)); m_colBox->setValue(prof.readNumEntry("keb_cols", 10)); /* load all the keys to the keyboard */ for (int i = 0; i <= m_rowBox->value() -1; i++) for (int j = 0; j <= m_colBox->value() -1; j++) { QString h = "r" + QString::number(i) + "c" + QString::number(j); QString values = prof.readEntry("keb_" + h); if (!values.isEmpty()) { @@ -311,26 +350,24 @@ void FunctionKeyboardConfig::save (Profile& prof) { + QString::number(k.qcode) + "|" + QString::number(k.unicode); prof.writeEntry("keb_" + it.key(), entry); } } void FunctionKeyboardConfig::slotChangeRows(int r) { kb->changeRows(r); - // have to do this so the whole thing gets redrawn - kb->hide(); kb->show(); } void FunctionKeyboardConfig::slotChangeCols(int c) { kb->changeCols(c); } void FunctionKeyboardConfig::slotKeyPressed(FKey k, ushort r, ushort c, bool pressed) { if (!pressed) return; selectedHandle = "r" + QString::number(r) + "c" + QString::number(c); selectedRow = r; diff --git a/noncore/apps/opie-console/function_keyboard.h b/noncore/apps/opie-console/function_keyboard.h index 80d9f29..a60ff4b 100644 --- a/noncore/apps/opie-console/function_keyboard.h +++ b/noncore/apps/opie-console/function_keyboard.h @@ -36,41 +36,38 @@ struct FKey { class FunctionKeyboard : public QFrame { Q_OBJECT public: FunctionKeyboard(QWidget *parent = 0); ~FunctionKeyboard(); friend class FunctionKeyboardConfig; void changeRows(int); void changeCols(int); - //Key getKey(int, int); + void load(const Profile &); + void loadDefaults(); void paintEvent(QPaintEvent *); void paintKey(uint, uint); void mousePressEvent(QMouseEvent*); void mouseReleaseEvent(QMouseEvent*); void resizeEvent(QResizeEvent*); QSize sizeHint() const; signals: void keyPressed(FKey, ushort, ushort, bool); -private: - - void loadDefaults(); - private: // thie key for the map is the row/col QMap<QString, FKey> keys; uint numRows; int test; uint numCols; uint keyHeight; double keyWidth; // decimal point matters! diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp index b177fa5..745efaf 100644 --- a/noncore/apps/opie-console/mainwindow.cpp +++ b/noncore/apps/opie-console/mainwindow.cpp @@ -398,24 +398,26 @@ void MainWindow::slotClose() { if (!currentSession() ) { m_connect->setEnabled( false ); m_disconnect->setEnabled( false ); m_terminate->setEnabled( false ); m_transfer->setEnabled( false ); m_recordScript->setEnabled( false ); m_saveScript->setEnabled( false ); m_runScript->setEnabled( false ); m_fullscreen->setEnabled( false ); m_closewindow->setEnabled( false ); } + + m_kb->loadDefaults(); } /* * We will get the name * Then the profile * and then we will make a profile */ void MainWindow::slotProfile( int id) { Profile prof = manager()->profile( m_sessionsPop->text( id) ); create( prof ); } void MainWindow::create( const Profile& prof ) { @@ -447,24 +449,26 @@ void MainWindow::create( const Profile& prof ) { m_runScript->setEnabled( false ); // is io_layer wants direct connection, then autoconnect //if ( ( m_curSession->layer() )->supports()[0] == 1 ) { if (prof.autoConnect()) { slotConnect(); } QWidget *w = currentSession()->widget(); if(w) w->setFocus(); + + m_kb->load(currentSession()->profile()); } void MainWindow::slotTransfer() { if ( currentSession() ) { TransferDialog dlg(currentSession()->widgetStack(), this); dlg.showMaximized(); //currentSession()->widgetStack()->add(dlg); dlg.exec(); } } @@ -510,24 +514,26 @@ void MainWindow::slotSessionChanged( Session* ses ) { if ( ( m_curSession->layer() )->supports()[1] == 0 ) { m_transfer->setEnabled( false ); } else { m_transfer->setEnabled( true ); } QWidget *w = m_curSession->widget(); if(w) w->setFocus(); + + m_kb->load(currentSession()->profile()); } } void MainWindow::slotFullscreen() { if ( m_isFullscreen ) { ( m_curSession->widgetStack() )->reparent( savedParentFullscreen, 0, QPoint(0,0), true ); ( m_curSession->widgetStack() )->resize( savedParentFullscreen->width(), savedParentFullscreen->height() ); ( m_curSession->emulationHandler() )->cornerButton()->hide(); disconnect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); |