MyTable.m
上传用户:xy800802
上传日期:2020-12-29
资源大小:194k
文件大小:6k
源码类别:

iPhone

开发平台:

Objective-C

  1. #import "MyTable.h"
  2. #import "DeletableCell.h"
  3. #import "MainView.h"
  4. #import <dirent.h>
  5. @implementation MyTable
  6. -(id)initWithFrame : (struct CGRect)rect
  7. {
  8. if((self == [super initWithFrame: rect]) != nil){
  9. colFilename = [ [ UITableColumn alloc ]
  10.             initWithTitle: @"Filename"
  11.             identifier:@"filename"
  12.             width: rect.size.width
  13.         ];
  14. [self addTableColumn: colFilename];
  15.         /*
  16. colType = [ [ UITableColumn alloc ]
  17.             initWithTitle: @"Type"
  18.             identifier:@"type"
  19.             width: 75
  20.         ];
  21. [self addTableColumn: colType];
  22. */
  23. [self setSeparatorStyle:1];
  24. [self setDelegate: self];
  25. [self setDataSource: self];
  26. [self setRowHeight: 64 ];
  27. fileList = [[NSMutableArray alloc] init];
  28. }
  29. return self;
  30. }
  31. -(void)dealloc
  32. {
  33. [ colFilename release ];
  34.     [ colType release ];
  35.     [ fileList release ];
  36. [super dealloc];
  37. }
  38. -(int)numberOfRowsInTable:(UITable *)_table
  39. {
  40. return [ fileList count ];
  41. }
  42. -(UITableCell *)table:(UITable *)table
  43.     cellForRow:(int)row
  44.     column:(UITableColumn *)col
  45. {
  46. //if (col == colFilename) {
  47.     DeletableCell *cell = [ [ DeletableCell alloc ] init ];
  48.     [ cell setTable: self ];
  49.     NSString *imgpath;
  50.     if([path isEqualToString:@"/Applications"])
  51.     {
  52.         imgpath = [[ NSString alloc ] initWithFormat: @"/Applications/%@/icon.png", [ fileList objectAtIndex: row ]];
  53.     }
  54.     else
  55.     {
  56.         NSString *filePath = [[ NSString alloc ] initWithFormat: @"%@/%@",path, [ fileList objectAtIndex: row ]];
  57.         BOOL isdir = NO;
  58.         NSFileManager *fileManager = [NSFileManager defaultManager]; 
  59.         [fileManager fileExistsAtPath:filePath isDirectory:&isdir];
  60.         if(isdir == YES)
  61.         {
  62.             //NSLog(@"folder");
  63.             imgpath = [[NSString alloc] initWithFormat: @"/Applications/FileManager.app/folder.png"];
  64.         }
  65.         else
  66.         {
  67.             if([filePath hasSuffix: @"png"] == YES)
  68.             {
  69.                 imgpath = [[NSString alloc] initWithFormat: @"/Applications/FileManager.app/png.png"];
  70.             }
  71.             else if([filePath hasSuffix: @"JPG"] == YES)
  72.             {
  73.                 imgpath = [[NSString alloc] initWithFormat: @"/Applications/FileManager.app/jpg.png"];
  74.             }
  75.             else if([filePath hasSuffix: @"plist"] == YES)
  76.             {
  77.                 imgpath = [[NSString alloc] initWithFormat: @"/Applications/FileManager.app/xml.png"];
  78.             }
  79.             else
  80.             {
  81.                 imgpath = [[NSString alloc] initWithFormat: @"/Applications/FileManager.app/file.png"];
  82.             }
  83.             //NSLog(@"file");
  84.         }
  85.         [filePath release];
  86.     }
  87.     UIImageView *image = [ [ UIImage alloc ]
  88.         initWithContentsOfFile: imgpath];
  89.     [ cell setTitle: [ [ fileList objectAtIndex: row ]
  90.     stringByDeletingPathExtension ]];
  91.     [ cell setImage: image ];
  92.     [ cell setShowDisclosure: YES ];
  93.     [ cell setDisclosureStyle: 3 ];
  94.     return [ cell autorelease ];
  95.     //}
  96.     /*
  97.     else if (col == colType) {
  98.         DeletableCell *cell = [ [ DeletableCell alloc ] init ];
  99.         [ cell setTable: self ];
  100.         [ cell setTitle: extension ];
  101.         return [ cell autorelease ];
  102.     }
  103.     */
  104. }
  105. -(int)swipe:(int)type withEvent:(struct __GSEvent *)event;
  106. {
  107.     CGPoint point= GSEventGetLocationInWindow(event);
  108.     CGPoint offset = _startOffset;
  109.     if (point.x < 100 || point.x > 200) {
  110.         point.x += offset.x;
  111.         point.y += offset.y-48;
  112.         int row = [ self rowAtPoint:point ];
  113.         [ [ self visibleCellForRow: row column: 0 ]
  114.            _showDeleteOrInsertion: YES
  115.            withDisclosure: NO
  116.            animated: YES
  117.            isDelete: YES
  118.            andRemoveConfirmation: YES
  119.         ];
  120.         return [ super swipe:type withEvent:event ];
  121.     } 
  122. //return 0;
  123. }
  124. -(void)_willDeleteRow:(int)row
  125.     forTableCell:(id)cell
  126.     viaEdge:(int)edge
  127.     animateOthers:(BOOL)animate
  128. {
  129.     [ fileList removeObjectAtIndex: row ];
  130.     [ super _willDeleteRow: row forTableCell: cell viaEdge: edge
  131.       animateOthers: animate ];
  132. }
  133. -(void)tableRowSelected:(NSNotification *)notification
  134. {
  135.     NSString *fileName = [ fileList objectAtIndex: [ self selectedRow ] ];
  136. // file selected
  137. NSLog(fileName);
  138.     //[self setPath: [path stringByAppendingPathComponent: fileName]];
  139.     //[self reloadData];
  140.     [(MainView *)mainView showSub:[path stringByAppendingPathComponent: fileName]];
  141. }
  142. -(void)setPath:(NSString *)_path
  143. {
  144. path = [ _path copy];
  145. }
  146. -(void)setView:(UIView *)_mainView
  147. {
  148.     mainView = _mainView;
  149. }
  150. -(void)setExtension:(NSString *)_extension
  151. {
  152. extension = [ _extension copy ];
  153. }
  154. -(void)reloadData
  155. {
  156. NSFileManager *fileManager = [ NSFileManager defaultManager ];
  157.     NSDirectoryEnumerator *dirEnum;
  158.     NSString *file;
  159.     BOOL isdir;
  160.     if ([ fileManager fileExistsAtPath: path isDirectory:&isdir] == NO) {
  161.         return;
  162.     }
  163.     if(!isdir)
  164.     {
  165.         return;
  166.     }
  167.     [ fileList removeAllObjects ];
  168.     /* 会获取所有目录及子目录 */
  169.     //dirEnum = [ [ NSFileManager defaultManager ] enumeratorAtPath: path ];
  170.     //while ((file = [ dirEnum nextObject ])) {
  171.         //if ([ file hasSuffix: extension ] == YES) {
  172.     //        [ fileList addObject: file ];
  173.         //}
  174.     //}
  175.     /* 会获取所有目录及子目录 */
  176.     //NSArray *flist = [[ NSFileManager defaultManager ] subpathsAtPath: path];
  177.     //int i=0;
  178.     //NSEnumerator *enumerator = [flist objectEnumerator];
  179.     //id obj;
  180.     //while (obj = [enumerator nextObject]) {
  181.     //    file = (NSString*)obj;
  182.     //    [ fileList addObject: file ];
  183.     //}
  184.     NSArray *flist = [[NSFileManager defaultManager] directoryContentsAtPath: path];
  185.     int i=0;
  186.     NSEnumerator *enumerator = [flist objectEnumerator];
  187.     id obj;
  188.     while (obj = [enumerator nextObject]) {
  189.         file = (NSString*)obj;
  190.         [ fileList addObject: file ];
  191.     }
  192.     /*
  193.     // 不支持中文
  194.     DIR     *dp;  
  195.     struct   dirent   *dirp;  
  196.     const char *fpath = [path UTF8String];
  197.     dp=opendir(fpath);  
  198.    
  199.     while((dirp=readdir(dp))!=NULL)
  200.     {  
  201.         if(strcmp(".",dirp->d_name)==0 || strcmp("..",dirp->d_name)==0) continue;
  202.         NSString *file = [Util GetNSString : dirp->d_name];  
  203.         [ fileList addObject: file ];
  204.     }  
  205.     close(dp);
  206.     */
  207.     [ super reloadData ];
  208. }
  209. @end