move editor creation to plugin

each protocol needed to create the editor on their own.
Instead emit fetchDone and let the plugin instantiate it for
every protocol
This commit is contained in:
Maurice Kalinowski
2009-07-31 11:17:57 +02:00
parent a46e71d0b6
commit 6a91b63af9
5 changed files with 41 additions and 12 deletions

View File

@@ -118,17 +118,22 @@ Core::IOptionsPage* CodePasterProtocol::settingsPage()
void CodePasterProtocol::fetchFinished()
{
if (reply->error()) {
ICore::instance()->messageManager()->printToOutputPane(reply->errorString(), true);
QString title;
QString content;
bool error = reply->error();
if (error) {
content = reply->errorString();
} else {
QString data = reply->readAll();
if (data.contains("<B>No such paste!</B>"))
ICore::instance()->messageManager()->printToOutputPane(tr("No such paste"), true);
QString title = QString::fromLatin1("Codepaster: %1").arg(fetchId);
EditorManager::instance()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR, &title, data);
content = reply->readAll();
if (content.contains("<B>No such paste!</B>")) {
content = tr("No such paste");
error = true;
}
title = QString::fromLatin1("Codepaster: %1").arg(fetchId);
}
reply->deleteLater();
reply = 0;
emit fetchDone(title, content, error);
}
void CodePasterProtocol::listFinished()

View File

@@ -95,6 +95,8 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m
0};
for(int i=0; protos[i] != 0; ++i) {
connect(protos[i], SIGNAL(pasteDone(QString)), this, SLOT(finishPost(QString)));
connect(protos[i], SIGNAL(fetchDone(QString,QString,bool)),
this, SLOT(finishFetch(QString,QString,bool)));
m_settingsPage->addProtocol(protos[i]->name());
if (protos[i]->hasSettings())
addObject(protos[i]->settingsPage());
@@ -251,4 +253,16 @@ void CodepasterPlugin::finishPost(const QString &link)
m_settingsPage->displayOutput());
}
void CodepasterPlugin::finishFetch(const QString &titleDescription,
const QString &content,
bool error)
{
QString title = titleDescription;
if (error) {
ICore::instance()->messageManager()->printToOutputPane(content, true);
} else {
EditorManager::instance()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR, &title, content);
}
}
Q_EXPORT_PLUGIN(CodepasterPlugin)

View File

@@ -64,6 +64,9 @@ public slots:
void post();
void fetch();
void finishPost(const QString &link);
void finishFetch(const QString &titleDescription,
const QString &content,
bool error);
private:
QAction *m_postAction;

View File

@@ -115,14 +115,18 @@ void PasteBinDotComProtocol::postRequestFinished(int id, bool error)
void PasteBinDotComProtocol::fetchFinished()
{
if (reply->error()) {
ICore::instance()->messageManager()->printToOutputPane(reply->errorString(), true);
QString title;
QString content;
bool error = reply->error();
if (error) {
content = reply->errorString();
} else {
QString title = QString::fromLatin1("Pastebin.com: %1").arg(fetchId);
QString data = reply->readAll();
EditorManager::instance()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR, &title, data);
title = QString::fromLatin1("Pastebin.com: %1").arg(fetchId);
content = reply->readAll();
}
reply->deleteLater();
reply = 0;
emit fetchDone(title, content, error);
}
Core::IOptionsPage* PasteBinDotComProtocol::settingsPage()

View File

@@ -61,6 +61,9 @@ public:
signals:
void pasteDone(const QString &link);
void fetchDone(const QString &titleDescription,
const QString &content,
bool error);
};
#endif // PROTOCOL_H