Source Code (Use browser search to find items of interest.)
Class Index
kfontmanager'KFontManager (./kdebase/kfontmanager/kfontmanager.h:38)
class KFontManager : public QDialog
{
Q_OBJECT
public:
KFontManager( QWidget *parent,const char* name );
virtual void apply( bool Force = FALSE);
protected slots:
bool writeKDEInstalledFonts();
bool loadKDEInstalledFonts();
void display_selected_example(int);
void display_available_example(int);
void add_slot();
void remove_slot();
void helpselected();
void queryFonts();
void setColors();
protected:
void readSettings();
void writeSettings();
public slots:
void about();
protected:
QPushButton *add, *remove, *help;
QListBox *availableFontsList;
QListBox *selectedFontsList;
QLabel *example_label;
QStrList fontList;
bool changed;
};
kfontmanager'KFontManager::KFontManager() (./kdebase/kfontmanager/kfontmanager.cpp:55)
KFontManager::KFontManager (QWidget * parent, const char *name)
: QDialog (parent, name)
{
QLabel *label;
QVBoxLayout *top = new QVBoxLayout(this,10,10);
QHBoxLayout *hbox = new QHBoxLayout(top);
QVBoxLayout *vbox = new QVBoxLayout(hbox);
label = new QLabel(i18n("Available X11 Fonts"), this);
// label->setAlignment(AlignCenter);
vbox->addWidget(label);
availableFontsList = new QListBox(this);
availableFontsList->setMinimumSize(WIDTH,HEIGHT);
connect(availableFontsList,SIGNAL(highlighted(int)),
this,SLOT(display_available_example(int)));
vbox->addWidget(availableFontsList,1);
vbox = new QVBoxLayout(hbox);
label = new QLabel(i18n("Fonts made available to KDE"), this);
// label->setAlignment(AlignCenter);
vbox->addWidget(label);
selectedFontsList = new QListBox(this);
selectedFontsList->setMinimumSize(WIDTH,HEIGHT);
connect(selectedFontsList,SIGNAL(highlighted(int)),
this,SLOT(display_selected_example(int)));
vbox->addWidget(selectedFontsList,1);
example_label = new QLabel(this);
example_label->setAlignment(AlignCenter);
// example_label->setBackgroundColor(white);
example_label->setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
/* the following example string uses all letters in alphabet */
example_label->setText(i18n("The Quick Brown Fox Jumps Over The Lazy Dog\n"
"AaBbCc123"));
example_label->setMinimumSize(2*WIDTH,40); // fixed size !!
example_label->setMaximumSize(2*WIDTH,40);
hbox = new QHBoxLayout(top);
hbox->addSpacing(10);
hbox->addWidget(example_label);
hbox->addSpacing(10);
hbox = new QHBoxLayout(top);
add = new QPushButton(i18n("Add"), this);
connect(add,SIGNAL(clicked()),this,SLOT(add_slot()));
hbox->addWidget(add);
hbox->addStretch();
remove = new QPushButton(i18n("Remove"), this);
connect(remove,SIGNAL(clicked()),this,SLOT(remove_slot()));
hbox->addWidget(remove);
help = new QPushButton(i18n("Help"), this);
connect(help,SIGNAL(clicked()),SLOT(helpselected()));
hbox->addWidget(help);
connect( parent, SIGNAL( applyButtonPressed() ),
this, SLOT( writeKDEInstalledFonts() ) );
readSettings();
queryFonts();
top->activate();
setColors();
connect(KApplication::kApplication(),SIGNAL(kdisplayPaletteChanged()),
this,SLOT(setColors()));
}
kfontmanager'KFontManager::about() (./kdebase/kfontmanager/kfontmanager.cpp:125)
void KFontManager::about()
{
KFontlist_about(this);
}
kfontmanager'KFontManager::remove_slot() (./kdebase/kfontmanager/kfontmanager.cpp:130)
void KFontManager::remove_slot() {
if(selectedFontsList->currentItem() != -1)
selectedFontsList->removeItem(selectedFontsList->currentItem());
else
QApplication::beep();
}
kfontmanager'KFontManager::add_slot() (./kdebase/kfontmanager/kfontmanager.cpp:137)
void KFontManager::add_slot() {
if(availableFontsList->currentItem() != -1){
QString new_item = availableFontsList->text(availableFontsList->currentItem());
QString string;
for (uint i = 0; i < selectedFontsList->count();i++){
string = selectedFontsList->text(i);
if ( string == new_item){
// already in KDE font list
QApplication::beep();
return;
}
}
selectedFontsList->inSort(new_item);
}
else{
QApplication::beep();
}
}
kfontmanager'KFontManager::helpselected() (./kdebase/kfontmanager/kfontmanager.cpp:164)
void KFontManager::helpselected() {
kapp->invokeHTMLHelp( "kfontmanager/index.html", "" );
}
kfontmanager'KFontManager::apply() (./kdebase/kfontmanager/kfontmanager.cpp:168)
void KFontManager::apply(bool) {
}
kfontmanager'KFontManager::display_available_example() (./kdebase/kfontmanager/kfontmanager.cpp:172)
void KFontManager::display_available_example(int i) {
QString string;
string = availableFontsList->text(i);
QFont fnt(string,14);
KGlobal::charsets()->setQFont(fnt);
example_label->setFont(fnt);
}
kfontmanager'KFontManager::display_selected_example() (./kdebase/kfontmanager/kfontmanager.cpp:182)
void KFontManager::display_selected_example(int i) {
QString string;
string = selectedFontsList->text(i);
QFont fnt(string,14);
KGlobal::charsets()->setQFont(fnt);
example_label->setFont(fnt);
}
kfontmanager'KFontManager::loadKDEInstalledFonts() (./kdebase/kfontmanager/kfontmanager.cpp:191)
bool KFontManager::loadKDEInstalledFonts() {
QString fontfilename;
fontfilename = locate("config", "kdefonts");
QFile fontfile(fontfilename);
if (!fontfile.exists())
return false;
if (!fontfile.open(IO_ReadOnly))
return false;
if (!fontfile.isReadable())
return false;
QTextStream t(&fontfile);
while ( !t.eof() ) {
QString s = t.readLine();
s = s.stripWhiteSpace();
if (!s.isEmpty())
selectedFontsList->insertItem( s );
}
fontfile.close();
selectedFontsList->update();
return true;
}
kfontmanager'KFontManager::writeKDEInstalledFonts() (./kdebase/kfontmanager/kfontmanager.cpp:223)
bool KFontManager::writeKDEInstalledFonts() {
QString fontfilename;
fontfilename = locate("config", "kdefonts");
if (fontfilename.isEmpty())
fontfilename = locateLocal("config", "kdefonts");
QFile fontfile(fontfilename);
if (!fontfile.open(IO_WriteOnly | IO_Truncate)){
KMessageBox::sorry(this,
i18n("Can not create:\n%1\n").arg(fontfilename));
return false;
}
if (!fontfile.isWritable()){
KMessageBox::sorry(this,
i18n("%1 exists but\n"
"is not writeable\n"
"Can't save KDE Fontlist.").arg(fontfilename));
return false;
}
QTextStream t(&fontfile);
int number = selectedFontsList->count();
if( number > 0){
QString fontname;
for(int i = 0; i < number; i++){
fontname = selectedFontsList->text(i);
fontname = fontname.stripWhiteSpace();
if (!fontname.isEmpty())
t << fontname << '\n';
}
}
fontfile.close();
return true;
}
kfontmanager'KFontManager::queryFonts() (./kdebase/kfontmanager/kfontmanager.cpp:267)
void KFontManager::queryFonts() {
int numFonts;
Display *kde_display;
char** fontNames;
char** fontNames_copy;
QString qfontname;
QStrList fontlist(TRUE);
QStrList installedfontlist(TRUE);
kde_display = XOpenDisplay( NULL );
bool have_installed = loadKDEInstalledFonts();
fontNames = XListFonts(kde_display, "*", 32767, &numFonts);
fontNames_copy = fontNames;
for( int k = 0; k < numFonts; k++){
if (**fontNames != '-'){ // font name doesn't start with a dash -- an alias
/*
qfontname = "";
qfontname = *fontNames;
if(fontlist.find(qfontname) == -1)
fontlist.inSort(qfontname);
*/
fontNames ++;
continue;
};
qfontname = *fontNames;
int dash = qfontname.find ('-', 1, TRUE); // find next dash
if (dash == -1) { // No such next dash -- this shouldn't happen.
// let's skip it.
fontNames ++;
continue;
}
// the font family name is between the second and third dash therefore
// let's find the third dash:
int dash_two = qfontname.find ('-', dash + 1 , TRUE);
if (dash == -1) { // No such next dash -- this shouldn't happen.
// let's skip it.
fontNames ++;
continue;
}
// fish the font family name out of the font info string
qfontname = qfontname.mid(dash +1, dash_two - dash -1);
if(fontlist.find(qfontname) == -1)
fontlist.inSort(qfontname);
if(!have_installed){
// we don't have a kdefontlist file yet -- prepare a default list
// of installed fonts
if( !qfontname.contains("open look", TRUE)){
if(qfontname != "nil"){
if(installedfontlist.find(qfontname) == -1)
installedfontlist.inSort(qfontname);
}
}
}
fontNames ++;
}
for(fontlist.first(); fontlist.current(); fontlist.next())
availableFontsList->insertItem(fontlist.current());
if(!have_installed){
for(installedfontlist.first(); installedfontlist.current(); installedfontlist.next())
selectedFontsList->insertItem(installedfontlist.current());
}
availableFontsList->update();
selectedFontsList->update();
XFreeFontNames(fontNames_copy);
XCloseDisplay(kde_display);
}
kfontmanager'KFontManager::readSettings() (./kdebase/kfontmanager/kfontmanager.cpp:361)
void KFontManager::readSettings() {
/* QString str;
config = a->getConfig();
config->setGroup( "Text Font" );
*/
}
kfontmanager'KFontManager::writeSettings() (./kdebase/kfontmanager/kfontmanager.cpp:369)
void KFontManager::writeSettings() {
/*
config = a->getConfig();
config->setGroup( "Text Font" );
config->sync();
*/
}
kfontmanager'KFontManager::setColors() (./kdebase/kfontmanager/kfontmanager.cpp:378)
void KFontManager::setColors() {
/* this is to the the backgound of a widget to white and the
text color to black -- some lables such as the one of the
font manager really shouldn't follow colorschemes The
primary task of those label is to display the text clearly
an visibly and not to look pretty ...*/
QPalette mypalette = (example_label->palette()).copy();
QColorGroup cgrp = mypalette.normal();
QColorGroup ncgrp(black,cgrp.background(),
cgrp.light(),cgrp.dark(),cgrp.mid(),black,white);
mypalette.setNormal(ncgrp);
mypalette.setDisabled(ncgrp);
mypalette.setActive(ncgrp);
example_label->setPalette(mypalette);
example_label->setBackgroundColor(white);
}