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(); }