Skip to content
Snippets Groups Projects
Commit 8bc4c22a authored by cramakri's avatar cramakri
Browse files

Added search bar and status bar. Introduced debug code for handling...

Added search bar and status bar. Introduced debug code for handling self-signed certificates which will need to be improved

SVN: 27611
parent fc0ac243
No related branches found
No related tags found
No related merge requests found
......@@ -24,7 +24,7 @@
#import <UIKit/UIKit.h>
@class CISDOBIpadEntity, CISDOBOpenBisModel;
@interface CISDOBDetailViewController : UIViewController <UISplitViewControllerDelegate>
@interface CISDOBDetailViewController : UIViewController <UISplitViewControllerDelegate, UIWebViewDelegate>
@property (strong, nonatomic) CISDOBOpenBisModel *openBisModel;
......@@ -33,6 +33,7 @@
@property (weak, nonatomic) IBOutlet UILabel *summaryLabel;
@property (weak, nonatomic) IBOutlet UILabel *identifierLabel;
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
// Actions
- (void)selectionDidChange; //!< Signals that the user has made a final selction
......
......@@ -24,6 +24,12 @@
#import "CISDOBDetailViewController.h"
#import "CISDOBIpadEntity.h"
#import "CISDOBOpenBisModel.h"
#import "CISDOBIpadServiceManager.h"
@interface NSURLRequest (NSURLRequestDebug)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
@end
@interface CISDOBDetailViewController ()
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
......@@ -79,15 +85,23 @@
self.summaryHeaderLabel.text = self.detailItem.summaryHeader;
self.summaryLabel.text = self.detailItem.summary;
self.identifierLabel.text = self.detailItem.identifier;
NSURL *url = (self.detailItem.imageUrlString) ?
[self.openBisModel urlFromUrlString: self.detailItem.imageUrlString] :
[NSURL URLWithString: @"about:blank"];
if (self.detailItem.imageUrlString) {
NSURL *url = [self.openBisModel urlFromUrlString: self.detailItem.imageUrlString];
NSURLRequest *request = [NSURLRequest requestWithURL: url];
[self.webView loadRequest: request];
} else {
NSURL *url = [NSURL URLWithString: @"about:blank"];
// No need to fiddle with the web view if the URL is the same
BOOL updateWebView = ![self.webView.request.URL isEqual: url];
if (updateWebView) {
NSURLRequest *request = [NSURLRequest requestWithURL: url];
[self.webView loadRequest: request];
if (self.detailItem.imageUrlString) {
self.webView.hidden = NO;
self.webView.scrollView.hidden = NO;
} else {
self.webView.hidden = NO;
self.webView.scrollView.hidden = YES;
}
}
[self.propertiesTableView reloadData];
......@@ -98,6 +112,11 @@
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self configureViewProvisionally];
[self registerForNotifications];
[self.webView setDelegate: self];
// DEBUG
[NSURLRequest setAllowsAnyHTTPSCertificate: YES forHost: @"localhost"];
}
- (void)didReceiveMemoryWarning
......@@ -173,5 +192,68 @@
cell.detailTextLabel.text = [object valueForKey:@"value"];
}
#pragma mark - Status Updates
- (void)registerForNotifications
{
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter
addObserverForName: nil
object: self.openBisModel.serviceManager
queue: [NSOperationQueue mainQueue]
usingBlock: ^(NSNotification *note) {
[self processNotification: note];
}];
}
- (void)processNotification:(NSNotification *)note
{
if ([CISDOBIpadServiceWillLoginNotification isEqualToString: [note name]]) {
[self setStatusText: @"Logging in..."];
} else if ([CISDOBIpadServiceDidLoginNotification isEqualToString: [note name]]) {
[self clearStatusText];
} else if ([CISDOBIpadServiceWillRetrieveRootLevelEntitiesNotification isEqualToString: [note name]]) {
[self setStatusText: @"Retrieving root entities..."];
} else if ([CISDOBIpadServiceDidRetrieveRootLevelEntitiesNotification isEqualToString: [note name]]) {
[self clearStatusText];
} else if ([CISDOBIpadServiceWillSynchEntitiesNotification isEqualToString: [note name]]) {
[self setStatusText: @"Synching entities with cache..."];
} else if ([CISDOBIpadServiceDidSynchEntitiesNotification isEqualToString: [note name]]) {
[self clearStatusText];
} else if ([CISDOBIpadServiceWillDrillOnEntityNotification isEqualToString: [note name]]) {
[self setStatusText: @"Retrieving drill information..."];
} else if ([CISDOBIpadServiceDidDrillOnEntityNotification isEqualToString: [note name]]) {
[self clearStatusText];
} else if ([CISDOBIpadServiceWillRetrieveDetailsForEntityNotification isEqualToString: [note name]]) {
[self setStatusText: @"Retrieving detail information..."];
} else if ([CISDOBIpadServiceDidRetrieveDetailsForEntityNotification isEqualToString: [note name]]) {
[self clearStatusText];
}
}
- (void)setStatusText:(NSString *)text
{
// TODO Keep a FIFO of status updates and apply them at a maxiumum rate.
self.statusLabel.text = text;
}
- (void)clearStatusText
{
self.statusLabel.text = @"";
}
#pragma - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"webView:shouldStartLoadWithRequest:navigationType:");
return YES;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"Load failed %@", error);
}
@end
......@@ -31,7 +31,6 @@
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="27">
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="203" id="1vN-zg-Zq1"/>
<constraint firstAttribute="height" constant="28" type="user" id="j4P-P6-Ayn"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
......@@ -41,7 +40,6 @@
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="gor-tF-mFh">
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="200" id="DAm-s6-dcJ"/>
<constraint firstAttribute="height" constant="28" id="NeY-AR-8Ub"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
......@@ -52,7 +50,7 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="118" id="Txf-bY-brd"/>
<constraint firstAttribute="width" constant="415" id="mHb-8C-05c"/>
<constraint firstAttribute="width" constant="410" id="YWT-eM-uXI"/>
</constraints>
<fontDescription key="fontDescription" type="system" size="system"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
......@@ -62,13 +60,14 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="350" type="user" id="7bz-Yw-afd"/>
<constraint firstAttribute="height" constant="460" id="sE6-JU-7XJ"/>
</constraints>
<prototypes>
<tableViewCell contentMode="scaleToFill" verticalHuggingPriority="1" horizontalCompressionResistancePriority="1000" verticalCompressionResistancePriority="1000" selectionStyle="blue" indentationWidth="10" reuseIdentifier="Property" textLabel="qrE-EN-cse" detailTextLabel="9aq-ke-4ab" style="IBUITableViewCellStyleValue2" id="mfZ-bV-mLK">
<rect key="frame" x="0.0" y="22" width="663" height="44"/>
<rect key="frame" x="0.0" y="22" width="703" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="663" height="43"/>
<rect key="frame" x="0.0" y="0.0" width="703" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" horizontalCompressionResistancePriority="1000" text="Title" textAlignment="right" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsLetterSpacingToFitWidth="YES" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="91" translatesAutoresizingMaskIntoConstraints="NO" id="qrE-EN-cse">
......@@ -98,22 +97,34 @@
</constraints>
<dataDetectorType key="dataDetectorTypes"/>
</webView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="test" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H01-Gm-nTe">
<constraints>
<constraint firstAttribute="height" constant="27" id="4O8-pX-DfO"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="T4E-dH-b3j" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="1JH-U6-rvC"/>
<constraint firstItem="bUx-j7-YCF" firstAttribute="top" secondItem="T4E-dH-b3j" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="34W-Bo-fwe"/>
<constraint firstItem="T4E-dH-b3j" firstAttribute="top" secondItem="gor-tF-mFh" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="8xN-U9-aRY"/>
<constraint firstAttribute="bottom" secondItem="bUx-j7-YCF" secondAttribute="bottom" constant="20" symbolic="YES" type="default" id="BOD-5p-64L"/>
<constraint firstItem="T4E-dH-b3j" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="25" id="AXi-9e-oWq"/>
<constraint firstItem="H01-Gm-nTe" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="DY1-65-VaV"/>
<constraint firstItem="27" firstAttribute="top" secondItem="26" secondAttribute="top" constant="20" symbolic="YES" type="user" id="FD4-HZ-RnC"/>
<constraint firstItem="gor-tF-mFh" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="FvH-Wf-aa1"/>
<constraint firstItem="rUU-Fj-t5t" firstAttribute="leading" secondItem="27" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="GUS-JI-w7u"/>
<constraint firstItem="bUx-j7-YCF" firstAttribute="trailing" secondItem="26" secondAttribute="trailing" type="default" id="J5w-YE-X9r"/>
<constraint firstAttribute="trailing" secondItem="H01-Gm-nTe" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="Lh3-fu-ip0"/>
<constraint firstItem="bUx-j7-YCF" firstAttribute="top" secondItem="rUU-Fj-t5t" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="NfB-38-VMG"/>
<constraint firstItem="rUU-Fj-t5t" firstAttribute="top" secondItem="26" secondAttribute="top" constant="20" symbolic="YES" type="default" id="QCg-PZ-dXE"/>
<constraint firstAttribute="trailing" secondItem="rUU-Fj-t5t" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="Qpl-Gy-9XI"/>
<constraint firstItem="gor-tF-mFh" firstAttribute="top" secondItem="27" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="T1F-6Z-kbc"/>
<constraint firstItem="gor-tF-mFh" firstAttribute="trailing" secondItem="27" secondAttribute="trailing" type="default" id="Tl9-Ul-Mrh"/>
<constraint firstAttribute="trailing" secondItem="bUx-j7-YCF" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="jU1-bA-JE1"/>
<constraint firstItem="27" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="lGv-yZ-eAZ"/>
<constraint firstItem="bUx-j7-YCF" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="qCU-93-jXk"/>
<constraint firstItem="H01-Gm-nTe" firstAttribute="bottom" secondItem="26" secondAttribute="bottom" type="default" id="ctA-jO-Kum"/>
<constraint firstItem="rUU-Fj-t5t" firstAttribute="leading" secondItem="gor-tF-mFh" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="lbL-ti-Ku6"/>
<constraint firstItem="bUx-j7-YCF" firstAttribute="leading" secondItem="26" secondAttribute="leading" type="default" id="tBx-gM-VfN"/>
<constraint firstItem="27" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="vrS-8t-WFg"/>
</constraints>
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
</view>
......@@ -122,6 +133,7 @@
<connections>
<outlet property="identifierLabel" destination="gor-tF-mFh" id="NCy-K7-tLT"/>
<outlet property="propertiesTableView" destination="bUx-j7-YCF" id="QW1-J0-g9j"/>
<outlet property="statusLabel" destination="H01-Gm-nTe" id="VBB-z9-EV9"/>
<outlet property="summaryHeaderLabel" destination="27" id="f5M-Ao-eBL"/>
<outlet property="summaryLabel" destination="T4E-dH-b3j" id="qVC-t4-llZ"/>
<outlet property="webView" destination="rUU-Fj-t5t" id="N50-LI-vy0"/>
......@@ -156,9 +168,17 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
<searchBar key="tableHeaderView" contentMode="redraw" text="" id="jxa-Rk-K1d">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textInputTraits key="textInputTraits"/>
<connections>
<outlet property="delegate" destination="19" id="O5O-hD-bld"/>
</connections>
</searchBar>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="tIi-5l-S0i" detailTextLabel="4MS-NV-KvX" style="IBUITableViewCellStyleSubtitle" id="ZSw-0O-9Pw">
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
<rect key="frame" x="0.0" y="66" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="300" height="43"/>
......@@ -191,6 +211,9 @@
</connections>
</tableView>
<navigationItem key="navigationItem" title="All" id="40"/>
<connections>
<outlet property="searchBar" destination="jxa-Rk-K1d" id="0Dg-en-V0L"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
</objects>
......@@ -218,6 +241,7 @@
<relationships>
<relationship kind="outlet" name="identifierLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="propertiesTableView" candidateClass="UITableView"/>
<relationship kind="outlet" name="statusLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="summaryHeaderLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="summaryLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="webView" candidateClass="UIWebView"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment