- modifyService() disable repos when disabling service
authorJan Kupec <jkupec@suse.cz>
Wed, 17 Sep 2008 15:14:16 +0000 (15:14 +0000)
committerJan Kupec <jkupec@suse.cz>
Wed, 17 Sep 2008 15:14:16 +0000 (15:14 +0000)
zypp/RepoManager.cc

index 8fbb50d..6d5de29 100644 (file)
@@ -1701,8 +1701,8 @@ namespace zypp
       }
     }
 
-   // Save service if modified:
-   if ( serviceModified )
+    // save service if modified:
+    if ( serviceModified )
     {
       // write out modified service file.
       modifyService( service.alias(), service );
@@ -1739,25 +1739,29 @@ namespace zypp
     _pimpl->services.erase(oldAlias);
     _pimpl->services.insert(service);
 
-    // changed name, must change also repositories
-    if( oldAlias != service.alias() )
+    // changed properties affecting also repositories
+    if( oldAlias != service.alias()                    // changed alias
+        || oldService.enabled() != service.enabled()   // changed enabled status
+      )
     {
       std::vector<RepoInfo> toModify;
       getRepositoriesInService(oldAlias,
         insert_iterator<std::vector<RepoInfo> >( toModify, toModify.begin() ));
       for_( it, toModify.begin(), toModify.end() )
       {
-        it->setService(service.alias());
+        if (oldService.enabled() && !service.enabled())
+          it->setEnabled(false);
+        else if (!oldService.enabled() && service.enabled())
+        {
+          //! \todo do nothing? the repos will be enabled on service refresh
+          //! \todo how to know the service needs a (auto) refresh????
+        }
+        else
+          it->setService(service.alias());
         modifyRepository(it->alias(), *it);
       }
     }
 
-    //! \todo changed enabled status
-    if ( oldService.enabled() != service.enabled() )
-    {
-
-    }
-
     //! \todo refresh the service automatically if url is changed?
   }