diff --git a/kio/CMakeLists.txt b/kio/CMakeLists.txt index a19c54d3..d719fde2 100644 --- a/kio/CMakeLists.txt +++ b/kio/CMakeLists.txt @@ -78,13 +78,6 @@ set(kiocore_STAT_SRCS kio/kautomount.cpp ) -qt4_add_dbus_adaptor(kiocore_STAT_SRCS - kio/org.kde.kio.FileUndoManager.xml - fileundomanager_p.h KIO::FileUndoManagerPrivate - fileundomanager_adaptor - KIOFileUndoManagerAdaptor -) - set(kbookmarks_STAT_SRCS bookmarks/kbookmark.cc bookmarks/kbookmarkmanager.cc @@ -273,13 +266,6 @@ install( DESTINATION ${KDE4_INCLUDE_INSTALL_DIR} ) -install( - FILES - kio/org.kde.KDirNotify.xml - kio/org.kde.kio.FileUndoManager.xml - DESTINATION ${KDE4_DBUS_INTERFACES_INSTALL_DIR} -) - install( FILES kfile/images/yes.png diff --git a/kio/kio/fileundomanager.cpp b/kio/kio/fileundomanager.cpp index e262cfd6..0730ccac 100644 --- a/kio/kio/fileundomanager.cpp +++ b/kio/kio/fileundomanager.cpp @@ -21,7 +21,6 @@ #include "fileundomanager.h" #include "fileundomanager_p.h" #include "clipboardupdater_p.h" -#include "fileundomanager_adaptor.h" #include #include @@ -33,8 +32,6 @@ #include #include -#include - #include using namespace KIO; @@ -220,17 +217,6 @@ FileUndoManagerPrivate::FileUndoManagerPrivate(FileUndoManager* qq) : m_uiInterface(new FileUndoManager::UiInterface()), m_undoJob(0), m_nextCommandIndex(1000), q(qq) { - m_syncronized = initializeFromKDesky(); - (void) new KIOFileUndoManagerAdaptor(this); - const QString dbusPath = "/FileUndoManager"; - const QString dbusInterface = "org.kde.kio.FileUndoManager"; - - QDBusConnection dbus = QDBusConnection::sessionBus(); - dbus.registerObject(dbusPath, this); - dbus.connect(QString(), dbusPath, dbusInterface, "lock", this, SLOT(slotLock())); - dbus.connect(QString(), dbusPath, dbusInterface, "pop", this, SLOT(slotPop())); - dbus.connect(QString(), dbusPath, dbusInterface, "push", this, SLOT(slotPush(QByteArray))); - dbus.connect(QString(), dbusPath, dbusInterface, "unlock", this, SLOT(slotUnlock())); } FileUndoManager::FileUndoManager() @@ -272,7 +258,7 @@ void FileUndoManager::recordCopyJob(KIO::CopyJob* copyJob) void FileUndoManagerPrivate::addCommand(const UndoCommand &cmd) { - broadcastPush(cmd); + push(cmd); emit q->jobRecordingFinished(cmd.m_type); } @@ -329,7 +315,7 @@ void FileUndoManager::undo() return; } - // Make a copy of the command to undo before broadcastPop() pops it. + // Make a copy of the command to undo before slotPop() pops it. UndoCommand cmd = d->m_commands.last(); assert(cmd.m_valid); d->m_current = cmd; @@ -355,8 +341,8 @@ void FileUndoManager::undo() } } - d->broadcastPop(); - d->broadcastLock(); + d->pop(); + d->lock(); d->m_dirCleanupStack.clear(); d->m_dirStack.clear(); @@ -594,9 +580,7 @@ void FileUndoManagerPrivate::stepRemovingDirectories() m_currentJob = KIO::rmdir(dir); m_undoJob->emitDeleting(dir); addDirToUpdate(dir); - } - else - { + } else { m_current.m_valid = false; m_currentJob = 0; if (m_undoJob) @@ -610,125 +594,38 @@ void FileUndoManagerPrivate::stepRemovingDirectories() org::kde::KDirNotify::emitFilesAdded(it.url()); } emit q->undoJobFinished(); - broadcastUnlock(); + unlock(); } } -// const ref doesn't work due to QDataStream -void FileUndoManagerPrivate::slotPush(QByteArray data) -{ - QDataStream strm(&data, QIODevice::ReadOnly); - UndoCommand cmd; - strm >> cmd; - pushCommand(cmd); -} - -void FileUndoManagerPrivate::pushCommand(const UndoCommand& cmd) +void FileUndoManagerPrivate::push(const UndoCommand &cmd) { m_commands.append(cmd); emit q->undoAvailable(true); emit q->undoTextChanged(q->undoText()); } -void FileUndoManagerPrivate::slotPop() +void FileUndoManagerPrivate::pop() { m_commands.removeLast(); emit q->undoAvailable(q->undoAvailable()); emit q->undoTextChanged(q->undoText()); } -void FileUndoManagerPrivate::slotLock() +void FileUndoManagerPrivate::lock() { -// assert(!m_lock); + // assert(!m_lock); m_lock = true; emit q->undoAvailable(q->undoAvailable()); } -void FileUndoManagerPrivate::slotUnlock() +void FileUndoManagerPrivate::unlock() { -// assert(m_lock); + // assert(m_lock); m_lock = false; emit q->undoAvailable(q->undoAvailable()); } -QByteArray FileUndoManagerPrivate::get() const -{ - QByteArray data; - QDataStream stream(&data, QIODevice::WriteOnly); - stream << m_commands; - return data; -} - -void FileUndoManagerPrivate::broadcastPush(const UndoCommand &cmd) -{ - if (!m_syncronized) { - pushCommand(cmd); - return; - } - - QByteArray data; - QDataStream stream(&data, QIODevice::WriteOnly); - stream << cmd; - emit push(data); // DBUS signal -} - -void FileUndoManagerPrivate::broadcastPop() -{ - if (!m_syncronized) { - slotPop(); - return; - } - - emit pop(); // DBUS signal -} - -void FileUndoManagerPrivate::broadcastLock() -{ -// assert(!m_lock); - - if (!m_syncronized) { - slotLock(); - return; - } - emit lock(); // DBUS signal -} - -void FileUndoManagerPrivate::broadcastUnlock() -{ -// assert(m_lock); - - if (!m_syncronized) { - slotUnlock(); - return; - } - emit unlock(); // DBUS signal -} - -bool FileUndoManagerPrivate::initializeFromKDesky() -{ - // ### workaround for dcop problem and upcoming 2.1 release: - // in case of huge io operations the amount of data sent over - // dcop (containing undo information broadcasted for global undo - // to all konqueror instances) can easily exceed the 64kb limit - // of dcop. In order not to run into trouble we disable global - // undo for now! (Simon) - // ### FIXME: post 2.1 - // TODO KDE4: port to DBUS and test - return false; -#if 0 - DCOPClient *client = kapp->dcopClient(); - - if (client->appId() == "kdesktop") // we are master :) - return true; - - if (!client->isApplicationRegistered("kdesktop")) - return false; - - d->m_commands = DCOPRef("kdesktop", "FileUndoManager").call("get"); - return true; -#endif -} - void FileUndoManager::setUiInterface(UiInterface* ui) { delete d->m_uiInterface; diff --git a/kio/kio/fileundomanager_p.h b/kio/kio/fileundomanager_p.h index c407a987..ed808bb3 100644 --- a/kio/kio/fileundomanager_p.h +++ b/kio/kio/fileundomanager_p.h @@ -31,8 +31,6 @@ class KJob; namespace KIO { -class FileUndoManagerAdaptor; - struct BasicOperation { typedef QList Stack; @@ -44,7 +42,7 @@ struct BasicOperation bool m_renamed; enum Type { File, Link, Directory }; - Type m_type:2; + Type m_type; KUrl m_src; KUrl m_dst; @@ -96,8 +94,6 @@ private: enum UndoState { MAKINGDIRS = 0, MOVINGFILES, STATINGFILE, REMOVINGDIRS, REMOVINGLINKS }; -// The private class is, exceptionally, a real QObject -// so that it can be the class with the DBUS adaptor forwarding its signals. class FileUndoManagerPrivate : public QObject { Q_OBJECT @@ -109,15 +105,7 @@ public: delete m_uiInterface; } - void pushCommand( const UndoCommand& cmd ); - - void broadcastPush( const UndoCommand &cmd ); - void broadcastPop(); - void broadcastLock(); - void broadcastUnlock(); - void addDirToUpdate( const KUrl& url ); - bool initializeFromKDesky(); void undoStep(); @@ -126,9 +114,6 @@ public: void stepRemovingLinks(); void stepRemovingDirectories(); - /// called by FileUndoManagerAdaptor - QByteArray get() const; - friend class UndoJob; /// called by UndoJob void stopUndo( bool step ); @@ -137,7 +122,6 @@ public: /// called by UndoCommandRecorder void addCommand( const UndoCommand &cmd ); - bool m_syncronized; bool m_lock; UndoCommand::Stack m_commands; @@ -156,24 +140,12 @@ public: FileUndoManager* q; - // DBUS interface -Q_SIGNALS: - /// DBUS signal - void push(const QByteArray &command); - /// DBUS signal + void push(const UndoCommand &cmd); void pop(); - /// DBUS signal void lock(); - /// DBUS signal void unlock(); public Q_SLOTS: - // Those four slots are connected to DBUS signals - void slotPush(QByteArray); - void slotPop(); - void slotLock(); - void slotUnlock(); - void slotResult(KJob*); }; diff --git a/kio/kio/org.kde.kio.FileUndoManager.xml b/kio/kio/org.kde.kio.FileUndoManager.xml deleted file mode 100644 index 5919c60c..00000000 --- a/kio/kio/org.kde.kio.FileUndoManager.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - diff --git a/kio/tests/fileundomanagertest.cpp b/kio/tests/fileundomanagertest.cpp index 4bc1908b..72c93165 100644 --- a/kio/tests/fileundomanagertest.cpp +++ b/kio/tests/fileundomanagertest.cpp @@ -218,8 +218,6 @@ void FileUndoManagerTest::testCopyFiles() // Don't use QFile::exists, it's a broken symlink... QVERIFY( QFileInfo( destLink() ).isSymLink() ); - // might have to wait for dbus signal here... but this is currently disabled. - //QTest::qWait( 20 ); QVERIFY( FileUndoManager::self()->undoAvailable() ); QCOMPARE( spyUndoAvailable.count(), 1 ); QCOMPARE( spyTextChanged.count(), 1 );