summaryrefslogtreecommitdiffstats
path: root/kabc/addresslineedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'kabc/addresslineedit.h')
-rw-r--r--kabc/addresslineedit.h123
1 files changed, 123 insertions, 0 deletions
diff --git a/kabc/addresslineedit.h b/kabc/addresslineedit.h
new file mode 100644
index 000000000..05a0a7c58
--- /dev/null
+++ b/kabc/addresslineedit.h
@@ -0,0 +1,123 @@
+/*
+ This file is part of libkabc.
+ Copyright (c) 2002 Helge Deller <deller@gmx.de>
+ 2002 Lubos Lunak <llunak@suse.cz>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KABC_ADDRESSLINEEDIT_H
+#define KABC_ADDRESSLINEEDIT_H
+// $Id$
+
+#include <qobject.h>
+#include <qptrlist.h>
+#include <qtimer.h>
+
+#include "klineedit.h"
+#include "kcompletion.h"
+
+class KConfig;
+
+namespace KABC {
+
+class LdapSearch;
+
+/**
+ * A lineedit with LDAP and kabc completion
+ *
+ * This lineedit is supposed to be used wherever the user types email addresses
+ * and might want a completion. You can simply use it as a replacement for
+ * KLineEdit or QLineEdit.
+ *
+ * You can enable or disable the lineedit at any time.
+ *
+ * @see AddressLineEdit::enableCompletion()
+ */
+class KABC_EXPORT AddressLineEdit : public KLineEdit
+{
+ Q_OBJECT
+public:
+ AddressLineEdit(QWidget* parent, bool useCompletion = true,
+ const char *name = 0L);
+ virtual ~AddressLineEdit();
+
+ /**
+ * Reimplented for internal reasons.
+ * @ see KLineEdit::setFont()
+ */
+ virtual void setFont( const QFont& );
+
+ static KConfig *config();
+
+public slots:
+ /**
+ * Set cursor to end of line.
+ */
+ void cursorAtEnd();
+ /**
+ * Toggle completion.
+ */
+ void enableCompletion( bool enable );
+
+protected:
+ /**
+ * Always call AddressLineEdit::loadAddresses() as the first thing.
+ * Use addAddress() to add addresses.
+ */
+ virtual void loadAddresses();
+ void addAddress( const QString& );
+ virtual void keyPressEvent(QKeyEvent*);
+ virtual void dropEvent(QDropEvent *e);
+ virtual void paste();
+ virtual void insert(const QString &t);
+ virtual void mouseReleaseEvent( QMouseEvent * e );
+ void doCompletion(bool ctrlT);
+
+private slots:
+ void slotCompletion() { doCompletion(false); }
+ void slotPopupCompletion( const QString& );
+ void slotStartLDAPLookup();
+ void slotLDAPSearchData( const QStringList& );
+
+private:
+ void init();
+ void startLoadingLDAPEntries();
+ void stopLDAPLookup();
+ QStringList addresses();
+ QStringList removeMailDupes( const QStringList& adrs );
+
+ QString m_previousAddresses;
+ bool m_useCompletion;
+ bool m_completionInitialized;
+ bool m_smartPaste;
+ QString m_typedText; // unused
+
+ static bool s_addressesDirty;
+ static KCompletion *s_completion;
+ static QTimer *s_LDAPTimer;
+ static LdapSearch *s_LDAPSearch;
+ static QString *s_LDAPText;
+ static AddressLineEdit *s_LDAPLineEdit;
+ static KConfig *s_config;
+
+private:
+ class AddressLineEditPrivate* d;
+};
+
+}
+
+#endif /* KABC_ADDRESSLINEEDIT_H */