mirror of https://github.com/perkeep/perkeep.git
208 lines
6.2 KiB
Objective-C
208 lines
6.2 KiB
Objective-C
//
|
|
// LAViewController.m
|
|
// photobackup
|
|
//
|
|
// Created by Nick O'Neill on 10/20/13.
|
|
// Copyright (c) 2013 The Camlistore Authors. All rights reserved.
|
|
//
|
|
|
|
#import "LAViewController.h"
|
|
#import "LACamliClient.h"
|
|
#import "LAAppDelegate.h"
|
|
#import "LACamliUtil.h"
|
|
#import "SettingsViewController.h"
|
|
#import "LACamliUploadOperation.h"
|
|
#import "UploadStatusCell.h"
|
|
#import "UploadTaskCell.h"
|
|
#import "LACamliFile.h"
|
|
#import <BugshotKit.h>
|
|
|
|
@implementation LAViewController
|
|
|
|
- (void)viewDidLoad
|
|
{
|
|
[super viewDidLoad];
|
|
|
|
_operations = [NSMutableArray array];
|
|
|
|
self.navigationItem.title = @"camlistore";
|
|
|
|
UIBarButtonItem* reportItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction
|
|
target:self
|
|
action:@selector(reportBug)];
|
|
|
|
[self.navigationItem setLeftBarButtonItem:reportItem];
|
|
|
|
UIBarButtonItem* settingsItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
|
|
target:self
|
|
action:@selector(showSettings)];
|
|
|
|
[self.navigationItem setRightBarButtonItem:settingsItem];
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserverForName:@"statusText" object:nil queue:nil usingBlock:^(NSNotification *note)
|
|
{
|
|
UploadStatusCell* cell = (UploadStatusCell*)[_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0
|
|
inSection:0]];
|
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
cell.status.text = note.object[@"text"];
|
|
});
|
|
}];
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserverForName:@"errorText" object:nil queue:nil usingBlock:^(NSNotification *note)
|
|
{
|
|
UploadStatusCell* cell = (UploadStatusCell*)[_table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0
|
|
inSection:0]];
|
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
cell.error.text = note.object[@"text"];
|
|
});
|
|
}];
|
|
}
|
|
|
|
- (void)viewDidAppear:(BOOL)animated
|
|
{
|
|
NSURL* serverURL = [NSURL URLWithString:[[NSUserDefaults standardUserDefaults] stringForKey:CamliServerKey]];
|
|
NSString* username = [[NSUserDefaults standardUserDefaults] stringForKey:CamliUsernameKey];
|
|
|
|
NSString* password = nil;
|
|
if (username) {
|
|
password = [LACamliUtil passwordForUsername:username];
|
|
}
|
|
|
|
if (!serverURL || !username || !password) {
|
|
[self showSettings];
|
|
}
|
|
}
|
|
|
|
- (void)reportBug
|
|
{
|
|
[BugshotKit show];
|
|
}
|
|
|
|
- (void)showSettings
|
|
{
|
|
SettingsViewController* settings = [self.storyboard instantiateViewControllerWithIdentifier:@"settings"];
|
|
[settings setParent:self];
|
|
|
|
[self presentViewController:settings
|
|
animated:YES
|
|
completion:nil];
|
|
}
|
|
|
|
- (void)dismissSettings
|
|
{
|
|
[self dismissViewControllerAnimated:YES
|
|
completion:nil];
|
|
|
|
[(LAAppDelegate*)[[UIApplication sharedApplication] delegate] loadCredentials];
|
|
}
|
|
|
|
#pragma mark - client delegate methods
|
|
|
|
- (void)addedUploadOperation:(LACamliUploadOperation*)op
|
|
{
|
|
@synchronized(_operations)
|
|
{
|
|
NSIndexPath* path = [NSIndexPath indexPathForRow:[_operations count]
|
|
inSection:1];
|
|
|
|
[_operations addObject:op];
|
|
[_table insertRowsAtIndexPaths:@[
|
|
path
|
|
]
|
|
withRowAnimation:UITableViewRowAnimationAutomatic];
|
|
}
|
|
}
|
|
|
|
- (void)finishedUploadOperation:(LACamliUploadOperation*)op
|
|
{
|
|
NSIndexPath* path = [NSIndexPath indexPathForRow:[_operations indexOfObject:op]
|
|
inSection:1];
|
|
|
|
@synchronized(_operations)
|
|
{
|
|
[_operations removeObject:op];
|
|
[_table deleteRowsAtIndexPaths:@[
|
|
path
|
|
]
|
|
withRowAnimation:UITableViewRowAnimationAutomatic];
|
|
}
|
|
}
|
|
|
|
- (void)uploadProgress:(float)pct forOperation:(LACamliUploadOperation*)op
|
|
{
|
|
NSIndexPath* path = [NSIndexPath indexPathForRow:[_operations indexOfObject:op]
|
|
inSection:1];
|
|
UploadTaskCell* cell = (UploadTaskCell*)[_table cellForRowAtIndexPath:path];
|
|
|
|
cell.progress.progress = pct;
|
|
}
|
|
|
|
#pragma mark - table view methods
|
|
|
|
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
|
|
{
|
|
if (indexPath.section == 0) {
|
|
UploadStatusCell* cell = [tableView dequeueReusableCellWithIdentifier:@"statusCell"
|
|
forIndexPath:indexPath];
|
|
|
|
return cell;
|
|
} else {
|
|
UploadTaskCell* cell = [tableView dequeueReusableCellWithIdentifier:@"taskCell"
|
|
forIndexPath:indexPath];
|
|
|
|
cell.progress.progress = 0.0;
|
|
|
|
LACamliUploadOperation* op = [_operations objectAtIndex:indexPath.row];
|
|
[cell.displayText setText:[NSString stringWithFormat:@"%@", [op name]]];
|
|
[cell.preview setImage:[op.file thumbnail]];
|
|
|
|
return cell;
|
|
}
|
|
|
|
return nil;
|
|
}
|
|
|
|
- (NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section
|
|
{
|
|
NSString* title = @"";
|
|
|
|
if (section == 0) {
|
|
title = @"status";
|
|
} else {
|
|
title = @"uploads";
|
|
}
|
|
|
|
return title;
|
|
}
|
|
|
|
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
|
|
{
|
|
if (section == 0) {
|
|
return 1;
|
|
} else {
|
|
return [_operations count];
|
|
}
|
|
}
|
|
|
|
#pragma mark - other
|
|
|
|
- (void)didReceiveMemoryWarning
|
|
{
|
|
[super didReceiveMemoryWarning];
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
|
|
- (void)dealloc
|
|
{
|
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
}
|
|
|
|
@end
|