[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/attica/ocs/lib
From:       Eckhart Wörner <ewoerner () kde ! org>
Date:       2009-10-26 16:38:28
Message-ID: 1256575108.556271.9783.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1040666 by ewoerner:

Try to load the KDE plugin, if that fails, use the Qt plugin

 M  +11 -2     CMakeLists.txt  
 M  +3 -0      internals.h  
 M  +6 -0      kdeinternals.cpp  
 M  +4 -1      kdeinternals.h  
 M  +19 -2     providermanager.cpp  
 M  +1 -0      providermanager.h  
 M  +8 -1      qtinternals.cpp  
 M  +1 -0      qtinternals.h  


--- branches/work/attica/ocs/lib/CMakeLists.txt #1040665:1040666
@@ -1,6 +1,5 @@
 set(ocsclient_SRCS
    internals.cpp
-   kdeinternals.cpp
    qtinternals.cpp
    parser.cpp
    getjob.cpp
@@ -39,7 +38,8 @@
 kde4_add_library(ocsclient SHARED ${ocsclient_SRCS})
 set_target_properties(ocsclient PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION \
${GENERIC_LIB_SOVERSION})  
-target_link_libraries(ocsclient ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} \
${KDE4_KABC_LIBS}) +# FIXME: Remove KDE4 Libraries
+target_link_libraries(ocsclient ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} \
${QT_QTGUI_LIBRARY} ${KDE4_KIO_LIBRARY})  
 install(TARGETS ocsclient ${INSTALL_TARGETS_DEFAULT_ARGS})
 
@@ -59,3 +59,12 @@
     DESTINATION ${INCLUDE_INSTALL_DIR}/attica COMPONENT Devel
 )
 
+
+
+set(attica_kde_SRCS kdeinternals.cpp internals.cpp)
+kde4_add_plugin(attica_kde ${attica_kde_SRCS})
+
+target_link_libraries(attica_kde ${KDE4_KIO_LIBS} ${QT_QTMAIN_LIBRARY} \
${QT_QTCORE_LIBRARY}) +
+# FIXME: Use a more sane destination
+install(TARGETS attica_kde DESTINATION "~")
--- branches/work/attica/ocs/lib/internals.h #1040665:1040666
@@ -23,6 +23,7 @@
 #define ATTICA_INTERNALS_H
 
 #include <QtCore/QList>
+#include <QtCore/QtPlugin>
 
 
 class QByteArray;
@@ -50,5 +51,7 @@
 
 }
 
+Q_DECLARE_INTERFACE(Attica::Internals, "org.kde.Attica.Internals/1.0")
 
+
 #endif
--- branches/work/attica/ocs/lib/kdeinternals.cpp #1040665:1040666
@@ -99,3 +99,9 @@
 QNetworkAccessManager* Attica::KDEInternals::nam() {
     return &m_qnam;
 }
+
+
+Q_EXPORT_PLUGIN2(attica_kde, Attica::KDEInternals)
+
+
+#include "kdeinternals.moc"
--- branches/work/attica/ocs/lib/kdeinternals.h #1040665:1040666
@@ -33,8 +33,11 @@
 
 namespace Attica {
 
-class KDEInternals : public Attica::Internals
+class KDEInternals : public QObject, public Attica::Internals
 {
+    Q_OBJECT
+    Q_INTERFACES(Attica::Internals)
+
 public:
     KDEInternals();
     virtual QList<QUrl> getDefaultProviderFiles() const;
--- branches/work/attica/ocs/lib/providermanager.cpp #1040665:1040666
@@ -22,6 +22,7 @@
 #include "providermanager.h"
 
 #include <QtCore/QDebug>
+#include <QtCore/QPluginLoader>
 #include <QtCore/QSet>
 #include <QtCore/QSharedPointer>
 #include <QtCore/QTimer>
@@ -30,7 +31,7 @@
 #include <QtXml/QXmlStreamReader>
 
 #include "internals.h"
-#include "kdeinternals.h"
+#include "qtinternals.h"
 
 
 using namespace Attica;
@@ -46,7 +47,7 @@
     QHash<QUrl, QList<QString> > m_providerFiles;
 
     Private()
-        : m_internals(new KDEInternals)
+        : m_internals(0)
     {
     }
     ~Private()
@@ -55,9 +56,25 @@
 };
 
 
+Internals* ProviderManager::loadInternals() {
+    QPluginLoader loader("attica_kde.so");
+    QObject* plugin = loader.instance();
+    if (plugin) {
+        Internals* kdeInternals = qobject_cast<Internals*>(plugin);
+        if (kdeInternals) {
+            qDebug() << "Using Attica with KDE support";
+            return kdeInternals;
+        }
+    }
+    qDebug() << "Using Attica without KDE support";
+    return new QtInternals;
+}
+
+
 ProviderManager::ProviderManager()
     : d(new Private)
 {
+    d->m_internals = QSharedPointer<Internals>(loadInternals());
     connect(d->m_internals->nam(), \
SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), \
SLOT(authenticate(QNetworkReply*,QAuthenticator*)));  }
 
--- branches/work/attica/ocs/lib/providermanager.h #1040665:1040666
@@ -65,6 +65,7 @@
     ProviderManager& operator=(const ProviderManager& other);
 
     void initNetworkAccesssManager();
+    Internals* loadInternals();
 
     void parseProviderFile(const QString& xmlString);
 
--- branches/work/attica/ocs/lib/qtinternals.cpp #1040665:1040666
@@ -56,6 +56,13 @@
 }
 
 
-QList<QUrl> Attica::QtInternals::getDefaultProviderFiles() const {
+QList<QUrl> Attica::QtInternals::getDefaultProviderFiles() const
+{
     return QList<QUrl>();
 }
+
+
+QNetworkAccessManager* Attica::QtInternals::nam()
+{
+    return &m_qnam;
+}
--- branches/work/attica/ocs/lib/qtinternals.h #1040665:1040666
@@ -38,6 +38,7 @@
     virtual QNetworkReply* get(const QNetworkRequest& request);
     virtual bool saveCredentials(const QUrl& baseUrl, const QString& user, const \
                QString& password);
     virtual bool loadCredentials(const QUrl& baseUrl, QString& user, QString& \
password); +    virtual QNetworkAccessManager* nam();
 
 private:
     QNetworkAccessManager m_qnam;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic