summaryrefslogtreecommitdiffstats
path: root/libkdepim/addressesdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'libkdepim/addressesdialog.h')
-rw-r--r--libkdepim/addressesdialog.h221
1 files changed, 221 insertions, 0 deletions
diff --git a/libkdepim/addressesdialog.h b/libkdepim/addressesdialog.h
new file mode 100644
index 000000000..06e8305d3
--- /dev/null
+++ b/libkdepim/addressesdialog.h
@@ -0,0 +1,221 @@
+/* -*- mode: C++; c-file-style: "gnu" -*-
+ *
+ * This file is part of libkdepim.
+ *
+ * Copyright (c) 2003 Zack Rusin <zack@kde.org>
+ * Copyright (c) 2003 Aaron J. Seigo <aseigo@kde.org>
+ *
+ * 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 ADDRESSESDIALOG_H
+#define ADDRESSESDIALOG_H
+
+#include <kabc/addressee.h>
+#include <kdialogbase.h>
+#include <klistview.h>
+#include <qstringlist.h>
+#include <qptrlist.h>
+#include <qptrdict.h>
+#include <kdepimmacros.h>
+
+namespace KPIM {
+
+ class AddresseeViewItem : public QObject, public KListViewItem
+ {
+ Q_OBJECT
+
+ public:
+ enum Category {
+ To =0,
+ CC =1,
+ BCC =2,
+ Group =3,
+ Entry =4,
+ FilledGroup =5,
+ DistList =6
+ };
+ AddresseeViewItem( AddresseeViewItem *parent, const KABC::Addressee& addr, int emailIndex = 0 );
+ AddresseeViewItem( KListView *lv, const QString& name, Category cat=Group );
+ AddresseeViewItem( AddresseeViewItem *parent, const QString& name, const KABC::Addressee::List &lst );
+ AddresseeViewItem( AddresseeViewItem *parent, const QString& name );
+ ~AddresseeViewItem();
+
+ KABC::Addressee addressee() const;
+ KABC::Addressee::List addresses() const;
+ Category category() const;
+
+ QString name() const;
+ QString email() const;
+
+ bool matches( const QString& ) const;
+
+ virtual int compare( QListViewItem * i, int col, bool ascending ) const;
+ virtual void setSelected( bool );
+
+ signals:
+ void addressSelected( AddresseeViewItem*, bool );
+
+ private:
+ struct AddresseeViewItemPrivate;
+ AddresseeViewItemPrivate *d;
+ };
+
+ class KDE_EXPORT AddressesDialog : public KDialogBase
+ {
+ Q_OBJECT
+ public:
+ AddressesDialog( QWidget *widget=0, const char *name=0 );
+ ~AddressesDialog();
+
+ /**
+ * Returns the list of picked "To" addresses as a QStringList.
+ */
+ QStringList to() const;
+ /**
+ * Returns the list of picked "CC" addresses as a QStringList.
+ */
+ QStringList cc() const;
+ /**
+ * Returns the list of picked "BCC" addresses as a QStringList.
+ */
+ QStringList bcc() const;
+
+ /**
+ * Returns the list of picked "To" addresses as KABC::Addressee::List.
+ * Note that this doesn't include the distribution lists
+ */
+ KABC::Addressee::List toAddresses() const;
+ /**
+ * Returns the list of picked "To" addresses as KABC::Addressee::List.
+ * Note that this does include the distribution lists
+ * Multiple Addressees are removed
+ */
+ KABC::Addressee::List allToAddressesNoDuplicates() const;
+ /**
+ * Returns the list of picked "CC" addresses as KABC::Addressee::List.
+ * Note that this doesn't include the distribution lists
+ */
+ KABC::Addressee::List ccAddresses() const;
+ /**
+ * Returns the list of picked "BCC" addresses as KABC::Addressee::List.
+ * Note that this doesn't include the distribution lists
+ */
+ KABC::Addressee::List bccAddresses() const;
+
+ /**
+ * Returns the list of picked "To" distribution lists.
+ * This complements @ref toAddresses.
+ */
+ QStringList toDistributionLists() const;
+ /**
+ * Returns the list of picked "CC" distribution lists.
+ * This complements @ref ccAddresses.
+ */
+ QStringList ccDistributionLists() const;
+ /**
+ * Returns the list of picked "BCC" distribution lists.
+ * This complements @ref bccAddresses.
+ */
+ QStringList bccDistributionLists() const;
+
+ public slots:
+ /**
+ * Displays the CC field if @p b is true, else
+ * hides it. By default displays it.
+ */
+ void setShowCC( bool b );
+ /**
+ * Displays the BCC field if @p b is true, else
+ * hides it. By default displays it.
+ */
+ void setShowBCC( bool b );
+ /**
+ * If called adds "Recent Addresses" item to the picker list view,
+ * with the addresses given in @p addr.
+ */
+ void setRecentAddresses( const KABC::Addressee::List& addr );
+ /**
+ * Adds addresses in @p l to the selected "To" group.
+ */
+ void setSelectedTo( const QStringList& l );
+ /**
+ * Adds addresses in @p l to the selected "CC" group.
+ */
+ void setSelectedCC( const QStringList& l );
+ /**
+ * Adds addresses in @p l to the selected "BCC" group.
+ */
+ void setSelectedBCC( const QStringList& l );
+
+ protected slots:
+ void addSelectedTo();
+ void addSelectedCC();
+ void addSelectedBCC();
+
+ void removeEntry();
+ void saveAs();
+ void searchLdap();
+ void ldapSearchResult();
+ void launchAddressBook();
+
+ void filterChanged( const QString & );
+
+ void updateAvailableAddressees();
+ void availableSelectionChanged();
+ void selectedSelectionChanged();
+ void availableAddressSelected( AddresseeViewItem* item, bool selected );
+ void selectedAddressSelected( AddresseeViewItem* item, bool selected );
+
+ protected:
+ AddresseeViewItem* selectedToItem();
+ AddresseeViewItem* selectedCcItem();
+ AddresseeViewItem* selectedBccItem();
+
+ void initConnections();
+ void addDistributionLists();
+ void addAddresseeToAvailable( const KABC::Addressee& addr,
+ AddresseeViewItem* defaultParent=0, bool useCategory=true );
+ void addAddresseeToSelected( const KABC::Addressee& addr,
+ AddresseeViewItem* defaultParent=0 );
+ void addAddresseesToSelected( AddresseeViewItem *parent,
+ const QPtrList<AddresseeViewItem>& addresses );
+ QStringList entryToString( const KABC::Addressee::List& l ) const;
+ KABC::Addressee::List allAddressee( AddresseeViewItem* parent ) const;
+ KABC::Addressee::List allAddressee( KListView* view, bool onlySelected = true ) const;
+ QStringList allDistributionLists( AddresseeViewItem* parent ) const;
+
+ private:
+ // if there's only one group in the available list, open it
+ void checkForSingleAvailableGroup();
+
+ // used to re-show items in the available list
+ // it is recursive, but should only ever recurse once so should be fine
+ void unmapSelectedAddress(AddresseeViewItem* item);
+ void updateRecentAddresses();
+
+ struct AddressesDialogPrivate;
+ AddressesDialogPrivate *d;
+
+ QPtrList<AddresseeViewItem> selectedAvailableAddresses;
+ QPtrList<AddresseeViewItem> selectedSelectedAddresses;
+ QPtrDict<AddresseeViewItem> selectedToAvailableMapping;
+ };
+
+}
+
+#endif /* ADDRESSESDIALOG_H */