Implementing shift delete in dolphin, some help would be nice.

Mark markg85 at gmail.com
Mon Sep 13 21:22:22 BST 2010


On Mon, Sep 13, 2010 at 10:00 PM, Mark <markg85 at gmail.com> wrote:

> On Mon, Sep 13, 2010 at 9:45 PM, Mark <markg85 at gmail.com> wrote:
>
>> Hi,
>>
>> I'm trying to fix this bug:
>> https://bugs.kde.org/show_bug.cgi?id=194275
>>
>> And for that i made this patch:
>> http://pastebin.com/GEi2BJvv
>>
>> However i have a few issues.
>> I'm using "KModifierKeyInfo" :
>> http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKModifierKeyInfo.html but
>> am having issues getting it to work. The way it's used in the patch blocks
>> the gui. This is what happens, in the patch i listen to "shift" key pressed
>> while opening the context menu however, the effect is that the gui now
>> simply blocks when you press shift on a selected file followed by a right
>> click (to open the context menu).
>>
>> Another issue i have is: How can can change the "Move to trash" to
>> "Delete"? I made a class wide for it: "m_deleteOrTrashMenuEntry" but if i
>> change it to some other menu entry while the context menu is open it simply
>> remains what is was before i changed it... I guess i need to repaint
>> something but what?
>>
>> I hope this made some sense and that someone can point me in the right
>> direction to solve this issue.
>>
>> Thanx,
>> Mark
>>
>
> Hmm, using pastebin for a mailing list isn't really smart.. Here is the raw
> diff:
>
> Index: src/dolphincontextmenu.cpp
> ===================================================================
> --- src/dolphincontextmenu.cpp (revision 1174907)
> +++ src/dolphincontextmenu.cpp (working copy)
> @@ -69,6 +69,9 @@
>      const DolphinView* view = m_mainWindow->activeViewContainer()->view();
>      m_selectedUrls = view->selectedUrls();
>      m_selectedItems = view->selectedItems();
> +    m_keyInfo = new KModifierKeyInfo();
> +
> +    connect(m_keyInfo, SIGNAL(keyPressed(Qt::Key,bool)), this,
> SLOT(deleteOrTrashMenuEntry(Qt::Key,bool)));
>  }
>
>  DolphinContextMenu::~DolphinContextMenu()
> @@ -337,8 +340,8 @@
>
>      const KUrl& url = m_mainWindow->activeViewContainer()->url();
>      if (url.isLocalFile()) {
> -        QAction* moveToTrashAction = collection->action("move_to_trash");
> -        popup->addAction(moveToTrashAction);
> +        m_deleteOrTrashMenuEntry = collection->action("move_to_trash");
> +        popup->addAction(m_deleteOrTrashMenuEntry);
>      } else {
>          showDeleteCommand = true;
>      }
> @@ -439,4 +442,24 @@
>      }
>  }
>
> +void DolphinContextMenu::deleteOrTrashMenuEntry(Qt::Key key, bool pressed)
> +{
> +    // insert 'Move to Trash' and (optionally) 'Delete'
> +    KSharedConfig::Ptr globalConfig =
> KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals);
> +    KConfigGroup configGroup(globalConfig, "KDE");
> +    bool showDeleteCommand = configGroup.readEntry("ShowDeleteCommand",
> false);
> +
> +    if(key == Qt::Key_Shift && !showDeleteCommand) {
> +        if(pressed) {
> +            m_deleteOrTrashMenuEntry =
> m_mainWindow->actionCollection()->action("delete");
> +            qDebug() << "DELETE...";
> +        }
> +        else {
> +            m_deleteOrTrashMenuEntry =
> m_mainWindow->actionCollection()->action("move_to_trash");
> +            qDebug() << "MOVE TO TRASH...";
> +        }
> +
> +    }
> +}
> +
>  #include "dolphincontextmenu.moc"
> Index: src/dolphincontextmenu.h
> ===================================================================
> --- src/dolphincontextmenu.h (revision 1174907)
> +++ src/dolphincontextmenu.h (working copy)
> @@ -25,6 +25,7 @@
>  #include <kservice.h>
>  #include <kurl.h>
>  #include <konq_copytomenu.h>
> +#include <kmodifierkeyinfo.h>
>
>  #include <QtCore/QObject>
>
> @@ -74,6 +75,9 @@
>      /** Opens the context menu model. */
>      void open();
>
> +public slots:
> +    void deleteOrTrashMenuEntry(Qt::Key key, bool pressed);
> +
>  private:
>      void openTrashContextMenu();
>      void openTrashItemContextMenu();
> @@ -130,6 +134,8 @@
>      int m_context;
>      KonqCopyToMenu m_copyToMenu;
>      QList<QAction*> m_customActions;
> +    QAction* m_deleteOrTrashMenuEntry;
> +    KModifierKeyInfo* m_keyInfo;
>  };
>
>  #endif
>
> Interesting, just found out that just having an instance
of KModifierKeyInfo (in the earlier diff: "m_keyInfo = new
KModifierKeyInfo();") blocks the GUI when shift is pressed and the right
mouse button.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20100913/92460428/attachment.htm>


More information about the kde-core-devel mailing list