File indexing completed on 2024-05-26 04:46:53
0001 /* 0002 SPDX-FileCopyrightText: 2012-2024 Laurent Montel <montel@kde.org> 0003 based on code from kopete 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 #include "emoticontexteditaction.h" 0008 #include "emoticontexteditselector.h" 0009 0010 #include <KLocalizedString> 0011 #include <QIcon> 0012 #include <QMenu> 0013 0014 #include <QWidgetAction> 0015 0016 using namespace TextEmoticonsWidgets; 0017 0018 class EmoticonTextEditAction::EmoticonTextEditActionPrivate 0019 { 0020 public: 0021 EmoticonTextEditActionPrivate() 0022 : emoticonMenu(new QMenu()) 0023 { 0024 selector = new EmoticonTextEditSelector(emoticonMenu); 0025 auto action = new QWidgetAction(emoticonMenu); 0026 action->setDefaultWidget(selector); 0027 emoticonMenu->addAction(action); 0028 connect(emoticonMenu, &QMenu::aboutToShow, selector, &EmoticonTextEditSelector::loadEmoticons); 0029 } 0030 0031 ~EmoticonTextEditActionPrivate() 0032 { 0033 delete emoticonMenu; 0034 } 0035 0036 void setCustomEmojiSupport(bool b); 0037 [[nodiscard]] bool customEmojiSupport() const; 0038 0039 QMenu *const emoticonMenu; 0040 EmoticonTextEditSelector *selector = nullptr; 0041 }; 0042 0043 void EmoticonTextEditAction::EmoticonTextEditActionPrivate::setCustomEmojiSupport(bool b) 0044 { 0045 selector->setCustomEmojiSupport(b); 0046 } 0047 0048 bool EmoticonTextEditAction::EmoticonTextEditActionPrivate::customEmojiSupport() const 0049 { 0050 return selector->customEmojiSupport(); 0051 } 0052 0053 EmoticonTextEditAction::EmoticonTextEditAction(QObject *parent) 0054 : KActionMenu(i18n("Add Smiley"), parent) 0055 , d(new EmoticonTextEditActionPrivate()) 0056 { 0057 delete menu(); 0058 setMenu(d->emoticonMenu); 0059 setIcon(QIcon::fromTheme(QStringLiteral("face-smile"))); 0060 setPopupMode(QToolButton::InstantPopup); 0061 connect(d->selector, &EmoticonTextEditSelector::insertEmoji, this, &EmoticonTextEditAction::insertEmoticon); 0062 } 0063 0064 EmoticonTextEditAction::~EmoticonTextEditAction() = default; 0065 0066 void EmoticonTextEditAction::setCustomEmojiSupport(bool b) 0067 { 0068 d->setCustomEmojiSupport(b); 0069 } 0070 0071 bool EmoticonTextEditAction::customEmojiSupport() const 0072 { 0073 return d->customEmojiSupport(); 0074 } 0075 0076 #include "moc_emoticontexteditaction.cpp"