# KDE Application Version, managed by release script
set (KDE_APPLICATIONS_VERSION_MAJOR "17")
-set (KDE_APPLICATIONS_VERSION_MINOR "04")
-set (KDE_APPLICATIONS_VERSION_MICRO "2")
+set (KDE_APPLICATIONS_VERSION_MINOR "07")
+set (KDE_APPLICATIONS_VERSION_MICRO "70")
set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}")
set(QT_MIN_VERSION "5.5.0")
##########################################
-set(dolphin_SRCS
+set(dolphinstatic_SRCS
dolphindockwidget.cpp
dolphinmainwindow.cpp
dolphinviewcontainer.cpp
statusbar/statusbarspaceinfo.cpp
views/zoomlevelinfo.cpp
dolphindebug.cpp
- dbusinterface.cpp
global.cpp
)
-kconfig_add_kcfg_files(dolphin_SRCS GENERATE_MOC
+kconfig_add_kcfg_files(dolphinstatic_SRCS GENERATE_MOC
panels/folders/dolphin_folderspanelsettings.kcfgc
panels/information/dolphin_informationpanelsettings.kcfgc
panels/places/dolphin_placespanelsettings.kcfgc
)
if(NOT WIN32)
- set(dolphin_SRCS ${dolphin_SRCS} panels/terminal/terminalpanel.cpp)
+ set(dolphinstatic_SRCS ${dolphinstatic_SRCS} panels/terminal/terminalpanel.cpp)
endif()
-# Sets the icon on Windows and OSX
-file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*system-file-manager.png")
-ecm_add_app_icon(dolphin_SRCS ICONS ${ICONS_SRCS})
-
-kf5_add_kdeinit_executable(dolphin ${dolphin_SRCS})
+add_library(dolphinstatic STATIC ${dolphinstatic_SRCS})
-target_include_directories(kdeinit_dolphin PRIVATE ${PHONON_INCLUDES})
-
-target_link_libraries(kdeinit_dolphin
+target_include_directories(dolphinstatic PRIVATE ${PHONON_INCLUDES})
+target_link_libraries(dolphinstatic
dolphinprivate
- KF5::Parts
KF5::KCMUtils
- KF5::Solid
- KF5::CoreAddons
KF5::DBusAddons
- KF5::Bookmarks
KF5::Notifications
Phonon::phonon4qt5
)
if (KF5Activities_FOUND)
target_link_libraries(
- kdeinit_dolphin
+ dolphinstatic
KF5::Activities
)
endif()
+set(dolphin_SRCS
+ dbusinterface.cpp
+ main.cpp
+)
+
+# Sets the icon on Windows and OSX
+file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*system-file-manager.png")
+ecm_add_app_icon(dolphin_SRCS ICONS ${ICONS_SRCS})
+
+kf5_add_kdeinit_executable(dolphin ${dolphin_SRCS})
+
+
+target_link_libraries(kdeinit_dolphin
+ dolphinstatic
+ dolphinprivate
+)
+
include(DbusInterfaceMacros)
generate_and_install_dbus_interface(
fileItemActions.setItemListProperties(selectedItemsProps);
addServiceActions(fileItemActions);
- addFileItemPluginActions(fileItemActions);
+ fileItemActions.addPluginActionsTo(this);
addVersionControlPluginActions();
fileItemActions.setItemListProperties(baseUrlProperties);
addServiceActions(fileItemActions);
- addFileItemPluginActions(fileItemActions);
+ fileItemActions.addPluginActionsTo(this);
addVersionControlPluginActions();
fileItemActions.addServiceActionsTo(this);
}
-void DolphinContextMenu::addFileItemPluginActions(KFileItemActions& fileItemActions)
-{
- fileItemActions.addPluginActionsTo(this);
-}
-
void DolphinContextMenu::addVersionControlPluginActions()
{
const DolphinView* view = m_mainWindow->activeViewContainer()->view();
*/
void addServiceActions(KFileItemActions& fileItemActions);
- /**
- * Adds actions that are provided by a KFileItemActionPlugin.
- */
- void addFileItemPluginActions(KFileItemActions& fileItemActions);
-
/**
* Adds actions that are provided by a KVersionControlPlugin.
*/
setAcceptDrops(true);
m_tabWidget = new DolphinTabWidget(this);
+ m_tabWidget->setObjectName("tabWidget");
connect(m_tabWidget, &DolphinTabWidget::activeViewChanged,
this, &DolphinMainWindow::activeViewChanged);
connect(m_tabWidget, &DolphinTabWidget::tabCountChanged,
Name[fi]=Kuvakkeet
Name[fr]=Icônes
Name[gl]=Iconas
+Name[he]=סמלים
Name[hu]=Ikonok
Name[ia]=Icones
Name[id]=Ikon
Name[fi]=Tiivis
Name[fr]=Concis
Name[gl]=Compacta
+Name[he]=קומפקטי
Name[hu]=Kompakt
Name[ia]=Compacte
Name[id]=Sederhana
Name[fi]=Yksityiskohdat
Name[fr]=Détails
Name[gl]=Detalles
+Name[he]=פרטים
Name[hu]=Részletek
Name[ia]=Detalios
Name[id]=Detail
* @deprecated The first tab state version has no version number, we keep
* this method to restore old states (<= Dolphin 4.14.x).
*/
- void restoreStateV1(const QByteArray& state);
+ Q_DECL_DEPRECATED void restoreStateV1(const QByteArray& state);
/**
* Set whether the tab page is active
int lastVisibleIndex() const;
/**
- * @return Calculates the required size for all items in the model.
- * It might be larger than KItemListView::itemSize().
- * In this case the layout grid will be stretched to assure an
- * unclipped item.
- * NOTE: the logical height (width) is actually the
- * width (height) if the scroll orientation is Qt::Vertical!
+ * Calculates the required size for all items in the model.
+ * It might be larger than KItemListView::itemSize().
+ * In this case the layout grid will be stretched to assure an
+ * unclipped item.
+ *
+ * @note the logical height (width) is actually the
+ * width (height) if the scroll orientation is Qt::Vertical!
*/
void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint) const;
KItemListWidgetCreator();
virtual ~KItemListWidgetCreator();
- virtual KItemListWidget* create(KItemListView* view);
+ virtual KItemListWidget* create(KItemListView* view) Q_DECL_OVERRIDE;
- virtual void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const;
+ virtual void calculateItemSizeHints(QVector<qreal>& logicalHeightHints, qreal& logicalWidthHint, const KItemListView* view) const Q_DECL_OVERRIDE;
virtual qreal preferredRoleColumnWidth(const QByteArray& role,
int index,
- const KItemListView* view) const;
+ const KItemListView* view) const Q_DECL_OVERRIDE;
private:
KItemListWidgetInformant* m_informant;
};
{
public:
virtual ~KItemListGroupHeaderCreator();
- virtual KItemListGroupHeader* create(KItemListView* view);
+ virtual KItemListGroupHeader* create(KItemListView* view) Q_DECL_OVERRIDE;
};
template <class T>
GenericName[fi]=Tiedostonhallinta
GenericName[fr]=Gestionnaire de fichiers
GenericName[gl]=Xestor de ficheiros
+GenericName[he]=מנהל קבצים
GenericName[hu]=Fájlkezelő
GenericName[ia]=Gerente de file
GenericName[id]=Manajer Berkas
Name[fi]=Yleiset
Name[fr]=Général
Name[gl]=Xerais
+Name[he]=כללי
Name[hu]=Általános
Name[ia]=General
Name[id]=Umum
X-KDE-Keywords[fi]=tiedostonhallinta
X-KDE-Keywords[fr]=gestionnaire de fichiers
X-KDE-Keywords[gl]=xestor de ficheiros
+X-KDE-Keywords[he]=מנהל קבצים
X-KDE-Keywords[hu]=fájlkezelő
X-KDE-Keywords[ia]=gerente de file
X-KDE-Keywords[id]=manajer berkas
Name[fi]=Selaus
Name[fr]=Navigation
Name[gl]=Navegación
+Name[he]=ניווט
Name[hu]=Navigálás
Name[ia]=Navigation
Name[id]=Navigasi
X-KDE-Keywords[fi]=tiedostonhallinta
X-KDE-Keywords[fr]=gestionnaire de fichiers
X-KDE-Keywords[gl]=xestor de ficheiros
+X-KDE-Keywords[he]=מנהל קבצים
X-KDE-Keywords[hu]=fájlkezelő
X-KDE-Keywords[ia]=gerente de file
X-KDE-Keywords[id]=manajer berkas
Name[fi]=Palvelut
Name[fr]=Services
Name[gl]=Servizos
+Name[he]=שירותים
Name[hu]=Szolgáltatások
Name[ia]=Servicios
Name[id]=Layanan
X-KDE-Keywords[fi]=tiedostonhallinta
X-KDE-Keywords[fr]=gestionnaire de fichiers
X-KDE-Keywords[gl]=xestor de ficheiros
+X-KDE-Keywords[he]=מנהל קבצים
X-KDE-Keywords[hu]=fájlkezelő
X-KDE-Keywords[ia]=gerente de file
X-KDE-Keywords[id]=manajer berkas
X-KDE-Keywords[fi]=tiedostonhallinta
X-KDE-Keywords[fr]=gestionnaire de fichiers
X-KDE-Keywords[gl]=xestor de ficheiros
+X-KDE-Keywords[he]=מנהל קבצים
X-KDE-Keywords[hu]=fájlkezelő
X-KDE-Keywords[ia]=gerente de file
X-KDE-Keywords[id]=manajer berkas
set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
find_package(Qt5Test CONFIG REQUIRED)
-include(ECMMarkAsTest)
-
-# needed on windows to correctly use the files from dolphinprivate
-add_definitions(-DDOLPHIN_EXPORT=)
+include(ECMAddTests)
# KItemSetTest
-set(kitemsettest_SRCS
- kitemsettest.cpp
-)
-
-add_executable(kitemsettest ${kitemsettest_SRCS})
-add_test(kitemsettest kitemsettest)
-ecm_mark_as_test(kitemsettest)
-target_link_libraries(kitemsettest dolphinprivate Qt5::Test)
+ecm_add_test(kitemsettest.cpp LINK_LIBRARIES dolphinprivate Qt5::Test)
# KItemRangeTest
-set(kitemrangetest_SRCS
- kitemrangetest.cpp
-)
-
-add_executable(kitemrangetest ${kitemrangetest_SRCS})
-add_test(kitemrangetest kitemrangetest)
-ecm_mark_as_test(kitemrangetest)
-target_link_libraries(kitemrangetest dolphinprivate Qt5::Test)
+ecm_add_test(kitemrangetest.cpp LINK_LIBRARIES dolphinprivate Qt5::Test)
# KItemListSelectionManagerTest
-set(kitemlistselectionmanagertest_SRCS
- kitemlistselectionmanagertest.cpp
-)
-
-add_executable(kitemlistselectionmanagertest ${kitemlistselectionmanagertest_SRCS})
-add_test(kitemlistselectionmanagertest kitemlistselectionmanagertest)
-ecm_mark_as_test(kitemlistselectionmanagertest)
-target_link_libraries(kitemlistselectionmanagertest dolphinprivate Qt5::Test)
+ecm_add_test(kitemlistselectionmanagertest.cpp LINK_LIBRARIES dolphinprivate Qt5::Test)
# KItemListControllerTest
-set(kitemlistcontrollertest_SRCS
- kitemlistcontrollertest.cpp
- testdir.cpp
- ../dolphindebug.cpp
-)
-
-kconfig_add_kcfg_files(kitemlistcontrollertest_SRCS GENERATE_MOC
- ../settings/dolphin_generalsettings.kcfgc
-)
-
-add_executable(kitemlistcontrollertest ${kitemlistcontrollertest_SRCS})
-add_test(kitemlistcontrollertest kitemlistcontrollertest)
-ecm_mark_as_test(kitemlistcontrollertest)
-target_link_libraries(kitemlistcontrollertest dolphinprivate Qt5::Test)
+ecm_add_test(kitemlistcontrollertest.cpp testdir.cpp
+TEST_NAME kitemlistcontrollertest
+LINK_LIBRARIES dolphinprivate Qt5::Test)
# KFileItemListViewTest
-set(kfileitemlistviewtest_SRCS
- kfileitemlistviewtest.cpp
- testdir.cpp
- ../dolphindebug.cpp
-)
-
-kconfig_add_kcfg_files(kfileitemlistviewtest_SRCS GENERATE_MOC
- ../settings/dolphin_generalsettings.kcfgc
-)
-
-add_executable(kfileitemlistviewtest ${kfileitemlistviewtest_SRCS})
-add_test(kfileitemlistviewtest kfileitemlistviewtest)
-ecm_mark_as_test(kfileitemlistviewtest)
-target_link_libraries(kfileitemlistviewtest dolphinprivate Qt5::Test)
+ecm_add_test(kfileitemlistviewtest.cpp testdir.cpp
+TEST_NAME kfileitemlistviewtest
+LINK_LIBRARIES dolphinprivate Qt5::Test)
# KFileItemModelTest
-set(kfileitemmodeltest_SRCS
- kfileitemmodeltest.cpp
- testdir.cpp
- ../dolphindebug.cpp
-)
-
-kconfig_add_kcfg_files(kfileitemmodeltest_SRCS GENERATE_MOC
- ../settings/dolphin_generalsettings.kcfgc
-)
-
-add_executable(kfileitemmodeltest ${kfileitemmodeltest_SRCS})
-add_test(kfileitemmodeltest kfileitemmodeltest)
-ecm_mark_as_test(kfileitemmodeltest)
-target_link_libraries(kfileitemmodeltest dolphinprivate Qt5::Test)
+ecm_add_test(kfileitemmodeltest.cpp testdir.cpp
+TEST_NAME kfileitemmodeltest
+LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
# KFileItemModelBenchmark
-set(kfileitemmodelbenchmark_SRCS
- kfileitemmodelbenchmark.cpp
- testdir.cpp
- ../dolphindebug.cpp
-)
-
-kconfig_add_kcfg_files(kfileitemmodelbenchmark_SRCS GENERATE_MOC
- ../settings/dolphin_generalsettings.kcfgc
-)
-
-add_executable(kfileitemmodelbenchmark ${kfileitemmodelbenchmark_SRCS})
-ecm_mark_as_test(kfileitemmodelbenchmark)
-target_link_libraries(kfileitemmodelbenchmark dolphinprivate Qt5::Test)
+ecm_add_test(kfileitemmodelbenchmark.cpp testdir.cpp
+TEST_NAME kfileitemmodelbenchmark
+LINK_LIBRARIES dolphinprivate Qt5::Test)
# KItemListKeyboardSearchManagerTest
-set(kitemlistkeyboardsearchmanagertest_SRCS
- kitemlistkeyboardsearchmanagertest.cpp
-)
-
-add_executable(kitemlistkeyboardsearchmanagertest ${kitemlistkeyboardsearchmanagertest_SRCS})
-add_test(kitemlistkeyboardsearchmanagertest kitemlistkeyboardsearchmanagertest)
-ecm_mark_as_test(kitemlistkeyboardsearchmanagertest)
-target_link_libraries(kitemlistkeyboardsearchmanagertest dolphinprivate Qt5::Test)
+ecm_add_test(kitemlistkeyboardsearchmanagertest.cpp LINK_LIBRARIES dolphinprivate Qt5::Test)
# DolphinSearchBox
if (KF5Baloo_FOUND)
- set(dolphinsearchboxtest_SRCS
- dolphinsearchboxtest.cpp
- ../search/dolphinfacetswidget.cpp
- ../search/dolphinsearchbox.cpp
- )
- kconfig_add_kcfg_files(dolphinsearchboxtest_SRCS
- ../search/dolphin_searchsettings.kcfgc
- )
-
- add_executable(dolphinsearchboxtest ${dolphinsearchboxtest_SRCS})
- add_test(dolphinsearchboxtest dolphinsearchboxtest)
- ecm_mark_as_test(dolphinsearchboxtest)
- target_link_libraries(dolphinsearchboxtest dolphinprivate Qt5::Test)
+ ecm_add_test(dolphinsearchboxtest.cpp
+ TEST_NAME dolphinsearchboxtest
+ LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
endif()
# KStandardItemModelTest
-set(kstandarditemmodeltest_SRCS
- kstandarditemmodeltest.cpp
- ../dolphindebug.cpp
-)
-
-add_executable(kstandarditemmodeltest ${kstandarditemmodeltest_SRCS})
-add_test(kstandarditemmodeltest kstandarditemmodeltest)
-ecm_mark_as_test(kstandarditemmodeltest)
-target_link_libraries(kstandarditemmodeltest dolphinprivate Qt5::Test)
+ecm_add_test(kstandarditemmodeltest.cpp
+TEST_NAME kstandarditemmodeltest
+LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
# ViewPropertiesTest
-set(viewpropertiestest_SRCS
- viewpropertiestest.cpp
- testdir.cpp
- ../dolphindebug.cpp
-)
-kconfig_add_kcfg_files(viewpropertiestest_SRCS GENERATE_MOC
- ../settings/dolphin_generalsettings.kcfgc
- ../settings/dolphin_directoryviewpropertysettings.kcfgc
-)
-
-add_executable(viewpropertiestest ${viewpropertiestest_SRCS})
-add_test(viewpropertiestest viewpropertiestest)
-ecm_mark_as_test(viewpropertiestest)
-target_link_libraries(viewpropertiestest dolphinprivate Qt5::Test)
+ecm_add_test(viewpropertiestest.cpp testdir.cpp
+TEST_NAME viewpropertiestest
+LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
+
+# DolphinMainWindowTest
+ecm_add_test(dolphinmainwindowtest.cpp
+TEST_NAME dolphinmainwindowtest
+LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
--- /dev/null
+/***************************************************************************
+ * 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 *
+ ***************************************************************************/
+
+#include "dolphinmainwindow.h"
+#include "dolphintabpage.h"
+#include "dolphintabwidget.h"
+#include "dolphinviewcontainer.h"
+
+#include <QTest>
+
+class DolphinMainWindowTest : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void init();
+ void testClosingTabsWithSearchBoxVisible();
+
+private:
+ QScopedPointer<DolphinMainWindow> m_mainWindow;
+};
+
+void DolphinMainWindowTest::init()
+{
+ m_mainWindow.reset(new DolphinMainWindow());
+}
+
+// See https://bugs.kde.org/show_bug.cgi?id=379135
+void DolphinMainWindowTest::testClosingTabsWithSearchBoxVisible()
+{
+ m_mainWindow->openDirectories({ QUrl::fromLocalFile(QDir::homePath()) }, false);
+ m_mainWindow->show();
+ // Without this call the searchbox doesn't get FocusIn events.
+ QTest::qWaitForWindowExposed(m_mainWindow.data());
+ QVERIFY(m_mainWindow->isVisible());
+
+ auto tabWidget = m_mainWindow->findChild<DolphinTabWidget*>("tabWidget");
+ QVERIFY(tabWidget);
+
+ // Show search box on first tab.
+ tabWidget->currentTabPage()->activeViewContainer()->setSearchModeEnabled(true);
+
+ tabWidget->openNewActivatedTab(QUrl::fromLocalFile(QDir::homePath()));
+ QCOMPARE(tabWidget->count(), 2);
+
+ // Triggers the crash in bug #379135.
+ tabWidget->closeTab();
+ QCOMPARE(tabWidget->count(), 1);
+}
+
+QTEST_MAIN(DolphinMainWindowTest)
+
+#include "dolphinmainwindowtest.moc"
void KFileItemModelTest::testDefaultRoles()
{
const QSet<QByteArray> roles = m_model->roles();
- QCOMPARE(roles.count(), 3);
+ QCOMPARE(roles.count(), 4);
QVERIFY(roles.contains("text"));
QVERIFY(roles.contains("isDir"));
QVERIFY(roles.contains("isLink"));
+ QVERIFY(roles.contains("isHidden"));
}
void KFileItemModelTest::testDefaultSortRole()
*
* The test is data-driven and takes the following arguments:
*
- * \param initialSelection The selection at the beginning.
- * \param anchor This item will be the anchor item.
- * \param current This item will be the current item.
- * \param expectedSelection Expected selection after anchor and current are set.
- * \param changeType Type of the change that is done then:
- * - NoChange
- * - InsertItems -> data.at(0) provides the KItemRangeList. \sa KItemListSelectionManager::itemsInserted()
- * - RemoveItems -> data.at(0) provides the KItemRangeList. \sa KItemListSelectionManager::itemsRemoved()
- * - MoveItems -> data.at(0) provides the KItemRange containing the original indices,
- * data.at(1) provides the list containing the new indices
- * \sa KItemListSelectionManager::itemsMoved(), KItemModelBase::itemsMoved()
- * - EndAnchoredSelection
- * - SetSelected -> data.at(0) provides the index where the selection process starts,
- * data.at(1) provides the number of indices to be selected,
- * data.at(2) provides the selection mode.
- * \sa KItemListSelectionManager::setSelected()
- * \param data A list of QVariants which will be cast to the arguments needed for the chosen ChangeType (see above).
- * \param finalSelection The expected final selection.
+ * param initialSelection The selection at the beginning.
+ * param anchor This item will be the anchor item.
+ * param current This item will be the current item.
+ * param expectedSelection Expected selection after anchor and current are set.
+ * param changeType Type of the change that is done then:
+ * - NoChange
+ * - InsertItems -> data.at(0) provides the KItemRangeList. \sa KItemListSelectionManager::itemsInserted()
+ * - RemoveItems -> data.at(0) provides the KItemRangeList. \sa KItemListSelectionManager::itemsRemoved()
+ * - MoveItems -> data.at(0) provides the KItemRange containing the original indices,
+ * data.at(1) provides the list containing the new indices
+ * \sa KItemListSelectionManager::itemsMoved(), KItemModelBase::itemsMoved()
+ * - EndAnchoredSelection
+ * - SetSelected -> data.at(0) provides the index where the selection process starts,
+ * data.at(1) provides the number of indices to be selected,
+ * data.at(2) provides the selection mode.
+ * \sa KItemListSelectionManager::setSelected()
+ * param data A list of QVariants which will be cast to the arguments needed for the chosen ChangeType (see above).
+ * param finalSelection The expected final selection.
*
*/
-
void KItemListSelectionManagerTest::testChangeSelection_data()
{
QTest::addColumn<KItemSet>("initialSelection");