diff --git a/bin/locale/cs_CZ.qm b/bin/locale/cs_CZ.qm index 38da018b3..cf86f23c0 100644 Binary files a/bin/locale/cs_CZ.qm and b/bin/locale/cs_CZ.qm differ diff --git a/bin/locale/sk_SK.qm b/bin/locale/sk_SK.qm index 28743b540..270358da6 100644 Binary files a/bin/locale/sk_SK.qm and b/bin/locale/sk_SK.qm differ diff --git a/src/QupZilla.pro b/src/QupZilla.pro index da7282f2b..2b2bce224 100644 --- a/src/QupZilla.pro +++ b/src/QupZilla.pro @@ -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 \ diff --git a/src/adblock/adblockdialog.cpp b/src/adblock/adblockdialog.cpp index d90221a0d..41d219c75 100644 --- a/src/adblock/adblockdialog.cpp +++ b/src/adblock/adblockdialog.cpp @@ -45,7 +45,6 @@ #include "adblockdialog.h" #include "adblockmanager.h" #include "adblocksubscription.h" -#include "ui_adblockdialog.h" #include "mainapplication.h" AdBlockDialog::AdBlockDialog(QWidget *parent) diff --git a/src/app/appui.cpp b/src/app/appui.cpp index 7cf5e8c09..168582979 100644 --- a/src/app/appui.cpp +++ b/src/app/appui.cpp @@ -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;}"); } diff --git a/src/app/mainapplication.cpp b/src/app/mainapplication.cpp index 4e15bca77..09e61c909 100644 --- a/src/app/mainapplication.cpp +++ b/src/app/mainapplication.cpp @@ -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; } diff --git a/src/app/mainapplication.h b/src/app/mainapplication.h index 75aece3ca..9e993f38f 100644 --- a/src/app/mainapplication.h +++ b/src/app/mainapplication.h @@ -78,7 +78,7 @@ public: CookieJar* cookieJar(); RSSManager* rssManager(); PluginProxy* plugins(); - BookmarksModel* bookmarks(); + BookmarksModel* bookmarksModel(); DownloadManager* downManager(); AutoFillModel* autoFill(); QNetworkDiskCache* networkCache() { return m_networkCache; } diff --git a/src/app/qupzilla.cpp b/src/app/qupzilla.cpp index 4081cc321..265e672bf 100644 --- a/src/app/qupzilla.cpp +++ b/src/app/qupzilla.cpp @@ -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); diff --git a/src/app/qupzilla.h b/src/app/qupzilla.h index 0906489bb..c38d842ae 100644 --- a/src/app/qupzilla.h +++ b/src/app/qupzilla.h @@ -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 m_sideBar; QSplitter* m_navigationSplitter; QAction* m_buttonBack; diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index e17a128ce..8f5366b84 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -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(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; } diff --git a/src/bookmarks/bookmarksmodel.cpp b/src/bookmarks/bookmarksmodel.cpp index 2a01a9b31..c0f91dd4f 100644 --- a/src/bookmarks/bookmarksmodel.cpp +++ b/src/bookmarks/bookmarksmodel.cpp @@ -15,8 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . * ============================================================ */ -#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; } diff --git a/src/bookmarks/bookmarksmodel.h b/src/bookmarks/bookmarksmodel.h index e4e3a3eb8..ac92c8fb6 100644 --- a/src/bookmarks/bookmarksmodel.h +++ b/src/bookmarks/bookmarksmodel.h @@ -18,35 +18,59 @@ #ifndef BOOKMARKSMODEL_H #define BOOKMARKSMODEL_H +#include #include #include #include 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: diff --git a/src/bookmarks/bookmarkstoolbar.cpp b/src/bookmarks/bookmarkstoolbar.cpp index 311bd4e38..9c374f9e5 100644 --- a/src/bookmarks/bookmarkstoolbar.cpp +++ b/src/bookmarks/bookmarkstoolbar.cpp @@ -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(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(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() diff --git a/src/bookmarks/bookmarkstoolbar.h b/src/bookmarks/bookmarkstoolbar.h index fecfeb6b1..e181149d7 100644 --- a/src/bookmarks/bookmarkstoolbar.h +++ b/src/bookmarks/bookmarkstoolbar.h @@ -22,9 +22,10 @@ #include #include +#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; }; diff --git a/src/bookmarks/bookmarkswidget.cpp b/src/bookmarks/bookmarkswidget.cpp index 8ee449c55..8490bf029 100644 --- a/src/bookmarks/bookmarkswidget.cpp +++ b/src/bookmarks/bookmarkswidget.cpp @@ -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(); } diff --git a/src/navigation/locationbar.cpp b/src/navigation/locationbar.cpp index 998b5c051..98ea3f943 100644 --- a/src/navigation/locationbar.cpp +++ b/src/navigation/locationbar.cpp @@ -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 > _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; diff --git a/src/navigation/locationbar.h b/src/navigation/locationbar.h index c5fe7ae6a..bbc22d0f0 100644 --- a/src/navigation/locationbar.h +++ b/src/navigation/locationbar.h @@ -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; }; diff --git a/src/sidebar/bookmarkssidebar.cpp b/src/sidebar/bookmarkssidebar.cpp new file mode 100644 index 000000000..eb82948e3 --- /dev/null +++ b/src/sidebar/bookmarkssidebar.cpp @@ -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 . +* ============================================================ */ +#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(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(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 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; +} diff --git a/src/sidebar/sidebar.cpp b/src/sidebar/sidebar.cpp index 5f5c37185..e94e9a3e3 100644 --- a/src/sidebar/sidebar.cpp +++ b/src/sidebar/sidebar.cpp @@ -16,8 +16,32 @@ * along with this program. If not, see . * ============================================================ */ #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() +{ + } diff --git a/src/sidebar/sidebar.h b/src/sidebar/sidebar.h index a8f700280..d4c01660e 100644 --- a/src/sidebar/sidebar.h +++ b/src/sidebar/sidebar.h @@ -20,16 +20,22 @@ #include +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 diff --git a/src/tools/treewidget.cpp b/src/tools/treewidget.cpp index 763696179..37236ea00 100644 --- a/src/tools/treewidget.cpp +++ b/src/tools/treewidget.cpp @@ -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; +} diff --git a/src/tools/treewidget.h b/src/tools/treewidget.h index 6951eee94..d0509c1af 100644 --- a/src/tools/treewidget.h +++ b/src/tools/treewidget.h @@ -28,6 +28,7 @@ class TreeWidget : public QTreeWidget public: explicit TreeWidget(QWidget* parent = 0); QList allItems(bool includeTopLevelItems = true); + bool addToParentItem(const QString &text, QTreeWidgetItem* item); signals: void itemControlClicked(QTreeWidgetItem* item); diff --git a/src/webview/siteinfo.ui b/src/webview/siteinfo.ui index d56a5f488..78f5dba77 100644 --- a/src/webview/siteinfo.ui +++ b/src/webview/siteinfo.ui @@ -290,54 +290,57 @@ - - 0 - - - 0 - - - - - 0 - 110 - + + + Qt::Vertical - - - 16777215 - 110 - - - - false - - - 200 - - - - Image + + + + 0 + 0 + - - - - Image address + + false - + + 200 + + + + Image + + + + + Image address + + + + + + + + + + 16777215 + 20 + + + + <b>Preview</b> + + + + + + + + - - - - <b>Preview</b> - - - - - - diff --git a/translations/cs_CZ.ts b/translations/cs_CZ.ts index 5737ea57e..571052312 100644 --- a/translations/cs_CZ.ts +++ b/translations/cs_CZ.ts @@ -94,7 +94,7 @@ p, li { white-space: pre-wrap; } - + Add Rule Přidat pravidlo @@ -109,32 +109,32 @@ p, li { white-space: pre-wrap; } AdBlock - + Delete Rule Smazat pravidlo - + Update completed Aktualizace hotova - + EasyList has been successfuly updated. EasyList byl úspěšně aktualizován. - + Custom Rules Vlastní pravidla - + Add Custom Rule Přidat vlastní pravidlo - + Please write your rule here: Napište zde nové pravidlo: @@ -146,10 +146,6 @@ p, li { white-space: pre-wrap; } AdBlock let you block any unwanted content on pages AdBlock blokuje nevyžádaný obsah na stánkách - - Show AdBlock Settings - Zobrazit nastavení AdBlocku - Show AdBlock &Settings @@ -175,10 +171,6 @@ p, li { white-space: pre-wrap; } Learn About Writing &Rules Zjistit více o psaní &pravidel - - Learn About Writing Rules - Zjistit více o psaní pravidel - New tab @@ -272,6 +264,20 @@ p, li { white-space: pre-wrap; } Nyní ne + + BookmarkIcon + + + + Bookmark this Page + Přidat stránku do záložek + + + + Edit this bookmark + Upravit záložku + + BookmarksManager @@ -320,100 +326,151 @@ p, li { white-space: pre-wrap; } Nový panel - - - - - - - - + + + + + Bookmarks In Menu Záložky v menu - - - - - - - - + + + + + Bookmarks In ToolBar Panel záložek - + Open link in actual &tab Otevřít odkaz v &aktuálním panelu - + Open link in &new tab Otevřít odkaz v novém &panelu - + Move bookmark to &folder Přesunout záložku do &složky - + &Close &Zavřít - Open link in actual tab - Otevřít odkaz v aktuálním panelu - - - Open link in new tab - Otevřít odkaz v novém panelu - - - Move bookmark to folder - Přesunout záložku do složky - - - - - - - + + + Unsorted Bookmarks Nesetříděné záložky - Close - Zavřít - - - + <b>Warning: </b>You already have this page bookmarked! <b>Upozornění: </b>Tuto stránku již máte v záložkách! - + Choose name and location of bookmark. Zvolte jméno a umístění záložky. - + Add New Bookmark Přidat záložku - + Choose folder for bookmarks: Zvolte složku pro záložky: - + Bookmark All Tabs Přidat všechny panely do záložek + + BookmarksModel + + + + + Bookmarks In Menu + Záložky v menu + + + + + + Bookmarks In ToolBar + Panel záložek + + + + + Unsorted Bookmarks + Nesetříděné záložky + + + + BookmarksSideBar + + + Search... + Hledat... + + + + New Tab + Nový panel + + + + Open link in actual &tab + Otevřít odkaz v &aktuálním panelu + + + + Open link in &new tab + Otevřít odkaz v novém &panelu + + + + Move bookmark to &folder + Přesunout záložku do &složky + + + + Unsorted Bookmarks + Nesetříděné záložky + + + + + + Bookmarks In Menu + Záložky v menu + + + + + + Bookmarks In ToolBar + Panel záložek + + + + &Delete + &Odstranit + + BookmarksToolbar @@ -421,34 +478,6 @@ p, li { white-space: pre-wrap; } Bookmarks Záložky - - Bookmark Current Page - Přidat stránku do záložek - - - Bookmark All Tabs - Přidat všechny panely do záložek - - - Organize Bookmarks - Organizovat záložky - - - Reload Toolbar - Obnovit panel - - - Hide Most Visited - Skrýt Nejnavštěvovanější - - - Show Most Visited - Zobrazit Nejnavštěvovanější - - - Hide Toolbar - Skrýt panel - &Bookmark Current Page @@ -1068,44 +1097,32 @@ nebyl nalezen! LocationBar - + Show informations about this page Zobrazit informace o stránce - + Add RSS from this page... Přidat RSS kanál ... - - - Bookmark this Page - Přidat stránku do záložek - - - + Enter URL address or search on Google.com Zadejte internetovou adresu nebo vyhledávejte na Google.com - + Loading... Načítám... - + Done Hotovo - - - Edit this bookmark - Upravit záložku - - - + .co.uk .cz Append domain name on ALT key = Should be different for every country @@ -1840,10 +1857,6 @@ nebyl nalezen! File Soubor - - Open File - Otevřít soubor - Edit @@ -1866,22 +1879,16 @@ nebyl nalezen! + Bookmarks Záložky + History Historie - - Save Page As... - Uložit stránku jako... - - - Print - Tisk - Quit @@ -1892,39 +1899,11 @@ nebyl nalezen! New Tab Nový panel - - Undo - Zpět - - - Redo - Vpřed - - - Preferences - Předvolby - - - About QupZilla - O QupZille - - - About Qt - O Qt - Close Tab Zavřít panel - - Find - Najít - - - Cut - Vyjmout - IP Address of current page @@ -1950,30 +1929,6 @@ nebyl nalezen! &Print &Tisk - - Copy - Kopírovat - - - Paste - Vložit - - - Delete - Odstranit - - - Select All - Vybrat vše - - - Navigation Toolbar - Navigační lišta - - - Status Bar - Status bar - Stop @@ -2040,13 +1995,19 @@ nebyl nalezen! Sta&tus bar - - &Page Source - Zdrojový &kód stránky + + Toolbars + Nástrojové lišty - &Status Bar - &Status bar + + Sidebars + Postranní lišta + + + + &Page Source + Zdrojový &kód stránky @@ -2074,48 +2035,20 @@ nebyl nalezen! Kó&dování znaků - + Zoom &In Zoo&m + - + Zoom &Out Z&oom - - &Reset - &Původní - - - Page &Source - Zdrojový &kód stránky - - - Character Encoding - Kódování znaků - - - Zoom In - Zoom + - - - Zoom Out - Zoom - - - - + Reset Původní - - Page Source - Zdrojový kód stránky - - - Fullscreen - Celá obrazovka - Back @@ -2131,22 +2064,6 @@ nebyl nalezen! Home Domů - - Show All History - Zobrazit celou historii - - - Bookmark This Page - Přidat stránku do záložek - - - Bookmark All Tabs - Přidat všechny panely do záložek - - - Organize Bookmarks - Organizovat záložky - Close Window @@ -2163,60 +2080,25 @@ nebyl nalezen! Poslat odkaz... - Report Bug - Nahlásit bug - - - Web Search - Hledání na webu - - - Page Info - Informace o stránce - - - Download Manager - Správce stahování - - - AdBlock - AdBlock - - - Clear Recent History - Vymazat nedávnou historii - - - Private Browsing - Soukromé prohlížení - - + RSS Reader - RSS čtečka + RSS čtečka - + Other Ostatní - + Default Defaultní - + Start Private Browsing Spustit anonymní prohlížení - - Cookies Manager - Správce cookies - - - Bookmarks Toolbar - Panel záložek - Navigation @@ -2238,163 +2120,160 @@ nebyl nalezen! Soukromé prohlížení zapnuto - Menu Bar - Menu - - - + Bookmarks In ToolBar Bookmarks In Toolbar Panel záložek - - + + Empty Prázdný - + New tab Nový panel - + Bookmark &This Page Přidat &stránku do záložek - + Bookmark &All Tabs Přidat &všechny panely do záložek - + Organize &Bookmarks Organizovat &záložky - + &Back &Zpět - + &Forward &Vpřed - + &Home &Domů - + Show &All History Zobrazit celou &historii - + Report &Bug Nahlásit &bug - + About &Qt O &Qt - + &About QupZilla &O QupZille - + &Web Search Hledání na &webu - + Page &Info Informace o &stránce - + &Download Manager Správce s&tahování - + &Cookies Manager Správce coo&kies - + &AdBlock &AdBlock - + RSS &Reader &RSS čtečka - + Clear Recent &History Vymazat nedá&vnou historii - + &Private Browsing Soukromé prohlíž&ení - + Pr&eferences Předvo&lby - + + Web Inspector Web Inspektor - + Open file... Otevřít soubor... - + Are you sure you want to turn on private browsing? Jste si jistý že chcete zapnout soukromé prohlížení? - + When private browsing is turned on, some actions concerning your privacy will be disabled: Se zapnutým soukromým prohlížením jsou některé akce týkající se soukromí vypnuty: - + Webpages are not added to the history. Stránky nejsou přidávány do historie. - + New cookies are not stored, but current cookies can be accessed. Nové cookies nejsou přijímány, ale současné cookies jsou zasílány. - + Your session won't be stored. Vaše relace nebude uložena. - + Until you close the window, you can still click the Back and Forward buttons to return to the webpages you have opened. Než zavřete prohlížeč, stále můžete použít tlačítka Zpět a Vpřed k vrácení se na stránky které jste otevřeli. - + There are still %1 open tabs and your session won't be stored. Are you sure to quit? Ještě je otevřeno %1 panelů a Vaše relace nebude uložena. Opravdu chcete skončit? @@ -2624,6 +2503,14 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.Nic nenalezeno. + + SideBar + + + Bookmarks + Záložky + + SiteInfo @@ -2677,65 +2564,65 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.Detaily - + Image Obrázek - + Image address Adresa obrázku - + <b>Preview</b> <b>Náhled</b> - + <b>Issued To</b> <b>Vydáno pro</b> - - + + Common Name (CN): Obecné jméno (CN): - - + + Organization (O): Organizace (O): - - + + Organizational Unit (OU): Jednotka organizace (OU): - + Serial Number: Sériové číslo: - + <b>Issued By</b> <b>Vydal</b> - + <b>Validity</b> <b>Platnost</b> - + Issued On: Vydáno dne: - + Expires On: Platný do: @@ -3019,18 +2906,6 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.New tab Nový panel - - Stop Tab - Zastavit panel - - - Reload Tab - Obnovit panel - - - Duplicate Tab - Duplikovat panel - &New tab @@ -3051,14 +2926,6 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.&Duplicate Tab &Duplikovat panel - - Unpin Tab - Odepnout panel - - - Pin Tab - Připnout panel - Reloa&d All Tabs @@ -3110,31 +2977,6 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.Bookmark &All Ta&bs Přidat &všechny panely do záložek - - Reload All Tabs - Close other tabs - Obnovit všechny panely - - - Bookmark This Tab - Přidat panel do záložek - - - Bookmark All Tabs - Přidat všechny panely do záložek - - - Restore Closed Tab - Obnovit zavřený panel - - - Close Other Tabs - Zavřít ostatní panely - - - Close - Zavřít - TabWidget @@ -3376,10 +3218,6 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.Search "%1 .." on &Google Hledat "%1 .." na &Googlu - - Copy &image address - Kopírovat adresu &obrázku - &Save image as... @@ -3400,10 +3238,6 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.&Reload &Obnovit - - &Stop - Z&astavit - Book&mark page @@ -3424,14 +3258,6 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.Show so&urce code Zobrazit zdrojový kó&d - - Show &info about site - Zobrazit &informace o stránce - - - Search "%1 .." on Google - Hledat "%1 .." na Googlu - No Named Page @@ -3449,97 +3275,20 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.New tab Nový panel - - Open link in new window - Otevřít odkaz v novém okně - - - Open link in new tab - Otevřít odkaz v novém panelu - - - Bookmark link - Přidat odkaz do záložek - - - Save link as... - Uložit odkaz jako... - Send link... Odeslat odkaz... - - Copy link address - Kopírovat adresu odkazu - - - Show image - Zobrazit obrázek - - - Copy image - Kopírovat obrázek - - - Copy image address - Coyp image address - Kopírovat adresu obrázku - - - Save image as... - Uložit obrázek jako... - Send image... Odeslat obrázek... - - Back - Zpět - - - Forward - Vpřed - - - Reload - Obnovit - - - Stop - Zastavit - - - Bookmark page - Přidat stránku do záložek - - - Save page as... - Uložit stránku jako... - Send page... Odeslat stránku... - - Select all - Vybrat vše - - - Show source code - Zobrazit zdrojový kód - - - Show info about site - Zobrazit informace o stránce - - - Show Web Inspector - Zobrazit Web Inspektor - diff --git a/translations/sk_SK.ts b/translations/sk_SK.ts index b06a638c7..368d93342 100644 --- a/translations/sk_SK.ts +++ b/translations/sk_SK.ts @@ -98,7 +98,7 @@ p, li { white-space: pre-wrap; } - + Add Rule Pridať pravidlo @@ -113,32 +113,32 @@ p, li { white-space: pre-wrap; } AdBlock - + Delete Rule Vymazať pravidlo - + Update completed Aktualizácia dokončena - + EasyList has been successfuly updated. EasyList bol úspešne aktualizovaný. - + Custom Rules Vlastné pravídlá - + Add Custom Rule Pridať vlastné pravidlo - + Please write your rule here: Napíšte nové pravidlo: @@ -150,10 +150,6 @@ p, li { white-space: pre-wrap; } AdBlock let you block any unwanted content on pages AdBlock blokuje nevyžiadaný obsah na stránkach - - Show AdBlock Settings - Zobraziť nastavenia AdBlocku - Show AdBlock &Settings @@ -167,7 +163,7 @@ p, li { white-space: pre-wrap; } Blocked URL (AdBlock Rule) - click to edit rule - Blokovaná adresa (AdBlock pravidlo) - kliknptím upravíte pravidlo + Blokovaná adresa (AdBlock pravidlo) - kliknutím upravíte pravidlo @@ -179,10 +175,6 @@ p, li { white-space: pre-wrap; } Learn About Writing &Rules Zistiť viac o písaní &pravidiel - - Learn About Writing Rules - Zistiť viac o písaní pravidiel - New tab @@ -276,6 +268,20 @@ p, li { white-space: pre-wrap; } Teraz nie + + BookmarkIcon + + + + Bookmark this Page + Pridať stránku do záložiek + + + + Edit this bookmark + Upraviť záložku + + BookmarksManager @@ -324,100 +330,151 @@ p, li { white-space: pre-wrap; } Nový panel - - - - - - - - + + + + + Bookmarks In Menu Záložky v menu - - - - - - - - + + + + + Bookmarks In ToolBar Panel záložiek - + Open link in actual &tab Otvoriť odkaz v &aktuálnom panely - + Open link in &new tab Otvoriť odkaz na &novom panely - + Move bookmark to &folder Presunúť záložku do &zložky - + &Close &Zavrieť - Open link in actual tab - Otvoriť odkaz v aktuálnom panely - - - Open link in new tab - Otvoriť odkaz na novom panely - - - Move bookmark to folder - Presunúť záložku do zložky - - - - - - - + + + Unsorted Bookmarks - Netriedené záložky + Nezotriedené záložky - Close - Zavrieť - - - + <b>Warning: </b>You already have this page bookmarked! <b>Upozornenie: </b>Túto stránku máte už v záložkách! - + Choose name and location of bookmark. Zvoľte meno a umiestnenie záložky. - + Add New Bookmark Pridať záložku - + Choose folder for bookmarks: Zvoľte zložku pre záložku: - + Bookmark All Tabs Pridať všetky panely do záložiek + + BookmarksModel + + + + + Bookmarks In Menu + Záložky v menu + + + + + + Bookmarks In ToolBar + Panel záložiek + + + + + Unsorted Bookmarks + Nezotriedené záložky + + + + BookmarksSideBar + + + Search... + Hľadať... + + + + New Tab + Nový panel + + + + Open link in actual &tab + Otvoriť odkaz v &aktuálnom panely + + + + Open link in &new tab + Otvoriť odkaz na &novom panely + + + + Move bookmark to &folder + Presunúť záložku do &zložky + + + + Unsorted Bookmarks + Nezotriedené záložky + + + + + + Bookmarks In Menu + Záložky v menu + + + + + + Bookmarks In ToolBar + Panel záložiek + + + + &Delete + &Odstrániť + + BookmarksToolbar @@ -425,34 +482,6 @@ p, li { white-space: pre-wrap; } Bookmarks Záložky - - Bookmark Current Page - Pridať stránku do záložiek - - - Bookmark All Tabs - Pridať všetky panely do záložiek - - - Organize Bookmarks - Organizovať záložky - - - Reload Toolbar - Obnoviť panel - - - Hide Most Visited - Skryť Najnavštevovanejšie - - - Show Most Visited - Zobraziť Najnavštevovanejšie - - - Hide Toolbar - Skryť panel - &Bookmark Current Page @@ -842,7 +871,7 @@ p, li { white-space: pre-wrap; } Go to Download Page - + Prejsť k sťahovanie stránke @@ -1071,44 +1100,32 @@ p, li { white-space: pre-wrap; } LocationBar - + Show informations about this page Zobraziť informácie o tejto stránke - + Add RSS from this page... Pridať RSS kanál... - - - Bookmark this Page - Pridať stránku do záložiek - - - + Enter URL address or search on Google.com Zadajte URL adresu alebo vyhľadajte na Google.com - + Loading... Nahrávam... - + Done Hotovo - - - Edit this bookmark - Upraviť záložku - - - + .co.uk Append domain name on ALT key = Should be different for every country .sk @@ -1857,10 +1874,6 @@ p, li { white-space: pre-wrap; } Help Pomocník - - Open File - Otvoriť súbor - View @@ -1868,22 +1881,16 @@ p, li { white-space: pre-wrap; } + Bookmarks Záložky + History História - - Save Page As... - Uložiť stránku ako... - - - Print - Tlačiť - Quit @@ -1894,35 +1901,11 @@ p, li { white-space: pre-wrap; } New Tab Nový panel - - Undo - Späť - - - Redo - Dopredu - - - Preferences - Predvoľby - - - About QupZilla - O QupZille - - - About Qt - O Qt - Close Tab Zavriet panel - - Find - Hľadať - IP Address of current page @@ -1948,34 +1931,6 @@ p, li { white-space: pre-wrap; } &Print &Tlačiť - - Cut - Vystrihnúť - - - Copy - Kopírovať - - - Paste - Prilepiť - - - Delete - Vymazať - - - Select All - Vybrať všetko - - - Navigation Toolbar - Navigačná lišta - - - Status Bar - Status bar - Stop @@ -2042,7 +1997,17 @@ p, li { white-space: pre-wrap; } Status &bar - + + Toolbars + + + + + Sidebars + + + + &Page Source Zdrojový &kód stránky @@ -2072,40 +2037,20 @@ p, li { white-space: pre-wrap; } Kódovan&ie znakov - + Zoom &In Prib&lížiť - + Zoom &Out Od&dialiť - Character Encoding - Kódovanie znakov - - - Zoom In - Priblížiť - - - Zoom Out - Oddialiť - - - + Reset Resetovať - - Page Source - Zdrojový kód stránky - - - Fullscreen - Celá obrazovka - Back @@ -2121,22 +2066,6 @@ p, li { white-space: pre-wrap; } Home Domov - - Show All History - Zobraziť celú hstóriu - - - Bookmark This Page - Pridať stránku do záložiek - - - Bookmark All Tabs - Pridať všetky panely do záložiek - - - Organize Bookmarks - Organizovať záložky - Close Window @@ -2153,60 +2082,25 @@ p, li { white-space: pre-wrap; } Poslať odkaz... - Report Bug - Nahlásiť chybu - - - Web Search - Hladať na webu - - - Page Info - Informácie o stránke - - - Download Manager - Správca sťahovania - - - AdBlock - AdBlock - - - Clear Recent History - Vymazať nedávnu históriu - - - Private Browsing - Súkromné prehliadanie - - + RSS Reader - RSS čítač + RSS čítač - + Other Ostatné - + Default Základné - + Start Private Browsing Spustiť anonymné prehliadanie - - Cookies Manager - Správca cookies - - - Bookmarks Toolbar - Panel záložiek - Navigation @@ -2228,162 +2122,159 @@ p, li { white-space: pre-wrap; } Súkromné prehliadanie je zapnuté - Menu Bar - Menu - - - + Bookmarks In ToolBar Panel záložiek - - + + Empty Prázdny - + New tab Nový panel - + Bookmark &This Page Pridať &stránku do záložiek - + Bookmark &All Tabs Pridať &všetky panely do záložiek - + Organize &Bookmarks &Organizovať záložky - + &Back &Späť - + &Forward &Dopredu - + &Home Do&mov - + Show &All History Zobraziť celú &históriu - + Report &Bug Nahlásiť &chybu - + About &Qt O &Qt - + &About QupZilla &O QupZille - + &Web Search Hladať na &webu - + Page &Info &Informácie o stránke - + &Download Manager Správca &sťahovania - + &Cookies Manager Správca &cookies - + &AdBlock &AdBlock - + RSS &Reader &RSS čítač - + Clear Recent &History Vymazať nedávnu &históriu - + &Private Browsing Súkromné prehlia&danie - + Pr&eferences Pr&edvoľby - + + Web Inspector Web inšpektor - + Open file... Otvoriť súbor... - + Are you sure you want to turn on private browsing? Ste si istý, že chcete zapnúť súkromné prehliadanie? - + When private browsing is turned on, some actions concerning your privacy will be disabled: So zapnutým súkromným prehliadaním sú niektoré akcie týkajúce sa súkromia vypnuté: - + Webpages are not added to the history. Stránky nie sú pridávané do histórie. - + New cookies are not stored, but current cookies can be accessed. Nové cookies nie sú prijímané, ale súčasné cookies sú zasielané. - + Your session won't be stored. Vaša relácia nebude uložená. - + Until you close the window, you can still click the Back and Forward buttons to return to the webpages you have opened. Dokiaľ nezavriete prehliadač, tak stále môžete používať tlačidla Späť a Dopredu k vráteniu sa na stránky, ktoré ste mali otvorené. - + There are still %1 open tabs and your session won't be stored. Are you sure to quit? Stále sú otvorené %1 panely a Vaša relácia nebude uložená. Skutočne chcete skončiť? @@ -2613,6 +2504,14 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.Žiadny výsledok. + + SideBar + + + Bookmarks + Záložky + + SiteInfo @@ -2666,65 +2565,65 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.Detaily - + Image Obrázok - + Image address Adresa obrázku - + <b>Preview</b> <b>Náhlad</b> - + <b>Issued To</b> <b>Vydané pre</b> - - + + Common Name (CN): Obyčajné meno (CN): - - + + Organization (O): Organizácia (O): - - + + Organizational Unit (OU): Organizačná jednotka (OU): - + Serial Number: Sériové číslo: - + <b>Issued By</b> <b>Vydal</b> - + <b>Validity</b> <b>Platnosť</b> - + Issued On: Vdané dňa: - + Expires On: Platný do: @@ -3007,14 +2906,6 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.New tab Nový panel - - Stop Tab - Zastaviť panel - - - Reload Tab - Obnoviť panel - &New tab @@ -3035,14 +2926,6 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.&Duplicate Tab - - Unpin Tab - Odopnúť panel - - - Pin Tab - Pripnúť panel - Reloa&d All Tabs @@ -3094,31 +2977,6 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.Bookmark &All Ta&bs Pridať &všetky panely do záložiek - - Bookmark This Tab - Založiť tento panel - - - Bookmark All Tabs - Založiť všetky panely - - - Restore Closed Tab - Obnoviť zavretý panel - - - Close Other Tabs - Zavrieť ostatné panely - - - Reload All Tabs - Restore closed tab - Obnoviť všetky panely - - - Close - Zavrieť - TabWidget @@ -3400,10 +3258,6 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.Show so&urce code Zobraziť zdro&jový kód - - Search "%1 .." on Google - Hľadať "%1 .." na Googli - No Named Page @@ -3421,96 +3275,20 @@ Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.New tab Nový panel - - Open link in new window - Otvoriť odkaz v novom okne - - - Open link in new tab - Otvoriť odkaz na novom panely - - - Bookmark link - Pridať odkaz do záložiek - - - Save link as... - Odoslať odkaz... - Send link... Odoslať odkaz... - - Copy link address - Kopírovať adresu odkazu - - - Show image - Zobraziť obrázok - - - Copy image - Kopírovať obrázok - - - Copy image address - Kopírovať adresu obrázku - - - Save image as... - Uložiť obrázok ako... - Send image... Odoslať obrázok... - - Back - Späť - - - Forward - Dopredu - - - Reload - Obnoviť - - - Stop - Zastaviť - - - Bookmark page - Pridať stránku do záložiek - - - Save page as... - Uložiť stránku ako... - Send page... Odoslať stránku... - - Select all - Vybrať všetko - - - Show source code - Zobraziť zdrojový kód - - - Show info about site - Zobraziť informácie o stránke - - - Show Web Inspector - Zobraziť Web inšpektora -