void ChatTextEdit::openEmojiWidget() { emojiWidget = new SelectEmojiWidget(mainWindow); connect(emojiWidget,SIGNAL(emojiSelected(QString)),this,SLOT(addEmoji(QString))); isEmojiWidgetOpen = true; emojiWidget->show(); setFocus(); }
void EmojiWidget::showCategory(const QString &category) { if (scrollArea->widget()->layout()) { auto gridLayout = qobject_cast<QGridLayout *>(scrollArea->widget()->layout()); clearLayout(gridLayout); delete gridLayout; } scrollArea->verticalScrollBar()->setValue(0); // scrool to top auto gridLayout = new QGridLayout(); gridLayout->setContentsMargins(0, 0, 0, 0); gridLayout->setHorizontalSpacing(0); gridLayout->setVerticalSpacing(0); scrollArea->widget()->setLayout(gridLayout); int maxCollumns = (width() - scrollArea->verticalScrollBar()->width())/BUTTONS_SIZE; QList<Emoji> emojis = emojiManager->getByCategory(category); uint index = 0; for (const Emoji &emoji : emojis) { auto button = new QToolButton(); button->setIcon(QPixmap(emojiManager->getEmojiIconUrl(emoji))); button->setIconSize(QSize(EmojiManager::ICONS_SIZE, EmojiManager::ICONS_SIZE)); button->setMinimumSize(QSize(EmojiWidget::BUTTONS_SIZE, EmojiWidget::BUTTONS_SIZE)); QString toolTip = QString(emoji.name).replace(QChar('_'), QString(" ")); button->setToolTip(toolTip); connect(button, &QToolButton::clicked, [=](){ emojiManager->addRecent(emoji.unifiedCode); emit emojiSelected(emoji.unifiedCode); recentButton->setEnabled(emojiManager->hasRecents()); }); uint row = index / maxCollumns; uint collumn = index % maxCollumns; gridLayout->addWidget(button, row, collumn, 1, 1, Qt::AlignTop); index++; } scrollArea->widget()->updateGeometry(); scrollArea->updateGeometry(); }