ソースを参照

Read full saved plugin state from database.

Sascha Zelzer 14 年 前
コミット
fa8312f16b
共有3 個のファイルを変更した15 個の追加7 個の削除を含む
  1. 5 4
      Libs/PluginFramework/ctkPluginArchive.cpp
  2. 3 1
      Libs/PluginFramework/ctkPluginArchive_p.h
  3. 7 2
      Libs/PluginFramework/ctkPluginDatabase.cpp

+ 5 - 4
Libs/PluginFramework/ctkPluginArchive.cpp

@@ -35,10 +35,11 @@ const QString ctkPluginArchive::AUTOSTART_SETTING_ACTIVATION_POLICY("activation_
 //----------------------------------------------------------------------------
 ctkPluginArchive::ctkPluginArchive(ctkPluginStorage* pluginStorage,
                                    const QUrl& pluginLocation, const QString& localPluginPath,
-                                   int pluginId)
-                                     : autostartSetting(-1), id(pluginId), startLevel(-1),
-                                     location(pluginLocation), localPluginPath(localPluginPath),
-                                     storage(pluginStorage)
+                                   int pluginId, int startLevel, const QDateTime& lastModified,
+                                   int autostartSetting)
+  : autostartSetting(autostartSetting), id(pluginId), startLevel(startLevel),
+    lastModified(lastModified), location(pluginLocation),
+    localPluginPath(localPluginPath), storage(pluginStorage)
 {
   QByteArray manifestResource = this->getPluginResource("META-INF/MANIFEST.MF");
   if (manifestResource.isEmpty())

+ 3 - 1
Libs/PluginFramework/ctkPluginArchive_p.h

@@ -82,7 +82,9 @@ public:
    *
    */
   ctkPluginArchive(ctkPluginStorage* pluginStorage, const QUrl& pluginLocation,
-                   const QString& localPluginPath, int pluginId);
+                   const QString& localPluginPath, int pluginId,
+                   int startLevel = -1, const QDateTime& lastModified = QDateTime(),
+                   int autostartSetting = -1);
 
   /**
    * Get an attribute from the manifest of a plugin.

+ 7 - 2
Libs/PluginFramework/ctkPluginDatabase.cpp

@@ -809,7 +809,7 @@ QList<ctkPluginArchive*> ctkPluginDatabase::getPluginArchives() const
   checkConnection();
 
   QSqlQuery query(QSqlDatabase::database(m_connectionName));
-  QString statement("SELECT ID, Location, LocalPath FROM Plugins WHERE State != ?");
+  QString statement("SELECT ID, Location, LocalPath, StartLevel, LastModified, AutoStart FROM Plugins WHERE State != ?");
   QList<QVariant> bindValues;
   bindValues.append(ctkPlugin::UNINSTALLED);
 
@@ -828,9 +828,14 @@ QList<ctkPluginArchive*> ctkPluginDatabase::getPluginArchives() const
                                     ctkPluginDatabaseException::DB_FILE_INVALID);
     }
 
+    const int startLevel = query.value(EBindIndex3).toInt();
+    const QDateTime lastModified = query.value(EBindIndex4).toDateTime();
+    const int autoStart = query.value(EBindIndex5).toInt();
+
     try
     {
-      ctkPluginArchive* pa = new ctkPluginArchive(m_PluginStorage, location, localPath, id);
+      ctkPluginArchive* pa = new ctkPluginArchive(m_PluginStorage, location, localPath, id,
+                                                  startLevel, lastModified, autoStart);
       archives.append(pa);
     }
     catch (const ctkPluginException& exc)