mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 03:00:46 +03:00
Add initial read-only emoji support
This commit is contained in:
parent
e680865593
commit
f046dc8ac6
18 changed files with 41 additions and 12 deletions
|
@ -63,6 +63,11 @@ Here is a screen shot to get a feel for the UI, but things will probably change.
|
||||||
|
|
||||||
![nheko](https://dl.dropboxusercontent.com/s/fw94dkpmr7azvmm/nheko.png)
|
![nheko](https://dl.dropboxusercontent.com/s/fw94dkpmr7azvmm/nheko.png)
|
||||||
|
|
||||||
|
### Third party
|
||||||
|
|
||||||
|
- [Emoji One](http://emojione.com)
|
||||||
|
- [Open Sans](https://fonts.google.com/specimen/Open+Sans)
|
||||||
|
|
||||||
|
|
||||||
### License
|
### License
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,8 @@ private:
|
||||||
void generateBody(const QString &userid, const QString &color, const QString &body);
|
void generateBody(const QString &userid, const QString &color, const QString &body);
|
||||||
void generateTimestamp(const QDateTime &time);
|
void generateTimestamp(const QDateTime &time);
|
||||||
|
|
||||||
|
QString replaceEmoji(const QString &body);
|
||||||
|
|
||||||
void setupLayout();
|
void setupLayout();
|
||||||
|
|
||||||
QHBoxLayout *top_layout_;
|
QHBoxLayout *top_layout_;
|
||||||
|
|
BIN
resources/fonts/EmojiOne/emojione-android.ttf
Normal file
BIN
resources/fonts/EmojiOne/emojione-android.ttf
Normal file
Binary file not shown.
|
@ -14,15 +14,17 @@
|
||||||
</qresource>
|
</qresource>
|
||||||
|
|
||||||
<qresource prefix="/fonts">
|
<qresource prefix="/fonts">
|
||||||
<file>fonts/OpenSans-Light.ttf</file>
|
<file>fonts/OpenSans/OpenSans-Light.ttf</file>
|
||||||
<file>fonts/OpenSans-LightItalic.ttf</file>
|
<file>fonts/OpenSans/OpenSans-LightItalic.ttf</file>
|
||||||
<file>fonts/OpenSans-Regular.ttf</file>
|
<file>fonts/OpenSans/OpenSans-Regular.ttf</file>
|
||||||
<file>fonts/OpenSans-Italic.ttf</file>
|
<file>fonts/OpenSans/OpenSans-Italic.ttf</file>
|
||||||
<file>fonts/OpenSans-Bold.ttf</file>
|
<file>fonts/OpenSans/OpenSans-Bold.ttf</file>
|
||||||
<file>fonts/OpenSans-BoldItalic.ttf</file>
|
<file>fonts/OpenSans/OpenSans-BoldItalic.ttf</file>
|
||||||
<file>fonts/OpenSans-Semibold.ttf</file>
|
<file>fonts/OpenSans/OpenSans-Semibold.ttf</file>
|
||||||
<file>fonts/OpenSans-SemiboldItalic.ttf</file>
|
<file>fonts/OpenSans/OpenSans-SemiboldItalic.ttf</file>
|
||||||
<file>fonts/OpenSans-ExtraBold.ttf</file>
|
<file>fonts/OpenSans/OpenSans-ExtraBold.ttf</file>
|
||||||
<file>fonts/OpenSans-ExtraBoldItalic.ttf</file>
|
<file>fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf</file>
|
||||||
|
|
||||||
|
<file>fonts/EmojiOne/emojione-android.ttf</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
|
@ -70,7 +70,7 @@ void HistoryViewItem::generateBody(const QString &body)
|
||||||
" </span>"
|
" </span>"
|
||||||
"</body>"
|
"</body>"
|
||||||
"</html>");
|
"</html>");
|
||||||
content_label_->setText(content.arg(body));
|
content_label_->setText(content.arg(replaceEmoji(body)));
|
||||||
content_label_->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
content_label_->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ void HistoryViewItem::generateBody(const QString &userid, const QString &color,
|
||||||
" </span>"
|
" </span>"
|
||||||
"</body>"
|
"</body>"
|
||||||
"</html>");
|
"</html>");
|
||||||
content_label_->setText(content.arg(color).arg(sender).arg(body));
|
content_label_->setText(content.arg(color).arg(sender).arg(replaceEmoji(body)));
|
||||||
content_label_->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
content_label_->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,23 @@ void HistoryViewItem::setupLayout()
|
||||||
setLayout(top_layout_);
|
setLayout(top_layout_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString HistoryViewItem::replaceEmoji(const QString &body)
|
||||||
|
{
|
||||||
|
QString fmtBody = "";
|
||||||
|
|
||||||
|
for (auto &c : body) {
|
||||||
|
auto code = c.unicode();
|
||||||
|
|
||||||
|
// TODO: A map should be used with the unicode codes supported by emoji one
|
||||||
|
if (code > 127)
|
||||||
|
fmtBody += "<span style=\"font-family: Emoji One; font-size: 16px\">" + QString(c) + "</span>";
|
||||||
|
else
|
||||||
|
fmtBody += c;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmtBody;
|
||||||
|
}
|
||||||
|
|
||||||
HistoryViewItem::~HistoryViewItem()
|
HistoryViewItem::~HistoryViewItem()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
TextInputWidget::TextInputWidget(QWidget *parent)
|
TextInputWidget::TextInputWidget(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
|
setFont(QFont("Emoji One"));
|
||||||
|
|
||||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
setCursor(Qt::ArrowCursor);
|
setCursor(Qt::ArrowCursor);
|
||||||
setStyleSheet("background-color: #f8fbfe; height: 45px;");
|
setStyleSheet("background-color: #f8fbfe; height: 45px;");
|
||||||
|
|
|
@ -36,6 +36,7 @@ int main(int argc, char *argv[])
|
||||||
QFontDatabase::addApplicationFont(":/fonts/OpenSans-SemiboldItalic.ttf");
|
QFontDatabase::addApplicationFont(":/fonts/OpenSans-SemiboldItalic.ttf");
|
||||||
QFontDatabase::addApplicationFont(":/fonts/OpenSans-ExtraBold.ttf");
|
QFontDatabase::addApplicationFont(":/fonts/OpenSans-ExtraBold.ttf");
|
||||||
QFontDatabase::addApplicationFont(":/fonts/OpenSans-ExtraBoldItalic.ttf");
|
QFontDatabase::addApplicationFont(":/fonts/OpenSans-ExtraBoldItalic.ttf");
|
||||||
|
QFontDatabase::addApplicationFont(":/fonts/emojione-android.ttf");
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue