📄 appearance.cpp
字号:
{ QString selFontFamily = name;#ifndef QTOPIA_PHONE int selFontSize = prefFontSize; sample->setUpdatesEnabled( FALSE ); fontSize->clear(); int diff = 1000; FontDatabase fd; QValueList<int> pointSizes = fd.pointSizes( name.lower() ); QValueList<int>::Iterator it; for ( it = pointSizes.begin(); it != pointSizes.end(); ++it ) { if ( *it <= maxFontSize ) { fontSize->insertItem( QString::number( *it ) ); if ( QABS(*it-prefFontSize) < diff ) { diff = QABS(*it - prefFontSize); fontSize->setCurrentItem( fontSize->count()-1 ); } } } selFontSize = fontSize->currentText().toInt(); qDebug( "Setfont: %s %d", selFontFamily.latin1(), selFontSize ); QFont f( selFontFamily, selFontSize ); sample->setFont( f ); QTimer::singleShot( 0, this, SLOT(fixSampleGeometry()) );#else fontMap.select(name);#endif}void AppearanceSettings::fontSizeSelected( const QString &sz ){ prefFontSize = sz.toInt();#ifndef QTOPIA_PHONE sample->setUpdatesEnabled( FALSE ); sample->setFont( QFont(fontList->currentText(),prefFontSize) ); QTimer::singleShot( 0, this, SLOT(fixSampleGeometry()) );#endif}void AppearanceSettings::setStyle( QWidget *w, QStyle *s ){ if (&w->style() != s) w->setStyle( s ); QObjectList *childObjects=(QObjectList*)w->children(); if ( childObjects ) { QObject * o; for(o=childObjects->first();o!=0;o=childObjects->next()) { if( o->isWidgetType() ) { setStyle((QWidget *)o,s); } } }}void AppearanceSettings::populateStyleList(){ (void)new PluginItem( styleList, "Qtopia");#if QT_VERSION >= 0x030000// styleList->insertStringList(QStyleFactory::styles());#else# ifndef QTOPIA_PHONE (void)new PluginItem( styleList, "Windows"); // No tr# endif QStringList list = styleLoader->list(); QStringList::Iterator it; for ( it = list.begin(); it != list.end(); ++it ) { StyleInterface *iface = 0; if ( styleLoader->queryInterface( *it, IID_Style, (QUnknownInterface**)&iface ) == QS_OK ) { PluginItem *item = new PluginItem( styleList, iface->name() ); item->setFilename( *it ); styleLoader->releaseInterface( iface ); } }#endif}#ifdef QTOPIA_PHONEvoid AppearanceSettings::populateThemeList(){ // Look for themed styles QString themeDataPath( QPEApplication::qpeDir() + "etc/themes/" ); QString configFileName, themeName, decorationName; QDir dir; if (dir.exists(themeDataPath)){ bool valid; dir.setPath( themeDataPath ); dir.setNameFilter( "*.conf" ); // No tr for (int index = 0; index < (int)dir.count(); index++){ valid = TRUE; configFileName = themeDataPath + dir[index]; Config themeConfig( configFileName, Config::File ); // Ensure that we only provide valid theme choices. if (themeConfig.isValid()){ themeConfig.setGroup( "Theme" ); // No tr QString styleName = themeConfig.readEntry("Style", "Qtopia"); QStringList list; list << "TitleConfig" << "HomeConfig" << "DecorationsConfig" << "ContextConfig" << "WidgetsConfig"; for (QStringList::ConstIterator it = list.begin(); it != list.end(); it++){ if (themeConfig.hasKey(*it)){ QFileInfo info(QPEApplication::qpeDir() + "etc/themes/" + themeConfig.readEntry(*it)); if (!info.isFile()){ qWarning("Config entry %s in %s points to non-existant file %s", (*it).local8Bit().data(), configFileName.local8Bit().data(), info.filePath().local8Bit().data()); valid = FALSE; break; } } } if (valid && themeConfig.hasKey( "Name" )) { themeName = themeConfig.readEntry( "Name" ); decorationName = themeConfig.readEntry("DecorationConfig"); PluginItem *item = new PluginItem( themeList, themeName ); item->setFilename( styleName ); item->setThemeFilename( dir[index] ); item->setDecorationFilename( decorationName ); }else{ valid = FALSE; } }else{ valid = FALSE; } if (!valid) qWarning("Ignoring invalid theme conf file %s", configFileName.local8Bit().data()); } } else { qWarning("Theme style configuration path not found %s", themeDataPath.local8Bit().data()); // No tr }}#endifvoid AppearanceSettings::populateColorList(){ int lineHeight = fontMetrics().lineSpacing(); QDir dir( QPEApplication::qpeDir() + "etc/colors" ); QStringList list = dir.entryList( "*.scheme" ); // No tr QStringList::Iterator it; colorListIDs.clear(); for ( it = list.begin(); it != list.end(); ++it ) { Config scheme( QPEApplication::qpeDir() + "etc/colors/" + *it, Config::File ); QString name = (*it).left( (*it).find( ".scheme" ) ); colorListIDs.append(name); scheme.setGroup("Global"); QPalette pal = readColorScheme(colorListIDs.count()-1); QPixmap pm(32, lineHeight); QPainter ppm(&pm); ppm.setPen(black); ppm.setBrush(QBrush::NoBrush); ppm.drawRect(0, 0, 32, lineHeight); ppm.fillRect(1, 1, 10, lineHeight-2, pal.active().background()); ppm.fillRect(11, 1, 10, lineHeight-2, pal.active().base()); ppm.fillRect(21, 1, 10, lineHeight-2, pal.active().highlight()); ppm.end(); colorList->insertItem( pm, scheme.readEntry("Name",name+"-DEF") ); } dir = QDir( QPEApplication::qpeDir() + "etc/themes" ); list = dir.entryList( "*.conf" ); // No tr for ( it = list.begin(); it != list.end(); ++it ) { Config themeConfig( QPEApplication::qpeDir() + "etc/themes/" + *it, Config::File ); if ( themeConfig.isValid() ){ themeConfig.setGroup("Theme"); if ( themeConfig.hasKey( "Name" ) && themeConfig.hasKey( "Style" ) // No tr && themeConfig.hasKey( "WidgetsConfig" ) ) { // No tr QString name = (*it).left( (*it).find( ".conf" ) ); colorListIDs.append(name); colorList->insertItem( themeConfig.readEntry("Name",name+"-DEF") ); } } }}void AppearanceSettings::populateDecorationList(){ (void)new PluginItem( decorationList, "Qtopia" ); QStringList list = wdLoader->list(); QStringList::Iterator it; for ( it = list.begin(); it != list.end(); ++it ) { WindowDecorationInterface *iface = 0; if ( wdLoader->queryInterface( *it, IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) { PluginItem *item = new PluginItem( decorationList, iface->name() ); item->setFilename( *it ); wdLoader->releaseInterface( iface ); } }}void AppearanceSettings::populateFontList(const QString& cur, int cursz){#ifndef QTOPIA_PHONE FontDatabase fd; QStringList f = fd.families(); for ( QStringList::ConstIterator it=f.begin(); it!=f.end(); ++it ) { QString n = *it; n[0] = n[0].upper(); fontList->insertItem(n); if ( (*it).lower() == cur.lower() ) fontList->setCurrentItem(fontList->count()-1); } fontSize->insertItem( QString::number( cursz ) ); fontSelected( fontList->currentText() );#else for (int i=0; i<fontMap.count(); ++i) { (void)new FontItem(fontList, fontMap[i].name, QFont(fontMap[i].family, fontMap[i].size)); if ( fontMap[i].family.lower()==cur.lower() && fontMap[i].size == cursz ) fontList->setCurrentItem(fontList->count()-1); } if (fontList->currentText().isNull()) fontList->setCurrentItem(1); fontSelected( fontList->currentText() );#endif}void AppearanceSettings::fixSampleGeometry(){#ifndef QTOPIA_PHONE qDebug( "update sample"); sample->fixGeometry(); sample->setUpdatesEnabled( TRUE ); sample->repaint( FALSE ); // repaint decoration#endif}void AppearanceSettings::accelerator(int #ifdef QTOPIA_PHONE key#endif ){#ifdef QTOPIA_PHONE if (key == Key_Left) { int idx = tabWidget->currentPageIndex()-1; if (idx < 0) idx = 5; if (idx == 3) // the removed decoration page idx--; if (idx == 2) // the removed style page idx--; tabWidget->setCurrentPage(idx); } else if (key == Key_Right) { int idx = tabWidget->currentPageIndex()+1; if (idx > 5) idx = 0; if (idx == 2) // the removed style page idx++; if (idx == 3) // the removed decoration page idx++; tabWidget->setCurrentPage(idx); }#endif}#ifdef QTOPIA_PHONEvoid AppearanceSettings::selectBackground(bool wallpapers){ QStringList locations; if( wallpapers ) { QStringList qtopia_paths = Global::qtopiaPaths(); QStringList::Iterator it; for ( it = qtopia_paths.begin(); it != qtopia_paths.end(); it++ ) locations.append( (*it) + "pics/wallpaper" ); } ImageSelectorDialog sel( locations, this ); if (QPEApplication::execDialog(&sel)) { if (!sel.selectedFilename().isNull()) { previewLabel->setText(""); bgImgName = sel.selectedFilename(); previewLabel->setText(tr("Loading...")); updateBackground(); } }}#endifvoid AppearanceSettings::selectImage(void){#ifdef QTOPIA_PHONE selectBackground(FALSE);#endif}void AppearanceSettings::selectWallpaper(void){#ifdef QTOPIA_PHONE selectBackground(TRUE);#endif}void AppearanceSettings::clearBackground(){#ifdef QTOPIA_PHONE bgImgName = QString::null; updateBackground();#endif}void AppearanceSettings::updateBackground(){#ifdef QTOPIA_PHONE //QPixmap *currPm = previewLabel->pixmap(); if (bgImgName.isEmpty()) { previewLabel->setText(tr("No image")); } else if (previewLabel->isVisible()) { QImage bgImg = Image::loadScaled(bgImgName, previewLabel->width(), previewLabel->height()); if (!bgImg.isNull()) { QPixmap pm; pm.convertFromImage(bgImg); previewLabel->setPixmap(pm); } else { previewLabel->setText(tr("Cannot load image")); } }#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -