コード例 #1
0
ファイル: chattextedit.cpp プロジェクト: 0xaaa/yappari
void ChatTextEdit::openEmojiWidget()
{
    emojiWidget = new SelectEmojiWidget(mainWindow);

    connect(emojiWidget,SIGNAL(emojiSelected(QString)),this,SLOT(addEmoji(QString)));

    isEmojiWidgetOpen = true;

    emojiWidget->show();

    setFocus();
}
コード例 #2
0
ファイル: EmojiWidget.cpp プロジェクト: pljones/JamTaba
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();
}