Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(revision 1174367)
+++ CMakeLists.txt	(working copy)
@@ -1337,6 +1337,8 @@
         ${CMAKE_CURRENT_SOURCE_DIR}/digikam/searchmodificationhelper.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/digikam/welcomepageview.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/digikam/databaseguierrorhandler.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/digikam/peopletagedit.cpp
+        
        )
 
     SET(libdigikamhelpers_SRCS
Index: digikam/tagslineeditoverlay.cpp
===================================================================
--- digikam/tagslineeditoverlay.cpp	(revision 1174367)
+++ digikam/tagslineeditoverlay.cpp	(working copy)
@@ -34,13 +34,14 @@
 #include <klocale.h>
 #include <kglobalsettings.h>
 #include <kdebug.h>
+#include <kpushbutton.h>
 
 // Local includes
 
 #include "imagedelegate.h"
 #include "imagemodel.h"
 #include "imagecategorizedview.h"
-#include "addtagslineedit.h"
+#include "peopletagedit.h"
 
 namespace Digikam
 {
@@ -48,31 +49,44 @@
 TagsLineEditOverlay::TagsLineEditOverlay(QObject* parent)
                    : AbstractWidgetDelegateOverlay(parent)
 {
+	kDebug() << "AAA";
 }
 
-AddTagsLineEdit* TagsLineEditOverlay::addTagsLineEdit() const
+
+TagsLineEditOverlay::~TagsLineEditOverlay()
 {
-    return static_cast<AddTagsLineEdit*>(m_widget);
+	kDebug() << "AAA";
 }
 
+KPushButton* TagsLineEditOverlay::editPeopleTagBtn() const
+{
+	kDebug() << "AAA" << static_cast<KPushButton*>(m_widget);
+    return static_cast<KPushButton*>(m_widget);
+}
+
 QWidget* TagsLineEditOverlay::createWidget()
 {
+	kDebug() << "AAA";
     //const bool animate = KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects;
-    AddTagsLineEdit* lineEdit = new AddTagsLineEdit(parentWidget());
-    lineEdit->setClickMessage("Type the name of this person");
-    lineEdit->setReadOnly(false);
+	KPushButton* editPeopleTagBtn = new KPushButton(KGuiItem(i18n("&New Album"), "albumfolder-new",
+	                                                 i18n("Create new album")), parentWidget());
 
-    return lineEdit;
+	 //AddTagsLineEdit* lineEdit = new AddTagsLineEdit(parentWidget());
+    //lineEdit->setClickMessage("Type the name of this person");
+    //lineEdit->setReadOnly(false);
+
+    return editPeopleTagBtn;
 }
 
 void TagsLineEditOverlay::setActive(bool active)
 {
+	kDebug() << "AAA" << active;
     AbstractWidgetDelegateOverlay::setActive(active);
 
     if (active)
     {
-        connect(addTagsLineEdit(), SIGNAL(taggingActionActivated(TaggingAction)),
-                this, SLOT(slotTagChanged()));
+        connect(editPeopleTagBtn(), SIGNAL(clicked(bool)),
+                this, SLOT(slotPeopleTagBtnClicked(bool)));
 
         if (view()->model())
             connect(view()->model(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
@@ -85,22 +99,28 @@
         if (view() && view()->model())
             disconnect(view()->model(), 0, this, 0);
     }
+	kDebug() << "AAA";
 }
 
 void TagsLineEditOverlay::visualChange()
 {
+	kDebug() << "AAA";
     if (m_widget && m_widget->isVisible())
         updatePosition();
+	kDebug() << "AAA";
 }
 
 void TagsLineEditOverlay::hide()
 {
+	kDebug() << "AAA";
     //delegate()->setRatingEdited(QModelIndex());
     AbstractWidgetDelegateOverlay::hide();
+	kDebug() << "AAA";
 }
 
 void TagsLineEditOverlay::updatePosition()
 {
+	kDebug() << "AAA";
     if (!m_index.isValid())
         return;
 
@@ -108,9 +128,9 @@
     kDebug() << "Rect is : " << thumbrect;
     QRect rect      = thumbrect;
 
-    if (rect.width() > addTagsLineEdit()->width() )
+    if (rect.width() > editPeopleTagBtn()->width() )
     {
-        int offset = (rect.width() - addTagsLineEdit()->width()) / 2;
+        int offset = (rect.width() - editPeopleTagBtn()->width()) / 2;
         rect.adjust(offset, 0, -offset, 0);
     }
     QRect visualRect = m_view->visualRect(m_index);
@@ -118,10 +138,18 @@
 
     m_widget->setFixedSize(rect.width() + 1, rect.height() + 1);
     m_widget->move(rect.topLeft());
+	kDebug() << "AAA";
 }
 
+void TagsLineEditOverlay::slotPeopleTagBtnClicked(bool /*checked*/)
+{
+	kDebug() << "AAA";
+	PeopleTagEditDialog();
+}
+#if 0
 void TagsLineEditOverlay::updateTag()
 {
+	kDebug() << "AAA";
     if (!m_index.isValid())
         return;
     ImageInfo info = ImageModel::retrieveImageInfo(m_index);
@@ -130,28 +158,32 @@
 
 void TagsLineEditOverlay::slotTagChanged(int tagId)
 {
+	kDebug() << "AAA";
     if (m_widget && m_widget->isVisible() && m_index.isValid())
         emit this->tagEdited(m_index, tagId);
 }
 
 void TagsLineEditOverlay::slotDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight)
 {
+	kDebug() << "AAA";
     if (m_widget && m_widget->isVisible() && QItemSelectionRange(topLeft, bottomRight).contains(m_index))
         updateTag();
 }
 
+#endif
 void TagsLineEditOverlay::slotEntered(const QModelIndex& index)
 {
+	kDebug() << "AAA";
     AbstractWidgetDelegateOverlay::slotEntered(index);
 
     // see bug 228810, this is a small workaround
     if (m_widget && m_widget->isVisible() && m_index.isValid() && index == m_index)
-        addTagsLineEdit()->setVisible(true);
+    	editPeopleTagBtn()->setVisible(true);
 
     m_index = index;
 
     updatePosition();
-    updateTag();
+    //updateTag();
 
     //delegate()->setRatingEdited(m_index);
     view()->update(m_index);
Index: digikam/tagslineeditoverlay.h
===================================================================
--- digikam/tagslineeditoverlay.h	(revision 1174367)
+++ digikam/tagslineeditoverlay.h	(working copy)
@@ -28,6 +28,8 @@
 
 #include <QAbstractItemView>
 
+#include <kpushbutton.h>
+
 // Local includes
 
 #include "imagedelegateoverlay.h"
@@ -35,7 +37,6 @@
 namespace Digikam
 {
 
-class AddTagsLineEdit;
 
 class TagsLineEditOverlay : public AbstractWidgetDelegateOverlay
 {
@@ -44,29 +45,30 @@
 public:
 
     TagsLineEditOverlay(QObject* parent);
+    ~TagsLineEditOverlay();
+    KPushButton* editPeopleTagBtn() const;
 
-    AddTagsLineEdit* addTagsLineEdit() const;
-
 Q_SIGNALS:
 
     void tagEdited(const QModelIndex& index, int rating);
 
+public Q_SLOTS:
+	void slotPeopleTagBtnClicked(bool /*checked*/);
+
 protected Q_SLOTS:
 
-    void slotTagChanged(int);
-    void slotDataChanged(const QModelIndex&, const QModelIndex&);
-
+	virtual void slotEntered(const QModelIndex& index);
 protected:
 
     virtual QWidget* createWidget();
     virtual void setActive(bool);
     virtual void visualChange();
-    virtual void slotEntered(const QModelIndex& index);
+
     virtual void hide();
 
     void updatePosition();
-    void updateTag();
 
+
 protected:
 
     QPersistentModelIndex m_index;
