RazorPluginInfo => LxQt::PluginInfo
authorAlexander Sokolov <sokoloff.a@gmail.com>
Sun, 6 Oct 2013 08:35:07 +0000 (12:35 +0400)
committerAlexander Sokolov <sokoloff.a@gmail.com>
Sun, 6 Oct 2013 08:35:07 +0000 (12:35 +0400)
CMakeLists.txt
addplugindialog/addplugindialog.cpp
addplugindialog/addplugindialog.h
lxqtplugininfo.cpp [new file with mode: 0644]
lxqtplugininfo.h [new file with mode: 0644]
razorplugininfo.cpp [deleted file]
razorplugininfo.h [deleted file]

index f49bd90..bd7c356 100644 (file)
@@ -11,7 +11,7 @@ set(PUB_HDRS
     aboutdialog/lxqtaboutdialog.h
     razorsettings.h
     xfitman.h
-    razorplugininfo.h
+    lxqtplugininfo.h
     powermanager.h
     addplugindialog/addplugindialog.h
     screensaver.h
@@ -44,7 +44,7 @@ set(SRCS
     aboutdialog/lxqtaboutdialog.cpp
     aboutdialog/technicalinfo.cpp
     xfitman.cpp
-    razorplugininfo.cpp
+    lxqtplugininfo.cpp
     powermanager.cpp
     addplugindialog/addplugindialog.cpp
     razorsettings.cpp
index 07b7f5c..aaaacfb 100644 (file)
@@ -131,7 +131,7 @@ QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelInd
 /************************************************
 
  ************************************************/
-bool pluginDescriptionLessThan(const RazorPluginInfo &p1, const RazorPluginInfo &p2)
+bool pluginDescriptionLessThan(const PluginInfo &p1, const PluginInfo &p2)
 {
     int cmp = QString::compare(p1.name(), p2.name());
     if (cmp != 0)
@@ -155,7 +155,7 @@ AddPluginDialog::AddPluginDialog(const QStringList& desktopFilesDirs,
     libTranslate("librazorqt");
     ui->setupUi(this);
 
-    mPlugins = RazorPluginInfo::search(desktopFilesDirs, serviceType, nameFilter);
+    mPlugins = PluginInfo::search(desktopFilesDirs, serviceType, nameFilter);
     qSort(mPlugins.begin(), mPlugins.end(), pluginDescriptionLessThan);
     
     ui->pluginList->setItemDelegate(new HtmlDelegate(QSize(32, 32), ui->pluginList));
@@ -168,7 +168,7 @@ AddPluginDialog::AddPluginDialog(const QStringList& desktopFilesDirs,
     connect(ui->addButton, SIGNAL(clicked(bool)), this, SLOT(emitPluginSelected()));
 }
 
-void AddPluginDialog::setPluginsInUse(const RazorPluginInfoList pluginsInUse)
+void AddPluginDialog::setPluginsInUse(const PluginInfoList pluginsInUse)
 {
     mPluginsInUse = pluginsInUse;
     init();
@@ -189,7 +189,7 @@ void AddPluginDialog::init()
         if (count)
             countStr = tr("(%1 active)").arg(count);
 
-        const RazorPluginInfo &plugin = mPlugins.at(i);
+        const PluginInfo &plugin = mPlugins.at(i);
         QListWidgetItem* item = new QListWidgetItem(ui->pluginList);
         item->setText(QString("<b>%1 %2</b><br>\n%3\n").arg(plugin.name(), countStr, plugin.comment()));
         item->setIcon(plugin.icon(fallIco));
@@ -256,8 +256,7 @@ void AddPluginDialog::emitPluginSelected()
     QListWidget* pluginList = ui->pluginList;
     if (pluginList->currentItem() && pluginList->currentItem()->isSelected())
     {
-        RazorPluginInfo plugin = mPlugins.at(pluginList->currentItem()->data(INDEX_ROLE).toInt());
-        qDebug() << "emitPluginSelected emitted";
+        PluginInfo plugin = mPlugins.at(pluginList->currentItem()->data(INDEX_ROLE).toInt());
         emit pluginSelected(plugin);
     }
 }
index bba2dbc..23ccc14 100644 (file)
@@ -30,7 +30,7 @@
 #define ADDPLUGINDIALOG_H
 
 #include <QDialog>
-#include <razorplugininfo.h>
+#include <lxqtplugininfo.h>
 
 #define SEARCH_DELAY 125
 
@@ -50,7 +50,7 @@ class AddPluginDialog : public QDialog
 
 public:
     /*! Constructs a dialog with the given parent that initially displays
-       RazorPluginInfo objects for the matched files in the directories
+       PluginInfo objects for the matched files in the directories
       @param desktopFilesDirs - list of the scanned directories names.
       @param serviceType - type of the plugin, for example "RazorPanel/Plugin".
       @param nameFilter  - wildcard filter that understands * and ? wildcards. */
@@ -61,10 +61,10 @@ public:
 
     ~AddPluginDialog();
 
-    void setPluginsInUse(const RazorPluginInfoList pluginsInUse);
+    void setPluginsInUse(const PluginInfoList pluginsInUse);
 
 signals:
-    void pluginSelected(const RazorPluginInfo &plugin);
+    void pluginSelected(const PluginInfo &plugin);
 
 protected:
     void timerEvent(QTimerEvent* event);
@@ -72,8 +72,8 @@ protected:
 private:
     void init();
     Ui::AddPluginDialog *ui;
-    RazorPluginInfoList mPlugins;
-    RazorPluginInfoList mPluginsInUse;
+    PluginInfoList mPlugins;
+    PluginInfoList mPluginsInUse;
     int mTimerId;
 
 private slots:
diff --git a/lxqtplugininfo.cpp b/lxqtplugininfo.cpp
new file mode 100644 (file)
index 0000000..a062075
--- /dev/null
@@ -0,0 +1,180 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright: 2010-2011 Razor team
+ * Authors:
+ *   Alexander Sokoloff <sokoloff.a@gmail.com>
+ *
+ * This program or library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+
+#include "lxqtplugininfo.h"
+#include <QtCore/QObject>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtCore/QTranslator>
+#include <QtCore/QCoreApplication>
+#include <QLibrary>
+#include <QDebug>
+
+using namespace LxQt;
+
+/************************************************
+
+ ************************************************/
+PluginInfo::PluginInfo():
+    XdgDesktopFile()
+{
+
+}
+
+
+/************************************************
+
+ ************************************************/
+bool PluginInfo::load(const QString& fileName)
+{
+    XdgDesktopFile::load(fileName);
+    mId = QFileInfo(fileName).completeBaseName();
+    return isValid();
+}
+
+
+/************************************************
+
+ ************************************************/
+bool PluginInfo::isValid() const
+{
+    return XdgDesktopFile::isValid();
+}
+
+
+/************************************************
+
+ ************************************************/
+QLibrary* PluginInfo::loadLibrary(const QString& libDir) const
+{
+    QString baseName, path;
+    QFileInfo fi = QFileInfo(fileName());
+    path = fi.canonicalPath();
+    baseName = value("X-Razor-Library", fi.completeBaseName()).toString();
+
+    QString soPath = QDir(libDir).filePath(QString("lib%2.so").arg(baseName));
+    QLibrary* library = new QLibrary(soPath);
+
+    if (!library->load())
+    {
+        qWarning() << QString("Can't load plugin lib \"%1\"").arg(soPath) << library->errorString();
+        delete library;
+        return 0;
+    }
+
+    QString locale = QLocale::system().name();
+    QTranslator* translator = new QTranslator(library);
+
+    translator->load(QString("%1/%2/%2_%3.qm").arg(path, baseName, locale));
+    qApp->installTranslator(translator);
+
+    return library;
+}
+
+
+/************************************************
+
+ ************************************************/
+PluginInfoList PluginInfo::search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter)
+{
+    QList<PluginInfo> res;
+    QSet<QString> processed;
+
+    foreach (QString desktopFilesDir, desktopFilesDirs)
+    {
+        QDir dir(desktopFilesDir);
+        QFileInfoList files = dir.entryInfoList(QStringList(nameFilter), QDir::Files | QDir::Readable);
+        foreach (QFileInfo file, files)
+        {
+            if (processed.contains(file.fileName()))
+                continue;
+
+            processed << file.fileName();
+
+            PluginInfo item;
+            item.load(file.canonicalFilePath());
+
+            if (item.isValid() && item.serviceType() == serviceType)
+                res.append(item);
+        }
+    }
+    return res;
+}
+
+
+/************************************************
+
+ ************************************************/
+PluginInfoList PluginInfo::search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter)
+{
+    return search(QStringList(desktopFilesDir), serviceType, nameFilter);
+}
+
+
+/************************************************
+
+ ************************************************/
+QDebug operator<<(QDebug dbg, const LxQt::PluginInfo &pluginInfo)
+{
+    dbg.nospace() << QString("%1").arg(pluginInfo.id());
+    return dbg.space();
+}
+
+
+/************************************************
+
+ ************************************************/
+QDebug operator<<(QDebug dbg, const LxQt::PluginInfo * const pluginInfo)
+{
+    return operator<<(dbg, *pluginInfo);
+}
+
+
+/************************************************
+
+ ************************************************/
+QDebug operator<<(QDebug dbg, const PluginInfoList& list)
+{
+    dbg.nospace() << '(';
+    for (int i=0; i<list.size(); ++i)
+    {
+        if (i) dbg.nospace() << ", ";
+        dbg << list.at(i);
+    }
+    dbg << ')';
+    return dbg.space();
+}
+
+
+/************************************************
+
+ ************************************************/
+QDebug operator<<(QDebug dbg, const PluginInfoList* const pluginInfoList)
+{
+    return operator<<(dbg, *pluginInfoList);
+}
diff --git a/lxqtplugininfo.h b/lxqtplugininfo.h
new file mode 100644 (file)
index 0000000..c454c86
--- /dev/null
@@ -0,0 +1,114 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright: 2010-2011 Razor team
+ * Authors:
+ *   Alexander Sokoloff <sokoloff.a@gmail.com>
+ *
+ * This program or library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+
+#ifndef LXQTPLUGININFO_H
+#define LXQTPLUGININFO_H
+
+#include <qtxdg/xdgdesktopfile.h>
+#include <QtCore/QString>
+#include <QtCore/QList>
+
+#include <QtCore/QFileInfo>
+#include <QtCore/QtAlgorithms>
+#include <QtCore/QDebug>
+
+class QLibrary;
+
+namespace LxQt
+{
+
+/*!
+Every plugin needs a .desktop file that describes it. The basename of this file must
+be same as the basename of the plugin library.
+
+razorpanel_clock2.desktop file
+
+[Desktop Entry]
+  Type=Service
+  ServiceTypes=RazorPanel/Plugin
+  Name=Clock
+  Comment=Clock and calendar
+
+PluginInfo class gives the interface for reading the values from the plugin .desktop file.
+This is a pure virtual class, you must implement libraryDir(), translationDir(), and instance() methods.
+*/
+class PluginInfo: public XdgDesktopFile
+{
+public:
+    /// Constructs a PluginInfo object for accessing the info stored in the .desktop file.
+    explicit PluginInfo();
+
+    //! Reimplemented from XdgDesktopFile.
+    virtual bool load(const QString& fileName);
+
+
+    //! Reimplemented from XdgDesktopFile.
+    //PluginInfo& operator=(const PluginInfo& other);
+
+
+    //! Returns identification string of this plugin, identified plugin type. Now id is part of the filename.
+    QString id() const { return mId; }
+
+    //! This function is provided for convenience. It's equivalent to calling value("ServiceTypes").toString().
+    QString serviceType() const  { return value("ServiceTypes").toString(); }
+
+    //! Reimplemented from XdgDesktopFile.
+    virtual bool isValid() const;
+
+    /*! Loads the library and returns QLibrary object if the library was loaded successfully; otherwise returns 0.
+        @parm libDir directory where placed the plugin .so file. */
+    QLibrary* loadLibrary(const QString& libDir) const;
+
+
+    /*! Returns a list of PluginInfo objects for the matched files in the directories.
+      @param desktopFilesDirs - scanned directories names.
+      @param serviceType - type of the plugin, for example "RazorPanel/Plugin".
+      @param nameFilter  - wildcard filter that understands * and ? wildcards.
+
+      If the same filename is located under multiple directories only the first file should be used.
+    */
+    static QList<PluginInfo> search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter="*");
+
+    /// This function is provided for convenience. It's equivalent to new calling search(QString(desktopFilesDir), serviceType, nameFilter)
+    static QList<PluginInfo> search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter="*");
+
+private:
+    QString mId;
+};
+
+typedef QList<PluginInfo> PluginInfoList;
+
+} // namespace LxQt
+
+QDebug operator<<(QDebug dbg, const LxQt::PluginInfo& pi);
+QDebug operator<<(QDebug dbg, const LxQt::PluginInfo* const pi);
+
+QDebug operator<<(QDebug dbg, const LxQt::PluginInfoList& list);
+QDebug operator<<(QDebug dbg, const LxQt::PluginInfoList* const pluginInfoList);
+
+#endif // LXQTPLUGININFO_H
diff --git a/razorplugininfo.cpp b/razorplugininfo.cpp
deleted file mode 100644 (file)
index 4521460..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright: 2010-2011 Razor team
- * Authors:
- *   Alexander Sokoloff <sokoloff.a@gmail.com>
- *
- * This program or library is free software; you can redistribute it
- * and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-
-#include "razorplugininfo.h"
-#include <QtCore/QObject>
-#include <QtCore/QFileInfo>
-#include <QtCore/QDir>
-#include <QtCore/QTranslator>
-#include <QtCore/QCoreApplication>
-#include <QLibrary>
-#include <QDebug>
-
-
-/************************************************
-
- ************************************************/
-RazorPluginInfo::RazorPluginInfo():
-    XdgDesktopFile()
-{
-
-}
-
-
-/************************************************
-
- ************************************************/
-bool RazorPluginInfo::load(const QString& fileName)
-{
-    XdgDesktopFile::load(fileName);
-    mId = QFileInfo(fileName).completeBaseName();
-    return isValid();
-}
-
-
-/************************************************
-
- ************************************************/
-bool RazorPluginInfo::isValid() const
-{
-    return XdgDesktopFile::isValid();
-}
-
-
-/************************************************
-
- ************************************************/
-QLibrary* RazorPluginInfo::loadLibrary(const QString& libDir) const
-{
-    QString baseName, path;
-    QFileInfo fi = QFileInfo(fileName());
-    path = fi.canonicalPath();
-    baseName = value("X-Razor-Library", fi.completeBaseName()).toString();
-
-    QString soPath = QDir(libDir).filePath(QString("lib%2.so").arg(baseName));
-    QLibrary* library = new QLibrary(soPath);
-
-    if (!library->load())
-    {
-        qWarning() << QString("Can't load plugin lib \"%1\"").arg(soPath) << library->errorString();
-        delete library;
-        return 0;
-    }
-
-    QString locale = QLocale::system().name();
-    QTranslator* translator = new QTranslator(library);
-
-    translator->load(QString("%1/%2/%2_%3.qm").arg(path, baseName, locale));
-    qApp->installTranslator(translator);
-
-    return library;
-}
-
-
-/************************************************
-
- ************************************************/
-RazorPluginInfoList RazorPluginInfo::search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter)
-{
-    QList<RazorPluginInfo> res;
-    QSet<QString> processed;
-
-    foreach (QString desktopFilesDir, desktopFilesDirs)
-    {
-        QDir dir(desktopFilesDir);
-        QFileInfoList files = dir.entryInfoList(QStringList(nameFilter), QDir::Files | QDir::Readable);
-        foreach (QFileInfo file, files)
-        {
-            if (processed.contains(file.fileName()))
-                continue;
-
-            processed << file.fileName();
-
-            RazorPluginInfo item;
-            item.load(file.canonicalFilePath());
-
-            if (item.isValid() && item.serviceType() == serviceType)
-                res.append(item);
-        }
-    }
-    return res;
-}
-
-
-/************************************************
-
- ************************************************/
-RazorPluginInfoList RazorPluginInfo::search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter)
-{
-    return search(QStringList(desktopFilesDir), serviceType, nameFilter);
-}
-
-
-/************************************************
-
- ************************************************/
-QDebug operator<<(QDebug dbg, const RazorPluginInfo &pluginInfo)
-{
-    dbg.nospace() << QString("%1").arg(pluginInfo.id());
-    return dbg.space();
-}
-
-
-/************************************************
-
- ************************************************/
-QDebug operator<<(QDebug dbg, const RazorPluginInfo * const pluginInfo)
-{
-    return operator<<(dbg, *pluginInfo);
-}
-
-
-/************************************************
-
- ************************************************/
-QDebug operator<<(QDebug dbg, const RazorPluginInfoList& list)
-{
-    dbg.nospace() << '(';
-    for (int i=0; i<list.size(); ++i)
-    {
-        if (i) dbg.nospace() << ", ";
-        dbg << list.at(i);
-    }
-    dbg << ')';
-    return dbg.space();
-}
-
-
-/************************************************
-
- ************************************************/
-QDebug operator<<(QDebug dbg, const RazorPluginInfoList* const pluginInfoList)
-{
-    return operator<<(dbg, *pluginInfoList);
-}
diff --git a/razorplugininfo.h b/razorplugininfo.h
deleted file mode 100644 (file)
index c9259d5..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright: 2010-2011 Razor team
- * Authors:
- *   Alexander Sokoloff <sokoloff.a@gmail.com>
- *
- * This program or library is free software; you can redistribute it
- * and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-
-#ifndef RAZORPLUGININFO_H
-#define RAZORPLUGININFO_H
-
-#include <qtxdg/xdgdesktopfile.h>
-#include <QtCore/QString>
-#include <QtCore/QList>
-
-#include <QtCore/QFileInfo>
-//#include <QtCore/QDir>
-#include <QtCore/QtAlgorithms>
-#include <QtCore/QDebug>
-
-class QLibrary;
-
-/*!
-Every plugin needs a .desktop file that describes it. The basename of this file must
-be same as the basename of the plugin library.
-
-razorpanel_clock2.desktop file
-
-[Desktop Entry]
-  Type=Service
-  ServiceTypes=RazorPanel/Plugin
-  Name=Clock
-  Comment=Clock and calendar
-
-RazorPluginInfo class gives the interface for reading the values from the plugin .desktop file.
-This is a pure virtual class, you must implement libraryDir(), translationDir(), and instance() methods.
-*/
-class RazorPluginInfo: public XdgDesktopFile
-{
-public:
-    /// Constructs a RazorPluginInfo object for accessing the info stored in the .desktop file.
-    explicit RazorPluginInfo();
-
-    //! Reimplemented from XdgDesktopFile.
-    virtual bool load(const QString& fileName);
-
-
-    //! Reimplemented from XdgDesktopFile.
-    //RazorPluginInfo& operator=(const RazorPluginInfo& other);
-
-
-    //! Returns identification string of this plugin, identified plugin type. Now id is part of the filename.
-    QString id() const { return mId; }
-
-    //! This function is provided for convenience. It's equivalent to calling value("ServiceTypes").toString().
-    QString serviceType() const  { return value("ServiceTypes").toString(); }
-
-    //! Reimplemented from XdgDesktopFile.
-    virtual bool isValid() const;
-
-    /*! Loads the library and returns QLibrary object if the library was loaded successfully; otherwise returns 0.
-        @parm libDir directory where placed the plugin .so file. */
-    QLibrary* loadLibrary(const QString& libDir) const;
-
-
-    /*! Returns a list of RazorPluginInfo objects for the matched files in the directories.
-      @param desktopFilesDirs - scanned directories names.
-      @param serviceType - type of the plugin, for example "RazorPanel/Plugin".
-      @param nameFilter  - wildcard filter that understands * and ? wildcards.
-
-      If the same filename is located under multiple directories only the first file should be used.
-    */
-    static QList<RazorPluginInfo> search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter="*");
-
-    /// This function is provided for convenience. It's equivalent to new calling search(QString(desktopFilesDir), serviceType, nameFilter)
-    static QList<RazorPluginInfo> search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter="*");
-
-private:
-    QString mId;
-};
-
-typedef QList<RazorPluginInfo> RazorPluginInfoList;
-
-
-QDebug operator<<(QDebug dbg, const RazorPluginInfo& pi);
-QDebug operator<<(QDebug dbg, const RazorPluginInfo* const pi);
-
-QDebug operator<<(QDebug dbg, const RazorPluginInfoList& list);
-QDebug operator<<(QDebug dbg, const RazorPluginInfoList* const pluginInfoList);
-
-#endif // RAZORPLUGININFO_H