21 #include "emoticontexteditselector.h"
24 #include <kemoticonstheme.h>
26 #include <QListWidget>
28 #include <QHBoxLayout>
31 K_GLOBAL_STATIC( KEmoticons, sEmoticons )
33 using namespace KPIMTextEdit;
35 EmoticonTextEditItem::EmoticonTextEditItem(const QString &emoticonText, const QString &pixmapPath, QListWidget *parent)
36 : QListWidgetItem(parent)
39 mPixmapPath = pixmapPath;
40 QPixmap p(mPixmapPath);
44 if (p.width() > 32 || p.height() > 32)
45 p = p.scaled(QSize(32,32), Qt::KeepAspectRatio);
51 QString EmoticonTextEditItem::text()
const
56 QString EmoticonTextEditItem::pixmapPath()
const
61 class EmoticonTextEditSelector::EmoticonTextEditSelectorPrivate
64 EmoticonTextEditSelectorPrivate() {
67 QListWidget *listEmoticon;
71 EmoticonTextEditSelector::EmoticonTextEditSelector( QWidget * parent )
72 :QWidget( parent ), d( new EmoticonTextEditSelectorPrivate() )
74 QHBoxLayout *lay =
new QHBoxLayout(
this);
76 lay->setContentsMargins( 0, 0, 0, 0 );
77 d->listEmoticon =
new QListWidget(
this);
78 lay->addWidget( d->listEmoticon );
79 d->listEmoticon->setViewMode(QListView::IconMode);
80 d->listEmoticon->setSelectionMode(QAbstractItemView::SingleSelection);
81 d->listEmoticon->setMouseTracking(
true);
82 d->listEmoticon->setDragEnabled(
false);
83 connect(d->listEmoticon, SIGNAL(itemEntered(QListWidgetItem*)),
84 this, SLOT(slotMouseOverItem(QListWidgetItem*)));
85 connect(d->listEmoticon, SIGNAL(itemClicked(QListWidgetItem*)),
86 this, SLOT(slotEmoticonClicked(QListWidgetItem*)));
90 EmoticonTextEditSelector::~EmoticonTextEditSelector()
96 void EmoticonTextEditSelector::slotCreateEmoticonList()
98 d->listEmoticon->clear();
99 static QString cachedEmoticonsThemeName;
100 if ( cachedEmoticonsThemeName.isEmpty() ) {
101 cachedEmoticonsThemeName = KEmoticons::currentThemeName();
103 const QHash<QString, QStringList> list = sEmoticons->theme( cachedEmoticonsThemeName ).emoticonsMap();
105 QHash<QString, QStringList>::const_iterator end = list.constEnd();
106 for (QHash<QString, QStringList>::const_iterator it = list.constBegin(); it != end; ++it ) {
107 new EmoticonTextEditItem(it.value().first(), it.key(), d->listEmoticon);
110 d->listEmoticon->setIconSize(QSize(32,32));
114 void EmoticonTextEditSelector::slotMouseOverItem(QListWidgetItem* item)
116 item->setSelected(
true);
117 if (!d->listEmoticon->hasFocus())
118 d->listEmoticon->setFocus();
122 void EmoticonTextEditSelector::slotEmoticonClicked(QListWidgetItem*item)
126 EmoticonTextEditItem *itemEmoticon =
static_cast<EmoticonTextEditItem*
>(item);
128 emit itemSelected ( itemEmoticon->text() );
129 if ( isVisible() && parentWidget() &&
130 parentWidget()->inherits(
"QMenu") )
132 parentWidget()->close();
137 #include "emoticontexteditselector.moc"