diff options
Diffstat (limited to 'src/assistant/tools/assistant/bookmarkmanager.h')
-rw-r--r-- | src/assistant/tools/assistant/bookmarkmanager.h | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/src/assistant/tools/assistant/bookmarkmanager.h b/src/assistant/tools/assistant/bookmarkmanager.h new file mode 100644 index 000000000..f5823a7fa --- /dev/null +++ b/src/assistant/tools/assistant/bookmarkmanager.h @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Assistant of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BOOKMARKMANAGER_H +#define BOOKMARKMANAGER_H + +#include <QtCore/QMutex> +#include <QtGui/QTreeView> + +#include "ui_bookmarkwidget.h" + +QT_BEGIN_NAMESPACE + +class BookmarkManagerWidget; +class BookmarkModel; +class BookmarkFilterModel; +class QKeyEvent; +class QSortFilterProxyModel; +class QToolBar; + +class BookmarkManager : public QObject +{ + Q_OBJECT + class BookmarkWidget; + class BookmarkTreeView; + class BookmarkListView; + Q_DISABLE_COPY(BookmarkManager); + +public: + static BookmarkManager* instance(); + static void destroy(); + + QWidget* bookmarkDockWidget() const; + void setBookmarksMenu(QMenu* menu); + void setBookmarksToolbar(QToolBar *toolBar); + +public slots: + void addBookmark(const QString &title, const QString &url); + +signals: + void escapePressed(); + void setSource(const QUrl &url); + void setSourceInNewTab(const QUrl &url); + +private: + BookmarkManager(); + ~BookmarkManager(); + + void removeItem(const QModelIndex &index); + bool eventFilter(QObject *object, QEvent *event); + void buildBookmarksMenu(const QModelIndex &index, QMenu *menu); + void showBookmarkDialog(const QString &name, const QString &url); + +private slots: + void setupFinished(); + + void addBookmark(); + void removeBookmark(); + void manageBookmarks(); + void refreshBookmarkMenu(); + void refreshBookmarkToolBar(); + void renameBookmark(const QModelIndex &index); + + void setSourceFromAction(); + void setSourceFromAction(QAction *action); + void setSourceFromIndex(const QModelIndex &index, bool newTab = false); + + void focusInEvent(); + void managerWidgetAboutToClose(); + void textChanged(const QString &text); + void customContextMenuRequested(const QPoint &point); + +private: + bool typeAndSearch; + + static QMutex mutex; + static BookmarkManager *bookmarkManager; + + QMenu *bookmarkMenu; + QToolBar *m_toolBar; + + BookmarkModel *bookmarkModel; + BookmarkFilterModel *bookmarkFilterModel; + QSortFilterProxyModel *typeAndSearchModel; + + BookmarkWidget *bookmarkWidget; + BookmarkTreeView *bookmarkTreeView; + BookmarkManagerWidget *bookmarkManagerWidget; +}; + +class BookmarkManager::BookmarkWidget : public QWidget +{ + Q_OBJECT +public: + BookmarkWidget(QWidget *parent = 0) + : QWidget(parent) { ui.setupUi(this); } + virtual ~BookmarkWidget() {} + + Ui::BookmarkWidget ui; + +signals: + void focusInEvent(); + +private: + void focusInEvent(QFocusEvent *event); +}; + +class BookmarkManager::BookmarkTreeView : public QTreeView +{ + Q_OBJECT +public: + BookmarkTreeView(QWidget *parent = 0); + ~BookmarkTreeView() {} + + void subclassKeyPressEvent(QKeyEvent *event); + +private slots: + void setExpandedData(const QModelIndex &index); +}; + +QT_END_NAMESPACE + +#endif // BOOKMARKMANAGER_H |