⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appearance.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{    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 + -