[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