-rw-r--r-- | noncore/apps/odict/dingwidget.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/noncore/apps/odict/dingwidget.cpp b/noncore/apps/odict/dingwidget.cpp index 8ad0b16..8f5a7ae 100644 --- a/noncore/apps/odict/dingwidget.cpp +++ b/noncore/apps/odict/dingwidget.cpp | |||
@@ -41,51 +41,55 @@ DingWidget::DingWidget(QWidget *parent, QString word, QTextBrowser *browser_top, | |||
41 | { | 41 | { |
42 | QTextStream stream( &file ); | 42 | QTextStream stream( &file ); |
43 | while ( !stream.eof() ) | 43 | while ( !stream.eof() ) |
44 | { | 44 | { |
45 | lines.append( stream.readLine() ); | 45 | lines.append( stream.readLine() ); |
46 | } | 46 | } |
47 | file.close(); | 47 | file.close(); |
48 | } | 48 | } |
49 | 49 | ||
50 | lines = lines.grep( queryword ); | 50 | lines = lines.grep( queryword ); |
51 | 51 | ||
52 | QString top, bottom; | 52 | QString top, bottom; |
53 | 53 | ||
54 | parseInfo( lines, top , bottom ); | 54 | parseInfo( lines, top , bottom ); |
55 | browser_top->setText( top ); | 55 | browser_top->setText( top ); |
56 | browser_bottom->setText( bottom ); | 56 | browser_bottom->setText( bottom ); |
57 | } | 57 | } |
58 | 58 | ||
59 | void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom ) | 59 | void DingWidget::parseInfo( QStringList &lines, QString &top, QString &bottom ) |
60 | { | 60 | { |
61 | 61 | ||
62 | QString current; | 62 | QString current; |
63 | QString left; | 63 | QString left; |
64 | QString right; | 64 | QString right; |
65 | QString html_header = "<html><table>"; | ||
66 | QString html_footer = "</table></html>"; | ||
67 | QString html_table_left = "<tr><td width='50'>"; | ||
68 | QString html_table_sep = "</td><td>"; | ||
69 | QString html_table_right = "</td></tr>"; | ||
65 | QRegExp reg_div( "\\" ); | 70 | QRegExp reg_div( "\\" ); |
66 | QRegExp reg_word( queryword ); | 71 | QRegExp reg_word( queryword ); |
67 | //QString substitute = "<font color=red>"+queryword+"</font>"; | 72 | //QString substitute = "<font color=red>"+queryword+"</font>"; |
68 | QString substitute = "<a href=''>"+queryword+"</a>"; | 73 | QString substitute = "<a href=''>"+queryword+"</a>"; |
69 | QStringList toplist, bottomlist; | 74 | QStringList toplist, bottomlist; |
70 | for( QStringList::Iterator it = lines.begin() ; it != lines.end() ; ++it ) | 75 | for( QStringList::Iterator it = lines.begin() ; it != lines.end() ; ++it ) |
71 | { | 76 | { |
72 | current = *it; | 77 | current = *it; |
73 | left = current.left( current.find(reg_div) ); | 78 | left = current.left( current.find(reg_div) ); |
74 | right = current.right( current.length() - current.find(reg_div) - 1 ); | 79 | right = current.right( current.length() - current.find(reg_div) - 1 ); |
75 | if ( left.contains( reg_word ) ) | 80 | if ( left.contains( reg_word ) ) |
76 | { | 81 | { |
77 | left.replace( queryword, substitute ); | 82 | left.replace( queryword, substitute ); |
78 | toplist.append( "<tr><td>" + left + "</td><td>" + right + "</td></tr>" ); | 83 | toplist.append( html_table_left + left + html_table_sep + right + html_table_right ); |
79 | } | 84 | } |
80 | else | 85 | else |
81 | { | 86 | { |
82 | right.replace( reg_word, substitute ); | 87 | right.replace( reg_word, substitute ); |
83 | bottomlist.append( "<tr><td>" + right + "</td><td>" + left + "</td></tr>" ); | 88 | bottomlist.append( html_table_left + right + html_table_sep + left + html_table_right ); |
84 | } | 89 | } |
85 | } | 90 | } |
86 | 91 | ||
87 | //thats it, the lists are rendered. Lets put them in one string | 92 | //thats it, the lists are rendered. Lets put them in one string |
88 | 93 | bottom = html_header + bottomlist.join( "<br>" ) + html_footer; | |
89 | bottom = "<html><table><tbody>"+bottomlist.join( "<br>" )+"</tbody></table></html>"; | 94 | top = html_header + toplist.join( "<br>" ) + html_footer; |
90 | top = "<html><table><tbody>"+toplist.join( "<br>" )+"</tbody></table></html>"; | ||
91 | } | 95 | } |