Skip to content

Commit

Permalink
- Improved slideshow (transition)
Browse files Browse the repository at this point in the history
- Slideshow timeout now configurable
- Several UI improvements
- Preventing crashes when Rest module is not enabled
  • Loading branch information
David Steinberger committed Jul 9, 2011
1 parent f94021f commit cb6db40
Show file tree
Hide file tree
Showing 24 changed files with 353,484 additions and 313,770 deletions.
Binary file modified .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions Classes/MyLoginViewController.h
Expand Up @@ -44,6 +44,7 @@
UITextField *_usernameField;
UITextField *_passwordField;
UISlider *_imageQualityField;
UISlider *_slideshowTimeout;
TTView *_segmentedControlFrame;
UITextField *_buildDateField;
UITextField *_buildVersionField;
Expand Down
104 changes: 68 additions & 36 deletions Classes/MyLoginViewController.m
Expand Up @@ -24,6 +24,9 @@
#import "MyLoginViewController.h"
#import "AppDelegate.h"

// Three20
#import <Three20UI/UIViewAdditions.h>

// Others
#import <CoreData/CoreData.h>
#import "MyLoginModel.h"
Expand Down Expand Up @@ -195,8 +198,18 @@ - (void)model:(id <TTModel>)model didFailLoadWithError:(NSError *)error {

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
TTActivityLabel* label = [[[TTActivityLabel alloc] initWithStyle:TTActivityLabelStyleBlackBox] autorelease];
UIView* lastView = [self.view.subviews lastObject];
label.text = @"Clearing the cache ...";
[label sizeToFit];
label.frame = CGRectMake(0, lastView.bottom+10, self.view.width, label.height);
[self.view addSubview:label];

[self deleteFromCoreData:@"RKMTree"];
[self deleteFromCoreData:@"RKMItem"];
[self deleteFromCoreData:@"RKMTag_Member"];
[self deleteFromCoreData:@"RKMEntity"];
[self deleteFromCoreData:@"RKMSites"];

TTNavigator *navigator = [TTNavigator navigator];
[navigator removeAllViewControllers];
Expand Down Expand Up @@ -452,6 +465,12 @@ - (void)imageQualityChanged:(UISlider *)control {
}


- (void)slideshowTimeoutChanged:(UISlider *)control {
NSNumber *number = [NSNumber numberWithFloat:control.value];
GlobalSettings.slideshowTimeout = [number intValue];
}


- (void)createDataSource {
_autocompleteUrls = [[NSMutableArray alloc] init];
_autocompleteTitles = [[NSMutableArray alloc] init];
Expand All @@ -469,6 +488,7 @@ - (void)createDataSource {
_baseURL.clearButtonMode = UITextFieldViewModeWhileEditing;
_baseURL.clearsOnBeginEditing = NO;
_baseURL.delegate = self;
_baseURL.text = GlobalSettings.baseURL;

// username field
_usernameField = [[UITextField alloc] init];
Expand All @@ -491,13 +511,52 @@ - (void)createDataSource {
_passwordField.clearButtonMode = UITextFieldViewModeWhileEditing;
_passwordField.clearsOnBeginEditing = NO;
_passwordField.delegate = self;

// image quality field
_imageQualityField = [[[UISlider alloc] init] autorelease];
_imageQualityField.minimumValue = 0;
_imageQualityField.maximumValue = 1;
_imageQualityField.value = GlobalSettings.imageQuality ? GlobalSettings.imageQuality : 0.5;
[_imageQualityField addTarget:self
action:@selector(imageQualityChanged:)
forControlEvents:UIControlEventTouchUpInside];

// Slideshow timeout
_slideshowTimeout = [[[UISlider alloc] init] autorelease];
_slideshowTimeout.minimumValue = 2;
_slideshowTimeout.maximumValue = 6;
_slideshowTimeout.value = GlobalSettings.slideshowTimeout ? GlobalSettings.slideshowTimeout : 4;
[_slideshowTimeout addTarget:self
action:@selector(slideshowTimeoutChanged:)
forControlEvents:UIControlEventTouchUpInside];

// layout switcher
_segmentedControlFrame =
[[TTView alloc] initWithFrame:CGRectMake(-1.0f, -1.0f, 302.0f, 46.0f)];

_segmentedControlFrame.backgroundColor = [UIColor clearColor];
UISegmentedControl *segmentedControl =
[[UISegmentedControl alloc] initWithFrame:_segmentedControlFrame.bounds];
[segmentedControl insertSegmentWithTitle:@"Album" atIndex:0 animated:NO];
[segmentedControl insertSegmentWithTitle:@"Thumbs" atIndex:1 animated:NO];
segmentedControl.selectedSegmentIndex = (GlobalSettings.viewStyle == kAlbumView) ? 0 : 1;
[segmentedControl addTarget:(AppDelegate *)[[UIApplication sharedApplication] delegate]
action:@selector(dispatchToRootController:)
forControlEvents:UIControlEventValueChanged];
[_segmentedControlFrame addSubview:segmentedControl];
TT_RELEASE_SAFELY(segmentedControl);

_baseURL.text = GlobalSettings.baseURL;
// a button to clear all cache
CGRect appFrame = [UIScreen mainScreen].applicationFrame;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
[button setTitle:@"Delete all Cache" forState:UIControlStateNormal];
[button addTarget:@"tt://removeAllCache" action:@selector(openURL)
forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(20, 20, appFrame.size.width - 40, 50);

// build info
_buildDateField = [[UITextField alloc] init];
_buildDateField.text = @"";
_buildDateField.textAlignment = UITextAlignmentRight;
Expand All @@ -507,7 +566,8 @@ - (void)createDataSource {
_buildVersionField.text = @"";
_buildVersionField.textAlignment = UITextAlignmentRight;
_buildVersionField.enabled = NO;


// autocompleteview
_autocompleteTableView = [[UITableView alloc] initWithFrame:
CGRectMake(0, 160, 320, 120) style:UITableViewStylePlain];
self.autocompleteTableView.delegate = self;
Expand All @@ -516,6 +576,7 @@ - (void)createDataSource {
self.autocompleteTableView.hidden = YES;
[self.tableView addSubview:self.autocompleteTableView];


// create ui-elements
if (!GlobalSettings.viewOnly) {
_viewOnly.on = NO;
Expand All @@ -541,45 +602,15 @@ - (void)createDataSource {
TTTableControlItem *cPasswordField = [TTTableControlItem itemWithCaption:@"Password"
control:_passwordField];

// image quality field
_imageQualityField = [[[UISlider alloc] init] autorelease];
_imageQualityField.minimumValue = 0;
_imageQualityField.maximumValue = 1;

_imageQualityField.value = GlobalSettings.imageQuality ? GlobalSettings.imageQuality : 0.5;

[_imageQualityField addTarget:self
action:@selector(imageQualityChanged:)
forControlEvents:UIControlEventTouchUpInside];

TTTableControlItem *cImageQuality =
[TTTableControlItem itemWithCaption:@"Image Quality" control:_imageQualityField];

TTTableControlItem *cSlideshowTimeout =
[TTTableControlItem itemWithCaption:@"Slideshow Timeout" control:_slideshowTimeout];

// a button to clear all cache
CGRect appFrame = [UIScreen mainScreen].applicationFrame;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
[button setTitle:@"Delete all Cache" forState:UIControlStateNormal];
[button addTarget:@"tt://removeAllCache" action:@selector(openURL)
forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(20, 20, appFrame.size.width - 40, 50);

_segmentedControlFrame.backgroundColor = [UIColor clearColor];
UISegmentedControl *segmentedControl =
[[UISegmentedControl alloc] initWithFrame:_segmentedControlFrame.bounds];
[segmentedControl insertSegmentWithTitle:@"Album" atIndex:0 animated:NO];
[segmentedControl insertSegmentWithTitle:@"Thumbs" atIndex:1 animated:NO];
segmentedControl.selectedSegmentIndex = (GlobalSettings.viewStyle == kAlbumView) ? 0 : 1;
[segmentedControl addTarget:(AppDelegate *)[[UIApplication sharedApplication] delegate]
action:@selector(dispatchToRootController:)
forControlEvents:UIControlEventValueChanged];
[_segmentedControlFrame addSubview:segmentedControl];
TT_RELEASE_SAFELY(segmentedControl);

// build version
TTTableControlItem *cBuildDate =
[TTTableControlItem itemWithCaption:@"Build-Date" control:_buildDateField];

TTTableControlItem *cBuildVersion =
[TTTableControlItem itemWithCaption:@"Build-Version" control:_buildVersionField];

Expand Down Expand Up @@ -609,6 +640,7 @@ - (void)createDataSource {
// section 2 will hold the image quality slider
NSMutableArray *section2 = [[NSMutableArray alloc] init];
[section2 addObject:cImageQuality];
[section2 addObject:cSlideshowTimeout];

// section 3 will hold button for clearing the cache
NSMutableArray *section3 = [[NSMutableArray alloc] init];
Expand Down
2 changes: 0 additions & 2 deletions Classes/MyPhotoViewController.h
Expand Up @@ -6,8 +6,6 @@
// Copyright 2010 -. All rights reserved.
//

#import <Foundation/Foundation.h>

#import <Three20/Three20.h>

#import "MyThumbsViewController.h"
Expand Down
15 changes: 4 additions & 11 deletions Classes/MyPhotoViewController.m
Expand Up @@ -138,12 +138,6 @@ - (void)clickActionItem {
[actionSheet showInView:self.view];
}

- (NSString *)urlEncodeValue:(NSString *)str
{
NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8);
return [result autorelease];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
Photo* p = (Photo *) self.centerPhoto;
NSString* itemID = p.photoID;
Expand All @@ -163,9 +157,7 @@ - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger
MyAlbumUpdater* updater = [[MyAlbumUpdater sharedMyAlbumUpdater] initWithItemID:albumID andDelegate:((id<MyViewController>)self.ttPreviousViewController)];
[updater setValue:[[appDelegate.baseURL stringByAppendingString: @"/rest/item/"] stringByAppendingString:p.photoID] param: @"album_cover"];
[updater update];
//TT_RELEASE_SAFELY(updater);

//[((id<MyViewController>)self.ttPreviousViewController) reloadViewController:YES];

[self dismissModalViewControllerAnimated:YES];
}
if (buttonIndex == 2) {
Expand Down Expand Up @@ -222,9 +214,10 @@ - (void)deleteCurrentItem {
}

-(void) reload {
TTNavigator* navigator = [TTNavigator navigator];
/*TTNavigator* navigator = [TTNavigator navigator];
[navigator removeAllViewControllers];
[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://thumbs/1"]];
[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://thumbs/1"]];*/
[super reload];
}

// see TTPhotoViewController
Expand Down
2 changes: 2 additions & 0 deletions Classes/MySettings.h
Expand Up @@ -25,6 +25,7 @@ typedef enum {
NSString* _baseURL;

float _imageQuality;
int _slideshowTimeout;
int _uploadCounter;

//UI settings
Expand All @@ -39,6 +40,7 @@ typedef enum {
@property (nonatomic, readonly, retain) NSString* challenge;
@property (nonatomic, readonly, retain) NSString* baseURL;
@property (nonatomic, assign) float imageQuality;
@property (nonatomic, assign) int slideshowTimeout;
@property (nonatomic, assign) MyViewStyle viewStyle;
@property (nonatomic, assign) int uploadCounter;

Expand Down
21 changes: 21 additions & 0 deletions Classes/MySettings.m
Expand Up @@ -40,6 +40,7 @@ @implementation MySettings
@synthesize challenge = _challenge;
@synthesize baseURL = _baseURL;
@synthesize imageQuality = _imageQuality;
@synthesize slideshowTimeout = _slideshowTimeout;
@synthesize viewStyle = _viewStyle;
@synthesize uploadCounter = _uploadCounter;

Expand Down Expand Up @@ -182,6 +183,26 @@ - (float)imageQuality {
return imageQuality;
}

- (void)setSlideshowTimeout:(int)slideshowTimeout {
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];

[prefs setFloat:slideshowTimeout forKey:@"slideshowTimeout"];
[self storeName:@"slideshowTimeout" withValue:[NSString stringWithFormat:@"%i",slideshowTimeout]];
[prefs synchronize];
}

- (int)slideshowTimeout {
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];
int slideshowTimeout = [prefs integerForKey:@"slideshowTimeout"];

if (slideshowTimeout == 0) {
slideshowTimeout = [[self getValue:@"imageQuality"] intValue];
}

self->_slideshowTimeout = slideshowTimeout;
return slideshowTimeout;
}

- (void)setViewStyle:(MyViewStyle)viewStyle {
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];

Expand Down
8 changes: 5 additions & 3 deletions Classes/MyThumbsViewController.m
Expand Up @@ -26,7 +26,7 @@ - (void)disableToolbarItemsExceptButton:(UIButton*)button;
- (void)enableToolbarItems;

// Sets the default button with default behavior
- (void)setStandartRightBarButtonItem;
- (void)setStandardRightBarButtonItem;

@end

Expand Down Expand Up @@ -113,7 +113,9 @@ - (void)viewDidLoad {
] autorelease];
}

[self setStandartRightBarButtonItem];
if (!GlobalSettings.viewOnly) {
[self setStandardRightBarButtonItem];
}

self.navigationController.toolbar.barStyle = self.navigationBarStyle;
[self.navigationController.toolbar sizeToFit];
Expand Down Expand Up @@ -215,7 +217,7 @@ - (void)enableToolbarItems {
}
}

- (void)setStandartRightBarButtonItem {
- (void)setStandardRightBarButtonItem {
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(toggleEditing:)] autorelease];
}

Expand Down
14 changes: 8 additions & 6 deletions Classes/MyThumbsViewController2.m
Expand Up @@ -89,7 +89,7 @@ - (void)disableToolbarItemsExceptButton:(UIButton*)button;
- (void)enableToolbarItems;

// Sets the default button with default behavior
- (void)setStandartRightBarButtonItem;
- (void)setStandardRightBarButtonItem;

@end

Expand Down Expand Up @@ -305,8 +305,10 @@ - (void)viewDidLoad {
target:self action:@selector(setSettings)
] autorelease];
}

[self setStandartRightBarButtonItem];

if (!GlobalSettings.viewOnly) {
[self setStandardRightBarButtonItem];
}

self.navigationController.toolbar.barStyle = self.navigationBarStyle;
[self.navigationController.toolbar sizeToFit];
Expand Down Expand Up @@ -341,7 +343,7 @@ - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceO
// MyLongPressGestureDelegate that handles long tabs on cell
- (void)longPress:(UILongPressGestureRecognizer *)recognizer {
// only when gesture was recognized, not when ended
if (recognizer.state == UIGestureRecognizerStateBegan) {
if (recognizer.state == UIGestureRecognizerStateBegan && !GlobalSettings.viewOnly) {
CGPoint gestureStartPoint = [recognizer
locationInView:self.tableView];

Expand Down Expand Up @@ -699,7 +701,7 @@ - (void)reorderDone: (id)sender {
[self.navigationController setToolbarHidden:NO];

[self enableToolbarItems];
[self setStandartRightBarButtonItem];
[self setStandardRightBarButtonItem];
[self.tableView setEditing:NO animated:YES];
}

Expand All @@ -717,7 +719,7 @@ - (void)enableToolbarItems {
}
}

- (void)setStandartRightBarButtonItem {
- (void)setStandardRightBarButtonItem {
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(toggleEditing:)] autorelease];
}

Expand Down
3 changes: 1 addition & 2 deletions Classes/MyUploadViewController.h
Expand Up @@ -41,8 +41,7 @@ UIImagePickerControllerDelegate,TTPostControllerDelegate> {
UIImage *_screenShot;
UIImage *_image;
NSString *_albumID;
UIAlertView *_progressAlert;
UIProgressView *_progressView;
TTActivityLabel* _uploadProgress;
}

@property (nonatomic, retain) NSDictionary* query;
Expand Down

0 comments on commit cb6db40

Please sign in to comment.