1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-21 17:52:10 +02:00

A lot of improvements in Browsing Library

huge optimalization for history sidebar + manager loading with a big
profile
This commit is contained in:
nowrep 2011-07-30 17:57:14 +02:00
parent 47a0dd058e
commit 3c6eee9964
42 changed files with 1020 additions and 486 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -60,7 +60,7 @@ AdBlockDialog::AdBlockDialog(QWidget *parent)
connect(adblockCheckBox, SIGNAL(toggled(bool)), m_manager, SLOT(setEnabled(bool)));
connect(addButton, SIGNAL(clicked()), this, SLOT(addCustomRule()));
connect(reloadButton, SIGNAL(clicked()), this, SLOT(updateSubscription()));
connect(search, SIGNAL(textChanged(QString)), treeWidget, SLOT(filterStringWithoutTopItems(QString)));
connect(search, SIGNAL(textChanged(QString)), treeWidget, SLOT(filterString(QString)));
connect(m_manager->subscription(), SIGNAL(changed()), this, SLOT(refreshAfterUpdate()));
connect(treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(customContextMenuRequested()));
@ -85,7 +85,7 @@ void AdBlockDialog::deleteRule()
int offset = item->whatsThis(0).toInt();
m_manager->subscription()->removeRule(offset);
delete item;
treeWidget->deleteItem(item);
refresh();
}
@ -203,12 +203,13 @@ void AdBlockDialog::addCustomRule()
AdBlockSubscription* subscription = m_manager->subscription();
int offset = subscription->addRule(AdBlockRule(newRule));
m_itemChangingBlock = true;
QTreeWidgetItem* item = new QTreeWidgetItem(m_customRulesItem);
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, newRule);
item->setWhatsThis(0, QString::number(offset));
item->setFlags(item->flags() | Qt::ItemIsEditable);
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
item->setCheckState(0, Qt::Checked);
treeWidget->appendToParentItem(m_customRulesItem, item);
m_itemChangingBlock = false;
}

View File

@ -240,7 +240,7 @@ QupZilla* MainApplication::getWindow()
void MainApplication::setStateChanged()
{
m_isStateChanged = true;
sendMessages(StateChanged, true);
sendMessages(HistoryStateChanged, true);
}
bool MainApplication::isStateChanged()
@ -365,7 +365,7 @@ void MainApplication::quitApplication()
AdBlockManager::instance()->save();
QFile::remove(getActiveProfil() + "WebpageIcons.db");
qDebug() << "Quitting application...";
// qDebug() << "Quitting application...";
quit();
}
@ -470,9 +470,6 @@ bool MainApplication::saveStateSlot()
{
if (m_websettings->testAttribute(QWebSettings::PrivateBrowsingEnabled) || m_isRestoring)
return false;
#ifndef QT_NO_DEBUG
qDebug() << "Saving state";
#endif
QSettings settings(m_activeProfil+"settings.ini", QSettings::IniFormat);
settings.beginGroup("SessionRestore");

View File

@ -54,7 +54,7 @@ public:
QString DATADIR;
explicit MainApplication(const QList<CommandLineOptions::ActionPair> &cmdActions, int &argc, char **argv);
enum MessageType{ SetAdBlockIconEnabled, CheckPrivateBrowsing, ReloadSettings, StateChanged };
enum MessageType{ SetAdBlockIconEnabled, CheckPrivateBrowsing, ReloadSettings, HistoryStateChanged, BookmarksChanged };
void loadSettings();
void reloadSettings() { loadSettings(); emit message(ReloadSettings, true); }

View File

@ -67,6 +67,7 @@ QupZilla::QupZilla(bool tryRestore, QUrl startUrl) :
QMainWindow(0)
,m_tryRestore(tryRestore)
,m_historyMenuChanged(true)
,m_bookmarksMenuChanged(true)
,m_startingUrl(startUrl)
,m_actionPrivateBrowsing(0)
,m_webInspectorDock(0)
@ -505,10 +506,14 @@ void QupZilla::receiveMessage(MainApplication::MessageType mes, bool state)
LocationBarSettings::instance()->loadSettings();
break;
case MainApplication::StateChanged:
case MainApplication::HistoryStateChanged:
m_historyMenuChanged = true;
break;
case MainApplication::BookmarksChanged:
m_bookmarksMenuChanged = true;
break;
default:
qWarning("Unresolved message sent! This could never happen!");
break;
@ -591,6 +596,10 @@ void QupZilla::aboutToShowHistoryNextMenu()
void QupZilla::aboutToShowBookmarksMenu()
{
if (!m_bookmarksMenuChanged)
return;
m_bookmarksMenuChanged = false;
m_menuBookmarks->clear();
m_menuBookmarks->addAction(tr("Bookmark &This Page"), this, SLOT(bookmarkPage()))->setShortcut(QKeySequence("Ctrl+D"));
m_menuBookmarks->addAction(tr("Bookmark &All Tabs"), this, SLOT(bookmarkAllTabs()));
@ -599,29 +608,31 @@ void QupZilla::aboutToShowBookmarksMenu()
if (m_tabWidget->count() == 1)
m_menuBookmarks->actions().at(1)->setEnabled(false);
QSqlQuery query;
query.exec("SELECT title, url FROM bookmarks WHERE folder='bookmarksMenu'");
query.exec("SELECT title, url, icon FROM bookmarks WHERE folder='bookmarksMenu'");
while(query.next()) {
QUrl url = query.value(1).toUrl();
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
QIcon icon = IconProvider::iconFromBase64(query.value(2).toByteArray());
if (title.length()>40) {
title.truncate(40);
title+="..";
}
m_menuBookmarks->addAction(_iconForUrl(url), title, this, SLOT(loadActionUrl()))->setData(url);
m_menuBookmarks->addAction(icon, title, this, SLOT(loadActionUrl()))->setData(url);
}
QMenu* folderBookmarks = new QMenu(tr("Bookmarks In ToolBar"), m_menuBookmarks);
folderBookmarks->setIcon(QIcon(style()->standardIcon(QStyle::SP_DirOpenIcon)));
query.exec("SELECT title, url FROM bookmarks WHERE folder='bookmarksToolbar'");
query.exec("SELECT title, url, icon FROM bookmarks WHERE folder='bookmarksToolbar'");
while(query.next()) {
QUrl url = query.value(1).toUrl();
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
QIcon icon = IconProvider::iconFromBase64(query.value(2).toByteArray());
if (title.length()>40) {
title.truncate(40);
title+="..";
}
folderBookmarks->addAction(_iconForUrl(url), title, this, SLOT(loadActionUrl()))->setData(url);
folderBookmarks->addAction(icon, title, this, SLOT(loadActionUrl()))->setData(url);
}
if (folderBookmarks->isEmpty())
folderBookmarks->addAction(tr("Empty"));
@ -633,15 +644,16 @@ void QupZilla::aboutToShowBookmarksMenu()
tempFolder->setIcon(QIcon(style()->standardIcon(QStyle::SP_DirOpenIcon)));
QSqlQuery query2;
query2.exec("SELECT title, url FROM bookmarks WHERE folder='"+query.value(0).toString()+"'");
query2.exec("SELECT title, url, icon FROM bookmarks WHERE folder='"+query.value(0).toString()+"'");
while(query2.next()) {
QUrl url = query2.value(1).toUrl();
QString title = query2.value(0).toString();
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
QIcon icon = IconProvider::iconFromBase64(query.value(2).toByteArray());
if (title.length()>40) {
title.truncate(40);
title+="..";
}
tempFolder->addAction(_iconForUrl(url), title, this, SLOT(loadActionUrl()))->setData(url);
tempFolder->addAction(icon, title, this, SLOT(loadActionUrl()))->setData(url);
}
if (tempFolder->isEmpty())
tempFolder->addAction(tr("Empty"));
@ -848,9 +860,9 @@ void QupZilla::bookmarkPage()
mApp->browsingLibrary()->bookmarksManager()->addBookmark(weView());
}
void QupZilla::addBookmark(const QUrl &url, const QString &title)
void QupZilla::addBookmark(const QUrl &url, const QString &title, const QIcon &icon)
{
mApp->browsingLibrary()->bookmarksManager()->insertBookmark(url, title);
mApp->browsingLibrary()->bookmarksManager()->insertBookmark(url, title, icon);
}
void QupZilla::bookmarkAllTabs()

View File

@ -89,7 +89,7 @@ public:
~QupZilla();
void refreshAddressBar();
void addBookmark(const QUrl &url, const QString &title);
void addBookmark(const QUrl &url, const QString &title, const QIcon &icon);
void installTranslator();
void loadSettings();
void showInspector();
@ -199,6 +199,7 @@ private:
bool m_tryRestore;
bool m_historyMenuChanged;
bool m_bookmarksMenuChanged;
QUrl m_startingUrl;
QUrl m_newtab;
QUrl m_homepage;

View File

@ -23,8 +23,8 @@
#include "bookmarkstoolbar.h"
#include "tabwidget.h"
#include "bookmarksmodel.h"
#include "qtwin.h"
#include "iconprovider.h"
#include "browsinglibrary.h"
BookmarksManager::BookmarksManager(QupZilla* mainClass, QWidget* parent) :
QWidget(parent)
@ -39,13 +39,6 @@ BookmarksManager::BookmarksManager(QupZilla* mainClass, QWidget* parent) :
const QRect &size = QWidget::geometry();
QWidget::move( (screen.width()-size.width())/2, (screen.height()-size.height())/2 );
#ifdef Q_WS_WIN
if (QtWin::isCompositionEnabled()) {
QtWin::extendFrameIntoClientArea(this);
ui->gridLayout->setContentsMargins(0, 0, 0, 0);
}
#endif
connect(ui->deleteB, SIGNAL(clicked()), this, SLOT(deleteItem()));
connect(ui->bookmarksTree, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(itemChanged(QTreeWidgetItem*)));
connect(ui->addFolder, SIGNAL(clicked()), this, SLOT(addFolder()));
@ -58,9 +51,18 @@ BookmarksManager::BookmarksManager(QupZilla* mainClass, QWidget* parent) :
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)));
connect(ui->optimizeDb, SIGNAL(clicked(QPoint)), this, SLOT(optimizeDb()));
ui->bookmarksTree->setDefaultItemShowMode(TreeWidget::ItemsExpanded);
//QTimer::singleShot(0, this, SLOT(refreshTable()));
}
void BookmarksManager::search(const QString &string)
{
ui->bookmarksTree->filterString(string);
}
QupZilla* BookmarksManager::getQupZilla()
{
if (!p_QupZilla)
@ -92,7 +94,7 @@ void BookmarksManager::itemChanged(QTreeWidgetItem* item)
QUrl url = QUrl(item->text(1));
int id = item->whatsThis(1).toInt();
delete item;
ui->bookmarksTree->deleteItem(item);
m_bookmarksModel->editBookmark(id, name, url, "");
}
@ -127,7 +129,7 @@ void BookmarksManager::deleteItem()
void BookmarksManager::addBookmark(WebView* view)
{
insertBookmark(view->url(), view->title());
insertBookmark(view->url(), view->title(), view->siteIcon());
}
void BookmarksManager::moveBookmark()
@ -198,12 +200,13 @@ void BookmarksManager::refreshTable()
ui->bookmarksTree->addTopLevelItem(newItem);
}
query.exec("SELECT title, url, id, folder FROM bookmarks");
query.exec("SELECT title, url, id, folder, icon 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();
QIcon icon = IconProvider::iconFromBase64(query.value(4).toByteArray());
QTreeWidgetItem* item;
if (folder == "bookmarksMenu")
folder = tr("Bookmarks In Menu");
@ -230,7 +233,7 @@ void BookmarksManager::refreshTable()
item->setToolTip(1, url.toEncoded());
item->setWhatsThis(1, QString::number(id));
item->setIcon(0, _iconForUrl(url));
item->setIcon(0, icon);
item->setFlags(item->flags() | Qt::ItemIsEditable);
ui->bookmarksTree->addTopLevelItem(item);
}
@ -248,13 +251,13 @@ void BookmarksManager::addBookmark(const BookmarksModel::Bookmark &bookmark)
item->setText(0, bookmark.title);
item->setText(1, bookmark.url.toEncoded());
item->setWhatsThis(1, QString::number(bookmark.id));
item->setIcon(0, _iconForUrl(bookmark.url));
item->setIcon(0, bookmark.icon);
item->setToolTip(0, bookmark.title);
item->setToolTip(1, bookmark.url.toEncoded());
item->setFlags(item->flags() | Qt::ItemIsEditable);
if (bookmark.folder != "unsorted")
ui->bookmarksTree->addToParentItem(translatedFolder, item);
ui->bookmarksTree->appendToParentItem(translatedFolder, item);
else
ui->bookmarksTree->addTopLevelItem(item);
m_isRefreshing = false;
@ -269,7 +272,7 @@ void BookmarksManager::removeBookmark(const BookmarksModel::Bookmark &bookmark)
return;
QTreeWidgetItem* item = list.at(0);
if (item && item->whatsThis(1) == QString::number(bookmark.id))
delete item;
ui->bookmarksTree->deleteItem(item);
} else {
QList<QTreeWidgetItem*> list = ui->bookmarksTree->findItems(BookmarksModel::toTranslatedFolder(bookmark.folder), Qt::MatchExactly);
if (list.count() == 0)
@ -282,7 +285,7 @@ void BookmarksManager::removeBookmark(const BookmarksModel::Bookmark &bookmark)
if (!item)
continue;
if (item->text(0) == bookmark.title && item->whatsThis(1) == QString::number(bookmark.id)) {
delete item;
ui->bookmarksTree->deleteItem(item);
return;
}
}
@ -309,10 +312,10 @@ void BookmarksManager::removeFolder(const QString &name)
{
QTreeWidgetItem* item = ui->bookmarksTree->findItems(name, Qt::MatchExactly).at(0);
if (item)
delete item;
ui->bookmarksTree->deleteItem(item);
}
void BookmarksManager::insertBookmark(const QUrl &url, const QString &title)
void BookmarksManager::insertBookmark(const QUrl &url, const QString &title, const QIcon &icon)
{
if (url.isEmpty() || title.isEmpty())
return;
@ -356,7 +359,7 @@ void BookmarksManager::insertBookmark(const QUrl &url, const QString &title)
if (edit->text().isEmpty())
return;
m_bookmarksModel->saveBookmark(url, edit->text(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
m_bookmarksModel->saveBookmark(url, edit->text(), icon, BookmarksModel::fromTranslatedFolder(combo->currentText()));
delete dialog;
}
@ -399,12 +402,21 @@ void BookmarksManager::insertAllTabs()
if (view->url().isEmpty())
continue;
m_bookmarksModel->saveBookmark(view->url(), view->title(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
m_bookmarksModel->saveBookmark(view->url(), view->title(), view->siteIcon(),BookmarksModel::fromTranslatedFolder(combo->currentText()));
}
delete dialog;
}
void BookmarksManager::optimizeDb()
{
BrowsingLibrary* b = (BrowsingLibrary*) parentWidget();
if (!b)
return;
b->optimizeDatabase();
}
BookmarksManager::~BookmarksManager()
{
delete ui;

View File

@ -41,14 +41,17 @@ public:
explicit BookmarksManager(QupZilla* mainClass, QWidget* parent = 0);
~BookmarksManager();
void addBookmark(WebView* view);
void insertBookmark(const QUrl &url, const QString &title);
void insertBookmark(const QUrl &url, const QString &title, const QIcon &icon);
void setMainWindow(QupZilla* window);
void search(const QString &string);
public slots:
void refreshTable();
void insertAllTabs();
private slots:
void optimizeDb();
void deleteItem();
void itemChanged(QTreeWidgetItem* item);
void addFolder();

View File

@ -18,7 +18,7 @@
<normaloff>:/icons/qupzilla.png</normaloff>:/icons/qupzilla.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="5">
<item row="0" column="0" colspan="6">
<widget class="TreeWidget" name="bookmarksTree">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
@ -71,6 +71,20 @@
</property>
</spacer>
</item>
<item row="1" column="5">
<widget class="ClickableLabel" name="optimizeDb">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">color: blue;
text-decoration: underline;</string>
</property>
<property name="text">
<string>Optimize Database</string>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
@ -79,6 +93,11 @@
<extends>QTreeWidget</extends>
<header>treewidget.h</header>
</customwidget>
<customwidget>
<class>ClickableLabel</class>
<extends>QLabel</extends>
<header>clickablelabel.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../data/icons.qrc"/>

View File

@ -18,6 +18,7 @@
#include "bookmarksmodel.h"
#include "mainapplication.h"
#include "webview.h"
#include "iconprovider.h"
// SQLite DB -> table bookmarks + folders
// Unique in bookmarks table is id
@ -100,7 +101,7 @@ BookmarksModel::Bookmark BookmarksModel::getBookmark(int id)
{
Bookmark bookmark;
QSqlQuery query;
query.prepare("SELECT url, title, folder FROM bookmarks WHERE id=?");
query.prepare("SELECT url, title, folder, icon FROM bookmarks WHERE id=?");
query.bindValue(0, id);
query.exec();
if (query.next()) {
@ -108,20 +109,22 @@ BookmarksModel::Bookmark BookmarksModel::getBookmark(int id)
bookmark.url = query.value(0).toUrl();
bookmark.title = query.value(1).toString();
bookmark.folder = query.value(2).toString();
bookmark.icon = IconProvider::iconFromBase64(query.value(3).toByteArray());
}
return bookmark;
}
bool BookmarksModel::saveBookmark(const QUrl &url, const QString &title, const QString &folder)
bool BookmarksModel::saveBookmark(const QUrl &url, const QString &title, const QIcon &icon, const QString &folder)
{
if (url.isEmpty() || title.isEmpty() || folder.isEmpty())
return false;
QSqlQuery query;
query.prepare("INSERT INTO bookmarks (url, title, folder) VALUES (?,?,?)");
query.prepare("INSERT INTO bookmarks (url, title, folder, icon) VALUES (?,?,?,?)");
query.bindValue(0, url.toString());
query.bindValue(1, title);
query.bindValue(2, folder);
query.bindValue(3, IconProvider::iconToBase64(icon));
if (!query.exec())
return false;
@ -131,13 +134,15 @@ bool BookmarksModel::saveBookmark(const QUrl &url, const QString &title, const Q
bookmark.url = url;
bookmark.title = title;
bookmark.folder = folder;
bookmark.icon = icon;
emit bookmarkAdded(bookmark);
mApp->sendMessages(MainApplication::BookmarksChanged, true);
return true;
}
bool BookmarksModel::saveBookmark(WebView *view, const QString &folder)
{
return saveBookmark(view->url(), view->title(), folder);
return saveBookmark(view->url(), view->title(), view->siteIcon(), folder);
}
bool BookmarksModel::removeBookmark(int id)
@ -154,11 +159,13 @@ bool BookmarksModel::removeBookmark(int id)
bookmark.url = query.value(0).toUrl();
bookmark.title = query.value(1).toString();
bookmark.folder = query.value(2).toString();
bookmark.icon = IconProvider::iconFromBase64(query.value(3).toByteArray());
if (!query.exec("DELETE FROM bookmarks WHERE id = " + QString::number(id)))
return false;
emit bookmarkDeleted(bookmark);
mApp->sendMessages(MainApplication::BookmarksChanged, true);
return true;
}
@ -197,7 +204,7 @@ bool BookmarksModel::editBookmark(int id, const QString &title, const QUrl &url,
if (title.isEmpty() && url.isEmpty() && folder.isEmpty())
return false;
QSqlQuery query;
if (!query.exec("SELECT title, url, folder FROM bookmarks WHERE id = "+QString::number(id)))
if (!query.exec("SELECT title, url, folder, icon FROM bookmarks WHERE id = "+QString::number(id)))
return false;
query.next();
@ -207,12 +214,14 @@ bool BookmarksModel::editBookmark(int id, const QString &title, const QUrl &url,
before.title = query.value(0).toString();
before.url = query.value(1).toUrl();
before.folder = query.value(2).toString();
before.icon = IconProvider::iconFromBase64(query.value(3).toByteArray());
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;
after.icon = before.icon;
query.prepare("UPDATE bookmarks SET title=?, url=?, folder=? WHERE id = ?");
query.bindValue(0, after.title);
@ -224,6 +233,7 @@ bool BookmarksModel::editBookmark(int id, const QString &title, const QUrl &url,
return false;
emit bookmarkEdited(before, after);
mApp->sendMessages(MainApplication::BookmarksChanged, true);
return true;
}
@ -236,6 +246,7 @@ bool BookmarksModel::createFolder(const QString &name)
return false;
emit folderAdded(name);
mApp->sendMessages(MainApplication::BookmarksChanged, true);
return true;
}
@ -263,6 +274,7 @@ bool BookmarksModel::removeFolder(const QString &name)
return false;
emit folderDeleted(name);
mApp->sendMessages(MainApplication::BookmarksChanged, true);
return true;
}

View File

@ -22,6 +22,7 @@
#include <QUrl>
#include <QSettings>
#include <QSqlQuery>
#include <QIcon>
class WebView;
class BookmarksModel : public QObject
@ -35,6 +36,7 @@ public:
QString title;
QString folder;
QUrl url;
QIcon icon;
};
void loadSettings();
@ -46,7 +48,7 @@ public:
int bookmarkId(const QUrl &url, const QString &title, const QString &folder);
Bookmark getBookmark(int id);
bool saveBookmark(const QUrl &url, const QString &title, const QString &folder = "unsorted");
bool saveBookmark(const QUrl &url, const QString &title, const QIcon &icon, const QString &folder = "unsorted");
bool saveBookmark(WebView* view, const QString &folder = "unsorted");
bool removeBookmark(int id);

View File

@ -98,7 +98,7 @@ void BookmarksToolbar::addBookmark(const BookmarksModel::Bookmark &bookmark)
action->setText(title);
action->setData(bookmark.url);
action->setIcon(_iconForUrl(bookmark.url));
action->setIcon(bookmark.icon);
QToolButton* button = new QToolButton(this);
button->setDefaultAction(action);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@ -153,7 +153,7 @@ void BookmarksToolbar::bookmarkEdited(const BookmarksModel::Bookmark &before, co
action->setText(title);
action->setData(after.url);
action->setIcon(_iconForUrl(after.url));
action->setIcon(after.icon);
button->setToolTip(after.url.toEncoded());
button->setWhatsThis(after.title);
}
@ -165,10 +165,11 @@ void BookmarksToolbar::refreshBookmarks()
{
clear();
QSqlQuery query;
query.exec("SELECT title, url FROM bookmarks WHERE folder='bookmarksToolbar'");
query.exec("SELECT title, url, icon FROM bookmarks WHERE folder='bookmarksToolbar'");
while(query.next()) {
QUrl url = query.value(1).toUrl();
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
QIcon icon = IconProvider::iconFromBase64(query.value(2).toByteArray());
QString title_ = title;
QAction* action = new QAction(this);
if (title.length()>15) {
@ -178,7 +179,7 @@ void BookmarksToolbar::refreshBookmarks()
action->setText(title);
action->setData(url);
action->setIcon(_iconForUrl(url));
action->setIcon(icon);
QToolButton* button = new QToolButton(this);
button->setDefaultAction(action);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@ -219,16 +220,4 @@ void BookmarksToolbar::refreshMostVisited()
}
m_menuMostVisited->addAction(_iconForUrl(entry.url), entry.title, p_QupZilla, SLOT(loadActionUrl()))->setData(entry.url);
}
// QSqlQuery query;
// query.exec("SELECT title, url FROM history ORDER BY count DESC LIMIT 10");
// while(query.next()) {
// QUrl url = query.value(1).toUrl();
// QString title = query.value(0).toString();
// if (title.length()>40) {
// title.truncate(40);
// title+="..";
// }
// m_menuMostVisited->addAction(_iconForUrl(url), title, p_QupZilla, SLOT(loadActionUrl()))->setData(url);
// }
}

View File

@ -38,9 +38,11 @@ CookieManager::CookieManager(QWidget* parent) :
connect(ui->removeCookie, SIGNAL(clicked()), this, SLOT(removeCookie()));
connect(ui->close, SIGNAL(clicked(QAbstractButton*)), this, SLOT(hide()));
connect(ui->search, SIGNAL(returnPressed()), this, SLOT(search()));
connect(ui->search, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(search()));
// connect(ui->search, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(search()));
connect(ui->search, SIGNAL(textChanged(QString)), ui->cookieTree, SLOT(filterString(QString)));
ui->search->setInactiveText(tr("Search"));
ui->cookieTree->setDefaultItemShowMode(TreeWidget::ItemsCollapsed);
}
void CookieManager::removeAll()
@ -68,7 +70,7 @@ void CookieManager::removeCookie()
m_cookies.removeOne(cok);
}
delete current;
ui->cookieTree->deleteItem(current);
mApp->cookieJar()->setAllCookies(m_cookies);
refreshTable(false);
return;
@ -183,6 +185,5 @@ void CookieManager::search()
CookieManager::~CookieManager()
{
qDebug() << __FUNCTION__ << "called";
delete ui;
}

View File

@ -36,7 +36,7 @@
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QTreeWidget" name="cookieTree">
<widget class="TreeWidget" name="cookieTree">
<property name="sortingEnabled">
<bool>true</bool>
</property>
@ -242,6 +242,11 @@
<extends>QLabel</extends>
<header>squeezelabelv2.h</header>
</customwidget>
<customwidget>
<class>TreeWidget</class>
<extends>QTreeWidget</extends>
<header>treewidget.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../data/icons.qrc"/>

View File

@ -18,9 +18,9 @@
#include "historymanager.h"
#include "ui_historymanager.h"
#include "qupzilla.h"
#include "qtwin.h"
#include "historymodel.h"
#include "iconprovider.h"
#include "browsinglibrary.h"
HistoryManager::HistoryManager(QupZilla* mainClass, QWidget* parent) :
QWidget(parent)
@ -29,29 +29,24 @@ HistoryManager::HistoryManager(QupZilla* mainClass, QWidget* parent) :
,m_historyModel(mApp->history())
{
ui->setupUi(this);
ui->historyTree->setDefaultItemShowMode(TreeWidget::ItemsCollapsed);
ui->historyTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
//CENTER on scren
const QRect screen = QApplication::desktop()->screenGeometry();
const QRect &size = QWidget::geometry();
QWidget::move( (screen.width()-size.width())/2, (screen.height()-size.height())/2 );
#ifdef Q_WS_WIN
if (QtWin::isCompositionEnabled()) {
QtWin::extendFrameIntoClientArea(this);
ui->gridLayout->setContentsMargins(0, 0, 0, 0);
}
#endif
connect(ui->historyTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT(itemDoubleClicked(QTreeWidgetItem*)));
connect(ui->deleteB, SIGNAL(clicked()), this, SLOT(deleteItem()));
connect(ui->clearAll, SIGNAL(clicked()), this, SLOT(clearHistory()));
// connect(ui->search, SIGNAL(textChanged(QString)), ui->historyTree, SLOT(filterStringWithoutTopItems(QString)));
connect(ui->historyTree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenuRequested(const QPoint &)));
connect(ui->historyTree, SIGNAL(itemControlClicked(QTreeWidgetItem*)), this, SLOT(itemControlClicked(QTreeWidgetItem*)));
connect(m_historyModel, SIGNAL(historyEntryAdded(HistoryModel::HistoryEntry)), this, SLOT(historyEntryAdded(HistoryModel::HistoryEntry)));
connect(m_historyModel, SIGNAL(historyEntryDeleted(HistoryModel::HistoryEntry)), this, SLOT(historyEntryDeleted(HistoryModel::HistoryEntry)));
connect(m_historyModel, SIGNAL(historyClear()), ui->historyTree, SLOT(clear()));
connect(ui->optimizeDb, SIGNAL(clicked(QPoint)), this, SLOT(optimizeDb()));
//QTimer::singleShot(0, this, SLOT(refreshTable()));
ui->historyTree->setFocus();
@ -71,13 +66,6 @@ void HistoryManager::setMainWindow(QupZilla* window)
}
void HistoryManager::itemDoubleClicked(QTreeWidgetItem* item)
{
if (!item || item->text(1).isEmpty())
return;
getQupZilla()->loadAddress(QUrl(item->text(1)));
}
void HistoryManager::itemControlClicked(QTreeWidgetItem* item)
{
if (!item || item->text(1).isEmpty())
return;
@ -114,32 +102,53 @@ void HistoryManager::contextMenuRequested(const QPoint &position)
void HistoryManager::deleteItem()
{
QTreeWidgetItem* item = ui->historyTree->currentItem();
if (!item || item->text(1).isEmpty())
return;
QApplication::setOverrideCursor(Qt::WaitCursor);
foreach (QTreeWidgetItem* item, ui->historyTree->selectedItems()) {
if (!item)
return;
int id = item->whatsThis(1).toInt();
m_historyModel->deleteHistoryEntry(id);
if (!item->parent()) {
for (int i = 0; i < item->childCount(); i++) {
QTreeWidgetItem* children = item->child(i);
int id = children->whatsThis(1).toInt();
m_historyModel->deleteHistoryEntry(id);
}
ui->historyTree->deleteItem(item);
} else {
int id = item->whatsThis(1).toInt();
m_historyModel->deleteHistoryEntry(id);
}
}
QApplication::restoreOverrideCursor();
}
void HistoryManager::historyEntryAdded(const HistoryModel::HistoryEntry &entry)
{
QLocale locale(getQupZilla()->activeLanguage().remove(".qm"));
QDate todayDate = QDate::currentDate();
QDate startOfWeekDate = todayDate.addDays(1 - todayDate.dayOfWeek());
QString localDate; //date.toString("dddd d. MMMM yyyy");
QString month = locale.monthName(entry.date.toString("M").toInt());
localDate = entry.date.toString(" d. ") + month + entry.date.toString(" yyyy");
QDate date = entry.date.date();
QString localDate;
QTreeWidgetItem* item;
if (date == todayDate)
localDate = tr("Today");
else if (date >= startOfWeekDate)
localDate = tr("This Week");
else if (date.month() == todayDate.month())
localDate = tr("This Month");
else
localDate = QString("%1 %2").arg(HistoryModel::titleCaseLocalizedMonth(date.month()), QString::number(date.year()));
QTreeWidgetItem* item = new QTreeWidgetItem();
QTreeWidgetItem* parentItem;
QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0);
if (findParent.count() == 1) {
item = new QTreeWidgetItem(findParent.at(0));
parentItem = findParent.at(0);
} else {
QTreeWidgetItem* newParent = new QTreeWidgetItem(ui->historyTree);
newParent->setText(0, localDate);
newParent->setIcon(0, QIcon(":/icons/menu/history_entry.png"));
ui->historyTree->addTopLevelItem(newParent);
item = new QTreeWidgetItem(newParent);
parentItem = new QTreeWidgetItem();
parentItem->setText(0, localDate);
parentItem->setIcon(0, QIcon(":/icons/menu/history_entry.png"));
ui->historyTree->addTopLevelItem(parentItem);
}
item->setText(0, entry.title);
@ -149,7 +158,7 @@ void HistoryManager::historyEntryAdded(const HistoryModel::HistoryEntry &entry)
item->setWhatsThis(1, QString::number(entry.id));
item->setIcon(0, _iconForUrl(entry.url));
ui->historyTree->addTopLevelItem(item);
ui->historyTree->prependToParentItem(parentItem, item);
}
void HistoryManager::historyEntryDeleted(const HistoryModel::HistoryEntry &entry)
@ -160,7 +169,7 @@ void HistoryManager::historyEntryDeleted(const HistoryModel::HistoryEntry &entry
continue;
if (item->whatsThis(1).toInt() != entry.id)
continue;
delete item;
ui->historyTree->deleteItem(item);
return;
}
}
@ -181,8 +190,8 @@ void HistoryManager::refreshTable()
ui->historyTree->setUpdatesEnabled(false);
ui->historyTree->clear();
QLocale locale(getQupZilla()->activeLanguage().remove(".qm"));
QDate todayDate = QDate::currentDate();
QDate startOfWeekDate = todayDate.addDays(1 - todayDate.dayOfWeek());
QSqlQuery query;
query.exec("SELECT title, url, id, date FROM history ORDER BY date DESC");
@ -190,15 +199,19 @@ void HistoryManager::refreshTable()
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
int id = query.value(2).toInt();
qint64 unixDate = query.value(3).toLongLong();
QDateTime date = QDateTime();
date = date.fromMSecsSinceEpoch(unixDate);
QDate date = QDateTime::fromMSecsSinceEpoch(query.value(3).toLongLong()).date();
QString localDate;
QString localDate; //date.toString("dddd d. MMMM yyyy");
QString month = locale.monthName(date.toString("M").toInt());
localDate = date.toString(" d. ") + month + date.toString(" yyyy");
if (date == todayDate)
localDate = tr("Today");
else if (date >= startOfWeekDate)
localDate = tr("This Week");
else if (date.month() == todayDate.month())
localDate = tr("This Month");
else
localDate = QString("%1 %2").arg(HistoryModel::titleCaseLocalizedMonth(date.month()), QString::number(date.year()));
QTreeWidgetItem* item;
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0);
if (findParent.count() == 1) {
item = new QTreeWidgetItem(findParent.at(0));
@ -225,6 +238,8 @@ void HistoryManager::refreshTable()
void HistoryManager::search(const QString &searchText)
{
ui->historyTree->filterString(searchText);
return;
if (searchText.isEmpty()) {
refreshTable();
return;
@ -251,6 +266,15 @@ void HistoryManager::search(const QString &searchText)
ui->historyTree->setUpdatesEnabled(true);
}
void HistoryManager::optimizeDb()
{
BrowsingLibrary* b = (BrowsingLibrary*) parentWidget();
if (!b)
return;
b->optimizeDatabase();
}
HistoryManager::~HistoryManager()
{
delete ui;

View File

@ -44,12 +44,12 @@ public slots:
void search(const QString &searchText);
private slots:
void optimizeDb();
void itemDoubleClicked(QTreeWidgetItem* item);
void deleteItem();
void clearHistory();
void contextMenuRequested(const QPoint &position);
void loadInNewTab();
void itemControlClicked(QTreeWidgetItem* item);
void historyEntryAdded(const HistoryModel::HistoryEntry &entry);
void historyEntryDeleted(const HistoryModel::HistoryEntry &entry);

View File

@ -18,7 +18,7 @@
<normaloff>:/icons/qupzilla.png</normaloff>:/icons/qupzilla.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3">
<item row="0" column="0" colspan="4">
<widget class="TreeWidget" name="historyTree">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
@ -71,6 +71,20 @@
</property>
</spacer>
</item>
<item row="1" column="3">
<widget class="ClickableLabel" name="optimizeDb">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">color: blue;
text-decoration: underline;</string>
</property>
<property name="text">
<string>Optimize Database</string>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
@ -79,6 +93,11 @@
<extends>QTreeWidget</extends>
<header>treewidget.h</header>
</customwidget>
<customwidget>
<class>ClickableLabel</class>
<extends>QLabel</extends>
<header>clickablelabel.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../data/icons.qrc"/>

View File

@ -18,6 +18,7 @@
#include "historymodel.h"
#include "webview.h"
#include "qupzilla.h"
#include "iconprovider.h"
HistoryModel::HistoryModel(QupZilla* mainClass, QObject* parent)
: QObject(parent)
@ -78,7 +79,7 @@ int HistoryModel::addHistoryEntry(WebView* view)
if (!m_isSaving)
return -2;
QString url = view->url().toString();
QString url = view->url().toEncoded();
QString title = view->title();
return addHistoryEntry(url, title);
}
@ -163,3 +164,36 @@ bool HistoryModel::isSaving()
{
return m_isSaving;
}
QString HistoryModel::titleCaseLocalizedMonth(int month)
{
switch (month) {
case 1:
return tr("January");
case 2:
return tr("February");
case 3:
return tr("March");
case 4:
return tr("April");
case 5:
return tr("May");
case 6:
return tr("June");
case 7:
return tr("July");
case 8:
return tr("August");
case 9:
return tr("September");
case 10:
return tr("October");
case 11:
return tr("November");
case 12:
return tr("December");
default:
qWarning("Month number out of range!");
return QString();
}
}

View File

@ -22,10 +22,12 @@
#include <QSqlQuery>
#include <QDateTime>
#include <QFile>
#include <QIcon>
#include <QUrl>
class QupZilla;
class WebView;
class QIcon;
class HistoryModel : public QObject
{
Q_OBJECT
@ -40,6 +42,8 @@ public:
QString title;
};
static QString titleCaseLocalizedMonth(int month);
int addHistoryEntry(WebView* view);
int addHistoryEntry(const QString &url, QString &title);
bool deleteHistoryEntry(int index);

View File

@ -1,9 +1,27 @@
/* ============================================================
* 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 "browsinglibrary.h"
#include "ui_browsinglibrary.h"
#include "historymanager.h"
#include "bookmarksmanager.h"
#include "rssmanager.h"
#include "mainapplication.h"
#include "downloaditem.h"
BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent)
: QWidget(parent)
@ -16,7 +34,10 @@ BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent)
, m_rssLoaded(false)
{
ui->setupUi(this);
ui->searchLine->hide();
QSettings settings(mApp->getActiveProfil()+"settings.ini", QSettings::IniFormat);
settings.beginGroup("BrowsingLibrary");
resize(settings.value("size", QSize(760, 470)).toSize());
settings.endGroup();
//CENTER on scren
const QRect screen = QApplication::desktop()->screenGeometry();
@ -29,6 +50,7 @@ BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent)
ui->tabs->SetMode(FancyTabWidget::Mode_LargeSidebar);
ui->tabs->SetBackgroundPixmap(QPixmap(":icons/other/background.png"));
ui->tabs->setFocus();
connect(ui->tabs, SIGNAL(CurrentChanged(int)), this, SLOT(currentIndexChanged(int)));
connect(ui->searchLine, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(search()));
@ -43,6 +65,7 @@ void BrowsingLibrary::currentIndexChanged(int index)
m_historyLoaded = true;
}
ui->searchLine->show();
search();
break;
case 1:
@ -50,7 +73,8 @@ void BrowsingLibrary::currentIndexChanged(int index)
m_bookmarksManager->refreshTable();
m_bookmarksLoaded = true;
}
ui->searchLine->hide();
ui->searchLine->show();
search();
break;
case 2:
@ -68,7 +92,10 @@ void BrowsingLibrary::currentIndexChanged(int index)
void BrowsingLibrary::search()
{
m_historyManager->search(ui->searchLine->text());
if (ui->tabs->current_index() == 0)
m_historyManager->search(ui->searchLine->text());
else
m_bookmarksManager->search(ui->searchLine->text());
}
void BrowsingLibrary::showHistory(QupZilla* mainClass)
@ -81,6 +108,7 @@ void BrowsingLibrary::showHistory(QupZilla* mainClass)
m_historyManager->refreshTable();
m_historyLoaded = true;
}
raise();
}
void BrowsingLibrary::showBookmarks(QupZilla* mainClass)
@ -93,6 +121,7 @@ void BrowsingLibrary::showBookmarks(QupZilla* mainClass)
m_bookmarksManager->refreshTable();
m_bookmarksLoaded = true;
}
raise();
}
void BrowsingLibrary::showRSS(QupZilla* mainClass)
@ -102,6 +131,27 @@ void BrowsingLibrary::showRSS(QupZilla* mainClass)
m_rssManager->setMainWindow(mainClass);
m_rssManager->refreshTable();
m_rssLoaded = true;
raise();
}
void BrowsingLibrary::optimizeDatabase()
{
mApp->setOverrideCursor(Qt::WaitCursor);
QString profilePath = mApp->getActiveProfil();
QString sizeBefore = DownloadItem::fileSizeToString(QFileInfo(profilePath+"/browsedata.db").size());
mApp->history()->optimizeHistory();
QString sizeAfter = DownloadItem::fileSizeToString(QFileInfo(profilePath+"/browsedata.db").size());
mApp->restoreOverrideCursor();
QMessageBox::information(this, tr("Database Optimized"), tr("Database successfuly optimized.<br/><br/><b>Database Size Before: </b>%1<br/><b>Databse Size After: </b>%2").arg(sizeBefore, sizeAfter));
}
void BrowsingLibrary::closeEvent(QCloseEvent *e)
{
QSettings settings(mApp->getActiveProfil()+"settings.ini", QSettings::IniFormat);
settings.beginGroup("BrowsingLibrary");
settings.setValue("size", size());
settings.endGroup();
e->accept();
}
BrowsingLibrary::~BrowsingLibrary()

View File

@ -1,8 +1,27 @@
/* ============================================================
* 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/>.
* ============================================================ */
#ifndef LIBRARY_H
#define LIBRARY_H
#include <QWidget>
#include <QDesktopWidget>
#include <QFileInfo>
#include <QCloseEvent>
namespace Ui {
class BrowsingLibrary;
@ -24,6 +43,8 @@ public:
void showBookmarks(QupZilla* mainClass);
void showRSS(QupZilla* mainClass);
void optimizeDatabase();
HistoryManager* historyManager() { return m_historyManager; }
BookmarksManager* bookmarksManager() { return m_bookmarksManager; }
RSSManager* rssManager() { return m_rssManager; }
@ -33,6 +54,7 @@ private slots:
void search();
private:
void closeEvent(QCloseEvent *e);
Ui::BrowsingLibrary *ui;
HistoryManager* m_historyManager;
BookmarksManager* m_bookmarksManager;

View File

@ -49,6 +49,7 @@ void ClearPrivateData::clearFlash()
void ClearPrivateData::dialogAccepted()
{
QApplication::setOverrideCursor(Qt::WaitCursor);
if (ui->history->isChecked()) {
QDateTime dateTime = QDateTime::currentDateTime();
qint64 nowMS = QDateTime::currentMSecsSinceEpoch();
@ -86,5 +87,6 @@ void ClearPrivateData::dialogAccepted()
mApp->webSettings()->clearIconDatabase();
mApp->iconProvider()->clearIconDatabase();
}
QApplication::restoreOverrideCursor();
close();
}

View File

@ -102,7 +102,6 @@ void AutoFillManager::removeExcept()
return;
QString id = curItem->whatsThis(0);
QSqlQuery query;
qDebug() << id;
query.exec("DELETE FROM autofill_exceptions WHERE id="+id);
loadPasswords();
}

View File

@ -21,8 +21,8 @@
#include "tabwidget.h"
#include "mainapplication.h"
#include "treewidget.h"
#include "qtwin.h"
#include "iconprovider.h"
#include "browsinglibrary.h"
RSSManager::RSSManager(QupZilla* mainClass, QWidget* parent) :
QWidget(parent)
@ -35,18 +35,13 @@ RSSManager::RSSManager(QupZilla* mainClass, QWidget* parent) :
const QRect &size = geometry();
QWidget::move( (screen.width()-size.width())/2, (screen.height()-size.height())/2 );
#ifdef Q_WS_WIN
if (QtWin::isCompositionEnabled()) {
QtWin::extendFrameIntoClientArea(this);
layout()->setContentsMargins(0, 0, 0, 0);
}
#endif
ui->tabWidget->setElideMode(Qt::ElideRight);
m_networkManager = new QNetworkAccessManager();
connect(ui->reload, SIGNAL(clicked()), this, SLOT(reloadFeed()));
connect(ui->deletebutton, SIGNAL(clicked()), this, SLOT(deleteFeed()));
connect(ui->edit, SIGNAL(clicked()), this, SLOT(editFeed()));
connect(ui->optimizeDb, SIGNAL(clicked(QPoint)), this, SLOT(optimizeDb()));
}
QupZilla* RSSManager::getQupZilla()
@ -66,11 +61,12 @@ void RSSManager::refreshTable()
{
QSqlQuery query;
ui->tabWidget->clear();
query.exec("SELECT address, title FROM rss");
query.exec("SELECT address, title, icon FROM rss");
int i = 0;
while (query.next()) {
QUrl address = query.value(0).toUrl();
QString title = query.value(1).toString();
QIcon icon = IconProvider::iconFromBase64(query.value(2).toByteArray());
TreeWidget* tree = new TreeWidget();
tree->setHeaderLabel(tr("News"));
tree->setContextMenuPolicy(Qt::CustomContextMenu);
@ -84,8 +80,6 @@ void RSSManager::refreshTable()
item->setText(0, tr("Loading..."));
tree->addTopLevelItem(item);
QIcon icon = _iconForUrl(address);
ui->tabWidget->setTabIcon(i, icon );
beginToLoadSlot(address);
i++;
@ -308,16 +302,23 @@ void RSSManager::finished(QNetworkReply* reply)
m_networkReplies.append(reply);
}
bool RSSManager::addRssFeed(const QString &address, const QString &title)
bool RSSManager::addRssFeed(const QString &address, const QString &title, const QIcon &icon)
{
if (address.isEmpty())
return false;
QSqlQuery query;
query.exec("SELECT id FROM rss WHERE address='"+address+"'");
if (!query.next()) {
query.prepare("INSERT INTO rss (address, title) VALUES(?,?)");
QByteArray iconData;
if (icon.pixmap(16,16).toImage() == QWebSettings::webGraphic(QWebSettings::DefaultFrameIconGraphic).toImage())
iconData = IconProvider::iconToBase64(QIcon(":icons/other/feed.png"));
else
iconData = IconProvider::iconToBase64(icon);
query.prepare("INSERT INTO rss (address, title, icon) VALUES(?,?,?)");
query.bindValue(0, address);
query.bindValue(1, title);
query.bindValue(2, iconData);
query.exec();
return true;
}
@ -326,6 +327,14 @@ bool RSSManager::addRssFeed(const QString &address, const QString &title)
return false;
}
void RSSManager::optimizeDb()
{
BrowsingLibrary* b = (BrowsingLibrary*) parentWidget();
if (!b)
return;
b->optimizeDatabase();
}
RSSManager::~RSSManager()
{
delete ui;

View File

@ -39,13 +39,14 @@ public:
explicit RSSManager(QupZilla* mainClass, QWidget* parent = 0);
~RSSManager();
bool addRssFeed(const QString &address, const QString &title);
bool addRssFeed(const QString &address, const QString &title, const QIcon &icon);
void setMainWindow(QupZilla* window);
public slots:
void refreshTable();
private slots:
void optimizeDb();
void beginToLoadSlot(const QUrl &url);
void finished(QNetworkReply* reply);
void loadFeed(QTreeWidgetItem* item);

View File

@ -98,10 +98,31 @@
</property>
</spacer>
</item>
<item>
<widget class="ClickableLabel" name="optimizeDb">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">color: blue;
text-decoration: underline;</string>
</property>
<property name="text">
<string>Optimize Database</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ClickableLabel</class>
<extends>QLabel</extends>
<header>clickablelabel.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../data/icons.qrc"/>
</resources>

View File

@ -77,7 +77,7 @@ void RSSWidget::addRss()
else
title = button->toolTip();
if (mApp->rssManager()->addRssFeed(urlString, title)) {
if (mApp->rssManager()->addRssFeed(urlString, title, m_view->siteIcon())) {
RSSNotification* notif = new RSSNotification(title, m_view);
m_view->addNotification(notif);
close();

View File

@ -34,10 +34,11 @@ BookmarksSideBar::BookmarksSideBar(QupZilla* mainClass, QWidget* parent) :
{
ui->setupUi(this);
ui->bookmarksTree->setDefaultItemShowMode(TreeWidget::ItemsExpanded);
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(ui->search, SIGNAL(textChanged(QString)), ui->bookmarksTree, SLOT(filterString(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)));
@ -129,7 +130,7 @@ void BookmarksSideBar::addBookmark(const BookmarksModel::Bookmark &bookmark)
item->setToolTip(0, bookmark.url.toEncoded());
if (bookmark.folder != "unsorted")
ui->bookmarksTree->addToParentItem(translatedFolder, item);
ui->bookmarksTree->appendToParentItem(translatedFolder, item);
else
ui->bookmarksTree->addTopLevelItem(item);
@ -145,7 +146,7 @@ void BookmarksSideBar::removeBookmark(const BookmarksModel::Bookmark &bookmark)
return;
QTreeWidgetItem* item = list.at(0);
if (item && item->whatsThis(0) == QString::number(bookmark.id))
delete item;
ui->bookmarksTree->deleteItem(item);
} else {
QList<QTreeWidgetItem*> list = ui->bookmarksTree->findItems(BookmarksModel::toTranslatedFolder(bookmark.folder), Qt::MatchExactly);
if (list.count() == 0)
@ -158,7 +159,7 @@ void BookmarksSideBar::removeBookmark(const BookmarksModel::Bookmark &bookmark)
if (!item)
continue;
if (item->text(0) == bookmark.title && item->whatsThis(0) == QString::number(bookmark.id)) {
delete item;
ui->bookmarksTree->deleteItem(item);
return;
}
}
@ -182,7 +183,7 @@ void BookmarksSideBar::removeFolder(const QString &name)
{
QTreeWidgetItem* item = ui->bookmarksTree->findItems(name, Qt::MatchExactly).at(0);
if (item)
delete item;
ui->bookmarksTree->deleteItem(item);
}
void BookmarksSideBar::refreshTable()

View File

@ -31,7 +31,8 @@ HistorySideBar::HistorySideBar(QupZilla* mainClass, QWidget* parent) :
connect(ui->historyTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT(itemDoubleClicked(QTreeWidgetItem*)));
connect(ui->historyTree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenuRequested(const QPoint &)));
connect(ui->historyTree, SIGNAL(itemControlClicked(QTreeWidgetItem*)), this, SLOT(itemControlClicked(QTreeWidgetItem*)));
connect(ui->search, SIGNAL(textEdited(QString)), this, SLOT(search()));
connect(ui->search, SIGNAL(textEdited(QString)), ui->historyTree, SLOT(filterString(QString)));
// connect(ui->search, SIGNAL(textEdited(QString)), this, SLOT(search()));
connect(m_historyModel, SIGNAL(historyEntryAdded(HistoryModel::HistoryEntry)), this, SLOT(historyEntryAdded(HistoryModel::HistoryEntry)));
connect(m_historyModel, SIGNAL(historyEntryDeleted(HistoryModel::HistoryEntry)), this, SLOT(historyEntryDeleted(HistoryModel::HistoryEntry)));
@ -71,8 +72,6 @@ void HistorySideBar::contextMenuRequested(const QPoint &position)
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();
menu.addAction(tr("Remove Entry"), this, SLOT(deleteItem()));
//Prevent choosing first option with double rightclick
QPoint pos = QCursor::pos();
@ -80,36 +79,33 @@ void HistorySideBar::contextMenuRequested(const QPoint &position)
menu.exec(p);
}
void HistorySideBar::deleteItem()
{
QTreeWidgetItem* item = ui->historyTree->currentItem();
if (!item)
return;
if (item->text(1).isEmpty())
return;
int id = item->whatsThis(1).toInt();
m_historyModel->deleteHistoryEntry(id);
}
void HistorySideBar::historyEntryAdded(const HistoryModel::HistoryEntry &entry)
{
QLocale locale(p_QupZilla->activeLanguage().remove(".qm"));
QDate todayDate = QDate::currentDate();
QDate startOfWeekDate = todayDate.addDays(1 - todayDate.dayOfWeek());
QString localDate; //date.toString("dddd d. MMMM yyyy");
QString month = locale.monthName(entry.date.toString("M").toInt());
localDate = entry.date.toString(" d. ") + month + entry.date.toString(" yyyy");
QDate date = entry.date.date();
QString localDate;
QTreeWidgetItem* item;
if (date == todayDate)
localDate = tr("Today");
else if (date >= startOfWeekDate)
localDate = tr("This Week");
else if (date.month() == todayDate.month())
localDate = tr("This Month");
else
localDate = QString("%1 %2").arg(HistoryModel::titleCaseLocalizedMonth(date.month()), QString::number(date.year()));
QTreeWidgetItem* item = new QTreeWidgetItem();
QTreeWidgetItem* parentItem;
QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0);
if (findParent.count() == 1) {
item = new QTreeWidgetItem(findParent.at(0));
parentItem = findParent.at(0);
} else {
QTreeWidgetItem* newParent = new QTreeWidgetItem(ui->historyTree);
newParent->setText(0, localDate);
newParent->setIcon(0, QIcon(":/icons/menu/history_entry.png"));
ui->historyTree->addTopLevelItem(newParent);
item = new QTreeWidgetItem(newParent);
parentItem = new QTreeWidgetItem();
parentItem->setText(0, localDate);
parentItem->setIcon(0, QIcon(":/icons/menu/history_entry.png"));
ui->historyTree->addTopLevelItem(parentItem);
}
item->setText(0, entry.title);
@ -118,7 +114,7 @@ void HistorySideBar::historyEntryAdded(const HistoryModel::HistoryEntry &entry)
item->setWhatsThis(1, QString::number(entry.id));
item->setIcon(0, _iconForUrl(entry.url));
ui->historyTree->addTopLevelItem(item);
ui->historyTree->prependToParentItem(parentItem, item);
}
void HistorySideBar::historyEntryDeleted(const HistoryModel::HistoryEntry &entry)
@ -129,7 +125,7 @@ void HistorySideBar::historyEntryDeleted(const HistoryModel::HistoryEntry &entry
continue;
if (item->whatsThis(1).toInt() != entry.id)
continue;
delete item;
ui->historyTree->deleteItem(item);
return;
}
}
@ -167,8 +163,8 @@ void HistorySideBar::refreshTable()
ui->historyTree->setUpdatesEnabled(false);
ui->historyTree->clear();
QLocale locale(p_QupZilla->activeLanguage().remove(".qm"));
QDate todayDate = QDate::currentDate();
QDate startOfWeekDate = todayDate.addDays(1 - todayDate.dayOfWeek());
QSqlQuery query;
query.exec("SELECT title, url, id, date FROM history ORDER BY date DESC");
@ -176,15 +172,17 @@ void HistorySideBar::refreshTable()
QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
int id = query.value(2).toInt();
qint64 unixDate = query.value(3).toLongLong();
QDateTime date = QDateTime();
date = date.fromMSecsSinceEpoch(unixDate);
QDate date = QDateTime::fromMSecsSinceEpoch(query.value(3).toLongLong()).date();
QString localDate;
QString localDate; //date.toString("dddd d. MMMM yyyy");
//QString day = locale.dayName(date.toString("d").toInt());
QString month = locale.monthName(date.toString("M").toInt());
localDate = date.toString(" d. ") + month + date.toString(" yyyy");
if (date == todayDate)
localDate = tr("Today");
else if (date >= startOfWeekDate)
localDate = tr("This Week");
else if (date.month() == todayDate.month())
localDate = tr("This Month");
else
localDate = QString("%1 %2").arg(HistoryModel::titleCaseLocalizedMonth(date.month()), QString::number(date.year()));
QTreeWidgetItem* item;
QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0);

View File

@ -44,7 +44,6 @@ public slots:
private slots:
void search();
void itemDoubleClicked(QTreeWidgetItem* item);
void deleteItem();
void contextMenuRequested(const QPoint &position);
void loadInNewTab();
void itemControlClicked(QTreeWidgetItem* item);

View File

@ -54,39 +54,18 @@ QIcon IconProvider::iconForUrl(const QUrl &url)
}
QSqlQuery query;
query.prepare("SELECT icon FROM icons WHERE url = ?");
query.prepare("SELECT icon FROM icons WHERE url=?");
query.bindValue(0, url.toEncoded(QUrl::RemoveFragment));
query.exec();
if (query.next()) {
QIcon image;
QByteArray bArray = QByteArray::fromBase64(query.value(0).toByteArray());
QBuffer buffer(&bArray);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in >> image;
buffer.close();
if (query.next())
return iconFromBase64(query.value(0).toByteArray());
if (!image.isNull())
return image;
}
#ifdef Q_WS_X11
return QIcon::fromTheme("text-plain");
#else
return QIcon(":icons/locationbar/unknownpage.png");
#endif
return QWebSettings::webGraphic(QWebSettings::DefaultFrameIconGraphic);
}
void IconProvider::saveIconsToDatabase()
{
foreach (Icon ic, m_iconBuffer) {
QByteArray bArray;
QBuffer buffer(&bArray);
buffer.open(QIODevice::WriteOnly);
QDataStream out(&buffer);
out << ic.icon;
buffer.close();
QSqlQuery query;
query.prepare("SELECT id FROM icons WHERE url = ?");
query.bindValue(0, ic.url.toEncoded(QUrl::RemoveFragment));
@ -97,7 +76,7 @@ void IconProvider::saveIconsToDatabase()
else
query.prepare("INSERT INTO icons (icon, url) VALUES (?,?)");
query.bindValue(0, bArray.toBase64());
query.bindValue(0, iconToBase64(ic.icon));
query.bindValue(1, ic.url.toEncoded(QUrl::RemoveFragment));
query.exec();
}
@ -113,3 +92,29 @@ void IconProvider::clearIconDatabase()
m_iconBuffer.clear();
}
QIcon IconProvider::iconFromBase64(const QByteArray &data)
{
QIcon image;
QByteArray bArray = QByteArray::fromBase64(data);
QBuffer buffer(&bArray);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in >> image;
buffer.close();
if (!image.isNull())
return image;
return QWebSettings::webGraphic(QWebSettings::DefaultFrameIconGraphic);
}
QByteArray IconProvider::iconToBase64(const QIcon &icon)
{
QByteArray bArray;
QBuffer buffer(&bArray);
buffer.open(QIODevice::WriteOnly);
QDataStream out(&buffer);
out << icon;
buffer.close();
return bArray.toBase64();
}

View File

@ -38,6 +38,9 @@ public:
void clearIconDatabase();
static QIcon iconFromBase64(const QByteArray &data);
static QByteArray iconToBase64(const QIcon &icon);
signals:
public slots:

View File

@ -19,7 +19,39 @@
TreeWidget::TreeWidget(QWidget* parent) :
QTreeWidget(parent)
, m_refreshAllItemsNeeded(true)
, m_showMode(ItemsCollapsed)
{
connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(sheduleRefresh()));
}
void TreeWidget::sheduleRefresh()
{
m_refreshAllItemsNeeded = true;
}
void TreeWidget::addTopLevelItem(QTreeWidgetItem *item)
{
m_allTreeItems.append(item);
QTreeWidget::addTopLevelItem(item);
}
void TreeWidget::addTopLevelItems(const QList<QTreeWidgetItem *> &items)
{
m_allTreeItems.append(items);
QTreeWidget::addTopLevelItems(items);
}
void TreeWidget::insertTopLevelItem(int index, QTreeWidgetItem *item)
{
m_allTreeItems.append(item);
QTreeWidget::insertTopLevelItem(index, item);
}
void TreeWidget::insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)
{
m_allTreeItems.append(items);
QTreeWidget::insertTopLevelItems(index, items);
}
void TreeWidget::mousePressEvent(QMouseEvent* event)
@ -30,67 +62,117 @@ void TreeWidget::mousePressEvent(QMouseEvent* event)
QTreeWidget::mousePressEvent(event);
}
QList<QTreeWidgetItem*> allTreeItems;
void iterateAllItems(QTreeWidgetItem* parent, QTreeWidget* treeWidget, bool includeTopLevelItems = true)
void TreeWidget::iterateAllItems(QTreeWidgetItem* parent)
{
int count = parent ? parent->childCount() : treeWidget->topLevelItemCount();
int count = parent ? parent->childCount() : topLevelItemCount();
for (int i = 0; i < count; i++)
{
QTreeWidgetItem *item =
parent ? parent->child(i) : treeWidget->topLevelItem(i);
QTreeWidgetItem *item = parent ? parent->child(i) : topLevelItem(i);
if (includeTopLevelItems)
allTreeItems.append(item);
else if (item->childCount() == 0)
allTreeItems.append(item);
if (item->childCount() == 0)
m_allTreeItems.append(item);
iterateAllItems(item, treeWidget, includeTopLevelItems);
iterateAllItems(item);
}
}
QList<QTreeWidgetItem*> TreeWidget::allItems(bool includeTopLevelItems)
QList<QTreeWidgetItem*> TreeWidget::allItems()
{
allTreeItems.clear();
iterateAllItems(0, this, includeTopLevelItems);
return allTreeItems;
}
void TreeWidget::filterStringWithoutTopItems(QString string)
{
QList<QTreeWidgetItem*> _allItems = allItems(false);
if (string.isEmpty()) {
foreach (QTreeWidgetItem* item, _allItems)
item->setHidden(false);
} else {
foreach (QTreeWidgetItem* item, _allItems)
item->setHidden(!item->text(0).contains(string, Qt::CaseInsensitive));
if (m_refreshAllItemsNeeded) {
m_allTreeItems.clear();
iterateAllItems(0);
m_refreshAllItemsNeeded = false;
}
return m_allTreeItems;
}
void TreeWidget::filterStringWithTopItems(QString string)
void TreeWidget::filterString(QString string)
{
expandAll();
QList<QTreeWidgetItem*> _allItems = allItems();
if (string.isEmpty()) {
foreach (QTreeWidgetItem* item, _allItems)
item->setHidden(false);
for (int i = 0; i < topLevelItemCount(); i++)
topLevelItem(i)->setHidden(false);
if (m_showMode == ItemsCollapsed)
collapseAll();
} else {
foreach (QTreeWidgetItem* item, _allItems)
foreach (QTreeWidgetItem* item, _allItems) {
item->setHidden(!item->text(0).contains(string, Qt::CaseInsensitive));
item->setExpanded(true);
}
for (int i = 0; i < topLevelItemCount(); i++)
topLevelItem(i)->setHidden(false);
QTreeWidgetItem* firstItem = topLevelItem(0);
QTreeWidgetItem* belowItem = itemBelow(firstItem);
while (firstItem) {
if (!firstItem->parent() && !belowItem)
firstItem->setHidden(true);
else if (!belowItem)
break;
else if (!firstItem->parent() && !belowItem->parent())
firstItem->setHidden(true);
firstItem = belowItem;
belowItem = itemBelow(firstItem);
}
}
}
bool TreeWidget::addToParentItem(const QString &text, QTreeWidgetItem* item)
bool TreeWidget::appendToParentItem(const QString &parentText, QTreeWidgetItem* item)
{
QList<QTreeWidgetItem*> list = findItems(text, Qt::MatchExactly);
QList<QTreeWidgetItem*> list = findItems(parentText, Qt::MatchExactly);
if (list.count() == 0)
return false;
QTreeWidgetItem* parentItem = list.at(0);
if (!parentItem)
return false;
m_allTreeItems.append(item);
parentItem->addChild(item);
return true;
}
bool TreeWidget::appendToParentItem(QTreeWidgetItem* parent, QTreeWidgetItem* item)
{
if (!parent || parent->treeWidget() != this)
return false;
m_allTreeItems.append(item);
parent->addChild(item);
return true;
}
bool TreeWidget::prependToParentItem(const QString &parentText, QTreeWidgetItem* item)
{
QList<QTreeWidgetItem*> list = findItems(parentText, Qt::MatchExactly);
if (list.count() == 0)
return false;
QTreeWidgetItem* parentItem = list.at(0);
if (!parentItem)
return false;
m_allTreeItems.append(item);
parentItem->insertChild(0, item);
return true;
}
bool TreeWidget::prependToParentItem(QTreeWidgetItem* parent, QTreeWidgetItem* item)
{
if (!parent || parent->treeWidget() != this)
return false;
m_allTreeItems.append(item);
parent->insertChild(0, item);
return true;
}
void TreeWidget::deleteItem(QTreeWidgetItem *item)
{
if (m_allTreeItems.contains(item))
m_allTreeItems.removeOne(item);
delete item;
}

View File

@ -27,18 +27,37 @@ class TreeWidget : public QTreeWidget
Q_OBJECT
public:
explicit TreeWidget(QWidget* parent = 0);
QList<QTreeWidgetItem*> allItems(bool includeTopLevelItems = true);
bool addToParentItem(const QString &text, QTreeWidgetItem* item);
enum ItemShowMode { ItemsCollapsed = 0, ItemsExpanded = 1 };
void setDefaultItemShowMode(ItemShowMode mode) { m_showMode = mode; }
QList<QTreeWidgetItem*> allItems();
bool appendToParentItem(const QString &parentText, QTreeWidgetItem* item);
bool appendToParentItem(QTreeWidgetItem* parent, QTreeWidgetItem* item);
bool prependToParentItem(const QString &parentText, QTreeWidgetItem* item);
bool prependToParentItem(QTreeWidgetItem* parent, QTreeWidgetItem* item);
void addTopLevelItem(QTreeWidgetItem *item);
void addTopLevelItems(const QList<QTreeWidgetItem *> &items);
void insertTopLevelItem(int index, QTreeWidgetItem *item);
void insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items);
void deleteItem(QTreeWidgetItem* item);
signals:
void itemControlClicked(QTreeWidgetItem* item);
public slots:
void filterStringWithTopItems(QString string);
void filterStringWithoutTopItems(QString string);
void filterString(QString string);
private slots:
void sheduleRefresh();
private:
void mousePressEvent(QMouseEvent* event);
void iterateAllItems(QTreeWidgetItem* parent);
bool m_refreshAllItemsNeeded;
QList<QTreeWidgetItem*> m_allTreeItems;
ItemShowMode m_showMode;
};

View File

@ -194,7 +194,7 @@ void TabBar::closeCurrentTab()
void TabBar::bookmarkTab()
{
p_QupZilla->addBookmark(p_QupZilla->weView(m_clickedTab)->url(), p_QupZilla->weView(m_clickedTab)->title());
p_QupZilla->addBookmark(p_QupZilla->weView(m_clickedTab)->url(), p_QupZilla->weView(m_clickedTab)->title(), p_QupZilla->weView(m_clickedTab)->siteIcon());
}
void TabBar::pinTab()

View File

@ -678,7 +678,7 @@ void WebView::bookmarkLink()
if (action->data().isNull())
p_QupZilla->bookmarkPage();
else
p_QupZilla->addBookmark(action->data().toUrl(), action->data().toString());
p_QupZilla->addBookmark(action->data().toUrl(), action->data().toString(), siteIcon());
}
}

View File

@ -311,87 +311,92 @@ p, li { white-space: pre-wrap; }
<translation>Přidat složku</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="79"/>
<location filename="../src/bookmarks/bookmarksmanager.ui" line="84"/>
<source>Optimize Database</source>
<translation>Optimalizovat databázi</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="89"/>
<source>Add new folder</source>
<translation>Přidat složku</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="79"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="89"/>
<source>Choose name for new bookmark folder: </source>
<translation>Zvolte jméno pro novou složku:</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="109"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="119"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="159"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="184"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="209"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="337"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="379"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="169"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="194"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="220"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="390"/>
<source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="160"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="189"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="211"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="338"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="380"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="170"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="199"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="222"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="349"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="391"/>
<source>Bookmarks In ToolBar</source>
<translation>Panel záložek</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="152"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="162"/>
<source>Open link in actual &amp;tab</source>
<translation>Otevřít odkaz v &amp;aktuálním panelu</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="153"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="163"/>
<source>Open link in &amp;new tab</source>
<translation>Otevřít odkaz v novém &amp;panelu</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="157"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="167"/>
<source>Move bookmark to &amp;folder</source>
<translation>Přesunout záložku do &amp;složky</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="178"/>
<source>&amp;Close</source>
<translation>&amp;Zavřít</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="158"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="336"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="378"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="347"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="389"/>
<source>Unsorted Bookmarks</source>
<translation>Nesetříděné záložky</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="333"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="344"/>
<source>&lt;b&gt;Warning: &lt;/b&gt;You already have this page bookmarked!</source>
<translation>&lt;b&gt;Upozornění: &lt;/b&gt;Tuto stránku již máte v záložkách!</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="344"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="355"/>
<source>Choose name and location of bookmark.</source>
<translation>Zvolte jméno a umístění záložky.</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="359"/>
<source>Add New Bookmark</source>
<translation>Přidat záložku</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="386"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="397"/>
<source>Choose folder for bookmarks:</source>
<translation>Zvolte složku pro záložky:</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="388"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="399"/>
<source>Bookmark All Tabs</source>
<translation>Přidat všechny panely do záložek</translation>
</message>
@ -399,22 +404,22 @@ p, li { white-space: pre-wrap; }
<context>
<name>BookmarksModel</name>
<message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="286"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="299"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="293"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="306"/>
<source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="288"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="301"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="295"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="308"/>
<source>Bookmarks In ToolBar</source>
<translation>Panel záložek</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="290"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="303"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="297"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="310"/>
<source>Unsorted Bookmarks</source>
<translation>Nesetříděné záložky</translation>
</message>
@ -427,46 +432,46 @@ p, li { white-space: pre-wrap; }
<translation>Hledat...</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="68"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="69"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="100"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="101"/>
<source>Open link in actual &amp;tab</source>
<translation>Otevřít odkaz v &amp;aktuálním panelu</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="101"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="102"/>
<source>Open link in &amp;new tab</source>
<translation>Otevřít odkaz v novém &amp;panelu</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="105"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="106"/>
<source>Move bookmark to &amp;folder</source>
<translation>Přesunout záložku do &amp;složky</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="106"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/>
<source>Unsorted Bookmarks</source>
<translation>Nesetříděné záložky</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="196"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="221"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="197"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="222"/>
<source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="201"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="223"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="109"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="202"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="224"/>
<source>Bookmarks In ToolBar</source>
<translation>Panel záložek</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="114"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="115"/>
<source>&amp;Delete</source>
<translation>&amp;Odstranit</translation>
</message>
@ -585,20 +590,30 @@ p, li { white-space: pre-wrap; }
<translation>Hledat...</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="26"/>
<location filename="../src/other/browsinglibrary.cpp" line="47"/>
<source>History</source>
<translation>Historie</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="27"/>
<location filename="../src/other/browsinglibrary.cpp" line="48"/>
<source>Bookmarks</source>
<translation>Záložky</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="28"/>
<location filename="../src/other/browsinglibrary.cpp" line="49"/>
<source>RSS</source>
<translation>RSS</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="141"/>
<source>Database Optimized</source>
<translation>Databáze optimalizována</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="141"/>
<source>Database successfuly optimized.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Database Size Before: &lt;/b&gt;%1&lt;br/&gt;&lt;b&gt;Databse Size After: &lt;/b&gt;%2</source>
<translation>Databáze byla úspěšně optimalizována.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Velikost databáze před: &lt;/b&gt;%1&lt;br/&gt;&lt;b&gt;Velikost databáze poté: &lt;/b&gt;%2</translation>
</message>
</context>
<context>
<name>ClearPrivateData</name>
@ -779,12 +794,12 @@ p, li { white-space: pre-wrap; }
<location filename="../src/cookies/cookiemanager.ui" line="163"/>
<location filename="../src/cookies/cookiemanager.ui" line="170"/>
<location filename="../src/cookies/cookiemanager.ui" line="177"/>
<location filename="../src/cookies/cookiemanager.cpp" line="95"/>
<location filename="../src/cookies/cookiemanager.cpp" line="96"/>
<location filename="../src/cookies/cookiemanager.cpp" line="97"/>
<location filename="../src/cookies/cookiemanager.cpp" line="98"/>
<location filename="../src/cookies/cookiemanager.cpp" line="99"/>
<location filename="../src/cookies/cookiemanager.cpp" line="100"/>
<location filename="../src/cookies/cookiemanager.cpp" line="101"/>
<location filename="../src/cookies/cookiemanager.cpp" line="102"/>
<source>&lt;cookie not selected&gt;</source>
<translation>&lt;nebylo zvoleno cookie&gt;</translation>
</message>
@ -795,7 +810,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../src/cookies/cookiemanager.ui" line="209"/>
<location filename="../src/cookies/cookiemanager.cpp" line="104"/>
<location filename="../src/cookies/cookiemanager.cpp" line="106"/>
<source>Remove cookie</source>
<translation>Odebrat cookie</translation>
</message>
@ -805,69 +820,41 @@ p, li { white-space: pre-wrap; }
<translation>Del</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="43"/>
<location filename="../src/cookies/cookiemanager.cpp" line="44"/>
<source>Search</source>
<translation>Vyhledávání</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="48"/>
<location filename="../src/cookies/cookiemanager.cpp" line="50"/>
<source>Confirmation</source>
<translation>Potvrzení</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="49"/>
<location filename="../src/cookies/cookiemanager.cpp" line="51"/>
<source>Are you sure to delete all cookies on your computer?</source>
<translation>Opravdu chcete vymazat všechny cookies z počítače?</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="101"/>
<location filename="../src/cookies/cookiemanager.cpp" line="103"/>
<source>Remove cookies</source>
<translation>Odebrat cookies</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/>
<location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>Secure only</source>
<translation>Zabezpečené připojení</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/>
<location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>All connections</source>
<translation>Libovolný typ připojení</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="114"/>
<location filename="../src/cookies/cookiemanager.cpp" line="116"/>
<source>Session cookie</source>
<translation>konce relace</translation>
</message>
</context>
<context>
<name>Core::Internal::FancyTabWidget</name>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="646"/>
<source>Large sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="647"/>
<source>Small sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="648"/>
<source>Plain sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="649"/>
<source>Tabs on top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="650"/>
<source>Icons on top</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DownloadItem</name>
<message>
@ -1143,32 +1130,55 @@ nebyl nalezen!</translation>
<translation>Vymazat celou historii</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="90"/>
<location filename="../src/history/historymanager.ui" line="84"/>
<source>Optimize Database</source>
<translation>Optimalizovat databázi</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="93"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="102"/>
<location filename="../src/history/historymanager.cpp" line="105"/>
<source>Open link in actual tab</source>
<translation>Otevřít odkaz v aktuálním panelu</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="103"/>
<location filename="../src/history/historymanager.cpp" line="106"/>
<source>Open link in new tab</source>
<translation>Otevřít odkaz v novém panelu</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="107"/>
<location filename="../src/history/historymanager.cpp" line="110"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="170"/>
<location filename="../src/history/historymanager.cpp" line="137"/>
<location filename="../src/history/historymanager.cpp" line="209"/>
<source>Today</source>
<translation>Dnes</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="139"/>
<location filename="../src/history/historymanager.cpp" line="211"/>
<source>This Week</source>
<translation>Tento týden</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="141"/>
<location filename="../src/history/historymanager.cpp" line="213"/>
<source>This Month</source>
<translation>Tento měsíc</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="182"/>
<source>Confirmation</source>
<translation>Potvrzení</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="171"/>
<location filename="../src/history/historymanager.cpp" line="183"/>
<source>Are you sure to delete all history?</source>
<translation>Opravdu chcete vymazat celou historii?</translation>
</message>
@ -1176,15 +1186,75 @@ nebyl nalezen!</translation>
<context>
<name>HistoryModel</name>
<message>
<location filename="../src/history/historymodel.cpp" line="42"/>
<location filename="../src/history/historymodel.cpp" line="43"/>
<source>Failed loading page</source>
<translation>Chyba při načítání stránky</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="45"/>
<location filename="../src/history/historymodel.cpp" line="46"/>
<source>No Named Page</source>
<translation>Bezejmenná stránka</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="177"/>
<source>January</source>
<translation>Leden</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="179"/>
<source>February</source>
<translation>Únor</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="181"/>
<source>March</source>
<translation>Březen</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="183"/>
<source>April</source>
<translation>Duben</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="185"/>
<source>May</source>
<translation>Květen</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="187"/>
<source>June</source>
<translation>Červen</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="189"/>
<source>July</source>
<translation>Červenec</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="191"/>
<source>August</source>
<translation>Srpen</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="193"/>
<source>September</source>
<translation>Září</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="195"/>
<source>October</source>
<translation>Říjen</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="197"/>
<source>November</source>
<translation>Listopad</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="199"/>
<source>December</source>
<translation>Prosinec</translation>
</message>
</context>
<context>
<name>HistorySideBar</name>
@ -1199,25 +1269,43 @@ nebyl nalezen!</translation>
<translation>Titulek</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="60"/>
<location filename="../src/sidebar/historysidebar.cpp" line="61"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="72"/>
<location filename="../src/sidebar/historysidebar.cpp" line="73"/>
<source>Open link in actual tab</source>
<translation>Otevřít odkaz v aktuálním panelu</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="73"/>
<location filename="../src/sidebar/historysidebar.cpp" line="74"/>
<source>Open link in new tab</source>
<translation>Otevřít odkaz v novém panelu</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="75"/>
<location filename="../src/sidebar/historysidebar.cpp" line="76"/>
<source>Remove Entry</source>
<translation>Odstranit položku</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="105"/>
<location filename="../src/sidebar/historysidebar.cpp" line="193"/>
<source>Today</source>
<translation>Dnes</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="107"/>
<location filename="../src/sidebar/historysidebar.cpp" line="195"/>
<source>This Week</source>
<translation>Tento týden</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="109"/>
<location filename="../src/sidebar/historysidebar.cpp" line="197"/>
<source>This Month</source>
<translation>Tento měsíc</translation>
</message>
</context>
<context>
<name>LocationBar</name>
@ -1257,12 +1345,12 @@ nebyl nalezen!</translation>
<context>
<name>MainApplication</name>
<message>
<location filename="../src/app/mainapplication.cpp" line="517"/>
<location filename="../src/app/mainapplication.cpp" line="514"/>
<source>Last session crashed</source>
<translation>Poslední relace spadla</translation>
</message>
<message>
<location filename="../src/app/mainapplication.cpp" line="518"/>
<location filename="../src/app/mainapplication.cpp" line="515"/>
<source>&lt;b&gt;QupZilla crashed :-(&lt;/b&gt;&lt;br/&gt;Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state?</source>
<translation>&lt;b&gt;QupZilla spadla :-(&lt;/b&gt;&lt;br/&gt;Oops, poslední relace QupZilly skončila jejím pádem. Velice se omlouváme. Přejete si obnovit uložený stav?</translation>
</message>
@ -2591,95 +2679,101 @@ nebyl nalezen!</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="40"/>
<location filename="../src/rss/rssmanager.cpp" line="115"/>
<source>Empty</source>
<translation>Prázdný</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="83"/>
<location filename="../src/rss/rssmanager.cpp" line="113"/>
<source>You don&apos;t have any RSS Feeds.&lt;br/&gt;
Please add some with RSS icon in navigation bar on site which offers feeds.</source>
<translation>Nemáte žádný RSS kanál.&lt;br/&gt;
Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="106"/>
<location filename="../src/rss/rssmanager.ui" line="64"/>
<source>Reload</source>
<translation>Obnovit</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="116"/>
<location filename="../src/rss/rssmanager.ui" line="74"/>
<source>Edit feed</source>
<translation>Upravit kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="126"/>
<location filename="../src/rss/rssmanager.ui" line="84"/>
<source>Delete feed</source>
<translation>Smazat kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="81"/>
<location filename="../src/rss/rssmanager.ui" line="111"/>
<source>Optimize Database</source>
<translation>Optimalizovat databázi</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="79"/>
<source>News</source>
<translation>Novinky</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="90"/>
<location filename="../src/rss/rssmanager.cpp" line="113"/>
<location filename="../src/rss/rssmanager.cpp" line="88"/>
<location filename="../src/rss/rssmanager.cpp" line="126"/>
<source>Loading...</source>
<translation>Načítám...</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="153"/>
<location filename="../src/rss/rssmanager.cpp" line="162"/>
<source>Fill title and URL of a feed: </source>
<translation>Vyplňte titulek a adresu kanálu: </translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="155"/>
<location filename="../src/rss/rssmanager.cpp" line="164"/>
<source>Feed title: </source>
<translation>Titulek kanálu: </translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="156"/>
<location filename="../src/rss/rssmanager.cpp" line="165"/>
<source>Feed URL: </source>
<translation>Adresa kanálu: </translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="162"/>
<location filename="../src/rss/rssmanager.cpp" line="171"/>
<source>Edit RSS Feed</source>
<translation>Upravit kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="199"/>
<location filename="../src/rss/rssmanager.cpp" line="208"/>
<source>Open link in actual tab</source>
<translation>Otevřít odkaz v aktuálním panelu</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="200"/>
<location filename="../src/rss/rssmanager.cpp" line="209"/>
<source>Open link in new tab</source>
<translation>Otevřít odkaz v novém panelu</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="202"/>
<location filename="../src/rss/rssmanager.cpp" line="211"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="225"/>
<location filename="../src/rss/rssmanager.cpp" line="231"/>
<location filename="../src/rss/rssmanager.cpp" line="234"/>
<location filename="../src/rss/rssmanager.cpp" line="240"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="297"/>
<location filename="../src/rss/rssmanager.cpp" line="306"/>
<source>Error in fetching feed</source>
<translation>Chyba při stahování kanálu</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="318"/>
<location filename="../src/rss/rssmanager.cpp" line="334"/>
<source>RSS feed duplicated</source>
<translation>Duplikovaný kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="318"/>
<location filename="../src/rss/rssmanager.cpp" line="334"/>
<source>You already have this feed.</source>
<translation>Tento kanál již odebíráte.</translation>
</message>

View File

@ -315,87 +315,92 @@ p, li { white-space: pre-wrap; }
<translation>Pridať zložku</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="79"/>
<location filename="../src/bookmarks/bookmarksmanager.ui" line="84"/>
<source>Optimize Database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="89"/>
<source>Add new folder</source>
<translation>Pridať novú zložku</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="79"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="89"/>
<source>Choose name for new bookmark folder: </source>
<translation>Zvoľte meno pre novú zložku:</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="109"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="119"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="159"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="184"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="209"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="337"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="379"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="169"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="194"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="220"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="390"/>
<source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="160"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="189"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="211"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="338"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="380"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="170"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="199"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="222"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="349"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="391"/>
<source>Bookmarks In ToolBar</source>
<translation>Panel záložiek</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="152"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="162"/>
<source>Open link in actual &amp;tab</source>
<translation>Otvoriť odkaz v &amp;aktuálnom panely</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="153"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="163"/>
<source>Open link in &amp;new tab</source>
<translation>Otvoriť odkaz na &amp;novom panely</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="157"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="167"/>
<source>Move bookmark to &amp;folder</source>
<translation>Presunúť záložku do &amp;zložky</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="178"/>
<source>&amp;Close</source>
<translation>&amp;Zavrieť</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="158"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="336"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="378"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="347"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="389"/>
<source>Unsorted Bookmarks</source>
<translation>Nezotriedené záložky</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="333"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="344"/>
<source>&lt;b&gt;Warning: &lt;/b&gt;You already have this page bookmarked!</source>
<translation>&lt;b&gt;Upozornenie: &lt;/b&gt;Túto stránku máte už v záložkách!</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="344"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="355"/>
<source>Choose name and location of bookmark.</source>
<translation>Zvoľte meno a umiestnenie záložky.</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="359"/>
<source>Add New Bookmark</source>
<translation>Pridať záložku</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="386"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="397"/>
<source>Choose folder for bookmarks:</source>
<translation>Zvoľte zložku pre záložku:</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="388"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="399"/>
<source>Bookmark All Tabs</source>
<translation>Pridať všetky panely do záložiek</translation>
</message>
@ -403,22 +408,22 @@ p, li { white-space: pre-wrap; }
<context>
<name>BookmarksModel</name>
<message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="286"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="299"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="293"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="306"/>
<source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="288"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="301"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="295"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="308"/>
<source>Bookmarks In ToolBar</source>
<translation>Panel záložiek</translation>
</message>
<message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="290"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="303"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="297"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="310"/>
<source>Unsorted Bookmarks</source>
<translation>Nezotriedené záložky</translation>
</message>
@ -431,46 +436,46 @@ p, li { white-space: pre-wrap; }
<translation>Hľadať...</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="68"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="69"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="100"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="101"/>
<source>Open link in actual &amp;tab</source>
<translation>Otvoriť odkaz v &amp;aktuálnom panely</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="101"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="102"/>
<source>Open link in &amp;new tab</source>
<translation>Otvoriť odkaz na &amp;novom panely</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="105"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="106"/>
<source>Move bookmark to &amp;folder</source>
<translation>Presunúť záložku do &amp;zložky</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="106"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/>
<source>Unsorted Bookmarks</source>
<translation>Nezotriedené záložky</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="196"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="221"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="197"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="222"/>
<source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="201"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="223"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="109"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="202"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="224"/>
<source>Bookmarks In ToolBar</source>
<translation>Panel záložiek</translation>
</message>
<message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="114"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="115"/>
<source>&amp;Delete</source>
<translation>&amp;Odstrániť</translation>
</message>
@ -586,21 +591,31 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../src/other/browsinglibrary.ui" line="95"/>
<source>Search...</source>
<translation type="unfinished">Hľadať...</translation>
<translation>Hľadať...</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="26"/>
<location filename="../src/other/browsinglibrary.cpp" line="47"/>
<source>History</source>
<translation type="unfinished">História</translation>
<translation>História</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="27"/>
<location filename="../src/other/browsinglibrary.cpp" line="48"/>
<source>Bookmarks</source>
<translation type="unfinished">Záložky</translation>
<translation>Záložky</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="28"/>
<location filename="../src/other/browsinglibrary.cpp" line="49"/>
<source>RSS</source>
<translation>RSS</translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="141"/>
<source>Database Optimized</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/other/browsinglibrary.cpp" line="141"/>
<source>Database successfuly optimized.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Database Size Before: &lt;/b&gt;%1&lt;br/&gt;&lt;b&gt;Databse Size After: &lt;/b&gt;%2</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -782,12 +797,12 @@ p, li { white-space: pre-wrap; }
<location filename="../src/cookies/cookiemanager.ui" line="163"/>
<location filename="../src/cookies/cookiemanager.ui" line="170"/>
<location filename="../src/cookies/cookiemanager.ui" line="177"/>
<location filename="../src/cookies/cookiemanager.cpp" line="95"/>
<location filename="../src/cookies/cookiemanager.cpp" line="96"/>
<location filename="../src/cookies/cookiemanager.cpp" line="97"/>
<location filename="../src/cookies/cookiemanager.cpp" line="98"/>
<location filename="../src/cookies/cookiemanager.cpp" line="99"/>
<location filename="../src/cookies/cookiemanager.cpp" line="100"/>
<location filename="../src/cookies/cookiemanager.cpp" line="101"/>
<location filename="../src/cookies/cookiemanager.cpp" line="102"/>
<source>&lt;cookie not selected&gt;</source>
<translation>&lt;nebolo zvolene cookie&gt;</translation>
</message>
@ -798,7 +813,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../src/cookies/cookiemanager.ui" line="209"/>
<location filename="../src/cookies/cookiemanager.cpp" line="104"/>
<location filename="../src/cookies/cookiemanager.cpp" line="106"/>
<source>Remove cookie</source>
<translation>Odstrániť cookie</translation>
</message>
@ -808,69 +823,41 @@ p, li { white-space: pre-wrap; }
<translation>Del</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="43"/>
<location filename="../src/cookies/cookiemanager.cpp" line="44"/>
<source>Search</source>
<translation>Hľadať</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="48"/>
<location filename="../src/cookies/cookiemanager.cpp" line="50"/>
<source>Confirmation</source>
<translation>Potvrdenie</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="49"/>
<location filename="../src/cookies/cookiemanager.cpp" line="51"/>
<source>Are you sure to delete all cookies on your computer?</source>
<translation>Skutočne chcete vymazať všetky cookies z počítača?</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="101"/>
<location filename="../src/cookies/cookiemanager.cpp" line="103"/>
<source>Remove cookies</source>
<translation>Odstrániť cookies</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/>
<location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>Secure only</source>
<translation>Zabezpečené pripojenie</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/>
<location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>All connections</source>
<translation>Všetky pripojenia</translation>
</message>
<message>
<location filename="../src/cookies/cookiemanager.cpp" line="114"/>
<location filename="../src/cookies/cookiemanager.cpp" line="116"/>
<source>Session cookie</source>
<translation>Konca relácie</translation>
</message>
</context>
<context>
<name>Core::Internal::FancyTabWidget</name>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="646"/>
<source>Large sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="647"/>
<source>Small sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="648"/>
<source>Plain sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="649"/>
<source>Tabs on top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/3rdparty/fancytabwidget.cpp" line="650"/>
<source>Icons on top</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DownloadItem</name>
<message>
@ -1146,32 +1133,55 @@ p, li { white-space: pre-wrap; }
<translation>Vymazať celú históriu</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="90"/>
<location filename="../src/history/historymanager.ui" line="84"/>
<source>Optimize Database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="93"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="102"/>
<location filename="../src/history/historymanager.cpp" line="105"/>
<source>Open link in actual tab</source>
<translation>Otvoriť odkaz v aktuálnom panely</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="103"/>
<location filename="../src/history/historymanager.cpp" line="106"/>
<source>Open link in new tab</source>
<translation>Otvoriť odkaz na novom panely</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="107"/>
<location filename="../src/history/historymanager.cpp" line="110"/>
<source>Close</source>
<translation>Zavrieť</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="170"/>
<location filename="../src/history/historymanager.cpp" line="137"/>
<location filename="../src/history/historymanager.cpp" line="209"/>
<source>Today</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="139"/>
<location filename="../src/history/historymanager.cpp" line="211"/>
<source>This Week</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="141"/>
<location filename="../src/history/historymanager.cpp" line="213"/>
<source>This Month</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="182"/>
<source>Confirmation</source>
<translation>Potvrdenie</translation>
</message>
<message>
<location filename="../src/history/historymanager.cpp" line="171"/>
<location filename="../src/history/historymanager.cpp" line="183"/>
<source>Are you sure to delete all history?</source>
<translation>Skutočne chcete vymazať celú históriu?</translation>
</message>
@ -1179,15 +1189,75 @@ p, li { white-space: pre-wrap; }
<context>
<name>HistoryModel</name>
<message>
<location filename="../src/history/historymodel.cpp" line="42"/>
<location filename="../src/history/historymodel.cpp" line="43"/>
<source>Failed loading page</source>
<translation>Chyba pri načítaní stránky</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="45"/>
<location filename="../src/history/historymodel.cpp" line="46"/>
<source>No Named Page</source>
<translation>Stránka bez mena</translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="177"/>
<source>January</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="179"/>
<source>February</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="181"/>
<source>March</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="183"/>
<source>April</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="185"/>
<source>May</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="187"/>
<source>June</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="189"/>
<source>July</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="191"/>
<source>August</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="193"/>
<source>September</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="195"/>
<source>October</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="197"/>
<source>November</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/history/historymodel.cpp" line="199"/>
<source>December</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>HistorySideBar</name>
@ -1202,25 +1272,43 @@ p, li { white-space: pre-wrap; }
<translation>Názov</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="60"/>
<location filename="../src/sidebar/historysidebar.cpp" line="61"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="72"/>
<location filename="../src/sidebar/historysidebar.cpp" line="73"/>
<source>Open link in actual tab</source>
<translation>Otvoriť odkaz v aktuálnom panely</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="73"/>
<location filename="../src/sidebar/historysidebar.cpp" line="74"/>
<source>Open link in new tab</source>
<translation>Otvoriť odkaz na novom panely</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="75"/>
<location filename="../src/sidebar/historysidebar.cpp" line="76"/>
<source>Remove Entry</source>
<translation>Odstrániť položku</translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="105"/>
<location filename="../src/sidebar/historysidebar.cpp" line="193"/>
<source>Today</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="107"/>
<location filename="../src/sidebar/historysidebar.cpp" line="195"/>
<source>This Week</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/sidebar/historysidebar.cpp" line="109"/>
<location filename="../src/sidebar/historysidebar.cpp" line="197"/>
<source>This Month</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LocationBar</name>
@ -1259,12 +1347,12 @@ p, li { white-space: pre-wrap; }
<context>
<name>MainApplication</name>
<message>
<location filename="../src/app/mainapplication.cpp" line="517"/>
<location filename="../src/app/mainapplication.cpp" line="514"/>
<source>Last session crashed</source>
<translation>Posledná relácia spadla</translation>
</message>
<message>
<location filename="../src/app/mainapplication.cpp" line="518"/>
<location filename="../src/app/mainapplication.cpp" line="515"/>
<source>&lt;b&gt;QupZilla crashed :-(&lt;/b&gt;&lt;br/&gt;Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state?</source>
<translation>&lt;b&gt;QupZilla spadla :-(&lt;/b&gt;&lt;br/&gt;Oops, posledná relácia QupZilly skončila chybou. Prepáčte. Chcete obnoviť uložený stav?</translation>
</message>
@ -2592,95 +2680,101 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="40"/>
<location filename="../src/rss/rssmanager.cpp" line="115"/>
<source>Empty</source>
<translation>Prázdny</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="83"/>
<location filename="../src/rss/rssmanager.cpp" line="113"/>
<source>You don&apos;t have any RSS Feeds.&lt;br/&gt;
Please add some with RSS icon in navigation bar on site which offers feeds.</source>
<translation>Nemáte žiadny RSS kanál.&lt;br/&gt;
Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="106"/>
<location filename="../src/rss/rssmanager.ui" line="64"/>
<source>Reload</source>
<translation>Obnoviť</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="116"/>
<location filename="../src/rss/rssmanager.ui" line="74"/>
<source>Edit feed</source>
<translation>Upraviť kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.ui" line="126"/>
<location filename="../src/rss/rssmanager.ui" line="84"/>
<source>Delete feed</source>
<translation>Zmazať kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="81"/>
<location filename="../src/rss/rssmanager.ui" line="111"/>
<source>Optimize Database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="79"/>
<source>News</source>
<translation>Novinky</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="90"/>
<location filename="../src/rss/rssmanager.cpp" line="113"/>
<location filename="../src/rss/rssmanager.cpp" line="88"/>
<location filename="../src/rss/rssmanager.cpp" line="126"/>
<source>Loading...</source>
<translation>Nahrávam...</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="153"/>
<location filename="../src/rss/rssmanager.cpp" line="162"/>
<source>Fill title and URL of a feed: </source>
<translation>Vyplnte názov a adresu kanálu: </translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="155"/>
<location filename="../src/rss/rssmanager.cpp" line="164"/>
<source>Feed title: </source>
<translation>Názov kanálu: </translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="156"/>
<location filename="../src/rss/rssmanager.cpp" line="165"/>
<source>Feed URL: </source>
<translation>Adresa kanálu: </translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="162"/>
<location filename="../src/rss/rssmanager.cpp" line="171"/>
<source>Edit RSS Feed</source>
<translation>Upraviť RSS</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="199"/>
<location filename="../src/rss/rssmanager.cpp" line="208"/>
<source>Open link in actual tab</source>
<translation>Otvoriť odkaz v aktuálnom panely</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="200"/>
<location filename="../src/rss/rssmanager.cpp" line="209"/>
<source>Open link in new tab</source>
<translation>Otvoriť odkaz na novom panely</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="202"/>
<location filename="../src/rss/rssmanager.cpp" line="211"/>
<source>Close</source>
<translation>Zavrieť</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="225"/>
<location filename="../src/rss/rssmanager.cpp" line="231"/>
<location filename="../src/rss/rssmanager.cpp" line="234"/>
<location filename="../src/rss/rssmanager.cpp" line="240"/>
<source>New Tab</source>
<translation>Nový panel</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="297"/>
<location filename="../src/rss/rssmanager.cpp" line="306"/>
<source>Error in fetching feed</source>
<translation>Chyba pri sťahovaní kanálu</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="318"/>
<location filename="../src/rss/rssmanager.cpp" line="334"/>
<source>RSS feed duplicated</source>
<translation>Duplikovaný kanál</translation>
</message>
<message>
<location filename="../src/rss/rssmanager.cpp" line="318"/>
<location filename="../src/rss/rssmanager.cpp" line="334"/>
<source>You already have this feed.</source>
<translation>Tento kanál odoberáte.</translation>
</message>