Ejemplo n.º 1
0
ZMLParser::ZMLParser(QDomElement &el, ZCoreApplication *parent)
{
    //init basic variables
    _parent = parent;
    _config = ZConfig(el);
    depth = 0;
    _currentParent = NULL;

    init();

    QDomNodeList nn;

    nn = _config.elementsByTagName("zee:components");
    for(uint i = 0; i < nn.length(); i++)
        parse(nn.item(i));

    nn = _config.elementsByTagName("zee:widgets");
    for(uint i = 0; i < nn.length(); i++)
        parse(nn.item(i));

    nn = _config.elementsByTagName("zee:events");
    for(uint i = 0; i < nn.length(); i++)
        parse(nn.item(i));

//  late component initialize
    foreach(QObject *c, _components){
        ZConfigurable *cmp = DCAST(ZConfigurable*,c);
        Q_ASSERT(cmp);
        cmp->lateInit();
    }
void U2Panel::paintEvent(QPaintEvent* event){ //===================================
    QPainter ptr(pixbuffer);
    ptr.begin(pixbuffer);
    
    //渲染背景
    ptr.drawPixmap(skin->pic_backGround_x,skin->pic_backGround_y,*(skin->pix_backGround));
    //title bar
    ptr.drawPixmap(skin->pic_titlebar_x,skin->pic_titlebar_y,*(skin->pix_titlebar));
    
	// 正文
	ptr.setFont(font_m);
	ptr.setPen(QColor(skin->textColor_r,skin->textColor_g,skin->textColor_b));
	
	int ii=skin->max_row_count<text_rows.count()?skin->max_row_count:text_rows.count();
	int ix=0;
	for(;ix<ii;ix++){
		ptr.drawText(skin->text_startx,skin->text_pix_btl*ix+skin->text_starty,text_rows[ix+window_top]);
	}
	
	//正文闪烁光标
	
	if(cursorShows){	
		ptr.fillRect(text_curpix_x,text_curpix_y,2,22,QColor(skin->cursor_color_r,skin->cursor_color_g,skin->cursor_color_b));
	}
	//拼音
	ptr.setFont(font_s);
	if(alpha_buf.length()>0){
		//tool bar
		ptr.drawPixmap(skin->pic_toolbar_x,skin->pic_toolbar_y,*(skin->pix_toolbar));
		//拼音光标
		ptr.drawPixmap(skin->py_cur_ad1x+alpha_pix_ptr[alpha_ptr],skin->py_cur_y,*(skin->pix_pycur),0,0,10,-1);
		for(int i=0;i<alpha_pix_ptr[alpha_ptr+1]-alpha_pix_ptr[alpha_ptr]-18;i++){
			ptr.drawPixmap(skin->py_cur_ad1x+10+alpha_pix_ptr[alpha_ptr]+i,skin->py_cur_y,*(skin->pix_pycur),11,0,1,-1);
		}
		//拼音
		ptr.drawPixmap(alpha_pix_ptr[alpha_ptr+1]+skin->py_cur_ad1x-10,skin->py_cur_y,*(skin->pix_pycur),(skin->pix_pycur)->width()-10,0,10,-1);
		ptr.setPen(QColor(skin->alphaColor_r,skin->alphaColor_g,skin->alphaColor_b));
		ptr.drawText(skin->py_text_x-alpha_pix_ptr[alpha_ptr_front],skin->py_text_y,alpha_buf);
		
	}else if(num_buf.length()>0){
		//tool bar
		ptr.drawPixmap(skin->pic_toolbar_x,skin->pic_toolbar_y,*(skin->pix_toolbar));
		//查不到拼音 画数字
		ptr.setPen(QColor(skin->num_color_r,skin->num_color_g,skin->num_color_b));
		ptr.drawText(skin->num_text_x,skin->num_text_y,num_buf);
	}

	//中文字词
	
	if(cw_list.count()>0){//查出汉字数量不为0
		if(selectMode){
			//选词模式
			//选词光标
			
			ptr.drawPixmap(skin->cw_cur_x+cw_pix_ptr[cw_ptr],skin->cw_cur_y,*(skin->pix_cword),0,0,10,-1);
			
			for(int i=0;i<cw_pix_ptr[cw_ptr+1]-cw_pix_ptr[cw_ptr]-18;i++){
				ptr.drawPixmap(skin->cw_cur_x+10+cw_pix_ptr[cw_ptr]+i,skin->cw_cur_y,*(skin->pix_cword),11,0,1,-1);
			}
			ptr.drawPixmap(cw_pix_ptr[cw_ptr+1]+skin->cw_cur_x-10,skin->cw_cur_y,*(skin->pix_cword),(skin->pix_cword)->width()-10,0,10,-1);

			ptr.setPen(QColor(skin->cwordColor_r,skin->cwordColor_g,skin->cwordColor_b));
			ptr.drawText(skin->cw_text_x,skin->cw_text_y,cw_page_list[cw_page_index]);
		}else{
			//未进入选词模式
			ptr.setPen(QColor(skin->cwordColor_r,skin->cwordColor_g,skin->cwordColor_b));
			ptr.drawText(skin->cw_text_x,skin->cw_text_y,cw_list[0]);
			
		}
	}
	//菜单条
	if(num_buf==""){
		if(menuShows){
			//tool bar
			ptr.drawPixmap(skin->pic_menubg_x,skin->pic_menubg_y,*(skin->pix_menubg));
			ptr.drawPixmap(skin->pic_toolbarhl_x+skin->menu_bt*menu_index,skin->pic_toolbarhl_y,*(skin->pix_toolbarhl));
			ptr.drawPixmap(skin->pic_btn_cancel_x,skin->pic_btn_cancel_y,*(skin->pix_btn_cancel));
			ptr.drawPixmap(skin->pic_btn_theme_x,skin->pic_btn_theme_y,*(skin->pix_btn_theme));
			ptr.drawPixmap(skin->pic_btn_about_x,skin->pic_btn_about_y,*(skin->pix_btn_about));
			ptr.drawPixmap(skin->pic_btn_copy_x,skin->pic_btn_copy_y,*(skin->pix_btn_copy));
			ptr.drawPixmap(skin->pic_btn_paste_x,skin->pic_btn_paste_y,*(skin->pix_btn_paste));

		}else{
			ptr.drawPixmap(skin->pic_nullinput_x,skin->pic_nullinput_y,*(skin->pix_nullinput));
			//复制信息
			if(copy_mode==0){
				ptr.setPen(QColor(skin->copyinfo_r,skin->copyinfo_g,skin->copyinfo_b));
				if(clipBd.length()==0)
					ptr.drawText(skin->copyinfo_x,skin->copyinfo_y,QString::fromUtf8("空"));
				else
					ptr.drawText(skin->copyinfo_x,skin->copyinfo_y,QString::fromUtf8("内容:")+clipBd.left(8)+QString("..."));
			}else{
				ptr.setPen(QColor(skin->copyinfo_r,skin->copyinfo_g,skin->copyinfo_b));
				ptr.drawText(skin->copyinfo_x,skin->copyinfo_y,QString::fromUtf8("开始于:")+QString::number(copy_start));
			}
		}
	}
	if(aboutDialogShows){
		ptr.drawPixmap(skin->pic_aboutdialog_x,skin->pic_aboutdialog_y,*(skin->pix_aboutdialog));
		ptr.setPen(QColor(skin->about_font_r,skin->about_font_g,skin->about_font_b));
		int yy=skin->about_dialog_y;
		ptr.setFont(font_s);
		
		ptr.drawText(skin->about_dialog_x,yy,ctr("关于火星输入法:"));
		yy+=20;
		ptr.drawText(skin->about_dialog_x,yy,ctr("版本:1.2"));
		yy+=20;
		ptr.drawText(skin->about_dialog_x,yy,ctr("感谢fuzhuo20的输入法源码!"));
		yy+=20;
		ptr.drawText(skin->about_dialog_x,yy,ctr("技术支持:无印"));
		yy+=20;
		ptr.drawText(skin->about_dialog_x,yy,ctr("总策划:Xmifeng"));
		yy+=20;
		ptr.drawText(skin->about_dialog_x,yy,ctr("编码:DarkDragon"));
	}
	if(themeDialogShows){
		//背景
		ptr.drawPixmap(skin->pic_themeDialog_x,skin->pic_themeDialog_y,*(skin->pix_themeDialog));
		//预览
		cout<<"length="<<themeAvilable.count()<<endl;
	
		
		QString tmp2=QString("/ezxlocal/MarsInput/theme/")+themeAvilable[themeIndex]+QString("/MarsSkin.cfg");
		if(themePreview!=NULL){
			delete themePreview;
		}
		cout<<"tmp2="<<tmp2.latin1()<<endl;
		QString tmp1=ZConfig(tmp2).readEntry("ThemePreview","Pic");
		cout<<"tmp1="<<tmp1.latin1()<<endl;
		themePreview=new QPixmap(QString("/ezxlocal/MarsInput/theme/")+themeAvilable[themeIndex]+QString("/")+tmp1);
		ptr.drawPixmap(skin->theme_preview_x,skin->theme_preview_y,*(themePreview));
		//文字说明
		ptr.setPen(QColor(skin->theme_text_r,skin->theme_text_g,skin->theme_text_b));
		ptr.drawText(skin->theme_text_x,skin->theme_text_y,QString("%1  %2/%3").arg(themeAvilable[themeIndex]).arg(themeIndex+1).arg(themeAvilable.count()));

	}
    ptr.end();
	//写缓冲
	QPainter pt(this);
	pt.begin(this);
	pt.drawPixmap(0,0,*pixbuffer);
	pt.end();
}