Source Code (Use browser search to find items of interest.)
Class Index
amor'AmorDialog (./kdetoys/amor/amordialog.h:25)
class AmorDialog : public QDialog
{
Q_OBJECT
public:
AmorDialog();
virtual ~AmorDialog();
signals:
//-----------------------------------------------------------------------
//
// The configuration has changed in some way.
//
void changed();
//-----------------------------------------------------------------------
//
// The animation offset has been changed.
//
void offsetChanged(int);
protected slots:
void slotHighlighted(int);
void slotOnTop(bool);
void slotRandomTips(bool);
void slotOffset(int);
void slotOk();
void slotCancel();
protected:
void readThemes();
void addTheme(QString path, QString file);
protected:
QListBox *mThemeListBox;
QMultiLineEdit *mAboutEdit;
QStrList mThemes;
QStrList mThemeAbout;
AmorConfig mConfig;
};
//---------------------------------------------------------------------------
//
// AmorListBoxItem implements a list box items for selection of themes
//
amor'AmorDialog::AmorDialog() (./kdetoys/amor/amordialog.cpp:31)
AmorDialog::AmorDialog()
: QDialog()
{
mConfig.read();
QVBoxLayout *layout = new QVBoxLayout(this, 15);
QHBoxLayout *hb = new QHBoxLayout();
layout->addLayout(hb, 1);
// Theme list
QVBoxLayout *themeBox = new QVBoxLayout();
hb->addLayout(themeBox, 1);
QLabel *label = new QLabel(i18n("Theme:"), this);
label->setFixedHeight(label->sizeHint().height());
themeBox->addWidget(label);
mThemeListBox = new QListBox(this);
connect(mThemeListBox,SIGNAL(highlighted(int)),SLOT(slotHighlighted(int)));
mThemeListBox->setMinimumSize(200, 70);
themeBox->addWidget(mThemeListBox, 2);
mAboutEdit = new QMultiLineEdit(this);
mAboutEdit->setReadOnly(true);
mAboutEdit->setMinimumHeight(40);
themeBox->addWidget(mAboutEdit, 1);
// Animation offset
QVBoxLayout *offsetBox = new QVBoxLayout();
hb->addLayout(offsetBox);
label = new QLabel(i18n("Offset:"), this);
label->setFixedSize(label->sizeHint());
offsetBox->addWidget(label);
QSlider *slider = new QSlider(-40, 40, 5, mConfig.mOffset,
QSlider::Vertical, this);
connect(slider, SIGNAL(valueChanged(int)), SLOT(slotOffset(int)));
slider->setFixedWidth(slider->sizeHint().width());
offsetBox->addWidget(slider);
// Always on top
QCheckBox *checkBox = new QCheckBox(i18n("Always on top"), this);
connect(checkBox, SIGNAL(toggled(bool)), SLOT(slotOnTop(bool)));
checkBox->setFixedHeight(checkBox->sizeHint().height());
checkBox->setChecked(mConfig.mOnTop);
layout->addWidget(checkBox);
checkBox = new QCheckBox(i18n("Show random tips"), this);
connect(checkBox, SIGNAL(toggled(bool)), SLOT(slotRandomTips(bool)));
checkBox->setFixedHeight(checkBox->sizeHint().height());
checkBox->setChecked(mConfig.mTips);
layout->addWidget(checkBox);
// OK/Cancel
hb = new QHBoxLayout();
layout->addLayout(hb);
QPushButton *button = new QPushButton(i18n("&OK"), this);
connect(button, SIGNAL(clicked()), SLOT(slotOk()));
button->setFixedSize(button->sizeHint());
hb->addWidget(button);
hb->addStretch(1);
button = new QPushButton(i18n("&Cancel"), this);
connect(button, SIGNAL(clicked()), SLOT(slotCancel()));
button->setFixedSize(button->sizeHint());
hb->addWidget(button);
layout->activate();
readThemes();
resize( 400, 300 );
}
//---------------------------------------------------------------------------
//
// Destructor
//
amor'AmorDialog::~AmorDialog() (./kdetoys/amor/amordialog.cpp:113)
AmorDialog::~AmorDialog()
{
}
//---------------------------------------------------------------------------
//
// Get list of all themes
//
amor'AmorDialog::readThemes() (./kdetoys/amor/amordialog.cpp:121)
void AmorDialog::readThemes()
{
#if QT_VERSION >= 199
QStringList dirs(KGlobal::dirs()->resourceDirs("appdata"));
for (QStringList::ConstIterator it1 = dirs.end();
it1 != dirs.begin();)
{
it1--;
QDir dir(*it1, "*rc");
if (dir.isReadable())
{
QStringList list = dir.entryList();
for (QStringList::ConstIterator it2 = list.begin(); it2 != list.end();
it2++)
{
addTheme(*it1, *it2);
}
}
}
#else
// read global themes
QString path = KApplication::localkdedir().copy();
path += "/share/apps/amor";
QDir dir(path, "*rc");
if (dir.isReadable())
{
const QStrList *list = dir.entryList();
QStrListIterator it( *list );
for (; it.current(); ++it)
{
addTheme(path, it.current());
}
}
// read local themes
path = KApplication::kde_datadir().copy();
path += "/amor";
dir.setPath(path);
if (dir.isReadable())
{
const QStrList *list = dir.entryList();
QStrListIterator it( *list );
for (; it.current(); ++it)
{
addTheme(path, it.current());
}
}
#endif
}
//---------------------------------------------------------------------------
//
// Add a single theme to the list
//
amor'AmorDialog::addTheme() (./kdetoys/amor/amordialog.cpp:179)
void AmorDialog::addTheme(QString path, QString file)
{
KSimpleConfig config(path + "/" + file, true);
config.setGroup("Config");
QString pixmapPath = config.readEntry("PixmapPath");
if (pixmapPath.isEmpty())
{
return;
}
if (pixmapPath[0] != '/')
{
// relative to config file.
pixmapPath = path + "/" + pixmapPath;
}
QString description = config.readEntry("Description");
QString about = config.readEntry("About", " ");
QString pixmapName = config.readEntry("Icon");
pixmapPath += "/";
pixmapPath += pixmapName;
QPixmap pixmap(pixmapPath);
AmorListBoxItem *item = new AmorListBoxItem(description, pixmap);
mThemeListBox->insertItem(item);
mThemes.append(file);
mThemeAbout.append(about);
if (mConfig.mTheme == file)
{
mThemeListBox->setSelected(mThemeListBox->count()-1, true);
}
}
//---------------------------------------------------------------------------
//
// User highlighted a theme
//
amor'AmorDialog::slotHighlighted() (./kdetoys/amor/amordialog.cpp:221)
void AmorDialog::slotHighlighted(int index)
{
mConfig.mTheme = mThemes.at(index);
mAboutEdit->setText(mThemeAbout.at(index));
}
//---------------------------------------------------------------------------
//
// User changed offset
//
amor'AmorDialog::slotOffset() (./kdetoys/amor/amordialog.cpp:231)
void AmorDialog::slotOffset(int off)
{
mConfig.mOffset = off;
emit offsetChanged(mConfig.mOffset);
}
//---------------------------------------------------------------------------
//
// User toggled always on top
//
amor'AmorDialog::slotOnTop() (./kdetoys/amor/amordialog.cpp:241)
void AmorDialog::slotOnTop(bool onTop)
{
mConfig.mOnTop = onTop;
}
//---------------------------------------------------------------------------
//
// User toggled random tips
//
amor'AmorDialog::slotRandomTips() (./kdetoys/amor/amordialog.cpp:250)
void AmorDialog::slotRandomTips(bool tips)
{
mConfig.mTips = tips;
}
//---------------------------------------------------------------------------
//
// User clicked Ok
//
amor'AmorDialog::slotOk() (./kdetoys/amor/amordialog.cpp:259)
void AmorDialog::slotOk()
{
mConfig.write();
emit changed();
accept();
}
//---------------------------------------------------------------------------
//
// User clicked Cancel
//
amor'AmorDialog::slotCancel() (./kdetoys/amor/amordialog.cpp:270)
void AmorDialog::slotCancel()
{
// restore offset
KConfig *config = kapp->config();
emit offsetChanged(config->readNumEntry("Offset"));
reject();
}
//===========================================================================
//
// AmorListBoxItem implements a list box items for selection of themes
//