1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-11 01:22:10 +01:00

Added initial support for sidebar widget + rewritten bookmarks backend

This commit is contained in:
nowrep 2011-04-15 20:45:22 +02:00
parent a84af542ab
commit b81de62f24
25 changed files with 1130 additions and 1087 deletions

Binary file not shown.

Binary file not shown.

View File

@ -107,7 +107,10 @@ SOURCES += main.cpp\
adblock/adblockmanager.cpp \
adblock/adblockdialog.cpp \
adblock/adblockblockednetworkreply.cpp \
adblock/adblockicon.cpp
adblock/adblockicon.cpp \
tools/docktitlebarwidget.cpp \
sidebar/bookmarkssidebar.cpp \
bookmarks/bookmarkicon.cpp
HEADERS += 3rdparty/squeezelabel.h \
3rdparty/qtwin.h \
@ -174,7 +177,10 @@ HEADERS += 3rdparty/squeezelabel.h \
adblock/adblockmanager.h \
adblock/adblockdialog.h \
adblock/adblockblockednetworkreply.h \
adblock/adblockicon.h
adblock/adblockicon.h \
tools/docktitlebarwidget.h \
sidebar/bookmarkssidebar.h \
bookmarks/bookmarkicon.h
FORMS += \
preferences/autofillmanager.ui \
@ -198,7 +204,9 @@ FORMS += \
other/clearprivatedata.ui \
other/sourceviewersearch.ui \
other/closedialog.ui \
adblock/adblockdialog.ui
adblock/adblockdialog.ui \
tools/docktitlebarwidget.ui \
sidebar/bookmarkssidebar.ui
RESOURCES += \
data/icons.qrc \

View File

@ -45,7 +45,6 @@
#include "adblockdialog.h"
#include "adblockmanager.h"
#include "adblocksubscription.h"
#include "ui_adblockdialog.h"
#include "mainapplication.h"
AdBlockDialog::AdBlockDialog(QWidget *parent)

View File

@ -246,10 +246,18 @@ void QupZilla::setupMenu()
actionEncoding->setMenu(m_menuEncoding);
connect(m_menuEncoding, SIGNAL(aboutToShow()), this, SLOT(aboutToShowEncodingMenu()));
m_menuView->addAction(m_actionShowMenubar);
m_menuView->addAction(m_actionShowToolbar);
m_menuView->addAction(m_actionShowBookmarksToolbar);
m_menuView->addAction(m_actionShowStatusbar);
QMenu* toolbarsMenu = new QMenu(tr("Toolbars"));
toolbarsMenu->addAction(m_actionShowMenubar);
toolbarsMenu->addAction(m_actionShowToolbar);
toolbarsMenu->addAction(m_actionShowBookmarksToolbar);
toolbarsMenu->addAction(m_actionShowStatusbar);
QMenu* sidebarsMenu = new QMenu(tr("Sidebars"));
sidebarsMenu->addAction(tr("Bookmarks"), this, SLOT(showBookmarksSideBar()))->setCheckable(true);
sidebarsMenu->addAction(tr("History"), this, SLOT(showHistorySideBar()))->setCheckable(true);
sidebarsMenu->addAction(tr("RSS Reader"), this, SLOT(showRssSideBar()))->setCheckable(true);
m_menuView->addMenu(toolbarsMenu);
m_menuView->addMenu(sidebarsMenu);
m_menuView->addSeparator();
m_menuView->addAction(m_actionStop);
m_menuView->addAction(m_actionReload);
@ -307,8 +315,8 @@ void QupZilla::setBackground(QColor textColor)
"QMenuBar{color:"+color+";background-image:url(:icons/transp.png); border:none;} QStatusBar{background-image:url(:icons/transp.png); border:none; color:"+color+";}"
"QMenuBar:item{spacing: 5px; padding: 2px 6px;background: transparent;}"
"QMenuBar::item:pressed { background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 lightgray, stop:1 darkgray); border: 1px solid darkgrey; border-top-left-radius: 4px;border-top-right-radius: 4px; border-bottom: none;}"
"QSplitter::handle{background-color:transparent;}"
);
m_navigation->setStyleSheet("QSplitter::handle{background-color:transparent;}");
}

View File

@ -399,10 +399,10 @@ RSSManager* MainApplication::rssManager()
return m_rssmanager;
}
BookmarksModel* MainApplication::bookmarks()
BookmarksModel* MainApplication::bookmarksModel()
{
if (!m_bookmarksModel)
m_bookmarksModel = new BookmarksModel();
m_bookmarksModel = new BookmarksModel(this);
return m_bookmarksModel;
}

View File

@ -78,7 +78,7 @@ public:
CookieJar* cookieJar();
RSSManager* rssManager();
PluginProxy* plugins();
BookmarksModel* bookmarks();
BookmarksModel* bookmarksModel();
DownloadManager* downManager();
AutoFillModel* autoFill();
QNetworkDiskCache* networkCache() { return m_networkCache; }

View File

@ -46,6 +46,8 @@
#include "ui_closedialog.h"
#include "adblockmanager.h"
#include "clickablelabel.h"
#include "docktitlebarwidget.h"
#include "sidebar.h"
const QString QupZilla::VERSION = "1.0.0-b1";
//const QString QupZilla::BUILDTIME = QLocale(QLocale::English).toDateTime(__DATE__" "__TIME__, "MMM d yyyy hh:mm:ss").toString("MM/dd/yyyy hh:ss");
@ -62,6 +64,7 @@ QupZilla::QupZilla(bool tryRestore, QUrl startUrl) :
,m_actionPrivateBrowsing(0)
,m_webInspectorDock(0)
,m_webSearchToolbar(0)
,m_sideBar(0)
{
setAttribute(Qt::WA_DeleteOnClose);
this->resize(640,480);
@ -552,6 +555,17 @@ void QupZilla::showBookmarksToolbar()
settings.setValue("Browser-View-Settings/showBookmarksToolbar", !status);
}
void QupZilla::showBookmarksSideBar()
{
if (!m_sideBar) {
m_sideBar = new SideBar(this);
addDockWidget(Qt::LeftDockWidgetArea, m_sideBar);
m_sideBar->showBookmarks();
} else {
delete m_sideBar;
}
}
void QupZilla::showNavigationToolbar()
{
if (!menuBar()->isVisible() && !m_actionShowToolbar->isChecked())
@ -598,6 +612,7 @@ void QupZilla::showInspector()
m_webInspector->setPage(weView()->page());
addDockWidget(Qt::BottomDockWidgetArea, m_webInspectorDock);
m_webInspectorDock->setWindowTitle(tr("Web Inspector"));
m_webInspectorDock->setTitleBarWidget(new DockTitleBarWidget(tr("Web Inspector"), m_webInspectorDock));
m_webInspectorDock->setObjectName("WebInspector");
m_webInspectorDock->setWidget(m_webInspector);
m_webInspectorDock->setFeatures(QDockWidget::DockWidgetClosable);

View File

@ -71,6 +71,7 @@ class AutoFillModel;
class MainApplication;
class WebTab;
class AdBlockIcon;
class SideBar;
class QupZilla : public QMainWindow
{
Q_OBJECT
@ -152,9 +153,9 @@ private slots:
void showCookieManager();
void showHistoryManager();
void showBookmarksManager();
void showBookmarksSideBar();
void showRSSManager();
void showDownloadManager();
void showMenubar();
void showNavigationToolbar();
void showStatusbar();
@ -223,6 +224,7 @@ private:
BookmarksToolbar* m_bookmarksToolbar;
LocationBar* m_locationBar;
TabWidget* m_tabWidget;
QPointer<SideBar> m_sideBar;
QSplitter* m_navigationSplitter;
QAction* m_buttonBack;

View File

@ -33,7 +33,7 @@ BookmarksManager::BookmarksManager(QupZilla* mainClass, QWidget* parent) :
,m_isRefreshing(false)
,ui(new Ui::BookmarksManager)
,p_QupZilla(mainClass)
,m_bookmarksModel(mApp->bookmarks())
,m_bookmarksModel(mApp->bookmarksModel())
{
ui->setupUi(this);
//CENTER on scren
@ -75,8 +75,8 @@ void BookmarksManager::addFolder()
QString text = QInputDialog::getText(this, tr("Add new folder"), tr("Choose name for new bookmark folder: "));
if (text.isEmpty())
return;
QSqlQuery query;
query.exec("INSERT INTO folders (name) VALUES ('"+text+"')");
m_bookmarksModel->createFolder(text);
refreshTable();
}
@ -89,7 +89,7 @@ void BookmarksManager::itemChanged(QTreeWidgetItem* item)
QUrl url = QUrl(item->text(1));
int id = item->whatsThis(1).toInt();
m_bookmarksModel->editBookmark(id, url, name);
m_bookmarksModel->editBookmark(id, name, url, "");
}
void BookmarksManager::itemControlClicked(QTreeWidgetItem* item)
@ -110,24 +110,18 @@ void BookmarksManager::deleteItem()
QTreeWidgetItem* item = ui->bookmarksTree->currentItem();
if (!item)
return;
QSqlQuery query;
if (item->text(1).isEmpty()) { // Delete folder
QString folder = item->text(0);
if (folder == tr("Bookmarks In Menu") || folder == tr("Bookmarks In ToolBar"))
return;
query.exec("DELETE FROM folders WHERE name='"+folder+"'");
query.exec("DELETE FROM bookmarks WHERE folder='"+folder+"'");
delete item;
if (m_bookmarksModel->removeFolder(folder))
delete item;
return;
}
QString id = item->whatsThis(1);
int id = item->whatsThis(1).toInt();
query.exec("DELETE FROM bookmarks WHERE id="+id);
m_bookmarksModel->removeBookmark(id);
delete item;
getQupZilla()->bookmarksToolbar()->refreshBookmarks();
}
void BookmarksManager::addBookmark(WebView* view)
@ -141,7 +135,7 @@ void BookmarksManager::moveBookmark()
if (!item)
return;
if (QAction* action = qobject_cast<QAction*>(sender())) {
m_bookmarksModel->editBookmark(item->whatsThis(1).toInt(), item->text(0), action->data().toString());
m_bookmarksModel->editBookmark(item->whatsThis(1).toInt(), item->text(0), QUrl(), action->data().toString());
}
refreshTable();
}
@ -290,20 +284,7 @@ void BookmarksManager::insertBookmark(const QUrl &url, const QString &title)
if (edit->text().isEmpty())
return;
query.prepare("INSERT INTO bookmarks (title, url, folder) VALUES (?,?,?)");
query.bindValue(0, edit->text());
query.bindValue(1, url.toString());
if (combo->currentText() == tr("Bookmarks In Menu"))
query.bindValue(2,"bookmarksMenu");
else if (combo->currentText() == tr("Bookmarks In ToolBar"))
query.bindValue(2,"bookmarksToolbar");
else if (combo->currentText() == tr("Unsorted Bookmarks"))
query.bindValue(2, "unsorted");
else query.bindValue(2, combo->currentText());
query.exec();
getQupZilla()->bookmarksToolbar()->refreshBookmarks();
getQupZilla()->locationBar()->checkBookmark();
m_bookmarksModel->saveBookmark(url, edit->text(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
delete dialog;
}
@ -345,20 +326,10 @@ void BookmarksManager::insertAllTabs()
WebView* view = getQupZilla()->weView(i);
if (!view || view->url().isEmpty())
continue;
query.prepare("INSERT INTO bookmarks (title, url, folder) VALUES (?,?,?)");
query.bindValue(0, view->title());
query.bindValue(1, view->url().toString());
if (combo->currentText() == tr("Bookmarks In Menu"))
query.bindValue(2,"bookmarksMenu");
else if (combo->currentText() == tr("Bookmarks In ToolBar"))
query.bindValue(2,"bookmarksToolbar");
else if (combo->currentText() == tr("Unsorted Bookmarks"))
query.bindValue(2, "unsorted");
else query.bindValue(2, combo->currentText());
query.exec();
m_bookmarksModel->saveBookmark(view->url(), view->title(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
}
getQupZilla()->bookmarksToolbar()->refreshBookmarks();
getQupZilla()->locationBar()->checkBookmark();
delete dialog;
}

View File

@ -15,8 +15,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "mainapplication.h"
#include "bookmarksmodel.h"
#include "mainapplication.h"
#include "webview.h"
// SQLite DB -> table bookmarks + folders
@ -24,7 +24,8 @@
// However from bookmark icon, it is not possible to add more than one bookmark
// Only from Ctrl+D dialog it is possible
BookmarksModel::BookmarksModel()
BookmarksModel::BookmarksModel(QObject *parent)
: QObject(parent)
{
loadSettings();
}
@ -46,7 +47,7 @@ void BookmarksModel::setShowingMostVisited(bool state)
m_showMostVisited = state;
}
bool BookmarksModel::isBookmarked(QUrl url)
bool BookmarksModel::isBookmarked(const QUrl &url)
{
QSqlQuery query;
query.prepare("SELECT count(id) FROM bookmarks WHERE url=?");
@ -58,7 +59,7 @@ bool BookmarksModel::isBookmarked(QUrl url)
// Bookmark search priority:
// Bookmarks in menu > bookmarks in toolbar -> user folders and unsorted
int BookmarksModel::bookmarkId(QUrl url)
int BookmarksModel::bookmarkId(const QUrl &url)
{
QSqlQuery query;
query.prepare("SELECT id FROM bookmarks WHERE url=? AND folder='bookmarksMenu' ");
@ -82,7 +83,7 @@ int BookmarksModel::bookmarkId(QUrl url)
return -1;
}
int BookmarksModel::bookmarkId(QUrl url, QString title, QString folder)
int BookmarksModel::bookmarkId(const QUrl &url, const QString &title, const QString &folder)
{
QSqlQuery query;
query.prepare("SELECT id FROM bookmarks WHERE url=? AND title=? AND folder=? ");
@ -95,22 +96,23 @@ int BookmarksModel::bookmarkId(QUrl url, QString title, QString folder)
return -1;
}
QStringList BookmarksModel::getBookmark(int id)
BookmarksModel::Bookmark BookmarksModel::getBookmark(int id)
{
Bookmark bookmark;
QSqlQuery query;
query.prepare("SELECT url, title, folder FROM bookmarks WHERE id=?");
query.bindValue(0, id);
query.exec();
if (!query.next())
return QStringList();
QStringList list;
list.append(query.value(0).toString());
list.append(query.value(1).toString());
list.append(query.value(2).toString());
return list;
if (query.next()) {
bookmark.id = id;
bookmark.url = query.value(0).toUrl();
bookmark.title = query.value(1).toString();
bookmark.folder = query.value(2).toString();
}
return bookmark;
}
bool BookmarksModel::saveBookmark(QUrl url, QString title, QString folder)
bool BookmarksModel::saveBookmark(const QUrl &url, const QString &title, const QString &folder)
{
if (url.isEmpty() || title.isEmpty() || folder.isEmpty())
return false;
@ -120,10 +122,20 @@ bool BookmarksModel::saveBookmark(QUrl url, QString title, QString folder)
query.bindValue(0, url.toString());
query.bindValue(1, title);
query.bindValue(2, folder);
return query.exec();
if (!query.exec())
return false;
Bookmark bookmark;
bookmark.id = query.lastInsertId().toInt();
bookmark.url = url;
bookmark.title = title;
bookmark.folder = folder;
emit bookmarkAdded(bookmark);
return true;
}
bool BookmarksModel::saveBookmark(WebView* view, QString folder)
bool BookmarksModel::saveBookmark(WebView *view, const QString &folder)
{
return saveBookmark(view->url(), view->title(), folder);
}
@ -131,12 +143,26 @@ bool BookmarksModel::saveBookmark(WebView* view, QString folder)
bool BookmarksModel::removeBookmark(int id)
{
QSqlQuery query;
query.prepare("DELETE FROM bookmarks WHERE id = ?");
query.prepare("SELECT url, title, folder FROM bookmarks WHERE id = ?");
query.bindValue(0, id);
return query.exec();
query.exec();
if (!query.next())
return false;
Bookmark bookmark;
bookmark.id = id;
bookmark.url = query.value(0).toUrl();
bookmark.title = query.value(1).toString();
bookmark.folder = query.value(2).toString();
if (!query.exec("DELETE FROM bookmarks WHERE id = " + QString::number(id)))
return false;
emit bookmarkDeleted(bookmark);
return true;
}
bool BookmarksModel::removeBookmark(QUrl url)
bool BookmarksModel::removeBookmark(const QUrl &url)
{
return removeBookmark(bookmarkId(url));
}
@ -146,22 +172,137 @@ bool BookmarksModel::removeBookmark(WebView* view)
return removeBookmark(bookmarkId(view->url()));
}
bool BookmarksModel::editBookmark(int id, QString title, QString folder)
//bool BookmarksModel::editBookmark(int id, const QString &title, const QString &folder)
//{
// QSqlQuery query;
// query.prepare("UPDATE bookmarks SET title=?, folder=? WHERE id=?");
// query.bindValue(0, title);
// query.bindValue(1, folder);
// query.bindValue(2, id);
// return query.exec();
//}
//bool BookmarksModel::editBookmark(int id, const QUrl &url, const QString &title)
//{
// QSqlQuery query;
// query.prepare("UPDATE bookmarks SET title=?, url=? WHERE id=?");
// query.bindValue(0, title);
// query.bindValue(1, url.toString());
// query.bindValue(2, id);
// return query.exec();
//}
bool BookmarksModel::editBookmark(int id, const QString &title, const QUrl &url, const QString &folder)
{
if (title.isEmpty() && url.isEmpty() && folder.isEmpty())
return false;
QSqlQuery query;
query.prepare("UPDATE bookmarks SET title=?, folder=? WHERE id=?");
query.bindValue(0, title);
query.bindValue(1, folder);
query.bindValue(2, id);
return query.exec();
if (!query.exec("SELECT title, url, folder FROM bookmarks WHERE id = "+QString::number(id)))
return false;
query.next();
Bookmark before;
before.id = id;
before.title = query.value(0).toString();
before.url = query.value(1).toUrl();
before.folder = query.value(2).toString();
Bookmark after;
after.id = id;
after.title = title.isEmpty() ? before.title : title;
after.url = url.isEmpty() ? before.url : url;
after.folder = folder.isEmpty() ? before.folder : folder;
query.prepare("UPDATE bookmarks SET title=?, url=?, folder=? WHERE id = ?");
query.bindValue(0, after.title);
query.bindValue(1, after.url.toString());
query.bindValue(2, after.folder);
query.bindValue(3, id);
if (!query.exec())
return false;
emit bookmarkEdited(before, after);
return true;
}
bool BookmarksModel::editBookmark(int id, QUrl url, QString title)
bool BookmarksModel::createFolder(const QString &name)
{
QSqlQuery query;
query.prepare("UPDATE bookmarks SET title=?, url=? WHERE id=?");
query.bindValue(0, title);
query.bindValue(1, url.toString());
query.bindValue(2, id);
return query.exec();
query.prepare("INSERT INTO folders (name) VALUES (?)");
query.bindValue(0, name);
if (!query.exec())
return false;
emit folderAdded(name);
return true;
}
bool BookmarksModel::removeFolder(const QString &name)
{
if (name == tr("Bookmarks In Menu") || name == tr("Bookmarks In ToolBar"))
return false;
QSqlQuery query;
query.prepare("SELECT id FROM bookmarks WHERE folder = ? ");
query.bindValue(0, name);
if (!query.exec())
return false;
while (query.next())
removeBookmark(query.value(0).toInt());
query.prepare("DELETE FROM folders WHERE name=?");
query.bindValue(0, name);
if (!query.exec())
return false;
query.prepare("DELETE FROM bookmarks WHERE folder=?");
query.bindValue(0, name);
if (!query.exec())
return false;
emit folderDeleted(name);
return true;
}
bool BookmarksModel::bookmarksEqual(const Bookmark &one, const Bookmark &two)
{
if (one.id != two.id)
return false;
if (one.title != two.title)
return false;
if (one.folder != two.folder)
return false;
if (one.url != two.url)
return false;
return true;
}
QString BookmarksModel::toTranslatedFolder(const QString &name)
{
QString trFolder;
if (name == "bookmarksMenu")
trFolder = tr("Bookmarks In Menu");
else if (name == "bookmarksToolbar")
trFolder = tr("Bookmarks In ToolBar");
else if (name == "unsorted")
trFolder = tr("Unsorted Bookmarks");
else
trFolder = name;
return trFolder;
}
QString BookmarksModel::fromTranslatedFolder(const QString &name)
{
QString folder;
if (name == tr("Bookmarks In Menu"))
folder = "bookmarksMenu";
else if (name == tr("Bookmarks In ToolBar"))
folder = "bookmarksToolbar";
else if (name == tr("Unsorted Bookmarks"))
folder = "unsorted";
else
folder = name;
return folder;
}

View File

@ -18,35 +18,59 @@
#ifndef BOOKMARKSMODEL_H
#define BOOKMARKSMODEL_H
#include <QObject>
#include <QUrl>
#include <QSettings>
#include <QSqlQuery>
class WebView;
class BookmarksModel
class BookmarksModel : public QObject
{
Q_OBJECT
public:
explicit BookmarksModel();
explicit BookmarksModel(QObject* parent);
struct Bookmark {
int id;
QString title;
QString folder;
QUrl url;
};
void loadSettings();
inline bool isShowingMostVisited() { return m_showMostVisited; }
void setShowingMostVisited(bool state);
bool isBookmarked(QUrl url);
int bookmarkId(QUrl url);
int bookmarkId(QUrl url, QString title, QString folder);
QStringList getBookmark(int id);
bool isBookmarked(const QUrl &url);
int bookmarkId(const QUrl &url);
int bookmarkId(const QUrl &url, const QString &title, const QString &folder);
Bookmark getBookmark(int id);
bool saveBookmark(QUrl url, QString title, QString folder = "unsorted");
bool saveBookmark(WebView* view, QString folder = "unsorted");
bool saveBookmark(const QUrl &url, const QString &title, const QString &folder = "unsorted");
bool saveBookmark(WebView* view, const QString &folder = "unsorted");
bool removeBookmark(int id);
bool removeBookmark(QUrl url);
bool removeBookmark(const QUrl &url);
bool removeBookmark(WebView* view);
bool editBookmark(int id, QString title, QString folder);
bool editBookmark(int id, QUrl url, QString title);
bool editBookmark(int id, const QString &title = "", const QUrl &url = QUrl(), const QString &folder = "");
// bool editBookmark(int id, const QString &title, const QString &folder);
// bool editBookmark(int id, const QUrl &url, const QString &title);
bool createFolder(const QString &name);
bool removeFolder(const QString &name);
static bool bookmarksEqual(const Bookmark &one, const Bookmark &two);
static QString toTranslatedFolder(const QString &name);
static QString fromTranslatedFolder(const QString &name);
signals:
void bookmarkAdded(const BookmarksModel::Bookmark &bookmark);
void bookmarkDeleted(const BookmarksModel::Bookmark &bookmark);
void bookmarkEdited(const BookmarksModel::Bookmark &before, const BookmarksModel::Bookmark &after);
void folderAdded(const QString &title);
void folderDeleted(const QString &title);
public slots:

View File

@ -31,7 +31,14 @@ BookmarksToolbar::BookmarksToolbar(QupZilla* mainClass, QWidget* parent) :
setMovable(false);
setContextMenuPolicy(Qt::CustomContextMenu);
m_bookmarksModel = mApp->bookmarksModel();
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(customContextMenuRequested(QPoint)));
connect(m_bookmarksModel, SIGNAL(bookmarkAdded(BookmarksModel::Bookmark)), this, SLOT(addBookmark(BookmarksModel::Bookmark)));
connect(m_bookmarksModel, SIGNAL(bookmarkDeleted(BookmarksModel::Bookmark)), this, SLOT(removeBookmark(BookmarksModel::Bookmark)));
connect(m_bookmarksModel, SIGNAL(bookmarkEdited(BookmarksModel::Bookmark,BookmarksModel::Bookmark)), this, SLOT(bookmarkEdited(BookmarksModel::Bookmark,BookmarksModel::Bookmark)));
QTimer::singleShot(0, this, SLOT(refreshBookmarks()));
}
@ -78,17 +85,91 @@ void BookmarksToolbar::hidePanel()
p_QupZilla->showBookmarksToolbar();
}
void BookmarksToolbar::addBookmark(const BookmarksModel::Bookmark &bookmark)
{
if (bookmark.folder != "bookmarksToolbar")
return;
QAction* action = new QAction(this);
QString title = bookmark.title;
if (title.length()>15) {
title.truncate(13);
title+="..";
}
action->setText(title);
action->setData(bookmark.url);
action->setIcon(LocationBar::icon(bookmark.url));
QToolButton* button = new QToolButton(this);
button->setDefaultAction(action);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
button->setMaximumHeight(25);
button->setToolTip(bookmark.url.toEncoded());
button->setWhatsThis(bookmark.title);
connect(action, SIGNAL(triggered()), p_QupZilla, SLOT(loadActionUrl()));
insertWidget(actions().at(actions().count() - 1), button);
}
void BookmarksToolbar::removeBookmark(const BookmarksModel::Bookmark &bookmark)
{
foreach (QAction* act, actions()) {
QToolButton* button = qobject_cast<QToolButton*>(widgetForAction(act));
if (!button)
continue;
QAction* action = button->actions().at(0);
if (!action)
continue;
if (action->data().toUrl() == bookmark.url) {
delete button;
return;
}
}
}
void BookmarksToolbar::bookmarkEdited(const BookmarksModel::Bookmark &before, const BookmarksModel::Bookmark &after)
{
if (before.folder == "bookmarksToolbar" && after.folder != "bookmarksToolbar") //Editing from toolbar folder to other folder -> Remove bookmark
removeBookmark(before);
else if (before.folder != "bookmarksToolbar" && after.folder == "bookmarksToolbar") //Editing from other folder to toolbar folder -> Add bookmark
addBookmark(after);
else { //Editing bookmark already in toolbar
foreach (QAction* act, actions()) {
QToolButton* button = qobject_cast<QToolButton*>(widgetForAction(act));
if (!button)
continue;
QAction* action = button->actions().at(0);
if (!action)
continue;
if (action->data().toUrl() == before.url && button->whatsThis() == before.title) {
QString title = after.title;
if (title.length()>15) {
title.truncate(13);
title+="..";
}
action->setText(title);
action->setData(after.url);
action->setIcon(LocationBar::icon(after.url));
button->setToolTip(after.url.toEncoded());
button->setWhatsThis(after.title);
}
}
}
}
void BookmarksToolbar::refreshBookmarks()
{
if (!m_bookmarksModel)
m_bookmarksModel =mApp->bookmarks();
clear();
QSqlQuery query;
query.exec("SELECT title, url FROM bookmarks WHERE folder='bookmarksToolbar'");
while(query.next()) {
QUrl url = query.value(1).toUrl();
QString title = query.value(0).toString();
QString title_ = title;
QAction* action = new QAction(this);
if (title.length()>15) {
title.truncate(13);
@ -102,6 +183,8 @@ void BookmarksToolbar::refreshBookmarks()
button->setDefaultAction(action);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
button->setMaximumHeight(25);
button->setToolTip(url.toEncoded());
button->setWhatsThis(title_);
connect(action, SIGNAL(triggered()), p_QupZilla, SLOT(loadActionUrl()));
addWidget(button);
}
@ -109,18 +192,19 @@ void BookmarksToolbar::refreshBookmarks()
if (!m_bookmarksModel->isShowingMostVisited())
return;
QToolButton* mostVis = new QToolButton(this);
mostVis->setPopupMode(QToolButton::InstantPopup);
mostVis->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
mostVis->setMaximumHeight(25);
mostVis->setIcon(style()->standardIcon(QStyle::SP_DirIcon));
mostVis->setText(tr("Most visited"));
mostVis->setToolTip(tr("Sites You visited the most"));
m_mostVis = new QToolButton(this);
m_mostVis->setPopupMode(QToolButton::InstantPopup);
m_mostVis->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
m_mostVis->setMaximumHeight(25);
m_mostVis->setIcon(style()->standardIcon(QStyle::SP_DirIcon));
m_mostVis->setText(tr("Most visited"));
m_mostVis->setToolTip(tr("Sites You visited the most"));
m_menuMostVisited = new QMenu();
mostVis->setMenu(m_menuMostVisited);
m_mostVis->setMenu(m_menuMostVisited);
connect(m_menuMostVisited, SIGNAL(aboutToShow()), this, SLOT(refreshMostVisited()));
addWidget(mostVis);
addWidget(m_mostVis);
}
void BookmarksToolbar::refreshMostVisited()

View File

@ -22,9 +22,10 @@
#include <QMenu>
#include <QToolButton>
#include "bookmarksmodel.h"
class QupZilla;
class BookmarksModel;
class BookmarksToolbar : public QToolBar
{
Q_OBJECT
@ -37,14 +38,20 @@ signals:
public slots:
void refreshBookmarks();
void refreshMostVisited();
void customContextMenuRequested(const QPoint &pos);
void hidePanel();
void showMostVisited();
private slots:
void addBookmark(const BookmarksModel::Bookmark &bookmark);
void removeBookmark(const BookmarksModel::Bookmark &bookmark);
void bookmarkEdited(const BookmarksModel::Bookmark &before, const BookmarksModel::Bookmark &after);
void customContextMenuRequested(const QPoint &pos);
private:
QupZilla* p_QupZilla;
BookmarksModel* m_bookmarksModel;
QMenu* m_menuMostVisited;
QToolButton* m_mostVis;
};

View File

@ -32,14 +32,14 @@ BookmarksWidget::BookmarksWidget(int bookmarkId, QWidget* parent) :
connect(ui->removeBookmark, SIGNAL(clicked()), this, SLOT(removeBookmark()));
connect(ui->save, SIGNAL(clicked()), this, SLOT(saveBookmark()));
m_bookmarksModel = mApp->bookmarks();
m_bookmarksModel = mApp->bookmarksModel();
loadBookmark();
}
void BookmarksWidget::loadBookmark()
{
QStringList bookmark = m_bookmarksModel->getBookmark(m_bookmarkId);
ui->name->setText( bookmark.at(1) );
BookmarksModel::Bookmark bookmark = m_bookmarksModel->getBookmark(m_bookmarkId);
ui->name->setText( bookmark.title );
// Bookmark folders
ui->folder->addItem(QIcon(":icons/other/unsortedbookmarks.png"), tr("Unsorted Bookmarks"), "unsorted");
@ -50,7 +50,7 @@ void BookmarksWidget::loadBookmark()
while(query.next())
ui->folder->addItem(style()->standardIcon(QStyle::SP_DirIcon), query.value(0).toString(), query.value(0).toString());
ui->folder->setCurrentIndex( ui->folder->findData(bookmark.at(2)) );
ui->folder->setCurrentIndex( ui->folder->findData(bookmark.folder) );
ui->name->setCursorPosition(0);
}
@ -63,7 +63,7 @@ void BookmarksWidget::removeBookmark()
void BookmarksWidget::saveBookmark()
{
m_bookmarksModel->editBookmark(m_bookmarkId, ui->name->text(), ui->folder->itemData(ui->folder->currentIndex()).toString() );
m_bookmarksModel->editBookmark(m_bookmarkId, ui->name->text(), QUrl(), ui->folder->itemData(ui->folder->currentIndex()).toString() );
close();
}

View File

@ -22,11 +22,10 @@
#include "mainapplication.h"
#include "locationcompleter.h"
#include "clickablelabel.h"
#include "bookmarkswidget.h"
#include "bookmarksmodel.h"
#include "siteinfowidget.h"
#include "rsswidget.h"
#include "webpage.h"
#include "bookmarkicon.h"
LocationBar::LocationBar(QupZilla* mainClass, QWidget* parent)
: LineEdit(parent)
@ -34,7 +33,6 @@ LocationBar::LocationBar(QupZilla* mainClass, QWidget* parent)
,m_addComWithCtrl(false)
,m_addCountryWithAlt(false)
,p_QupZilla(mainClass)
,m_bookmarksModel(0)
{
m_siteIcon = new QToolButton(this);
m_siteIcon->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@ -59,19 +57,14 @@ LocationBar::LocationBar(QupZilla* mainClass, QWidget* parent)
m_goButton->setHidden(true);
m_goButton->setStyleSheet("margin-bottom:2px;");
m_bookmarkButton = new ClickableLabel(this);
m_bookmarkButton->setPixmap(QPixmap(":/icons/locationbar/starg.png"));
m_bookmarkButton->setCursor(Qt::PointingHandCursor);
m_bookmarkButton->setStyleSheet("margin-bottom: 2px;");
m_bookmarkButton->setToolTip(tr("Bookmark this Page"));
m_bookmarkButton->setFocusPolicy(Qt::ClickFocus);
m_bookmarkIcon = new BookmarkIcon(p_QupZilla);
ClickableLabel* down = new ClickableLabel(this);
down->setPixmap(QPixmap(":icons/locationbar/arrow-down.gif"));
down->setCursor(Qt::ArrowCursor);
addWidget(down, LineEdit::RightSide);
addWidget(m_bookmarkButton, LineEdit::RightSide);
addWidget(m_bookmarkIcon, LineEdit::RightSide);
addWidget(m_goButton, LineEdit::RightSide);
addWidget(m_rssIcon, LineEdit::RightSide);
@ -92,7 +85,6 @@ LocationBar::LocationBar(QupZilla* mainClass, QWidget* parent)
connect(m_siteIcon, SIGNAL(clicked()), this, SLOT(showSiteInfo()));
// connect(down, SIGNAL(clicked(QPoint)), com, SLOT(show()));
connect(m_goButton, SIGNAL(clicked(QPoint)), p_QupZilla, SLOT(urlEnter()));
connect(m_bookmarkButton, SIGNAL(clicked(QPoint)), this, SLOT(bookmarkIconClicked()));
connect(m_rssIcon, SIGNAL(clicked(QPoint)), this, SLOT(rssIconClicked()));
setStyleSheet("QLineEdit { background: transparent; border-image: url(:/icons/locationbar/lineedit.png); border-width:4; color:black;}");
@ -122,7 +114,7 @@ void LocationBar::showGoButton()
m_rssIconVisible = m_rssIcon->isVisible();
m_bookmarkButton->hide();
m_bookmarkIcon->hide();
m_rssIcon->hide();
m_goButton->show();
}
@ -133,7 +125,7 @@ void LocationBar::hideGoButton()
return;
m_rssIcon->setVisible(m_rssIconVisible);
m_bookmarkButton->show();
m_bookmarkIcon->show();
m_goButton->hide();
}
@ -151,20 +143,6 @@ void LocationBar::showSiteInfo()
info->showAt(this);
}
void LocationBar::bookmarkIconClicked()
{
QUrl url = p_QupZilla->weView()->url();
if (m_bookmarksModel->isBookmarked(url)) {
BookmarksWidget* menu = new BookmarksWidget(m_bookmarksModel->bookmarkId(url), this);
menu->showAt(this);
connect(menu, SIGNAL(bookmarkDeleted()), this, SLOT(checkBookmark()));
} else if (m_bookmarksModel->saveBookmark(p_QupZilla->weView())) {
m_bookmarkButton->setPixmap(QPixmap(":/icons/locationbar/star.png"));
m_bookmarkButton->setToolTip(tr("Edit this bookmark"));
}
}
void LocationBar::rssIconClicked()
{
QList<QPair<QString,QString> > _rss = p_QupZilla->weView()->getRss();
@ -173,20 +151,6 @@ void LocationBar::rssIconClicked()
rss->showAt(this);
}
void LocationBar::checkBookmark()
{
if (!m_bookmarksModel)
m_bookmarksModel = mApp->bookmarks();
if (m_bookmarksModel->isBookmarked(QUrl(text()))) {
m_bookmarkButton->setPixmap(QPixmap(":/icons/locationbar/star.png"));
m_bookmarkButton->setToolTip(tr("Edit this bookmark"));
} else {
m_bookmarkButton->setPixmap(QPixmap(":/icons/locationbar/starg.png"));
m_bookmarkButton->setToolTip(tr("Bookmark this Page"));
}
}
QIcon LocationBar::icon(const QUrl &url)
{
QUrl url2 = url.scheme() + "://" + url.host();
@ -239,8 +203,10 @@ void LocationBar::showUrl(const QUrl &url, bool empty)
p_QupZilla->statusBar()->showMessage(tr("Done"));
p_QupZilla->ipLabel()->show();
}
hideGoButton();
checkBookmark();
m_bookmarkIcon->checkBookmark(url);
m_rssIcon->setVisible(view->hasRss());
}
@ -329,7 +295,7 @@ void LocationBar::keyPressEvent(QKeyEvent *event)
LocationBar::~LocationBar()
{
delete m_bookmarkButton;
delete m_bookmarkIcon;
delete m_goButton;
delete m_siteIcon;
delete m_rssIcon;

View File

@ -36,8 +36,7 @@ class QupZilla;
class LineEdit;
class LocationCompleter;
class ClickableLabel;
class BookmarksModel;
class BookmarkIcon;
class LocationBar : public LineEdit
{
Q_OBJECT;
@ -50,14 +49,12 @@ public:
public slots:
void showUrl(const QUrl &url, bool empty = true);
void checkBookmark();
private slots:
void siteIconChanged();
void setPrivacy(bool state);
void textEdit();
void showPopup();
void bookmarkIconClicked();
void showSiteInfo();
void rssIconClicked();
@ -70,7 +67,7 @@ private:
void showGoButton();
void hideGoButton();
ClickableLabel* m_bookmarkButton;
BookmarkIcon* m_bookmarkIcon;
ClickableLabel* m_goButton;
ClickableLabel* m_rssIcon;
QToolButton* m_siteIcon;
@ -80,7 +77,6 @@ private:
bool m_addCountryWithAlt;
QupZilla* p_QupZilla;
LocationCompleter* m_locationCompleter;
BookmarksModel* m_bookmarksModel;
bool m_rssIconVisible;
};

View File

@ -0,0 +1,251 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2011 nowrep
*
* 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/>.
* ============================================================ */
#include "bookmarkssidebar.h"
#include "mainapplication.h"
#include "ui_bookmarkssidebar.h"
#include "qupzilla.h"
#include "locationbar.h"
#include "webview.h"
#include "bookmarkstoolbar.h"
#include "tabwidget.h"
#include "bookmarksmodel.h"
BookmarksSideBar::BookmarksSideBar(QupZilla* mainClass, QWidget* parent) :
QWidget(parent)
,m_isRefreshing(false)
,ui(new Ui::BookmarksSideBar)
,p_QupZilla(mainClass)
,m_bookmarksModel(mApp->bookmarksModel())
{
ui->setupUi(this);
connect(ui->bookmarksTree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenuRequested(const QPoint &)));
connect(ui->bookmarksTree, SIGNAL(itemControlClicked(QTreeWidgetItem*)), this, SLOT(itemControlClicked(QTreeWidgetItem*)));
connect(ui->bookmarksTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(itemDoubleClicked(QTreeWidgetItem*)));
connect(ui->search, SIGNAL(textChanged(QString)), ui->bookmarksTree, SLOT(filterStringWithoutTopItems(QString)));
connect(m_bookmarksModel, SIGNAL(bookmarkAdded(BookmarksModel::Bookmark)), this, SLOT(addBookmark(BookmarksModel::Bookmark)));
connect(m_bookmarksModel, SIGNAL(bookmarkDeleted(BookmarksModel::Bookmark)), this, SLOT(removeBookmark(BookmarksModel::Bookmark)));
connect(m_bookmarksModel, SIGNAL(folderAdded(QString)), this, SLOT(addFolder(QString)));
connect(m_bookmarksModel, SIGNAL(folderDeleted(QString)), this, SLOT(removeFolder(QString)));
connect(m_bookmarksModel, SIGNAL(bookmarkEdited(BookmarksModel::Bookmark,BookmarksModel::Bookmark)), this, SLOT(bookmarkEdited(BookmarksModel::Bookmark,BookmarksModel::Bookmark)));
QTimer::singleShot(0, this, SLOT(refreshTable()));
}
void BookmarksSideBar::itemControlClicked(QTreeWidgetItem* item)
{
if (!item || item->text(1).isEmpty())
return;
p_QupZilla->tabWidget()->addView(QUrl(item->text(1)));
}
void BookmarksSideBar::itemDoubleClicked(QTreeWidgetItem *item)
{
if (!item || item->text(1).isEmpty())
return;
p_QupZilla->loadAddress(QUrl(item->text(1)));
}
void BookmarksSideBar::loadInNewTab()
{
if (QAction* action = qobject_cast<QAction*>(sender()))
p_QupZilla->tabWidget()->addView(action->data().toUrl(), tr("New Tab"), TabWidget::NewNotSelectedTab);
}
void BookmarksSideBar::deleteItem()
{
QTreeWidgetItem* item = ui->bookmarksTree->currentItem();
if (!item)
return;
int id = item->whatsThis(0).toInt();
m_bookmarksModel->removeBookmark(id);
}
void BookmarksSideBar::moveBookmark()
{
QTreeWidgetItem* item = ui->bookmarksTree->currentItem();
if (!item)
return;
if (QAction* action = qobject_cast<QAction*>(sender())) {
m_bookmarksModel->editBookmark(item->whatsThis(0).toInt(), item->text(0), QUrl(), action->data().toString());
}
}
void BookmarksSideBar::contextMenuRequested(const QPoint &position)
{
if (!ui->bookmarksTree->itemAt(position))
return;
QString link = ui->bookmarksTree->itemAt(position)->text(1);
if (link.isEmpty())
return;
QMenu menu;
menu.addAction(tr("Open link in actual &tab"), p_QupZilla, SLOT(loadActionUrl()))->setData(link);
menu.addAction(tr("Open link in &new tab"), this, SLOT(loadInNewTab()))->setData(link);
menu.addSeparator();
QMenu moveMenu;
moveMenu.setTitle(tr("Move bookmark to &folder"));
moveMenu.addAction(QIcon(":icons/other/unsortedbookmarks.png"), tr("Unsorted Bookmarks"), this, SLOT(moveBookmark()))->setData("unsorted");
moveMenu.addAction(style()->standardIcon(QStyle::SP_DirOpenIcon), tr("Bookmarks In Menu"), this, SLOT(moveBookmark()))->setData("bookmarksMenu");
moveMenu.addAction(style()->standardIcon(QStyle::SP_DirOpenIcon), tr("Bookmarks In ToolBar"), this, SLOT(moveBookmark()))->setData("bookmarksToolbar");
QSqlQuery query;
query.exec("SELECT name FROM folders");
while(query.next())
moveMenu.addAction(style()->standardIcon(QStyle::SP_DirIcon), query.value(0).toString(), this, SLOT(moveBookmark()))->setData(query.value(0).toString());
menu.addMenu(&moveMenu);
menu.addAction(tr("&Delete"), this, SLOT(deleteItem()));
//Prevent choosing first option with double rightclick
QPoint pos = QCursor::pos();
QPoint p(pos.x(), pos.y()+1);
menu.exec(p);
}
void BookmarksSideBar::addBookmark(const BookmarksModel::Bookmark &bookmark)
{
QString translatedFolder = BookmarksModel::toTranslatedFolder(bookmark.folder);
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, bookmark.title);
item->setText(1, bookmark.url.toEncoded());
item->setWhatsThis(0, QString::number(bookmark.id));
item->setIcon(0, LocationBar::icon(bookmark.url));
item->setToolTip(0, bookmark.url.toEncoded());
if (bookmark.folder != "unsorted")
ui->bookmarksTree->addToParentItem(translatedFolder, item);
else
ui->bookmarksTree->addTopLevelItem(item);
// if (!ui->search->text().isEmpty())
item->setHidden(!bookmark.title.contains(ui->search->text(), Qt::CaseInsensitive));
}
void BookmarksSideBar::removeBookmark(const BookmarksModel::Bookmark &bookmark)
{
if (bookmark.folder == "unsorted") {
QTreeWidgetItem* item = ui->bookmarksTree->findItems(bookmark.title, Qt::MatchExactly).at(0);
if (item && item->whatsThis(0) == QString::number(bookmark.id))
delete item;
} else {
QTreeWidgetItem* parentItem = ui->bookmarksTree->findItems(BookmarksModel::toTranslatedFolder(bookmark.folder), Qt::MatchExactly).at(0);
if (!parentItem)
return;
for (int i = 0; i < parentItem->childCount(); i++) {
QTreeWidgetItem* item = parentItem->child(i);
if (!item)
continue;
if (item->text(0) == bookmark.title && item->whatsThis(0) == QString::number(bookmark.id)) {
delete item;
return;
}
}
}
}
void BookmarksSideBar::bookmarkEdited(const BookmarksModel::Bookmark &before, const BookmarksModel::Bookmark &after)
{
removeBookmark(before);
addBookmark(after);
}
void BookmarksSideBar::addFolder(const QString &name)
{
QTreeWidgetItem* item = new QTreeWidgetItem(ui->bookmarksTree);
item->setText(0, name);
item->setIcon(0, style()->standardIcon(QStyle::SP_DirIcon));
}
void BookmarksSideBar::removeFolder(const QString &name)
{
QTreeWidgetItem* item = ui->bookmarksTree->findItems(name, Qt::MatchExactly).at(0);
if (item)
delete item;
}
void BookmarksSideBar::refreshTable()
{
m_isRefreshing = true;
ui->bookmarksTree->setUpdatesEnabled(false);
ui->bookmarksTree->clear();
QSqlQuery query;
QTreeWidgetItem* newItem = new QTreeWidgetItem(ui->bookmarksTree);
newItem->setText(0, tr("Bookmarks In Menu"));
newItem->setIcon(0, style()->standardIcon(QStyle::SP_DirIcon));
ui->bookmarksTree->addTopLevelItem(newItem);
newItem = new QTreeWidgetItem(ui->bookmarksTree);
newItem->setText(0, tr("Bookmarks In ToolBar"));
newItem->setIcon(0, style()->standardIcon(QStyle::SP_DirIcon));
ui->bookmarksTree->addTopLevelItem(newItem);
query.exec("SELECT name FROM folders");
while(query.next()) {
newItem = new QTreeWidgetItem(ui->bookmarksTree);
newItem->setText(0, query.value(0).toString());
newItem->setIcon(0, style()->standardIcon(QStyle::SP_DirIcon));
ui->bookmarksTree->addTopLevelItem(newItem);
}
query.exec("SELECT title, url, id, folder FROM bookmarks");
while(query.next()) {
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
int id = query.value(2).toInt();
QString folder = query.value(3).toString();
QTreeWidgetItem* item;
if (folder == "bookmarksMenu")
folder = tr("Bookmarks In Menu");
if (folder == "bookmarksToolbar")
folder = tr("Bookmarks In ToolBar");
if (folder != "unsorted") {
QList<QTreeWidgetItem*> findParent = ui->bookmarksTree->findItems(folder, 0);
if (findParent.count() == 1) {
item = new QTreeWidgetItem(findParent.at(0));
}else{
QTreeWidgetItem* newParent = new QTreeWidgetItem(ui->bookmarksTree);
newParent->setText(0, folder);
newParent->setIcon(0, style()->standardIcon(QStyle::SP_DirIcon));
ui->bookmarksTree->addTopLevelItem(newParent);
item = new QTreeWidgetItem(newParent);
}
} else
item = new QTreeWidgetItem(ui->bookmarksTree);
item->setText(0, title);
item->setText(1, url.toEncoded());
item->setToolTip(0, url.toEncoded());
// item->setToolTip(1, url.toEncoded());
item->setWhatsThis(0, QString::number(id));
item->setIcon(0, LocationBar::icon(url));
ui->bookmarksTree->addTopLevelItem(item);
}
ui->bookmarksTree->expandAll();
ui->bookmarksTree->setUpdatesEnabled(true);
m_isRefreshing = false;
}
BookmarksSideBar::~BookmarksSideBar()
{
delete ui;
}

View File

@ -16,8 +16,32 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "sidebar.h"
#include "docktitlebarwidget.h"
#include "bookmarkssidebar.h"
#include "qupzilla.h"
SideBar::SideBar(QWidget* parent) :
QDockWidget(parent)
{
setObjectName("SideBar");
setAttribute(Qt::WA_DeleteOnClose);
m_titleBar = new DockTitleBarWidget("", this);
setTitleBarWidget(m_titleBar);
}
void SideBar::showBookmarks()
{
m_titleBar->setTitle(tr("Bookmarks"));
BookmarksSideBar* bar = new BookmarksSideBar((QupZilla*)parentWidget(), this);
setWidget(bar);
}
void SideBar::showHistory()
{
}
void SideBar::showRSS()
{
}

View File

@ -20,16 +20,22 @@
#include <QDockWidget>
class DockTitleBarWidget;
class SideBar : public QDockWidget
{
Q_OBJECT
public:
explicit SideBar(QWidget* parent = 0);
void showBookmarks();
void showHistory();
void showRSS();
signals:
public slots:
private:
DockTitleBarWidget* m_titleBar;
};
#endif // SIDEBAR_H

View File

@ -65,7 +65,7 @@ void TreeWidget::filterStringWithoutTopItems(QString string)
item->setHidden(false);
} else {
foreach (QTreeWidgetItem* item, _allItems)
item->setHidden(!item->text(0).contains(string));
item->setHidden(!item->text(0).contains(string, Qt::CaseInsensitive));
}
}
@ -78,6 +78,16 @@ void TreeWidget::filterStringWithTopItems(QString string)
item->setHidden(false);
} else {
foreach (QTreeWidgetItem* item, _allItems)
item->setHidden(!item->text(0).contains(string));
item->setHidden(!item->text(0).contains(string, Qt::CaseInsensitive));
}
}
bool TreeWidget::addToParentItem(const QString &text, QTreeWidgetItem* item)
{
QTreeWidgetItem* parentItem = findItems(text, Qt::MatchExactly).at(0);
if (!parentItem)
return false;
parentItem->addChild(item);
return true;
}

View File

@ -28,6 +28,7 @@ class TreeWidget : public QTreeWidget
public:
explicit TreeWidget(QWidget* parent = 0);
QList<QTreeWidgetItem*> allItems(bool includeTopLevelItems = true);
bool addToParentItem(const QString &text, QTreeWidgetItem* item);
signals:
void itemControlClicked(QTreeWidgetItem* item);

View File

@ -290,54 +290,57 @@
</widget>
<widget class="QWidget" name="page_3">
<layout class="QGridLayout" name="gridLayout_3">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTreeWidget" name="treeImages">
<property name="minimumSize">
<size>
<width>0</width>
<height>110</height>
</size>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>110</height>
</size>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<attribute name="headerMinimumSectionSize">
<number>200</number>
</attribute>
<column>
<property name="text">
<string>Image</string>
<widget class="QTreeWidget" name="treeImages">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</column>
<column>
<property name="text">
<string>Image address</string>
<property name="itemsExpandable">
<bool>false</bool>
</property>
</column>
<attribute name="headerMinimumSectionSize">
<number>200</number>
</attribute>
<column>
<property name="text">
<string>Image</string>
</property>
</column>
<column>
<property name="text">
<string>Image address</string>
</property>
</column>
</widget>
<widget class="QWidget" name="">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_5">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>20</height>
</size>
</property>
<property name="text">
<string>&lt;b&gt;Preview&lt;/b&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QGraphicsView" name="mediaPreview"/>
</item>
</layout>
</widget>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>&lt;b&gt;Preview&lt;/b&gt;</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QGraphicsView" name="mediaPreview"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff