[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kfm-devel
Subject:    Re: Review Request 126622: GSoC 2016 Project Idea: File Trays for Dolphin GUI Mockup
From:       arnav dhamija <arnav.dhamija () gmail ! com>
Date:       2016-01-25 18:43:42
Message-ID: 20160125184342.17778.77001 () mimi ! kde ! org
[Download RAW message or body]

--===============8862869166653472697==
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/126622/
-----------------------------------------------------------

(Updated Jan. 25, 2016, 6:43 p.m.)


Review request for Dolphin and KDE Usability.


Description (updated)
-------

(this has since been shifted to: (https://goo.gl/XeszhC)[https://goo.gl/XeszhC])

**The idea**
Selecting multiple files in any file manager for copying and pasting has never been a \
pleasant experience, especially if the files are in a non-continuous order. Often, \
when copying files between devices we might find that we need to select only a subset \
of the required files we have selected and this leads to the unwieldy operation of \
removing files from our selection. Of course, the common workaround is to create a \
new folder and to put all the items in  but this is a very inefficient process and \
can be very slow if large files need to be copied between devices.

My solution to this problem is to add a panel/view in Dolphin where the links to \
files and folders can be temporarily saved for a session. The files and folders are \
"staged" on this panel. Hence, the user can add folders and files from several \
different directories to this panel and can then collectively perform actions on all \
the items in the tray such as copy, paste, cut, delete items, send via Bluetooth, \
create a list of symbolic links, and better sharing options for the File Tray and \
Dolphin as a whole using the KDE Purpose Framework API. Complex file operations such \
as moving files across many devices can be made easy by staging the operation before \
performing it.

Files can be added to this tray by using a right-click context menu option or by \
using the mouse scroll click or drag and drop. As an additional option, the session \
for the File Tray Panel can be saved for later use.

This File Tray will be accessible through the existing Split view function in Dolphin \
as well as a directory available under the Panel section. This would make it neatly \
integrated with Dolphin's existing toolset and it would make dragging and dropping \
easy. Dolphin maintainer Emmanuel Pescosta suggested using Plasmoids to make the \
project more cohesive with KDE and to make it usable with multiple applications (eg \
Gwenview).

**Implementation**
The File Trays implementation is not completely resolved yet, but currently I want to \
implement a type of KIO Slave dedicated to the File Tray. Implementing a KIO Slave \
will make this project extremely versatile as it will allow several other KDE \
programs (such as Konqueror) to also benefit from such a feature. Creating a Plasmoid \
for the same will also be much easier as it will be no more difficult than simply \
using the existing Folder view Plasmoid by setting the directory to filetray:/ and \
creating some more context menu specific actions (I will probably need a better name \
than filetray:/ for it though).

**Use Cases**
Jerry has a large music collection on his computer and he has many devices such as a \
tablet, smartphone, HTPC, and a USB drive for his car audio. He needs only a subset \
of files from his extensive collection which he wants to keep on all his devices. \
Hence, to avoid making the same selection over and over again for each device, it's \
much more efficient for him to just create his list on the File Tray and then copy \
the same list to each device.

George is a student at university and he has a lot of unorganised files on his \
computer from lots of different directories. By selecting these files and staging \
them on the File Tray in a split view mode, he can easily discern where each file \
should go. He can then easily move files by simply dragging and dropping them in the \
directory they belong in. This makes the File Tray a helpful tool for file \
organisation.

Cosmo keeps forgetting where he keeps his important files as they are often hidden \
deep within directories and sub-directories. The File Trays feature can come to the \
rescue here by letting him stash the files in the File Tray and hence it will save \
him time from drilling deep into directories for a file. Hence, the File Tray can \
also be used for making quick shortcuts for files. For this I plan to add a feature \
and user preference to allow the user to restore the Tray from the previous session \
and to have the option of making the Tray retain the files stored in it across \
sessions.

**Interaction Model**
The File Tray will behave exactly like any other directory in Dolphin. However, the \
interaction model is not entirely obvious at first glance.

For example, using Copy on a selection of files and Pasting in the File Tray will \
populate a list of the folders in the Tray. Now, copying these files from the File \
Tray and pasting them to another directory will retain the files on the Tray while \
creating a copy of these files at the chosen directory.

Using a Cut on a selection of files **on** the File Tray will remove the files on the \
File Tray while copying them to the chosen directory.

However, one interaction which I feel will create a lot of confusion would be moving \
the files to the File Tray. This will be confusing as moving files to a virtual \
directory is not possible as the files simply exist as URLs on the Tray. Hence, the \
context menu will have a minor modification to disable/remove the Move option to the \
Tray. If items are pasted from the Clipboard, the files will still remain in their \
source directory, regardless of whether they have been Cut or Copied from the source \
directory.

On the other hand, there will be two options for Removing files from the File Tray. \
One option will simply remove the chosen files from the list in the File Tray and the \
other option will move the selection to the Trash.

Furthermore, by default, the File Tray will **not** retain the files added in it \
across sessions, though I will add a button to restore files from the previous \
session. I also plan to add a Save button (not sure where it should go) to allow the \
user to save the selection of files they have made on the Tray.

Another important note about the interaction model I have thought about is that the \
File Tray should have its own shortcut such as ctrl+W (of course the keyboard \
shortcut is subject to change). Invoking this shortcut on a selected number of files \
in the Active Directory should immediately open the File Tray and add all the Files \
in the selection there. Moreover, the Split view will be disabled whenever the File \
Tray is active. If the split view is open when the File Tray keyboard shortcut is \
activated, the Split view of the inactive directory will close and will be replaced \
with the File Tray.

Also, the File Open dialog will undergo some modification so users can select items \
directly off the Tray for other programs.

Finally, I also want to create a Plasmoid which will sync the same links as the File \
Tray and will exist as a widget on the Desktop. This Plasmoid will benefit the KDE \
desktop as a whole as multiple applications will be able to interact with the \
Plasmoid for stashing files. However, the completion of this may or may not happen \
with the GSoC timeline as it is completely dependent on how much QML I can learn by \
the time the GSoC proposal period starts : )

**GUI Mockup**
Attached with this Review Request is a Balsamiq mockup for my project idea, building \
upon what already exists in Dolphin. The Tray panel is activated by a toggle button \
on the Dolphin toolbar and behaves very similarly to the Split feature. Dragging and \
dropping folders and files from the active directory on the left and pasting directly \
from the clipboard will be supported.

The File Tray will use the same zoom and icon/details/compact settings as the main \
window of the file manager. While it may be technically possible to have a \
distinction, I feel it may be too complicated for many users as there will be many \
duplicate controls. 

I will be much obliged to hear feedback from the usability and dolphin teams on these \
GUI interactions : )

**Extra Features**
Also, there are a few more features I want to add to make the File Tray more \
powerful. However, these features are probably a better fit for Dolphin in general, \
and then the File Tray can use these functions from Dolphin: 1) The ability to create \
symbolic links of a selection of files. Nautilus has been doing this for a while. 2) \
Automatically create a music playlist file by selecting music files. 3) Adding \
support for the KDE Purpose Framework in Dolphin to make sharing easier.

**Note**
I made a new mockup by butchering the mockup a bit :S But, the new one is at least \
indicative of what I want to achieve with this project. I'm leaving the old one in \
just for some A/B testing if anyone wants to compare.


Diffs
-----


Diff: https://git.reviewboard.kde.org/r/126622/diff/


Testing
-------


File Attachments
----------------

FileTray Mockup (OLD).png
  https://git.reviewboard.kde.org/media/uploaded/files/2016/01/04/ec5ec185-0307-4579-afc4-567d2aafa220__FileTray_Mockup.png
 FileTray Mockup.png
  https://git.reviewboard.kde.org/media/uploaded/files/2016/01/09/feeab4a9-df95-42ed-b1f5-7c6bb756db2f__FileTray_Mockup.png



Thanks,

arnav dhamija


--===============8862869166653472697==
MIME-Version: 1.0
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 7bit




<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 \
solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">  \
<tr>  <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/126622/">https://git.reviewboard.kde.org/r/126622/</a>
  </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: \
1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; \
-webkit-border-radius: 6px;">  <tr>
  <td>

<div>Review request for Dolphin and KDE Usability.</div>
<div>By arnav dhamija.</div>


<p style="color: grey;"><i>Updated Jan. 25, 2016, 6:43 p.m.</i></p>










<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description  \
(updated)</h1>  <table width="100%" bgcolor="#ffffff" cellspacing="0" \
cellpadding="10" style="border: 1px solid #b8b5a0">  <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">(this has since been shifted to: \
(https://goo.gl/XeszhC)[https://goo.gl/XeszhC])</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;"><strong style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: normal;">The idea</strong> Selecting multiple files in any file \
manager for copying and pasting has never been a pleasant experience, especially if \
the files are in a non-continuous order. Often, when copying files between devices we \
might find that we need to select only a subset of the required files we have \
selected and this leads to the unwieldy operation of removing files from our \
selection. Of course, the common workaround is to create a new folder and to put all \
the items in  but this is a very inefficient process and can be very slow if large \
files need to be copied between devices.</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;">My solution to this \
problem is to add a panel/view in Dolphin where the links to files and folders can be \
temporarily saved for a session. The files and folders are "staged" on this panel. \
Hence, the user can add folders and files from several different directories to this \
panel and can then collectively perform actions on all the items in the tray such as \
copy, paste, cut, delete items, send via Bluetooth, create a list of symbolic links, \
and better sharing options for the File Tray and Dolphin as a whole using the KDE \
Purpose Framework API. Complex file operations such as moving files across many \
devices can be made easy by staging the operation before performing it.</p> <p \
style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;">Files can be added to this tray by using a right-click context menu option \
or by using the mouse scroll click or drag and drop. As an additional option, the \
session for the File Tray Panel can be saved for later use.</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This \
File Tray will be accessible through the existing Split view function in Dolphin as \
well as a directory available under the Panel section. This would make it neatly \
integrated with Dolphin's existing toolset and it would make dragging and dropping \
easy. Dolphin maintainer Emmanuel Pescosta suggested using Plasmoids to make the \
project more cohesive with KDE and to make it usable with multiple applications (eg \
Gwenview).</p> <p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;"><strong style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: normal;">Implementation</strong> \
The File Trays implementation is not completely resolved yet, but currently I want to \
implement a type of KIO Slave dedicated to the File Tray. Implementing a KIO Slave \
will make this project extremely versatile as it will allow several other KDE \
programs (such as Konqueror) to also benefit from such a feature. Creating a Plasmoid \
for the same will also be much easier as it will be no more difficult than simply \
using the existing Folder view Plasmoid by setting the directory to filetray:/ and \
creating some more context menu specific actions (I will probably need a better name \
than filetray:/ for it though).</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;"><strong style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">Use \
Cases</strong> Jerry has a large music collection on his computer and he has many \
devices such as a tablet, smartphone, HTPC, and a USB drive for his car audio. He \
needs only a subset of files from his extensive collection which he wants to keep on \
all his devices. Hence, to avoid making the same selection over and over again for \
each device, it's much more efficient for him to just create his list on the File \
Tray and then copy the same list to each device.</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;">George is a student at university and he has a lot of unorganised files on \
his computer from lots of different directories. By selecting these files and staging \
them on the File Tray in a split view mode, he can easily discern where each file \
should go. He can then easily move files by simply dragging and dropping them in the \
directory they belong in. This makes the File Tray a helpful tool for file \
organisation.</p> <p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">Cosmo keeps forgetting where he keeps his important \
files as they are often hidden deep within directories and sub-directories. The File \
Trays feature can come to the rescue here by letting him stash the files in the File \
Tray and hence it will save him time from drilling deep into directories for a file. \
Hence, the File Tray can also be used for making quick shortcuts for files. For this \
I plan to add a feature and user preference to allow the user to restore the Tray \
from the previous session and to have the option of making the Tray retain the files \
stored in it across sessions.</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;"><strong style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
normal;">Interaction Model</strong> The File Tray will behave exactly like any other \
directory in Dolphin. However, the interaction model is not entirely obvious at first \
glance.</p> <p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">For example, using Copy on a selection of files and \
Pasting in the File Tray will populate a list of the folders in the Tray. Now, \
copying these files from the File Tray and pasting them to another directory will \
retain the files on the Tray while creating a copy of these files at the chosen \
directory.</p> <p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">Using a Cut on a selection of files <strong \
style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
normal;">on</strong> the File Tray will remove the files on the File Tray while \
copying them to the chosen directory.</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;">However, one \
interaction which I feel will create a lot of confusion would be moving the files to \
the File Tray. This will be confusing as moving files to a virtual directory is not \
possible as the files simply exist as URLs on the Tray. Hence, the context menu will \
have a minor modification to disable/remove the Move option to the Tray. If items are \
pasted from the Clipboard, the files will still remain in their source directory, \
regardless of whether they have been Cut or Copied from the source directory.</p> <p \
style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;">On the other hand, there will be two options for Removing files from the \
File Tray. One option will simply remove the chosen files from the list in the File \
Tray and the other option will move the selection to the Trash.</p> <p \
style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;">Furthermore, by default, the File Tray will <strong style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
normal;">not</strong> retain the files added in it across sessions, though I will add \
a button to restore files from the previous session. I also plan to add a Save button \
(not sure where it should go) to allow the user to save the selection of files they \
have made on the Tray.</p> <p style="padding: 0;text-rendering: inherit;margin: \
0;line-height: inherit;white-space: inherit;">Another important note about the \
interaction model I have thought about is that the File Tray should have its own \
shortcut such as ctrl+W (of course the keyboard shortcut is subject to change). \
Invoking this shortcut on a selected number of files in the Active Directory should \
immediately open the File Tray and add all the Files in the selection there. \
Moreover, the Split view will be disabled whenever the File Tray is active. If the \
split view is open when the File Tray keyboard shortcut is activated, the Split view \
of the inactive directory will close and will be replaced with the File Tray.</p> <p \
style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;">Also, the File Open dialog will undergo some modification so users can \
select items directly off the Tray for other programs.</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;">Finally, I also want to create a Plasmoid which will sync the same links as \
the File Tray and will exist as a widget on the Desktop. This Plasmoid will benefit \
the KDE desktop as a whole as multiple applications will be able to interact with the \
Plasmoid for stashing files. However, the completion of this may or may not happen \
with the GSoC timeline as it is completely dependent on how much QML I can learn by \
the time the GSoC proposal period starts : )</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;"><strong style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">GUI \
Mockup</strong> Attached with this Review Request is a Balsamiq mockup for my project \
idea, building upon what already exists in Dolphin. The Tray panel is activated by a \
toggle button on the Dolphin toolbar and behaves very similarly to the Split feature. \
Dragging and dropping folders and files from the active directory on the left and \
pasting directly from the clipboard will be supported.</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The \
File Tray will use the same zoom and icon/details/compact settings as the main window \
of the file manager. While it may be technically possible to have a distinction, I \
feel it may be too complicated for many users as there will be many duplicate \
controls. </p> <p style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: inherit;">I will be much obliged to hear feedback from the \
usability and dolphin teams on these GUI interactions : )</p> <p style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
inherit;"><strong style="padding: 0;text-rendering: inherit;margin: 0;line-height: \
inherit;white-space: normal;">Extra Features</strong> Also, there are a few more \
features I want to add to make the File Tray more powerful. However, these features \
are probably a better fit for Dolphin in general, and then the File Tray can use \
these functions from Dolphin: 1) The ability to create symbolic links of a selection \
of files. Nautilus has been doing this for a while. 2) Automatically create a music \
playlist file by selecting music files. 3) Adding support for the KDE Purpose \
Framework in Dolphin to make sharing easier.</p> <p style="padding: 0;text-rendering: \
inherit;margin: 0;line-height: inherit;white-space: inherit;"><strong style="padding: \
0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: \
normal;">Note</strong> I made a new mockup by butchering the mockup a bit :S But, the \
new one is at least indicative of what I want to achieve with this project. I'm \
leaving the old one in just for some A/B testing if anyone wants to \
compare.</p></pre>  </td>
 </tr>
</table>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

</ul>

<p><a href="https://git.reviewboard.kde.org/r/126622/diff/" style="margin-left: \
3em;">View Diff</a></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">File Attachments \
</h1>


 <li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2016/01/04/ec5ec185-0307-4579-afc4-567d2aafa220__FileTray_Mockup.png">FileTray \
Mockup (OLD).png</a></li>

 <li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2016/01/09/feeab4a9-df95-42ed-b1f5-7c6bb756db2f__FileTray_Mockup.png">FileTray \
Mockup.png</a></li>

</ul>




  </td>
 </tr>
</table>



  </div>
 </body>
</html>


--===============8862869166653472697==--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic