Skip to content
This repository has been archived by the owner on Apr 29, 2020. It is now read-only.

Commit

Permalink
feat: judge the version.
Browse files Browse the repository at this point in the history
Change-Id: I461fcd3717afe92bd1539e7224a3d7c16929d240
  • Loading branch information
reionwong committed Jan 19, 2018
1 parent 2226f5e commit 5184452
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 4 deletions.
11 changes: 8 additions & 3 deletions deepin-font-installer/singlefilepage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,13 +196,18 @@ void SingleFilePage::updateInfo(DFontInfo *data)
m_closeBtn->hide();

if (data->isInstalled) {
if (data->sysVersion != data->version) {
m_statusLabel->setText(QString(tr("Other version installed: %1")).arg(data->sysVersion));
m_statusLabel->setStyleSheet("QLabel { color: #ff5a5a; }");
} else {
m_statusLabel->setText(tr("Same version installed"));
m_statusLabel->setStyleSheet("QLabel { color: #ff5a5a; }");
}

m_installBtn->hide();
m_removeBtn->show();
m_reinstallBtn->show();
m_viewFileBtn->hide();

m_statusLabel->setText(tr("Same version installed"));
m_statusLabel->setStyleSheet("QLabel { color: #ff5a5a; }");
} else {
m_installBtn->show();
m_removeBtn->hide();
Expand Down
4 changes: 4 additions & 0 deletions deepin-font-installer/translations/deepin-font-installer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,5 +114,9 @@
<source>Removed successfully</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Other version installed: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>
30 changes: 29 additions & 1 deletion libdeepin-font-installer/dfontinfomanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,35 @@ void DFontInfoManager::refreshList()
data.filePath = path;
data.familyName = face->family_name;
data.styleName = face->style_name;
dataList << data;

if (FT_IS_SFNT(face)) {
const int count = FT_Get_Sfnt_Name_Count(face);

for (int i = 0; i < count; ++i) {
FT_SfntName sname;

if (FT_Get_Sfnt_Name(face, i, &sname) != 0) {
continue;
}

// only handle the unicode names for US langid.
if (!(sname.platform_id == TT_PLATFORM_MICROSOFT &&
sname.encoding_id == TT_MS_ID_UNICODE_CS &&
sname.language_id == TT_MS_LANGID_ENGLISH_UNITED_STATES)) {
continue;
}

switch (sname.name_id) {
case TT_NAME_ID_VERSION_STRING:
data.version = g_convert((char *)sname.string,
sname.string_len,
"UTF-8", "UTF-16BE", NULL, NULL, NULL);
break;
}
}
}

dataList << data;
FT_Done_Face(face);
}

Expand Down Expand Up @@ -211,6 +238,7 @@ bool DFontInfoManager::isFontInstalled(DFontInfo *data)

if (item.familyName == data->familyName &&
item.styleName == data->styleName) {
data->sysVersion = item.version;
return true;
}
}
Expand Down
1 change: 1 addition & 0 deletions libdeepin-font-installer/dfontinfomanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ struct DFontInfo
QString version;
QString copyright;
QString description;
QString sysVersion;
bool isInstalled;
};

Expand Down

0 comments on commit 5184452

Please sign in to comment.