File indexing completed on 2024-04-14 04:53:15
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2007 David Faure <faure@kde.org> 0003 SPDX-FileCopyrightText: 2007 Eduardo Robles Elvira <edulix@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef KONQUNDOMANAGER_H 0009 #define KONQUNDOMANAGER_H 0010 0011 #include "konqprivate_export.h" 0012 #include <QObject> 0013 #include <QString> 0014 #include <QList> 0015 class KonqClosedWindowItem; 0016 class KonqClosedTabItem; 0017 class KonqClosedItem; 0018 class KonqClosedWindowsManager; 0019 class QAction; 0020 0021 /** 0022 * Note that there is one KonqUndoManager per mainwindow. 0023 * It integrates KonqFileUndoManager (undoing file operations) 0024 * and undoing the closing of tabs. 0025 */ 0026 class KONQ_TESTS_EXPORT KonqUndoManager : public QObject 0027 { 0028 Q_OBJECT 0029 public: 0030 /** 0031 * Constructor 0032 * @param parent the parent QObject, also used as the parent widget for KonqFileUndoManager::UiInterface. 0033 */ 0034 explicit KonqUndoManager(KonqClosedWindowsManager *cwManager, QWidget *parent); 0035 ~KonqUndoManager() override; 0036 0037 bool undoAvailable() const; 0038 QString undoText() const; 0039 quint64 newCommandSerialNumber(); 0040 0041 /** 0042 * This method is not constant because when calling it the m_closedItemsList 0043 * might get filled because of delayed initialization. 0044 */ 0045 const QList<KonqClosedItem * > &closedItemsList(); 0046 void undoClosedItem(int index); 0047 void addClosedTabItem(KonqClosedTabItem *closedTabItem); 0048 /** 0049 * Add current window as a closed window item to other windows 0050 */ 0051 void addClosedWindowItem(KonqClosedWindowItem *closedWindowItem); 0052 void updateSupportsFileUndo(bool enable); 0053 0054 public Q_SLOTS: 0055 void undo(); 0056 void clearClosedItemsList(bool onlyInthisWindow = false); 0057 void undoLastClosedItem(); 0058 /** 0059 * Opens in a new tab/window the item the user selected from the closed tabs 0060 * menu (by emitting openClosedTab/Window), and takes it from the list. 0061 */ 0062 void slotClosedItemsActivated(QAction *action); 0063 void slotAddClosedWindowItem(KonqUndoManager *real_sender, 0064 KonqClosedWindowItem *closedWindowItem); 0065 0066 Q_SIGNALS: 0067 void undoAvailable(bool canUndo); 0068 void undoTextChanged(const QString &text); 0069 0070 /// Emitted when a closed tab should be reopened 0071 void openClosedTab(const KonqClosedTabItem &); 0072 /// Emitted when a closed window should be reopened 0073 void openClosedWindow(const KonqClosedWindowItem &); 0074 /// Emitted when closedItemsList() has changed. 0075 void closedItemsListChanged(); 0076 0077 /// Emitted to be received in other window instances, uing the singleton 0078 /// communicator 0079 void removeWindowInOtherInstances(KonqUndoManager *real_sender, const 0080 KonqClosedWindowItem *closedWindowItem); 0081 void addWindowInOtherInstances(KonqUndoManager *real_sender, 0082 KonqClosedWindowItem *closedWindowItem); 0083 private Q_SLOTS: 0084 void slotFileUndoAvailable(bool); 0085 void slotFileUndoTextChanged(const QString &text); 0086 0087 /** 0088 * Received from other window instances, removes/adds a reference of a 0089 * window from m_closedItemList. 0090 */ 0091 void slotRemoveClosedWindowItem(KonqUndoManager *real_sender, const 0092 KonqClosedWindowItem *closedWindowItem); 0093 0094 private: 0095 /// Fill the m_closedItemList with closed windows 0096 void populate(); 0097 0098 QList<KonqClosedItem *> m_closedItemList; 0099 KonqClosedWindowsManager *m_cwManager; 0100 bool m_supportsFileUndo = false; 0101 bool m_populated = false; 0102 }; 0103 0104 #endif /* KONQUNDOMANAGER_H */