kde-workspace/plasma/generic/applets/webbrowser/webbrowser.h
2014-11-13 19:30:51 +02:00

163 lines
5 KiB
C++

/***************************************************************************
* Copyright (C) 2008 by Marco Martin <notmart@gmail.com> *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
#ifndef WEBBROWSER_H
#define WEBBROWSER_H
#include <QHash>
#include <QWebPage>
#include <Plasma/PopupApplet>
#include <Plasma/DataEngine>
#include "ui_webbrowserconfig.h"
#include "browsermessagebox.h"
class WebViewOverlay;
class QGraphicsLinearLayout;
class QStandardItemModel;
class QStandardItem;
class QTimer;
class KUrlPixmapProvider;
class KHistoryComboBox;
class KUrl;
class KCompletion;
class KBookmarkManager;
class KBookmarkGroup;
class QModelIndex;
class QAction;
class BookmarksDelegate;
class BookmarkItem;
namespace Plasma
{
class BrowserHistoryComboBox;
class IconWidget;
class ComboBox;
class WebView;
class TreeView;
class Slider;
}
using Plasma::MessageButton;
class WebBrowser : public Plasma::PopupApplet
{
Q_OBJECT
public:
WebBrowser(QObject *parent, const QVariantList &args);
~WebBrowser();
QGraphicsWidget *graphicsWidget();
void paintInterface(QPainter *p, const QStyleOptionGraphicsItem *option, const QRect &contentsRect);
QWebPage *createWindow(QWebPage::WebWindowType type);
//TODO: put in a separate file
enum BookmarkRoles
{
UrlRole = Qt::UserRole+1,
BookmarkRole = Qt::UserRole+2
};
public Q_SLOTS:
void dataUpdated(const QString &source, const Plasma::DataEngine::Data &data);
void saveFormDataRequested(const QString &uid, const QUrl &url);
protected:
void saveState(KConfigGroup &cg) const;
Plasma::IconWidget *addTool(const QString &iconString, QGraphicsLinearLayout *layout);
void createConfigurationInterface(KConfigDialog *parent);
void constraintsEvent(Plasma::Constraints constraints);
protected Q_SLOTS:
void back();
void forward();
void reload();
void returnPressed();
void urlChanged(const QUrl &url);
void comboTextChanged(const QString &string);
void addBookmark();
void removeBookmark(const QModelIndex &index);
void removeBookmark();
void bookmarksToggle();
void bookmarkClicked(const QModelIndex &index);
void zoom(int value);
void loadProgress(int progress);
void bookmarksModelInit();
void configAccepted();
void configChanged();
void bookmarksAnimationFinished();
void removeBookmarkMessageButtonPressed(const MessageButton button);
void closeWebViewOverlay();
void acceptWalletRequest();
void rejectWalletRequest();
private:
void fillGroup(BookmarkItem *parentItem, const KBookmarkGroup &group);
void updateOverlaysGeometry();
QHash<BrowserMessageBox *, QString> walletRequests;
QGraphicsLinearLayout *m_layout;
QGraphicsLinearLayout *m_toolbarLayout;
QGraphicsLinearLayout *m_statusbarLayout;
Plasma::WebView *m_browser;
WebViewOverlay *m_webOverlay;
KUrl m_url;
int m_verticalScrollValue;
int m_horizontalScrollValue;
KUrlPixmapProvider *m_pixmapProvider;
KCompletion *m_completion;
KBookmarkManager *m_bookmarkManager;
QStandardItemModel *m_bookmarkModel;
Plasma::TreeView *m_bookmarksView;
Plasma::Animation *m_bookmarksViewAnimation;
QTimer *m_autoRefreshTimer;
bool m_autoRefresh;
int m_autoRefreshInterval;
QGraphicsWidget *m_graphicsWidget;
Plasma::BrowserHistoryComboBox *m_historyCombo;
KHistoryComboBox *m_nativeHistoryCombo;
BookmarksDelegate *m_bookmarksDelegate;
Plasma::IconWidget *m_back;
Plasma::IconWidget *m_forward;
Plasma::IconWidget *m_go;
QAction *m_goAction;
QAction *m_reloadAction;
Plasma::IconWidget *m_addBookmark;
QAction *m_addBookmarkAction;
QAction *m_removeBookmarkAction;
Plasma::IconWidget *m_organizeBookmarks;
Plasma::IconWidget *m_stop;
Plasma::Slider *m_zoom;
Ui::WebBrowserConfig ui;
};
#endif