diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index 6a570791e..4f9dc5157 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -77,13 +77,21 @@ QSettings::Status Settings::setupSettings() {
if (QFile(app_path_file).exists()) {
s_instance = new Settings(app_path, QSettings::IniFormat, qApp);
- QWebSettings::setIconDatabasePath(app_path + QDir::separator() + APP_CFG_WEB_PATH);
+
+ QString web_path = app_path + QDir::separator() + APP_CFG_WEB_PATH;
+ QDir(web_path).mkpath(web_path);
+ QWebSettings::setIconDatabasePath(web_path);
+
qDebug("Initializing settings in %s.",
qPrintable(QDir::toNativeSeparators(app_path)));
}
else {
s_instance = new Settings(home_path_file, QSettings::IniFormat, qApp);
- QWebSettings::setIconDatabasePath(home_path + QDir::separator() + APP_CFG_WEB_PATH);
+
+ QString web_path = home_path + QDir::separator() + APP_CFG_WEB_PATH;
+ QDir(web_path).mkpath(web_path);
+ QWebSettings::setIconDatabasePath(web_path);
+
qDebug("Initializing settings in %s.",
qPrintable(QDir::toNativeSeparators(home_path_file)));
}
diff --git a/src/gui/formmain.cpp b/src/gui/formmain.cpp
index dc45da8a9..cd196d731 100644
--- a/src/gui/formmain.cpp
+++ b/src/gui/formmain.cpp
@@ -22,11 +22,13 @@ FormMain::FormMain(QWidget *parent) : QMainWindow(parent), m_ui(new Ui::FormMain
// Prepare main window and tabs.
prepareMenus();
- m_ui->m_tabWidget->initializeTabs();
// Establish connections.
createConnections();
+ // Prepare tabs.
+ m_ui->m_tabWidget->initializeTabs();
+
setupIcons();
}
@@ -165,6 +167,19 @@ void FormMain::createConnections() {
// General connections.
connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(cleanupResources()));
+
+ // Menu "Web browser" connections.
+ connect(m_ui->m_tabWidget, SIGNAL(currentChanged(int)),
+ this, SLOT(loadWebBrowserMenu(int)));
+}
+
+void FormMain::loadWebBrowserMenu(int index) {
+ WebBrowser *active_browser = m_ui->m_tabWidget->widget(index)->webBrowser();
+
+ m_ui->m_menuWebBrowser->clear();
+ if (active_browser != NULL) {
+ m_ui->m_menuWebBrowser->addActions(active_browser->globalMenu());
+ }
}
void FormMain::closeEvent(QCloseEvent *event) {
diff --git a/src/gui/formmain.h b/src/gui/formmain.h
index 588465e69..cbec1652c 100644
--- a/src/gui/formmain.h
+++ b/src/gui/formmain.h
@@ -64,6 +64,8 @@ class FormMain : public QMainWindow {
// Used for last-minute cleanups.
void cleanupResources();
+ void loadWebBrowserMenu(int index);
+
// Displays various dialogs.
void showSettings();
void showAbout();
diff --git a/src/gui/formmain.ui b/src/gui/formmain.ui
index af005af84..637e5267a 100644
--- a/src/gui/formmain.ui
+++ b/src/gui/formmain.ui
@@ -36,7 +36,7 @@
0
0
800
- 19
+ 21
+
+
diff --git a/src/gui/formsettings.cpp b/src/gui/formsettings.cpp
index ed08e968b..680dbcb21 100644
--- a/src/gui/formsettings.cpp
+++ b/src/gui/formsettings.cpp
@@ -28,6 +28,22 @@ FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_ui(new Ui::Form
m_ui->m_treeLanguages->setColumnCount(5);
m_ui->m_treeLanguages->setHeaderHidden(false);
+ m_ui->m_treeLanguages->setHeaderLabels(QStringList()
+ << tr("Language")
+ << tr("Code")
+ << tr("Version")
+ << tr("Author")
+ << tr("Email"));
+
+ m_ui->m_treeSkins->setColumnCount(4);
+ m_ui->m_treeSkins->setHeaderHidden(false);
+
+ m_ui->m_treeSkins->setHeaderLabels(QStringList()
+ << tr("Name")
+ << tr("Version")
+ << tr("Author")
+ << tr("Email"));
+
#if QT_VERSION >= 0x050000
// Setup languages.
m_ui->m_treeLanguages->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
@@ -56,19 +72,6 @@ FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_ui(new Ui::Form
m_ui->m_treeSkins->header()->setResizeMode(3, QHeaderView::ResizeToContents);
#endif
- m_ui->m_treeLanguages->setHeaderLabels(QStringList()
- << tr("Language")
- << tr("Code")
- << tr("Version")
- << tr("Author")
- << tr("Email"));
-
- m_ui->m_treeSkins->setHeaderLabels(QStringList()
- << tr("Name")
- << tr("Version")
- << tr("Author")
- << tr("Email"));
-
// Establish needed connections.
connect(m_ui->m_buttonBox, SIGNAL(accepted()),
this, SLOT(saveSettings()));
diff --git a/src/gui/formsettings.ui b/src/gui/formsettings.ui
index 70bb67d5b..223c8a38f 100644
--- a/src/gui/formsettings.ui
+++ b/src/gui/formsettings.ui
@@ -189,11 +189,6 @@
false
-
-
- 1
-
-
-
diff --git a/src/gui/tabcontent.h b/src/gui/tabcontent.h
index b362ee490..db14cb10d 100644
--- a/src/gui/tabcontent.h
+++ b/src/gui/tabcontent.h
@@ -25,7 +25,7 @@ class TabContent : public QWidget {
// This can be used for obtaining the menu from the instance and so on.
virtual WebBrowser *webBrowser() = 0;
- private:
+ protected:
int m_index;
};
diff --git a/src/gui/tabwidget.cpp b/src/gui/tabwidget.cpp
index 82949e878..b6adb8dc1 100644
--- a/src/gui/tabwidget.cpp
+++ b/src/gui/tabwidget.cpp
@@ -160,7 +160,7 @@ int TabWidget::addBrowser(bool move_after_current,
this, SLOT(changeIcon(int,QIcon)));
// Setup the tab index.
- browser->setTabIndex(final_index);
+ browser->setIndex(final_index);
// Load initial web page if desired.
if (initial_url.isValid()) {
@@ -195,6 +195,6 @@ void TabWidget::fixContentsAfterMove(int from, int to) {
void TabWidget::fixContentsIndexes(int starting_index, int ending_index) {
for ( ; starting_index <= ending_index; starting_index++) {
TabContent *content = static_cast(widget(starting_index));
- content->webBrowser()->setTabIndex(starting_index);
+ content->webBrowser()->setIndex(starting_index);
}
}
diff --git a/src/gui/webbrowser.cpp b/src/gui/webbrowser.cpp
index 3cfafc89b..bd3fd7f8f 100644
--- a/src/gui/webbrowser.cpp
+++ b/src/gui/webbrowser.cpp
@@ -25,12 +25,13 @@ WebBrowser::WebBrowser(QWidget *parent)
m_toolBar(new QToolBar(tr("Navigation panel"), this)),
m_webView(new BaseWebView(this)),
m_txtLocation(new LocationLineEdit(this)),
- m_tabIndex(-1),
m_actionBack(m_webView->pageAction(QWebPage::Back)),
m_actionForward(m_webView->pageAction(QWebPage::Forward)),
m_actionReload(m_webView->pageAction(QWebPage::Reload)),
m_actionStop(m_webView->pageAction(QWebPage::Stop)) {
+ m_index = -1;
+
// Add this new instance to the global list of web browsers.
// NOTE: This is used primarily for dynamic icon theme switching.
m_runningWebBrowsers.append(this);
@@ -94,33 +95,24 @@ void WebBrowser::createConnections() {
}
void WebBrowser::onIconChanged() {
- emit iconChanged(m_tabIndex, m_webView->icon());
+ emit iconChanged(m_index, m_webView->icon());
}
void WebBrowser::onTitleChanged(const QString &new_title) {
if (new_title.isEmpty()) {
- emit titleChanged(m_tabIndex, tr("No title"));
+ emit titleChanged(m_index, tr("No title"));
}
else {
- emit titleChanged(m_tabIndex, new_title);
+ emit titleChanged(m_index, new_title);
}
- emit iconChanged(m_tabIndex, QIcon());
+ emit iconChanged(m_index, QIcon());
}
void WebBrowser::updateUrl(const QUrl &url) {
m_txtLocation->setText(url.toString());
}
-int WebBrowser::tabIndex() const {
- return m_tabIndex;
-}
-
-void WebBrowser::setTabIndex(int tab_index) {
- m_tabIndex = tab_index;
-}
-
-
void WebBrowser::navigateToUrl(const QUrl &url) {
if (url.isValid()) {
m_webView->load(url);
@@ -149,8 +141,12 @@ WebBrowser *WebBrowser::webBrowser() {
return this;
}
-QMenu *WebBrowser::globalMenu() {
- return NULL;
+QList WebBrowser::globalMenu() {
+ QList browser_menu;
+
+ browser_menu.append(m_actionReload);
+
+ return browser_menu;
}
QIcon WebBrowser::icon() {
diff --git a/src/gui/webbrowser.h b/src/gui/webbrowser.h
index a559927aa..e25d37670 100644
--- a/src/gui/webbrowser.h
+++ b/src/gui/webbrowser.h
@@ -38,7 +38,7 @@ class WebBrowser : public TabContent {
WebBrowser *webBrowser();
// Returns global menu for this web browser.
- QMenu *globalMenu();
+ QList globalMenu();
// Returns pointer to global network access manager
// for web browsers.
@@ -49,10 +49,6 @@ class WebBrowser : public TabContent {
// Returns list of all running web browsers.
static QList runningWebBrowsers();
- // Tab index getter/setter.
- int tabIndex() const;
- void setTabIndex(int tab_index);
-
public slots:
// Switches visibility of navigation bar.
void setNavigationBarVisible(bool visible);
@@ -84,7 +80,6 @@ class WebBrowser : public TabContent {
QToolBar *m_toolBar;
BaseWebView *m_webView;
LocationLineEdit *m_txtLocation;
- int m_tabIndex;
QAction *m_actionBack;
QAction *m_actionForward;