1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-11 01:22:10 +01: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(adblockCheckBox, SIGNAL(toggled(bool)), m_manager, SLOT(setEnabled(bool)));
connect(addButton, SIGNAL(clicked()), this, SLOT(addCustomRule())); connect(addButton, SIGNAL(clicked()), this, SLOT(addCustomRule()));
connect(reloadButton, SIGNAL(clicked()), this, SLOT(updateSubscription())); 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(m_manager->subscription(), SIGNAL(changed()), this, SLOT(refreshAfterUpdate()));
connect(treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(customContextMenuRequested())); connect(treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(customContextMenuRequested()));
@ -85,7 +85,7 @@ void AdBlockDialog::deleteRule()
int offset = item->whatsThis(0).toInt(); int offset = item->whatsThis(0).toInt();
m_manager->subscription()->removeRule(offset); m_manager->subscription()->removeRule(offset);
delete item; treeWidget->deleteItem(item);
refresh(); refresh();
} }
@ -203,12 +203,13 @@ void AdBlockDialog::addCustomRule()
AdBlockSubscription* subscription = m_manager->subscription(); AdBlockSubscription* subscription = m_manager->subscription();
int offset = subscription->addRule(AdBlockRule(newRule)); int offset = subscription->addRule(AdBlockRule(newRule));
m_itemChangingBlock = true; m_itemChangingBlock = true;
QTreeWidgetItem* item = new QTreeWidgetItem(m_customRulesItem); QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0, newRule); item->setText(0, newRule);
item->setWhatsThis(0, QString::number(offset)); item->setWhatsThis(0, QString::number(offset));
item->setFlags(item->flags() | Qt::ItemIsEditable); item->setFlags(item->flags() | Qt::ItemIsEditable);
item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
item->setCheckState(0, Qt::Checked); item->setCheckState(0, Qt::Checked);
treeWidget->appendToParentItem(m_customRulesItem, item);
m_itemChangingBlock = false; m_itemChangingBlock = false;
} }

View File

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

View File

@ -54,7 +54,7 @@ public:
QString DATADIR; QString DATADIR;
explicit MainApplication(const QList<CommandLineOptions::ActionPair> &cmdActions, int &argc, char **argv); 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 loadSettings();
void reloadSettings() { loadSettings(); emit message(ReloadSettings, true); } void reloadSettings() { loadSettings(); emit message(ReloadSettings, true); }

View File

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

View File

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

View File

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

View File

@ -41,14 +41,17 @@ public:
explicit BookmarksManager(QupZilla* mainClass, QWidget* parent = 0); explicit BookmarksManager(QupZilla* mainClass, QWidget* parent = 0);
~BookmarksManager(); ~BookmarksManager();
void addBookmark(WebView* view); 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 setMainWindow(QupZilla* window);
void search(const QString &string);
public slots: public slots:
void refreshTable(); void refreshTable();
void insertAllTabs(); void insertAllTabs();
private slots: private slots:
void optimizeDb();
void deleteItem(); void deleteItem();
void itemChanged(QTreeWidgetItem* item); void itemChanged(QTreeWidgetItem* item);
void addFolder(); void addFolder();

View File

@ -18,7 +18,7 @@
<normaloff>:/icons/qupzilla.png</normaloff>:/icons/qupzilla.png</iconset> <normaloff>:/icons/qupzilla.png</normaloff>:/icons/qupzilla.png</iconset>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="5"> <item row="0" column="0" colspan="6">
<widget class="TreeWidget" name="bookmarksTree"> <widget class="TreeWidget" name="bookmarksTree">
<property name="contextMenuPolicy"> <property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum> <enum>Qt::CustomContextMenu</enum>
@ -71,6 +71,20 @@
</property> </property>
</spacer> </spacer>
</item> </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> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
@ -79,6 +93,11 @@
<extends>QTreeWidget</extends> <extends>QTreeWidget</extends>
<header>treewidget.h</header> <header>treewidget.h</header>
</customwidget> </customwidget>
<customwidget>
<class>ClickableLabel</class>
<extends>QLabel</extends>
<header>clickablelabel.h</header>
</customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../data/icons.qrc"/> <include location="../data/icons.qrc"/>

View File

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

View File

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

View File

@ -98,7 +98,7 @@ void BookmarksToolbar::addBookmark(const BookmarksModel::Bookmark &bookmark)
action->setText(title); action->setText(title);
action->setData(bookmark.url); action->setData(bookmark.url);
action->setIcon(_iconForUrl(bookmark.url)); action->setIcon(bookmark.icon);
QToolButton* button = new QToolButton(this); QToolButton* button = new QToolButton(this);
button->setDefaultAction(action); button->setDefaultAction(action);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@ -153,7 +153,7 @@ void BookmarksToolbar::bookmarkEdited(const BookmarksModel::Bookmark &before, co
action->setText(title); action->setText(title);
action->setData(after.url); action->setData(after.url);
action->setIcon(_iconForUrl(after.url)); action->setIcon(after.icon);
button->setToolTip(after.url.toEncoded()); button->setToolTip(after.url.toEncoded());
button->setWhatsThis(after.title); button->setWhatsThis(after.title);
} }
@ -165,10 +165,11 @@ void BookmarksToolbar::refreshBookmarks()
{ {
clear(); clear();
QSqlQuery query; 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()) { while(query.next()) {
QUrl url = query.value(1).toUrl();
QString title = query.value(0).toString(); QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl();
QIcon icon = IconProvider::iconFromBase64(query.value(2).toByteArray());
QString title_ = title; QString title_ = title;
QAction* action = new QAction(this); QAction* action = new QAction(this);
if (title.length()>15) { if (title.length()>15) {
@ -178,7 +179,7 @@ void BookmarksToolbar::refreshBookmarks()
action->setText(title); action->setText(title);
action->setData(url); action->setData(url);
action->setIcon(_iconForUrl(url)); action->setIcon(icon);
QToolButton* button = new QToolButton(this); QToolButton* button = new QToolButton(this);
button->setDefaultAction(action); button->setDefaultAction(action);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 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); 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->removeCookie, SIGNAL(clicked()), this, SLOT(removeCookie()));
connect(ui->close, SIGNAL(clicked(QAbstractButton*)), this, SLOT(hide())); connect(ui->close, SIGNAL(clicked(QAbstractButton*)), this, SLOT(hide()));
connect(ui->search, SIGNAL(returnPressed()), this, SLOT(search())); 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->search->setInactiveText(tr("Search"));
ui->cookieTree->setDefaultItemShowMode(TreeWidget::ItemsCollapsed);
} }
void CookieManager::removeAll() void CookieManager::removeAll()
@ -68,7 +70,7 @@ void CookieManager::removeCookie()
m_cookies.removeOne(cok); m_cookies.removeOne(cok);
} }
delete current; ui->cookieTree->deleteItem(current);
mApp->cookieJar()->setAllCookies(m_cookies); mApp->cookieJar()->setAllCookies(m_cookies);
refreshTable(false); refreshTable(false);
return; return;
@ -183,6 +185,5 @@ void CookieManager::search()
CookieManager::~CookieManager() CookieManager::~CookieManager()
{ {
qDebug() << __FUNCTION__ << "called";
delete ui; delete ui;
} }

View File

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

View File

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

View File

@ -44,12 +44,12 @@ public slots:
void search(const QString &searchText); void search(const QString &searchText);
private slots: private slots:
void optimizeDb();
void itemDoubleClicked(QTreeWidgetItem* item); void itemDoubleClicked(QTreeWidgetItem* item);
void deleteItem(); void deleteItem();
void clearHistory(); void clearHistory();
void contextMenuRequested(const QPoint &position); void contextMenuRequested(const QPoint &position);
void loadInNewTab(); void loadInNewTab();
void itemControlClicked(QTreeWidgetItem* item);
void historyEntryAdded(const HistoryModel::HistoryEntry &entry); void historyEntryAdded(const HistoryModel::HistoryEntry &entry);
void historyEntryDeleted(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> <normaloff>:/icons/qupzilla.png</normaloff>:/icons/qupzilla.png</iconset>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3"> <item row="0" column="0" colspan="4">
<widget class="TreeWidget" name="historyTree"> <widget class="TreeWidget" name="historyTree">
<property name="contextMenuPolicy"> <property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum> <enum>Qt::CustomContextMenu</enum>
@ -71,6 +71,20 @@
</property> </property>
</spacer> </spacer>
</item> </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> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
@ -79,6 +93,11 @@
<extends>QTreeWidget</extends> <extends>QTreeWidget</extends>
<header>treewidget.h</header> <header>treewidget.h</header>
</customwidget> </customwidget>
<customwidget>
<class>ClickableLabel</class>
<extends>QLabel</extends>
<header>clickablelabel.h</header>
</customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../data/icons.qrc"/> <include location="../data/icons.qrc"/>

View File

@ -18,6 +18,7 @@
#include "historymodel.h" #include "historymodel.h"
#include "webview.h" #include "webview.h"
#include "qupzilla.h" #include "qupzilla.h"
#include "iconprovider.h"
HistoryModel::HistoryModel(QupZilla* mainClass, QObject* parent) HistoryModel::HistoryModel(QupZilla* mainClass, QObject* parent)
: QObject(parent) : QObject(parent)
@ -78,7 +79,7 @@ int HistoryModel::addHistoryEntry(WebView* view)
if (!m_isSaving) if (!m_isSaving)
return -2; return -2;
QString url = view->url().toString(); QString url = view->url().toEncoded();
QString title = view->title(); QString title = view->title();
return addHistoryEntry(url, title); return addHistoryEntry(url, title);
} }
@ -163,3 +164,36 @@ bool HistoryModel::isSaving()
{ {
return m_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 <QSqlQuery>
#include <QDateTime> #include <QDateTime>
#include <QFile> #include <QFile>
#include <QIcon>
#include <QUrl> #include <QUrl>
class QupZilla; class QupZilla;
class WebView; class WebView;
class QIcon;
class HistoryModel : public QObject class HistoryModel : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -40,6 +42,8 @@ public:
QString title; QString title;
}; };
static QString titleCaseLocalizedMonth(int month);
int addHistoryEntry(WebView* view); int addHistoryEntry(WebView* view);
int addHistoryEntry(const QString &url, QString &title); int addHistoryEntry(const QString &url, QString &title);
bool deleteHistoryEntry(int index); 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 "browsinglibrary.h"
#include "ui_browsinglibrary.h" #include "ui_browsinglibrary.h"
#include "historymanager.h" #include "historymanager.h"
#include "bookmarksmanager.h" #include "bookmarksmanager.h"
#include "rssmanager.h" #include "rssmanager.h"
#include "mainapplication.h" #include "mainapplication.h"
#include "downloaditem.h"
BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent) BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent)
: QWidget(parent) : QWidget(parent)
@ -16,7 +34,10 @@ BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent)
, m_rssLoaded(false) , m_rssLoaded(false)
{ {
ui->setupUi(this); 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 //CENTER on scren
const QRect screen = QApplication::desktop()->screenGeometry(); const QRect screen = QApplication::desktop()->screenGeometry();
@ -29,6 +50,7 @@ BrowsingLibrary::BrowsingLibrary(QupZilla* mainClass, QWidget *parent)
ui->tabs->SetMode(FancyTabWidget::Mode_LargeSidebar); ui->tabs->SetMode(FancyTabWidget::Mode_LargeSidebar);
ui->tabs->SetBackgroundPixmap(QPixmap(":icons/other/background.png")); ui->tabs->SetBackgroundPixmap(QPixmap(":icons/other/background.png"));
ui->tabs->setFocus();
connect(ui->tabs, SIGNAL(CurrentChanged(int)), this, SLOT(currentIndexChanged(int))); connect(ui->tabs, SIGNAL(CurrentChanged(int)), this, SLOT(currentIndexChanged(int)));
connect(ui->searchLine, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(search())); connect(ui->searchLine, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(search()));
@ -43,6 +65,7 @@ void BrowsingLibrary::currentIndexChanged(int index)
m_historyLoaded = true; m_historyLoaded = true;
} }
ui->searchLine->show(); ui->searchLine->show();
search();
break; break;
case 1: case 1:
@ -50,7 +73,8 @@ void BrowsingLibrary::currentIndexChanged(int index)
m_bookmarksManager->refreshTable(); m_bookmarksManager->refreshTable();
m_bookmarksLoaded = true; m_bookmarksLoaded = true;
} }
ui->searchLine->hide(); ui->searchLine->show();
search();
break; break;
case 2: case 2:
@ -68,7 +92,10 @@ void BrowsingLibrary::currentIndexChanged(int index)
void BrowsingLibrary::search() 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) void BrowsingLibrary::showHistory(QupZilla* mainClass)
@ -81,6 +108,7 @@ void BrowsingLibrary::showHistory(QupZilla* mainClass)
m_historyManager->refreshTable(); m_historyManager->refreshTable();
m_historyLoaded = true; m_historyLoaded = true;
} }
raise();
} }
void BrowsingLibrary::showBookmarks(QupZilla* mainClass) void BrowsingLibrary::showBookmarks(QupZilla* mainClass)
@ -93,6 +121,7 @@ void BrowsingLibrary::showBookmarks(QupZilla* mainClass)
m_bookmarksManager->refreshTable(); m_bookmarksManager->refreshTable();
m_bookmarksLoaded = true; m_bookmarksLoaded = true;
} }
raise();
} }
void BrowsingLibrary::showRSS(QupZilla* mainClass) void BrowsingLibrary::showRSS(QupZilla* mainClass)
@ -102,6 +131,27 @@ void BrowsingLibrary::showRSS(QupZilla* mainClass)
m_rssManager->setMainWindow(mainClass); m_rssManager->setMainWindow(mainClass);
m_rssManager->refreshTable(); m_rssManager->refreshTable();
m_rssLoaded = true; 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() 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 #ifndef LIBRARY_H
#define LIBRARY_H #define LIBRARY_H
#include <QWidget> #include <QWidget>
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QFileInfo>
#include <QCloseEvent>
namespace Ui { namespace Ui {
class BrowsingLibrary; class BrowsingLibrary;
@ -24,6 +43,8 @@ public:
void showBookmarks(QupZilla* mainClass); void showBookmarks(QupZilla* mainClass);
void showRSS(QupZilla* mainClass); void showRSS(QupZilla* mainClass);
void optimizeDatabase();
HistoryManager* historyManager() { return m_historyManager; } HistoryManager* historyManager() { return m_historyManager; }
BookmarksManager* bookmarksManager() { return m_bookmarksManager; } BookmarksManager* bookmarksManager() { return m_bookmarksManager; }
RSSManager* rssManager() { return m_rssManager; } RSSManager* rssManager() { return m_rssManager; }
@ -33,6 +54,7 @@ private slots:
void search(); void search();
private: private:
void closeEvent(QCloseEvent *e);
Ui::BrowsingLibrary *ui; Ui::BrowsingLibrary *ui;
HistoryManager* m_historyManager; HistoryManager* m_historyManager;
BookmarksManager* m_bookmarksManager; BookmarksManager* m_bookmarksManager;

View File

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

View File

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

View File

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

View File

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

View File

@ -98,10 +98,31 @@
</property> </property>
</spacer> </spacer>
</item> </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> </layout>
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>ClickableLabel</class>
<extends>QLabel</extends>
<header>clickablelabel.h</header>
</customwidget>
</customwidgets>
<resources> <resources>
<include location="../data/icons.qrc"/> <include location="../data/icons.qrc"/>
</resources> </resources>

View File

@ -77,7 +77,7 @@ void RSSWidget::addRss()
else else
title = button->toolTip(); 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); RSSNotification* notif = new RSSNotification(title, m_view);
m_view->addNotification(notif); m_view->addNotification(notif);
close(); close();

View File

@ -34,10 +34,11 @@ BookmarksSideBar::BookmarksSideBar(QupZilla* mainClass, QWidget* parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
ui->bookmarksTree->setDefaultItemShowMode(TreeWidget::ItemsExpanded);
connect(ui->bookmarksTree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenuRequested(const QPoint &))); 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(itemControlClicked(QTreeWidgetItem*)), this, SLOT(itemControlClicked(QTreeWidgetItem*)));
connect(ui->bookmarksTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(itemDoubleClicked(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(bookmarkAdded(BookmarksModel::Bookmark)), this, SLOT(addBookmark(BookmarksModel::Bookmark)));
connect(m_bookmarksModel, SIGNAL(bookmarkDeleted(BookmarksModel::Bookmark)), this, SLOT(removeBookmark(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()); item->setToolTip(0, bookmark.url.toEncoded());
if (bookmark.folder != "unsorted") if (bookmark.folder != "unsorted")
ui->bookmarksTree->addToParentItem(translatedFolder, item); ui->bookmarksTree->appendToParentItem(translatedFolder, item);
else else
ui->bookmarksTree->addTopLevelItem(item); ui->bookmarksTree->addTopLevelItem(item);
@ -145,7 +146,7 @@ void BookmarksSideBar::removeBookmark(const BookmarksModel::Bookmark &bookmark)
return; return;
QTreeWidgetItem* item = list.at(0); QTreeWidgetItem* item = list.at(0);
if (item && item->whatsThis(0) == QString::number(bookmark.id)) if (item && item->whatsThis(0) == QString::number(bookmark.id))
delete item; ui->bookmarksTree->deleteItem(item);
} else { } else {
QList<QTreeWidgetItem*> list = ui->bookmarksTree->findItems(BookmarksModel::toTranslatedFolder(bookmark.folder), Qt::MatchExactly); QList<QTreeWidgetItem*> list = ui->bookmarksTree->findItems(BookmarksModel::toTranslatedFolder(bookmark.folder), Qt::MatchExactly);
if (list.count() == 0) if (list.count() == 0)
@ -158,7 +159,7 @@ void BookmarksSideBar::removeBookmark(const BookmarksModel::Bookmark &bookmark)
if (!item) if (!item)
continue; continue;
if (item->text(0) == bookmark.title && item->whatsThis(0) == QString::number(bookmark.id)) { if (item->text(0) == bookmark.title && item->whatsThis(0) == QString::number(bookmark.id)) {
delete item; ui->bookmarksTree->deleteItem(item);
return; return;
} }
} }
@ -182,7 +183,7 @@ void BookmarksSideBar::removeFolder(const QString &name)
{ {
QTreeWidgetItem* item = ui->bookmarksTree->findItems(name, Qt::MatchExactly).at(0); QTreeWidgetItem* item = ui->bookmarksTree->findItems(name, Qt::MatchExactly).at(0);
if (item) if (item)
delete item; ui->bookmarksTree->deleteItem(item);
} }
void BookmarksSideBar::refreshTable() 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(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT(itemDoubleClicked(QTreeWidgetItem*)));
connect(ui->historyTree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenuRequested(const QPoint &))); connect(ui->historyTree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenuRequested(const QPoint &)));
connect(ui->historyTree, SIGNAL(itemControlClicked(QTreeWidgetItem*)), this, SLOT(itemControlClicked(QTreeWidgetItem*))); 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(historyEntryAdded(HistoryModel::HistoryEntry)), this, SLOT(historyEntryAdded(HistoryModel::HistoryEntry)));
connect(m_historyModel, SIGNAL(historyEntryDeleted(HistoryModel::HistoryEntry)), this, SLOT(historyEntryDeleted(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; QMenu menu;
menu.addAction(tr("Open link in actual tab"), p_QupZilla, SLOT(loadActionUrl()))->setData(link); 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.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 //Prevent choosing first option with double rightclick
QPoint pos = QCursor::pos(); QPoint pos = QCursor::pos();
@ -80,36 +79,33 @@ void HistorySideBar::contextMenuRequested(const QPoint &position)
menu.exec(p); 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) 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"); QDate date = entry.date.date();
QString month = locale.monthName(entry.date.toString("M").toInt()); QString localDate;
localDate = entry.date.toString(" d. ") + month + entry.date.toString(" yyyy");
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); QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0);
if (findParent.count() == 1) { if (findParent.count() == 1) {
item = new QTreeWidgetItem(findParent.at(0)); parentItem = findParent.at(0);
} else { } else {
QTreeWidgetItem* newParent = new QTreeWidgetItem(ui->historyTree); parentItem = new QTreeWidgetItem();
newParent->setText(0, localDate); parentItem->setText(0, localDate);
newParent->setIcon(0, QIcon(":/icons/menu/history_entry.png")); parentItem->setIcon(0, QIcon(":/icons/menu/history_entry.png"));
ui->historyTree->addTopLevelItem(newParent); ui->historyTree->addTopLevelItem(parentItem);
item = new QTreeWidgetItem(newParent);
} }
item->setText(0, entry.title); item->setText(0, entry.title);
@ -118,7 +114,7 @@ void HistorySideBar::historyEntryAdded(const HistoryModel::HistoryEntry &entry)
item->setWhatsThis(1, QString::number(entry.id)); item->setWhatsThis(1, QString::number(entry.id));
item->setIcon(0, _iconForUrl(entry.url)); item->setIcon(0, _iconForUrl(entry.url));
ui->historyTree->addTopLevelItem(item); ui->historyTree->prependToParentItem(parentItem, item);
} }
void HistorySideBar::historyEntryDeleted(const HistoryModel::HistoryEntry &entry) void HistorySideBar::historyEntryDeleted(const HistoryModel::HistoryEntry &entry)
@ -129,7 +125,7 @@ void HistorySideBar::historyEntryDeleted(const HistoryModel::HistoryEntry &entry
continue; continue;
if (item->whatsThis(1).toInt() != entry.id) if (item->whatsThis(1).toInt() != entry.id)
continue; continue;
delete item; ui->historyTree->deleteItem(item);
return; return;
} }
} }
@ -167,8 +163,8 @@ void HistorySideBar::refreshTable()
ui->historyTree->setUpdatesEnabled(false); ui->historyTree->setUpdatesEnabled(false);
ui->historyTree->clear(); ui->historyTree->clear();
QLocale locale(p_QupZilla->activeLanguage().remove(".qm")); QDate todayDate = QDate::currentDate();
QDate startOfWeekDate = todayDate.addDays(1 - todayDate.dayOfWeek());
QSqlQuery query; QSqlQuery query;
query.exec("SELECT title, url, id, date FROM history ORDER BY date DESC"); 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(); QString title = query.value(0).toString();
QUrl url = query.value(1).toUrl(); QUrl url = query.value(1).toUrl();
int id = query.value(2).toInt(); int id = query.value(2).toInt();
qint64 unixDate = query.value(3).toLongLong(); QDate date = QDateTime::fromMSecsSinceEpoch(query.value(3).toLongLong()).date();
QDateTime date = QDateTime(); QString localDate;
date = date.fromMSecsSinceEpoch(unixDate);
QString localDate; //date.toString("dddd d. MMMM yyyy"); if (date == todayDate)
//QString day = locale.dayName(date.toString("d").toInt()); localDate = tr("Today");
else if (date >= startOfWeekDate)
QString month = locale.monthName(date.toString("M").toInt()); localDate = tr("This Week");
localDate = date.toString(" d. ") + month + date.toString(" yyyy"); 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;
QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0); QList<QTreeWidgetItem*> findParent = ui->historyTree->findItems(localDate, 0);

View File

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

View File

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

View File

@ -19,7 +19,39 @@
TreeWidget::TreeWidget(QWidget* parent) : TreeWidget::TreeWidget(QWidget* parent) :
QTreeWidget(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) void TreeWidget::mousePressEvent(QMouseEvent* event)
@ -30,67 +62,117 @@ void TreeWidget::mousePressEvent(QMouseEvent* event)
QTreeWidget::mousePressEvent(event); QTreeWidget::mousePressEvent(event);
} }
QList<QTreeWidgetItem*> allTreeItems; void TreeWidget::iterateAllItems(QTreeWidgetItem* parent)
void iterateAllItems(QTreeWidgetItem* parent, QTreeWidget* treeWidget, bool includeTopLevelItems = true)
{ {
int count = parent ? parent->childCount() : treeWidget->topLevelItemCount(); int count = parent ? parent->childCount() : topLevelItemCount();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
QTreeWidgetItem *item = QTreeWidgetItem *item = parent ? parent->child(i) : topLevelItem(i);
parent ? parent->child(i) : treeWidget->topLevelItem(i);
if (includeTopLevelItems) if (item->childCount() == 0)
allTreeItems.append(item); m_allTreeItems.append(item);
else if (item->childCount() == 0)
allTreeItems.append(item);
iterateAllItems(item, treeWidget, includeTopLevelItems); iterateAllItems(item);
} }
} }
QList<QTreeWidgetItem*> TreeWidget::allItems(bool includeTopLevelItems) QList<QTreeWidgetItem*> TreeWidget::allItems()
{ {
allTreeItems.clear(); if (m_refreshAllItemsNeeded) {
iterateAllItems(0, this, includeTopLevelItems); m_allTreeItems.clear();
return allTreeItems; iterateAllItems(0);
} m_refreshAllItemsNeeded = false;
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));
} }
return m_allTreeItems;
} }
void TreeWidget::filterString(QString string)
void TreeWidget::filterStringWithTopItems(QString string)
{ {
expandAll();
QList<QTreeWidgetItem*> _allItems = allItems(); QList<QTreeWidgetItem*> _allItems = allItems();
if (string.isEmpty()) { if (string.isEmpty()) {
foreach (QTreeWidgetItem* item, _allItems) foreach (QTreeWidgetItem* item, _allItems)
item->setHidden(false); item->setHidden(false);
for (int i = 0; i < topLevelItemCount(); i++)
topLevelItem(i)->setHidden(false);
if (m_showMode == ItemsCollapsed)
collapseAll();
} else { } else {
foreach (QTreeWidgetItem* item, _allItems) foreach (QTreeWidgetItem* item, _allItems) {
item->setHidden(!item->text(0).contains(string, Qt::CaseInsensitive)); 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) if (list.count() == 0)
return false; return false;
QTreeWidgetItem* parentItem = list.at(0); QTreeWidgetItem* parentItem = list.at(0);
if (!parentItem) if (!parentItem)
return false; return false;
m_allTreeItems.append(item);
parentItem->addChild(item); parentItem->addChild(item);
return true; 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 Q_OBJECT
public: public:
explicit TreeWidget(QWidget* parent = 0); explicit TreeWidget(QWidget* parent = 0);
QList<QTreeWidgetItem*> allItems(bool includeTopLevelItems = true); enum ItemShowMode { ItemsCollapsed = 0, ItemsExpanded = 1 };
bool addToParentItem(const QString &text, QTreeWidgetItem* item); 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: signals:
void itemControlClicked(QTreeWidgetItem* item); void itemControlClicked(QTreeWidgetItem* item);
public slots: public slots:
void filterStringWithTopItems(QString string); void filterString(QString string);
void filterStringWithoutTopItems(QString string);
private slots:
void sheduleRefresh();
private: private:
void mousePressEvent(QMouseEvent* event); 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() 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() void TabBar::pinTab()

View File

@ -678,7 +678,7 @@ void WebView::bookmarkLink()
if (action->data().isNull()) if (action->data().isNull())
p_QupZilla->bookmarkPage(); p_QupZilla->bookmarkPage();
else 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> <translation>Přidat složku</translation>
</message> </message>
<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> <source>Add new folder</source>
<translation>Přidat složku</translation> <translation>Přidat složku</translation>
</message> </message>
<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> <source>Choose name for new bookmark folder: </source>
<translation>Zvolte jméno pro novou složku:</translation> <translation>Zvolte jméno pro novou složku:</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="109"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="119"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="159"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="169"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="184"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="194"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="209"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="220"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="337"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="379"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="390"/>
<source>Bookmarks In Menu</source> <source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation> <translation>Záložky v menu</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="160"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="170"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="189"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="199"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="211"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="222"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="338"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="349"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="380"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="391"/>
<source>Bookmarks In ToolBar</source> <source>Bookmarks In ToolBar</source>
<translation>Panel záložek</translation> <translation>Panel záložek</translation>
</message> </message>
<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> <source>Open link in actual &amp;tab</source>
<translation>Otevřít odkaz v &amp;aktuálním panelu</translation> <translation>Otevřít odkaz v &amp;aktuálním panelu</translation>
</message> </message>
<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> <source>Open link in &amp;new tab</source>
<translation>Otevřít odkaz v novém &amp;panelu</translation> <translation>Otevřít odkaz v novém &amp;panelu</translation>
</message> </message>
<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> <source>Move bookmark to &amp;folder</source>
<translation>Přesunout záložku do &amp;složky</translation> <translation>Přesunout záložku do &amp;složky</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="178"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation>&amp;Zavřít</translation> <translation>&amp;Zavřít</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="158"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="336"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="347"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="378"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="389"/>
<source>Unsorted Bookmarks</source> <source>Unsorted Bookmarks</source>
<translation>Nesetříděné záložky</translation> <translation>Nesetříděné záložky</translation>
</message> </message>
<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> <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> <translation>&lt;b&gt;Upozornění: &lt;/b&gt;Tuto stránku již máte v záložkách!</translation>
</message> </message>
<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> <source>Choose name and location of bookmark.</source>
<translation>Zvolte jméno a umístění záložky.</translation> <translation>Zvolte jméno a umístění záložky.</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="359"/>
<source>Add New Bookmark</source> <source>Add New Bookmark</source>
<translation>Přidat záložku</translation> <translation>Přidat záložku</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="386"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="397"/>
<source>Choose folder for bookmarks:</source> <source>Choose folder for bookmarks:</source>
<translation>Zvolte složku pro záložky:</translation> <translation>Zvolte složku pro záložky:</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="388"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="399"/>
<source>Bookmark All Tabs</source> <source>Bookmark All Tabs</source>
<translation>Přidat všechny panely do záložek</translation> <translation>Přidat všechny panely do záložek</translation>
</message> </message>
@ -399,22 +404,22 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>BookmarksModel</name> <name>BookmarksModel</name>
<message> <message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="286"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="293"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="299"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="306"/>
<source>Bookmarks In Menu</source> <source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation> <translation>Záložky v menu</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="288"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="295"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="301"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="308"/>
<source>Bookmarks In ToolBar</source> <source>Bookmarks In ToolBar</source>
<translation>Panel záložek</translation> <translation>Panel záložek</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="290"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="297"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="303"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="310"/>
<source>Unsorted Bookmarks</source> <source>Unsorted Bookmarks</source>
<translation>Nesetříděné záložky</translation> <translation>Nesetříděné záložky</translation>
</message> </message>
@ -427,46 +432,46 @@ p, li { white-space: pre-wrap; }
<translation>Hledat...</translation> <translation>Hledat...</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="68"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="69"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<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> <source>Open link in actual &amp;tab</source>
<translation>Otevřít odkaz v &amp;aktuálním panelu</translation> <translation>Otevřít odkaz v &amp;aktuálním panelu</translation>
</message> </message>
<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> <source>Open link in &amp;new tab</source>
<translation>Otevřít odkaz v novém &amp;panelu</translation> <translation>Otevřít odkaz v novém &amp;panelu</translation>
</message> </message>
<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> <source>Move bookmark to &amp;folder</source>
<translation>Přesunout záložku do &amp;složky</translation> <translation>Přesunout záložku do &amp;složky</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="106"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/>
<source>Unsorted Bookmarks</source> <source>Unsorted Bookmarks</source>
<translation>Nesetříděné záložky</translation> <translation>Nesetříděné záložky</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="196"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="197"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="221"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="222"/>
<source>Bookmarks In Menu</source> <source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation> <translation>Záložky v menu</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="109"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="201"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="202"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="223"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="224"/>
<source>Bookmarks In ToolBar</source> <source>Bookmarks In ToolBar</source>
<translation>Panel záložek</translation> <translation>Panel záložek</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="114"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="115"/>
<source>&amp;Delete</source> <source>&amp;Delete</source>
<translation>&amp;Odstranit</translation> <translation>&amp;Odstranit</translation>
</message> </message>
@ -585,20 +590,30 @@ p, li { white-space: pre-wrap; }
<translation>Hledat...</translation> <translation>Hledat...</translation>
</message> </message>
<message> <message>
<location filename="../src/other/browsinglibrary.cpp" line="26"/> <location filename="../src/other/browsinglibrary.cpp" line="47"/>
<source>History</source> <source>History</source>
<translation>Historie</translation> <translation>Historie</translation>
</message> </message>
<message> <message>
<location filename="../src/other/browsinglibrary.cpp" line="27"/> <location filename="../src/other/browsinglibrary.cpp" line="48"/>
<source>Bookmarks</source> <source>Bookmarks</source>
<translation>Záložky</translation> <translation>Záložky</translation>
</message> </message>
<message> <message>
<location filename="../src/other/browsinglibrary.cpp" line="28"/> <location filename="../src/other/browsinglibrary.cpp" line="49"/>
<source>RSS</source> <source>RSS</source>
<translation>RSS</translation> <translation>RSS</translation>
</message> </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>
<context> <context>
<name>ClearPrivateData</name> <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="163"/>
<location filename="../src/cookies/cookiemanager.ui" line="170"/> <location filename="../src/cookies/cookiemanager.ui" line="170"/>
<location filename="../src/cookies/cookiemanager.ui" line="177"/> <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="97"/>
<location filename="../src/cookies/cookiemanager.cpp" line="98"/> <location filename="../src/cookies/cookiemanager.cpp" line="98"/>
<location filename="../src/cookies/cookiemanager.cpp" line="99"/> <location filename="../src/cookies/cookiemanager.cpp" line="99"/>
<location filename="../src/cookies/cookiemanager.cpp" line="100"/> <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> <source>&lt;cookie not selected&gt;</source>
<translation>&lt;nebylo zvoleno cookie&gt;</translation> <translation>&lt;nebylo zvoleno cookie&gt;</translation>
</message> </message>
@ -795,7 +810,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.ui" line="209"/> <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> <source>Remove cookie</source>
<translation>Odebrat cookie</translation> <translation>Odebrat cookie</translation>
</message> </message>
@ -805,69 +820,41 @@ p, li { white-space: pre-wrap; }
<translation>Del</translation> <translation>Del</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="43"/> <location filename="../src/cookies/cookiemanager.cpp" line="44"/>
<source>Search</source> <source>Search</source>
<translation>Vyhledávání</translation> <translation>Vyhledávání</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="48"/> <location filename="../src/cookies/cookiemanager.cpp" line="50"/>
<source>Confirmation</source> <source>Confirmation</source>
<translation>Potvrzení</translation> <translation>Potvrzení</translation>
</message> </message>
<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> <source>Are you sure to delete all cookies on your computer?</source>
<translation>Opravdu chcete vymazat všechny cookies z počítače?</translation> <translation>Opravdu chcete vymazat všechny cookies z počítače?</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="101"/> <location filename="../src/cookies/cookiemanager.cpp" line="103"/>
<source>Remove cookies</source> <source>Remove cookies</source>
<translation>Odebrat cookies</translation> <translation>Odebrat cookies</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/> <location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>Secure only</source> <source>Secure only</source>
<translation>Zabezpečené připojení</translation> <translation>Zabezpečené připojení</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/> <location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>All connections</source> <source>All connections</source>
<translation>Libovolný typ připojení</translation> <translation>Libovolný typ připojení</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="114"/> <location filename="../src/cookies/cookiemanager.cpp" line="116"/>
<source>Session cookie</source> <source>Session cookie</source>
<translation>konce relace</translation> <translation>konce relace</translation>
</message> </message>
</context> </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> <context>
<name>DownloadItem</name> <name>DownloadItem</name>
<message> <message>
@ -1143,32 +1130,55 @@ nebyl nalezen!</translation>
<translation>Vymazat celou historii</translation> <translation>Vymazat celou historii</translation>
</message> </message>
<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> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<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> <source>Open link in actual tab</source>
<translation>Otevřít odkaz v aktuálním panelu</translation> <translation>Otevřít odkaz v aktuálním panelu</translation>
</message> </message>
<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> <source>Open link in new tab</source>
<translation>Otevřít odkaz v novém panelu</translation> <translation>Otevřít odkaz v novém panelu</translation>
</message> </message>
<message> <message>
<location filename="../src/history/historymanager.cpp" line="107"/> <location filename="../src/history/historymanager.cpp" line="110"/>
<source>Close</source> <source>Close</source>
<translation>Zavřít</translation> <translation>Zavřít</translation>
</message> </message>
<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> <source>Confirmation</source>
<translation>Potvrzení</translation> <translation>Potvrzení</translation>
</message> </message>
<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> <source>Are you sure to delete all history?</source>
<translation>Opravdu chcete vymazat celou historii?</translation> <translation>Opravdu chcete vymazat celou historii?</translation>
</message> </message>
@ -1176,15 +1186,75 @@ nebyl nalezen!</translation>
<context> <context>
<name>HistoryModel</name> <name>HistoryModel</name>
<message> <message>
<location filename="../src/history/historymodel.cpp" line="42"/> <location filename="../src/history/historymodel.cpp" line="43"/>
<source>Failed loading page</source> <source>Failed loading page</source>
<translation>Chyba při načítání stránky</translation> <translation>Chyba při načítání stránky</translation>
</message> </message>
<message> <message>
<location filename="../src/history/historymodel.cpp" line="45"/> <location filename="../src/history/historymodel.cpp" line="46"/>
<source>No Named Page</source> <source>No Named Page</source>
<translation>Bezejmenná stránka</translation> <translation>Bezejmenná stránka</translation>
</message> </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>
<context> <context>
<name>HistorySideBar</name> <name>HistorySideBar</name>
@ -1199,25 +1269,43 @@ nebyl nalezen!</translation>
<translation>Titulek</translation> <translation>Titulek</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/historysidebar.cpp" line="60"/> <location filename="../src/sidebar/historysidebar.cpp" line="61"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<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> <source>Open link in actual tab</source>
<translation>Otevřít odkaz v aktuálním panelu</translation> <translation>Otevřít odkaz v aktuálním panelu</translation>
</message> </message>
<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> <source>Open link in new tab</source>
<translation>Otevřít odkaz v novém panelu</translation> <translation>Otevřít odkaz v novém panelu</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/historysidebar.cpp" line="75"/> <location filename="../src/sidebar/historysidebar.cpp" line="76"/>
<source>Remove Entry</source> <source>Remove Entry</source>
<translation>Odstranit položku</translation> <translation>Odstranit položku</translation>
</message> </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>
<context> <context>
<name>LocationBar</name> <name>LocationBar</name>
@ -1257,12 +1345,12 @@ nebyl nalezen!</translation>
<context> <context>
<name>MainApplication</name> <name>MainApplication</name>
<message> <message>
<location filename="../src/app/mainapplication.cpp" line="517"/> <location filename="../src/app/mainapplication.cpp" line="514"/>
<source>Last session crashed</source> <source>Last session crashed</source>
<translation>Poslední relace spadla</translation> <translation>Poslední relace spadla</translation>
</message> </message>
<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> <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> <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> </message>
@ -2591,95 +2679,101 @@ nebyl nalezen!</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="40"/> <location filename="../src/rss/rssmanager.ui" line="40"/>
<location filename="../src/rss/rssmanager.cpp" line="115"/>
<source>Empty</source> <source>Empty</source>
<translation>Prázdný</translation> <translation>Prázdný</translation>
</message> </message>
<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; <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> 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; <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> Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="106"/> <location filename="../src/rss/rssmanager.ui" line="64"/>
<source>Reload</source> <source>Reload</source>
<translation>Obnovit</translation> <translation>Obnovit</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="116"/> <location filename="../src/rss/rssmanager.ui" line="74"/>
<source>Edit feed</source> <source>Edit feed</source>
<translation>Upravit kanál</translation> <translation>Upravit kanál</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="126"/> <location filename="../src/rss/rssmanager.ui" line="84"/>
<source>Delete feed</source> <source>Delete feed</source>
<translation>Smazat kanál</translation> <translation>Smazat kanál</translation>
</message> </message>
<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> <source>News</source>
<translation>Novinky</translation> <translation>Novinky</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="90"/> <location filename="../src/rss/rssmanager.cpp" line="88"/>
<location filename="../src/rss/rssmanager.cpp" line="113"/> <location filename="../src/rss/rssmanager.cpp" line="126"/>
<source>Loading...</source> <source>Loading...</source>
<translation>Načítám...</translation> <translation>Načítám...</translation>
</message> </message>
<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> <source>Fill title and URL of a feed: </source>
<translation>Vyplňte titulek a adresu kanálu: </translation> <translation>Vyplňte titulek a adresu kanálu: </translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="155"/> <location filename="../src/rss/rssmanager.cpp" line="164"/>
<source>Feed title: </source> <source>Feed title: </source>
<translation>Titulek kanálu: </translation> <translation>Titulek kanálu: </translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="156"/> <location filename="../src/rss/rssmanager.cpp" line="165"/>
<source>Feed URL: </source> <source>Feed URL: </source>
<translation>Adresa kanálu: </translation> <translation>Adresa kanálu: </translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="162"/> <location filename="../src/rss/rssmanager.cpp" line="171"/>
<source>Edit RSS Feed</source> <source>Edit RSS Feed</source>
<translation>Upravit kanál</translation> <translation>Upravit kanál</translation>
</message> </message>
<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> <source>Open link in actual tab</source>
<translation>Otevřít odkaz v aktuálním panelu</translation> <translation>Otevřít odkaz v aktuálním panelu</translation>
</message> </message>
<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> <source>Open link in new tab</source>
<translation>Otevřít odkaz v novém panelu</translation> <translation>Otevřít odkaz v novém panelu</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="202"/> <location filename="../src/rss/rssmanager.cpp" line="211"/>
<source>Close</source> <source>Close</source>
<translation>Zavřít</translation> <translation>Zavřít</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="225"/> <location filename="../src/rss/rssmanager.cpp" line="234"/>
<location filename="../src/rss/rssmanager.cpp" line="231"/> <location filename="../src/rss/rssmanager.cpp" line="240"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="297"/> <location filename="../src/rss/rssmanager.cpp" line="306"/>
<source>Error in fetching feed</source> <source>Error in fetching feed</source>
<translation>Chyba při stahování kanálu</translation> <translation>Chyba při stahování kanálu</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="318"/> <location filename="../src/rss/rssmanager.cpp" line="334"/>
<source>RSS feed duplicated</source> <source>RSS feed duplicated</source>
<translation>Duplikovaný kanál</translation> <translation>Duplikovaný kanál</translation>
</message> </message>
<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> <source>You already have this feed.</source>
<translation>Tento kanál již odebíráte.</translation> <translation>Tento kanál již odebíráte.</translation>
</message> </message>

View File

@ -315,87 +315,92 @@ p, li { white-space: pre-wrap; }
<translation>Pridať zložku</translation> <translation>Pridať zložku</translation>
</message> </message>
<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> <source>Add new folder</source>
<translation>Pridať novú zložku</translation> <translation>Pridať novú zložku</translation>
</message> </message>
<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> <source>Choose name for new bookmark folder: </source>
<translation>Zvoľte meno pre novú zložku:</translation> <translation>Zvoľte meno pre novú zložku:</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="109"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="119"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="159"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="169"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="184"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="194"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="209"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="220"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="337"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="379"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="390"/>
<source>Bookmarks In Menu</source> <source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation> <translation>Záložky v menu</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="160"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="170"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="189"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="199"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="211"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="222"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="338"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="349"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="380"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="391"/>
<source>Bookmarks In ToolBar</source> <source>Bookmarks In ToolBar</source>
<translation>Panel záložiek</translation> <translation>Panel záložiek</translation>
</message> </message>
<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> <source>Open link in actual &amp;tab</source>
<translation>Otvoriť odkaz v &amp;aktuálnom panely</translation> <translation>Otvoriť odkaz v &amp;aktuálnom panely</translation>
</message> </message>
<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> <source>Open link in &amp;new tab</source>
<translation>Otvoriť odkaz na &amp;novom panely</translation> <translation>Otvoriť odkaz na &amp;novom panely</translation>
</message> </message>
<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> <source>Move bookmark to &amp;folder</source>
<translation>Presunúť záložku do &amp;zložky</translation> <translation>Presunúť záložku do &amp;zložky</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="178"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation>&amp;Zavrieť</translation> <translation>&amp;Zavrieť</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="158"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="168"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="336"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="347"/>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="378"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="389"/>
<source>Unsorted Bookmarks</source> <source>Unsorted Bookmarks</source>
<translation>Nezotriedené záložky</translation> <translation>Nezotriedené záložky</translation>
</message> </message>
<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> <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> <translation>&lt;b&gt;Upozornenie: &lt;/b&gt;Túto stránku máte už v záložkách!</translation>
</message> </message>
<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> <source>Choose name and location of bookmark.</source>
<translation>Zvoľte meno a umiestnenie záložky.</translation> <translation>Zvoľte meno a umiestnenie záložky.</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="348"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="359"/>
<source>Add New Bookmark</source> <source>Add New Bookmark</source>
<translation>Pridať záložku</translation> <translation>Pridať záložku</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="386"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="397"/>
<source>Choose folder for bookmarks:</source> <source>Choose folder for bookmarks:</source>
<translation>Zvoľte zložku pre záložku:</translation> <translation>Zvoľte zložku pre záložku:</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmanager.cpp" line="388"/> <location filename="../src/bookmarks/bookmarksmanager.cpp" line="399"/>
<source>Bookmark All Tabs</source> <source>Bookmark All Tabs</source>
<translation>Pridať všetky panely do záložiek</translation> <translation>Pridať všetky panely do záložiek</translation>
</message> </message>
@ -403,22 +408,22 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>BookmarksModel</name> <name>BookmarksModel</name>
<message> <message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="286"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="293"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="299"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="306"/>
<source>Bookmarks In Menu</source> <source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation> <translation>Záložky v menu</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="244"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="251"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="288"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="295"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="301"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="308"/>
<source>Bookmarks In ToolBar</source> <source>Bookmarks In ToolBar</source>
<translation>Panel záložiek</translation> <translation>Panel záložiek</translation>
</message> </message>
<message> <message>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="290"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="297"/>
<location filename="../src/bookmarks/bookmarksmodel.cpp" line="303"/> <location filename="../src/bookmarks/bookmarksmodel.cpp" line="310"/>
<source>Unsorted Bookmarks</source> <source>Unsorted Bookmarks</source>
<translation>Nezotriedené záložky</translation> <translation>Nezotriedené záložky</translation>
</message> </message>
@ -431,46 +436,46 @@ p, li { white-space: pre-wrap; }
<translation>Hľadať...</translation> <translation>Hľadať...</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="68"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="69"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<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> <source>Open link in actual &amp;tab</source>
<translation>Otvoriť odkaz v &amp;aktuálnom panely</translation> <translation>Otvoriť odkaz v &amp;aktuálnom panely</translation>
</message> </message>
<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> <source>Open link in &amp;new tab</source>
<translation>Otvoriť odkaz na &amp;novom panely</translation> <translation>Otvoriť odkaz na &amp;novom panely</translation>
</message> </message>
<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> <source>Move bookmark to &amp;folder</source>
<translation>Presunúť záložku do &amp;zložky</translation> <translation>Presunúť záložku do &amp;zložky</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="106"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/>
<source>Unsorted Bookmarks</source> <source>Unsorted Bookmarks</source>
<translation>Nezotriedené záložky</translation> <translation>Nezotriedené záložky</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="107"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="196"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="197"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="221"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="222"/>
<source>Bookmarks In Menu</source> <source>Bookmarks In Menu</source>
<translation>Záložky v menu</translation> <translation>Záložky v menu</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="108"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="109"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="201"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="202"/>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="223"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="224"/>
<source>Bookmarks In ToolBar</source> <source>Bookmarks In ToolBar</source>
<translation>Panel záložiek</translation> <translation>Panel záložiek</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/bookmarkssidebar.cpp" line="114"/> <location filename="../src/sidebar/bookmarkssidebar.cpp" line="115"/>
<source>&amp;Delete</source> <source>&amp;Delete</source>
<translation>&amp;Odstrániť</translation> <translation>&amp;Odstrániť</translation>
</message> </message>
@ -586,21 +591,31 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location filename="../src/other/browsinglibrary.ui" line="95"/> <location filename="../src/other/browsinglibrary.ui" line="95"/>
<source>Search...</source> <source>Search...</source>
<translation type="unfinished">Hľadať...</translation> <translation>Hľadať...</translation>
</message> </message>
<message> <message>
<location filename="../src/other/browsinglibrary.cpp" line="26"/> <location filename="../src/other/browsinglibrary.cpp" line="47"/>
<source>History</source> <source>History</source>
<translation type="unfinished">História</translation> <translation>História</translation>
</message> </message>
<message> <message>
<location filename="../src/other/browsinglibrary.cpp" line="27"/> <location filename="../src/other/browsinglibrary.cpp" line="48"/>
<source>Bookmarks</source> <source>Bookmarks</source>
<translation type="unfinished">Záložky</translation> <translation>Záložky</translation>
</message> </message>
<message> <message>
<location filename="../src/other/browsinglibrary.cpp" line="28"/> <location filename="../src/other/browsinglibrary.cpp" line="49"/>
<source>RSS</source> <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> <translation type="unfinished"></translation>
</message> </message>
</context> </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="163"/>
<location filename="../src/cookies/cookiemanager.ui" line="170"/> <location filename="../src/cookies/cookiemanager.ui" line="170"/>
<location filename="../src/cookies/cookiemanager.ui" line="177"/> <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="97"/>
<location filename="../src/cookies/cookiemanager.cpp" line="98"/> <location filename="../src/cookies/cookiemanager.cpp" line="98"/>
<location filename="../src/cookies/cookiemanager.cpp" line="99"/> <location filename="../src/cookies/cookiemanager.cpp" line="99"/>
<location filename="../src/cookies/cookiemanager.cpp" line="100"/> <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> <source>&lt;cookie not selected&gt;</source>
<translation>&lt;nebolo zvolene cookie&gt;</translation> <translation>&lt;nebolo zvolene cookie&gt;</translation>
</message> </message>
@ -798,7 +813,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.ui" line="209"/> <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> <source>Remove cookie</source>
<translation>Odstrániť cookie</translation> <translation>Odstrániť cookie</translation>
</message> </message>
@ -808,69 +823,41 @@ p, li { white-space: pre-wrap; }
<translation>Del</translation> <translation>Del</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="43"/> <location filename="../src/cookies/cookiemanager.cpp" line="44"/>
<source>Search</source> <source>Search</source>
<translation>Hľadať</translation> <translation>Hľadať</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="48"/> <location filename="../src/cookies/cookiemanager.cpp" line="50"/>
<source>Confirmation</source> <source>Confirmation</source>
<translation>Potvrdenie</translation> <translation>Potvrdenie</translation>
</message> </message>
<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> <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> <translation>Skutočne chcete vymazať všetky cookies z počítača?</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="101"/> <location filename="../src/cookies/cookiemanager.cpp" line="103"/>
<source>Remove cookies</source> <source>Remove cookies</source>
<translation>Odstrániť cookies</translation> <translation>Odstrániť cookies</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/> <location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>Secure only</source> <source>Secure only</source>
<translation>Zabezpečené pripojenie</translation> <translation>Zabezpečené pripojenie</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="113"/> <location filename="../src/cookies/cookiemanager.cpp" line="115"/>
<source>All connections</source> <source>All connections</source>
<translation>Všetky pripojenia</translation> <translation>Všetky pripojenia</translation>
</message> </message>
<message> <message>
<location filename="../src/cookies/cookiemanager.cpp" line="114"/> <location filename="../src/cookies/cookiemanager.cpp" line="116"/>
<source>Session cookie</source> <source>Session cookie</source>
<translation>Konca relácie</translation> <translation>Konca relácie</translation>
</message> </message>
</context> </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> <context>
<name>DownloadItem</name> <name>DownloadItem</name>
<message> <message>
@ -1146,32 +1133,55 @@ p, li { white-space: pre-wrap; }
<translation>Vymazať celú históriu</translation> <translation>Vymazať celú históriu</translation>
</message> </message>
<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> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<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> <source>Open link in actual tab</source>
<translation>Otvoriť odkaz v aktuálnom panely</translation> <translation>Otvoriť odkaz v aktuálnom panely</translation>
</message> </message>
<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> <source>Open link in new tab</source>
<translation>Otvoriť odkaz na novom panely</translation> <translation>Otvoriť odkaz na novom panely</translation>
</message> </message>
<message> <message>
<location filename="../src/history/historymanager.cpp" line="107"/> <location filename="../src/history/historymanager.cpp" line="110"/>
<source>Close</source> <source>Close</source>
<translation>Zavrieť</translation> <translation>Zavrieť</translation>
</message> </message>
<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> <source>Confirmation</source>
<translation>Potvrdenie</translation> <translation>Potvrdenie</translation>
</message> </message>
<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> <source>Are you sure to delete all history?</source>
<translation>Skutočne chcete vymazať celú históriu?</translation> <translation>Skutočne chcete vymazať celú históriu?</translation>
</message> </message>
@ -1179,15 +1189,75 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>HistoryModel</name> <name>HistoryModel</name>
<message> <message>
<location filename="../src/history/historymodel.cpp" line="42"/> <location filename="../src/history/historymodel.cpp" line="43"/>
<source>Failed loading page</source> <source>Failed loading page</source>
<translation>Chyba pri načítaní stránky</translation> <translation>Chyba pri načítaní stránky</translation>
</message> </message>
<message> <message>
<location filename="../src/history/historymodel.cpp" line="45"/> <location filename="../src/history/historymodel.cpp" line="46"/>
<source>No Named Page</source> <source>No Named Page</source>
<translation>Stránka bez mena</translation> <translation>Stránka bez mena</translation>
</message> </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>
<context> <context>
<name>HistorySideBar</name> <name>HistorySideBar</name>
@ -1202,25 +1272,43 @@ p, li { white-space: pre-wrap; }
<translation>Názov</translation> <translation>Názov</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/historysidebar.cpp" line="60"/> <location filename="../src/sidebar/historysidebar.cpp" line="61"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<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> <source>Open link in actual tab</source>
<translation>Otvoriť odkaz v aktuálnom panely</translation> <translation>Otvoriť odkaz v aktuálnom panely</translation>
</message> </message>
<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> <source>Open link in new tab</source>
<translation>Otvoriť odkaz na novom panely</translation> <translation>Otvoriť odkaz na novom panely</translation>
</message> </message>
<message> <message>
<location filename="../src/sidebar/historysidebar.cpp" line="75"/> <location filename="../src/sidebar/historysidebar.cpp" line="76"/>
<source>Remove Entry</source> <source>Remove Entry</source>
<translation>Odstrániť položku</translation> <translation>Odstrániť položku</translation>
</message> </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>
<context> <context>
<name>LocationBar</name> <name>LocationBar</name>
@ -1259,12 +1347,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>MainApplication</name> <name>MainApplication</name>
<message> <message>
<location filename="../src/app/mainapplication.cpp" line="517"/> <location filename="../src/app/mainapplication.cpp" line="514"/>
<source>Last session crashed</source> <source>Last session crashed</source>
<translation>Posledná relácia spadla</translation> <translation>Posledná relácia spadla</translation>
</message> </message>
<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> <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> <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> </message>
@ -2592,95 +2680,101 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="40"/> <location filename="../src/rss/rssmanager.ui" line="40"/>
<location filename="../src/rss/rssmanager.cpp" line="115"/>
<source>Empty</source> <source>Empty</source>
<translation>Prázdny</translation> <translation>Prázdny</translation>
</message> </message>
<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; <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> 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; <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> Prosím pridajte si nejaký kliknutím na RSS ikonku v navigačnom riadku.</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="106"/> <location filename="../src/rss/rssmanager.ui" line="64"/>
<source>Reload</source> <source>Reload</source>
<translation>Obnoviť</translation> <translation>Obnoviť</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="116"/> <location filename="../src/rss/rssmanager.ui" line="74"/>
<source>Edit feed</source> <source>Edit feed</source>
<translation>Upraviť kanál</translation> <translation>Upraviť kanál</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.ui" line="126"/> <location filename="../src/rss/rssmanager.ui" line="84"/>
<source>Delete feed</source> <source>Delete feed</source>
<translation>Zmazať kanál</translation> <translation>Zmazať kanál</translation>
</message> </message>
<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> <source>News</source>
<translation>Novinky</translation> <translation>Novinky</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="90"/> <location filename="../src/rss/rssmanager.cpp" line="88"/>
<location filename="../src/rss/rssmanager.cpp" line="113"/> <location filename="../src/rss/rssmanager.cpp" line="126"/>
<source>Loading...</source> <source>Loading...</source>
<translation>Nahrávam...</translation> <translation>Nahrávam...</translation>
</message> </message>
<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> <source>Fill title and URL of a feed: </source>
<translation>Vyplnte názov a adresu kanálu: </translation> <translation>Vyplnte názov a adresu kanálu: </translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="155"/> <location filename="../src/rss/rssmanager.cpp" line="164"/>
<source>Feed title: </source> <source>Feed title: </source>
<translation>Názov kanálu: </translation> <translation>Názov kanálu: </translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="156"/> <location filename="../src/rss/rssmanager.cpp" line="165"/>
<source>Feed URL: </source> <source>Feed URL: </source>
<translation>Adresa kanálu: </translation> <translation>Adresa kanálu: </translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="162"/> <location filename="../src/rss/rssmanager.cpp" line="171"/>
<source>Edit RSS Feed</source> <source>Edit RSS Feed</source>
<translation>Upraviť RSS</translation> <translation>Upraviť RSS</translation>
</message> </message>
<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> <source>Open link in actual tab</source>
<translation>Otvoriť odkaz v aktuálnom panely</translation> <translation>Otvoriť odkaz v aktuálnom panely</translation>
</message> </message>
<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> <source>Open link in new tab</source>
<translation>Otvoriť odkaz na novom panely</translation> <translation>Otvoriť odkaz na novom panely</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="202"/> <location filename="../src/rss/rssmanager.cpp" line="211"/>
<source>Close</source> <source>Close</source>
<translation>Zavrieť</translation> <translation>Zavrieť</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="225"/> <location filename="../src/rss/rssmanager.cpp" line="234"/>
<location filename="../src/rss/rssmanager.cpp" line="231"/> <location filename="../src/rss/rssmanager.cpp" line="240"/>
<source>New Tab</source> <source>New Tab</source>
<translation>Nový panel</translation> <translation>Nový panel</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="297"/> <location filename="../src/rss/rssmanager.cpp" line="306"/>
<source>Error in fetching feed</source> <source>Error in fetching feed</source>
<translation>Chyba pri sťahovaní kanálu</translation> <translation>Chyba pri sťahovaní kanálu</translation>
</message> </message>
<message> <message>
<location filename="../src/rss/rssmanager.cpp" line="318"/> <location filename="../src/rss/rssmanager.cpp" line="334"/>
<source>RSS feed duplicated</source> <source>RSS feed duplicated</source>
<translation>Duplikovaný kanál</translation> <translation>Duplikovaný kanál</translation>
</message> </message>
<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> <source>You already have this feed.</source>
<translation>Tento kanál odoberáte.</translation> <translation>Tento kanál odoberáte.</translation>
</message> </message>