Refactor use of pithos objects to accommodate
[pithos-macos] / pithos-macos / PithosBrowserController.h
index e14af41..a55b7c7 100644 (file)
@@ -2,7 +2,7 @@
 //  PithosBrowserController.h
 //  pithos-macos
 //
-// Copyright 2011 GRNET S.A. All rights reserved.
+// Copyright 2011-2013 GRNET S.A. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or
 // without modification, are permitted provided that the following
 // or implied, of GRNET S.A.
 
 #import <Cocoa/Cocoa.h>
+#import "PithosActivityFacility.h"
+@class PithosAccount;
 @class PithosNode;
 @class PithosAccountNode;
+@class PithosSharingAccountsNode;
+@class PithosEmptyNode;
+@class PithosActivityFacility;
+@class ASINetworkQueue;
 
-@interface PithosBrowserController : NSWindowController <NSBrowserDelegate, NSSplitViewDelegate, NSOutlineViewDelegate, NSMenuDelegate> {    
+@interface PithosBrowserController : NSWindowController <NSBrowserDelegate, NSSplitViewDelegate, NSOutlineViewDelegate, NSOutlineViewDataSource, NSMenuDelegate, PithosActivityFacilityDelegate> {
+    BOOL browserInitialized;
+    BOOL browserActive;
+    
+    PithosAccount *pithosAccountManager;
     PithosNode *rootNode;
     PithosAccountNode *accountNode;
-    
-    NSMutableArray *outlineViewDataSourceArray;
+    PithosEmptyNode *containersNode;
+    NSMutableArray *containersNodeChildren;
+    PithosEmptyNode *sharedNode;
+    PithosAccountNode *mySharedNode;
+    PithosSharingAccountsNode *othersSharedNode;
     
     NSViewController *sharedPreviewController;
     
-    NSMenu *browserMenu;
+    IBOutlet NSSplitView *verticalSplitView;
+    IBOutlet NSView *leftView;
+    IBOutlet NSView *rightView;
+    IBOutlet NSSplitView *horizontalSplitView;
+    IBOutlet NSView *leftTopView;
+    IBOutlet NSView *leftBottomView;
+    IBOutlet NSOutlineView *outlineView;
+    IBOutlet NSBrowser *browser;
+    IBOutlet NSMenu *outlineViewMenu;
+    IBOutlet NSMenu *browserMenu;
     
-    NSSplitView *splitView;
-    NSOutlineView *outlineView;
-    NSBrowser *browser;
+    BOOL editingItem;
     
     NSArray *draggedNodes;
     PithosNode *draggedParentNode;
+    
+    NSArray *clipboardNodes;
+    PithosNode *clipboardParentNode;
+    BOOL clipboardCopy;
+    
+    IBOutlet NSTextField *activityTextField;
+    IBOutlet NSProgressIndicator *activityProgressIndicator;
+    PithosActivityFacility *activityFacility;
+    
+    NSTimer *refreshTimer;
+    
+    ASINetworkQueue *moveNetworkQueue;
+    ASINetworkQueue *copyNetworkQueue;
+    ASINetworkQueue *deleteNetworkQueue;
+    ASINetworkQueue *uploadNetworkQueue;
+    ASINetworkQueue *downloadNetworkQueue;
+    NSOperationQueue *moveQueue;
+    NSOperationQueue *copyQueue;
+    NSOperationQueue *deleteQueue;
+    NSOperationQueue *uploadQueue;
+    NSOperationQueue *downloadQueue;
+    NSOperationQueue *moveCallbackQueue;
+    NSOperationQueue *copyCallbackQueue;
+    NSOperationQueue *deleteCallbackQueue;
+    NSOperationQueue *uploadCallbackQueue;
+    NSOperationQueue *downloadCallbackQueue;
 }
 
-@property (nonatomic, retain) NSMutableArray *outlineViewDataSourceArray;
+@property (nonatomic, strong) PithosAccount *pithosAccountManager;
+@property (nonatomic, strong) PithosAccountNode *accountNode;
 
-@property (nonatomic, assign) IBOutlet NSSplitView *splitView;
-@property (nonatomic, assign) IBOutlet NSOutlineView *outlineView;
-@property (nonatomic, assign) IBOutlet NSBrowser *browser;
+@property (nonatomic, strong) NSArray *draggedNodes;
+@property (nonatomic, strong) PithosNode *draggedParentNode;
 
-@property (nonatomic, retain) NSArray *draggedNodes;
-@property (nonatomic, retain) PithosNode *draggedParentNode;
+@property (nonatomic, strong) NSArray *clipboardNodes;
+@property (nonatomic, strong) PithosNode *clipboardParentNode;
+@property (nonatomic, assign) BOOL clipboardCopy;
 
+- (IBAction)forceRefresh:(id)sender;
 - (IBAction)refresh:(id)sender;
+- (void)resetBrowser;
+- (void)startBrowser;
+- (BOOL)operationsPending;
+- (void)downloadNode:(PithosNode *)node toDirectory:(NSString *)dirPath withNewFileName:(NSString *)newFileName 
+             version:(NSString *)version checkIfExists:(BOOL)checkIfExists;
 
 @end