]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Replaced all KNewFileMenu usages in DolphinPart by DolphinNewFileMenu.
authorEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 28 Aug 2013 16:46:45 +0000 (18:46 +0200)
committerEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 28 Aug 2013 16:46:45 +0000 (18:46 +0200)
Removed all signal-slot-connections related to DolphinNewFileMenu->errorMessage(QString)
in DolphinMainWindow and DolphinContextMenu and replaced it by a better solution.

Now we make use of the already existing DolphinNewFileMenuObserver singleton class to achieve a better
error handling, because every newly created DolphinContextMenu instance registers himself by DolphinNewFileMenuObserver
and we use this to connect the errorMessage(QString) signal of every DolphinContextMenu instance to the errorMessage(QString)
signal of the DolphinNewFileMenuObserver singleton class.

So we need only one connection from DolphinNewFileMenuObserver to DolphinMainWindow (or to DolphinPart) to
collect all error messages thrown by every DolphinNewFileMenu instance.

REVIEW: 112178

src/CMakeLists.txt
src/dolphincontextmenu.cpp
src/dolphincontextmenu.h
src/dolphinmainwindow.cpp
src/dolphinnewfilemenu.cpp
src/dolphinnewfilemenu.h
src/dolphinpart.cpp
src/dolphinpart.h
src/dolphinui.rc
src/views/dolphinnewfilemenuobserver.cpp
src/views/dolphinnewfilemenuobserver.h

index 6856991d5ef119d994414edbcfc8cba5c3046114..3aac80bf8a0ebb9a750df908474a7e9da1aa001a 100644 (file)
@@ -92,6 +92,7 @@ set(dolphinprivate_LIB_SRCS
     views/viewproperties.cpp
     views/zoomlevelinfo.cpp
     dolphinremoveaction.cpp
+    dolphinnewfilemenu.cpp
 )
 
 if(HAVE_NEPOMUK)
index 3deeb38cd5df6274267568abed979489b486ba4c..7d11c3bcdb48d724c68d0c045169119b3fd867aa 100644 (file)
@@ -204,7 +204,6 @@ void DolphinContextMenu::openItemContextMenu()
             newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
             connect(newFileMenu, SIGNAL(fileCreated(KUrl)), newFileMenu, SLOT(deleteLater()));
             connect(newFileMenu, SIGNAL(directoryCreated(KUrl)), newFileMenu, SLOT(deleteLater()));
-            connect(newFileMenu, SIGNAL(errorMessage(QString)), this, SIGNAL(errorMessage(QString)));
 
             KMenu* menu = newFileMenu->menu();
             menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
index c9840eae5f9732163f0e108b0b33bab0949c2be6..180f91787c0f3ccb842bc900d878185940e7f9c7 100644 (file)
@@ -95,9 +95,6 @@ protected:
     virtual void keyPressEvent(QKeyEvent *ev);
     virtual void keyReleaseEvent(QKeyEvent *ev);
 
-signals:
-    void errorMessage(const QString& error);
-
 private:
     void openTrashContextMenu();
     void openTrashItemContextMenu();
index 5cc608fd490e4d547cb613665977f2ba68f5f4ab..4128cdffad89d2ed80922077954cd6a30d49cd9e 100644 (file)
@@ -35,6 +35,7 @@
 #include "views/dolphinremoteencoding.h"
 #include "views/draganddrophelper.h"
 #include "views/viewproperties.h"
+#include "views/dolphinnewfilemenuobserver.h"
 
 #ifndef Q_OS_WIN
 #include "panels/terminal/terminalpanel.h"
@@ -126,6 +127,9 @@ DolphinMainWindow::DolphinMainWindow() :
     ViewTab& viewTab = m_viewTab[m_tabIndex];
     viewTab.wasActive = true; // The first opened tab is automatically active
 
+    connect(&DolphinNewFileMenuObserver::instance(), SIGNAL(errorMessage(QString)),
+            this, SLOT(showErrorMessage(QString)));
+
     KIO::FileUndoManager* undoManager = KIO::FileUndoManager::self();
     undoManager->setUiInterface(new UndoUiInterface());
 
@@ -1297,8 +1301,6 @@ void DolphinMainWindow::openContextMenu(const QPoint& pos,
 {
     QWeakPointer<DolphinContextMenu> contextMenu = new DolphinContextMenu(this, pos, item, url);
     contextMenu.data()->setCustomActions(customActions);
-    connect(contextMenu.data(), SIGNAL(errorMessage(QString)),
-            this, SLOT(showErrorMessage(QString)));
     const DolphinContextMenu::Command command = contextMenu.data()->open();
 
     switch (command) {
@@ -1491,8 +1493,6 @@ void DolphinMainWindow::setupActions()
     m_newFileMenu->setDelayed(false);
     connect(menu, SIGNAL(aboutToShow()),
             this, SLOT(updateNewMenu()));
-    connect(m_newFileMenu, SIGNAL(errorMessage(QString)),
-            this, SLOT(showErrorMessage(QString)));
 
     KAction* newWindow = actionCollection()->addAction("new_window");
     newWindow->setIcon(KIcon("window-new"));
index 480889f727bfe6fccf7171a95b2bdc95ee0103a9..da57ca946f34a2c6eb4d235359c87cb3afb5f7a8 100644 (file)
@@ -26,7 +26,7 @@
 #include <KIO/Job>
 
 DolphinNewFileMenu::DolphinNewFileMenu(KActionCollection* collection, QObject* parent) :
-    KNewFileMenu(collection, "create_new", parent)
+    KNewFileMenu(collection, "new_menu", parent)
 {
     DolphinNewFileMenuObserver::instance().attach(this);
 }
index ae5881366dd8b13257f8b45d1fc50b8b09ddc296..e211dfd881319a7495be258485ad1d16f410c94e 100644 (file)
@@ -23,6 +23,8 @@
 
 #include <KNewFileMenu>
 
+#include "libdolphin_export.h"
+
 class KJob;
 
 /**
@@ -33,7 +35,7 @@ class KJob;
  * All errors are shown in the status bar of Dolphin
  * instead as modal error dialog with an OK button.
  */
-class DolphinNewFileMenu : public KNewFileMenu
+class LIBDOLPHINPRIVATE_EXPORT DolphinNewFileMenu : public KNewFileMenu
 {
     Q_OBJECT
 
index de4c6070d1948c769fe625fe3122eff4ea92743d..66097358f09b5fd3fc9192358a5cd096b03ce58d 100644 (file)
@@ -37,7 +37,6 @@
 #include <KIO/NetAccess>
 #include <KToolInvocation>
 #include <kauthorized.h>
-#include <KNewFileMenu>
 #include <KMenu>
 #include <KInputDialog>
 #include <KProtocolInfo>
@@ -47,6 +46,7 @@
 #include "dolphinpart_ext.h"
 #endif
 
+#include "dolphinnewfilemenu.h"
 #include "views/dolphinview.h"
 #include "views/dolphinviewactionhandler.h"
 #include "views/dolphinnewfilemenuobserver.h"
@@ -79,6 +79,9 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
     m_view->setTabsForFilesEnabled(true);
     setWidget(m_view);
 
+    connect(&DolphinNewFileMenuObserver::instance(), SIGNAL(errorMessage(QString)),
+            this, SLOT(slotErrorMessage(QString)));
+
     connect(m_view, SIGNAL(directoryLoadingCompleted()), this, SIGNAL(completed()));
     connect(m_view, SIGNAL(directoryLoadingProgress(int)), this, SLOT(updateProgress(int)));
     connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(slotErrorMessage(QString)));
@@ -160,16 +163,14 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
 
 DolphinPart::~DolphinPart()
 {
-    DolphinNewFileMenuObserver::instance().detach(m_newFileMenu);
 }
 
 void DolphinPart::createActions()
 {
     // Edit menu
 
-    m_newFileMenu = new KNewFileMenu(actionCollection(), "new_menu", this);
+    m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this);
     m_newFileMenu->setParentWidget(widget());
-    DolphinNewFileMenuObserver::instance().attach(m_newFileMenu);
     connect(m_newFileMenu->menu(), SIGNAL(aboutToShow()),
             this, SLOT(updateNewMenu()));
 
index 172bfafc6d14b0dac5c7a5bc3b327902d9b43bbd..c70bc5a8df28e468b99f4b28bdf8aa9ac9b95817 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <QItemSelectionModel>
 
-class KNewFileMenu;
+class DolphinNewFileMenu;
 class DolphinViewActionHandler;
 class QActionGroup;
 class KAction;
@@ -244,7 +244,7 @@ private:
     DolphinViewActionHandler* m_actionHandler;
     DolphinRemoteEncoding* m_remoteEncoding;
     DolphinPartBrowserExtension* m_extension;
-    KNewFileMenu* m_newFileMenu;
+    DolphinNewFileMenu* m_newFileMenu;
     KAction* m_findFileAction;
     KAction* m_openTerminalAction;
     QString m_nameFilter;
index 68e03752f5708e199ac24692d3d4001af015eeaf..52826bb43a1a7556ddca433262caaab8b0235924 100644 (file)
@@ -2,7 +2,7 @@
 <kpartgui name="dolphin" version="14">
     <MenuBar>
         <Menu name="file">
-            <Action name="create_new" />
+            <Action name="new_menu" />
             <Action name="new_window" />
             <Action name="new_tab" />
             <Action name="close_tab" />
index 1cb5739d796f55d164185385b1475c824a710d37..7669f15616d0615fa4f7fae58fb9c336a3340cab 100644 (file)
@@ -20,7 +20,7 @@
 #include "dolphinnewfilemenuobserver.h"
 
 #include <KGlobal>
-#include <KNewFileMenu>
+#include "dolphinnewfilemenu.h"
 
 class DolphinNewFileMenuObserverSingleton
 {
@@ -34,20 +34,24 @@ DolphinNewFileMenuObserver& DolphinNewFileMenuObserver::instance()
     return s_DolphinNewFileMenuObserver->instance;
 }
 
-void DolphinNewFileMenuObserver::attach(const KNewFileMenu* menu)
+void DolphinNewFileMenuObserver::attach(const DolphinNewFileMenu* menu)
 {
     connect(menu, SIGNAL(fileCreated(KUrl)),
             this, SIGNAL(itemCreated(KUrl)));
     connect(menu, SIGNAL(directoryCreated(KUrl)),
             this, SIGNAL(itemCreated(KUrl)));
+    connect(menu, SIGNAL(errorMessage(QString)),
+            this, SIGNAL(errorMessage(QString)));
 }
 
-void DolphinNewFileMenuObserver::detach(const KNewFileMenu* menu)
+void DolphinNewFileMenuObserver::detach(const DolphinNewFileMenu* menu)
 {
     disconnect(menu, SIGNAL(fileCreated(KUrl)),
                this, SIGNAL(itemCreated(KUrl)));
     disconnect(menu, SIGNAL(directoryCreated(KUrl)),
                this, SIGNAL(itemCreated(KUrl)));
+    disconnect(menu, SIGNAL(errorMessage(QString)),
+               this, SIGNAL(errorMessage(QString)));
 }
 
 DolphinNewFileMenuObserver::DolphinNewFileMenuObserver() :
index 726122cbc0e51503af09f11a2c797d1aa2d80f5b..239476eb9d2193d6f058fdc8be77011b6e88e096 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "libdolphin_export.h"
 
-class KNewFileMenu;
+class DolphinNewFileMenu;
 class KUrl;
 
 /**
@@ -40,11 +40,12 @@ class LIBDOLPHINPRIVATE_EXPORT DolphinNewFileMenuObserver : public QObject
 
 public:
     static DolphinNewFileMenuObserver& instance();
-    void attach(const KNewFileMenu* menu);
-    void detach(const KNewFileMenu* menu);
+    void attach(const DolphinNewFileMenu* menu);
+    void detach(const DolphinNewFileMenu* menu);
 
 signals:
     void itemCreated(const KUrl& url);
+    void errorMessage(const QString& error);
 
 private:
     DolphinNewFileMenuObserver();