00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "kmconfigfonts.h"
00021
00022
#include <qgroupbox.h>
00023
#include <kpushbutton.h>
00024
#include <qlayout.h>
00025
#include <qheader.h>
00026
#include <qlabel.h>
00027
#include <qcheckbox.h>
00028
#include <qsettings.h>
00029
#include <qwhatsthis.h>
00030
00031
#include <klocale.h>
00032
#include <kconfig.h>
00033
#include <kiconloader.h>
00034
#include <kurlrequester.h>
00035
#include <kfile.h>
00036
#include <klistview.h>
00037
#include <kdialog.h>
00038
00039 KMConfigFonts::KMConfigFonts(
QWidget *parent,
const char *name)
00040 : KMConfigPage(parent, name)
00041 {
00042 setPageName(i18n(
"Fonts"));
00043 setPageHeader(i18n(
"Font Settings"));
00044 setPagePixmap(
"fonts");
00045
00046
QGroupBox *box =
new QGroupBox(0, Qt::Vertical, i18n(
"Fonts Embedding"),
this);
00047 QGroupBox *box2 =
new QGroupBox(0, Qt::Vertical, i18n(
"Fonts Path"),
this);
00048
00049 m_embedfonts =
new QCheckBox(i18n(
"&Embed fonts in PostScript data when printing"), box);
00050 m_fontpath =
new KListView(box2);
00051 m_fontpath->addColumn(
"");
00052 m_fontpath->header()->setStretchEnabled(
true, 0);
00053 m_fontpath->header()->hide();
00054 m_fontpath->setSorting(-1);
00055 m_addpath =
new KURLRequester(box2);
00056 m_addpath->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
00057 m_up =
new KPushButton(KGuiItem(i18n(
"&Up"),
"up"), box2);
00058 m_down =
new KPushButton(KGuiItem(i18n(
"&Down"),
"down"), box2);
00059 m_add =
new KPushButton(KGuiItem(i18n(
"&Add"),
"add"), box2);
00060 m_remove =
new KPushButton(KGuiItem(i18n(
"&Remove"),
"editdelete"), box2);
00061
QLabel *lab0 =
new QLabel(i18n(
"Additional director&y:"), box2);
00062 lab0->setBuddy(m_addpath);
00063
00064
QVBoxLayout *l0 =
new QVBoxLayout(box->layout(), KDialog::spacingHint());
00065 l0->addWidget(m_embedfonts);
00066 QVBoxLayout *l1 =
new QVBoxLayout(box2->layout(), KDialog::spacingHint());
00067 l1->addWidget(m_fontpath);
00068
QHBoxLayout *l2 =
new QHBoxLayout(0, 0, KDialog::spacingHint());
00069 l1->addLayout(l2);
00070 l2->addWidget(m_up);
00071 l2->addWidget(m_down);
00072 l2->addWidget(m_remove);
00073 l1->addSpacing(10);
00074 l1->addWidget(lab0);
00075 l1->addWidget(m_addpath);
00076 QHBoxLayout *l3 =
new QHBoxLayout(0, 0, KDialog::spacingHint());
00077 l1->addLayout(l3);
00078 l3->addStretch(1);
00079 l3->addWidget(m_add);
00080 QVBoxLayout *l4 =
new QVBoxLayout(
this, 0, KDialog::spacingHint());
00081 l4->addWidget(box);
00082 l4->addWidget(box2);
00083
00084 QWhatsThis::add(m_embedfonts,
00085 i18n(
"These options will automatically put fonts in the PostScript file "
00086
"which are not present on the printer. Font embedding usually produces better print results "
00087
"(closer to what you see on the screen), but larger print data as well."));
00088 QWhatsThis::add(m_fontpath,
00089 i18n(
"When using font embedding you can select additional directories where "
00090
"KDE should search for embeddable font files. By default, the X server "
00091
"font path is used, so adding those directories is not needed. The default "
00092
"search path should be sufficient in most cases."));
00093
00094 connect(m_remove, SIGNAL(clicked()), SLOT(slotRemove()));
00095 connect(m_add, SIGNAL(clicked()), SLOT(slotAdd()));
00096 connect(m_up, SIGNAL(clicked()), SLOT(slotUp()));
00097 connect(m_down, SIGNAL(clicked()), SLOT(slotDown()));
00098 connect(m_fontpath, SIGNAL(selectionChanged()), SLOT(slotSelected()));
00099 connect(m_addpath, SIGNAL(textChanged(
const QString&)), SLOT(slotTextChanged(
const QString&)));
00100 m_add->setEnabled(
false);
00101 m_remove->setEnabled(
false);
00102 m_up->setEnabled(
false);
00103 m_down->setEnabled(
false);
00104 }
00105
00106
void KMConfigFonts::loadConfig(KConfig *)
00107 {
00108
QSettings settings;
00109 m_embedfonts->setChecked(settings.readBoolEntry(
"/qt/embedFonts",
true));
00110
QStringList paths = settings.readListEntry(
"/qt/fontPath",
':');
00111
QListViewItem *item(0);
00112
for (QStringList::ConstIterator it=paths.begin(); it!=paths.end(); ++it)
00113 item =
new QListViewItem(m_fontpath, item, *it);
00114 }
00115
00116
void KMConfigFonts::saveConfig(KConfig *)
00117 {
00118
QSettings settings;
00119 settings.writeEntry(
"/qt/embedFonts", m_embedfonts->isChecked());
00120
QStringList l;
00121
QListViewItem *item = m_fontpath->firstChild();
00122
while (item)
00123 {
00124 l << item->text(0);
00125 item = item->nextSibling();
00126 }
00127 settings.writeEntry(
"/qt/fontPath", l,
':');
00128 }
00129
00130
void KMConfigFonts::slotSelected()
00131 {
00132
QListViewItem *item = m_fontpath->selectedItem();
00133 m_remove->setEnabled(item);
00134 m_up->setEnabled(item && item->itemAbove());
00135 m_down->setEnabled(item && item->itemBelow());
00136 }
00137
00138
void KMConfigFonts::slotAdd()
00139 {
00140
if (m_addpath->url().isEmpty())
00141
return;
00142
QListViewItem *lastItem(m_fontpath->firstChild());
00143
while (lastItem && lastItem->nextSibling())
00144 lastItem = lastItem->nextSibling();
00145
QListViewItem *item =
new QListViewItem(m_fontpath, lastItem, m_addpath->url());
00146 m_fontpath->setSelected(item,
true);
00147 }
00148
00149
void KMConfigFonts::slotRemove()
00150 {
00151
delete m_fontpath->selectedItem();
00152
if (m_fontpath->currentItem())
00153 m_fontpath->setSelected(m_fontpath->currentItem(),
true);
00154 slotSelected();
00155 }
00156
00157
void KMConfigFonts::slotUp()
00158 {
00159
QListViewItem *citem = m_fontpath->selectedItem(), *nitem = 0;
00160
if (!citem || !citem->itemAbove())
00161
return;
00162 nitem =
new QListViewItem(m_fontpath, citem->itemAbove()->itemAbove(), citem->text(0));
00163
delete citem;
00164 m_fontpath->setSelected(nitem,
true);
00165 }
00166
00167
void KMConfigFonts::slotDown()
00168 {
00169
QListViewItem *citem = m_fontpath->selectedItem(), *nitem = 0;
00170
if (!citem || !citem->itemBelow())
00171
return;
00172 nitem =
new QListViewItem(m_fontpath, citem->itemBelow(), citem->text(0));
00173
delete citem;
00174 m_fontpath->setSelected(nitem,
true);
00175 }
00176
00177
void KMConfigFonts::slotTextChanged(
const QString& t)
00178 {
00179 m_add->setEnabled(!t.isEmpty());
00180 }
00181
00182
#include "kmconfigfonts.moc"