Skip to content

Commit cdefb0d

Browse files
仮想デバイス削除時に管理しているDBからも情報を削除する。
1 parent 5af0e0a commit cdefb0d

4 files changed

Lines changed: 33 additions & 11 deletions

File tree

dConnectDevicePlugin/dConnectDeviceIRKit/dConnectDeviceIRKit/Classes/DPIRKitDevicePlugin.m

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

@@ -341,8 +349,15 @@ - (UIViewController *) profile:(DConnectSystemProfile *)sender
341349
serviceListViewController.delegate = self;
342350
return top;
343351
}
344-
345-
- (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+
{
346361

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

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ - (void)setProvider:(id)provider
165165
_serviceProvider = provider;
166166
}
167167

168-
- (void)mergeChanges:(NSNotification*)notification
168+
// 仮想デバイスのリストを更新する
169+
- (void)updateChanges:(NSNotification*)notification
169170
{
170171
_devices = [[DPIRKitDBManager sharedInstance] queryVirtualDevice:nil];
171172
[_virtualDeviceList reloadData];
@@ -174,10 +175,11 @@ - (void)mergeChanges:(NSNotification*)notification
174175

175176
- (IBAction)addVirtualDevice:(id)sender {
176177
if (!_isRemoved) {
178+
// ダイアログでの操作を受け取るNotification
177179
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
178180

179181
[nc addObserver:self
180-
selector:@selector(mergeChanges:)
182+
selector:@selector(updateChanges:)
181183
name:DPIRKitVirtualDeviceCreateNotification
182184
object:nil];
183185
[DPIRKitCategorySelectDialog showWithServiceId:_irkitName];

dConnectSDK/dConnectSDKForIOS/DConnectSDK/Classes/viewcontroller/DConnectServiceListViewController.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEd
171171
[tableView beginUpdates];
172172
[self.delegate.serviceProvider removeService: service];
173173
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
174+
if ([self.delegate respondsToSelector:@selector(didRemoveService:)]) {
175+
[self.delegate didRemoveService: service];
176+
}
174177
[tableView endUpdates];
175178

176179
// 削除後にオフラインのサービスが1件以上あればRemoveボタンを有効にする

dConnectSDK/dConnectSDKForIOS/DConnectSDK/DConnectSDK/DConnectSystemProfile.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ extern NSString *const DConnectSystemProfileParamVersion;
8888

8989
@optional
9090

91+
- (void) didRemoveService: (DConnectService *) service;
92+
9193
- (void) didSelectService: (DConnectService *) service;
9294

9395
- (void) serviceListViewControllerDidWillAppear;

0 commit comments

Comments
 (0)