diff --git a/Classes/Base.lproj/ChatRoomViewController.xib b/Classes/Base.lproj/ChatRoomViewController.xib
index 9e0649197..92c0c0cac 100644
--- a/Classes/Base.lproj/ChatRoomViewController.xib
+++ b/Classes/Base.lproj/ChatRoomViewController.xib
@@ -1,7 +1,8 @@
-
+
-
+
+
@@ -248,14 +249,11 @@
+
+
-
-
-
-
-
@@ -281,4 +279,9 @@
-
\ No newline at end of file
+
+
+
+
+
+
diff --git a/Classes/InAppProductsCell.h b/Classes/InAppProductsCell.h
new file mode 100644
index 000000000..5073f93fa
--- /dev/null
+++ b/Classes/InAppProductsCell.h
@@ -0,0 +1,27 @@
+//
+// InAppProductsCell.h
+// linphone
+//
+// Created by Gautier Pelloux-Prayer on 15/04/15.
+//
+//
+
+#import
+
+#import "UITransparentTVCell.h"
+
+
+@interface InAppProductsCell : UITransparentTVCell {
+
+}
+@property (retain, nonatomic) IBOutlet UILabel *ptitle;
+@property (retain, nonatomic) IBOutlet UILabel *pdescription;
+@property (retain, nonatomic) IBOutlet UILabel *pprice;
+@property (retain, nonatomic) IBOutlet UISwitch *ppurchased;
+@property (nonatomic) BOOL isMaximized;
+
+- (id)initWithIdentifier:(NSString*)identifier;
+
++ (CGFloat)getHeight:(BOOL)maximized;
+
+@end
diff --git a/Classes/InAppProductsCell.m b/Classes/InAppProductsCell.m
new file mode 100644
index 000000000..e075e932b
--- /dev/null
+++ b/Classes/InAppProductsCell.m
@@ -0,0 +1,52 @@
+//
+// InAppProductsCell.m
+// linphone
+//
+// Created by Gautier Pelloux-Prayer on 15/04/15.
+//
+//
+
+#import "InAppProductsCell.h"
+
+@implementation InAppProductsCell
+
+- (void)setIsMaximized:(BOOL)isMaximized {
+ _isMaximized = isMaximized;
+
+ //show the BUY button only when not maximized
+
+ self.frame = CGRectMake(self.frame.origin.x,
+ self.frame.origin.y,
+ self.frame.size.width,
+ [InAppProductsCell getHeight:isMaximized]);
+}
+
+- (id)initWithIdentifier:(NSString*)identifier {
+ if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) {
+ NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"InAppProductsCell"
+ owner:self
+ options:nil];
+ if ([arrayOfViews count] >= 1) {
+ [self.contentView addSubview:[arrayOfViews objectAtIndex:0]];
+ }
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [_ptitle release];
+ [_pdescription release];
+ [_pprice release];
+ [_ppurchased release];
+ [super dealloc];
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"%@ (%@): %@", _ptitle.text, _pprice.text, _pdescription.text];
+}
+
++ (CGFloat)getHeight:(BOOL)maximized {
+ return maximized ? 120 : 44;
+}
+
+@end
diff --git a/Classes/InAppProductsCell.xib b/Classes/InAppProductsCell.xib
new file mode 100644
index 000000000..ad9ca60b8
--- /dev/null
+++ b/Classes/InAppProductsCell.xib
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Classes/InAppProductsManager.h b/Classes/InAppProductsManager.h
index e5a3c369e..b7f35fa32 100644
--- a/Classes/InAppProductsManager.h
+++ b/Classes/InAppProductsManager.h
@@ -20,8 +20,15 @@
#import
#import
+extern NSString *const kInAppProductsReady;
+
@interface InAppProductsManager : NSObject {
- NSArray *inAppProducts;
+
}
+@property (readonly) NSArray *inAppProducts;
+
+- (void)loadProducts;
+- (BOOL)isPurchased:(SKProduct*)product;
+
@end
diff --git a/Classes/InAppProductsManager.m b/Classes/InAppProductsManager.m
index 9bcc0a40b..66034a0c1 100644
--- a/Classes/InAppProductsManager.m
+++ b/Classes/InAppProductsManager.m
@@ -20,14 +20,16 @@
#import "InAppProductsManager.h"
#import "Utils.h"
+NSString *const kInAppProductsReady = @"InAppProductsReady";
+
@implementation InAppProductsManager {
bool ready;
}
- (instancetype)init {
if ((self = [super init]) != nil) {
- [self loadProducts];
ready = false;
+ [self loadProducts];
}
return self;
}
@@ -36,31 +38,46 @@
if (! [SKPaymentQueue canMakePayments]) {
return;
}
-
- NSURL *url = [[NSBundle mainBundle] URLForResource:@"in_app_products"
- withExtension:@"plist"];
-
- inAppProducts = [NSArray arrayWithContentsOfURL:url];
+ //TODO: move this list elsewhere
+ NSArray * list = [[NSArray alloc] initWithArray:@[@"test.tunnel"]];
SKProductsRequest *productsRequest = [[SKProductsRequest alloc]
- initWithProductIdentifiers:[NSSet setWithArray:inAppProducts]];
+ initWithProductIdentifiers:[NSSet setWithArray:list]];
productsRequest.delegate = self;
[productsRequest start];
}
- (void)productsRequest:(SKProductsRequest *)request
didReceiveResponse:(SKProductsResponse *)response {
- inAppProducts = response.products;
- LOGI(@"Found %lu products purchasable", inAppProducts.count);
+ _inAppProducts = [response.products retain];
+ LOGI(@"Found %lu products purchasable", (unsigned long)_inAppProducts.count);
for (NSString *invalidIdentifier in response.invalidProductIdentifiers) {
LOGE(@"Product Identifier with invalid ID %@", invalidIdentifier);
}
ready = true;
+
+ NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ _inAppProducts, @"products",
+ nil];
+
+ dispatch_async(dispatch_get_main_queue(), ^(void){
+ [[NSNotificationCenter defaultCenter] postNotificationName:kInAppProductsReady object:self userInfo:dict];
+ });
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
}
+- (BOOL)isPurchased:(SKProduct*)product {
+ for (SKProduct *prod in _inAppProducts) {
+ if (prod == product) {
+ LOGE(@"Is %@ bought? assuming NO", product.localizedTitle);
+ return false; //todo
+ }
+ }
+ return false;
+}
+
@end
\ No newline at end of file
diff --git a/Classes/InAppProductsTableViewController.h b/Classes/InAppProductsTableViewController.h
new file mode 100644
index 000000000..a98352c37
--- /dev/null
+++ b/Classes/InAppProductsTableViewController.h
@@ -0,0 +1,13 @@
+//
+// InAppProductsTableViewController.h
+// linphone
+//
+// Created by Gautier Pelloux-Prayer on 16/04/15.
+//
+//
+
+#import
+
+@interface InAppProductsTableViewController : UITableViewController
+
+@end
diff --git a/Classes/InAppProductsTableViewController.m b/Classes/InAppProductsTableViewController.m
new file mode 100644
index 000000000..fa86d45b6
--- /dev/null
+++ b/Classes/InAppProductsTableViewController.m
@@ -0,0 +1,70 @@
+//
+// InAppProductsTableViewController.m
+// linphone
+//
+// Created by Gautier Pelloux-Prayer on 16/04/15.
+//
+//
+
+#import "InAppProductsTableViewController.h"
+#import "InAppProductsCell.h"
+#import "InAppProductsManager.h"
+#import "LinphoneManager.h"
+
+@implementation InAppProductsTableViewController {
+ InAppProductsManager *iapm;
+ NSInteger currentExpanded;
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+ iapm = [[LinphoneManager instance] iapManager];
+
+ [iapm loadProducts];
+}
+
+#pragma mark - Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+ return [iapm inAppProducts].count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+ static NSString *kCellId = @"InAppProductsCell";
+ InAppProductsCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId];
+ if (cell == nil) {
+ cell = [[[InAppProductsCell alloc] initWithIdentifier:kCellId] autorelease];
+ }
+ SKProduct *prod = [[[[LinphoneManager instance] iapManager] inAppProducts] objectAtIndex:indexPath.row];
+ [cell.ptitle setText: [prod localizedTitle]];
+ [cell.pdescription setText: [prod localizedDescription]];
+ [cell.pprice setText: [NSString stringWithFormat:@"%@", [prod price]]];
+ [cell.ppurchased setEnabled: [iapm isPurchased:prod]];
+ cell.isMaximized = (currentExpanded == indexPath.row);
+
+ LOGI(@"One more: %@", cell);
+ return cell;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ if(currentExpanded == indexPath.row) {
+ currentExpanded = -1;
+ [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
+ return;
+ } else if(currentExpanded >= 0) {
+ NSIndexPath *previousPath = [NSIndexPath indexPathForRow:currentExpanded inSection:0];
+ currentExpanded = indexPath.row;
+ [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:previousPath] withRowAnimation:UITableViewRowAnimationFade];
+ }
+ currentExpanded = indexPath.row;
+ [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+ return [InAppProductsCell getHeight:(currentExpanded == indexPath.row)];
+}
+
+@end
diff --git a/Classes/InAppProductsViewController.h b/Classes/InAppProductsViewController.h
new file mode 100644
index 000000000..632240657
--- /dev/null
+++ b/Classes/InAppProductsViewController.h
@@ -0,0 +1,18 @@
+//
+// InAppProductsViewController.h
+// linphone
+//
+// Created by Gautier Pelloux-Prayer on 15/04/15.
+//
+//
+
+#import
+#import "UICompositeViewController.h"
+#import "InAppProductsTableViewController.h"
+
+@interface InAppProductsViewController : UIViewController {
+}
+
+@property (nonatomic, retain) IBOutlet InAppProductsTableViewController* tableController;
+
+@end
diff --git a/Classes/InAppProductsViewController.m b/Classes/InAppProductsViewController.m
new file mode 100644
index 000000000..67dab35cd
--- /dev/null
+++ b/Classes/InAppProductsViewController.m
@@ -0,0 +1,70 @@
+//
+// InAppProductsViewController.m
+// linphone
+//
+// Created by Gautier Pelloux-Prayer on 15/04/15.
+//
+//
+
+#import "InAppProductsViewController.h"
+#import "InAppProductsCell.h"
+
+@implementation InAppProductsViewController
+
+#pragma mark - Lifecycle Functions
+
+- (id)init {
+ return [super initWithNibName:@"InAppProductsViewController" bundle:[NSBundle mainBundle]];
+}
+
+
+- (void)dealloc {
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+
+ [_tableController release];
+
+ [super dealloc];
+}
+
+#pragma mark - ViewController Functions
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+ [super viewWillAppear:animated];
+// [[NSNotificationCenter defaultCenter] addObserver:self
+// selector:@selector(textReceivedEvent:)
+// name:kLinphoneTextReceived
+// object:nil];
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+ [super viewWillDisappear:animated];
+
+// [[NSNotificationCenter defaultCenter] removeObserver:self
+// name:kLinphoneTextReceived
+// object:nil];
+}
+
+#pragma mark - UICompositeViewDelegate Functions
+
+static UICompositeViewDescription *compositeDescription = nil;
+
++ (UICompositeViewDescription *)compositeViewDescription {
+ if(compositeDescription == nil) {
+ compositeDescription = [[UICompositeViewDescription alloc] init:@"InAppProducts"
+ content:@"InAppProductsViewController"
+ stateBar:nil
+ stateBarEnabled:false
+ tabBar: @"UIMainBar"
+ tabBarEnabled:true
+ fullscreen:false
+ landscapeMode:[LinphoneManager runningOnIpad]
+ portraitMode:true];
+ }
+ return compositeDescription;
+}
+
+@end
\ No newline at end of file
diff --git a/Classes/InAppProductsViewController.xib b/Classes/InAppProductsViewController.xib
new file mode 100644
index 000000000..3d871c635
--- /dev/null
+++ b/Classes/InAppProductsViewController.xib
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
index f7840cc9a..e1ad68ec9 100644
--- a/Classes/PhoneMainView.m
+++ b/Classes/PhoneMainView.m
@@ -20,6 +20,7 @@
#import
#import
+#import "InAppProductsViewController.h"
#import "LinphoneAppDelegate.h"
#import "PhoneMainView.h"
#import "Utils.h"
@@ -403,7 +404,6 @@ static RootViewManager* rootViewManagerInstance = nil;
}
}
}
-
- (void)startUp {
LinphoneCore* core = nil;
@try {
@@ -419,7 +419,8 @@ static RootViewManager* rootViewManagerInstance = nil;
// Change to default view
const MSList *list = linphone_core_get_proxy_config_list(core);
if(list != NULL || ([lm lpConfigBoolForKey:@"hide_wizard_preference"] == true) || lm.isTesting) {
- [self changeCurrentView: [DialerViewController compositeViewDescription]];
+ [self changeCurrentView: [InAppProductsViewController compositeViewDescription]];
+
} else {
WizardViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[WizardViewController compositeViewDescription]], WizardViewController);
if(controller != nil) {
diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
index 909a8fb39..d200f59e3 100644
--- a/Classes/SettingsViewController.m
+++ b/Classes/SettingsViewController.m
@@ -22,6 +22,7 @@
#import "PhoneMainView.h"
#import "UILinphone.h"
#import "UACellBackgroundView.h"
+#import "InAppProductsViewController.h"
#import "DCRoundSwitch.h"
@@ -466,6 +467,7 @@ static UICompositeViewDescription *compositeDescription = nil;
selector:@selector(appSettingChanged:)
name:kIASKAppSettingChanged
object:nil];
+
}
@@ -603,7 +605,7 @@ static UICompositeViewDescription *compositeDescription = nil;
[hiddenKeys addObject:@"send_logs_button"];
[hiddenKeys addObject:@"reset_logs_button"];
}
-
+
[hiddenKeys addObject:@"playback_gain_preference"];
[hiddenKeys addObject:@"microphone_gain_preference"];
@@ -770,6 +772,8 @@ static UICompositeViewDescription *compositeDescription = nil;
}
[self emailAttachment:[NSData dataWithContentsOfFile:[NSString stringWithUTF8String:filepath]] mimeType:mimeType name:filename];
ms_free(filepath);
+ } else if([key isEqual:@"in_app_products_button"]) {
+ [[PhoneMainView instance] changeCurrentView:[InAppProductsViewController compositeViewDescription] push:TRUE];
}
}
diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist
index 62dbcc5ec..87206bbc6 100644
--- a/Settings/InAppSettings.bundle/Root.plist
+++ b/Settings/InAppSettings.bundle/Root.plist
@@ -242,6 +242,14 @@
Type
PSChildPaneSpecifier
+
+ Key
+ in_app_products_button
+ Title
+ Extra features
+ Type
+ IASKButtonSpecifier
+
Title
diff --git a/in_app_products.plist b/in_app_products.plist
deleted file mode 100644
index d269bc27a..000000000
--- a/in_app_products.plist
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
- test.tunnel
-
-
diff --git a/linphone-Info.plist b/linphone-Info.plist
index 6c3c7e1fa..1fd8768b6 100644
--- a/linphone-Info.plist
+++ b/linphone-Info.plist
@@ -5,7 +5,7 @@
CFBundleDevelopmentRegion
English
CFBundleDisplayName
- Linphone
+ LinphoneTest
CFBundleExecutable
${EXECUTABLE_NAME}
CFBundleIcons~ipad
diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
index dce290b01..12f7f743a 100755
--- a/linphone.xcodeproj/project.pbxproj
+++ b/linphone.xcodeproj/project.pbxproj
@@ -112,6 +112,11 @@
57F005CA15EE2D9200914747 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C715EE2D9200914747 /* linphonerc-factory~ipad */; };
631C4FB119D2A8F2004BFE77 /* UIDigitButtonLongPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = 631C4FB019D2A8F2004BFE77 /* UIDigitButtonLongPlus.m */; };
631C4FB719D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m in Sources */ = {isa = PBXBuildFile; fileRef = 631C4FB619D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m */; };
+ 6359DE7F1ADEB54200EA15C0 /* InAppProductsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6359DE7D1ADEB54200EA15C0 /* InAppProductsViewController.m */; };
+ 6359DE801ADEB54200EA15C0 /* InAppProductsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6359DE7E1ADEB54200EA15C0 /* InAppProductsViewController.xib */; };
+ 6359DE841ADEB64100EA15C0 /* InAppProductsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6359DE821ADEB64100EA15C0 /* InAppProductsCell.m */; };
+ 6359DE851ADEB64100EA15C0 /* InAppProductsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6359DE831ADEB64100EA15C0 /* InAppProductsCell.xib */; };
+ 6359DE8B1ADF9EB900EA15C0 /* InAppProductsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6359DE8A1ADF9EB900EA15C0 /* InAppProductsTableViewController.m */; };
636316D11A1DEBCB0009B839 /* AboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 636316D31A1DEBCB0009B839 /* AboutViewController.xib */; };
636316D41A1DEC650009B839 /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 636316D61A1DEC650009B839 /* SettingsViewController.xib */; };
636316D91A1DECC90009B839 /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 636316D71A1DECC90009B839 /* PhoneMainView.xib */; };
@@ -123,7 +128,6 @@
639CEB091A1DF4FA004DE38F /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 639CEB0B1A1DF4FA004DE38F /* UIChatCell.xib */; };
63CD4B4F1A5AAC8C00B84282 /* DTAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 63CD4B4E1A5AAC8C00B84282 /* DTAlertView.m */; };
63E59A3A1ADE6A0100646FB3 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63E59A391ADE6A0100646FB3 /* StoreKit.framework */; };
- 63E59A3C1ADE6E5C00646FB3 /* in_app_products.plist in Resources */ = {isa = PBXBuildFile; fileRef = 63E59A3B1ADE6E5C00646FB3 /* in_app_products.plist */; };
63E59A3F1ADE70D900646FB3 /* InAppProductsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 63E59A3E1ADE70D900646FB3 /* InAppProductsManager.m */; };
63FB30351A680E73008CA393 /* UIRoundedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 63FB30341A680E73008CA393 /* UIRoundedImageView.m */; };
70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; };
@@ -1023,6 +1027,14 @@
631C4FB519D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButtonLongVoiceMail.h; sourceTree = ""; };
631C4FB619D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButtonLongVoiceMail.m; sourceTree = ""; };
633E388219FFB0F400936D1C /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
+ 6359DE7C1ADEB54200EA15C0 /* InAppProductsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InAppProductsViewController.h; sourceTree = ""; };
+ 6359DE7D1ADEB54200EA15C0 /* InAppProductsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InAppProductsViewController.m; sourceTree = ""; };
+ 6359DE7E1ADEB54200EA15C0 /* InAppProductsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InAppProductsViewController.xib; sourceTree = ""; };
+ 6359DE811ADEB64100EA15C0 /* InAppProductsCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InAppProductsCell.h; sourceTree = ""; };
+ 6359DE821ADEB64100EA15C0 /* InAppProductsCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InAppProductsCell.m; sourceTree = ""; };
+ 6359DE831ADEB64100EA15C0 /* InAppProductsCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InAppProductsCell.xib; sourceTree = ""; };
+ 6359DE891ADF9EB900EA15C0 /* InAppProductsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InAppProductsTableViewController.h; sourceTree = ""; };
+ 6359DE8A1ADF9EB900EA15C0 /* InAppProductsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InAppProductsTableViewController.m; sourceTree = ""; };
636316D21A1DEBCB0009B839 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AboutViewController.xib; sourceTree = ""; };
636316D51A1DEC650009B839 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SettingsViewController.xib; sourceTree = ""; };
636316D81A1DECC90009B839 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PhoneMainView.xib; sourceTree = ""; };
@@ -1040,7 +1052,6 @@
63CD4B4D1A5AAC8C00B84282 /* DTAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTAlertView.h; sourceTree = ""; };
63CD4B4E1A5AAC8C00B84282 /* DTAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTAlertView.m; sourceTree = ""; };
63E59A391ADE6A0100646FB3 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
- 63E59A3B1ADE6E5C00646FB3 /* in_app_products.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = in_app_products.plist; sourceTree = ""; };
63E59A3D1ADE6ECB00646FB3 /* InAppProductsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InAppProductsManager.h; sourceTree = ""; };
63E59A3E1ADE70D900646FB3 /* InAppProductsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InAppProductsManager.m; sourceTree = ""; };
63EF7FDC1A24B5810017A416 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/AboutViewController.strings; sourceTree = ""; };
@@ -2043,8 +2054,16 @@
22405EFD1601C19000B92522 /* ImageViewController.h */,
22405EFE1601C19100B92522 /* ImageViewController.m */,
D37EE11016035793003608A6 /* ImageViewController.xib */,
+ 6359DE811ADEB64100EA15C0 /* InAppProductsCell.h */,
+ 6359DE821ADEB64100EA15C0 /* InAppProductsCell.m */,
+ 6359DE831ADEB64100EA15C0 /* InAppProductsCell.xib */,
63E59A3D1ADE6ECB00646FB3 /* InAppProductsManager.h */,
63E59A3E1ADE70D900646FB3 /* InAppProductsManager.m */,
+ 6359DE891ADF9EB900EA15C0 /* InAppProductsTableViewController.h */,
+ 6359DE8A1ADF9EB900EA15C0 /* InAppProductsTableViewController.m */,
+ 6359DE7C1ADEB54200EA15C0 /* InAppProductsViewController.h */,
+ 6359DE7D1ADEB54200EA15C0 /* InAppProductsViewController.m */,
+ 6359DE7E1ADEB54200EA15C0 /* InAppProductsViewController.xib */,
D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */,
D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */,
D3F83EE91582021700336684 /* InCallViewController.h */,
@@ -2240,7 +2259,6 @@
F0B89C2518DC973E0050B60E /* wizard_linphone_create.rc */,
F0B89C2618DC973E0050B60E /* wizard_linphone_existing.rc */,
F0B89C2718DC973E0050B60E /* wizard_remote.rc */,
- 63E59A3B1ADE6E5C00646FB3 /* in_app_products.plist */,
);
name = Resources;
sourceTree = "";
@@ -3331,6 +3349,7 @@
D38327F71580FE3A00FA0D23 /* settings_default.png in Resources */,
D38327F81580FE3A00FA0D23 /* settings_selected.png in Resources */,
D38327F91580FE3A00FA0D23 /* chat_default.png in Resources */,
+ 6359DE801ADEB54200EA15C0 /* InAppProductsViewController.xib in Resources */,
D38327FA1580FE3A00FA0D23 /* chat_selected.png in Resources */,
D3832800158100E400FA0D23 /* contacts_over.png in Resources */,
D3832801158100E400FA0D23 /* history_over.png in Resources */,
@@ -3367,8 +3386,8 @@
D3F83F581582223B00336684 /* numpad_five_default.png in Resources */,
D3F83F5A1582223B00336684 /* numpad_five_over.png in Resources */,
D3F83F5C1582223B00336684 /* numpad_six_default.png in Resources */,
+ 6359DE851ADEB64100EA15C0 /* InAppProductsCell.xib in Resources */,
636316D91A1DECC90009B839 /* PhoneMainView.xib in Resources */,
- 63E59A3C1ADE6E5C00646FB3 /* in_app_products.plist in Resources */,
D3F83F5E1582223B00336684 /* numpad_six_over.png in Resources */,
D3F83F601582223B00336684 /* numpad_seven_default.png in Resources */,
D3F83F621582223B00336684 /* numpad_seven_over.png in Resources */,
@@ -4039,10 +4058,13 @@
D3807FFC15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
D3807FFE15C2894A005BE9BC /* IASKSlider.m in Sources */,
D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */,
+ 6359DE8B1ADF9EB900EA15C0 /* InAppProductsTableViewController.m in Sources */,
D380800215C2894A005BE9BC /* IASKTextField.m in Sources */,
D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
+ 6359DE7F1ADEB54200EA15C0 /* InAppProductsViewController.m in Sources */,
D378AB2A15DCDB4A0098505D /* ImagePickerViewController.m in Sources */,
+ 6359DE841ADEB64100EA15C0 /* InAppProductsCell.m in Sources */,
22405F001601C19200B92522 /* ImageViewController.m in Sources */,
D3ED40191602172200BF332B /* HPGrowingTextView.m in Sources */,
D3ED401B1602172200BF332B /* HPTextViewInternal.m in Sources */,