contacts_plat/contacts_ui_extensions_api/inc/cntuicontactcardextension.h
changeset 61 d30183af6ca6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/contacts_ui_extensions_api/inc/cntuicontactcardextension.h	Mon Aug 23 16:06:28 2010 +0300
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#ifndef CNTUICONTACTCARDEXT_H
+#define CNTUICONTACTCARDEXT_H
+
+#include <QObject>
+#include <QIcon>
+#include <QString>
+#include <qcontact.h>
+#include <qcontactdetail.h>
+
+QTM_USE_NAMESPACE
+
+
+/**
+ * Represents one extension action.
+ */
+class CntUiContactCardExtAction
+{
+public:
+
+    /// First line of text on the button.
+    virtual QString firstTextLine() const = 0;
+
+    /// Second line of text on the button.
+    virtual QString secondTextLine() const = 0;
+
+    /// Large icon that appears on the left.
+    virtual const QIcon icon() const = 0;
+
+    /**
+     * The position of the action button is set based on detail type.
+     * If the detail is empty (dummy detail) then the button appears at the end.
+     */
+    virtual const QContactDetail& detailUsedForChoosingPosition() const = 0;
+
+protected:
+    virtual ~CntUiContactCardExtAction() {}
+};
+
+
+/**
+ * UI extension class for extending Contact Card and MyCard
+ */
+class CntUiContactCardExtension : public QObject
+{
+public:
+    CntUiContactCardExtension() {}
+
+    /**
+     * Prepare the data that will be queried by other methods.
+     * \param aContact The contact which is being displayed.
+     * \param aMyCard Tells whether the contact is my contact.
+     */
+    virtual void prepare( QContact& aContact, bool aMyCard ) = 0;
+
+    /**
+     * Gives the action count.
+     * The prepare() will be called before this.
+     */
+    virtual int actionCount() const = 0;
+
+    /**
+     * Gives an action.
+     * The prepare() will be called before this.
+     */
+    virtual const CntUiContactCardExtAction& actionAt( int aIndex ) const = 0;
+
+
+    /**
+     * Allows the plugin to handle the short pressing.
+     * \param aIndex The index of the action in the scope of this extension.
+     * Should be implemented synchronously.
+     */
+    virtual void handleShortPress( int aIndex ) = 0;
+
+// TODO Pending UX comments on this.
+//    virtual void handleLongPress( int aIndex ) = 0;
+
+public:
+    /// For extending this interface later on without BC break.
+    virtual void* ContactCardExtensionExtension(
+            int /*aExtensionId*/ ) { return NULL; }
+
+signals:
+
+    /**
+     * Plugin should re-implement this signal and emit it
+     * once extension data changes.
+     * Note that an action should not disappear. It can change, but not disappear.
+     */  
+    void contactCardExtensionDataChanged( QList<int> aChangedActionIndexes );
+
+protected:
+    // prevent deleting by client
+    virtual ~CntUiContactCardExtension() {}
+};
+
+#endif //CNTUICONTACTCARDEXT_H
+