summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.pro6
-rw-r--r--core/pim/addressbook/contacteditor.cpp9
-rw-r--r--core/pim/addressbook/namelineedit.cpp55
-rw-r--r--core/pim/addressbook/namelineedit.h33
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