]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/private/kitemlistroleeditor.h
GIT_SILENT Update Appstream for new release
[dolphin.git] / src / kitemviews / private / kitemlistroleeditor.h
index a2f7058086dffe164fd8869c840de8705a037075..eb8a9cb5edfb3f3cea8f094fb41d02307f4de298 100644 (file)
@@ -1,92 +1,78 @@
-/***************************************************************************
- *   Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com>             *
- *                                                                         *
- *   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: 2012 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #ifndef KITEMLISTROLEEDITOR_H
 #define KITEMLISTROLEEDITOR_H
 
-#include "libdolphin_export.h"
+#include "dolphin_export.h"
 
 #include <KTextEdit>
 
+enum EditResultDirection {
+    EditDone,
+    EditNext,
+    EditPrevious,
+};
+Q_DECLARE_METATYPE(EditResultDirection)
+
+struct EditResult {
+    QString newName;
+    EditResultDirection direction;
+};
+Q_DECLARE_METATYPE(EditResult)
+
 /**
  * @brief Editor for renaming roles of a KItemListWidget.
  *
  * Provides signals when the editing got cancelled (e.g. by
  * pressing Escape or when losing the focus) or when the editing
- * got finished (e.g. by pressing Enter or Return).
+ * got finished (e.g. by pressing Enter, Tab or Return).
  *
  * The size automatically gets increased if the text does not fit.
  */
-class LIBDOLPHINPRIVATE_EXPORT KItemListRoleEditor : public KTextEdit
+class DOLPHIN_EXPORT KItemListRoleEditor : public KTextEdit
 {
     Q_OBJECT
 
 public:
-    explicit KItemListRoleEditor(QWidget* parent);
-    virtual ~KItemListRoleEditor();
-
-    void setIndex(int index);
-    int index() const;
+    explicit KItemListRoleEditor(QWidget *parent);
+    ~KItemListRoleEditor() override;
 
-    void setRole(const QByteArrayrole);
+    void setRole(const QByteArray &role);
     QByteArray role() const;
 
-    /**
-     * Calls deleteLater() if no event is being handled at the moment.
-     * Otherwise, the deletion is deferred until the event handling is
-     * finished. This prevents that the deletion happens inside a nested
-     * event loop which might be run in contextMenuEvent() or
-     * mouseMoveEvent() because this would probably cause a crash.
-     */
-    void deleteWhenIdle();
+    void setAllowUpDownKeyChainEdit(bool allowChainEdit);
+    bool eventFilter(QObject *watched, QEvent *event) override;
 
-    virtual bool eventFilter(QObject* watched, QEvent* event);
+Q_SIGNALS:
+    void roleEditingFinished(const QByteArray &role, const QVariant &value);
+    void roleEditingCanceled(const QByteArray &role, const QVariant &value);
 
-signals:
-    void roleEditingFinished(int index, const QByteArray& role, const QVariant& value);
-    void roleEditingCanceled(int index, const QByteArray& role, const QVariant& value);
-
-protected:
-    virtual bool event(QEvent* event);
-    virtual bool viewportEvent(QEvent* event);
-    virtual void keyPressEvent(QKeyEvent* event);
-
-private slots:
+public Q_SLOTS:
     /**
      * Increases the size of the editor in case if there is not
      * enough room for the text.
      */
     void autoAdjustSize();
 
+protected:
+    bool event(QEvent *event) override;
+    void keyPressEvent(QKeyEvent *event) override;
+
 private:
     /**
      * Emits the signal roleEditingFinished if m_blockFinishedSignal
      * is false.
      */
-    void emitRoleEditingFinished();
+    void emitRoleEditingFinished(EditResultDirection direction = EditDone);
 
 private:
-    int m_index;
     QByteArray m_role;
     bool m_blockFinishedSignal;
-    int m_eventHandlingLevel;
-    bool m_deleteAfterEventHandling;
+    bool m_allowUpDownKeyChainEdit;
 };
 
 #endif