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

📄 pinyinframe.cpp.rej

📁 对MurphyPinyin的改进版
💻 REJ
📖 第 1 页 / 共 3 页
字号:
****************** 24,36 ****  #include <qpainter.h>
  #include <qlist.h>
  #include <qbitmap.h>
  #include <qlayout.h>
  #include <qvbox.h>
  #include <qhbuttongroup.h>
  #include <qpushbutton.h>
  #include <qmessagebox.h>
  #include <qcolor.h> 
  #include <qpen.h>
  #include <qwindowsystem_qws.h>
  #include <qpe/qpeapplication.h>
  #include <qnamespace.h>
--- 24,39 ----  #include <qpainter.h>
  #include <qlist.h>
  #include <qbitmap.h>
+ #include <qfontmetrics.h>
  #include <qlayout.h>
+ #include <qpalette.h>
  #include <qvbox.h>
  #include <qhbuttongroup.h>
  #include <qpushbutton.h>
  #include <qmessagebox.h>
  #include <qcolor.h> 
  #include <qpen.h>
+ #include <qtimer.h>
  #include <qwindowsystem_qws.h>
  #include <qpe/qpeapplication.h>
  #include <qnamespace.h>
****************** 40,60 ****  
  const char table_file[]=
  #ifdef X86
- "/root/pinyin_table.txt";
  #else
  "/home/zaurus/.murphytalk/pinyin_table.txt";
  #endif
  
  const char phrase_index_file[]=
  #ifdef X86
- "/root/murphytalk_phrase_idx.txt";
  #else
  "/home/zaurus/.murphytalk/murphytalk_phrase_idx.txt";
  #endif
  
  const char config_file[]=
  #ifdef X86
- "/root/murphytalk.conf";
  #else
  "/etc/murphytalk.conf";
  #endif
--- 43,63 ----  
  const char table_file[]=
  #ifdef X86
+ "/home/chyang/zaurus/pinyin_table.txt";
  #else
  "/home/zaurus/.murphytalk/pinyin_table.txt";
  #endif
  
  const char phrase_index_file[]=
  #ifdef X86
+ "/home/chyang/zaurus/murphytalk_phrase_idx.txt";
  #else
  "/home/zaurus/.murphytalk/murphytalk_phrase_idx.txt";
  #endif
  
  const char config_file[]=
  #ifdef X86
+ "/home/chyang/zaurus/murphytalk.conf";
  #else
  "/etc/murphytalk.conf";
  #endif
****************** 62,68 ****  
  /* XPM */
  static const char * pix_prev[] = {
- "16 13 3 1",
  " 	c #C0C0C0C0C0C0",
  "#	c #000000000000",
  ".	c #00000000FFFF",
--- 65,71 ----  
  /* XPM */
  static const char * pix_prev[] = {
+ "16 11 3 1",
  " 	c #C0C0C0C0C0C0",
  "#	c #000000000000",
  ".	c #00000000FFFF",
****************** 72,79 ****  "       #..#     ",
  "      #...#     ",
  "     #....#     ",
- "    #.....#     ",
- "     #....#     ",
  "      #...#     ",
  "       #..#     ",
  "        #.#     ",
--- 75,80 ----  "       #..#     ",
  "      #...#     ",
  "     #....#     ",
  "      #...#     ",
  "       #..#     ",
  "        #.#     ",
****************** 81,87 ****  "          #     "};
  
  static const char * pix_next[] = {
- "16 13 3 1",
  " 	c #C0C0C0C0C0C0",
  "#	c #000000000000",
  ".	c #00000000FFFF",
--- 82,88 ----  "          #     "};
  
  static const char * pix_next[] = {
+ "16 11 3 1",
  " 	c #C0C0C0C0C0C0",
  "#	c #000000000000",
  ".	c #00000000FFFF",
****************** 91,98 ****  "     #..#       ",
  "     #...#      ",
  "     #....#     ",
- "     #.....#    ",
- "     #....#     ",
  "     #...#      ",
  "     #..#       ",
  "     #.#        ",
--- 92,97 ----  "     #..#       ",
  "     #...#      ",
  "     #....#     ",
  "     #...#      ",
  "     #..#       ",
  "     #.#        ",
****************** 106,119 ****  const unsigned short YING  = 0x82f1;   //Hanzi : English
  
  const char ABOUT[]="About";
  
  const char MAKEPHRASE_OPEN [] = "\xe3\x80\x90\xe9\x80\xa0\xe8\xaf\x8d\x20";
  const char MAKEPHRASE_CLOSE[] = "\xe3\x80\x91";
  
  QPinyinFrame::QPinyinFrame(QWidget* parent, const char* name, WFlags f) :
  	QFrame(parent,name,f),m_engine(table_file,phrase_index_file),
- 	m_bEnglishMode(false),m_bMakingPhrase(false)
  {
  	(new QHBoxLayout(this))->setAutoAdd(TRUE);
  	QPEApplication::grabKeyboard(); 
  	qwsServer->setKeyboardFilter (this);
--- 105,142 ----  const unsigned short YING  = 0x82f1;   //Hanzi : English
  
  const char ABOUT[]="About";
+ static const char * kb_xpm[] = {
+ "28 13 4 1",
+ "       c None",
+ ".      c #4C4C4C",
+ "+      c #FFF7DD",
+ "@      c #D6CFBA",
+ " .......................... ",
+ " .+++.+++.+++.+++.+++.++++. ",
+ " .+@@.+@@.+@@.+@@.+@@.+@@@. ",
+ " .......................... ",
+ " .+++++.+++.+++.+++.++++++. ",
+ " .+@@@@.+@@.+@@.+@@.+@@@@@. ",
+ " .......................... ",
+ " .++++++.+++.+++.+++.+++++. ",
+ " .+@@@@@.+@@.+@@.+@@.+@@@@. ",
+ " .......................... ",
+ " .++++.++++++++++++++.++++. ",
+ " .+@@@.+@@@@@@@@@@@@@.+@@@. ",
+ " .......................... "};
  
  const char MAKEPHRASE_OPEN [] = "\xe3\x80\x90\xe9\x80\xa0\xe8\xaf\x8d\x20";
  const char MAKEPHRASE_CLOSE[] = "\xe3\x80\x91";
  
  QPinyinFrame::QPinyinFrame(QWidget* parent, const char* name, WFlags f) :
  	QFrame(parent,name,f),m_engine(table_file,phrase_index_file),
+ 	m_bEnglishMode(false),m_bMakingPhrase(false),m_bShowKeyboard(0),
+ 	keyHeight(13),PickHeight(32),xoffs(0),pressedKey(-1),
+ 	shift(0),ctrl(0),alt(0),lock(0),useLargeKeys(TRUE),
+ 	useOptiKeys(0),modifiers(0),pressed(0),
+ 	pressTid(0),qkeycode(0),unicode(-1)
  {
+ 	screen_rect=QApplication::desktop()->rect();
  	(new QHBoxLayout(this))->setAutoAdd(TRUE);
  	QPEApplication::grabKeyboard(); 
  	qwsServer->setKeyboardFilter (this);
****************** 122,137 ****  
  	String font_name=config.get_as_string("font");
  	int    font_size=config.get_as_int("font-size");
- 
  	printX86("from config -> font=%s\n",font_name.c_str());
  	printX86("from config -> font-size=%d\n",font_size);
- 
  	if(font_name.size()>0){
  		if(font_size<=0){
  			font_size=font().pointSize();
  		}
  		setFont(QFont(font_name.c_str(),font_size));
  	}	
  }
  
  QPinyinFrame::~QPinyinFrame()
--- 145,168 ----  
  	String font_name=config.get_as_string("font");
  	int    font_size=config.get_as_int("font-size");
+ 	m_bShowKeyboard = config.get_as_int("keyboard");
  	printX86("from config -> font=%s\n",font_name.c_str());
  	printX86("from config -> font-size=%d\n",font_size);
+ 	printX86("from config -> keyboard=%d\n",m_bShowKeyboard);
+ 	
  	if(font_name.size()>0){
  		if(font_size<=0){
  			font_size=font().pointSize();
  		}
  		setFont(QFont(font_name.c_str(),font_size));
  	}	
+ 
+ 	defaultKeyWidth=screen_rect.width()/15;
+ 	m_kbd_rect=QRect(0,32,screen_rect.width(),65);
+ 	repeatTimer = new QTimer(this);
+ 
+ 	QObject::connect ( repeatTimer, SIGNAL(timeout()),this,SLOT(repeat()));
+ 	setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Preferred));
  }
  
  QPinyinFrame::~QPinyinFrame()
****************** 140,145 ****  	QPEApplication::ungrabKeyboard(); 
  }
  
  QSize QPinyinFrame::sizeHint() const
  {
  	QPinyinFrame *This=const_cast<QPinyinFrame*>(this);
--- 171,190 ----  	QPEApplication::ungrabKeyboard(); 
  }
  
+ void QPinyinFrame::resizeEvent(QResizeEvent*)
+ {
+    int nk;
+    if ( useOptiKeys ) {
+        nk = 15;
+    } else if ( useLargeKeys ) {
+        nk = 15;
+    } else {
+        nk = 19;
+    }
+    defaultKeyWidth = screen_rect.width()/nk;
+    xoffs = (screen_rect.width()-defaultKeyWidth*nk)/2;
+ }
+ 
  QSize QPinyinFrame::sizeHint() const
  {
  	QPinyinFrame *This=const_cast<QPinyinFrame*>(this);
****************** 153,252 ****  int QPinyinFrame::init_gui_dimention()
  {
  	static int sHeight = -1;
  
- 	if(sHeight>0)      return sHeight;
  
  #if 0
  	QPixmap next((const char **)pix_next);
  	printX86("direction pix (%d,%d)\n",next.width(),next.height());
  #endif
- 	const int pix_width=16,pix_height=13;
  
  	QPainter painter(this);	
  	QFontMetrics metric=painter.fontMetrics();
  	QRect rect = metric.boundingRect(QChar(ZHONG));
  
- 	int width=640;
  	printX86("text metric is %d,%d\n",rect.width(),rect.height());
  
  	int x=PINYIN_X;
  	int y=PINYIN_Y;
  	painter.drawText(x,rect.height(),QChar(m_bEnglishMode?YING:ZHONG));
         	m_indicator_rect=QRect(x,y,rect.width(),rect.height());
- 	printX86("indicator rect(%d,%d,%d,%d)\n",m_indicator_rect.left(),m_indicator_rect.top(),m_indicator_rect.width(),m_indicator_rect.height());
  
- 	//horizonal line which seperates pinyin and hanzi candidates
- 	y+=rect.height()+2;
- 	QRect about = metric.boundingRect(QString(ABOUT));
- 	m_about_rect = QRect(width-2-about.width(),PINYIN_Y,about.width(),about.height());
- 	printX86("about rect(%d,%d,%d,%d)\n",m_about_rect.left(),m_about_rect.top(),m_about_rect.width(),m_about_rect.height());
  
- 	///////////////////////////////////////////////
- 	//the second row --  hanzi candicates
- 	y+=2;
  
- 	m_leftbtn_rect=QRect(x,y+2,pix_width,pix_height);		
- 	printX86("left btn rect(%d,%d,%d,%d)\n",m_leftbtn_rect.left(),m_leftbtn_rect.top(),m_leftbtn_rect.width(),
- 		       m_leftbtn_rect.height());
- 
- 	m_rightbtn_rect=QRect(width-2-pix_width,y+2,pix_width,pix_height);		
- 	printX86("right btn rect(%d,%d,%d,%d)\n",m_rightbtn_rect.left(),m_rightbtn_rect.top(),m_rightbtn_rect.width(),
- 		       m_rightbtn_rect.height());
- 
- 	sHeight=y+rect.height()+5;
- 
- 	return sHeight;
- }
- 
- bool QPinyinFrame::filter (int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat)
- {   
- 	if (!isHidden()&& isPress) {
- 		if(m_bEnglishMode){
- 			if(unicode == 9 && keycode == Qt::Key_Tab){
- 				m_bEnglishMode = false;
- 				update();			
- 			}
- 			else{
- 				SendKey(unicode,keycode); 
  			}
- 			return true;		
- 		}
  
- 		if (GetKey (unicode, keycode))
- 			return true;
  		else
  			return false;
- 	} 
- 	else
- 		return false;
- }   
  
- void QPinyinFrame::paintEvent(QPaintEvent * e)
- {
- 	QFrame::paintEvent(e);
- 	
- 	QPainter painter(this);
- 	painter.setClipRect (e->rect ());
  
- 	//FIXME: how to get screen size
- 	unsigned int width  = 640;
  
- 	///////////////////////////////////////////////
- 	//the first row - pinyin inputed 
  
- 	QFontMetrics metric=painter.fontMetrics();
- 	QRect rect = metric.boundingRect(QChar(ZHONG));
  
- 	int x=PINYIN_X;
- 	int y=PINYIN_Y;
- 	painter.drawText(x,rect.height(),QChar(m_bEnglishMode?YING:ZHONG));
  
- 	QPen penGray (QColor(128,128,128));
- 	QPen penWhite(QColor(255,255,255));
- 	QPen penText (QColor(0,0,0));
- 	QPen penPage (QColor(0,0,255));
  
- 	//vertical line which seperates chinese/english indicator with pinyin inputed
  	painter.setPen(penGray);
  	painter.drawLine(x+rect.width()+2,y,x+rect.width()+2,y+rect.height());
  	painter.setPen(penWhite);
--- 198,304 ----  int QPinyinFrame::init_gui_dimention()
  {
  	static int sHeight = -1;
+ 	int width=screen_rect.width();
  
+ 	if(sHeight>0)     
+ 		if(m_bShowKeyboard) 
+ 			return sHeight+65;
+ 		else 
+ 			return sHeight;
  
  #if 0
  	QPixmap next((const char **)pix_next);
  	printX86("direction pix (%d,%d)\n",next.width(),next.height());
  #endif
+ 	const int pix_width=16,pix_height=11;
  
  	QPainter painter(this);	
  	QFontMetrics metric=painter.fontMetrics();
  	QRect rect = metric.boundingRect(QChar(ZHONG));
  
  	printX86("text metric is %d,%d\n",rect.width(),rect.height());
  
  	int x=PINYIN_X;
  	int y=PINYIN_Y;
  	painter.drawText(x,rect.height(),QChar(m_bEnglishMode?YING:ZHONG));
         	m_indicator_rect=QRect(x,y,rect.width(),rect.height());
+ 		printX86("indicator rect(%d,%d,%d,%d)\n",m_indicator_rect.left(),m_indicator_rect.top(),m_indicator_rect.width(),m_indicator_rect.height());
  
+ 		//horizonal line which seperates pinyin and hanzi candidates
+ 		y+=rect.height()+2;
+ 		QRect about = metric.boundingRect(QString(ABOUT));
+ 		m_about_rect = QRect(width-2-about.width(),PINYIN_Y,about.width(),about.height());
+ 		m_kbdbtn_rect=QRect(width-2-about.width()-24,PINYIN_Y,28,13);
+ 		printX86("about rect(%d,%d,%d,%d)\n",m_about_rect.left(),m_about_rect.top(),m_about_rect.width(),m_about_rect.height());
  
+ 		///////////////////////////////////////////////
+ 		//the second row --  hanzi candicates
+ 		y+=3;
  
+ 		m_leftbtn_rect=QRect(x,y,pix_width,pix_height);		
+ 		printX86("left btn rect(%d,%d,%d,%d)\n",m_leftbtn_rect.left(),m_leftbtn_rect.top(),m_leftbtn_rect.width(),
+ 			       m_leftbtn_rect.height());
+ 
+ 		m_rightbtn_rect=QRect(width-2-pix_width,y,pix_width,pix_height);		
+ 		printX86("right btn rect(%d,%d,%d,%d)\n",m_rightbtn_rect.left(),m_rightbtn_rect.top(),m_rightbtn_rect.width(),
+ 			       m_rightbtn_rect.height());
+ 
+ 		m_cand_rect=QRect(0,y,width-2,pix_height);
+ 		sHeight=y+rect.height()+5;
+ 
+ 
+ 		return sHeight;
+ 	}
+ 
+ 	bool QPinyinFrame::filter (int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat)
+ 	{   
+ 		if (!isHidden()&& isPress) {
+ 			if(m_bEnglishMode){
+ 				if(unicode == 9 && keycode == Qt::Key_Tab){
+ 					m_bEnglishMode = false;
+ 					update();			
+ 				}
+ 				else{
+ 					SendKey(unicode,keycode); 
+ 				}
+ 				return true;		
  			}
  
+ 			if (GetKey (unicode, keycode))
+ 				return true;
+ 			else
+ 				return false;
+ 		} 
  		else
  			return false;
+ 	}   
  
+ 	void QPinyinFrame::paintEvent(QPaintEvent * e)
+ 	{
+ 		unsigned int width  = screen_rect.width();
+ 		QFrame::paintEvent(e);
+ 		
+ 		QPainter painter(this);
+ 		painter.setClipRect (e->rect ());
  
+ 		//FIXME: how to get screen size
  
+ 		///////////////////////////////////////////////
+ 		//the first row - pinyin inputed 
  
+ 		QFontMetrics metric=painter.fontMetrics();
+ 		QRect rect = metric.boundingRect(QChar(ZHONG));
  
+ 		int x=PINYIN_X;
+ 		int y=PINYIN_Y;
+ 		painter.drawText(x,rect.height(),QChar(m_bEnglishMode?YING:ZHONG));
  
+ 		QPen penGray (QColor(128,128,128));
+ 		QPen penWhite(QColor(255,255,255));
+ 		QPen penText (QColor(0,0,0));
+ 		QPen penPage (QColor(0,0,255));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -