diff --git a/kcms/kfontinst/apps/Installer.cpp b/kcms/kfontinst/apps/Installer.cpp --- a/kcms/kfontinst/apps/Installer.cpp +++ b/kcms/kfontinst/apps/Installer.cpp @@ -127,6 +127,8 @@ { QApplication app(argc, argv); + app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); + KLocalizedString::setApplicationDomain(KFI_CATALOGUE); KAboutData aboutData("kfontinst", i18n("Font Installer"), WORKSPACE_VERSION_STRING, i18n("Simple font installer"), KAboutLicense::GPL, i18n("(C) Craig Drummond, 2007")); diff --git a/kcms/kfontinst/kcmfontinst/16-actions-disablefont.png b/kcms/kfontinst/kcmfontinst/16-actions-font-disable.png rename from kcms/kfontinst/kcmfontinst/16-actions-disablefont.png rename to kcms/kfontinst/kcmfontinst/16-actions-font-disable.png index 9d3ffb5abf55bb212ce5de1b64eaf7888d34620b..9d3ffb5abf55bb212ce5de1b64eaf7888d34620b GIT binary patch literal 731 zc$@*-0wn#3P)N?=jT^GqLfFG-SdT%m5Q*jJLC6;wg95>)(OyCf3NN(Dz_qRGjX*TYOs{gqc{>w) z7|hZB@V$KZ`~S}QpTh-7l1@Dg!@QlGoV0iPPQWR0xm?y-tv1E7>}BYnjsT0rA|pvM zlt?6G#bVKTW`J6)_HrEetyC((z`($@GXZQiTQ|1;AfM0Qr)j#OR4V(=1nBAMd0MGd zUgdJRKiJ84ilQz!9FD&K0@&?#L%m)fEfflG0EKhdB?tl#G;|U`e!|_$a=H8{o6Smq zQYaMrV`F1Sv0m^ze*;&yqSNV$?Z+~_fVS|VOBBT@R(~f50*s7|^e!@tgO9~XesdGL zH5xF_&o`82^Bo*)>{x_}i3tkL&oKL~X0y4Z(P*Cd=jN_|nw}=>J3DYY9ESeUQTRMN zD;Kx6*3#)TeJsM^;o)MV(RiOqrC2~^G8rcq4)A?S-3bg1?PM|;1~u7nGDq9B9RoJPW=;u!QkDG!C-CAV2}<-QaZ3$ zq_4}%VjvKBjMk%~?KO6m*XzBh)oPc_Mx&}E2>kl``er;HUqhb=sDGHUL2@^HES&%V N002ovPDHLkV1nqwO$Pt~ literal 731 zc$@*-0wn#3P)N?=jT^GqLfFG-SdT%m5Q*jJLC6;wg95>)(OyCf3NN(Dz_qRGjX*TYOs{gqc{>w) z7|hZB@V$KZ`~S}QpTh-7l1@Dg!@QlGoV0iPPQWR0xm?y-tv1E7>}BYnjsT0rA|pvM zlt?6G#bVKTW`J6)_HrEetyC((z`($@GXZQiTQ|1;AfM0Qr)j#OR4V(=1nBAMd0MGd zUgdJRKiJ84ilQz!9FD&K0@&?#L%m)fEfflG0EKhdB?tl#G;|U`e!|_$a=H8{o6Smq zQYaMrV`F1Sv0m^ze*;&yqSNV$?Z+~_fVS|VOBBT@R(~f50*s7|^e!@tgO9~XesdGL zH5xF_&o`82^Bo*)>{x_}i3tkL&oKL~X0y4Z(P*Cd=jN_|nw}=>J3DYY9ESeUQTRMN zD;Kx6*3#)TeJsM^;o)MV(RiOqrC2~^G8rcq4)A?S-3bg1?PM|;1~u7nGDq9B9RoJPW=;u!QkDG!C-CAV2}<-QaZ3$ zq_4}%VjvKBjMk%~?KO6m*XzBh)oPc_Mx&}E2>kl``er;HUqhb=sDGHUL2@^HES&%V N002ovPDHLkV1nqwO$Pt~ diff --git a/kcms/kfontinst/kcmfontinst/16-actions-enablefont.png b/kcms/kfontinst/kcmfontinst/16-actions-font-enable.png rename from kcms/kfontinst/kcmfontinst/16-actions-enablefont.png rename to kcms/kfontinst/kcmfontinst/16-actions-font-enable.png index 50ba0b6da345dbbfddaee8bb28f7eab3b1877741..50ba0b6da345dbbfddaee8bb28f7eab3b1877741 GIT binary patch literal 736 zc$@*?0w4W}P)z z!9l(z!9pex!5*R@*o%W6VjI$g*n;*_A=Dl;=%En8`4S4@Lrol;4u;bxr(XYE|J=?M zlpdP21Lxt~-}!#dKQ4%(*wtrdX5LLtPn(WMYBiI~Jh7zkh+} z`IS^Eb%>qp(KLP1Y&M_zFM!EpIxh&qWG0h&CB?Xh7)g?Vps~O6h!x@rIwkuD)LkeP z9wib9Q3~X8`8LOK(pb-u$>cRW-E;K^^$j1mpw_H``-dBL@;l($_ko&G!`kE;B)=z_ z))nk_JB`&}p!i!T6#CT$U^lT!t^!M=OVG#mfiLF+hGk&&>MGDR8gQZU768Q_6!)Mv z4F8~4Vn`gz+D}#udjyzt?Qq-yu5rn5D4(mXjI&Y zZiw-CTtsMbadGhpN~NOEI%79;I2_kiD%E41PRHi+`8}`K``PdJzeQaY(Eb3uGf@ET SszoCJ0000z z!9l(z!9pex!5*R@*o%W6VjI$g*n;*_A=Dl;=%En8`4S4@Lrol;4u;bxr(XYE|J=?M zlpdP21Lxt~-}!#dKQ4%(*wtrdX5LLtPn(WMYBiI~Jh7zkh+} z`IS^Eb%>qp(KLP1Y&M_zFM!EpIxh&qWG0h&CB?Xh7)g?Vps~O6h!x@rIwkuD)LkeP z9wib9Q3~X8`8LOK(pb-u$>cRW-E;K^^$j1mpw_H``-dBL@;l($_ko&G!`kE;B)=z_ z))nk_JB`&}p!i!T6#CT$U^lT!t^!M=OVG#mfiLF+hGk&&>MGDR8gQZU768Q_6!)Mv z4F8~4Vn`gz+D}#udjyzt?Qq-yu5rn5D4(mXjI&Y zZiw-CTtsMbadGhpN~NOEI%79;I2_kiD%E41PRHi+`8}`K``PdJzeQaY(Eb3uGf@ET SszoCJ0000_o_jVrgc3;P7w{m)~=q|9JspENU+;Ej?dZS$QX#eQewi$;rtG27`OwDdViHEI}@p|0s%L4Z&P7 zF){N}sT36Z8BcFOK6>Vzxd7!_@Zz@anQ zVzDT;1Xe1Q-!CmK-Rtk~w})dZD=SYKW01*YlGxbTJ^#CSRInV5+9>!%DrCA zi@SH>>Fk7Br^Bw}$Dzv0n@}i~2Qo4;UcFHYf>se|Ck?`1bg6>A6{M-M{@S&3V+{?O zj$_9#VzokVG(wo0gQL0{&#J2vf`P!3@$qpEVT)WGMMXvGJi0wQJNt{s_`txxH@3z` z)(EgBiG)41S{cd2d_Er=ymgEHER(UGt5;b|OUs{|E+MM;*A(>9*&G?C#q)XK!2={x zmLHkTcy#(SChp${>5Cmlj=*^NGRB*mVam--rx(iCNl{!}e29Qw61b+XuWuzBcRHQi zbB`xwi9jL9zSdT3-@hNv%F8j?)3c`kw!?>^q;cm&aR-2%|AEWO$^-(okUyvGbq5h< zG#c6DGk^jq@<+y>FMd04u`|t-Q9hYIBrDPzhc}Q U@@Y$1qW}N^07*qoM6N<$g8i!XdH?_b literal 1050 zc$@(m1m*jQP)_o_jVrgc3;P7w{m)~=q|9JspENU+;Ej?dZS$QX#eQewi$;rtG27`OwDdViHEI}@p|0s%L4Z&P7 zF){N}sT36Z8BcFOK6>Vzxd7!_@Zz@anQ zVzDT;1Xe1Q-!CmK-Rtk~w})dZD=SYKW01*YlGxbTJ^#CSRInV5+9>!%DrCA zi@SH>>Fk7Br^Bw}$Dzv0n@}i~2Qo4;UcFHYf>se|Ck?`1bg6>A6{M-M{@S&3V+{?O zj$_9#VzokVG(wo0gQL0{&#J2vf`P!3@$qpEVT)WGMMXvGJi0wQJNt{s_`txxH@3z` z)(EgBiG)41S{cd2d_Er=ymgEHER(UGt5;b|OUs{|E+MM;*A(>9*&G?C#q)XK!2={x zmLHkTcy#(SChp${>5Cmlj=*^NGRB*mVam--rx(iCNl{!}e29Qw61b+XuWuzBcRHQi zbB`xwi9jL9zSdT3-@hNv%F8j?)3c`kw!?>^q;cm&aR-2%|AEWO$^-(okUyvGbq5h< zG#c6DGk^jq@<+y>FMd04u`|t-Q9hYIBrDPzhc}Q U@@Y$1qW}N^07*qoM6N<$g8i!XdH?_b diff --git a/kcms/kfontinst/kcmfontinst/22-actions-enablefont.png b/kcms/kfontinst/kcmfontinst/22-actions-font-enable.png rename from kcms/kfontinst/kcmfontinst/22-actions-enablefont.png rename to kcms/kfontinst/kcmfontinst/22-actions-font-enable.png index 8b4aa914528c09fa73f893e43c5ea7b151303c8b..8b4aa914528c09fa73f893e43c5ea7b151303c8b GIT binary patch literal 1042 zc$@(e1nv8YP)ppYuaU6oZy-%+6Y>~ zFMiNT@n-9gkLoI4wUv|Al4EU{JTbyj%fbCMPEckx1n0Ps+Hkuuv?ON`H5|-K_+3 zCM6|#6A}_YvD{Ar(-gGQ_19)+XKj=*mztXDqz{1VeefEWmX@Ydc9&=pE=FV2v>5{P zXO7WmlpP41n3&k^_xqnsPEOjRu}~=F;D=u#k%*F$lk>34m`>(2`4e)M-J@Ye48zo| zudja<8>c2t84Ly#6&3Mw{nY7nj)%kHM>?JE7Qxg29+7`W{s%)D?1nOA!+}6RPIY}q zS@S?>wOYB=YCTKirl2N5BoYZuT8ufy-kupf;|X#>-Fu9AcgDQ1kwC}jA>5&l%IG&= zQ>MMW{hUgrN|DKAQJvrsE&}UYYdS&G-y^PbKXCVVfUByi+?q)F3YE4M)*`B2H z)gCYK6+ane$}%)*nt()na7&&AdZk{d`Nqb^41j+HFa>%EXd-t5$fFf`SFhLac(T;E zdn+p|{K`a2W($gs76US%F}o3_&rO1c8jilcz99f_Kqky_JZ7<2oD~%nTDe>fZ-N&c zs~xzOaSdXTSeWzq`T4&pD=U8_p8cc#L1@FB>h0|v+T7gaBz_65D6Syr4`OR;D>5}T z_1I)G{TYSEWE{WM)YN>hR;vx!+1Y8UtE-EHgM+UA{{Dx=amDKX2k++QGHWY1;s5{u M07*qoM6N<$g5`AKivR!s literal 1042 zc$@(e1nv8YP)ppYuaU6oZy-%+6Y>~ zFMiNT@n-9gkLoI4wUv|Al4EU{JTbyj%fbCMPEckx1n0Ps+Hkuuv?ON`H5|-K_+3 zCM6|#6A}_YvD{Ar(-gGQ_19)+XKj=*mztXDqz{1VeefEWmX@Ydc9&=pE=FV2v>5{P zXO7WmlpP41n3&k^_xqnsPEOjRu}~=F;D=u#k%*F$lk>34m`>(2`4e)M-J@Ye48zo| zudja<8>c2t84Ly#6&3Mw{nY7nj)%kHM>?JE7Qxg29+7`W{s%)D?1nOA!+}6RPIY}q zS@S?>wOYB=YCTKirl2N5BoYZuT8ufy-kupf;|X#>-Fu9AcgDQ1kwC}jA>5&l%IG&= zQ>MMW{hUgrN|DKAQJvrsE&}UYYdS&G-y^PbKXCVVfUByi+?q)F3YE4M)*`B2H z)gCYK6+ane$}%)*nt()na7&&AdZk{d`Nqb^41j+HFa>%EXd-t5$fFf`SFhLac(T;E zdn+p|{K`a2W($gs76US%F}o3_&rO1c8jilcz99f_Kqky_JZ7<2oD~%nTDe>fZ-N&c zs~xzOaSdXTSeWzq`T4&pD=U8_p8cc#L1@FB>h0|v+T7gaBz_65D6Syr4`OR;D>5}T z_1I)G{TYSEWE{WM)YN>hR;vx!+1Y8UtE-EHgM+UA{{Dx=amDKX2k++QGHWY1;s5{u M07*qoM6N<$g5`AKivR!s diff --git a/kcms/kfontinst/kcmfontinst/CMakeLists.txt b/kcms/kfontinst/kcmfontinst/CMakeLists.txt --- a/kcms/kfontinst/kcmfontinst/CMakeLists.txt +++ b/kcms/kfontinst/kcmfontinst/CMakeLists.txt @@ -24,12 +24,12 @@ ecm_install_icons( ICONS 16-actions-addfont.png - 16-actions-disablefont.png - 16-actions-enablefont.png + 16-actions-font-disable.png + 16-actions-font-enable.png 16-actions-fontstatus.png 22-actions-addfont.png - 22-actions-disablefont.png - 22-actions-enablefont.png + 22-actions-font-disable.png + 22-actions-font-enable.png 22-actions-fontstatus.png 16-actions-addfont.png DESTINATION diff --git a/kcms/kfontinst/kcmfontinst/FontFilter.h b/kcms/kfontinst/kcmfontinst/FontFilter.h --- a/kcms/kfontinst/kcmfontinst/FontFilter.h +++ b/kcms/kfontinst/kcmfontinst/FontFilter.h @@ -5,6 +5,7 @@ * KFontInst - KDE Font Installer * * Copyright 2003-2007 Craig Drummond + * 2019 Guo Yunhe * * ---- * @@ -24,18 +25,18 @@ * Boston, MA 02110-1301, USA. */ -#include -#include +#include +#include #include - -class QLabel; -class QMenu; -class QActionGroup; +#include +#include +#include +#include namespace KFI { -class CFontFilter : public KLineEdit +class CFontFilter : public QWidget { Q_OBJECT @@ -60,34 +61,35 @@ void setFoundries(const QSet ¤tFoundries); - QSize sizeHint() const override; - Q_SIGNALS: void criteriaChanged(int crit, qulonglong ws, const QStringList &ft); + void queryChanged(QString text); private Q_SLOTS: void filterChanged(); + void textChanged(const QString &text); void ftChanged(const QString &ft); void wsChanged(const QString &writingSystemName); void foundryChanged(const QString &foundry); private: - void addAction(ECriteria crit, const QString &text, bool on); - void resizeEvent(QResizeEvent *ev) override; - void mousePressEvent(QMouseEvent *ev) override; + void addAction(ECriteria crit, bool on); void setCriteria(ECriteria crit); private: - QLabel *itsMenuButton; - QMenu *itsMenu; + QPushButton *m_menuButton; + QHBoxLayout *m_layout; + QMenu *m_menu; + QLineEdit *m_lineEdit; ECriteria itsCurrentCriteria; QFontDatabase::WritingSystem itsCurrentWs; QStringList itsCurrentFileTypes; - QPixmap itsPixmaps[NUM_CRIT]; + QIcon itsIcons[NUM_CRIT]; + QString itsTexts[NUM_CRIT]; QAction *itsActions[NUM_CRIT]; QActionGroup *itsActionGroup; }; diff --git a/kcms/kfontinst/kcmfontinst/FontFilter.cpp b/kcms/kfontinst/kcmfontinst/FontFilter.cpp --- a/kcms/kfontinst/kcmfontinst/FontFilter.cpp +++ b/kcms/kfontinst/kcmfontinst/FontFilter.cpp @@ -2,6 +2,7 @@ * KFontInst - KDE Font Installer * * Copyright 2003-2007 Craig Drummond + * 2019 Guo Yunhe * * ---- * @@ -27,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -114,52 +114,69 @@ } CFontFilter::CFontFilter(QWidget *parent) - : KLineEdit(parent) + : QWidget(parent) { - setClearButtonShown(true); - setTrapReturnKey(true); - - itsMenuButton = new QLabel(this); - itsMenuButton->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); - itsMenuButton->setCursor(Qt::ArrowCursor); - itsMenuButton->setToolTip(i18n("Set Criteria")); - - itsMenu=new QMenu(this); - itsPixmaps[CRIT_FAMILY]=SmallIcon("draw-text"); - itsPixmaps[CRIT_STYLE]=SmallIcon("format-text-bold"); - itsPixmaps[CRIT_FOUNDRY]=SmallIcon("user-identity"); - itsPixmaps[CRIT_FONTCONFIG]=SmallIcon("system-search"); - itsPixmaps[CRIT_FILETYPE]=SmallIcon("preferences-desktop-font-installer"); - itsPixmaps[CRIT_FILENAME]=SmallIcon("application-x-font-type1"); - itsPixmaps[CRIT_LOCATION]=SmallIcon("folder"); - itsPixmaps[CRIT_WS]=SmallIcon("character-set"); + itsIcons[CRIT_FAMILY] = QIcon::fromTheme("draw-text"); + itsTexts[CRIT_FAMILY] = i18n("Family"); + itsIcons[CRIT_STYLE] = QIcon::fromTheme("format-text-bold"); + itsTexts[CRIT_STYLE] = i18n("Style"); + itsIcons[CRIT_FOUNDRY] = QIcon::fromTheme("user-identity"); + itsTexts[CRIT_FOUNDRY] = i18n("Foundry"); + itsIcons[CRIT_FONTCONFIG] = QIcon::fromTheme("system-search"); + itsTexts[CRIT_FONTCONFIG] = i18n("FontConfig Match"); + itsIcons[CRIT_FILETYPE] = QIcon::fromTheme("preferences-desktop-font-installer"); + itsTexts[CRIT_FILETYPE] = i18n("File Type"); + itsIcons[CRIT_FILENAME] = QIcon::fromTheme("application-x-font-type1"); + itsTexts[CRIT_FILENAME] = i18n("File Name"); + itsIcons[CRIT_LOCATION] = QIcon::fromTheme("folder"); + itsTexts[CRIT_LOCATION] = i18n("File Location"); + itsIcons[CRIT_WS] = QIcon::fromTheme("character-set"); + itsTexts[CRIT_WS] = i18n("Writing System"); + + m_layout = new QHBoxLayout(this); + setLayout(m_layout); + m_layout->setContentsMargins(0, 0, 0, 0); + + m_lineEdit = new QLineEdit(this); + m_lineEdit->setClearButtonEnabled(true); + m_layout->addWidget(m_lineEdit); + + m_menuButton = new QPushButton(this); + m_menuButton->setIcon(QIcon::fromTheme("view-filter")); + m_menuButton->setText(i18n("Set Criteria")); + m_layout->addWidget(m_menuButton); + + connect(m_lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChanged(const QString &))); + + m_menu=new QMenu(this); + m_menuButton->setMenu(m_menu); itsActionGroup=new QActionGroup(this); - addAction(CRIT_FAMILY, i18n("Family"), true); - addAction(CRIT_STYLE, i18n("Style"), false); + addAction(CRIT_FAMILY, true); + addAction(CRIT_STYLE, false); - KSelectAction *foundryMenu=new KSelectAction(QIcon(itsPixmaps[CRIT_FOUNDRY]), i18n("Foundry"), this); + KSelectAction *foundryMenu=new KSelectAction(itsIcons[CRIT_FOUNDRY], itsTexts[CRIT_FOUNDRY], this); itsActions[CRIT_FOUNDRY]=foundryMenu; - itsMenu->addAction(itsActions[CRIT_FOUNDRY]); + m_menu->addAction(itsActions[CRIT_FOUNDRY]); foundryMenu->setData((int)CRIT_FOUNDRY); foundryMenu->setVisible(false); connect(foundryMenu, SIGNAL(triggered(QString)), SLOT(foundryChanged(QString))); - addAction(CRIT_FONTCONFIG, i18n("FontConfig Match"), false); - - KSelectAction *ftMenu=new KSelectAction(QIcon(itsPixmaps[CRIT_FILETYPE]), i18n("File Type"), this); + addAction(CRIT_FONTCONFIG, false); + + KSelectAction *ftMenu=new KSelectAction(itsIcons[CRIT_FILETYPE], itsTexts[CRIT_FILETYPE], this); itsActions[CRIT_FILETYPE]=ftMenu; - itsMenu->addAction(itsActions[CRIT_FILETYPE]); + m_menu->addAction(itsActions[CRIT_FILETYPE]); ftMenu->setData((int)CRIT_FILETYPE); - + QStringList::ConstIterator it(CFontList::fontMimeTypes.constBegin()), end(CFontList::fontMimeTypes.constEnd()); QMimeDatabase db; for(; it!=end; ++it) if((*it)!="application/vnd.kde.fontspackage") { QMimeType mime = db.mimeTypeForName(*it); - + KToggleAction *act=new KToggleAction(QIcon::fromTheme(mime.iconName()), mime.comment(), this); ftMenu->addAction(act); @@ -175,12 +192,12 @@ connect(ftMenu, SIGNAL(triggered(QString)), SLOT(ftChanged(QString))); itsCurrentFileTypes.clear(); - addAction(CRIT_FILENAME, i18n("File Name"), false); - addAction(CRIT_LOCATION, i18n("File Location"), false); + addAction(CRIT_FILENAME, false); + addAction(CRIT_LOCATION, false); - KSelectAction *wsMenu=new KSelectAction(QIcon(itsPixmaps[CRIT_WS]), i18n("Writing System"), this); + KSelectAction *wsMenu=new KSelectAction(itsIcons[CRIT_WS], itsTexts[CRIT_WS], this); itsActions[CRIT_WS]=wsMenu; - itsMenu->addAction(itsActions[CRIT_WS]); + m_menu->addAction(itsActions[CRIT_WS]); wsMenu->setData((int)CRIT_WS); itsCurrentWs=QFontDatabase::Any; @@ -198,7 +215,7 @@ connect(wsMenu, SIGNAL(triggered(QString)), SLOT(wsChanged(QString))); setCriteria(CRIT_FAMILY); - setStyle(new CFontFilterStyle(this, itsMenuButton->width())); + setStyle(new CFontFilterStyle(this, m_menuButton->width())); } void CFontFilter::setFoundries(const QSet ¤tFoundries) @@ -252,16 +269,11 @@ else ((KSelectAction *)itsActions[CRIT_FOUNDRY])->setCurrentItem(0); } - + itsActions[CRIT_FOUNDRY]->setVisible(((KSelectAction *)itsActions[CRIT_FOUNDRY])->actions().count()); } } -QSize CFontFilter::sizeHint() const -{ - return QSize(fontMetrics().width(placeholderText())+56, KLineEdit::sizeHint().height()); -} - void CFontFilter::filterChanged() { QAction *act(itsActionGroup->checkedAction()); @@ -275,13 +287,13 @@ deselectCurrent((KSelectAction *)itsActions[CRIT_FOUNDRY]); deselectCurrent((KSelectAction *)itsActions[CRIT_FILETYPE]); deselectCurrent((KSelectAction *)itsActions[CRIT_WS]); - setText(QString()); + m_lineEdit->setText(QString()); itsCurrentWs=QFontDatabase::Any; itsCurrentFileTypes.clear(); setCriteria(crit); - setPlaceholderText(i18n("Filter by %1...", act->text())); - setReadOnly(false); + m_lineEdit->setPlaceholderText(i18n("Filter by %1...", act->text())); + m_lineEdit->setReadOnly(false); } } } @@ -297,10 +309,10 @@ if(act) itsCurrentFileTypes=act->data().toStringList(); itsCurrentCriteria=CRIT_FILETYPE; - setReadOnly(true); + m_lineEdit->setReadOnly(true); setCriteria(itsCurrentCriteria); - setText(ft); - setPlaceholderText(text()); + m_lineEdit->setText(ft); + m_lineEdit->setPlaceholderText(m_lineEdit->text()); } void CFontFilter::wsChanged(const QString &writingSystemName) @@ -314,10 +326,10 @@ if(act) itsCurrentWs=(QFontDatabase::WritingSystem)act->data().toInt(); itsCurrentCriteria=CRIT_WS; - setReadOnly(true); + m_lineEdit->setReadOnly(true); setCriteria(itsCurrentCriteria); - setText(writingSystemName); - setPlaceholderText(text()); + m_lineEdit->setText(writingSystemName); + m_lineEdit->setPlaceholderText(m_lineEdit->text()); } void CFontFilter::foundryChanged(const QString &foundry) @@ -327,65 +339,31 @@ deselectCurrent(itsActionGroup); itsCurrentCriteria=CRIT_FOUNDRY; - setReadOnly(true); - setText(foundry); - setPlaceholderText(text()); + m_lineEdit->setReadOnly(true); + m_lineEdit->setText(foundry); + m_lineEdit->setPlaceholderText(m_lineEdit->text()); setCriteria(itsCurrentCriteria); } -void CFontFilter::addAction(ECriteria crit, const QString &text, bool on) +void CFontFilter::textChanged(const QString &text) { - itsActions[crit]=new KToggleAction(QIcon(itsPixmaps[crit]), - text, this); - itsMenu->addAction(itsActions[crit]); + emit queryChanged(text); +} + +void CFontFilter::addAction(ECriteria crit, bool on) +{ + itsActions[crit]=new KToggleAction(itsIcons[crit], itsTexts[crit], this); + m_menu->addAction(itsActions[crit]); itsActionGroup->addAction(itsActions[crit]); itsActions[crit]->setData((int)crit); itsActions[crit]->setChecked(on); if(on) - setPlaceholderText(i18n("Filter by %1...", text)); + m_lineEdit->setPlaceholderText(i18n("Filter by %1...", itsTexts[crit])); connect(itsActions[crit], SIGNAL(toggled(bool)), SLOT(filterChanged())); } -void CFontFilter::resizeEvent(QResizeEvent *ev) -{ - KLineEdit::resizeEvent(ev); - - int frameWidth(style()->pixelMetric(QStyle::PM_DefaultFrameWidth)), - y((height()-itsMenuButton->height())/2); - - if (qApp->isLeftToRight()) - itsMenuButton->move(frameWidth + 2, y); - else - itsMenuButton->move(size().width() - frameWidth - itsMenuButton->width() - 2, y); -} - -void CFontFilter::mousePressEvent(QMouseEvent *ev) -{ - if(Qt::LeftButton==ev->button() && itsMenuButton->underMouse()) - itsMenu->popup(mapToGlobal(QPoint(0, height())), nullptr); - else - KLineEdit::mousePressEvent(ev); -} - void CFontFilter::setCriteria(ECriteria crit) { - QPixmap arrowmap(itsPixmaps[crit].width()+constArrowPad, itsPixmaps[crit].height()); - - QColor bgnd(palette().color(QPalette::Active, QPalette::Base)); - bgnd.setAlphaF(0.0); - arrowmap.fill(bgnd); - - QPainter p(&arrowmap); - - p.drawPixmap(0, 0, itsPixmaps[crit]); - QStyleOption opt; - opt.state = QStyle::State_Enabled; - opt.rect = QRect(arrowmap.width()-(constArrowPad+1), arrowmap.height()-(constArrowPad+1), constArrowPad, constArrowPad); - style()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, &p, itsMenuButton); - p.end(); - - itsMenuButton->setPixmap(arrowmap); - itsMenuButton->resize(arrowmap.width(), arrowmap.height()); itsCurrentCriteria=crit; emit criteriaChanged(crit, ((qulonglong)1) << (int)itsCurrentWs, itsCurrentFileTypes); diff --git a/kcms/kfontinst/kcmfontinst/FontList.cpp b/kcms/kfontinst/kcmfontinst/FontList.cpp --- a/kcms/kfontinst/kcmfontinst/FontList.cpp +++ b/kcms/kfontinst/kcmfontinst/FontList.cpp @@ -614,7 +614,7 @@ break; // case Qt::DecorationRole: // if(COL_STATUS==section) -// return SmallIcon("fontstatus"); +// return QIcon::fromTheme("fontstatus"); // break; case Qt::TextAlignmentRole: return QVariant(Qt::AlignLeft | Qt::AlignVCenter); @@ -815,7 +815,7 @@ void CFontList::addFonts(const FamilyCont &families, bool sys) { // bool emitLayout=!itsSlowUpdates || itsFamilies.isEmpty(); -// +// // if(emitLayout) // emit layoutAboutToBeChanged(); @@ -1093,20 +1093,20 @@ switch(fam->status()) { case CFamilyItem::PARTIAL: - return SmallIcon("dialog-ok", 0, KIconLoader::DisabledState); + return QIcon::fromTheme("dialog-ok"); case CFamilyItem::ENABLED: - return SmallIcon("dialog-ok"); + return QIcon::fromTheme("dialog-ok"); case CFamilyItem::DISABLED: - return SmallIcon("dialog-cancel"); + return QIcon::fromTheme("dialog-cancel"); } break; default: break; } } else if(COL_STATUS==index.column()) - return SmallIcon( (static_cast(index.internalPointer()))->isEnabled() - ? "dialog-ok" : "dialog-cancel", 10); + return QIcon::fromTheme( (static_cast(index.internalPointer()))->isEnabled() + ? "dialog-ok" : "dialog-cancel"); break; case Qt::SizeHintRole: if(mi->isFamily()) { @@ -1179,7 +1179,7 @@ for(; it!=end && !fontMatch; ++it) { QStringList::ConstIterator mime(itsFilterTypes.constBegin()); - + for(; mime!=mimeEnd; ++mime) if(Misc::checkExt((*it).path(), *mime)) fontMatch=true; @@ -1411,9 +1411,9 @@ itsDeleteAct=itsMenu->addAction(QIcon::fromTheme("edit-delete"), i18n("Delete"), this, SIGNAL(del())); itsMenu->addSeparator(); - itsEnableAct=itsMenu->addAction(QIcon::fromTheme("enablefont"), i18n("Enable"), + itsEnableAct=itsMenu->addAction(QIcon::fromTheme("font-enable"), i18n("Enable"), this, SIGNAL(enable())); - itsDisableAct=itsMenu->addAction(QIcon::fromTheme("disablefont"), i18n("Disable"), + itsDisableAct=itsMenu->addAction(QIcon::fromTheme("font-disable"), i18n("Disable"), this, SIGNAL(disable())); if(!Misc::app(KFI_VIEWER).isEmpty()) itsMenu->addSeparator(); diff --git a/kcms/kfontinst/kcmfontinst/GroupList.cpp b/kcms/kfontinst/kcmfontinst/GroupList.cpp --- a/kcms/kfontinst/kcmfontinst/GroupList.cpp +++ b/kcms/kfontinst/kcmfontinst/GroupList.cpp @@ -298,38 +298,38 @@ switch(grp->type()) { case CGroupListItem::ALL: // Removing from a group - return SmallIcon("list-remove"); + return QIcon::fromTheme("list-remove"); case CGroupListItem::PERSONAL: // Copying/moving case CGroupListItem::SYSTEM: // Copying/moving - return SmallIcon(Qt::LeftToRight==QApplication::layoutDirection() + return QIcon::fromTheme(Qt::LeftToRight==QApplication::layoutDirection() ? "go-next" : "go-previous"); case CGroupListItem::CUSTOM: // Adding to a group - return SmallIcon("list-add"); + return QIcon::fromTheme("list-add"); default: break; } else switch(grp->type()) { case CGroupListItem::ALL: - return SmallIcon("font"); + return QIcon::fromTheme("font"); case CGroupListItem::PERSONAL: - return SmallIcon("user-identity"); + return QIcon::fromTheme("user-identity"); case CGroupListItem::SYSTEM: - return SmallIcon("computer"); + return QIcon::fromTheme("computer"); case CGroupListItem::UNCLASSIFIED: - return SmallIcon("fontstatus"); + return QIcon::fromTheme("fontstatus"); case CGroupListItem::CUSTOM: if(0==grp->families().count()) - return SmallIcon("image-missing"); + return QIcon::fromTheme("image-missing"); switch(grp->status()) { case CFamilyItem::PARTIAL: - return SmallIcon("dialog-ok", 0, KIconLoader::DisabledState); + return QIcon::fromTheme("dialog-ok"); case CFamilyItem::ENABLED: - return SmallIcon("dialog-ok"); + return QIcon::fromTheme("dialog-ok"); case CFamilyItem::DISABLED: - return SmallIcon("dialog-cancel"); + return QIcon::fromTheme("dialog-cancel"); } break; } @@ -578,7 +578,7 @@ { itsModified=true; itsGroups.removeAll(grp); - + int stdGroups=1 +// All (itsSpecialGroups[CGroupListItem::SYSTEM] ? 2 : 0)+ // Personal, System 1; // Unclassified @@ -760,7 +760,7 @@ if(grp && grp->isUnclassified()) opt.rect.adjust(0, 0, 0, -1); - + QStyledItemDelegate::paint(painter, opt, idx); if(grp && grp->isUnclassified()) @@ -787,7 +787,7 @@ return Qt::Key_Tab==event->key() || Qt::Key_Backtab==event->key() || Qt::Key_Enter==event->key() || Qt::Key_Return==event->key(); } - + bool eventFilter(QObject *editor, QEvent *event) override { if(editor && event && QEvent::KeyPress==event->type() && isCloseEvent(static_cast(event)) && @@ -805,7 +805,7 @@ return false; } }; - + CGroupListView::CGroupListView(QWidget *parent, CGroupList *model) : QTreeView(parent) { @@ -827,14 +827,14 @@ itsDeleteAct=itsMenu->addAction(QIcon::fromTheme("list-remove"), i18n("Remove"), this, SIGNAL(del())); itsMenu->addSeparator(); - itsEnableAct=itsMenu->addAction(QIcon::fromTheme("enablefont"), i18n("Enable"), + itsEnableAct=itsMenu->addAction(QIcon::fromTheme("font-enable"), i18n("Enable"), this, SIGNAL(enable())); - itsDisableAct=itsMenu->addAction(QIcon::fromTheme("disablefont"), i18n("Disable"), + itsDisableAct=itsMenu->addAction(QIcon::fromTheme("font-disable"), i18n("Disable"), this, SIGNAL(disable())); itsMenu->addSeparator(); itsRenameAct=itsMenu->addAction(QIcon::fromTheme("edit-rename"), i18n("Rename..."), this, SLOT(rename())); - + if(!Misc::app(KFI_PRINTER).isEmpty()) { itsMenu->addSeparator(); diff --git a/kcms/kfontinst/kcmfontinst/KCmFontInst.h b/kcms/kfontinst/kcmfontinst/KCmFontInst.h --- a/kcms/kfontinst/kcmfontinst/KCmFontInst.h +++ b/kcms/kfontinst/kcmfontinst/KCmFontInst.h @@ -119,7 +119,8 @@ *itsDisableGroupControl, *itsAddFontControl, *itsGetNewFontsControl, - *itsDeleteFontControl; + *itsDeleteFontControl, + *itsScanDuplicateFontsControl; CFontFilter *itsFilter; QString itsLastStatusBarMsg; KIO::Job *itsJob; @@ -132,7 +133,6 @@ CJobRunner *itsRunner; QMenu *itsPreviewMenu, *itsPreviewListMenu; - QAction *duplicateFontsAct; QWidget *itsPreviewWidget; bool itsPreviewHidden; }; diff --git a/kcms/kfontinst/kcmfontinst/KCmFontInst.cpp b/kcms/kfontinst/kcmfontinst/KCmFontInst.cpp --- a/kcms/kfontinst/kcmfontinst/KCmFontInst.cpp +++ b/kcms/kfontinst/kcmfontinst/KCmFontInst.cpp @@ -157,7 +157,7 @@ public: CProgressBar(QWidget *p, int h) : QProgressBar(p), itsHeight((int)(h*0.6)) - { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } + { } ~CProgressBar() override { } @@ -193,36 +193,25 @@ KConfigGroup cg(&itsConfig, CFG_GROUP); itsGroupSplitter=new QSplitter(this); - itsGroupSplitter->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + itsGroupSplitter->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); QWidget *groupWidget=new QWidget(itsGroupSplitter), *fontWidget=new QWidget(itsGroupSplitter); itsPreviewSplitter=new QSplitter(fontWidget); - itsPreviewSplitter->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + itsPreviewSplitter->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); - QWidget *toolbarWidget=new QWidget(this), - *fontControlWidget=new QWidget(fontWidget); - CToolBar *toolbar=new CToolBar(toolbarWidget); + QWidget *fontControlWidget=new QWidget(fontWidget); QGridLayout *groupsLayout=new QGridLayout(groupWidget); QBoxLayout *mainLayout=new QBoxLayout(QBoxLayout::TopToBottom, this), - *toolbarLayout=new QBoxLayout(QBoxLayout::LeftToRight, toolbarWidget), *fontsLayout=new QBoxLayout(QBoxLayout::TopToBottom, fontWidget), *fontControlLayout=new QBoxLayout(QBoxLayout::LeftToRight, fontControlWidget); - toolbarLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setContentsMargins(0, 0, 0, 0); groupsLayout->setContentsMargins(0, 0, 0, 0); fontsLayout->setContentsMargins(0, 0, 0, 0); fontControlLayout->setContentsMargins(0, 0, 0, 0); - // Toolbar... - duplicateFontsAct=new QAction(QIcon::fromTheme("system-search"), i18n("Scan for Duplicate Fonts..."), this); -// validateFontsAct=new QAction(QIcon::fromTheme("checkmark"), i18n("Validate Fonts..."), this); - - toolbar->addAction(duplicateFontsAct); -// toolbar->addAction(validateFontsAct); - toolbar->setToolButtonStyle(Qt::ToolButtonFollowStyle); - itsFilter=new CFontFilter(toolbarWidget); + itsFilter=new CFontFilter(this); // Details - Groups... itsGroupList=new CGroupList(groupWidget); @@ -236,11 +225,11 @@ i18n("Remove Group...")), groupWidget); - itsEnableGroupControl=new CPushButton(KGuiItem(QString(), "enablefont", + itsEnableGroupControl=new CPushButton(KGuiItem(QString(), "font-enable", i18n("Enable Fonts in Group...")), groupWidget); - itsDisableGroupControl=new CPushButton(KGuiItem(QString(), "disablefont", + itsDisableGroupControl=new CPushButton(KGuiItem(QString(), "font-disable", i18n("Disable Fonts in Group...")), groupWidget); @@ -256,7 +245,7 @@ QBoxLayout *previewWidgetLayout = new QBoxLayout(QBoxLayout::TopToBottom, itsPreviewWidget); previewWidgetLayout->setContentsMargins(0, 0, 0, 0); previewWidgetLayout->setSpacing(0); - + // Preview QFrame *previewFrame=new QFrame(itsPreviewWidget); QBoxLayout *previewFrameLayout=new QBoxLayout(QBoxLayout::LeftToRight, previewFrame); @@ -284,6 +273,10 @@ itsFontListView=new CFontListView(itsPreviewSplitter, itsFontList); itsFontListView->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + itsScanDuplicateFontsControl=new CPushButton(KGuiItem(i18n("Find Duplicates..."), "edit-duplicate", + i18n("Scan for Duplicate Fonts...")), + fontControlWidget); + itsAddFontControl=new CPushButton(KGuiItem(i18n("Install from File..."), "document-import", i18n("Install fonts from a local file")), fontControlWidget); @@ -298,22 +291,23 @@ itsPreviewSplitter->addWidget(itsPreviewWidget); itsPreviewSplitter->setCollapsible(1, true); - itsStatusLabel = new QLabel(fontControlWidget); + QWidget *statusRow = new QWidget(this); + QBoxLayout *statusRowLayout=new QBoxLayout(QBoxLayout::LeftToRight, statusRow); + itsStatusLabel = new QLabel(statusRow); itsStatusLabel->setAlignment(Qt::AlignVCenter|Qt::AlignRight); - itsListingProgress=new CProgressBar(fontControlWidget, itsStatusLabel->height()); + itsListingProgress=new CProgressBar(statusRow, itsStatusLabel->height()); itsListingProgress->setRange(0, 100); + statusRowLayout->addWidget(itsListingProgress); + statusRowLayout->addWidget(itsStatusLabel); // Layout widgets... - toolbarLayout->addWidget(toolbar); - toolbarLayout->addWidget(itsFilter); - mainLayout->addWidget(toolbarWidget); + mainLayout->addWidget(itsFilter); mainLayout->addWidget(itsGroupSplitter); + mainLayout->addWidget(statusRow); fontControlLayout->addWidget(itsDeleteFontControl); - fontControlLayout->addWidget(itsStatusLabel); - fontControlLayout->addItem(new QSpacerItem(0, itsListingProgress->height()+4, - QSizePolicy::Fixed, QSizePolicy::Fixed)); - fontControlLayout->addWidget(itsListingProgress); + fontControlLayout->addStretch(); + fontControlLayout->addWidget(itsScanDuplicateFontsControl); fontControlLayout->addWidget(itsAddFontControl); fontControlLayout->addWidget(itsGetNewFontsControl); @@ -362,8 +356,8 @@ connect(prevSel, SIGNAL(range(QList)), itsPreview, SLOT(setUnicodeRange(QList))); connect(changeTextAct, SIGNAL(triggered(bool)), SLOT(changeText())); - connect(itsFilter, SIGNAL(textChanged(QString)), itsFontListView, SLOT(filterText(QString))); - connect(itsFilter, SIGNAL(criteriaChanged(int,qulonglong,QStringList)), + connect(itsFilter, SIGNAL(queryChanged(QString)), itsFontListView, SLOT(filterText(QString))); + connect(itsFilter, SIGNAL(criteriaChanged(int,qulonglong,QStringList)), itsFontListView, SLOT(filterCriteria(int,qulonglong,QStringList))); connect(itsGroupListView, SIGNAL(del()), SLOT(removeGroup())); connect(itsGroupListView, SIGNAL(print()), SLOT(printGroup())); @@ -394,7 +388,7 @@ connect(itsAddFontControl, SIGNAL(clicked()), SLOT(addFonts())); connect(itsGetNewFontsControl, SIGNAL(clicked()), SLOT(downloadFonts())); connect(itsDeleteFontControl, SIGNAL(clicked()), SLOT(deleteFonts())); - connect(duplicateFontsAct, SIGNAL(triggered(bool)), SLOT(duplicateFonts())); + connect(itsScanDuplicateFontsControl, SIGNAL(clicked()), SLOT(duplicateFonts())); //connect(validateFontsAct, SIGNAL(triggered(bool)), SLOT(validateFonts())); connect(itsPreview, SIGNAL(customContextMenuRequested(QPoint)), SLOT(previewMenu(QPoint))); connect(itsPreviewList, SIGNAL(showMenu(QPoint)), SLOT(previewMenu(QPoint))); @@ -1128,7 +1122,7 @@ itsDeletedFonts.clear(); } } - + void CKCmFontInst::selectGroup(CGroupListItem::EType grp) { QModelIndex current(itsGroupListView->currentIndex()); @@ -1207,8 +1201,8 @@ "contained within group \'%2\'?

", fonts.first(), grp), enable ? i18n("Enable Font") : i18n("Disable Font"), - enable ? KGuiItem(i18n("Enable"), "enablefont", i18n("Enable Font")) - : KGuiItem(i18n("Disable"), "disablefont", i18n("Disable Font"))); + enable ? KGuiItem(i18n("Enable"), "font-enable", i18n("Enable Font")) + : KGuiItem(i18n("Disable"), "font-disable", i18n("Disable Font"))); break; default: doIt = KMessageBox::Continue==KMessageBox::warningContinueCancelList(this, @@ -1231,8 +1225,8 @@ urls.count(), grp), fonts, enable ? i18n("Enable Fonts") : i18n("Disable Fonts"), - enable ? KGuiItem(i18n("Enable"), "enablefont", i18n("Enable Fonts")) - : KGuiItem(i18n("Disable"), "disablefont", i18n("Disable Fonts"))); + enable ? KGuiItem(i18n("Enable"), "font-enable", i18n("Enable Fonts")) + : KGuiItem(i18n("Disable"), "font-disable", i18n("Disable Fonts"))); } if(doIt) diff --git a/kcms/kfontinst/viewpart/FontPreview.cpp b/kcms/kfontinst/viewpart/FontPreview.cpp --- a/kcms/kfontinst/viewpart/FontPreview.cpp +++ b/kcms/kfontinst/viewpart/FontPreview.cpp @@ -128,9 +128,9 @@ if(abs(width()-itsLastWidth)>constStepSize || abs(height()-itsLastHeight)>constStepSize) showFont(); else - paint.drawImage(QPoint(constBorder, constBorder), itsImage, - QRect(0, 0, width()-(constBorder*2) * itsImage.devicePixelRatioF(), - height()-(constBorder*2) * itsImage.devicePixelRatioF())); + paint.drawImage(QPointF(constBorder, constBorder), itsImage, + QRectF(0, 0, (width()-(constBorder*2)) * itsImage.devicePixelRatioF(), + (height()-(constBorder*2)) * itsImage.devicePixelRatioF())); } }