* Adium is the legal property of its developers, whose names are listed in the copyright file included * with this source distribution. * 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. #import <Adium/AIWindowController.h> AIDateTypeSinceYesterday, AIDateTypeWithinLastTwoWeeks, AIDateTypeWithinLastTwoMonths, @class AIAccount, AIChatLog, AIDividedAlternatingRowOutlineView, AIGradientView, AIListContact, AILoggerPlugin; @interface AILogViewerWindowController : AIWindowController <NSToolbarDelegate, NSOutlineViewDelegate, NSTableViewDelegate> { IBOutlet AIDividedAlternatingRowOutlineView *outlineView_contacts; IBOutlet NSSplitView *splitView_contacts; IBOutlet NSSplitView *splitView_logs; IBOutlet NSTableView *tableView_results; IBOutlet NSTextView *textView_content; IBOutlet NSView *view_DatePicker; IBOutlet NSPopUpButton *popUp_dateFilter; IBOutlet NSTextField *textField_resultCount; IBOutlet NSProgressIndicator *progressIndicator; IBOutlet NSTextField *textField_progress; IBOutlet NSSearchField *searchField_logs; IBOutlet NSDatePicker *datePicker; IBOutlet AIGradientView *view_FindNavigator; IBOutlet NSTextField *textField_findCount; IBOutlet NSSegmentedControl *segment_previousNext; //Array of selected / displayed logs. (Locked access) NSMutableArray *currentSearchResults; //Array of filtered/resulting logs NSRecursiveLock *resultsLock; //Lock before touching the array NSArray *displayedLogArray; //Currently selected/displayed log(s) LogSearchMode searchMode; //Currently selected search mode NSTableColumn *selectedColumn; //Selected/active sort column NSInteger activeSearchID; //ID of the active search thread, all other threads should quit BOOL searching; //YES if a search is in progress NSString *activeSearchString; //Current search string BOOL suppressSearchRequests; BOOL isOpeningForContact; NSInteger indexingUpdatesReceivedWhileSearching; //Number of times indexing has updated during the current search BOOL sortDirection; //Direction to sort NSTimer *refreshResultsTimer; NSInteger searchIDToReattemptWhenComplete; NSMutableSet *contactIDsToFilter; AIDateType filterDateType; NSMutableDictionary *logToGroupDict; NSMutableDictionary *logFromGroupDict; BOOL automaticSearch; //YES if this search was performed automatically for the user (view ___'s logs...) BOOL ignoreSelectionChange; //Hack to prevent automatic table selection changes from clearing the automaticSearch flag BOOL windowIsClosing; //YES only if windowShouldClose: has been called, to prevent actions after that point NSMutableDictionary *toolbarItems; NSImage *adiumIconHighlighted; NSMutableArray *toArray; //Array of contacts NSInteger cachedSelectionIndex; BOOL deleteOccurred; // YES only if a delete occurs, allowing the table to preserve selection after a search begins NSString *horizontalRule; NSUndoManager *undoManager; NSNumber *allContactsIdentifier; SKSearchRef currentSearch; NSLock *currentSearchLock; NSInvocationOperation *displayOperation; + (id)openForPlugin:(id)inPlugin; + (id)openForContact:(AIListContact *)inContact plugin:(id)inPlugin; + (id)openForChatName:(NSString *)inChatName withAccount:(AIAccount *)inAccount plugin:(id)inPlugin; + (id)openLogAtPath:(NSString *)inPath plugin:(id)inPlugin; + (id)existingWindowController; + (void)closeSharedInstance; - (void)displayLog:(AIChatLog *)log; - (void)setSearchMode:(LogSearchMode)inMode; - (void)setSearchString:(NSString *)inString; - (IBAction)updateSearch:(id)sender; - (IBAction)selectNextPreviousOccurrence:(id)sender; - (void)startSearchingClearingCurrentResults:(BOOL)clearCurrentResults; - (void)selectDisplayedLog; - (void)refreshResultsSearchIsComplete:(BOOL)searchIsComplete; - (void)updateProgressDisplay; - (void)logIndexingProgressUpdate; - (BOOL)searchShouldDisplayDocument:(SKDocumentRef)inDocument pathComponents:(NSArray *)pathComponents testDate:(BOOL)testDate; - (BOOL)chatLogMatchesDateFilter:(AIChatLog *)inChatLog; - (void)filterLogsWithSearch:(NSDictionary *)searchInfoDict; - (NSMenu *)dateTypeMenu; - (NSMenuItem *)_menuItemForDateType:(AIDateType)dateType dict:(NSDictionary *)dateTypeTitleDict; - (IBAction)selectDateType:(id)sender; - (void)selectedDateType:(AIDateType)dateType; - (void)configureDateFilter; - (NSString *)dateItemNibName; NSString *handleSpecialCasesForUIDAndServiceClass(NSString *contactUID, NSString *serviceClass);