[zephyrchat-cvs] zchat/zChat ZCChatWindowController.mm,1.24,1.25 ZChatPrefsController.h,1.4,1.5 ZCha
Status: Alpha
Brought to you by:
akosut
|
From: <ak...@us...> - 2003-05-12 17:54:13
|
Update of /cvsroot/zephyrchat/zchat/zChat
In directory sc8-pr-cvs1:/tmp/cvs-serv32038
Modified Files:
ZCChatWindowController.mm ZChatPrefsController.h
ZChatPrefsController.mm
Log Message:
Add auto-save of transcripts.
Index: ZCChatWindowController.mm
===================================================================
RCS file: /cvsroot/zephyrchat/zchat/zChat/ZCChatWindowController.mm,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- ZCChatWindowController.mm 11 Apr 2003 17:01:09 -0000 1.24
+++ ZCChatWindowController.mm 12 May 2003 17:54:09 -0000 1.25
@@ -138,6 +138,22 @@
[[self window] setTitle:signature != nil ? signature : sender];
}
+ /* Set up auto-save */
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"AutoSaveChats"]) {
+ NSString *file = [[[NSUserDefaults standardUserDefaults] stringForKey:@"AutoSaveChatFolder"]
+ stringByAppendingPathComponent:
+ [NSString stringWithFormat:
+ [[NSDate date] descriptionWithCalendarFormat:NSLocalizedString(@"AUTO_SAVE_FORMAT", nil)
+ timeZone:nil locale:nil], [[self window] title]]];
+ if ([[NSFileManager defaultManager] createFileAtPath:file contents:[NSData data] attributes:nil]) {
+ [[self window] setRepresentedFilename:file];
+ } else {
+ NSBeginCriticalAlertSheet(NSLocalizedString(@"COULDNT_SAVE_TITLE", nil),
+ nil, nil, nil, [self window], nil, nil, nil, nil,
+ NSLocalizedString(@"COULDNT_SAVE_FMT", nil), file);
+ }
+ }
+
/* Get notified when there are changes to the input text */
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_updateFontButtons:)
name:NSTextViewDidChangeSelectionNotification object:nil];
@@ -653,6 +669,17 @@
[text endEditing];
+ /* Save changes if we are auto-saving*/
+ NSString *filename = [[self window] representedFilename];
+ if (filename != nil) {
+ if (![[_output RTFFromRange:NSMakeRange(0, [[_output textStorage] length])] writeToFile:filename
+ atomically:YES]) {
+ NSBeginCriticalAlertSheet(NSLocalizedString(@"COULDNT_SAVE_TITLE", nil),
+ nil, nil, nil, [self window], nil, nil, nil, nil,
+ NSLocalizedString(@"COULDNT_SAVE_FMT", nil), filename);
+ }
+ }
+
/* Scroll if necessary */
if (shouldScroll) {
[_output scrollRangeToVisible:NSMakeRange([text length], 0)];
Index: ZChatPrefsController.h
===================================================================
RCS file: /cvsroot/zephyrchat/zchat/zChat/ZChatPrefsController.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ZChatPrefsController.h 29 Mar 2003 19:21:38 -0000 1.4
+++ ZChatPrefsController.h 12 May 2003 17:54:10 -0000 1.5
@@ -18,11 +18,15 @@
IBOutlet NSButton *_natInUse;
IBOutlet NSTextField *_natAddress;
IBOutlet NSView *_appearanceView;
+ /* Appearance */
IBOutlet NSColorWell *_myColor;
IBOutlet NSColorWell *_senderColor;
IBOutlet NSColorWell *_myTextColor;
IBOutlet NSColorWell *_senderTextColor;
-
+ /* Transcripts */
+ IBOutlet NSButton *_saveCheckbox;
+ IBOutlet NSTextField *_saveFolder;
+
NSUserDefaults *_defs;
NSDictionary *_sites;
}
@@ -49,5 +53,9 @@
- (IBAction)changeSenderColor:(id)sender;
- (IBAction)changeMyTextColor:(id)sender;
- (IBAction)changeSenderTextColor:(id)sender;
+
+/* Save transcripts */
+- (IBAction)saveTranscripts:(id)sender;
+- (IBAction)setTranscriptFolder:(id)sender;
@end
Index: ZChatPrefsController.mm
===================================================================
RCS file: /cvsroot/zephyrchat/zchat/zChat/ZChatPrefsController.mm,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- ZChatPrefsController.mm 29 Mar 2003 19:21:38 -0000 1.8
+++ ZChatPrefsController.mm 12 May 2003 17:54:10 -0000 1.9
@@ -11,6 +11,10 @@
#import "NSWindowAdditions.h"
+@interface NSOpenPanel (NSOpenPanelUndocumentedMethods)
+- (void)_setIncludeNewFolderButton:(BOOL)flag;
+@end
+
@implementation ZChatPrefsController
- (id)init {
@@ -119,6 +123,15 @@
[_myTextColor setColor:[ZChatApp textColorForMe]];
[_senderColor setColor:[ZChatApp colorFor:nil]];
[_senderTextColor setColor:[ZChatApp textColorFor:nil]];
+
+ /* Autosave */
+ [_saveCheckbox setState:[_defs boolForKey:@"AutoSaveChats"] ? NSOnState : NSOffState];
+ NSString *directory = [_defs stringForKey:@"AutoSaveChatFolder"];
+ if (directory != nil)
+ [_saveFolder setStringValue:[[NSFileManager defaultManager] displayNameAtPath:directory]];
+ else
+ [_saveFolder setStringValue:@""];
+
[self switchToView:_appearanceView title:NSLocalizedString(@"PREFS_MESSAGES", nil)];
}
@@ -235,5 +248,41 @@
[_defs setObject:[NSKeyedArchiver archivedDataWithRootObject:[sender color]] forKey:@"SenderTextColor"];
}
+- (IBAction)saveTranscripts:(id)sender {
+ if ([sender state] == NSOnState) {
+ if ([_defs stringForKey:@"AutoSaveChatFolder"] == nil) {
+ [self setTranscriptFolder:nil];
+ }
+
+ if ([_defs stringForKey:@"AutoSaveChatFolder"] == nil) {
+ [sender setState:NSOffState];
+ return;
+ }
+ }
+
+ [_defs setBool:([sender state] == NSOnState) forKey:@"AutoSaveChats"];
+}
+
+- (IBAction)setTranscriptFolder:(id)sender {
+ NSOpenPanel *openPanel = [NSOpenPanel openPanel];
+
+ [openPanel setTitle:NSLocalizedString(@"Choose Transcript Folder", nil)];
+ [openPanel setPrompt:NSLocalizedString(@"Choose", nil)];
+
+ // Undocumented goodness:
+ if ([openPanel respondsToSelector:@selector(_setIncludeNewFolderButton:)])
+ [openPanel _setIncludeNewFolderButton:YES];
+
+ /* Pick directories only */
+ [openPanel setCanChooseDirectories:YES];
+ [openPanel setCanChooseFiles:NO];
+
+ if ([openPanel runModalForDirectory:[_defs stringForKey:@"AutoSaveChatFolder"]
+ file:nil types:nil] == NSOKButton) {
+ NSString *directory = [[openPanel filenames] objectAtIndex:0];
+ [_defs setObject:directory forKey:@"AutoSaveChatFolder"];
+ [_saveFolder setStringValue:[[NSFileManager defaultManager] displayNameAtPath:directory]];
+ }
+}
@end
|