Skip to content

Commit

Permalink
修改因dict的接口无法使用引起的单词无法查询。
Browse files Browse the repository at this point in the history
  • Loading branch information
tanhaogg committed Jun 1, 2012
1 parent 40f1bfd commit 0215929
Show file tree
Hide file tree
Showing 8 changed files with 200 additions and 84 deletions.
2 changes: 2 additions & 0 deletions Classes/MainViewController.h
Expand Up @@ -21,4 +21,6 @@
- (IBAction)fontChangeClick:(NSSegmentedControl *)sender;

- (IBAction)undoClick:(NSSegmentedControl *)sender;

- (IBAction)supportClick:(id)sender;
@end
4 changes: 4 additions & 0 deletions Classes/MainViewController.m
Expand Up @@ -106,6 +106,10 @@ - (IBAction)undoClick:(NSSegmentedControl *)sender{
}
}

- (IBAction)supportClick:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.tanhao.me"]];
}

#pragma mark -
#pragma mark Service
Expand Down
13 changes: 13 additions & 0 deletions Classes/THButton.h
@@ -0,0 +1,13 @@
//
// THButton.h
// Vdisk
//
// Created by Hao Tan on 12/02/08.
// Copyright (c) 2012年 tanhao. All rights reserved.
//

#import <AppKit/AppKit.h>

@interface THButton : NSButton

@end
24 changes: 24 additions & 0 deletions Classes/THButton.m
@@ -0,0 +1,24 @@
//
// THButton.m
// Vdisk
//
// Created by Hao Tan on 12/02/08.
// Copyright (c) 2012年 tanhao. All rights reserved.
//

#import "THButton.h"

@implementation THButton

- (void)awakeFromNib
{
[super awakeFromNib];
}

- (void)resetCursorRects
{
[super resetCursorRects];
[self addCursorRect:[self bounds] cursor:[NSCursor pointingHandCursor]];
}

@end
66 changes: 61 additions & 5 deletions Classes/WordsViewController.m
Expand Up @@ -56,7 +56,8 @@ - (IBAction)translateBegin:(NSButton *)sender
}

//此处利用了异步加载
NSString *urlstring = [NSString stringWithFormat:@"http://dict.cn/ws.php?q=%@",string];
//NSString *urlstring = [NSString stringWithFormat:@"http://dict.cn/ws.php?q=%@",string];
NSString *urlstring = [NSString stringWithFormat:@"http://fanyi.youdao.com/openapi.do?keyfrom=tanhao&key=881024171&type=data&doctype=xml&version=1.1&q=%@",string];
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)urlstring, NULL, NULL, kCFStringEncodingUTF8 );
[[MKServiceManager sharedManager] cancelForDelegate:self];
[[MKServiceManager sharedManager] downloadWithURL:[NSURL URLWithString:encodedString] delegate:self context:nil];
Expand Down Expand Up @@ -126,11 +127,62 @@ - (void)redoAction
#pragma mark -
#pragma mark MKServiceManagerDelegate

- (NSString *)readXmlInfo:(NSString *)aString{
- (NSString *)readXmlInfo:(NSString *)aString
{
NSMutableString *displayString=[[[NSMutableString alloc] init] autorelease];

NSError *error;
//NSStringEncoding encoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSStringEncoding encoding=NSUTF8StringEncoding;
NSData *data=[aString dataUsingEncoding:encoding];
GDataXMLDocument* document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
GDataXMLElement *rootNode = [document rootElement];

//自动纠错
NSArray *sugg=[rootNode nodesForXPath:@"//dict/sugg" error:&error];
if ([sugg count]>0) {
[displayString appendFormat:@"您要查找的是不是:\n"];
for(GDataXMLNode* node in sugg){
[displayString appendFormat:@"%@ ",[node stringValue]];
}
}
//读音
NSArray *pron = [rootNode nodesForXPath:@"//basic/phonetic" error:&error];
if ([pron count]>0) {
[displayString appendFormat:@"读音: %@\n\n",[[pron objectAtIndex:0] stringValue]];
}
//解释
NSArray *def = [rootNode nodesForXPath:@"//basic/explains/ex" error:&error];
if ([def count]>0)
{
[displayString appendFormat:@"释义:\n"];
for (int i=0; i<[def count]; i++)
{
[displayString appendFormat:@"%@\n",[[def objectAtIndex:i] stringValue]];
}
}
//例句
NSArray *orig = [rootNode nodesForXPath:@"//explain/key" error:&error];
NSArray *trans= [rootNode nodesForXPath:@"//explain/value/ex" error:&error];
if ([orig count]>0) {
[displayString appendFormat:@"\n例句:\n"];
for (int i=0; i<[orig count]; i++)
{
[displayString appendFormat:@"%@\n%@\n",[[orig objectAtIndex:i] stringValue],[[trans objectAtIndex:i] stringValue]];
}
}

[document release];
return displayString;
}


- (NSString *)readXmlInfoOld:(NSString *)aString{
NSMutableString *displayString=[[[NSMutableString alloc] init] autorelease];

NSError *error;
NSStringEncoding encoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//NSStringEncoding encoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSStringEncoding encoding=NSUTF8StringEncoding;
NSData *data=[aString dataUsingEncoding:encoding];
GDataXMLDocument* document = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
GDataXMLElement *rootNode = [document rootElement];
Expand Down Expand Up @@ -172,7 +224,8 @@ - (NSString *)readXmlInfo:(NSString *)aString{

- (void)serviceFinish:(MKServiceManager *)webService didReceiveData:(NSData *)data context:(id)context
{
NSStringEncoding encoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//NSStringEncoding encoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSStringEncoding encoding=NSUTF8StringEncoding;
NSString *receiveString = [[NSString alloc] initWithData:data encoding:encoding];
if (receiveString==nil)
{
Expand Down Expand Up @@ -217,7 +270,10 @@ - (void)quickTranslateWithString:(NSString *)str

- (void)setFirstResponder
{
[searchField becomeFirstResponder];
dispatch_async(dispatch_get_main_queue(), ^{
[self.view.window makeFirstResponder:searchField];
});
//[searchField becomeFirstResponder];
}

- (void)changeFont:(NSFont *)aFont
Expand Down
2 changes: 1 addition & 1 deletion MKDic-Info.plist
Expand Up @@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>3.0</string>
<string>3.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
Expand Down
6 changes: 6 additions & 0 deletions MKDic.xcodeproj/project.pbxproj
Expand Up @@ -7,6 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
04BA7F9315788115002D217C /* THButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 04BA7F9215788115002D217C /* THButton.m */; };
04EAAA6F1497B74F00EEF4E6 /* MKServiceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04EAAA6B1497B74F00EEF4E6 /* MKServiceManager.m */; };
04EAAA701497B74F00EEF4E6 /* MKWebService.m in Sources */ = {isa = PBXBuildFile; fileRef = 04EAAA6D1497B74F00EEF4E6 /* MKWebService.m */; };
04EAAA711497B74F00EEF4E6 /* readme.txt in Resources */ = {isa = PBXBuildFile; fileRef = 04EAAA6E1497B74F00EEF4E6 /* readme.txt */; };
Expand Down Expand Up @@ -47,6 +48,8 @@
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
04BA7F9115788115002D217C /* THButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = THButton.h; sourceTree = "<group>"; };
04BA7F9215788115002D217C /* THButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = THButton.m; sourceTree = "<group>"; };
04EAAA6A1497B74F00EEF4E6 /* MKServiceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKServiceManager.h; sourceTree = "<group>"; };
04EAAA6B1497B74F00EEF4E6 /* MKServiceManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKServiceManager.m; sourceTree = "<group>"; };
04EAAA6C1497B74F00EEF4E6 /* MKWebService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKWebService.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -216,6 +219,8 @@
children = (
04EAAA691497B74F00EEF4E6 /* MKWebService_1.1.0 */,
40C823D013B335CE008D0451 /* config.h */,
04BA7F9115788115002D217C /* THButton.h */,
04BA7F9215788115002D217C /* THButton.m */,
400AA21113A9BB4D00DFD74F /* MKDicAppDelegate.h */,
400AA21213A9BB4D00DFD74F /* MKDicAppDelegate.m */,
400AA25F13A9C5EA00DFD74F /* GDataXML */,
Expand Down Expand Up @@ -446,6 +451,7 @@
B89CCC3713AF80920009B69D /* WordNoteDao.m in Sources */,
04EAAA6F1497B74F00EEF4E6 /* MKServiceManager.m in Sources */,
04EAAA701497B74F00EEF4E6 /* MKWebService.m in Sources */,
04BA7F9315788115002D217C /* THButton.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down

0 comments on commit 0215929

Please sign in to comment.