WO2016051199A1 - Data manipulation - Google Patents

Data manipulation Download PDF

Info

Publication number
WO2016051199A1
WO2016051199A1 PCT/GB2015/052890 GB2015052890W WO2016051199A1 WO 2016051199 A1 WO2016051199 A1 WO 2016051199A1 GB 2015052890 W GB2015052890 W GB 2015052890W WO 2016051199 A1 WO2016051199 A1 WO 2016051199A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
copy
command
server
storage
Prior art date
Application number
PCT/GB2015/052890
Other languages
French (fr)
Inventor
Michael Strom
Original Assignee
Copycopy Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Copycopy Ltd. filed Critical Copycopy Ltd.
Publication of WO2016051199A1 publication Critical patent/WO2016051199A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Definitions

  • a method of manipulating data is disclosed. More specifically, but not exclusively, a method of transferring data between devices and subsequently actioning the data at one of the devices or at another device is disclosed.
  • Transferring data within a single electronic device, or from one electronic device to another, is possible via several known methods.
  • software on the device allows a user to perform predefined commands to transfer the data from one area of the device storage to a different area of the device storage.
  • the electronic device may also have removable storage attached to the device (such as an external hard drive or flash drive), to which data can also be transferred. Data may then be moved from the electronic device to another electronic device by storing the data on the removable storage, removing the removable storage and attaching the removable storage to the other electronic device. The other electronic device may then access the removable storage and transfer the data stored thereon onto its own storage.
  • a network may also be used to transfer data between devices. For example, FTP or email attachments may be used.
  • a remote storage to which a device, or two or more devices, is connected over a network may also be used to transfer data.
  • Such storage is typically referred to as cloud storage.
  • Electronic devices with a wired or wireless connection to a network are able to access the remote storage and transfer data to the remote storage. The data may then be accessed at any device that is able to connect to the remote storage.
  • the methods set- out above require a user to either manually transfer the data onto removable storage, or manually access the data stored in remote storage. While this is useful in that it allows data stored on one electronic device to be transferred over to another electronic device, multiple intermediate steps, such as transferring the data to removable storage and subsequently disconnecting the removable storage and reconnecting the removable storage to the other electronic device, or uploading the data to the cloud storage and subsequently accessing the data and downloading the data, are required.
  • Other known systems allow for the automatic sending of data to remote storage when the data is stored in a particular part of the file system of the device storage. For example, any data stored in a specific folder on the device storage may be sent over a network to remote storage automatically.
  • a method of transferring data from a first device to a second device comprises the steps of receiving, at the first device, a first command to copy data, receiving, at the first device, a second command to copy the data, determining whether the second command to copy the data is a command to copy the same data as the first command, and sending a copy of the data to the second device in response to the second command to copy the data.
  • the second command may be the same as the first command.
  • the copy of the data may be sent to a number of other devices.
  • the first command may have an associated first timestamp.
  • the second command may have an associated second timestamp.
  • the determining may further comprise determining whether the time difference between the first timestamp and the second timestamp is within a time difference threshold range.
  • the copy of the data may be sent to the second device if the time difference is within the time difference threshold range.
  • the time threshold range may have an upper time threshold.
  • the time threshold range may have a lower time threshold.
  • the copied data may be stored in storage of the first device upon receipt of the second command.
  • a method of transferring data from a first device to a second device comprises the steps of receiving, at the first device, a first command to copy data, providing, at the first device, an indicator to a user that a first command to copy data has been received, receiving, at the first device, a second command from the user responsive to the indicator, determining, at the first device, if the second command is indicative of a request to transfer the copied data to the second device, and sending a copy of the data to the second device if it is determined that the second command is indicative of a request to transfer the copied data to the second device.
  • the indicator may be a visual, sound or tactile feedback.
  • the step of receiving the second command may comprise requesting confirmation from a user of the first device to send a copy of the data to the second device.
  • the first device may be registered to a service provided by the second device.
  • the first device may be a communication device, such as a computer or mobile communications device.
  • the second device may be a server.
  • the sending may comprise sending the copy of the data via a network.
  • the copied data may be stored in storage of the first device upon receipt of the first command.
  • the storage may be a default location for copied data, the default location being defined by an operating system of the first device.
  • the storage may be a "clipboard" of the first device.
  • the copied data may first be stored in memory of the first device before being transferred to the storage of the first device.
  • the data may comprise metadata.
  • the first command may include identifying data to be copied.
  • a system for transferring data between devices.
  • the system comprises a first device with data stored thereon, and a second device in communication with the first device.
  • the first device may be provided according to other devices disclosed herein.
  • the second device may be configured to receive the copy of the data from the first device, and provide the copy of the data to one or more further devices in communication with the second device.
  • the system may further comprise the step of, between the step of receiving the copy of the data from the first device and providing the copy of the data to one or more further devices, sending a first indicator to the one or more further devices, the first indicator being indicative of the receipt of the copy by the second device.
  • the second device may only provide the copy of the data to the one or more further devices if, in response to the first indicator, the second device receives a confirmation, input by a user into a user interface of the one or more further devices, that the data is to be provided to the one or more further devices.
  • Providing the copy of the data to the one or more further devices may comprise transferring the data to the one or more further devices.
  • the system may further comprise the step of providing a second indicator on the one or more further devices after the copy of the data has been uploaded to the one or more further devices.
  • Providing the copy of the data to the one or more further devices may comprise storing the data in storage on the server, the storage being accessible by the one or more further devices.
  • Providing the copy of the data to the one or more further devices may comprise transferring the data to the one or more further devices, and further comprises storing the data in storage on the server, the storage being accessible by the one or more further devices.
  • the system may further comprise the step of providing a second indicator on the one or more further devices after the copy of the data has been transferred to the one or more further devices.
  • the one or more further devices may comprise the first device.
  • the first device and one or more further devices may be a communication device, such as a computer or mobile communications device.
  • the second device may comprise or be a server.
  • the first device and the one or more further devices may be in communication with the second device via a network.
  • a method of sending data from a first device to a second device comprises the steps of receiving, at the first device, a command to copy a data string, determining, at the first device, whether the data string has an associated action, and sending the data string to the second device if it is determined that the data string has an associated action.
  • the data string may be a keyword.
  • the method may further comprise the step of, after receiving a command to copy a data string, comparing the data string to a list of data strings having associated actions, the list of data strings being stored on internal storage of the first device.
  • a method of performing an action at a second device in response to receiving data from a first device comprises the steps of receiving, at the second device, data including a data string, determining, at the second device, an action associated with the data string, and performing the associated action at the second device if it is determined that the data string has an associated action.
  • the method may further comprise the step of, after receiving data including a data string, determining, at the second device, whether the data string has an associated action.
  • the associated action may comprise transferring, from the second device to the first device, data associated with the data string.
  • the data associated with the data string may be stored on internal storage of the second device.
  • the associated action may comprise carrying out a predetermined process on the second device.
  • the predetermined process may be determined by a first part of the data string.
  • a second part of the data string may specify a recipient of the predetermined process.
  • a third part of the data string may specify further data.
  • the predetermined process may comprise communicating with an external device to retrieve external data associated with the further data.
  • the external data may be sent to the first device.
  • a fourth part of the data string may be associated with data stored on internal storage of the second device.
  • the predetermined process may comprise transferring the stored data.
  • a system of sending data between devices comprising a first device, and a second device, wherein the first device is provided according to a first type of device disclosed herein and the second device is provided according to a second type of device disclosed herein.
  • the first device may be a communication device, such as a computer or mobile communications device.
  • the second device may be a server.
  • a computer program product comprising computer readable code operable, in use, to instruct a computer to perform any method disclosed herein.
  • a computer readable medium comprising computer readable code operable, in use, to instruct a computer to perform any method described herein is provided.
  • a device comprising a memory having computer executable code store thereon arranged to carry out any method disclosed herein, and a processor arranged to execute the code stored in the memory.
  • Figure 1 illustrates a system for transferring data
  • Figure 2 is a flow diagram of the process of transferring data using the system of figure 1 ;
  • Figure 3 is a flow diagram illustrating the operation of an alternative arrangement
  • Figure 4 is a flow diagram detailing what happens to copied data once it is received at a server.
  • Figure 5 is a flow diagram that shows details of further actions that may be performed by a server 106 after data is received by the server.
  • Figure 1 shows a system 100 for transferring data.
  • the system comprises a device 102, a network 104, a server 106, and one or more other devices 108.
  • the devices 102 and 108 are connected to the server 106 via the network 104, which is in this example the Internet.
  • the devices 102 and 108 may be associated with a single user, or may instead each be associated with different users.
  • the association of the devices 102 and 108 with a single or different users may be via registration of the devices with the server 106 through a login specific to each user.
  • the device 102 comprises data stored thereon, which may be selected by a user of the device 102 via a user-interface.
  • an input of one or more simple predefined actions on the device by the user automatically causes the device 102 to send a copy of the data to the server 106 via the network 104.
  • Copying data twice is one way in which this functionality may be provided. The copy of the data is then stored on storage on the server 106.
  • the server 106 may automatically send a notification via the network 104 to the connected device 108.
  • the device 102 may also automatically receive the notification from the server 106.
  • the device 108 may then download the data from the server 106, or view the data, either automatically or after interaction with an indicator displayed on the device 108 in response to receiving the notification.
  • copying data twice on the device 102 may automatically cause a copy of the data to be transferred directly to the device 108.
  • the system 100 therefore allows data to be easily sent from one device to a server, and then subsequently automatically downloaded or viewed on that device or other devices connected/registered with the server.
  • a user of either of the devices 102 or 108 may also manually access the server 106 to view or download the data at any time.
  • Reference to "the connected device 108" includes any number of connected or registered devices, and multiple devices may download the data from the server 106 at the same time.
  • a first arrangement is described with the aid of the flow diagram 200 of Figure 2.
  • the flow diagram 200 shows how a user may copy data from the device 102 to the server 106.
  • a user of the device 102 selects data on which to perform an action.
  • the device 102 may be any device such as a computer, a mobile phone, a tablet or similar device that allows a user to interact with data stored thereon.
  • the selection of data may be by any appropriate means, such as use of a touchscreen or conventional mouse and keyboard to highlight the data, or otherwise indicate that specific data is selected.
  • the data selected may be all or part of any data that is selectable on the device 102, such as a single word, a plurality of words, a web address, numbers, entire documents, pictures, videos, multiple different files, entire folders/directories of files, or any other selectable data.
  • the user performs a first action related to the selected data.
  • One such action is a "copy operation", which may for example be the copying of the selected data, which may be performed in any conventional manner.
  • a predefined action by a user such as the input of a keyboard shortcut, clicking an icon or selecting a menu option, may cause the data to be copied on the device 102, however the skilled person would understand that other predefined actions and copy operations are available.
  • a copy of the data is stored in a "default location" such as a shared
  • clipboard or other local storage or area (such as RAM memory) that is a default location on the device 102 for storing copied data, as determined by the device 102's operating system.
  • operating systems commonly have a shared default storage area acting as a shared clipboard that may be utilised by multiple programs running on the device. Alternatively, only part of the copied data or a
  • representation of the copied data may be stored or recorded. For example, only a hash value or metadata of the data may be stored. Accordingly, reference to "copied data" includes only a part or representation of copied data. This is particularly advantageous when a large amount of data is copied, for example a large video file, as not all of the copied data is stored thereby providing a faster copying operation and reducing memory usage. As another example, the operating system of some systems automatically copies the data in a number of different formats, and in this case the stored data may only be one or a selection of the multiple different formats.
  • the copy operation need not be a copying of the selected data, but may instead be any repeatable action that sends data to a shared clipboard or default location on the device 102, such as a copy operation that sends data to the shared clipboard of the device 102.
  • the copy operation may be
  • the shared clipboard is monitored for changes.
  • the copied data added to the shared clipboard is identified by software resident on the device 102.
  • the identification of copied data by the software may be achieved via a communication between the operating system of device 102 and the device software. Some operating systems are able to notify software that the contents of the shared clipboard have changed, and therefore interactions between the operating system and the device software allow the device software to identify the copied data.
  • the software resident on the device 102 identifies that data has been copied to the shared clipboard, the software optionally associates a first timestamp to the copied data. The timestamp defines when the data was copied.
  • the software records the copied data in a variety of formats determined by the specific operating system of the device 102 and/or the program from which the data was copied. Depending on the data copied, the operating system of the device may store the copied data in multiple formats
  • HTML data is copied
  • a plain text version of the HTML may also be copied.
  • a JPEG photo is copied
  • a BMP format of the photo may also be copied.
  • the program from which the data is copied may provide multiple formats for the copied data to the shared clipboard, via an interaction with the operating system.
  • the user performs a second action.
  • the second action may also be a copy operation, or an idempotent action, as described in relation to step 203.
  • the method then proceeds to step 206 in which the copied data is identified by the software in the same manner as in step 204, except that a second timestamp instead of a first timestamp may optionally be associated with the copied data.
  • step 208 the software determines whether the specific data has been copied more than once.
  • the software achieves this by recording all the copied data in step 204 and/or step 205a, or some or all the parts or representations of the copied data, and therefore determines whether that specific data has been copied previously or not. If the software determines that the specific data has been copied to the shared clipboard on the device 102 more than once consecutively, and therefore a double copy operation has been performed, the method proceeds to step 212.
  • any metadata associated with the data and/or alternative formats for the data may be stored by the software, as described in relation to step 206.
  • the storing of the metadata and the alternative formats may take place on the first copy operation (step 203), and/or on the second copy operation (step 205a) performed on the same data. Therefore, when two subsequent copy operations are performed on the same data, any metadata and alternative formats for the copied data will have been stored by the software If, alternatively, the software determines that the specific data has not been copied previously, and therefore the second action 205a did not result in a double copy operation, the software does not proceed to step 212 and therefore data is not sent to the server 106.
  • the flow diagram 200 therefore then returns to step 202 or 205a in which either new data may be selected, or a second action 205a may be performed on the already selected data. Alternatively, the flow diagram may instead proceed to step 205b in which a different second action is performed.
  • step 210 the software determines whether the time elapsed between each copy operation of the double copy operation is within a time threshold range. This is achieved by comparing the second timestamp (associated with the subsequent copy of the data, the second copy operation 205a) and the first timestamp (associated with the previous copy of the data, the first copy operation 203). The time difference between the two timestamps therefore provides the amount of time elapsed between two copy operations. This time difference is then compared to a predetermined time threshold range, which may be any suitable value as predetermined by the device software or user defined.
  • the time threshold range may include an upper threshold, which may for example be 3 seconds, however significantly shorter or longer durations are also possible.
  • the time threshold range may also optionally have a lower threshold, for example 100ms, however this lower threshold may be any time duration that can distinguish the input of two successive user actions, two copy operations, from two successive computer actions, described below.
  • the time threshold range may begin at 0 seconds, and therefore only the upper threshold may be present in the time threshold range.
  • a time threshold range therefore prevents the software from proceeding to step 212 unintentionally.
  • the user may perform a copy operation and copy the data for a first time at step 203, and then perform a second copy operation and copy the same data for a second time many hours later at step 205.
  • the time between copy operations may therefore be greater than the upper threshold time, and therefore the software would not proceed to step 212.
  • the operating system or other software may perform two successive copy actions (two successive computer actions) as part of its normal processes, however these may be performed too quickly to be considered to be performed by a human user, and therefore the lower threshold would prevent the software from detecting this as two copy operations.
  • step 210 the software proceeds to step 212 (and sends the data to the server 106) purely by virtue of two or more successive copying actions being performed on the same data, and therefore a double copy operation being detected.
  • the inclusion of timestamps however minimises the number of double copy operations detected, since these must be done within a fixed time threshold range to be registered as a double copy operation by the software.
  • step 212 the software determines that the time between the first and second timestamps is within the time threshold range. If the software determines that the time between the first and second thresholds is outside the time threshold range, the flow diagram 200 then returns to step 202 or 203 in which either new data may be selected, or the already selected data may be copied.
  • a copy of the data is transferred to the server 106 and stored thereon.
  • the transfer of data to the server may be via a secure channel, as is conventional in the art.
  • the transferred data includes metadata and may also include the alternative
  • the metadata includes information about the device from which the data is copied, such as the model of the device or the program on the device from which the data was copied.
  • the method may proceed to step 205b and perform a different second action such as a user confirmation action.
  • the user confirmation action 205b confirms that the data is to be sent to the server 106.
  • the software after the software has identified that the data has been copied to the shared clipboard at step 204, at step 205b the software automatically displays a request on the device 102 to send the new copied data to the server 106.
  • the display of such a request may be by any appropriate means, for example as a "pop-up" or any other manner of informing a user of the device 102 that a copy of the data may be sent to the server 106.
  • the second action at step 205b is therefore an interaction with the displayed request, for example the clicking of a pop-up or other appropriate interaction, to confirm that the data should be sent from the shared clipboard to the server 106.
  • the second action 205b therefore confirms that the data is to be sent to the server 106.
  • the software may cause the "pop-up" or other manner of informing the user to disappear/stop after a few seconds to avoid becoming intrusive.
  • the network 104 may provide communication between the server 106 and the device 102 via wired or wireless means, for example via the internet.
  • the server 106 may be a cloud- based server with the capability of communicating with multiple registered/connected devices simultaneously, such as devices 102 or 108.
  • the device 108 may have software equivalent or similar to that of device 102, such that the device 108 is able to interact with the server 106 in the same or a similar way as device 102.
  • the device 108 may have identical software to that of device 102, or may have similar software such as a browser plugin that is capable of downloads only.
  • a web app could be used to provide any of the functionality of the software of device 102.
  • a further arrangement is described with the aid of the flow diagram 300 of Figure 3.
  • the flow diagram 300 shows an alternative way a user may copy data from the device 102 to the server 106.
  • Steps 302 and 304 correspond to steps 202 and 203 of the first arrangement, and therefore will not be repeated here.
  • the operating systems of some devices do not support notifying other software/programs of changes to the shared clipboard or default location of the device. As a result of this, for these devices it may not be possible to perform the step 204 of identifying copied data. Therefore, at step 306 the software polls the shared clipboard via retrieving the copied data repeatedly, for example via a paste operation, in order to determine whether the data stored in the shared clipboard has changed. To do this, the software retrieves the copied data from the shared clipboard at regular intervals. The intervals may be 5 seconds for example.
  • the software determines that new data has been copied by the user by comparing the new retrieved data to previously retrieved data, either in full or by comparison of a part of the data or related data, such as metadata or hashes.
  • step 308 after the software has determined that new data has been copied to the shared clipboard on the device 102, the method performs a second action 308, such as a user confirmation action, in the same manner as set out in step 205b described above.
  • the second action 308 therefore confirms that the data is to be sent to the server 106, and the method proceeds to step 310 in which the data is sent to the server 106.
  • the user may instead select not to send the data to the server 106, or take no action in relation to the request, at which point the flow diagram returns to any of steps 302, 304 or 306. If no action is taken, the software may cause the "pop-up" or other manner of informing the user at step 308 to disappear/stop after a few seconds to avoid becoming intrusive.
  • the server 106 is prevented from being flooded with data that the user does not wish to store on the server 106, and therefore network traffic and bandwidth is minimised, and processing demands are reduced. This is turn reduces power usage of the device 102 or 108, which, in the case of battery operated devices, improves battery life. In all cases energy costs are minimised due to the reduced power usage.
  • the above arrangements therefore allow for a user to send selected data to the server 106 by either repeating a predefined action, such as a copy operation, or responding to a request to send the data to the server 106 after having performed a predefined action, such as a copy operation, on the device 102.
  • the data is therefore only transferred to the server 106 when the user wishes it to be transferred, and as a result privacy fears are minimised as a single copy operation will not cause the data to be sent to the server 106 automatically.
  • the first and second arrangements have only been described in relation to two repeated predefined actions, such as two copy operations, any number of copy operations could be used as a trigger to send data to the server 106.
  • the flow diagram 400 of Figure 4 details what happens to the copied data once it is received at the server 106.
  • the server 106 receives the copied data, including the associated metadata, sent from either step 212 of Figure 2 or step 310 of Figure 3.
  • the device 102 monitors the server 102 for new data. This may be achieved by a push notification sent to the software of device 102 by the server 106, or the device software polling the server 106 for updates.
  • the push notification may also optionally be sent to the other device(s) 108 associated with the user, or to any other devices associated with the user.
  • the manner in which the software polls the server 106 for updates is conventional and therefore will not be described here.
  • the push notification or polling of the server 106 allows the software of the device 102, or equivalent software of any device in communication with the server 106, such as device 108, to know that new data has been received by the server 106.
  • the method proceeds to step 408.
  • the software may provide a first indicator at step 406 to inform a user of the devices 102 or 108 that new data has been received by the server 106.
  • the first indicator may take any appropriate form such as a "pop-up", light or audio signal, or any other manner that would alert a user of any of the devices 102 or 108 that new data has been received by the server 106.
  • the device(s) 108 downloads the data recently received by the server 106 and adds it to the shared clipboard of the device(s) 108.
  • the adding of data to the shared clipboard allows the data to be pasted into any other program resident on the device 108 using a paste operation.
  • the user can view the associated data via the device software.
  • the download of the data may be automatic, or may be initiated by the user by interacting with the software or the first indicator as previously described.
  • the push notification optionally sent to the device(s) 108 from the server 106 may also contain the new data, and therefore the device(s) 108 receives the complete new data at step 404.
  • the software on the receiving device(s) 108 may optionally display a second indicator that new data has been downloaded to the device(s) 108.
  • the second indicator may take the same form, and be displayed by the same means, as the first indicator of step 404, except that the second indicator informs a user of the device(s) 108 that the data has been downloaded on the device(s) 108.
  • the second indicator may take a different form than the first indicator, so as to assist the user in distinguishing the difference between the first and second indicators.
  • the second indicator may also be displayed on any other devices connected to or registered with the server 106.
  • One or all of the devices 102 and 108 are therefore synchronised with the server 106 in order to keep the data copied to the server 106 synchronised with the devices 102 and 108, by downloading any new data received by the server 106.
  • a user is therefore able to view the history of data received by the server 106, and take any number of actions including copying the data to the device 102 and/or 108 and viewing detailed information regarding the data or organising the data stored on the server 106, for example editing the data or similar.
  • Detailed information for the data may be displayed by the software on the devices by interacting with the first or second indicators, for example by clicking on or opening the first or second indicators.
  • a further arrangement is described with the aid of the flow diagram 500 of Figure 5.
  • the flow diagram 500 shows details of further actions that may be performed by the server 106 after data is received by the server 106.
  • the server 106 receives data.
  • the server 106 may receive the data as a result of steps 212 or 310 of the above arrangements, or the server 106 may receive data by other means.
  • the data received by the server 106 includes metadata, and also a format such as PDF, JPEG, TXT, HTML or any other file format.
  • the data received by the server 106 may contain a "keyword". Keywords are data strings comprising letters, number or characters, or a combination of these, and may be of two types. The first type is a user keyword, which is set by the user. The second type of keyword is a command-keyword, which has an associated function determined by the server 106. Both types of keyword are stored as a list of keywords in the memory of the registered devices. Therefore, when data including a data string is copied, the software of the registered device compares the copied data string to the list of keywords and determines whether the copied data string is a keyword. If the copied data string is determined to be a keyword, the software automatically detects that a keyword has been copied and sends any copied data including the data string to the server 106.
  • Any data stored on the server 106 may be accessed by a user of a registered device, such as the devices 102 and 108, and assigned a user keyword.
  • the assignment of a user keyword may be achieved, for example, by manually inputting a user keyword into an editable field associated with the data, or by other appropriate means.
  • the user keyword may be assigned to the data in the format that it was originally uploaded to the server 106, or in a different format.
  • the server 106 examines the data to determine the format of the data. This may be achieved via analysis of any metadata associated with the data, determination via the file extension, and/or by using lookup tables or machine learning. Conventional software is able to make this determination via known means. In an alternative
  • step 504 could be performed after step 506.
  • the server 106 detects whether the received data contains a keyword. This is achieved by comparing one or more data strings in the copied data to a list of keywords stored in a keyword database resident in the memory of the server 106.
  • the keyword database contains both user keywords and command-keywords. In some arrangements, it is only the start of the data string that is compared to the list of keywords. Such an arrangement thereby reduces the amount of processing required to identify the keyword.
  • the server 106 automatically retrieves, from internal storage on the server 106, the data associated with the user keyword and performs an action.
  • One action performed in relation to user keywords is the download of the associated data to a registered device that copied the user keyword, and adding the associated data to the shared clipboard of the same registered device.
  • the user can view the associated data via the device software, as in step 408 previously described. Steps 404 and 406 may also take place before the associated data is downloaded.. Therefore, a user of a registered device may obtain access to, or make use of, data assigned to a user keyword by copying the user keyword on the registered device.
  • a user may assign, via a user interface on the server 106, the user keyword "Creditcard" to the data containing their credit card number stored on the server 106. If a user of the registered device is prompted to input a credit card number on the registered device, they may perform a copy operation on the word
  • any user keyword could be assigned to any data stored in the server 106, or indeed one user keyword could be assigned to multiple data stored in the server 106.
  • the actual word used as the user keyword need not have any relation to data to which the user keyword is assigned, and may be any combination of letters, numbers and characters chosen by the user.
  • an associated action is automatically performed by the server 106.
  • the associated action may for example be sending an email, sending a social network message, or providing data.
  • the data is provided by the server 106, but may also or instead be provided directly from another registered device, or it may be provided from another source. For instance, copying the term "email user@example.com I am in late to work” may automatically send an email to the email address user@example.com with the message "I am in late to work”.
  • Command-keywords may also contain special characters such as "!, such that the command-keywords are less likely to be used accidentally.
  • the word “define” may be a command-keyword, and therefore performing a copy operation on the words “define antidisestablishmentarianism” causes the server 106 to automatically provide a definition of the word “antidisestablishmentarianism” to the device.
  • the server 106 may have this word definition in its internal storage, or the server 106 may contact a 3 rd party service for the definition before providing the definition to the device. Therefore, a command-keyword causes an action associated with the command-keyword to be performed automatically by the server 106.
  • the server 106 directly performs the action upon detecting the keyword, or the server 106 may communicate with a 3 rd party service or other device first in order to retrieve any data necessary to perform the action.
  • Command-keywords can be combined with user keywords.
  • the word "sales- brochure” may be a user keyword associated with a PDF stored on the server 106 of a sales brochure.
  • the word "email” may be a command-keyword to send an email.
  • the server receives the copied words at step 502, and at step 506 the server 106 detects that multiple keywords are copied.
  • the server 106 therefore retrieves the PDF sales brochure associated with the user keyword "sales-brochure” from internal storage of the server 106, and automatically sends the sales brochure to the email address user@example.com.
  • the action associated with the command-keyword may be the server 106 providing the capability for a registered device to perform a further action. For example, receiving the data "call Bob", which includes a command-keyword "call” and a user keyword “Bob”, may cause the server 106 to a) determine that "Bob" is a user keyword associated with data comprising a phone number for Bob stored on the server 106, b) determine that "call” is a command-keyword to start a phone call on a registered device, and c) provide the capability to the registered device to automatically call the phone number for Bob.
  • step 510 the server 106 lists transformation or information extraction options for the copied data.
  • the transformation or information extraction options may be based on any detected actions, through examination of the metadata and the format of the data as received. For example, the server 106 may detect that the data relates to a phone number which may be transformed such that it can be dialled by any registered device, and/or the data relates to a map address which may be transformed such that it can be shown by a mapping service or app on any registered device. Additionally or alternatively, the server 106 may detect that the data is in word processing format, and list a transformation of that document into a PDF format. Many other actions and formats may be provided by the server 106.
  • the server 106 does not perform any transformations and only lists the transformations that could be performed.
  • the server 106 transforms the data into one or more formats different from the original format of the received data.
  • the server 106 also detects, through examination of the metadata and the format of the data as received, actions related to the data. The possible transformations and actions are set out in steps 514a, 514b and 514c.
  • the server 106 transforms the data into plain text format.
  • the server 106 may additionally or instead transform the data into an HTML format.
  • This HTML format provides a view of the data that highlights data as actionable links. For example, text containing a URL may be converted into a link actionable by a registered device connected to the server 106 to open the web page associated with the URL.
  • the HTML format may include a link actionable by a registered/connected device to download the file to the device.
  • the HTML format may include a link actionable by a registered/connected device to view that street address location.
  • a user may therefore access the HTML page, via a registered device, to select data with related actions to be effected on the registered device. For example, if the data included both a telephone number and an address, the HTML will display these highlighted individually, indicating to the user that they may be appropriately actioned automatically upon selection of the highlighted text, as previously described.
  • any devices registered/connected to the server 106 such as devices 102 and 108, may also determine the actions to carry out on the data. For example, in the case where the data includes a telephone number, the server 106 will transform the data, or the part of the data that relates to the telephone number, such that software on the devices 102 and/or 108 may automatically provide the option of dialling the telephone number on the respective device.
  • the server 106 may transform the data, or part of the data that relates to the street address, such that software on the devices 102 and/or 108 may automatically provide the option of viewing the street address on the respective device via a web page or app.
  • any of the above on the registered device(s) may be provided as an option to the user by any appropriate indicator displayed on the registered device(s).
  • Many other actions are possible, and the methods of examining data to automatically find phone numbers, addresses or other actionable data are known and therefore will not be described in detail here.
  • the server 106 may transform the data into other formats based on a list of predetermined formats that the server 106 is configured to automatically transform data into. This list may be determined via lookup tables, machine learning or other means. For example, if all or part of the data is an image, the server 106 may transform the image into a readily editable image format to be opened in image viewing or editing software on the respective device. The server 106 may also list formats to transform data into based on the capabilities of any device registered or connected to the server 106, such as the devices 102 or 108. When any device communicates with the server 106, the server 106 may determine the model and/or operating system of the communicating device based on the received communication.
  • the received communication includes data indicative of the model and/or operating system as standard, and therefore the server 106 may determine the model and/or operating system via lookup tables.
  • all of the data formats including the original data received by the server 106 and the transformed data, are stored on the server 106 for later access.
  • the server 106 may at this point automatically send all of the transformed data to the device 102, and/or to the other device(s) 108.
  • Any registered device such as devices 102 or 108, may access the data stored on the server 106 by step 516, at step 522. The device may then select an action based on the stored data.
  • the selected action may for example be downloading a file to the shared clipboard of the device in a specific format, dialling a phone number or locating an address on a map, or any other action as described in relation to step 510. Selection of the action causes the data to be performed by the device automatically at step 524.
  • Any registered device may also access the list of transformation options on the server 106 provided by step 510, at step 518.
  • the device accessing the received data may be the same device 102 that sent the data to the server 106 in the first place, or maybe any other device registered to the server 106, such as the device(s) 108.
  • the device may then select an action based on the transformation options.
  • the selected action may for example be downloading a file to the shared clipboard of the device in a specific format, dialling a phone number or locating an address on a map, or any other action as described in relation to step 510. Selection of the action causes the data to then be transformed by the server 106, and the selected action to be performed on the device.
  • the selected action may be performed automatically or the selection may prompt the display of an indicator on the devices 102 or 108 before performing an action.
  • the indicator may take any appropriate form such as a "pop-up" or any other manner that could detail the action to a user. This may be useful for example where the data stored on the server 106 is in word processing format (such as Microsoft Word), but the user of the device 102, 108 desires a copy of the data in PDF format.
  • any registered devices may monitor the server 106 for new data. This may be achieved by the server 106 optionally sending a push notification any or all registered devices, or any or all registered devices may poll the server 106 for updates.
  • the software of the registered devices may provide an indicator to inform a user that data has been received by the server 106.
  • the indicator may take the same form as the first indicator of step 406. For example, new data may be detected as a result of steps 510 or 516, and therefore indicators may be provided on the registered devices at this time.
  • the server 106 Since the transformation of the data is carried out on the server 106, resources on the devices 102 or 108 are conserved. The server 106 proceeds to transform the data without making use of computing resources or battery power of the devices 102 or 108, for example. Further, by having the server 106 carry out the transformations, further transformation options may be available and additionally the time taken to transform the data from one format to another may be reduced, due to the potential increased capabilities of the server hardware.
  • the data is sent to the server 106 by either step 212 or 310 as previously described, if the data is a large file size (such as photo or video, for example), the data is first sent as a thumbnail with associated metadata.
  • the server 106 at step 404 for example, to send the push notification to the software on any registered/connected devices as soon as possible.
  • the push notification may also be accompanied by an indicator specifying that new data is currently in the process of being copied to the server 106.
  • the server 106 may send a follow-up indicator as part of step 404 to inform the user of the registered/connected devices that the new data has been received by the server 106.
  • the indicator and follow-up indicator may take any form as set out in relation to the first indicator of step 406. This two-part indication system (the indicator followed by the follow- up indicator) gives the user of the registered/connected devices the impression that the data has been instantly copied.
  • any number of devices may be registered/connected to the server 106 via the network 104.
  • the user may use the device 102 to send data to the server 106, and then that data may be accessed or actioned by any other device that is connected or registered to the server 106.
  • the various methods described above may be implemented by a computer program product.
  • the software resident on the devices 102 and 108 is an example of such a computer program product.
  • the computer program product may include computer code arranged to instruct a computer or the devices 102 and 108 to perform the functions of one or more of the various methods described above.
  • the computer program and/or the code for performing such methods may be provided to an apparatus, such as a computer, the devices 102 and 108, and the server 106, on a computer readable medium or computer program product.
  • the computer readable medium may be transitory or non- transitory.
  • the computer readable medium could be, for example, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, or a propagation medium for data transmission, for example for downloading the code over the Internet.
  • the computer readable medium could take the form of a physical computer readable medium such as semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disc, and an optical disk, such as a CD-ROM, CD-R/W or DVD.
  • a physical computer readable medium such as semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disc, and an optical disk, such as a CD-ROM, CD-R/W or DVD.
  • An apparatus such as a computer, the devices 102 and 108, and the server 106, may be configured in accordance with such code to perform one or more processes in accordance with the various methods discussed herein.
  • the apparatus comprises a processor, memory, and a display. Typically, these are connected to a central bus structure, the display being connected via a display adapter.
  • the system can also comprise one or more input devices (such as a mouse and/or keyboard) and/or a communications adapter for connecting the apparatus to other apparatus or networks, such as the server 106 and the network 104.
  • the database resides in the memory of the computer system.
  • Such an apparatus may take the form of a data processing system.
  • Such a data processing system may be a distributed system. For example, such a data processing system may be distributed across a network.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Disclosed herein is a method of transferring data from a first device to a second device. The method comprises the steps of receiving, at the first device, a first command to copy data, receiving, at the first device, a second command to copy the data, determining whether the second command to copy the data is a command to copy the same data as the first command, and sending a copy of the data to the second device in response to the second command to copy the data. Also disclosed is a method of sending data from a10 first device to a second device.

Description

DATA MANIPULATION Field of Invention
A method of manipulating data is disclosed. More specifically, but not exclusively, a method of transferring data between devices and subsequently actioning the data at one of the devices or at another device is disclosed.
Background
Transferring data within a single electronic device, or from one electronic device to another, is possible via several known methods. To transfer data within a single electronic device, software on the device allows a user to perform predefined commands to transfer the data from one area of the device storage to a different area of the device storage. The electronic device may also have removable storage attached to the device (such as an external hard drive or flash drive), to which data can also be transferred. Data may then be moved from the electronic device to another electronic device by storing the data on the removable storage, removing the removable storage and attaching the removable storage to the other electronic device. The other electronic device may then access the removable storage and transfer the data stored thereon onto its own storage. A network may also be used to transfer data between devices. For example, FTP or email attachments may be used. A remote storage to which a device, or two or more devices, is connected over a network may also be used to transfer data. Such storage is typically referred to as cloud storage. Electronic devices with a wired or wireless connection to a network are able to access the remote storage and transfer data to the remote storage. The data may then be accessed at any device that is able to connect to the remote storage.
To transfer data from one electronic device to another electronic device, the methods set- out above require a user to either manually transfer the data onto removable storage, or manually access the data stored in remote storage. While this is useful in that it allows data stored on one electronic device to be transferred over to another electronic device, multiple intermediate steps, such as transferring the data to removable storage and subsequently disconnecting the removable storage and reconnecting the removable storage to the other electronic device, or uploading the data to the cloud storage and subsequently accessing the data and downloading the data, are required. Other known systems allow for the automatic sending of data to remote storage when the data is stored in a particular part of the file system of the device storage. For example, any data stored in a specific folder on the device storage may be sent over a network to remote storage automatically. In other known systems, data of a specific type or format is automatically sent to remote storage if it is present in the device storage. However, such systems are limited because they require the intermediate step of putting the data in a specific folder, or they automatically send all data of a certain type to remote storage.
Summary of Invention
According to a first aspect of the invention, a method of transferring data from a first device to a second device is provided. The method comprises the steps of receiving, at the first device, a first command to copy data, receiving, at the first device, a second command to copy the data, determining whether the second command to copy the data is a command to copy the same data as the first command, and sending a copy of the data to the second device in response to the second command to copy the data.
The second command may be the same as the first command. The copy of the data may be sent to a number of other devices. The first command may have an associated first timestamp. The second command may have an associated second timestamp. The determining may further comprise determining whether the time difference between the first timestamp and the second timestamp is within a time difference threshold range. The copy of the data may be sent to the second device if the time difference is within the time difference threshold range. The time threshold range may have an upper time threshold. The time threshold range may have a lower time threshold. The copied data may be stored in storage of the first device upon receipt of the second command.
According to another aspect of the invention a method of transferring data from a first device to a second device is provided. The method comprises the steps of receiving, at the first device, a first command to copy data, providing, at the first device, an indicator to a user that a first command to copy data has been received, receiving, at the first device, a second command from the user responsive to the indicator, determining, at the first device, if the second command is indicative of a request to transfer the copied data to the second device, and sending a copy of the data to the second device if it is determined that the second command is indicative of a request to transfer the copied data to the second device.
The indicator may be a visual, sound or tactile feedback. The step of receiving the second command may comprise requesting confirmation from a user of the first device to send a copy of the data to the second device. The first device may be registered to a service provided by the second device. The first device may be a communication device, such as a computer or mobile communications device. The second device may be a server. The sending may comprise sending the copy of the data via a network. The copied data may be stored in storage of the first device upon receipt of the first command. The storage may be a default location for copied data, the default location being defined by an operating system of the first device. The storage may be a "clipboard" of the first device. The copied data may first be stored in memory of the first device before being transferred to the storage of the first device. The data may comprise metadata. The first command may include identifying data to be copied.
According to yet another aspect of the invention a system is provided for transferring data between devices. The system comprises a first device with data stored thereon, and a second device in communication with the first device. The first device may be provided according to other devices disclosed herein. The second device may be configured to receive the copy of the data from the first device, and provide the copy of the data to one or more further devices in communication with the second device.
The system may further comprise the step of, between the step of receiving the copy of the data from the first device and providing the copy of the data to one or more further devices, sending a first indicator to the one or more further devices, the first indicator being indicative of the receipt of the copy by the second device. The second device may only provide the copy of the data to the one or more further devices if, in response to the first indicator, the second device receives a confirmation, input by a user into a user interface of the one or more further devices, that the data is to be provided to the one or more further devices. Providing the copy of the data to the one or more further devices may comprise transferring the data to the one or more further devices. The system may further comprise the step of providing a second indicator on the one or more further devices after the copy of the data has been uploaded to the one or more further devices. Providing the copy of the data to the one or more further devices may comprise storing the data in storage on the server, the storage being accessible by the one or more further devices. Providing the copy of the data to the one or more further devices may comprise transferring the data to the one or more further devices, and further comprises storing the data in storage on the server, the storage being accessible by the one or more further devices. The system may further comprise the step of providing a second indicator on the one or more further devices after the copy of the data has been transferred to the one or more further devices. The one or more further devices may comprise the first device. The first device and one or more further devices may be a communication device, such as a computer or mobile communications device. The second device may comprise or be a server. The first device and the one or more further devices may be in communication with the second device via a network.
According to another aspect of the invention a method of sending data from a first device to a second device is provided. The method comprises the steps of receiving, at the first device, a command to copy a data string, determining, at the first device, whether the data string has an associated action, and sending the data string to the second device if it is determined that the data string has an associated action. The data string may be a keyword.
The method may further comprise the step of, after receiving a command to copy a data string, comparing the data string to a list of data strings having associated actions, the list of data strings being stored on internal storage of the first device.
According to another aspect of the invention a method of performing an action at a second device in response to receiving data from a first device is provided. The method comprises the steps of receiving, at the second device, data including a data string, determining, at the second device, an action associated with the data string, and performing the associated action at the second device if it is determined that the data string has an associated action.
The method may further comprise the step of, after receiving data including a data string, determining, at the second device, whether the data string has an associated action. The associated action may comprise transferring, from the second device to the first device, data associated with the data string. The data associated with the data string may be stored on internal storage of the second device. The associated action may comprise carrying out a predetermined process on the second device. The predetermined process may be determined by a first part of the data string. A second part of the data string may specify a recipient of the predetermined process. A third part of the data string may specify further data. The predetermined process may comprise communicating with an external device to retrieve external data associated with the further data. The external data may be sent to the first device. A fourth part of the data string may be associated with data stored on internal storage of the second device. The predetermined process may comprise transferring the stored data. According to another aspect a system of sending data between devices is provided, said system comprising a first device, and a second device, wherein the first device is provided according to a first type of device disclosed herein and the second device is provided according to a second type of device disclosed herein. The first device may be a communication device, such as a computer or mobile communications device. The second device may be a server.
According to an aspect of the invention a computer program product is provided comprising computer readable code operable, in use, to instruct a computer to perform any method disclosed herein.
According to a further aspect of the invention a computer readable medium comprising computer readable code operable, in use, to instruct a computer to perform any method described herein is provided.
According to another aspect of the invention a device is provided comprising a memory having computer executable code store thereon arranged to carry out any method disclosed herein, and a processor arranged to execute the code stored in the memory. Brief Description of the Drawings
Exemplary arrangements of the disclosure shall now be described with reference to the drawings in which:
Figure 1 illustrates a system for transferring data;
Figure 2 is a flow diagram of the process of transferring data using the system of figure 1 ;
Figure 3 is a flow diagram illustrating the operation of an alternative arrangement;
Figure 4 is a flow diagram detailing what happens to copied data once it is received at a server; and
Figure 5 is a flow diagram that shows details of further actions that may be performed by a server 106 after data is received by the server.
Throughout the description and the drawings, like reference numerals refer to like parts. Detailed Description
Figure 1 shows a system 100 for transferring data. The system comprises a device 102, a network 104, a server 106, and one or more other devices 108. The devices 102 and 108 are connected to the server 106 via the network 104, which is in this example the Internet. The devices 102 and 108 may be associated with a single user, or may instead each be associated with different users. The association of the devices 102 and 108 with a single or different users may be via registration of the devices with the server 106 through a login specific to each user. The device 102 comprises data stored thereon, which may be selected by a user of the device 102 via a user-interface. After the data has been selected by the user, an input of one or more simple predefined actions on the device by the user automatically causes the device 102 to send a copy of the data to the server 106 via the network 104. Copying data twice is one way in which this functionality may be provided. The copy of the data is then stored on storage on the server 106.
Upon receipt of the data by the server 106, the server 106 may automatically send a notification via the network 104 to the connected device 108. The device 102 may also automatically receive the notification from the server 106. The device 108 may then download the data from the server 106, or view the data, either automatically or after interaction with an indicator displayed on the device 108 in response to receiving the notification. Alternatively or additionally, copying data twice on the device 102 may automatically cause a copy of the data to be transferred directly to the device 108. The system 100 therefore allows data to be easily sent from one device to a server, and then subsequently automatically downloaded or viewed on that device or other devices connected/registered with the server. A user of either of the devices 102 or 108 may also manually access the server 106 to view or download the data at any time. Reference to "the connected device 108" includes any number of connected or registered devices, and multiple devices may download the data from the server 106 at the same time.
A first arrangement is described with the aid of the flow diagram 200 of Figure 2. The flow diagram 200 shows how a user may copy data from the device 102 to the server 106. At step 202, a user of the device 102 selects data on which to perform an action. The device 102 may be any device such as a computer, a mobile phone, a tablet or similar device that allows a user to interact with data stored thereon. The selection of data may be by any appropriate means, such as use of a touchscreen or conventional mouse and keyboard to highlight the data, or otherwise indicate that specific data is selected. The data selected may be all or part of any data that is selectable on the device 102, such as a single word, a plurality of words, a web address, numbers, entire documents, pictures, videos, multiple different files, entire folders/directories of files, or any other selectable data. At step 203, the user performs a first action related to the selected data. One such action is a "copy operation", which may for example be the copying of the selected data, which may be performed in any conventional manner. For example, a predefined action by a user, such as the input of a keyboard shortcut, clicking an icon or selecting a menu option, may cause the data to be copied on the device 102, however the skilled person would understand that other predefined actions and copy operations are available. Once the data is copied, a copy of the data is stored in a "default location" such as a shared
"clipboard" or other local storage or area (such as RAM memory) that is a default location on the device 102 for storing copied data, as determined by the device 102's operating system. The skilled person would understand that operating systems commonly have a shared default storage area acting as a shared clipboard that may be utilised by multiple programs running on the device. Alternatively, only part of the copied data or a
representation of the copied data may be stored or recorded. For example, only a hash value or metadata of the data may be stored. Accordingly, reference to "copied data" includes only a part or representation of copied data. This is particularly advantageous when a large amount of data is copied, for example a large video file, as not all of the copied data is stored thereby providing a faster copying operation and reducing memory usage. As another example, the operating system of some systems automatically copies the data in a number of different formats, and in this case the stored data may only be one or a selection of the multiple different formats.
The skilled person would understand that the copy operation need not be a copying of the selected data, but may instead be any repeatable action that sends data to a shared clipboard or default location on the device 102, such as a copy operation that sends data to the shared clipboard of the device 102. For example, the copy operation may be
"cutting" the selected data, and therefore references to "copied data", and similar, include "cut data".
At step 204, the shared clipboard is monitored for changes. The copied data added to the shared clipboard is identified by software resident on the device 102. The identification of copied data by the software may be achieved via a communication between the operating system of device 102 and the device software. Some operating systems are able to notify software that the contents of the shared clipboard have changed, and therefore interactions between the operating system and the device software allow the device software to identify the copied data. When the software resident on the device 102 identifies that data has been copied to the shared clipboard, the software optionally associates a first timestamp to the copied data. The timestamp defines when the data was copied. The software records the copied data in a variety of formats determined by the specific operating system of the device 102 and/or the program from which the data was copied. Depending on the data copied, the operating system of the device may store the copied data in multiple formats
automatically, using conventional methods. For example, if HTML data is copied, then a plain text version of the HTML may also be copied. As another example, if a JPEG photo is copied, then a BMP format of the photo may also be copied. Alternatively or
additionally, the program from which the data is copied may provide multiple formats for the copied data to the shared clipboard, via an interaction with the operating system.
At step 205a, the user performs a second action. The second action may also be a copy operation, or an idempotent action, as described in relation to step 203. The method then proceeds to step 206 in which the copied data is identified by the software in the same manner as in step 204, except that a second timestamp instead of a first timestamp may optionally be associated with the copied data.
Following step 206, at step 208 the software determines whether the specific data has been copied more than once. The software achieves this by recording all the copied data in step 204 and/or step 205a, or some or all the parts or representations of the copied data, and therefore determines whether that specific data has been copied previously or not. If the software determines that the specific data has been copied to the shared clipboard on the device 102 more than once consecutively, and therefore a double copy operation has been performed, the method proceeds to step 212.
Anytime a copy operation is performed, any metadata associated with the data and/or alternative formats for the data may be stored by the software, as described in relation to step 206. The storing of the metadata and the alternative formats may take place on the first copy operation (step 203), and/or on the second copy operation (step 205a) performed on the same data. Therefore, when two subsequent copy operations are performed on the same data, any metadata and alternative formats for the copied data will have been stored by the software If, alternatively, the software determines that the specific data has not been copied previously, and therefore the second action 205a did not result in a double copy operation, the software does not proceed to step 212 and therefore data is not sent to the server 106. The flow diagram 200 therefore then returns to step 202 or 205a in which either new data may be selected, or a second action 205a may be performed on the already selected data. Alternatively, the flow diagram may instead proceed to step 205b in which a different second action is performed.
In another arrangement, if the software associates first and second timestamps to the copied data at steps 204 and 206, the method optionally proceeds to step 210 after step 208, as explained below. At step 210, the software determines whether the time elapsed between each copy operation of the double copy operation is within a time threshold range. This is achieved by comparing the second timestamp (associated with the subsequent copy of the data, the second copy operation 205a) and the first timestamp (associated with the previous copy of the data, the first copy operation 203). The time difference between the two timestamps therefore provides the amount of time elapsed between two copy operations. This time difference is then compared to a predetermined time threshold range, which may be any suitable value as predetermined by the device software or user defined. The time threshold range may include an upper threshold, which may for example be 3 seconds, however significantly shorter or longer durations are also possible. The time threshold range may also optionally have a lower threshold, for example 100ms, however this lower threshold may be any time duration that can distinguish the input of two successive user actions, two copy operations, from two successive computer actions, described below. The time threshold range may begin at 0 seconds, and therefore only the upper threshold may be present in the time threshold range.
The use of a time threshold range therefore prevents the software from proceeding to step 212 unintentionally. For example, the user may perform a copy operation and copy the data for a first time at step 203, and then perform a second copy operation and copy the same data for a second time many hours later at step 205. The time between copy operations may therefore be greater than the upper threshold time, and therefore the software would not proceed to step 212. As another example, the operating system or other software may perform two successive copy actions (two successive computer actions) as part of its normal processes, however these may be performed too quickly to be considered to be performed by a human user, and therefore the lower threshold would prevent the software from detecting this as two copy operations. In the absence of the time threshold and therefore step 210, the software proceeds to step 212 (and sends the data to the server 106) purely by virtue of two or more successive copying actions being performed on the same data, and therefore a double copy operation being detected. The inclusion of timestamps however minimises the number of double copy operations detected, since these must be done within a fixed time threshold range to be registered as a double copy operation by the software.
If the software determines that the time between the first and second timestamps is within the time threshold range, the software proceeds to step 212. Alternatively, if the software determines that the time between the first and second thresholds is outside the time threshold range, the flow diagram 200 then returns to step 202 or 203 in which either new data may be selected, or the already selected data may be copied.
At step 212 a copy of the data is transferred to the server 106 and stored thereon. The transfer of data to the server may be via a secure channel, as is conventional in the art. The transferred data includes metadata and may also include the alternative
representations for the data, if provided. Any type of metadata that identifies the copied data to the user, so that it can be identified by the user at a later stage, may be transferred. Additionally or alternatively, any metadata that the server 106 of figure 5 can examine to determine other formats to transform the data into may be sent. For example, if the data is copied from a web page, the metadata may include the title of the webpage and the URL. As another example, if an SMS message from a mobile device is copied, the metadata may include the phone number and name (if available). As another example, if a file is copied on a computing device, the metadata may include the file location on the computing device or any other properties of the file provided by the operating system of the computing device. As another example, the metadata includes information about the device from which the data is copied, such as the model of the device or the program on the device from which the data was copied. In an alternative arrangement, after step 204 the method may proceed to step 205b and perform a different second action such as a user confirmation action. The user confirmation action 205b confirms that the data is to be sent to the server 106. For example, after the software has identified that the data has been copied to the shared clipboard at step 204, at step 205b the software automatically displays a request on the device 102 to send the new copied data to the server 106. The display of such a request may be by any appropriate means, for example as a "pop-up" or any other manner of informing a user of the device 102 that a copy of the data may be sent to the server 106. The second action at step 205b is therefore an interaction with the displayed request, for example the clicking of a pop-up or other appropriate interaction, to confirm that the data should be sent from the shared clipboard to the server 106. The second action 205b therefore confirms that the data is to be sent to the server 106. In this case, after the second action 205b is performed the data is sent directly to the server 106 at step 212. If no action is taken at step 205b, the software may cause the "pop-up" or other manner of informing the user to disappear/stop after a few seconds to avoid becoming intrusive.
The network 104 may provide communication between the server 106 and the device 102 via wired or wireless means, for example via the internet. The server 106 may be a cloud- based server with the capability of communicating with multiple registered/connected devices simultaneously, such as devices 102 or 108. The device 108 may have software equivalent or similar to that of device 102, such that the device 108 is able to interact with the server 106 in the same or a similar way as device 102. For example, the device 108 may have identical software to that of device 102, or may have similar software such as a browser plugin that is capable of downloads only. Alternatively, a web app could be used to provide any of the functionality of the software of device 102.
A further arrangement is described with the aid of the flow diagram 300 of Figure 3. The flow diagram 300 shows an alternative way a user may copy data from the device 102 to the server 106. Steps 302 and 304 correspond to steps 202 and 203 of the first arrangement, and therefore will not be repeated here.
The operating systems of some devices do not support notifying other software/programs of changes to the shared clipboard or default location of the device. As a result of this, for these devices it may not be possible to perform the step 204 of identifying copied data. Therefore, at step 306 the software polls the shared clipboard via retrieving the copied data repeatedly, for example via a paste operation, in order to determine whether the data stored in the shared clipboard has changed. To do this, the software retrieves the copied data from the shared clipboard at regular intervals. The intervals may be 5 seconds for example. If, after retrieving the copied data, the data in the shared clipboard is different, the software determines that new data has been copied by the user by comparing the new retrieved data to previously retrieved data, either in full or by comparison of a part of the data or related data, such as metadata or hashes.
At step 308, after the software has determined that new data has been copied to the shared clipboard on the device 102, the method performs a second action 308, such as a user confirmation action, in the same manner as set out in step 205b described above. The second action 308 therefore confirms that the data is to be sent to the server 106, and the method proceeds to step 310 in which the data is sent to the server 106.
Alternatively, the user may instead select not to send the data to the server 106, or take no action in relation to the request, at which point the flow diagram returns to any of steps 302, 304 or 306. If no action is taken, the software may cause the "pop-up" or other manner of informing the user at step 308 to disappear/stop after a few seconds to avoid becoming intrusive. By only transferring data that is desired to be transferred by a user, and not automatically sending all data to the server 106 after a single action or copy operation, the server 106 is prevented from being flooded with data that the user does not wish to store on the server 106, and therefore network traffic and bandwidth is minimised, and processing demands are reduced. This is turn reduces power usage of the device 102 or 108, which, in the case of battery operated devices, improves battery life. In all cases energy costs are minimised due to the reduced power usage.
The above arrangements therefore allow for a user to send selected data to the server 106 by either repeating a predefined action, such as a copy operation, or responding to a request to send the data to the server 106 after having performed a predefined action, such as a copy operation, on the device 102. The data is therefore only transferred to the server 106 when the user wishes it to be transferred, and as a result privacy fears are minimised as a single copy operation will not cause the data to be sent to the server 106 automatically. Although the first and second arrangements have only been described in relation to two repeated predefined actions, such as two copy operations, any number of copy operations could be used as a trigger to send data to the server 106. For example, three copy operations could be used, and data could be automatically sent to the server 106 upon detection of a triple copy operation instead. Further, either of the above arrangements may also be used as a manner of taking notes or keeping a personal log of any data that the user would like to keep a record of. This may be achieved by sending data to the server 106 as detailed in either of the
arrangements above, and then accessing storage on the server 106 via the device software or by other means, such as accessing the server via a web page. The user is then able to view all data that has been sent to the server 106 from the device 102 or any connected devices, such as device(s) 108. The flow diagram 400 of Figure 4 details what happens to the copied data once it is received at the server 106. At step 402, the server 106 receives the copied data, including the associated metadata, sent from either step 212 of Figure 2 or step 310 of Figure 3. At step 404, the device 102 monitors the server 102 for new data. This may be achieved by a push notification sent to the software of device 102 by the server 106, or the device software polling the server 106 for updates. The push notification may also optionally be sent to the other device(s) 108 associated with the user, or to any other devices associated with the user. The manner in which the software polls the server 106 for updates is conventional and therefore will not be described here. The push notification or polling of the server 106 allows the software of the device 102, or equivalent software of any device in communication with the server 106, such as device 108, to know that new data has been received by the server 106. Upon receiving the push notification from the server 106 or detecting updates on the server 106 by polling, the method proceeds to step 408. Optionally, the software may provide a first indicator at step 406 to inform a user of the devices 102 or 108 that new data has been received by the server 106. The first indicator may take any appropriate form such as a "pop-up", light or audio signal, or any other manner that would alert a user of any of the devices 102 or 108 that new data has been received by the server 106.
At step 408, the device(s) 108 downloads the data recently received by the server 106 and adds it to the shared clipboard of the device(s) 108. The adding of data to the shared clipboard allows the data to be pasted into any other program resident on the device 108 using a paste operation. Instead of or in additional to adding the data to the shared clipboard, the user can view the associated data via the device software. The download of the data may be automatic, or may be initiated by the user by interacting with the software or the first indicator as previously described. Alternatively, the push notification optionally sent to the device(s) 108 from the server 106 may also contain the new data, and therefore the device(s) 108 receives the complete new data at step 404.
Once the new data has been received at the device(s) 108, the software on the receiving device(s) 108 may optionally display a second indicator that new data has been downloaded to the device(s) 108. The second indicator may take the same form, and be displayed by the same means, as the first indicator of step 404, except that the second indicator informs a user of the device(s) 108 that the data has been downloaded on the device(s) 108. Alternatively, the second indicator may take a different form than the first indicator, so as to assist the user in distinguishing the difference between the first and second indicators. The second indicator may also be displayed on any other devices connected to or registered with the server 106. One or all of the devices 102 and 108 are therefore synchronised with the server 106 in order to keep the data copied to the server 106 synchronised with the devices 102 and 108, by downloading any new data received by the server 106. A user is therefore able to view the history of data received by the server 106, and take any number of actions including copying the data to the device 102 and/or 108 and viewing detailed information regarding the data or organising the data stored on the server 106, for example editing the data or similar. Detailed information for the data may be displayed by the software on the devices by interacting with the first or second indicators, for example by clicking on or opening the first or second indicators. A further arrangement is described with the aid of the flow diagram 500 of Figure 5. The flow diagram 500 shows details of further actions that may be performed by the server 106 after data is received by the server 106. At step 502, the server 106 receives data. The server 106 may receive the data as a result of steps 212 or 310 of the above arrangements, or the server 106 may receive data by other means. The data received by the server 106 includes metadata, and also a format such as PDF, JPEG, TXT, HTML or any other file format.
The data received by the server 106 may contain a "keyword". Keywords are data strings comprising letters, number or characters, or a combination of these, and may be of two types. The first type is a user keyword, which is set by the user. The second type of keyword is a command-keyword, which has an associated function determined by the server 106. Both types of keyword are stored as a list of keywords in the memory of the registered devices. Therefore, when data including a data string is copied, the software of the registered device compares the copied data string to the list of keywords and determines whether the copied data string is a keyword. If the copied data string is determined to be a keyword, the software automatically detects that a keyword has been copied and sends any copied data including the data string to the server 106.
Any data stored on the server 106 may be accessed by a user of a registered device, such as the devices 102 and 108, and assigned a user keyword. The assignment of a user keyword may be achieved, for example, by manually inputting a user keyword into an editable field associated with the data, or by other appropriate means. The user keyword may be assigned to the data in the format that it was originally uploaded to the server 106, or in a different format.
At step 504, the server 106 examines the data to determine the format of the data. This may be achieved via analysis of any metadata associated with the data, determination via the file extension, and/or by using lookup tables or machine learning. Conventional software is able to make this determination via known means. In an alternative
arrangement, step 504 could be performed after step 506. At step 506, the server 106 detects whether the received data contains a keyword. This is achieved by comparing one or more data strings in the copied data to a list of keywords stored in a keyword database resident in the memory of the server 106. The keyword database contains both user keywords and command-keywords. In some arrangements, it is only the start of the data string that is compared to the list of keywords. Such an arrangement thereby reduces the amount of processing required to identify the keyword.
If a user keyword is detected, at step 508 the server 106 automatically retrieves, from internal storage on the server 106, the data associated with the user keyword and performs an action. One action performed in relation to user keywords is the download of the associated data to a registered device that copied the user keyword, and adding the associated data to the shared clipboard of the same registered device. Instead of or in additional to adding the data to the shared clipboard, the user can view the associated data via the device software, as in step 408 previously described. Steps 404 and 406 may also take place before the associated data is downloaded.. Therefore, a user of a registered device may obtain access to, or make use of, data assigned to a user keyword by copying the user keyword on the registered device.
As an example of a user keyword, a user may assign, via a user interface on the server 106, the user keyword "Creditcard" to the data containing their credit card number stored on the server 106. If a user of the registered device is prompted to input a credit card number on the registered device, they may perform a copy operation on the word
"Creditcard" on the registered device and the server 106 automatically uploads the data associated with the user keyword "Creditcard" to the shared clipboard of the registered device. The user may then paste the data associated with the user keyword "Creditcard" into a field on the registered device that requests a credit card number. As another example of a user keyword, if a field on the registered device requests the user's signature, the user could have previously assigned the keyword "signature" with an image file stored on the server 106 of their signature. Then, by performing a copy operation on the word "signature" from the requesting field, or by typing the word in manually and performing a copy operation on that, the user is able to simply perform a paste action and the signature image appears in the field. The skilled person would therefore understand that any user keyword could be assigned to any data stored in the server 106, or indeed one user keyword could be assigned to multiple data stored in the server 106. The actual word used as the user keyword need not have any relation to data to which the user keyword is assigned, and may be any combination of letters, numbers and characters chosen by the user.
If a command-keyword in an appropriate syntax is detected at step 506, at step 508 an associated action is automatically performed by the server 106. The associated action may for example be sending an email, sending a social network message, or providing data. The data is provided by the server 106, but may also or instead be provided directly from another registered device, or it may be provided from another source. For instance, copying the term "email user@example.com I am in late to work" may automatically send an email to the email address user@example.com with the message "I am in late to work". Command-keywords may also contain special characters such as "!", such that the command-keywords are less likely to be used accidentally. For example, instead of "email" being a command-keyword, "!email" may instead by the appropriate command- keyword to send an email. Any appropriate special characters may be used. As another example, the word "define" may be a command-keyword, and therefore performing a copy operation on the words "define antidisestablishmentarianism" causes the server 106 to automatically provide a definition of the word "antidisestablishmentarianism" to the device. The server 106 may have this word definition in its internal storage, or the server 106 may contact a 3rd party service for the definition before providing the definition to the device. Therefore, a command-keyword causes an action associated with the command-keyword to be performed automatically by the server 106. The server 106 directly performs the action upon detecting the keyword, or the server 106 may communicate with a 3rd party service or other device first in order to retrieve any data necessary to perform the action. Command-keywords can be combined with user keywords. For example, the word "sales- brochure" may be a user keyword associated with a PDF stored on the server 106 of a sales brochure. As above, the word "email" may be a command-keyword to send an email. Then, if the user of the registered device performs a copy operation on the words "email sales-brochure user@example.com", the server receives the copied words at step 502, and at step 506 the server 106 detects that multiple keywords are copied. At step 508, the server 106 therefore retrieves the PDF sales brochure associated with the user keyword "sales-brochure" from internal storage of the server 106, and automatically sends the sales brochure to the email address user@example.com.
The action associated with the command-keyword may be the server 106 providing the capability for a registered device to perform a further action. For example, receiving the data "call Bob", which includes a command-keyword "call" and a user keyword "Bob", may cause the server 106 to a) determine that "Bob" is a user keyword associated with data comprising a phone number for Bob stored on the server 106, b) determine that "call" is a command-keyword to start a phone call on a registered device, and c) provide the capability to the registered device to automatically call the phone number for Bob.
If a keyword is not detected at step 506, the method proceeds to step 510 in which the server 106 lists transformation or information extraction options for the copied data. The transformation or information extraction options may be based on any detected actions, through examination of the metadata and the format of the data as received. For example, the server 106 may detect that the data relates to a phone number which may be transformed such that it can be dialled by any registered device, and/or the data relates to a map address which may be transformed such that it can be shown by a mapping service or app on any registered device. Additionally or alternatively, the server 106 may detect that the data is in word processing format, and list a transformation of that document into a PDF format. Many other actions and formats may be provided by the server 106.
However, at this stage the server 106 does not perform any transformations and only lists the transformations that could be performed.
At step 512 the server 106 transforms the data into one or more formats different from the original format of the received data. The server 106 also detects, through examination of the metadata and the format of the data as received, actions related to the data. The possible transformations and actions are set out in steps 514a, 514b and 514c.
At step 514a, if the format of the data is not already plain text format, the server 106 transforms the data into plain text format. At step 514b, the server 106 may additionally or instead transform the data into an HTML format. This HTML format provides a view of the data that highlights data as actionable links. For example, text containing a URL may be converted into a link actionable by a registered device connected to the server 106 to open the web page associated with the URL. As another example, in the case where the data is a file, the HTML format may include a link actionable by a registered/connected device to download the file to the device. As another example, in the case where the data includes a street address, the HTML format may include a link actionable by a registered/connected device to view that street address location. A user may therefore access the HTML page, via a registered device, to select data with related actions to be effected on the registered device. For example, if the data included both a telephone number and an address, the HTML will display these highlighted individually, indicating to the user that they may be appropriately actioned automatically upon selection of the highlighted text, as previously described. Alternatively, any devices registered/connected to the server 106, such as devices 102 and 108, may also determine the actions to carry out on the data. For example, in the case where the data includes a telephone number, the server 106 will transform the data, or the part of the data that relates to the telephone number, such that software on the devices 102 and/or 108 may automatically provide the option of dialling the telephone number on the respective device. As another example, in the case where the data includes a street address, the server 106 may transform the data, or part of the data that relates to the street address, such that software on the devices 102 and/or 108 may automatically provide the option of viewing the street address on the respective device via a web page or app.
The actioning of any of the above on the registered device(s) may be provided as an option to the user by any appropriate indicator displayed on the registered device(s). Many other actions are possible, and the methods of examining data to automatically find phone numbers, addresses or other actionable data are known and therefore will not be described in detail here.
At step 514c, the server 106 may transform the data into other formats based on a list of predetermined formats that the server 106 is configured to automatically transform data into. This list may be determined via lookup tables, machine learning or other means. For example, if all or part of the data is an image, the server 106 may transform the image into a readily editable image format to be opened in image viewing or editing software on the respective device. The server 106 may also list formats to transform data into based on the capabilities of any device registered or connected to the server 106, such as the devices 102 or 108. When any device communicates with the server 106, the server 106 may determine the model and/or operating system of the communicating device based on the received communication. The received communication includes data indicative of the model and/or operating system as standard, and therefore the server 106 may determine the model and/or operating system via lookup tables. At step 516, all of the data formats, including the original data received by the server 106 and the transformed data, are stored on the server 106 for later access. Optionally, the server 106 may at this point automatically send all of the transformed data to the device 102, and/or to the other device(s) 108. Any registered device, such as devices 102 or 108, may access the data stored on the server 106 by step 516, at step 522. The device may then select an action based on the stored data. The selected action may for example be downloading a file to the shared clipboard of the device in a specific format, dialling a phone number or locating an address on a map, or any other action as described in relation to step 510. Selection of the action causes the data to be performed by the device automatically at step 524.
Any registered device may also access the list of transformation options on the server 106 provided by step 510, at step 518. The device accessing the received data may be the same device 102 that sent the data to the server 106 in the first place, or maybe any other device registered to the server 106, such as the device(s) 108. At step 520, the device may then select an action based on the transformation options. The selected action may for example be downloading a file to the shared clipboard of the device in a specific format, dialling a phone number or locating an address on a map, or any other action as described in relation to step 510. Selection of the action causes the data to then be transformed by the server 106, and the selected action to be performed on the device.
The selected action may be performed automatically or the selection may prompt the display of an indicator on the devices 102 or 108 before performing an action. The indicator may take any appropriate form such as a "pop-up" or any other manner that could detail the action to a user. This may be useful for example where the data stored on the server 106 is in word processing format (such as Microsoft Word), but the user of the device 102, 108 desires a copy of the data in PDF format. At any time during the steps of figure 5, any registered devices may monitor the server 106 for new data. This may be achieved by the server 106 optionally sending a push notification any or all registered devices, or any or all registered devices may poll the server 106 for updates. On receiving the push notification or detecting an update, the software of the registered devices may provide an indicator to inform a user that data has been received by the server 106. The indicator may take the same form as the first indicator of step 406. For example, new data may be detected as a result of steps 510 or 516, and therefore indicators may be provided on the registered devices at this time.
Since the transformation of the data is carried out on the server 106, resources on the devices 102 or 108 are conserved. The server 106 proceeds to transform the data without making use of computing resources or battery power of the devices 102 or 108, for example. Further, by having the server 106 carry out the transformations, further transformation options may be available and additionally the time taken to transform the data from one format to another may be reduced, due to the potential increased capabilities of the server hardware.
When the data is sent to the server 106 by either step 212 or 310 as previously described, if the data is a large file size (such as photo or video, for example), the data is first sent as a thumbnail with associated metadata. This therefore allows the server 106, at step 404 for example, to send the push notification to the software on any registered/connected devices as soon as possible. In this case, the push notification may also be accompanied by an indicator specifying that new data is currently in the process of being copied to the server 106. Once the entire large data file has been received by the server 106, the server 106 may send a follow-up indicator as part of step 404 to inform the user of the registered/connected devices that the new data has been received by the server 106. The indicator and follow-up indicator may take any form as set out in relation to the first indicator of step 406. This two-part indication system (the indicator followed by the follow- up indicator) gives the user of the registered/connected devices the impression that the data has been instantly copied.
Although the method has been described in relation to the devices 102 and 108, any number of devices may be registered/connected to the server 106 via the network 104. For example, the user may use the device 102 to send data to the server 106, and then that data may be accessed or actioned by any other device that is connected or registered to the server 106. The various methods described above may be implemented by a computer program product. The software resident on the devices 102 and 108 is an example of such a computer program product. The computer program product may include computer code arranged to instruct a computer or the devices 102 and 108 to perform the functions of one or more of the various methods described above. The computer program and/or the code for performing such methods may be provided to an apparatus, such as a computer, the devices 102 and 108, and the server 106, on a computer readable medium or computer program product. The computer readable medium may be transitory or non- transitory. The computer readable medium could be, for example, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, or a propagation medium for data transmission, for example for downloading the code over the Internet. Alternatively, the computer readable medium could take the form of a physical computer readable medium such as semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disc, and an optical disk, such as a CD-ROM, CD-R/W or DVD.
An apparatus such as a computer, the devices 102 and 108, and the server 106, may be configured in accordance with such code to perform one or more processes in accordance with the various methods discussed herein. In one arrangement the apparatus comprises a processor, memory, and a display. Typically, these are connected to a central bus structure, the display being connected via a display adapter. The system can also comprise one or more input devices (such as a mouse and/or keyboard) and/or a communications adapter for connecting the apparatus to other apparatus or networks, such as the server 106 and the network 104. In one arrangement the database resides in the memory of the computer system. Such an apparatus may take the form of a data processing system. Such a data processing system may be a distributed system. For example, such a data processing system may be distributed across a network.

Claims

Claims
A method of transferring data from a first device to a second device, said method comprising the steps of:
receiving, at the first device, a first command to copy data; receiving, at the first device, a second command to copy the data;
determining whether the second command to copy the data is a command to copy the same data as the first command; and
sending a copy of the data to the second device in response to the second command to copy the data.
The method of claim 1 wherein the second command is the same as the first command.
The method of claim 1 or claim 2 wherein the copy of the data is sent to a number of other devices.
The method of any of claims 1 to 3 wherein the first command has an associated first timestamp, and the second command has an associated second timestamp, and wherein the determining further comprises determining whether the time difference between the first timestamp and the second timestamp is within a time difference threshold range, wherein the copy of the data is sent to the second device if the time difference is within the time difference threshold range.
The method of claim 4 wherein the time threshold range has an upper time threshold.
The method of claims 4 or 5 wherein the time threshold range has a lower time threshold.
The method of any preceding claim wherein the copied data is stored in storage of the first device upon receipt of the second command.
A method of transferring data from a first device to a second device, said method comprising the steps of:
receiving, at the first device, a first command to copy data; providing, at the first device, an indicator to a user that a first command to copy data has been received;
receiving, at the first device, a second command from the user responsive to the indicator;
determining, at the first device, if the second command is indicative of a request to transfer the copied data to the second device; and
sending a copy of the data to the second device if it is determined that the second command is indicative of a request to transfer the copied data to the second device.
9. The method of claim 8 wherein the indicator is a visual, sound or tactile feedback.
10. The method of claim 8 or 9 wherein the step of receiving the second command comprises requesting confirmation from a user of the first device to send a copy of the data to the second device.
11. The method of any preceding claim wherein the first device is registered to a
service provided by the second device.
12. The method of any preceding claim wherein the first device is a communication device, such as a computer or mobile communications device.
13. The method of any preceding claim wherein the second device is a server or server system.
14. The method of any preceding claim wherein the sending comprises sending the copy of the data via a network.
15. The method of any preceding claim wherein the copied data is stored in storage of the first device upon receipt of the first command.
16. The method of claim 15 wherein the storage is a default location for copied data, the default location being defined by an operating system of the first device.
17. The method of claim 16 wherein the storage is a "clipboard" of the first device.
18. The method of any of claims 15 to 17 wherein the copied data is first stored in memory of the first device before being transferred to the storage of the first device.
19. The method of any preceding claim wherein the data comprises metadata.
20. The method of any preceding claim wherein the first command includes identifying data to be copied.
21. A computer readable medium comprising computer readable code operable, in use, to instruct a computer to perform the method of any preceding claim.
22. A computer program product comprising computer readable code operable, in use, to instruct a computer to perform the method of any one of claims 1 to 19.
23. A device comprising a memory having computer executable code store thereon arranged to carry out the method of any of claims 1 to 19, and a processor arranged to execute the code stored in the memory.
24. A system for transferring data between devices, the system comprising:
a first device with data stored thereon; and
a second device in communication with the first device;
wherein the first device is provided according to claim 22; and
wherein the second device is configured to:
receive the copy of the data from the first device;
provide the copy of the data to one or more further devices in
communication with the second device.
25. The system of claim 24 further comprising the step of, between the step of
receiving the copy of the data from the first device and providing the copy of the data to one or more further devices, sending a first indicator to the one or more further devices, the first indicator being indicative of the receipt of the copy by the second device.
26. The system of either of claims 24 or 25 wherein providing the copy of the data to the one or more further devices comprises transferring the data to the one or more further devices.
27. The system of claim 26 further comprising the step of providing a second indicator on the one or more further devices after the copy of the data has been uploaded to the one or more further devices.
28. The system of either of claims 24 or 25 wherein providing the copy of the data to the one or more further devices comprises storing the data in storage on the server, the storage being accessible by the one or more further devices.
29. The system of either of claims 24 or 25 wherein providing the copy of the data to the one or more further devices comprises transferring the data to the one or more further devices, and further comprises storing the data in storage on the server, the storage being accessible by the one or more further devices.
30. The system of claim 29 further comprising the step of providing a second indicator on the one or more further devices after the copy of the data has been transferred to the one or more further devices.
31. The method of any of claims 24 to 30 wherein the copy of the data is stored in storage of the one or more further devices upon receipt of the first command.
32. The method of claim 31 wherein the storage is a default location for copied data, the default location being defined by a respective operating system of the one or more further devices.
33. The method of claim 32 wherein the storage of the one or more further devices is a "clipboard" of the respective one or more further devices.
34. The method of any of claims 31 to 33 wherein the copy of the data is first stored in memory of the one or more further devices before being transferred to the respective storage of the one or more further devices.
35. The system of any of claims 24 to 34 wherein the one or more further devices comprise the first device.
36. The system of any of claims 24 to 35 wherein the first device is a communication device, such as a computer or mobile communications device.
37. The system of any of claims 24 to 36 wherein the second device comprises a server.
38. The system of any of claims 24 to 37 wherein the first device and the one or more further devices are in communication with the second device via a network.
39. A method of sending data from a first device to a second device, said method comprising the steps of:
receiving, at the first device, a command to copy a data string; determining, at the first device, whether the data string has an associated action; and
sending the data string to the second device if it is determined that the data string has an associated action.
40. The method of claim 39 further comprising the step of, after receiving a command to copy a data string, comparing the data string to a list of data strings having associated actions, the list of data strings being stored on internal storage of the first device.
41. A method of performing an action at a second device in response to receiving data from a first device, said method comprising the steps of:
receiving, at the second device, data including a data string;
determining, at the second device, an action associated with the data string; and
performing the associated action at the second device if it is determined that the data string has an associated action.
42. The method of claim 41 further comprising the step of, after receiving data
including a data string, determining, at the second device, whether the data string has an associated action.
43. The method of any of claims 39 to 42 wherein the associated action comprises transferring, from the second device to the first device or one or more further devices, data associated with the data string.
44. The method of claim 43 wherein the data associated with the data string is stored on internal storage of the second device.
45. The method of any of claims 39 to 42 wherein the associated action comprises carrying out a predetermined process on the second device.
46. The method of claim 45 wherein the predetermined process is determined by a first part of the data string.
47. The method of claims 45 or 46 wherein a second part of the data string specifies a recipient of the predetermined process.
48. The method of any of claims 45 to 47 wherein a third part of the data string
specifies further data.
49. The method of claim 48 wherein the predetermined process comprises
communicating with an external device to retrieve external data associated with the further data.
50. The method of claim 49 wherein the external data is sent to the first device or one or more further devices.
51. The method of any of claims 45 to 50 wherein a fourth part of the data string is associated with data stored on internal storage of the second device.
52. The method of claim 51 wherein the predetermined process comprises transferring the stored data to the first device or one or more further devices.
53. The method of claim 52 wherein transferring the stored data comprises
transferring the data to a memory of the transferred to device, and adding the stored data to storage of the transferred to device.
54. The method of claim 53 wherein the storage is a "clipboard" of the transferred to device.
55. A computer readable medium comprising computer readable code operable, in use, to instruct a computer to perform the method of any of claims 39 to 54.
56. A computer program product comprising computer readable code operable, in use, to instruct a computer to perform the method of any one of claims 39 to 54.
57. A device comprising a memory having computer executable code stored thereon arranged to carry out the method of either of claims 39 or 40, and a processor arranged to execute the code stored in the memory.
58. A device comprising a memory having computer executable code stored thereon arranged to carry out the method of any of claims 41 to 56, and a processor arranged to execute the code stored in the memory.
59. A system of sending data between devices, said system comprising:
a first device; and
a second device;
wherein the first device is provided according to claim 57, and wherein the second device is provided according to claim 58.
60. The system of claim 59 wherein the first device is a communication device, such as a computer or mobile communications device.
61. The system of either of claims 59 or 60 wherein the second device is a server or server system.
PCT/GB2015/052890 2014-10-03 2015-10-02 Data manipulation WO2016051199A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB1417554.1A GB201417554D0 (en) 2014-10-03 2014-10-03 Data Manipulation
GB1417554.1 2014-10-03

Publications (1)

Publication Number Publication Date
WO2016051199A1 true WO2016051199A1 (en) 2016-04-07

Family

ID=51946838

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB2015/052890 WO2016051199A1 (en) 2014-10-03 2015-10-02 Data manipulation

Country Status (2)

Country Link
GB (1) GB201417554D0 (en)
WO (1) WO2016051199A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117294832A (en) * 2023-11-22 2023-12-26 湖北星纪魅族集团有限公司 Data processing method, device, electronic equipment and computer readable storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2595035A1 (en) * 2011-11-16 2013-05-22 NAMCO BANDAI Games Inc. Method for controlling computer that is held and operated by user
EP2637098A1 (en) * 2012-03-08 2013-09-11 BlackBerry Limited Object mediated data transfer between electronic devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2595035A1 (en) * 2011-11-16 2013-05-22 NAMCO BANDAI Games Inc. Method for controlling computer that is held and operated by user
EP2637098A1 (en) * 2012-03-08 2013-09-11 BlackBerry Limited Object mediated data transfer between electronic devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117294832A (en) * 2023-11-22 2023-12-26 湖北星纪魅族集团有限公司 Data processing method, device, electronic equipment and computer readable storage medium
CN117294832B (en) * 2023-11-22 2024-03-26 湖北星纪魅族集团有限公司 Data processing method, device, electronic equipment and computer readable storage medium

Also Published As

Publication number Publication date
GB201417554D0 (en) 2014-11-19

Similar Documents

Publication Publication Date Title
CA2862876C (en) Systems and methods for sharing data among multiple end user devices
EP1453639B1 (en) Selective media capture via a communication device
US20140365451A1 (en) Method and system for cleaning up files on a device
US10225215B2 (en) Method and system for caching input content
US20130111336A1 (en) Platform and application independent system and method for networked file access and editing
US20140310241A1 (en) Virtual file system for automated data replication and review
RU2604417C2 (en) Method, device, terminal and server for message pushing via light application
RU2600545C2 (en) Information processing device and information processing method
JP2017528795A (en) Generating unregistered user accounts for sharing content items
US9710661B2 (en) Presence-based content sharing
US20140297586A1 (en) Device and method for cloud file management
US8631236B2 (en) Auto file locker
US10218769B2 (en) Monitoring digital images on mobile devices
EP3274939A1 (en) Providing interactive preview of content within communication
US20150365552A1 (en) Processing apparatus, display system, display method, and computer-readable storage medium for computer program
US20140310780A1 (en) Communication system
US10218796B2 (en) Communication apparatus and control method for service discovery processing
WO2016051199A1 (en) Data manipulation
US20220070127A1 (en) Live database records in a chat platform
CA2594301C (en) Mobile communications device access from personal computer
CA2945505A1 (en) Electronic device and method of searching data records
CN108460128B (en) Document management method and device, electronic device and readable storage medium
US9100385B1 (en) Management and synchronization of electronic media content information
KR20160054417A (en) Network system and control method
US20120036104A1 (en) System and method for synchronizing media files and associated media art

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15787657

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15787657

Country of ref document: EP

Kind code of ref document: A1