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

List:       kde-commits
Subject:    [plasmate/terietor/porting] plasmate: Port the MetadataEditor
From:       Antonis Tsiapaliokas <kok3rs () gmail ! com>
Date:       2014-03-22 13:12:48
Message-ID: E1WRLjE-00039w-97 () scm ! kde ! org
[Download RAW message or body]

Git commit af2acadb9db5b16ca9c139c017912c22dda59aea by Antonis Tsiapaliokas.
Committed on 21/03/2014 at 17:11.
Pushed by tsiapaliokas into branch 'terietor/porting'.

Port the MetadataEditor

M  +2    -3    plasmate/CMakeLists.txt
M  +27   -113  plasmate/editors/metadata/metadataeditor.cpp
M  +4    -10   plasmate/editors/metadata/metadataeditor.h

http://commits.kde.org/plasmate/af2acadb9db5b16ca9c139c017912c22dda59aea

diff --git a/plasmate/CMakeLists.txt b/plasmate/CMakeLists.txt
index 10cfd83..8116572 100644
--- a/plasmate/CMakeLists.txt
+++ b/plasmate/CMakeLists.txt
@@ -14,7 +14,7 @@ add_feature_info(GIT_EXECUTABLE_FOUND "Git" "Distributed Revision Control System
 
 set (PlasMate_SRC
     editors/editpage.cpp
-    #editors/metadata/metadataeditor.cpp
+    editors/metadata/metadataeditor.cpp
     editors/imageviewer/imageloader.cpp
     editors/imageviewer/imageviewer.cpp
     #editors/text/texteditor.cpp
@@ -68,8 +68,7 @@ set (PlasMate_SRC
 #endif (DEBUG_MODEL)
 
 qt5_wrap_ui(PlasMate_SRC
-    #startpage.ui
-   #editors/metadata/metadata.ui
+   editors/metadata/metadata.ui
    publisher/publisher.ui
    #publisher/remoteinstaller/remoteinstaller.ui
    editors/kconfigxt/kconfigxteditor.ui
diff --git a/plasmate/editors/metadata/metadataeditor.cpp b/plasmate/editors/metadata/metadataeditor.cpp
index a8a744a..227b5f8 100644
--- a/plasmate/editors/metadata/metadataeditor.cpp
+++ b/plasmate/editors/metadata/metadataeditor.cpp
@@ -16,11 +16,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include <QDir>
+#include <QDebug>
 #include <QRegExpValidator>
+
+#include <KIconButton>
 #include <KDesktopFile>
 #include <KConfigGroup>
-#include <QDebug>
 #include <KMessageWidget>
+#include <klocalizedstring.h>
 
 #include <plasma/packagemetadata.h>
 #include <plasma/plasma.h>
@@ -55,64 +58,48 @@ MetaDataEditor::~MetaDataEditor()
     delete m_metadata;
 }
 
-void MetaDataEditor::setFilename(const QString &filename)
+void MetaDataEditor::setFilename(const QString &filePath)
 {
-    m_filename = filename;
+    m_metadata->setFilePath(filePath);
 }
 
 const QString MetaDataEditor::filename()
 {
-    return m_filename;
+    return m_metadata->filePath();
 }
 
-bool MetaDataEditor::isValidMetaData()
-{
-    qDebug() << "readFile file" << m_filename;
-
-    delete m_metadata;
-    m_metadata = new Plasma::PackageMetadata(m_filename);
-    return m_metadata->isValid();
-
-}
-
-
 void MetaDataEditor::readFile()
 {
-    if (!this->isValidMetaData()) {
-      qWarning() << "MetaData cannot read the file because the filename:" + m_filename + "is not valid.";
-      return;
-    }
-
     m_view->name_edit->setText(m_metadata->name());
     m_view->comment_edit->setText(m_metadata->description());
     m_view->icon_button->setIcon(m_metadata->icon());
 
     m_view->pluginname_edit->setText(m_metadata->pluginName());
 
-    QString serviceType = m_metadata->serviceType();
+    const QString serviceType = m_metadata->serviceTypes().at(0);
 
     initCatergories(serviceType);
 
     m_view->type_combo->clear();
     m_view->type_combo->setEnabled(false);
-    if (serviceType == "Plasma/DataEngine") {
+    if (serviceType == QStringLiteral("Plasma/DataEngine")) {
         m_view->type_combo->insertItem(0, i18n("Data Engine"));
-        m_metadata->setServiceType("Plasma/DataEngine");
-    } else if (serviceType == "Plasma/Theme") {
+        m_metadata->setServiceTypes(QStringList() << QStringLiteral("Plasma/DataEngine"));
+    } else if (serviceType == QStringLiteral("Plasma/Theme")) {
         m_view->type_combo->insertItem(0, i18n("Theme"));
-        m_metadata->setServiceType("Plasma/Theme");
-    } else if (serviceType == "Plasma/Runner") {
+        m_metadata->setServiceTypes(QStringList() << QStringLiteral("Plasma/Theme"));
+    } else if (serviceType == QStringLiteral("Plasma/Runner")) {
         m_view->type_combo->insertItem(0, i18n("Runner"));
-        m_metadata->setServiceType("Plasma/Runner");
-    } else if (serviceType == "KWin/WindowSwitcher") {
+        m_metadata->setServiceTypes(QStringList() << QStringLiteral("Plasma/Runner"));
+    } else if (serviceType == QStringLiteral("KWin/WindowSwitcher")) {
         m_view->type_combo->insertItem(0,i18n("Window Switcher"));
-        m_metadata->setServiceType("KWin/WindowSwitcher");
-    } else if (serviceType == "KWin/Script") {
+        m_metadata->setServiceTypes(QStringList() << QStringLiteral("KWin/WindowSwitcher"));
+    } else if (serviceType == QStringLiteral("KWin/Script")) {
         m_view->type_combo->insertItem(0, i18n("KWin Script"));
-        m_metadata->setServiceType("KWin/Script");
-    } else if (serviceType == "KWin/Effect") {
+        m_metadata->setServiceTypes(QStringList() << QStringLiteral("KWin/Script"));
+    } else if (serviceType == QStringLiteral("KWin/Effect")) {
         m_view->type_combo->insertItem(0, i18n("KWin Effect"));
-        m_metadata->setServiceType("KWin/Effect");
+        m_metadata->setServiceTypes(QStringList() << QStringLiteral("KWin/Effect"));
     } else {
         m_view->type_combo->insertItem(0, i18n("Applet"));
         m_view->type_combo->insertItem(1, i18n("Popup Applet"));
@@ -155,95 +142,22 @@ const QString MetaDataEditor::api()
 
 void MetaDataEditor::serviceTypeChanged()
 {
-    Plasma::ComponentTypes currentType;
-
-    switch (m_view->type_combo->currentIndex()) {
-    case 0:
-        m_metadata->setServiceType("Plasma/Applet");
-        currentType = Plasma::AppletComponent;
-        break;
-    case 1:
-        m_metadata->setServiceType("Plasma/Applet,Plasma/PopupApplet");
-        currentType = Plasma::AppletComponent;
-        break;
-    /*case 2:   // only applet/popupapplet can be dynamically selected now
-        m_metadata->setServiceType("Plasma/DataEngine");
-        currentType = Plasma::DataEngineComponent;
-        break;
-    case 3:
-        m_metadata->setServiceType("Plasma/Theme");
-        m_view->api_combo->setEnabled(false);
-        return;
-        break;
-    case 4:
-        m_metadata->setServiceType("Plasma/Runner");
-        currentType = Plasma::RunnerComponent;
-        break;*/
-    default:
-        qWarning() << "Unknown service type" << currentType;
-        return;
-    }
-
     m_view->api_combo->setEnabled(false); // disallow dynamic changing of api
-    //FIXME: shouldn't need to do most of the stuff below anymore
-    m_apis = Plasma::knownLanguages(currentType);
-    m_apis.append(QString());   // Add empty string for native
-
-    qDebug() << "Got m_apis " << m_apis;
-    // Map to friendly names (TODO: fix in library)
+    QStringList apis;
+    apis << QStringLiteral("declarativeappletscript") << QStringLiteral("javascript");
 
     //add  api from the metadata.desktop inside the api
-    KConfig filenamePath(m_filename);
-    KConfigGroup metaFilePreferences(&filenamePath, "Desktop Entry");
-    QString api = metaFilePreferences.readEntry("X-Plasma-API");
-    QStringList apiName;
-    apiName << formatApi(api, MetaDataEditor::uiApi);
     m_view->label_16->setVisible(false);
     m_view->api_combo->clear();
-    m_view->api_combo->insertItems(0, apiName);
-    if (m_view->api_combo->currentIndex() == -1 || apiName.first().isEmpty()) {
+    m_view->api_combo->insertItems(0, QStringList() << m_metadata->pluginApi());
+    if (m_view->api_combo->currentIndex() == -1 || m_metadata->pluginApi().isEmpty()) {
         m_view->label_16->setVisible(true);
         m_view->api_combo->clear();
-        m_view->api_combo->insertItems(0, m_apis);
+        m_view->api_combo->insertItems(0, apis);
         m_view->api_combo->setEnabled(true);
     }
 }
 
-QString MetaDataEditor::formatApi(const QString &api,  apiModes apiMode)
-{
-    if (apiMode == MetaDataEditor::uiApi) {
-        if (api == QString("dashboard")) {
-            return QString("Dashboard");
-        } else if (api == QString("javascript")) {
-            return QString("Javascript");
-        } else if (api == QString("ruby-script")) {
-            return QString("Ruby");
-        } else if (api == QString("webkit")) {
-            return QString("Webkit");
-        } else if (api == QString("python")) {
-            return QString("Python");
-        } else if (api == QString("declarativeappletscript")) {
-            return QString("declarativeappletscript");
-        }
-    } else if (apiMode == MetaDataEditor::coreApi) {
-        if (api == QString("Dashboard")) {
-            return QString("dashboard");
-        } else if (api == QString("Javascript")) {
-            return QString("javascript");
-        } else if (api == QString("Ruby")) {
-            return QString("ruby-script");
-        } else if (api == QString("Webkit")) {
-            return QString("webkit");
-        } else if (api == QString("Python")) {
-            return QString("python");
-        } else if (api == QString("declarativeappletscript")) {
-            return QString("declarativeappletscript");
-        }
-    }
-    qWarning() << "Unknown API " << api << apiMode;
-    return QString(api);
-}
-
 void MetaDataEditor::writeFile()
 {
     QString api = m_view->api_combo->currentText();
@@ -252,7 +166,7 @@ void MetaDataEditor::writeFile()
     m_metadata->setIcon(m_view->icon_button->icon());
 
     m_metadata->setCategory(m_categories[m_view->category_combo->currentIndex()]);
-    m_metadata->setImplementationApi(formatApi(api, MetaDataEditor::coreApi));
+    m_metadata->setPluginApi(api);
     m_metadata->setPluginName(m_view->pluginname_edit->text());
     m_metadata->setVersion(m_view->version_edit->text());
     m_metadata->setWebsite(m_view->website_edit->text());
@@ -261,7 +175,7 @@ void MetaDataEditor::writeFile()
 
     m_metadata->setLicense(m_view->license_edit->text());
     emit apiChanged();
-    m_metadata->write(m_filename);
+    m_metadata->writeFile();
     //TODO: alert the necessary components (eg. packagemodel) if plugin type/api is changed
 }
 
diff --git a/plasmate/editors/metadata/metadataeditor.h b/plasmate/editors/metadata/metadataeditor.h
index 52c8b25..04166a0 100644
--- a/plasmate/editors/metadata/metadataeditor.h
+++ b/plasmate/editors/metadata/metadataeditor.h
@@ -21,6 +21,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <QWidget>
 #include <QStringList>
 
+#include "metadatahandler.h"
+
 namespace Ui
 {
 class MetaDataEditor;
@@ -39,16 +41,9 @@ public:
     MetaDataEditor(QWidget *parent = 0);
     ~MetaDataEditor();
 
-    enum apiModes {
-        coreApi,
-        uiApi
-    };
-
-    void setFilename(const QString &filename);
-    QString formatApi(const QString &api, apiModes apiMode);
+    void setFilename(const QString &filePath);
     const QString filename();
     const QString api();
-    bool isValidMetaData();
 public slots:
     void readFile();
     void writeFile();
@@ -61,8 +56,7 @@ private slots:
 private:
     Ui::MetaDataEditor *m_view;
     QString m_filename;
-    Plasma::PackageMetadata *m_metadata;
-    QStringList m_apis;
+    MetadataHandler *m_metadata;
     QStringList m_categories;
 
     void initCatergories(const QString& serviceType);

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

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