Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions | Protected Attributes | Private Member Functions
ProgressDlgController Class Reference

#import <ProgressDlgController.h>

Inheritance diagram for ProgressDlgController:
Inheritance graph
[legend]
Collaboration diagram for ProgressDlgController:
Collaboration graph
[legend]

List of all members.

Public Member Functions

(void- autosaveWindowFrame
(void- setupDownloadTimer
(void- killDownloadTimer
(void- setDownloadProgress:
(NSString *) - formatTime:
(NSString *) - formatFuzzyTime:
(NSString *) - formatBytes:
(void- dealloc [implementation]
(void- windowDidLoad [implementation]
(NSArray *) - toolbarAllowedItemIdentifiers: [implementation]
(NSArray *) - toolbarDefaultItemIdentifiers: [implementation]
(BOOL- validateToolbarItem: [implementation]
(NSToolbarItem *) - toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar: [implementation]
(void- cancel [implementation]
(void- showFile [implementation]
(void- openFile [implementation]
(void- toggleLeaveOpen [implementation]
(void- windowWillClose: [implementation]
(BOOL- windowShouldClose: [implementation]
(void- onStartDownload: [implementation]
(void- onEndDownload [implementation]
(void- setProgressTo:ofMax: [implementation]
(void- setDownloadListener: [implementation]
(void- setSourceURL: [implementation]
(void- setDestinationPath: [implementation]

Protected Attributes

IBOutlet NSTextField * mElapsedTimeLabel
IBOutlet NSTextField * mFromField
IBOutlet NSTextField * mStatusLabel
IBOutlet NSTextField * mTimeLeftLabel
IBOutlet NSTextField * mToField
IBOutlet NSProgressIndicator * mProgressBar
NSToolbarItem * leaveOpenToggleToolbarItem
BOOL mSaveFileDialogShouldStayOpen
BOOL mIsFileSave
BOOL mDownloadIsComplete
long mCurrentProgress
CHDownloadermDownloader
NSTimer * mDownloadTimer

Private Member Functions

(void- setupToolbar [implementation]

Detailed Description

Definition at line 54 of file ProgressDlgController.h.


Member Function Documentation

Definition at line 160 of file ProgressDlgController.mm.

{
  [[self window] saveFrameUsingName: ProgressWindowFrameSaveName];
}

Here is the caller graph for this function:

- (void) cancel [implementation]

Definition at line 220 of file ProgressDlgController.mm.

{
  if (mDownloader)    // we should always have one
    mDownloader->CancelDownload();
  
  // clean up downloaded file. - do it here on in CancelDownload?
  NSFileManager *fileManager = [NSFileManager defaultManager];
  NSString *thePath = [[mToField stringValue] stringByExpandingTildeInPath];
  if ([fileManager isDeletableFileAtPath:thePath])
    // if we delete it, fantastic.  if not, oh well.  better to move to trash instead?
    [fileManager removeFileAtPath:thePath handler:nil];
  
  // we can _not_ set the |mIsDownloadComplete| flag here because the download really
  // isn't done yet. We'll probably continue to process more PLEvents that are already
  // in the queue until we get a STATE_STOP state change. As a result, we just keep
  // going until that comes in (and it will, because we called CancelDownload() above).
  // Ensure that the window goes away when we get there by flipping the 'stay alive'
  // flag. (bug 154913)
  mSaveFileDialogShouldStayOpen = NO;
}

Here is the call graph for this function:

Here is the caller graph for this function:

- (void) dealloc [implementation]

Definition at line 83 of file ProgressDlgController.mm.

{
  // if we get here because we're quitting, the listener will still be alive
  // yet we're going away. As a result, we need to tell the d/l listener to
  // forget it ever met us and necko will clean it up on its own.
  if ( mDownloader) 
    mDownloader->DetachDownloadDisplay();
  NS_IF_RELEASE(mDownloader);
  [super dealloc];
}

Here is the call graph for this function:

- (NSString *) formatBytes: (float)  aBytes

Definition at line 365 of file ProgressDlgController.mm.

                        :(float)bytes
{   // this is simpler than my first try.  I peaked at Omnigroup byte formatting code.
    // if bytes are negative, we return question marks.
  if (bytes < 0)
    return [[[NSString alloc] initWithString:@"???"] autorelease];
  // bytes first.
  if (bytes < 1024)
    return [[[NSString alloc] initWithFormat:@"%.1f bytes",bytes] autorelease];
  // kb
  bytes = bytes/1024;
  if (bytes < 1024)
    return [[[NSString alloc] initWithFormat:@"%.1f KB",bytes] autorelease];
  // mb
  bytes = bytes/1024;
  if (bytes < 1024)
    return [[[NSString alloc] initWithFormat:@"%.1f MB",bytes] autorelease];
  // gb
  bytes = bytes/1024;
  return [[[NSString alloc] initWithFormat:@"%.1f GB",bytes] autorelease];
}

Here is the caller graph for this function:

- (NSString *) formatFuzzyTime: (int aSeconds

Definition at line 339 of file ProgressDlgController.mm.

                            :(int)seconds
{
  // check for seconds first
  if (seconds < 60) {
    if (seconds < 7)
      return [[[NSString alloc] initWithFormat:NSLocalizedString(@"UnderSec",@"Under %d seconds"),5] autorelease];
    if (seconds < 13)
      return [[[NSString alloc] initWithFormat:NSLocalizedString(@"UnderSec",@"Under %d seconds"),10] autorelease];
    return [[[NSString alloc] initWithString:NSLocalizedString(@"UnderMin",@"Under a minute")] autorelease];
  }    
  // seconds becomes minutes and we keep checking.  
  seconds = seconds/60;
  if (seconds < 60) {
    if (seconds < 2)
       return [[[NSString alloc] initWithString:NSLocalizedString(@"AboutMin",@"About a minute")] autorelease];
    // OK, tell the good people how much time we have left.
    return [[[NSString alloc] initWithFormat:NSLocalizedString(@"AboutMins",@"About %d minutes"),seconds] autorelease];
  }
  //this download will never seemingly never end. now seconds become hours.
  seconds = seconds/60;
  if (seconds < 2)
    return [[[NSString alloc] initWithString:NSLocalizedString(@"AboutHour",@"Over an hour")] autorelease];
  return [[[NSString alloc] initWithFormat:NSLocalizedString(@"AboutHours",@"Over %d hours"),seconds] autorelease];
}

Here is the caller graph for this function:

- (NSString *) formatTime: (int aSeconds

Definition at line 315 of file ProgressDlgController.mm.

                       :(int)seconds
{
  NSMutableString *theTime =[[[NSMutableString alloc] initWithCapacity:8] autorelease];
  [theTime setString:@""];
  NSString *padZero = [NSString stringWithString:@"0"];
  //write out new elapsed time
  if (seconds >= 3600){
    [theTime appendFormat:@"%d:",(seconds / 3600)];
    seconds = seconds % 3600;
  }
  NSString *elapsedMin = [NSString stringWithFormat:@"%d:",(seconds / 60)];
  if ([elapsedMin length] == 2)
    [theTime appendString:[padZero stringByAppendingString:elapsedMin]];
  else
    [theTime appendString:elapsedMin];
  seconds = seconds % 60;
  NSString *elapsedSec = [NSString stringWithFormat:@"%d",seconds];
  if ([elapsedSec length] == 2)
    [theTime appendString:elapsedSec];
  else
    [theTime appendString:[padZero stringByAppendingString:elapsedSec]];
  return theTime;
}

Here is the caller graph for this function:

Definition at line 297 of file ProgressDlgController.mm.

{
  if (mDownloadTimer) {
    [mDownloadTimer invalidate];
    [mDownloadTimer release];
    mDownloadTimer = nil;
  }    
}

Here is the caller graph for this function:

- (void) onEndDownload [implementation]

Reimplemented from <CHDownloadProgressDisplay>.

Definition at line 451 of file ProgressDlgController.mm.

{
  // if we're quitting, our progress window is already gone and we're in the
  // process of shutting down gecko and all the d/l listeners. The timer, at 
  // that point, is the only thing keeping us alive. Killing it will cause
  // us to go away immediately, so kung-fu deathgrip it until we're done twiddling
  // bits on ourself.
  [self retain];                           // Enter The Dragon!
    [self killDownloadTimer];
    [self setDownloadProgress:nil];
  [self release];
}

Here is the call graph for this function:

- (void) onStartDownload: (BOOL isFileSave [implementation]

Reimplemented from <CHDownloadProgressDisplay>.

Definition at line 440 of file ProgressDlgController.mm.

                       :(BOOL)isFileSave;
{
  mIsFileSave = isFileSave;
  
  [self window];            // make the window
  [[self window] setFrameUsingName: ProgressWindowFrameSaveName];

  [self showWindow: self];
  [self setupDownloadTimer];
}

Here is the call graph for this function:

- (void) openFile [implementation]

Definition at line 251 of file ProgressDlgController.mm.

{
  NSString *theFile = [[mToField stringValue] stringByExpandingTildeInPath];
  if ([[NSWorkspace sharedWorkspace] openFile:theFile])
    return;
  // hmmm.  it didn't work.  that's odd.  need localized error message. for now, just beep.
  NSBeep();
    
}

Here is the caller graph for this function:

- (void) setDestinationPath: (NSString*)  aDestPath [implementation]

Reimplemented from <CHDownloadProgressDisplay>.

Definition at line 497 of file ProgressDlgController.mm.

                          :(NSString*)aDestPath
{
  [mToField setStringValue: [aDestPath stringByAbbreviatingWithTildeInPath]];
  [mToField display];   // force an immmeditate update
  
  // also set the window title
  NSString* downloadFileName = [aDestPath lastPathComponent];
  if ([downloadFileName length] == 0)
    downloadFileName = aDestPath;
  
  [[self window] setTitle:[NSString stringWithFormat:NSLocalizedString(@"DownloadingTitle", @""), downloadFileName]];
}
- (void) setDownloadListener: (CHDownloader*)  aDownloader [implementation]

Reimplemented from <CHDownloadProgressDisplay>.

Definition at line 483 of file ProgressDlgController.mm.

                           : (CHDownloader*)aDownloader
{
  if (mDownloader != aDownloader)
    NS_IF_RELEASE(mDownloader);

  NS_IF_ADDREF(mDownloader = aDownloader);
}
- (void) setDownloadProgress: (NSTimer *)  aTimer

Definition at line 387 of file ProgressDlgController.mm.

                           :(NSTimer *)downloadTimer;
{
  // XXX this logic needs cleaning up.
  
  // Ack! we're closing the window with the download still running!
  if (mDownloadIsComplete)
  {
    [[self window] performClose:self];  
    return;
  }
  // get the elapsed time
  NSArray *elapsedTimeArray = [[mElapsedTimeLabel stringValue] componentsSeparatedByString:@":"];
  int j = [elapsedTimeArray count];
  int elapsedSec = [[elapsedTimeArray objectAtIndex:(j-1)] intValue] + [[elapsedTimeArray objectAtIndex:(j-2)] intValue]*60;
  if (j==3)  // this download is taking forever.
    elapsedSec += [[elapsedTimeArray objectAtIndex:0] intValue]*3600;
  // update elapsed time
  [mElapsedTimeLabel setStringValue:[self formatTime:(++elapsedSec)]];
  // for status field & time left
  float maxBytes = ([mProgressBar maxValue]);
  float byteSec = mCurrentProgress/elapsedSec;
  // OK - if downloadTimer is nil, we're done - fix maxBytes value for status report.
  if (!downloadTimer)
    maxBytes = mCurrentProgress;
  // update status field
  NSString *labelString = NSLocalizedString(@"LabelString",@"%@ of %@ total (at %@/sec)");
  [mStatusLabel setStringValue: [NSString stringWithFormat:labelString, [self formatBytes:mCurrentProgress], [self formatBytes:maxBytes], [self formatBytes:byteSec]]];
  // updating estimated time left field
  // if maxBytes < 0, can't calc time left.
  // if !downloadTimer, download is finished.  either way, make sure time left is 0.
  if ((maxBytes > 0) && (downloadTimer))
  {
    int secToGo = (int)ceil((elapsedSec*maxBytes/mCurrentProgress) - elapsedSec);
    [mTimeLeftLabel setStringValue:[self formatFuzzyTime:secToGo]];
  }
  else if (!downloadTimer)
  {                            // download done.  Set remaining time to 0, fix progress bar & cancel button
    mDownloadIsComplete = YES;            // all done. we got a STATE_STOP
    [mTimeLeftLabel setStringValue:@""];
    [self setProgressTo:mCurrentProgress ofMax:mCurrentProgress];
    if (!mSaveFileDialogShouldStayOpen)
      [[self window] performClose:self];  // close window
    else
      [[self window] update];             // redraw window
  }
  else //maxBytes is undetermined.  Set remaining time to question marks.
      [mTimeLeftLabel setStringValue:@"???"];
}

Here is the call graph for this function:

Here is the caller graph for this function:

- (void) setProgressTo: (long aCurProgress
ofMax: (long aMaxProgress 
[implementation]

Reimplemented from <CHDownloadProgressDisplay>.

Definition at line 464 of file ProgressDlgController.mm.

                     :(long)aCurProgress ofMax:(long)aMaxProgress
{
  mCurrentProgress = aCurProgress;         // fall back for stat calcs

  if (![mProgressBar isIndeterminate])      //most likely - just update value
  {
    if (aCurProgress == aMaxProgress)      //handles little bug in FTP download size
      [mProgressBar setMaxValue:aMaxProgress];

    [mProgressBar setDoubleValue:aCurProgress];
  }
  else if (aMaxProgress > 0)                    // ok, we're starting up with good max & cur values
  {
    [mProgressBar setIndeterminate:NO];
    [mProgressBar setMaxValue:aMaxProgress];
    [mProgressBar setDoubleValue:aCurProgress];
  } // if neither case was true, it's barber pole city.
}

Here is the caller graph for this function:

- (void) setSourceURL: (NSString*)  aSourceURL [implementation]

Reimplemented from <CHDownloadProgressDisplay>.

Definition at line 491 of file ProgressDlgController.mm.

                    :(NSString*)aSourceURL
{
  [mFromField setStringValue: aSourceURL];  
  [mFromField display];  // force an immmeditate update
}

Definition at line 305 of file ProgressDlgController.mm.

{
  [self killDownloadTimer];
  mDownloadTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0
                                                     target:self
                                                   selector:@selector(setDownloadProgress:)
                                                   userInfo:nil
                                                    repeats:YES] retain];
}

Here is the call graph for this function:

Here is the caller graph for this function:

- (void) setupToolbar [implementation]

Definition at line 112 of file ProgressDlgController.mm.

{
    NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier:SaveFileToolbarIdentifier] autorelease];

    [toolbar setDisplayMode:NSToolbarDisplayModeDefault];
    [toolbar setAllowsUserCustomization:YES];
    [toolbar setAutosavesConfiguration:YES];
    [toolbar setDelegate:self];
    [[self window] setToolbar:toolbar];
}

Here is the caller graph for this function:

- (void) showFile [implementation]

Definition at line 241 of file ProgressDlgController.mm.

{
  NSString *theFile = [[mToField stringValue] stringByExpandingTildeInPath];
  if ([[NSWorkspace sharedWorkspace] selectFile:theFile
                       inFileViewerRootedAtPath:[theFile stringByDeletingLastPathComponent]])
    return;
  // hmmm.  it didn't work.  that's odd. need localized error messages. for now, just beep.
  NSBeep();
}

Here is the caller graph for this function:

- (void) toggleLeaveOpen [implementation]

Definition at line 261 of file ProgressDlgController.mm.

{
    if ( ! mSaveFileDialogShouldStayOpen ) {
        mSaveFileDialogShouldStayOpen = YES;
        [leaveOpenToggleToolbarItem setLabel:NSLocalizedString(@"Leave Open",@"Leave Open")];
        [leaveOpenToggleToolbarItem setPaletteLabel:NSLocalizedString(@"Toggle Close Behavior",@"Toggle Close Behavior")];
        [leaveOpenToggleToolbarItem setToolTip:NSLocalizedString(@"LeaveOpenToolTip",@"Window will stay open when download finishes.")];
        [leaveOpenToggleToolbarItem setImage:[NSImage imageNamed:@"saveLeaveOpenYES"]];
    } else {
        mSaveFileDialogShouldStayOpen = NO;
        [leaveOpenToggleToolbarItem setLabel:NSLocalizedString(@"Close When Done",@"Close When Done")];
        [leaveOpenToggleToolbarItem setPaletteLabel:NSLocalizedString(@"Toggle Close Behavior",@"Toggle Close Behavior")];
        [leaveOpenToggleToolbarItem setToolTip:NSLocalizedString(@"CloseWhenDoneToolTip",@"Window will close automatically when download finishes.")];
        [leaveOpenToggleToolbarItem setImage:[NSImage imageNamed:@"saveLeaveOpenNO"]];
    }
    
    nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
    prefs->SetBoolPref("browser.download.progressDnldDialog.keepAlive", mSaveFileDialogShouldStayOpen);
}

Here is the call graph for this function:

- (NSToolbarItem *) toolbar: (NSToolbar *)  toolbar
itemForItemIdentifier: (NSString *)  itemIdent
willBeInsertedIntoToolbar: (BOOL willBeInserted 
[implementation]

Definition at line 165 of file ProgressDlgController.mm.

                           :(NSToolbar *)toolbar
      itemForItemIdentifier:(NSString *)itemIdent
  willBeInsertedIntoToolbar:(BOOL)willBeInserted
{
    NSToolbarItem *toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdent] autorelease];

    if ( [itemIdent isEqual:CancelToolbarItemIdentifier] ) {
        [toolbarItem setLabel:NSLocalizedString(@"Cancel",@"Cancel")];
        [toolbarItem setPaletteLabel:NSLocalizedString(@"CancelPaletteLabel",@"Cancel Download")];
        [toolbarItem setToolTip:NSLocalizedString(@"CancelToolTip",@"Cancel this file download")];
        [toolbarItem setImage:[NSImage imageNamed:@"saveCancel"]];
        [toolbarItem setTarget:self];
        [toolbarItem setAction:@selector(cancel)];
    } else if ( [itemIdent isEqual:ShowFileToolbarItemIdentifier] ) {
        [toolbarItem setLabel:NSLocalizedString(@"Show File",@"Show File")];
        [toolbarItem setPaletteLabel:NSLocalizedString(@"Show File",@"Show File")];
        [toolbarItem setToolTip:NSLocalizedString(@"ShowToolTip",@"Show the saved file in the Finder")];
        [toolbarItem setImage:[NSImage imageNamed:@"saveShowFile"]];
        [toolbarItem setTarget:self];
        [toolbarItem setAction:@selector(showFile)];
    } else if ( [itemIdent isEqual:OpenFileToolbarItemIdentifier] ) {
        [toolbarItem setLabel:NSLocalizedString(@"Open File",@"Open File")];
        [toolbarItem setPaletteLabel:NSLocalizedString(@"Open File",@"Open File")];
        [toolbarItem setToolTip:NSLocalizedString(@"OpenToolTip",@"Open the saved file in its default application.")];
        [toolbarItem setImage:[NSImage imageNamed:@"saveOpenFile"]];
        [toolbarItem setTarget:self];
        [toolbarItem setAction:@selector(openFile)];
    } else if ( [itemIdent isEqual:LeaveOpenToolbarItemIdentifier] ) {
        if ( !mIsFileSave ) {
            if ( mSaveFileDialogShouldStayOpen ) {
                [toolbarItem setLabel:NSLocalizedString(@"Leave Open",@"Leave Open")];
                [toolbarItem setPaletteLabel:NSLocalizedString(@"Toggle Close Behavior",@"Toggle Close Behavior")];
                [toolbarItem setToolTip:NSLocalizedString(@"LeaveOpenToolTip",@"Window will stay open when download finishes.")];
                [toolbarItem setImage:[NSImage imageNamed:@"saveLeaveOpenYES"]];
                [toolbarItem setTarget:self];
                [toolbarItem setAction:@selector(toggleLeaveOpen)];
            } else {
                [toolbarItem setLabel:NSLocalizedString(@"Close When Done",@"Close When Done")];
                [toolbarItem setPaletteLabel:NSLocalizedString(@"Toggle Close Behavior",@"Toggle Close Behavior")];
                [toolbarItem setToolTip:NSLocalizedString(@"CloseWhenDoneToolTip",@"Window will close automatically when download finishes.")];
                [toolbarItem setImage:[NSImage imageNamed:@"saveLeaveOpenNO"]];
                [toolbarItem setTarget:self];
                [toolbarItem setAction:@selector(toggleLeaveOpen)];
            }
            if ( willBeInserted ) {
                leaveOpenToggleToolbarItem = toolbarItem; //establish reference
         }
        }
    } else {
        toolbarItem = nil;
    }

    return toolbarItem;
}

Here is the call graph for this function:

- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *)  toolbar [implementation]

Definition at line 123 of file ProgressDlgController.mm.

                                          :(NSToolbar *)toolbar
{
    return [NSArray arrayWithObjects: CancelToolbarItemIdentifier,
        ShowFileToolbarItemIdentifier,
        OpenFileToolbarItemIdentifier,
        LeaveOpenToolbarItemIdentifier,
        NSToolbarCustomizeToolbarItemIdentifier,
        NSToolbarFlexibleSpaceItemIdentifier,
        NSToolbarSpaceItemIdentifier,
        NSToolbarSeparatorItemIdentifier,
        nil];
}
- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *)  toolbar [implementation]

Definition at line 136 of file ProgressDlgController.mm.

                                          :(NSToolbar *)toolbar
{
    return [NSArray arrayWithObjects: CancelToolbarItemIdentifier,
        NSToolbarFlexibleSpaceItemIdentifier,
        LeaveOpenToolbarItemIdentifier,
        NSToolbarFlexibleSpaceItemIdentifier,
        ShowFileToolbarItemIdentifier,
        OpenFileToolbarItemIdentifier,
        nil];
}
- (BOOL) validateToolbarItem: (NSToolbarItem *)  toolbarItem [implementation]

Definition at line 147 of file ProgressDlgController.mm.

                           :(NSToolbarItem *)toolbarItem
{
  if ([toolbarItem action] == @selector(cancel))  // cancel button
    return (!mDownloadIsComplete);
  if ([toolbarItem action] == @selector(pauseAndResumeDownload))  // pause/resume button
    return (NO);  // Hey - it hasn't been hooked up yet. !mDownloadIsComplete when it is.
  if ([toolbarItem action] == @selector(showFile))  // show file
    return (mDownloadIsComplete);
  if ([toolbarItem action] == @selector(openFile))  // open file
    return (mDownloadIsComplete);
  return YES;           // turn it on otherwise.
}

Here is the call graph for this function:

- (void) windowDidLoad [implementation]

Definition at line 94 of file ProgressDlgController.mm.

{
  [super windowDidLoad];
  
  mDownloadIsComplete = NO;

  if (!mIsFileSave) {
    nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
    PRBool save = PR_FALSE;
    prefs->GetBoolPref("browser.download.progressDnldDialog.keepAlive", &save);
    mSaveFileDialogShouldStayOpen = save;
  }
  
  [self setupToolbar];
  [mProgressBar setUsesThreadedAnimation:YES];      
  [mProgressBar startAnimation:self];   // move to onStateChange
}

Here is the call graph for this function:

- (BOOL) windowShouldClose: (NSNotification *)  notification [implementation]

Definition at line 287 of file ProgressDlgController.mm.

                         :(NSNotification *)notification
{
  [self killDownloadTimer];
  if (!mDownloadIsComplete) { //whoops.  hard cancel.
    [self cancel];
    return NO;  // let setDownloadProgress handle the close.
  }
  return YES; 
}

Here is the call graph for this function:

- (void) windowWillClose: (NSNotification *)  notification [implementation]

Definition at line 281 of file ProgressDlgController.mm.

                       :(NSNotification *)notification
{
  [self autosaveWindowFrame];
  [self autorelease];
}

Here is the call graph for this function:


Member Data Documentation

- (NSToolbarItem*) leaveOpenToggleToolbarItem [protected]

Definition at line 64 of file ProgressDlgController.h.

- (long) mCurrentProgress [protected]

Definition at line 69 of file ProgressDlgController.h.

- (CHDownloader*) mDownloader [protected]

Definition at line 71 of file ProgressDlgController.h.

- (BOOL) mDownloadIsComplete [protected]

Definition at line 68 of file ProgressDlgController.h.

- (NSTimer*) mDownloadTimer [protected]

Definition at line 72 of file ProgressDlgController.h.

- (IBOutlet NSTextField*) mElapsedTimeLabel [protected]

Definition at line 57 of file ProgressDlgController.h.

- (IBOutlet NSTextField*) mFromField [protected]

Definition at line 58 of file ProgressDlgController.h.

- (BOOL) mIsFileSave [protected]

Definition at line 67 of file ProgressDlgController.h.

- (IBOutlet NSProgressIndicator*) mProgressBar [protected]

Definition at line 62 of file ProgressDlgController.h.

Definition at line 66 of file ProgressDlgController.h.

- (IBOutlet NSTextField*) mStatusLabel [protected]

Definition at line 59 of file ProgressDlgController.h.

- (IBOutlet NSTextField*) mTimeLeftLabel [protected]

Definition at line 60 of file ProgressDlgController.h.

- (IBOutlet NSTextField*) mToField [protected]

Definition at line 61 of file ProgressDlgController.h.


The documentation for this class was generated from the following files: