-/***************************************************************************
- * Copyright (C) 2017 by Elvis Angelaccio <elvis.angelaccio@kde.org> *
- * *
- * 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 2 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, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2017 Elvis Angelaccio <elvis.angelaccio@kde.org>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
#include "dolphinmainwindow.h"
+#include "dolphinnewfilemenu.h"
#include "dolphintabpage.h"
#include "dolphintabwidget.h"
#include "dolphinviewcontainer.h"
{
Q_OBJECT
-private slots:
+private Q_SLOTS:
void initTestCase();
void init();
void testClosingTabsWithSearchBoxVisible();
void testActiveViewAfterClosingSplitView_data();
void testActiveViewAfterClosingSplitView();
void testUpdateWindowTitleAfterClosingSplitView();
+ void testUpdateWindowTitleAfterChangingSplitView();
void testOpenInNewTabTitle();
+ void testNewFileMenuEnabled_data();
+ void testNewFileMenuEnabled();
+ void testWindowTitle_data();
+ void testWindowTitle();
+
+
private:
QScopedPointer<DolphinMainWindow> m_mainWindow;
QCOMPARE(currentUrlChangedSpy.count(), 1);
}
+// Test case for bug #402641
+void DolphinMainWindowTest::testUpdateWindowTitleAfterChangingSplitView()
+{
+ m_mainWindow->openDirectories({ QUrl::fromLocalFile(QDir::homePath()) }, false);
+ m_mainWindow->show();
+ QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data()));
+ QVERIFY(m_mainWindow->isVisible());
+
+ auto tabWidget = m_mainWindow->findChild<DolphinTabWidget*>("tabWidget");
+ QVERIFY(tabWidget);
+
+ // Open split view.
+ m_mainWindow->actionCollection()->action(QStringLiteral("split_view"))->trigger();
+ QVERIFY(tabWidget->currentTabPage()->splitViewEnabled());
+
+ auto leftViewContainer = tabWidget->currentTabPage()->primaryViewContainer();
+ auto rightViewContainer = tabWidget->currentTabPage()->secondaryViewContainer();
+
+ // Store old window title.
+ const auto oldTitle = m_mainWindow->windowTitle();
+
+ // Change URL in the right view and make sure the title gets updated.
+ rightViewContainer->setUrl(QUrl::fromLocalFile(QDir::rootPath()));
+ QVERIFY(m_mainWindow->windowTitle() != oldTitle);
+
+ // Activate back the left view and check whether the old title gets restored.
+ leftViewContainer->setActive(true);
+ QCOMPARE(m_mainWindow->windowTitle(), oldTitle);
+}
+
// Test case for bug #397910
void DolphinMainWindowTest::testOpenInNewTabTitle()
{
tabWidget->openNewTab(QUrl::fromLocalFile(QDir::tempPath()));
QCOMPARE(tabWidget->count(), 2);
- QVERIFY(tabWidget->tabIcon(0).name() != tabWidget->tabIcon(1).name());
QVERIFY(tabWidget->tabText(0) != tabWidget->tabText(1));
+ if (!tabWidget->tabIcon(0).isNull() && !tabWidget->tabIcon(1).isNull()) {
+ QCOMPARE(QStringLiteral("inode-directory"), tabWidget->tabIcon(0).name());
+ QCOMPARE(QStringLiteral("inode-directory"), tabWidget->tabIcon(1).name());
+ }
+}
+
+void DolphinMainWindowTest::testNewFileMenuEnabled_data()
+{
+ QTest::addColumn<QUrl>("activeViewUrl");
+ QTest::addColumn<bool>("expectedEnabled");
+
+ QTest::newRow("home") << QUrl::fromLocalFile(QDir::homePath()) << true;
+ QTest::newRow("root") << QUrl::fromLocalFile(QDir::rootPath()) << false;
+ QTest::newRow("trash") << QUrl::fromUserInput(QStringLiteral("trash:/")) << false;
+}
+
+void DolphinMainWindowTest::testNewFileMenuEnabled()
+{
+ QFETCH(QUrl, activeViewUrl);
+ m_mainWindow->openDirectories({ activeViewUrl }, false);
+ m_mainWindow->show();
+ QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data()));
+ QVERIFY(m_mainWindow->isVisible());
+
+ auto newFileMenu = m_mainWindow->findChild<DolphinNewFileMenu*>("new_menu");
+ QVERIFY(newFileMenu);
+
+ QFETCH(bool, expectedEnabled);
+ QTRY_COMPARE(newFileMenu->isEnabled(), expectedEnabled);
+}
+
+void DolphinMainWindowTest::testWindowTitle_data()
+{
+ QTest::addColumn<QUrl>("activeViewUrl");
+ QTest::addColumn<QString>("expectedWindowTitle");
+
+ // TODO: this test should enforce the english locale.
+ QTest::newRow("home") << QUrl::fromLocalFile(QDir::homePath()) << QStringLiteral("Home");
+ QTest::newRow("home with trailing slash") << QUrl::fromLocalFile(QStringLiteral("%1/").arg(QDir::homePath())) << QStringLiteral("Home");
+ QTest::newRow("trash") << QUrl::fromUserInput(QStringLiteral("trash:/")) << QStringLiteral("Trash");
+}
+
+void DolphinMainWindowTest::testWindowTitle()
+{
+ QFETCH(QUrl, activeViewUrl);
+ m_mainWindow->openDirectories({ activeViewUrl }, false);
+ m_mainWindow->show();
+ QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data()));
+ QVERIFY(m_mainWindow->isVisible());
+
+ QFETCH(QString, expectedWindowTitle);
+ QCOMPARE(m_mainWindow->windowTitle(), expectedWindowTitle);
}
QTEST_MAIN(DolphinMainWindowTest)