diff --git a/src/bookmarks/bookmarkicon.cpp b/src/bookmarks/bookmarkicon.cpp new file mode 100644 index 000000000..7c339e55c --- /dev/null +++ b/src/bookmarks/bookmarkicon.cpp @@ -0,0 +1,58 @@ +#include "bookmarkicon.h" +#include "mainapplication.h" +#include "qupzilla.h" +#include "bookmarksmodel.h" +#include "bookmarkswidget.h" + +BookmarkIcon::BookmarkIcon(QupZilla* mainClass, QWidget* parent) + : ClickableLabel(parent) + , p_QupZilla(mainClass) + , m_bookmarksModel(0) +{ + setPixmap(QPixmap(":/icons/locationbar/starg.png")); + setCursor(Qt::PointingHandCursor); + setStyleSheet("margin-bottom: 2px;"); + setToolTip(tr("Bookmark this Page")); + setFocusPolicy(Qt::ClickFocus); + + m_bookmarksModel = mApp->bookmarksModel(); + connect(this, SIGNAL(clicked(QPoint)), this, SLOT(iconClicked())); + connect(m_bookmarksModel, SIGNAL(bookmarkAdded(BookmarksModel::Bookmark)), this, SLOT(bookmarkAdded(BookmarksModel::Bookmark))); + connect(m_bookmarksModel, SIGNAL(bookmarkDeleted(BookmarksModel::Bookmark)), this, SLOT(bookmarkDeleted(BookmarksModel::Bookmark))); +} + +void BookmarkIcon::iconClicked() +{ + QUrl url = p_QupZilla->weView()->url(); + + if (m_bookmarksModel->isBookmarked(url)) { + BookmarksWidget* menu = new BookmarksWidget(m_bookmarksModel->bookmarkId(url), p_QupZilla->locationBar()); + menu->showAt(this); + } else + m_bookmarksModel->saveBookmark(p_QupZilla->weView()); +} + +void BookmarkIcon::checkBookmark(const QUrl &url) +{ + if (m_lastUrl == url) + return; + + if (m_bookmarksModel->isBookmarked(url)) + setBookmarkSaved(); + else + setBookmarkDisabled(); + + m_lastUrl = url; +} + +void BookmarkIcon::bookmarkDeleted(const BookmarksModel::Bookmark &bookmark) +{ + if (bookmark.url == m_lastUrl) + setBookmarkDisabled(); +} + +void BookmarkIcon::bookmarkAdded(const BookmarksModel::Bookmark &bookmark) +{ + if (bookmark.url == m_lastUrl) + setBookmarkSaved(); +} diff --git a/src/bookmarks/bookmarkicon.h b/src/bookmarks/bookmarkicon.h new file mode 100644 index 000000000..16abbd867 --- /dev/null +++ b/src/bookmarks/bookmarkicon.h @@ -0,0 +1,45 @@ +#ifndef BOOKMARKICON_H +#define BOOKMARKICON_H + +#include + +#include "clickablelabel.h" +#include "bookmarksmodel.h" +class QupZilla; +class BookmarksModel; +class BookmarkIcon : public ClickableLabel +{ + Q_OBJECT +public: + explicit BookmarkIcon(QupZilla* mainClass, QWidget* parent = 0); + void checkBookmark(const QUrl &url); + +signals: + +public slots: + +private slots: + void iconClicked(); + void bookmarkAdded(const BookmarksModel::Bookmark &bookmark); + void bookmarkDeleted(const BookmarksModel::Bookmark &bookmark); + +private: + inline void setBookmarkSaved() + { + setPixmap(QPixmap(":/icons/locationbar/star.png")); + setToolTip(tr("Edit this bookmark")); + } + + inline void setBookmarkDisabled() + { + setPixmap(QPixmap(":/icons/locationbar/starg.png")); + setToolTip(tr("Bookmark this Page")); + } + QupZilla* p_QupZilla; + BookmarksModel* m_bookmarksModel; + + QUrl m_lastUrl; + +}; + +#endif // BOOKMARKICON_H diff --git a/src/sidebar/bookmarkssidebar.h b/src/sidebar/bookmarkssidebar.h new file mode 100644 index 000000000..acce5569f --- /dev/null +++ b/src/sidebar/bookmarkssidebar.h @@ -0,0 +1,53 @@ +#ifndef BOOKMARKSSIDEBAR_H +#define BOOKMARKSSIDEBAR_H + +#include +#include +#include +#include + +#include "bookmarksmodel.h" + +namespace Ui { + class BookmarksSideBar; +} + +class WebView; +class QupZilla; +class BookmarksModel; +class BookmarksSideBar : public QWidget +{ + Q_OBJECT + +public: + explicit BookmarksSideBar(QupZilla* mainClass, QWidget* parent = 0); + ~BookmarksSideBar(); + void setMainWindow(QupZilla* window); + +public slots: + void refreshTable(); + +private slots: + void deleteItem(); + void contextMenuRequested(const QPoint &position); + void loadInNewTab(); + void itemControlClicked(QTreeWidgetItem* item); + void itemDoubleClicked(QTreeWidgetItem* item); + void moveBookmark(); + + void addBookmark(const BookmarksModel::Bookmark &bookmark); + void removeBookmark(const BookmarksModel::Bookmark &bookmark); + void bookmarkEdited(const BookmarksModel::Bookmark &before, const BookmarksModel::Bookmark &after); + void addFolder(const QString &name); + void removeFolder(const QString &name); + +private: + QupZilla* getQupZilla(); + + bool m_isRefreshing; + Ui::BookmarksSideBar* ui; + QPointer p_QupZilla; + BookmarksModel* m_bookmarksModel; +}; + +#endif // BOOKMARKSSIDEBAR_H diff --git a/src/sidebar/bookmarkssidebar.ui b/src/sidebar/bookmarkssidebar.ui new file mode 100644 index 000000000..1d14dee6a --- /dev/null +++ b/src/sidebar/bookmarkssidebar.ui @@ -0,0 +1,68 @@ + + + BookmarksSideBar + + + + 0 + 0 + 259 + 486 + + + + + 1 + + + 0 + + + 2 + + + 0 + + + 0 + + + + + Search... + + + + + + + Qt::CustomContextMenu + + + true + + + true + + + 330 + + + + Bookmark + + + + + + + + + TreeWidget + QTreeWidget +
treewidget.h
+
+
+ + +
diff --git a/src/tools/docktitlebarwidget.cpp b/src/tools/docktitlebarwidget.cpp new file mode 100644 index 000000000..62388e886 --- /dev/null +++ b/src/tools/docktitlebarwidget.cpp @@ -0,0 +1,23 @@ +#include "docktitlebarwidget.h" + +DockTitleBarWidget::DockTitleBarWidget(const QString &title, QWidget* parent) : + QWidget(parent) +{ + setupUi(this); +#ifdef Q_WS_X11 + closeButton->setIcon(QIcon(style()->standardIcon(QStyle::SP_DialogCloseButton).pixmap(16,16))); +#else + closeButton->setIcon(QIcon(QIcon(":/icons/faenza/close.png").pixmap(16,16))); +#endif + label->setText(title); + connect(closeButton, SIGNAL(clicked()), parent, SLOT(close())); +} + +void DockTitleBarWidget::setTitle(const QString &title) +{ + label->setText(title); +} + +DockTitleBarWidget::~DockTitleBarWidget() +{ +} diff --git a/src/tools/docktitlebarwidget.h b/src/tools/docktitlebarwidget.h new file mode 100644 index 000000000..44466b66f --- /dev/null +++ b/src/tools/docktitlebarwidget.h @@ -0,0 +1,21 @@ +#ifndef DOCKTITLEBARWIDGET_H +#define DOCKTITLEBARWIDGET_H + +#include + +#include "ui_docktitlebarwidget.h" + +class DockTitleBarWidget : public QWidget, public Ui_DockTitleBarWidget +{ + Q_OBJECT + +public: + explicit DockTitleBarWidget(const QString &title, QWidget* parent = 0); + ~DockTitleBarWidget(); + + void setTitle(const QString &title); + +private: +}; + +#endif // DOCKTITLEBARWIDGET_H diff --git a/src/tools/docktitlebarwidget.ui b/src/tools/docktitlebarwidget.ui new file mode 100644 index 000000000..b0a40907f --- /dev/null +++ b/src/tools/docktitlebarwidget.ui @@ -0,0 +1,53 @@ + + + DockTitleBarWidget + + + + 0 + 0 + 667 + 24 + + + + + + + + 0 + + + 2 + + + 0 + + + + + + + + + + + + + + + + 16 + 16 + + + + true + + + + + + + +