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

List:       kde-commits
Subject:    [kdepim] pimcommon: improve++
From:       Montel Laurent <montel () kde ! org>
Date:       2013-10-31 21:18:58
Message-ID: E1Vbzdq-0008KJ-0D () scm ! kde ! org
[Download RAW message or body]

Git commit c7746199072164370f8aef8b8c7da5a5b9cc2627 by Montel Laurent.
Committed on 31/10/2013 at 21:18.
Pushed by mlaurent into branch 'master'.

improve++

M  +1    -1    pimcommon/CMakeLists.txt
A  +69   -0    pimcommon/shorturl/migremeshorturl.cpp     [License: GPL (v2)]
C  +16   -14   pimcommon/shorturl/migremeshorturl.h [from: \
pimcommon/shorturl/shorturlconfigurewidget.h - 060% similarity] M  +14   -2    \
pimcommon/shorturl/shorturlconfigurewidget.cpp M  +7    -0    \
pimcommon/shorturl/shorturlconfigurewidget.h M  +7    -0    \
pimcommon/shorturl/shorturlutils.cpp M  +1    -0    \
pimcommon/shorturl/shorturlutils.h M  +8    -1    \
pimcommon/shorturl/shorturlwidget.cpp M  +3    -0    \
pimcommon/shorturl/shorturlwidget.h M  +1    -1    \
pimcommon/shorturl/tests/CMakeLists.txt A  +45   -0    \
pimcommon/shorturl/tests/shorturlmainwidget.cpp     [License: GPL (v2)] C  +13   -15  \
pimcommon/shorturl/tests/shorturlmainwidget.h [from: \
pimcommon/shorturl/shorturlconfigurewidget.h - 064% similarity] M  +3    -2    \
pimcommon/shorturl/tests/shorturlwidget_gui.cpp

http://commits.kde.org/kdepim/c7746199072164370f8aef8b8c7da5a5b9cc2627

diff --git a/pimcommon/CMakeLists.txt b/pimcommon/CMakeLists.txt
index d65cbb2..c7eaedc 100644
--- a/pimcommon/CMakeLists.txt
+++ b/pimcommon/CMakeLists.txt
@@ -47,7 +47,7 @@ set(libpimcommon_SRCS
   shorturl/googleshorturl.cpp
   shorturl/shorturlconfigurewidget.cpp
   shorturl/shorturlutils.cpp
-  
+  shorturl/migremeshorturl.cpp
 )
 
 macro(add_resource_iface _kcfgFile _ifaceName _className _fileName)
diff --git a/pimcommon/shorturl/migremeshorturl.cpp \
b/pimcommon/shorturl/migremeshorturl.cpp new file mode 100644
index 0000000..580076f
--- /dev/null
+++ b/pimcommon/shorturl/migremeshorturl.cpp
@@ -0,0 +1,69 @@
+/*
+  Copyright (c) 2013 Montel Laurent <montel@kde.org>
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License, version 2, as
+  published by the Free Software Foundation.
+
+  This program 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
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+
+#include "migremeshorturl.h"
+
+#include <KLocale>
+
+#include <QNetworkAccessManager>
+#include <QNetworkRequest>
+#include <QUrl>
+#include <QDebug>
+
+
+using namespace PimCommon;
+
+MigremeShortUrl::MigremeShortUrl(QObject *parent)
+    : PimCommon::AbstractShortUrl(parent),
+      mNetworkAccessManager(new QNetworkAccessManager(this))
+{
+    connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, \
SLOT(slotShortUrlFinished(QNetworkReply*))); +}
+
+MigremeShortUrl::~MigremeShortUrl()
+{
+}
+
+void MigremeShortUrl::start()
+{
+    const QString requestUrl = \
QString::fromLatin1("http://migre.me/api.txt?url=%1").arg(mOriginalUrl); +    \
QNetworkReply *reply = mNetworkAccessManager->get(QNetworkRequest(requestUrl)); +    \
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, \
SLOT(slotError(QNetworkReply::NetworkError))); +}
+
+void MigremeShortUrl::slotShortUrlFinished(QNetworkReply *reply)
+{
+    reply->deleteLater();
+    if (mErrorFound)
+        return;
+
+    const QString data = QString::fromUtf8(reply->readAll());
+    if (!data.isEmpty()) {
+        Q_EMIT shortUrlDone(data);
+    }
+}
+
+void MigremeShortUrl::slotError(QNetworkReply::NetworkError error)
+{
+    mErrorFound = true;
+    Q_EMIT shortUrlFailed(i18n("Error reported by server: \'%1\'", error));
+}
+
+
+
+#include "migremeshorturl.moc"
diff --git a/pimcommon/shorturl/shorturlconfigurewidget.h \
b/pimcommon/shorturl/migremeshorturl.h similarity index 60%
copy from pimcommon/shorturl/shorturlconfigurewidget.h
copy to pimcommon/shorturl/migremeshorturl.h
index 1d271fc..63f2e39 100644
--- a/pimcommon/shorturl/shorturlconfigurewidget.h
+++ b/pimcommon/shorturl/migremeshorturl.h
@@ -15,30 +15,32 @@
   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef SHORTURLCONFIGUREWIDGET_H
-#define SHORTURLCONFIGUREWIDGET_H
 
-#include "pimcommon_export.h"
+#ifndef MIGREMESHORTURL_H
+#define MIGREMESHORTURL_H
+#include "abstractshorturl.h"
 
-#include <QWidget>
-#include <QComboBox>
+#include <QNetworkReply>
+
+class QNetworkAccessManager;
 
 namespace PimCommon {
-class PIMCOMMON_EXPORT ShortUrlConfigureWidget : public QWidget
+class MigremeShortUrl : public PimCommon::AbstractShortUrl
 {
     Q_OBJECT
 public:
-    explicit ShortUrlConfigureWidget(QWidget *parent=0);
-    ~ShortUrlConfigureWidget();
+    explicit MigremeShortUrl(QObject *parent = 0);
+    ~MigremeShortUrl();
+
+    void start();
 
-    void loadConfig();
-    void writeConfig();
-    void resetToDefault();
+private Q_SLOTS:
+    void slotShortUrlFinished(QNetworkReply*reply);
+    void slotError(QNetworkReply::NetworkError error);
 
 private:
-    void init();
-    QComboBox *mShortUrlServer;
+    QNetworkAccessManager *mNetworkAccessManager;
 };
 }
 
-#endif // SHORTURLCONFIGUREWIDGET_H
+#endif // MIGREMESHORTURL_H
diff --git a/pimcommon/shorturl/shorturlconfigurewidget.cpp \
b/pimcommon/shorturl/shorturlconfigurewidget.cpp index 1b9fb34..ecbb4d6 100644
--- a/pimcommon/shorturl/shorturlconfigurewidget.cpp
+++ b/pimcommon/shorturl/shorturlconfigurewidget.cpp
@@ -28,7 +28,8 @@
 
 using namespace PimCommon;
 ShortUrlConfigureWidget::ShortUrlConfigureWidget(QWidget *parent)
-    : QWidget(parent)
+    : QWidget(parent),
+      mChanged(false)
 {
     QHBoxLayout *lay = new QHBoxLayout;
     lay->setMargin(0);
@@ -37,6 +38,7 @@ ShortUrlConfigureWidget::ShortUrlConfigureWidget(QWidget *parent)
     lay->addWidget(lab);
 
     mShortUrlServer = new QComboBox;
+    connect(mShortUrlServer, SIGNAL(activated(int)), this, SLOT(slotChanged()));
     lay->addWidget(mShortUrlServer);
     setLayout(lay);
     init();
@@ -48,6 +50,11 @@ ShortUrlConfigureWidget::~ShortUrlConfigureWidget()
 
 }
 
+void ShortUrlConfigureWidget::slotChanged()
+{
+    mChanged = true;
+}
+
 void ShortUrlConfigureWidget::init()
 {
     for (int i=0; i <PimCommon::ShortUrlUtils::EndListEngine; ++i) {
@@ -59,16 +66,21 @@ void ShortUrlConfigureWidget::loadConfig()
 {
     const int engineType = PimCommon::ShortUrlUtils::readEngineSettings();
     mShortUrlServer->setCurrentIndex(mShortUrlServer->findData(engineType));
+    mChanged = false;
 }
 
 void ShortUrlConfigureWidget::writeConfig()
 {
-    PimCommon::ShortUrlUtils::writeEngineSettings(mShortUrlServer->itemData(mShortUrlServer->currentIndex()).toInt());
 +    if (mChanged) {
+        PimCommon::ShortUrlUtils::writeEngineSettings(mShortUrlServer->itemData(mShortUrlServer->currentIndex()).toInt());
 +        Q_EMIT settingsChanged();
+    }
 }
 
 void ShortUrlConfigureWidget::resetToDefault()
 {
     mShortUrlServer->setCurrentIndex(0);
+    mChanged = false;
 }
 
 #include "shorturlconfigurewidget.moc"
diff --git a/pimcommon/shorturl/shorturlconfigurewidget.h \
b/pimcommon/shorturl/shorturlconfigurewidget.h index 1d271fc..36acfb5 100644
--- a/pimcommon/shorturl/shorturlconfigurewidget.h
+++ b/pimcommon/shorturl/shorturlconfigurewidget.h
@@ -35,9 +35,16 @@ public:
     void writeConfig();
     void resetToDefault();
 
+private Q_SLOTS:
+    void slotChanged();
+
+Q_SIGNALS:
+    void settingsChanged();
+
 private:
     void init();
     QComboBox *mShortUrlServer;
+    bool mChanged;
 };
 }
 
diff --git a/pimcommon/shorturl/shorturlutils.cpp \
b/pimcommon/shorturl/shorturlutils.cpp index 37c8f24..cec86c4 100644
--- a/pimcommon/shorturl/shorturlutils.cpp
+++ b/pimcommon/shorturl/shorturlutils.cpp
@@ -19,6 +19,7 @@
 #include "pimcommon/shorturl/abstractshorturl.h"
 #include "pimcommon/shorturl/googleshorturl.h"
 #include "pimcommon/shorturl/tinyurlshorturl.h"
+#include "pimcommon/shorturl/migremeshorturl.h"
 
 #include <KConfigGroup>
 #include <KSharedConfig>
@@ -38,6 +39,9 @@ PimCommon::AbstractShortUrl \
*PimCommon::ShortUrlUtils::loadEngine(QObject *paren  case Tinyurl:
         engine = new PimCommon::TinyurlShortUrl(parent);
         break;
+    case MigreMe:
+        engine = new PimCommon::MigremeShortUrl(parent);
+        break;
     case EndListEngine:
     default:
         qDebug()<<" Engine type undefined "<<type;
@@ -57,6 +61,9 @@ QString PimCommon::ShortUrlUtils::stringFromEngineType(EngineType \
type)  case Tinyurl:
         name = i18n("Tinyurl");
         break;
+    case MigreMe:
+        name = i18n("Migre.Me");
+        break;
     case EndListEngine:
     default:
         qDebug()<<" not supported engine type "<<type;
diff --git a/pimcommon/shorturl/shorturlutils.h b/pimcommon/shorturl/shorturlutils.h
index 40b2243..5b544f8 100644
--- a/pimcommon/shorturl/shorturlutils.h
+++ b/pimcommon/shorturl/shorturlutils.h
@@ -27,6 +27,7 @@ namespace ShortUrlUtils
     enum EngineType {
         Google = 0,
         Tinyurl = 1,
+        MigreMe = 2,
         //TODO add more engine.
         EndListEngine
     };
diff --git a/pimcommon/shorturl/shorturlwidget.cpp \
b/pimcommon/shorturl/shorturlwidget.cpp index 2a1fb1d..3abf4a2 100644
--- a/pimcommon/shorturl/shorturlwidget.cpp
+++ b/pimcommon/shorturl/shorturlwidget.cpp
@@ -32,7 +32,8 @@
 using namespace PimCommon;
 
 ShortUrlWidget::ShortUrlWidget(QWidget *parent)
-    : QWidget(parent)
+    : QWidget(parent),
+      mEngine(0)
 {
     loadEngine();
     QGridLayout *grid = new QGridLayout;
@@ -71,8 +72,14 @@ ShortUrlWidget::~ShortUrlWidget()
 {
 }
 
+void ShortUrlWidget::settingsUpdated()
+{
+    loadEngine();
+}
+
 void ShortUrlWidget::loadEngine()
 {
+    delete mEngine;
     mEngine = PimCommon::ShortUrlUtils::loadEngine(this);
     connect(mEngine, SIGNAL(shortUrlDone(QString)), this, \
                SLOT(slotShortUrlDone(QString)));
     connect(mEngine, SIGNAL(shortUrlFailed(QString)), this, \
                SLOT(slotShortUrlFailed(QString)));
diff --git a/pimcommon/shorturl/shorturlwidget.h \
b/pimcommon/shorturl/shorturlwidget.h index 1d07e2a..df5bfd4 100644
--- a/pimcommon/shorturl/shorturlwidget.h
+++ b/pimcommon/shorturl/shorturlwidget.h
@@ -32,6 +32,9 @@ public:
     explicit ShortUrlWidget(QWidget *parent=0);
     ~ShortUrlWidget();
 
+public Q_SLOTS:
+    void settingsUpdated();
+
 private Q_SLOTS:
     void slotConvertUrl();
     void slotPasteToClipboard();
diff --git a/pimcommon/shorturl/tests/CMakeLists.txt \
b/pimcommon/shorturl/tests/CMakeLists.txt index ddaf67d..818282d 100644
--- a/pimcommon/shorturl/tests/CMakeLists.txt
+++ b/pimcommon/shorturl/tests/CMakeLists.txt
@@ -2,7 +2,7 @@ include_directories(${CMAKE_SOURCE_DIR}/pimcommon/
 )
 
 
-set(shorturlwidget_gui_SRCS shorturlwidget_gui.cpp)
+set(shorturlwidget_gui_SRCS shorturlwidget_gui.cpp shorturlmainwidget.cpp)
 kde4_add_executable(shorturlwidget_gui TEST ${shorturlwidget_gui_SRCS})
 target_link_libraries(shorturlwidget_gui
   ${QT_QTTEST_LIBRARY}
diff --git a/pimcommon/shorturl/tests/shorturlmainwidget.cpp \
b/pimcommon/shorturl/tests/shorturlmainwidget.cpp new file mode 100644
index 0000000..032ff91
--- /dev/null
+++ b/pimcommon/shorturl/tests/shorturlmainwidget.cpp
@@ -0,0 +1,45 @@
+/*
+  Copyright (c) 2013 Montel Laurent <montel@kde.org>
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License, version 2, as
+  published by the Free Software Foundation.
+
+  This program 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
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include "shorturlmainwidget.h"
+#include "shorturl/shorturlwidget.h"
+#include "shorturl/shorturlconfigurewidget.h"
+
+#include <QVBoxLayout>
+#include <QPushButton>
+
+ShortUrlMainWidget::ShortUrlMainWidget(QWidget *parent)
+    : QWidget(parent)
+{
+    QVBoxLayout *lay = new QVBoxLayout;
+    setLayout(lay);
+    mConfigWidget = new PimCommon::ShortUrlConfigureWidget;
+    lay->addWidget(mConfigWidget);
+
+    QPushButton *saveConfig = new QPushButton(QLatin1String("Save config"));
+    connect(saveConfig, SIGNAL(clicked()), this, SLOT(slotSaveConfig()));
+    lay->addWidget(saveConfig);
+
+    mShortUrlWidget = new PimCommon::ShortUrlWidget();
+    lay->addWidget(mShortUrlWidget);
+    connect(mConfigWidget, SIGNAL(settingsChanged()), mShortUrlWidget, \
SLOT(settingsUpdated())); +}
+
+void ShortUrlMainWidget::slotSaveConfig()
+{
+    mConfigWidget->writeConfig();
+}
diff --git a/pimcommon/shorturl/shorturlconfigurewidget.h \
b/pimcommon/shorturl/tests/shorturlmainwidget.h similarity index 64%
copy from pimcommon/shorturl/shorturlconfigurewidget.h
copy to pimcommon/shorturl/tests/shorturlmainwidget.h
index 1d271fc..6086e64 100644
--- a/pimcommon/shorturl/shorturlconfigurewidget.h
+++ b/pimcommon/shorturl/tests/shorturlmainwidget.h
@@ -15,30 +15,28 @@
   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef SHORTURLCONFIGUREWIDGET_H
-#define SHORTURLCONFIGUREWIDGET_H
-
-#include "pimcommon_export.h"
+#ifndef SHORTURLMAINWIDGET_H
+#define SHORTURLMAINWIDGET_H
 
 #include <QWidget>
-#include <QComboBox>
 
 namespace PimCommon {
-class PIMCOMMON_EXPORT ShortUrlConfigureWidget : public QWidget
+class ShortUrlConfigureWidget;
+class ShortUrlWidget;
+}
+
+class ShortUrlMainWidget : public QWidget
 {
     Q_OBJECT
 public:
-    explicit ShortUrlConfigureWidget(QWidget *parent=0);
-    ~ShortUrlConfigureWidget();
+    explicit ShortUrlMainWidget(QWidget *parent=0);
 
-    void loadConfig();
-    void writeConfig();
-    void resetToDefault();
+private Q_SLOTS:
+    void slotSaveConfig();
 
 private:
-    void init();
-    QComboBox *mShortUrlServer;
+    PimCommon::ShortUrlConfigureWidget *mConfigWidget;
+    PimCommon::ShortUrlWidget *mShortUrlWidget;
 };
-}
 
-#endif // SHORTURLCONFIGUREWIDGET_H
+#endif // SHORTURLMAINWIDGET_H
diff --git a/pimcommon/shorturl/tests/shorturlwidget_gui.cpp \
b/pimcommon/shorturl/tests/shorturlwidget_gui.cpp index 3e1aebf..1936d9a 100644
--- a/pimcommon/shorturl/tests/shorturlwidget_gui.cpp
+++ b/pimcommon/shorturl/tests/shorturlwidget_gui.cpp
@@ -15,7 +15,7 @@
   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#include "shorturl/shorturlwidget.h"
+#include "shorturlmainwidget.h"
 
 #include <kdebug.h>
 #include <kapplication.h>
@@ -29,7 +29,8 @@ int main (int argc, char **argv)
 
     KApplication app;
 
-    PimCommon::ShortUrlWidget *w = new PimCommon::ShortUrlWidget();
+    ShortUrlMainWidget *w = new ShortUrlMainWidget;
+
     w->show();
     app.exec();
     delete w;


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

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