void ThemesDlg::populateListbox() { ThemeWidget* item; QDir dir; QStringList dirs; QStringList t; KStandardDirs ksd; tableThemes->clear(); item = new ThemeWidget; item->iconLabel->setPixmap(KIconLoader::global()->loadIcon("get-hot-new-stuff", KIconLoader::NoGroup, KIconLoader::SizeHuge)); item->setHeaderText(i18n("Get New Stuff")); item->setDescriptionText(i18n("Download new themes.")); item->buttonGo->setText(i18n("New Stuff...")); item->buttonGo->setEnabled(true); QObject::connect(item->buttonGo, SIGNAL(clicked()), this, SLOT(getNewStuff())); tableThemes->insertItem((QWidget*)(item)); item = new ThemeWidget; item->iconLabel->setPixmap(KIconLoader::global()->loadIcon("document-open", KIconLoader::NoGroup, KIconLoader::SizeHuge)); item->setHeaderText(i18n("Open Local Theme")); item->setDescriptionText(i18n("Add local theme to the list.")); item->buttonGo->setProperty("stdItem", 18); item->buttonGo->setText(i18nc("Open theme button", "Open...")); QObject::connect((QObject*)(item->buttonGo), SIGNAL(clicked()), (QObject*)(this), SLOT(openLocalTheme())); tableThemes->insertItem((QWidget*)item); dirs = ksd.findDirs("data", QString(kapp->objectName()) + "/themes"); // Get custom dirs from config here? QStringList::Iterator itend(dirs.end()); for (QStringList::Iterator it = dirs.begin(); it != itend; ++it) { QStringList types; types << "*.skz" << "*.theme"; dir.setPath(*it); t = dir.entryList(types); for (QStringList::Iterator it = t.begin(); it != t.end(); ++it) { item = new ThemeWidget(new ThemeFile(dir.filePath(*it))); tableThemes->insertItem((QWidget*)item); item->buttonGo->setText(i18n("Uninstall")); QObject::connect((QObject*)item->buttonGo, SIGNAL(clicked()), (QObject*)this, SLOT(uninstall())); } } t = SuperKarambaSettings::userAddedThemes(); for (QStringList::Iterator it = t.begin(); it != t.end(); ++it) { ThemeFile* file = new ThemeFile(*it); if (file->isValid()) { item = new ThemeWidget(file); tableThemes->insertItem((QWidget*)item); item->buttonGo->setText(i18n("Uninstall")); QObject::connect((QObject*)item->buttonGo, SIGNAL(clicked()), (QObject*)this, SLOT(uninstall())); } else delete file; } tableThemes->setSelected(0); }
KDMThemeWidget::KDMThemeWidget(QWidget *parent) : QWidget(parent) { QGridLayout *ml = new QGridLayout(this); ml->setSizeConstraint(QLayout::SetMinAndMaxSize); ml->setSpacing(KDialog::spacingHint()); ml->setMargin(KDialog::marginHint()); themeWidget = new QTreeWidget(this); themeWidget->setHeaderLabels(QStringList() << i18nc("@title:column", "Theme") << i18nc("@title:column", "Author")); themeWidget->setSortingEnabled(true); themeWidget->sortItems(0, Qt::AscendingOrder); themeWidget->setRootIsDecorated(false); themeWidget->setWhatsThis(i18n("This is a list of installed themes.\n" "Click the one to be used.")); ml->addWidget(themeWidget, 0, 0, 2, 4); preview = new QLabel(this); preview->setFixedSize(QSize(200, 150)); preview->setScaledContents(true); preview->setWhatsThis(i18n("This is a screen shot of what KDM will look like.")); ml->addWidget(preview, 0, 4); info = new QLabel(this); info->setMaximumWidth(200); info->setAlignment(Qt::AlignTop); info->setWordWrap(true); info->setWhatsThis(i18n("This contains information about the selected theme.")); ml->addWidget(info, 1, 4); bInstallTheme = new QPushButton(i18nc("@action:button", "Install &new theme"), this); bInstallTheme->setWhatsThis(i18n("This will install a theme into the theme directory.")); ml->addWidget(bInstallTheme, 2, 0); bRemoveTheme = new QPushButton(i18nc("@action:button", "&Remove theme"), this); bRemoveTheme->setWhatsThis(i18n("This will remove the selected theme.")); ml->addWidget(bRemoveTheme, 2, 1); bGetNewThemes = new QPushButton(i18nc("@action:button", "&Get New Themes"), this); ml->addWidget(bGetNewThemes, 2, 2); connect(themeWidget, SIGNAL(itemSelectionChanged()), SLOT(themeSelected())); connect(bInstallTheme, SIGNAL(clicked()), SLOT(installNewTheme())); connect(bRemoveTheme, SIGNAL(clicked()), SLOT(removeSelectedThemes())); connect(bGetNewThemes, SIGNAL(clicked()), SLOT(getNewStuff())); themeDir = KStandardDirs::installPath("data") + "kdm/themes/"; defaultTheme = 0; foreach (const QString &ent, QDir(themeDir).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Unsorted)) insertTheme(themeDir + ent); }