Skip to content

Commit becfce0

Browse files
Merge pull request #253 from TakayukiHoshi1984/modify_irkit_virtual_device_on_off
IRKitの仮想デバイスの状態調整
2 parents 22bdfe8 + cdefb0d commit becfce0

10 files changed

Lines changed: 224 additions & 503 deletions

File tree

dConnectDevicePlugin/dConnectDeviceIRKit/dConnectDeviceIRKit.xcodeproj/project.pbxproj

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@
8787
AB4B690B19B46FC9009939C9 /* irkit08.png in Resources */ = {isa = PBXBuildFile; fileRef = AB4B68FB19B4671D009939C9 /* irkit08.png */; };
8888
AB506F7419B05CA9004D6C41 /* DConnectSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB506F7319B05CA9004D6C41 /* DConnectSDK.framework */; };
8989
AB5555BA1E56B33B0086E5D5 /* DPIRKitPowerProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = AB5555B91E56B33B0086E5D5 /* DPIRKitPowerProfile.m */; };
90-
AB6A83581B65CA7200E4F32F /* DPIRKitTutorialTopViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB6A83571B65CA7200E4F32F /* DPIRKitTutorialTopViewController.m */; };
9190
AB6A835A1B65E07A00E4F32F /* irkit10.png in Resources */ = {isa = PBXBuildFile; fileRef = AB6A83591B65E07A00E4F32F /* irkit10.png */; };
9291
AB6A835B1B65FE7A00E4F32F /* irkit10.png in Resources */ = {isa = PBXBuildFile; fileRef = AB6A83591B65E07A00E4F32F /* irkit10.png */; };
9392
AB6A835E1B6619AC00E4F32F /* DPIRKitVirtualDeviceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB6A835D1B6619AC00E4F32F /* DPIRKitVirtualDeviceViewController.m */; };
@@ -211,8 +210,6 @@
211210
AB506F7319B05CA9004D6C41 /* DConnectSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DConnectSDK.framework; path = ../../dConnectSDK/dConnectSDKForIOS/DConnectSDK/DConnectSDK.framework; sourceTree = "<group>"; };
212211
AB5555B81E56B33B0086E5D5 /* DPIRKitPowerProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DPIRKitPowerProfile.h; sourceTree = "<group>"; };
213212
AB5555B91E56B33B0086E5D5 /* DPIRKitPowerProfile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DPIRKitPowerProfile.m; sourceTree = "<group>"; };
214-
AB6A83561B65CA7200E4F32F /* DPIRKitTutorialTopViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DPIRKitTutorialTopViewController.h; sourceTree = "<group>"; };
215-
AB6A83571B65CA7200E4F32F /* DPIRKitTutorialTopViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DPIRKitTutorialTopViewController.m; sourceTree = "<group>"; };
216213
AB6A83591B65E07A00E4F32F /* irkit10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = irkit10.png; sourceTree = "<group>"; };
217214
AB6A835C1B6619AC00E4F32F /* DPIRKitVirtualDeviceViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DPIRKitVirtualDeviceViewController.h; sourceTree = "<group>"; };
218215
AB6A835D1B6619AC00E4F32F /* DPIRKitVirtualDeviceViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DPIRKitVirtualDeviceViewController.m; sourceTree = "<group>"; };
@@ -314,8 +311,6 @@
314311
30A1EBDE19A8D16600E6CCE9 /* DPIRKitWiFiFormViewController.m */,
315312
3007FBFD19CD4735005F42CD /* DPIRKitWiFiSelectionGuideViewController.h */,
316313
3007FBFE19CD4735005F42CD /* DPIRKitWiFiSelectionGuideViewController.m */,
317-
AB6A83561B65CA7200E4F32F /* DPIRKitTutorialTopViewController.h */,
318-
AB6A83571B65CA7200E4F32F /* DPIRKitTutorialTopViewController.m */,
319314
AB6A835C1B6619AC00E4F32F /* DPIRKitVirtualDeviceViewController.h */,
320315
AB6A835D1B6619AC00E4F32F /* DPIRKitVirtualDeviceViewController.m */,
321316
AB056F961B68DDF300E1482F /* DPIRKitVirtualProfileViewController.h */,
@@ -710,7 +705,6 @@
710705
isa = PBXSourcesBuildPhase;
711706
buildActionMask = 2147483647;
712707
files = (
713-
AB6A83581B65CA7200E4F32F /* DPIRKitTutorialTopViewController.m in Sources */,
714708
ABC2DB1B1B689BBE0034C08F /* DPIRKitRESTfulRequest.m in Sources */,
715709
3007FBFC19CD43F4005F42CD /* DPIRKitReachability.m in Sources */,
716710
3039F98119A5F40500319429 /* DPIRKitPageViewController.m in Sources */,

dConnectDevicePlugin/dConnectDeviceIRKit/dConnectDeviceIRKit/Classes/DPIRKitDevicePlugin.m

Lines changed: 44 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ - (void) dealloc {
137137

138138
- (DPIRKitDevice *) deviceForServiceId:(NSString *)serviceId {
139139
@synchronized (_devices) {
140-
return [_devices objectForKey:serviceId];
140+
return _devices[serviceId];
141141
}
142142
}
143143

@@ -248,29 +248,37 @@ - (void) sendDeviceDetectionEventWithDevice:(DPIRKitDevice *)device online:(BOOL
248248
if (virtuals.count > 0) {
249249
for (DPIRKitVirtualDevice *virtual in virtuals) {
250250
NSRange range = [virtual.serviceId rangeOfString:device.name];
251-
if (range.location != NSNotFound
252-
&& [self existIRForServiceId:virtual.serviceId]) {
253-
if (online) {
251+
if (range.location != NSNotFound) {
252+
253+
if ([self existIRForServiceId:virtual.serviceId]) {
254254
// オンライン遷移の場合、デバイスが未登録なら登録し、登録済ならフラグをオンラインにする
255255
NSString *serviceId = virtual.serviceId;
256256
if ([self.serviceProvider service: serviceId]) {
257257
DConnectService *service = [self.serviceProvider service: serviceId];
258-
[service setOnline: YES];
258+
[service setOnline: online];
259259
} else {
260-
NSString *profileName = virtual.categoryName;
261260
DPIRKitVirtualService *service = [[DPIRKitVirtualService alloc] initWithServiceId: serviceId
262261
name:virtual.deviceName
263262
plugin:self
264-
profileName:profileName];
263+
profileName:virtual.categoryName];
264+
[service setOnline: online];
265265
[self.serviceProvider addService: service bundle: DPIRBundle()];
266-
[service setOnline: YES];
266+
267267
}
268268
} else {
269269
// オフライン遷移の場合、デバイスが登録済ならフラグをオフラインにする
270270
NSString *serviceId = virtual.serviceId;
271271
DConnectService *service = [self.serviceProvider service: serviceId];
272272
if (service) {
273273
[service setOnline: NO];
274+
[self.serviceProvider addService: service bundle: DPIRBundle()];
275+
} else {
276+
service = [[DPIRKitVirtualService alloc] initWithServiceId: serviceId
277+
name:virtual.deviceName
278+
plugin:self
279+
profileName:virtual.categoryName];
280+
[service setOnline: NO];
281+
[self.serviceProvider addService: service bundle: DPIRBundle()];
274282
}
275283
}
276284

@@ -340,24 +348,16 @@ - (UIViewController *) profile:(DConnectSystemProfile *)sender
340348
DConnectServiceListViewController *serviceListViewController = (DConnectServiceListViewController *) top.viewControllers[0];
341349
serviceListViewController.delegate = self;
342350
return top;
343-
/*
344-
NSBundle *bundle = DPIRBundle();
345-
346-
// iphoneとipadでストーリーボードを切り替える
347-
UIStoryboard *storyBoard;
348-
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
349-
storyBoard = [UIStoryboard storyboardWithName:[NSString stringWithFormat:@"%@iPhone", DPIRKitStoryBoardName]
350-
bundle:bundle];
351-
} else{
352-
storyBoard = [UIStoryboard storyboardWithName:[NSString stringWithFormat:@"%@iPad", DPIRKitStoryBoardName]
353-
bundle:bundle];
354-
}
355-
UINavigationController *viewController = [storyBoard instantiateInitialViewController];
356-
return viewController;
357-
*/
358351
}
359-
360-
- (void)didSelectService:(DConnectService *)service {
352+
- (void)didRemoveService:(DConnectService *)service
353+
{
354+
//サービス一覧画面で仮想デバイスが削除されたら、DBからも仮想デバイスを削除する。
355+
DPIRKitDBManager *mgr = [DPIRKitDBManager sharedInstance];
356+
[mgr deleteVirtualDevice:service.serviceId];
357+
[mgr deleteRESTfulRequestForServiceId:service.serviceId];
358+
}
359+
- (void)didSelectService:(DConnectService *)service
360+
{
361361

362362
// サービスが選択されたら、仮想デバイス一覧画面を表示する
363363

@@ -373,42 +373,28 @@ - (void)didSelectService:(DConnectService *)service {
373373
}
374374
UINavigationController *top = [storyBoard instantiateViewControllerWithIdentifier:@"virtualDeviceList"];
375375

376-
377376
UIViewController *rootView;
378377
DCPutPresentedViewController(rootView);
379378
DPIRKitVirtualDeviceViewController *view = (DPIRKitVirtualDeviceViewController*) top.viewControllers[0];
380-
DPIRKitDevice *irkit = _devices[service.serviceId];
381-
382-
if (irkit) {
383-
[view setDetailItem:irkit];
384-
[rootView presentViewController:top animated:YES completion:nil];
385-
} else {
386-
NSString *title = nil;
387-
NSString *message = nil;
388-
DConnectService *service_ = [self.serviceProvider service:service.serviceId];
389-
if (service_) {
390-
if ([service_ isMemberOfClass: [DPIRKitService class]] ) {
391-
if (!service_.online) {
392-
title = @"オフライン";
393-
message = @"このデバイスはオフラインです";
394-
}
395-
} else if ([service_ isMemberOfClass: [DPIRKitVirtualService class]] ) {
396-
if (!service_.online) {
397-
title = @"仮想デバイス";
398-
message = @"このデバイスは仮想デバイスです";
399-
}
400-
}
401-
} else {
402-
title = @"認識されていないデバイス";
403-
message = @"このデバイスは認識されていません";
404-
}
405-
if (!title) {
406-
title = @"不明なデバイス";
407-
message = @"このデバイスは不明です";
379+
if (service.serviceId) {
380+
// IRKitのServiceIdに.がある場合は仮想デバイスとみなす
381+
NSRange range = [service.serviceId rangeOfString:@"."];
382+
if (range.location != NSNotFound) {
383+
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"仮想デバイス"
384+
message:@"このデバイスは仮想デバイスのため、さらに仮想デバイスを作ることはできません。"
385+
preferredStyle:UIAlertControllerStyleAlert];
386+
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
387+
[rootView presentViewController:alertController animated:YES completion:nil];
388+
return;
408389
}
409390

410-
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
411-
message:message
391+
392+
[view setDetailName:service.serviceId];
393+
[view setProvider:super.serviceProvider];
394+
[rootView presentViewController:top animated:YES completion:nil];
395+
} else {
396+
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"不明なデバイス"
397+
message:@"このデバイスは不明です"
412398
preferredStyle:UIAlertControllerStyleAlert];
413399
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
414400
[rootView presentViewController:alertController animated:YES completion:nil];
@@ -441,20 +427,8 @@ - (UIViewController *)settingViewController {
441427
bundle:bundle];
442428
}
443429
UINavigationController *top = [storyBoard instantiateViewControllerWithIdentifier:@"setting"];
444-
return top;
445-
}
446430

447-
- (NSArray *) displayServiceFilter:(NSArray *)services {
448-
449-
NSMutableArray *filterServices = [NSMutableArray array];
450-
451-
// 仮想デバイスを表示しないので、それを除いたservicesを作成して返す
452-
for (DConnectService *service in services) {
453-
if (![service isMemberOfClass: [DPIRKitVirtualService class]]) {
454-
[filterServices addObject: service];
455-
}
456-
}
457-
return filterServices;
431+
return top;
458432
}
459433

460434
#pragma mark DConnectInformationProfileDataSource
@@ -466,7 +440,7 @@ - (DConnectServiceInformationProfileConnectState) profile:(DConnectServiceInform
466440
DConnectServiceInformationProfileConnectState state = DConnectServiceInformationProfileConnectStateOff;
467441
@synchronized (_devices) {
468442
if (_devices.count > 0) {
469-
DPIRKitDevice *device = [_devices objectForKey:serviceId];
443+
DPIRKitDevice *device = _devices[serviceId];
470444
if (device) {
471445
state = DConnectServiceInformationProfileConnectStateOn;
472446
}

dConnectDevicePlugin/dConnectDeviceIRKit/dConnectDeviceIRKit/Classes/setting/viewcontroller/DPIRKitTutorialTopViewController.h

Lines changed: 0 additions & 15 deletions
This file was deleted.

dConnectDevicePlugin/dConnectDeviceIRKit/dConnectDeviceIRKit/Classes/setting/viewcontroller/DPIRKitTutorialTopViewController.m

Lines changed: 0 additions & 122 deletions
This file was deleted.

dConnectDevicePlugin/dConnectDeviceIRKit/dConnectDeviceIRKit/Classes/setting/viewcontroller/DPIRKitVirtualDeviceViewController.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111

1212
@interface DPIRKitVirtualDeviceViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
1313

14-
@property (strong, nonatomic) id detailItem;
14+
@property (strong, nonatomic) id provider;
15+
@property (strong, nonatomic) id detailName;
1516
@end

0 commit comments

Comments
 (0)