From 8b7b5d15730e0586c531bf3867b8192d1e3689f4 Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Wed, 28 Jan 2009 17:18:41 +0000 Subject: Separate out the creation of a human readable string from the number of bytes into a category class method of NSString so we can potentially use it in other places. --- Source/SPStringAdditions.h | 29 +++++++++++++++++++ Source/SPStringAdditions.m | 69 ++++++++++++++++++++++++++++++++++++++++++++++ Source/SPTableInfo.h | 25 ++++++++++++----- Source/SPTableInfo.m | 66 +++++++++++++++++--------------------------- 4 files changed, 142 insertions(+), 47 deletions(-) create mode 100644 Source/SPStringAdditions.h create mode 100644 Source/SPStringAdditions.m (limited to 'Source') diff --git a/Source/SPStringAdditions.h b/Source/SPStringAdditions.h new file mode 100644 index 00000000..d2ac5d4b --- /dev/null +++ b/Source/SPStringAdditions.h @@ -0,0 +1,29 @@ +// +// SPStringAdditions.h +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on Jan 28, 2009 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at + +#import + +@interface NSString (SPStringAdditions) + ++ (NSString *)stringForByteSize:(int)byteSize; + +@end diff --git a/Source/SPStringAdditions.m b/Source/SPStringAdditions.m new file mode 100644 index 00000000..a51df693 --- /dev/null +++ b/Source/SPStringAdditions.m @@ -0,0 +1,69 @@ +// +// SPStringAdditions.m +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on Jan 28, 2009 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at + +#import "SPStringAdditions.h" + +@implementation NSString (SPStringAdditions) + +// ------------------------------------------------------------------------------- +// stringForByteSize: +// +// Returns a human readable version string of the supplied byte size. +// ------------------------------------------------------------------------------- ++ (NSString *)stringForByteSize:(int)byteSize +{ + float size = byteSize; + + NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; + + [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; + + if (size < 1023) { + [numberFormatter setFormat:@"#,##0 B"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithInt:size]]; + } + + size = (size / 1024); + + if (size < 1023) { + [numberFormatter setFormat:@"#,##0.0 KB"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:size]]; + } + + size = (size / 1024); + + if (size < 1023) { + [numberFormatter setFormat:@"#,##0.0 MB"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:size]]; + } + + size = (size / 1024); + + [numberFormatter setFormat:@"#,##0.0 GB"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:size]]; +} + +@end diff --git a/Source/SPTableInfo.h b/Source/SPTableInfo.h index 0613794c..4088feaf 100644 --- a/Source/SPTableInfo.h +++ b/Source/SPTableInfo.h @@ -2,14 +2,28 @@ // SPTableInfo.h // sequel-pro // -// Created by Ben Perry on 6/05/08. -// Copyright 2008 Ben Perry. All rights reserved. +// Created by Ben Perry on Jun 6, 2008 // +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at #import - -@interface SPTableInfo : NSObject { +@interface SPTableInfo : NSObject +{ IBOutlet id infoTable; IBOutlet id tableList; IBOutlet id tableListInstance; @@ -18,7 +32,4 @@ NSMutableArray *info; } -- (NSString *)sizeFromBytes:(int)bytes; - - @end diff --git a/Source/SPTableInfo.m b/Source/SPTableInfo.m index de50a59b..7bab9322 100644 --- a/Source/SPTableInfo.m +++ b/Source/SPTableInfo.m @@ -2,23 +2,41 @@ // SPTableInfo.m // sequel-pro // -// Created by Ben Perry on 6/05/08. -// Copyright 2008 Ben Perry. All rights reserved. +// Created by Ben Perry on Jun 6, 2008 // +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at #import "SPTableInfo.h" #import "ImageAndTextCell.h" -#import #import "CMMCPConnection.h" #import "CMMCPResult.h" #import "TableDocument.h" +#import "SPStringAdditions.h" + +#import @implementation SPTableInfo - (id)init { - self = [super init]; - info = [[NSMutableArray alloc] init]; + if ((self = [super init])) { + info = [[NSMutableArray alloc] init]; + } + return self; } @@ -28,11 +46,11 @@ selector:@selector(tableChanged:) name:NSTableViewSelectionDidChangeNotification object:tableList]; + [info addObject:NSLocalizedString(@"TABLE INFORMATION",@"header for table info pane")]; [infoTable reloadData]; } - - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -141,9 +159,9 @@ objectValueForTableColumn:(NSTableColumn *)aTableColumn // Add the update date to the infoTable [info addObject:[NSString stringWithFormat:@"updated: %@", [updateDateFormatter stringFromDate:update_date]]]; } - + [info addObject:[NSString stringWithFormat:@"rows: %@", [theRow objectForKey:@"Rows"]]]; - [info addObject:[NSString stringWithFormat:@"size: %@", [self sizeFromBytes:[[theRow objectForKey:@"Data_length"] intValue]]]]; + [info addObject:[NSString stringWithFormat:@"size: %@", [NSString stringForByteSize:[[theRow objectForKey:@"Data_length"] intValue]]]]; [info addObject:[NSString stringWithFormat:@"encoding: %@", [[[theRow objectForKey:@"Collation"] componentsSeparatedByString:@"_"] objectAtIndex:0]]]; [info addObject:[NSString stringWithFormat:@"auto_increment: %@", [theRow objectForKey:@"Auto_increment"]]]; @@ -155,36 +173,4 @@ objectValueForTableColumn:(NSTableColumn *)aTableColumn [infoTable reloadData]; } -- (NSString *)sizeFromBytes:(int)theSize -{ - NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; - float floatSize = theSize; - - [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; - - if (theSize < 1023) { - [numberFormatter setFormat:@"#,##0 B"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithInt:theSize]]; - } - - floatSize = floatSize / 1024; - - if (floatSize < 1023) { - [numberFormatter setFormat:@"#,##0.0 KB"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:floatSize]]; - } - - floatSize = floatSize / 1024; - - if (floatSize < 1023) { - [numberFormatter setFormat:@"#,##0.0 MB"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:floatSize]]; - } - - floatSize = floatSize / 1024; - - [numberFormatter setFormat:@"#,##0.0 GB"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:floatSize]]; -} - @end -- cgit v1.2.3