React on the redirection signal from DolphinView to properly update the tab and window titles.

REVIEW: 119697
BUG: 305721
This commit is contained in:
Emmanuel Pescosta 2014-08-13 22:06:28 +02:00
parent 62418c58a5
commit 39d8fb12c1
6 changed files with 58 additions and 26 deletions

View file

@ -136,6 +136,8 @@ DolphinMainWindow::DolphinMainWindow() :
this, SLOT(activeViewChanged(DolphinViewContainer*)));
connect(m_tabWidget, SIGNAL(tabCountChanged(int)),
this, SLOT(tabCountChanged(int)));
connect(m_tabWidget, SIGNAL(currentUrlChanged(KUrl)),
this, SLOT(setUrlAsCaption(KUrl)));
setCentralWidget(m_tabWidget);
setupActions();
@ -236,7 +238,6 @@ void DolphinMainWindow::changeUrl(const KUrl& url)
updatePasteAction();
updateViewActions();
updateGoActions();
setUrlAsCaption(url);
emit urlChanged(url);
}
@ -945,8 +946,6 @@ void DolphinMainWindow::activeViewChanged(DolphinViewContainer* viewContainer)
updateGoActions();
const KUrl url = viewContainer->url();
setUrlAsCaption(url);
emit urlChanged(url);
}
@ -958,6 +957,22 @@ void DolphinMainWindow::tabCountChanged(int count)
actionCollection()->action("activate_prev_tab")->setEnabled(enableTabActions);
}
void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
{
QString caption;
if (!url.isLocalFile()) {
caption.append(url.protocol() + " - ");
if (url.hasHost()) {
caption.append(url.host() + " - ");
}
}
const QString fileName = url.fileName().isEmpty() ? "/" : url.fileName();
caption.append(fileName);
setCaption(caption);
}
void DolphinMainWindow::setupActions()
{
// setup 'File' menu
@ -1471,22 +1486,6 @@ bool DolphinMainWindow::isKompareInstalled() const
return installed;
}
void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
{
QString caption;
if (!url.isLocalFile()) {
caption.append(url.protocol() + " - ");
if (url.hasHost()) {
caption.append(url.host() + " - ");
}
}
const QString fileName = url.fileName().isEmpty() ? "/" : url.fileName();
caption.append(fileName);
setCaption(caption);
}
void DolphinMainWindow::createPanelAction(const KIcon& icon,
const QKeySequence& shortcut,
QAction* dockAction,

View file

@ -429,6 +429,12 @@ private slots:
*/
void tabCountChanged(int count);
/**
* Sets the window caption to url.fileName() if this is non-empty,
* "/" if the URL is "file:///", and url.protocol() otherwise.
*/
void setUrlAsCaption(const KUrl& url);
private:
void setupActions();
void setupDockWidgets();
@ -464,12 +470,6 @@ private:
bool isKompareInstalled() const;
/**
* Sets the window caption to url.fileName() if this is non-empty,
* "/" if the URL is "file:///", and url.protocol() otherwise.
*/
void setUrlAsCaption(const KUrl& url);
/**
* Creates an action for showing/hiding a panel, that is accessible
* in "Configure toolbars..." and "Configure shortcuts...". This is necessary

View file

@ -41,6 +41,8 @@ DolphinTabPage::DolphinTabPage(const KUrl& primaryUrl, const KUrl& secondaryUrl,
m_primaryViewContainer = createViewContainer(primaryUrl);
connect(m_primaryViewContainer->view(), SIGNAL(urlChanged(KUrl)),
this, SIGNAL(activeViewUrlChanged(KUrl)));
connect(m_primaryViewContainer->view(), SIGNAL(redirection(KUrl,KUrl)),
this, SLOT(slotViewUrlRedirection(KUrl,KUrl)));
m_splitter->addWidget(m_primaryViewContainer);
m_primaryViewContainer->show();
@ -245,14 +247,25 @@ void DolphinTabPage::slotViewActivated()
if (newActiveView != oldActiveView) {
disconnect(oldActiveView, SIGNAL(urlChanged(KUrl)),
this, SIGNAL(activeViewUrlChanged(KUrl)));
disconnect(oldActiveView, SIGNAL(redirection(KUrl,KUrl)),
this, SLOT(slotViewUrlRedirection(KUrl,KUrl)));
connect(newActiveView, SIGNAL(urlChanged(KUrl)),
this, SIGNAL(activeViewUrlChanged(KUrl)));
connect(newActiveView, SIGNAL(redirection(KUrl,KUrl)),
this, SLOT(slotViewUrlRedirection(KUrl,KUrl)));
}
emit activeViewUrlChanged(activeViewContainer()->url());
emit activeViewChanged(activeViewContainer());
}
void DolphinTabPage::slotViewUrlRedirection(const KUrl& oldUrl, const KUrl& newUrl)
{
Q_UNUSED(oldUrl);
emit activeViewUrlChanged(newUrl);
}
DolphinViewContainer* DolphinTabPage::createViewContainer(const KUrl& url) const
{
DolphinViewContainer* container = new DolphinViewContainer(url, m_splitter);

View file

@ -133,6 +133,13 @@ private slots:
*/
void slotViewActivated();
/**
* Handles the view url redirection event.
*
* It emits the activeViewUrlChanged signal with the url \a newUrl.
*/
void slotViewUrlRedirection(const KUrl& oldUrl, const KUrl& newUrl);
private:
/**
* Creates a new view container and does the default initialization.

View file

@ -295,12 +295,19 @@ void DolphinTabWidget::tabUrlChanged(const KUrl& url)
if (index >= 0) {
tabBar()->setTabText(index, tabName(url));
tabBar()->setTabIcon(index, KIcon(KMimeType::iconNameForUrl(url)));
// Emit the currentUrlChanged signal if the url of the current tab has been changed.
if (index == currentIndex()) {
emit currentUrlChanged(url);
}
}
}
void DolphinTabWidget::currentTabChanged(int index)
{
emit activeViewChanged(tabPageAt(index)->activeViewContainer());
DolphinViewContainer* viewContainer = tabPageAt(index)->activeViewContainer();
emit activeViewChanged(viewContainer);
emit currentUrlChanged(viewContainer->url());
}
void DolphinTabWidget::tabInserted(int index)

View file

@ -72,6 +72,12 @@ signals:
*/
void rememberClosedTab(const KUrl& url, const QByteArray& state);
/**
* Is emitted when the url of the current tab has been changed. This signal
* is also emitted when the active view has been changed.
*/
void currentUrlChanged(const KUrl& url);
public slots:
/**
* Opens a new view with the current URL that is part of a tab and activates