diff options
Diffstat (limited to 'src/urlbar')
| -rw-r--r-- | src/urlbar/rsswidget.cpp | 143 | ||||
| -rw-r--r-- | src/urlbar/rsswidget.h | 54 | ||||
| -rw-r--r-- | src/urlbar/urlbar.cpp | 6 | ||||
| -rw-r--r-- | src/urlbar/urlbar.h | 5 | ||||
| -rw-r--r-- | src/urlbar/urlresolver.h | 5 | 
5 files changed, 208 insertions, 5 deletions
| diff --git a/src/urlbar/rsswidget.cpp b/src/urlbar/rsswidget.cpp new file mode 100644 index 00000000..16e52ccf --- /dev/null +++ b/src/urlbar/rsswidget.cpp @@ -0,0 +1,143 @@ +/* +    <one line to give the program's name and a brief idea of what it does.> +    Copyright (C) <year>  <name of author> + +    This program is free software: you can redistribute it and/or modify +    it under the terms of the GNU General Public License as published by +    the Free Software Foundation, either version 3 of the License, or +    (at your option) any later version. + +    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, see <http://www.gnu.org/licenses/>. + +*/ + +// Auto Includes +#include "rsswidget.h" +#include "rsswidget.moc" + +// Local includes +#include "application.h" +#include "mainwindow.h" +#include "webtab.h" +#include "webview.h" + +// Qt Includes +#include <QFormLayout> +#include <QDialogButtonBox> +#include <QDBusInterface> +#include <QDBusConnectionInterface> +#include <QLabel> + +// KDE Includes +#include <KLocalizedString> +#include <KComboBox> +#include <KIcon> +#include <KProcess> +#include <KMessageBox> + + +RSSWidget::RSSWidget(QMap< KUrl, QString > map, QWidget *parent)  +        : QFrame(parent, Qt::Popup) +        , m_map(map) +{ +    setAttribute(Qt::WA_DeleteOnClose); +    setFixedWidth(250); +    setFrameStyle(Panel); +     +    QFormLayout *layout = new QFormLayout(this); +    setLayout(layout); +     +     +    QLabel *agregator = new QLabel(this); +    agregator->setText(i18n("Agregator")); +     +    m_agregators = new KComboBox(this); +    m_agregators->addItem(KIcon("application-rss+xml"), QString("Akregator")); +    m_agregators->addItem(Application::icon(KUrl("http://google.com/reader")), i18n("Google Reader")); +     +    layout->addRow(agregator, m_agregators); +     +     +    QLabel *feed = new QLabel(this); +    feed->setText(i18n("Feed")); +     +    m_feeds = new KComboBox(this); +    foreach(QString title, m_map) +        m_feeds->addItem(title); +     +    layout->addRow(feed, m_feeds); +     +     +    QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); +    buttonBox->button(QDialogButtonBox::Ok)->setText(i18n("Add Feed")); +    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accepted())); +    connect(buttonBox, SIGNAL(rejected()), this, SLOT(close())); +     +    layout->addWidget(buttonBox); +} + + +void RSSWidget::showAt(QPoint pos) +{ +    pos.setX(pos.x() - 200); +    pos.setY(pos.y() + 10); +    move(pos); +    show(); +} + + +void RSSWidget::accepted() +{ +    QString url = m_map.key(m_feeds->currentText()).toMimeDataString(); +     +    if(m_agregators->currentIndex() == 0) +        addWithAkregator(url); +    else +        addWithGoogleReader(url); +     +    close(); +} + + +void RSSWidget::addWithGoogleReader(QString url) +{ +    KUrl toLoad = KUrl("http://www.google.com/ig/add?feedurl=" + url); +    Application::instance()->mainWindow()->currentTab()->view()->load(toLoad); +} + + +void RSSWidget::addWithAkregator(QString url) +{ +    // Akregator is running +    if(QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.akregator")) +    { +        QDBusInterface akregator("org.kde.akregator", "/Akregator", "org.kde.akregator.part"); +        QDBusReply<void> reply = akregator.call("addFeedsToGroup", QStringList(url) , i18n("Imported Feeds")); +         +        if(!reply.isValid())  +        { +            KMessageBox::error( 0, QString(i18n("Could not add stream to akregator, Please add it manually :") +            + "<br /><br /> <a href=\"" + url + "\">" + url + "</a>")); +        } +    } +    // Akregator is not running +    else +    { +        KProcess proc; +        proc << "akregator" << "-g" << i18n("Imported Feeds"); +        proc << "-a" << url; +        if(proc.startDetached() == 0) +        { +            KMessageBox::error( 0, QString(i18n("There was an error. Please verify Akregator is installed on your system.") +            + "<br /><br /> <a href=\"" + url + "\">" + url + "</a>")); +        } +         +    } +} + diff --git a/src/urlbar/rsswidget.h b/src/urlbar/rsswidget.h new file mode 100644 index 00000000..5c1ca736 --- /dev/null +++ b/src/urlbar/rsswidget.h @@ -0,0 +1,54 @@ +/* +    <one line to give the program's name and a brief idea of what it does.> +    Copyright (C) <year>  <name of author> + +    This program is free software: you can redistribute it and/or modify +    it under the terms of the GNU General Public License as published by +    the Free Software Foundation, either version 3 of the License, or +    (at your option) any later version. + +    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, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef RSSWIDGET_H +#define RSSWIDGET_H + +// Qt Includes +#include <QFrame> +#include <KUrl> + +// KDE Includes +#include <KComboBox> + + +class RSSWidget : public QFrame +{ +    Q_OBJECT +     +public: +    // QMap< feedUrl, feedTitle> +    RSSWidget(QMap<KUrl, QString> map, QWidget *parent); +     +    void showAt(QPoint pos); +     +public slots: +    void accepted(); +     +private: +    void addWithAkregator(QString url); +    void addWithGoogleReader(QString url); +     +    QMap<KUrl, QString> m_map; +     +    KComboBox *m_agregators; +    KComboBox *m_feeds; +}; + +#endif // RSSWIDGET_H diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index 6d255c02..d7fc7199 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -63,6 +63,10 @@ IconButton::IconButton(QWidget *parent)      setCursor(Qt::ArrowCursor);  } +void IconButton::mouseReleaseEvent(QMouseEvent* event) +{ +    emit clicked(event->globalPos()); +}  // ----------------------------------------------------------------------------------------------------------- @@ -282,7 +286,7 @@ void UrlBar::loadFinished()      if(_tab->hasRSSInfo())      {          IconButton *bt = addRightIcon(UrlBar::RSS); -        connect(bt, SIGNAL(clicked()), _tab, SLOT(showRSSInfo())); +        connect(bt, SIGNAL(clicked(QPoint)), _tab, SLOT(showRSSInfo(QPoint)));      }      // show SSL diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index 0be1ecf9..91b38e23 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -53,9 +53,12 @@ class WebTab;  class IconButton : public QToolButton  {      Q_OBJECT -  public:      IconButton(QWidget *parent = 0); +signals: +    void clicked(QPoint); +protected: +    void mouseReleaseEvent(QMouseEvent *event);  }; diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h index 22a9de4f..5200a401 100644 --- a/src/urlbar/urlresolver.h +++ b/src/urlbar/urlresolver.h @@ -37,9 +37,8 @@  class UrlSearchItem  { - -    public: - +public: +          enum types       {           Search          = 0x00000001, | 
