-rw-r--r-- | core/pim/addressbook/addressbook.pro | 6 | ||||
-rw-r--r-- | core/pim/addressbook/contacteditor.cpp | 9 | ||||
-rw-r--r-- | core/pim/addressbook/namelineedit.cpp | 55 | ||||
-rw-r--r-- | core/pim/addressbook/namelineedit.h | 33 |
4 files changed, 97 insertions, 6 deletions
diff --git a/core/pim/addressbook/addressbook.pro b/core/pim/addressbook/addressbook.pro index b27e4b8..bcfdb62 100644 --- a/core/pim/addressbook/addressbook.pro +++ b/core/pim/addressbook/addressbook.pro @@ -10,3 +10,4 @@ HEADERS = addressbook.h \ abconfig.h \ - abview.h + abview.h \ + namelineedit.h SOURCES = main.cpp \ @@ -19,3 +20,4 @@ SOURCES = main.cpp \ abconfig.cpp \ - abview.cpp + abview.cpp \ + namelineedit.cpp diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp index 72c8bd3..9c13017 100644 --- a/core/pim/addressbook/contacteditor.cpp +++ b/core/pim/addressbook/contacteditor.cpp @@ -22,2 +22,3 @@ #include "contacteditor.h" +#include "namelineedit.h" @@ -143,3 +144,3 @@ void ContactEditor::init() { gl->addWidget( btnFullName, 0, 0 ); - txtFullName = new QLineEdit( container ); + txtFullName = new ABOOK::NameLineEdit( container ); QWhatsThis::add( txtFullName, tr( "Enter fullname directly ! If you have a lastname with multiple words ( for instance \"de la Guerra\"), please write <lastname>,<firstnames> like this: \"de la Guerra, Carlos Pedro\"" ) ); @@ -615,3 +616,3 @@ void ContactEditor::init() { gl->addWidget( l, 0, 0 ); - txtFirstName = new QLineEdit( dlgName ); + txtFirstName = new ABOOK::NameLineEdit( dlgName ); gl->addWidget( txtFirstName, 0, 1 ); @@ -620,3 +621,3 @@ void ContactEditor::init() { gl->addWidget( l, 1, 0 ); - txtMiddleName = new QLineEdit( dlgName ); + txtMiddleName = new ABOOK::NameLineEdit( dlgName ); gl->addWidget( txtMiddleName, 1, 1 ); @@ -625,3 +626,3 @@ void ContactEditor::init() { gl->addWidget( l, 2, 0 ); - txtLastName = new QLineEdit( dlgName ); + txtLastName = new ABOOK::NameLineEdit( dlgName ); gl->addWidget( txtLastName, 2, 1 ); diff --git a/core/pim/addressbook/namelineedit.cpp b/core/pim/addressbook/namelineedit.cpp new file mode 100644 index 0000000..ba16e2c --- a/dev/null +++ b/core/pim/addressbook/namelineedit.cpp @@ -0,0 +1,55 @@ +#include "namelineedit.h" + +namespace ABOOK { +NameLineEdit::NameLineEdit( QWidget* parent, const char* name ) + : QLineEdit( parent, name ), m_prevSpace( true ) { +} + +NameLineEdit::NameLineEdit( const QString& str, QWidget* par, + const char* name ) + : QLineEdit( str, par, name ),m_prevSpace( true ) { +} + +NameLineEdit::~NameLineEdit() { +} + +void NameLineEdit::keyPressEvent( QKeyEvent* ev ) { + QString t = ev->text(); + int key = ev->key(); + int ascii = ev->ascii(); + + // ### FIXME with composed events + if ( !t.isEmpty() && ( !ev->ascii() || ev->ascii()>=32 ) && + key != Key_Delete && key != Key_Backspace && + key != Key_Return && key != Key_Enter ) { + qWarning( "str " + ev->text() + " %d", m_prevSpace ); + + if ( m_prevSpace ) { + t = t.upper(); + m_prevSpace = false; + } + if ( key == Key_Space ) + m_prevSpace = true; + + + QKeyEvent nEv(ev->type(), key, ascii, ev->state(), + t, ev->isAutoRepeat(), ev->count() ); + QLineEdit::keyPressEvent( &nEv ); + if ( !nEv.isAccepted() ) + ev->ignore(); + }else { + QLineEdit::keyPressEvent( ev ); + /* if key was a backspace lets see if we should + * capitalize the next letter + */ + if ( key == Key_Backspace ) { + QString te = text(); + /* if string is empty capitalize the first letter */ + /* else see if we're at the end of the string */ + if ( te.isEmpty() || cursorPosition() == te.length() ) + m_prevSpace = true; + } + } +} + +} diff --git a/core/pim/addressbook/namelineedit.h b/core/pim/addressbook/namelineedit.h new file mode 100644 index 0000000..c719579 --- a/dev/null +++ b/core/pim/addressbook/namelineedit.h @@ -0,0 +1,33 @@ +/* + * (C) 2004 + * GPLv2 zecke@handhelds.org + * + */ + +#ifndef ABOOK_NAME_LINE_EDIT +#define ABOOK_NAME_LINE_EDIT + +#include <qlineedit.h> + +namespace ABOOK { + /** + * small class to ease the input of names to capitalize them + * + */ + class NameLineEdit : public QLineEdit { + Q_OBJECT + public: + NameLineEdit( QWidget* parent, const char* name = 0 ); + NameLineEdit( const QString& str, QWidget* par, + const char *name = 0); + ~NameLineEdit(); + + protected: + void keyPressEvent( QKeyEvent* ev ); + + private: + bool m_prevSpace : 1; + }; +} + +#endif |