The present invention relates to an approach that allow rotation of tiles within a workspace, such as found in a handheld computing device.
Pervasive, generally portable, information handling systems such as mobile telephones (e.g., “smart phones,” etc.) provide increasing amounts of performance and power in small, generally handheld, form factors. Software applications are represented as visual graphical user interface objects called “tiles” on the pages, or workspaces, provided by the information handling system. Tiles are graphic user interfaces that often also provide small textual titles that describe the underlying application. In addition, these pervasive information handling system often use touch-enabled screens to save space without providing traditional keypads or keyboards as generally found as accessories in laptop and desktop computer systems. Users often organize workspaces by placing related applications on a common page. For example, a user may have a workspace of games, another workspace with utilities, another workspace with entertainment, and the like. The screen provided with these pervasive information handling system are often a non-square rectangle where one of the dimensions (e.g., length) being greater than the other dimension (e.g., width).
According to one disclosed embodiment, an approach is provided in which a workspace rotation request is received, the request being to rotate a workspace displayed on a display screen. The workspace includes visual tiles that are displayed in a grid layout of one or more columns and one or more rows. A current aspect ratio of the display screen is identified. A current row value and a current column value associated with each of the visual tiles is retrieved. The current aspect ratio is inverted resulting in a new aspect ratio of the display screen. Each of the plurality of visual tiles is rotated ninety degrees. A new row value associated with each of the visual tiles is set to the current column value and a new column value associated with each of the visual tiles is set to the current row value. Each of the rotated plurality of visual tiles is displayed on the display screen at the new row value and new column value set for each of the visual tiles using the new aspect ratio.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present disclosure may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings, wherein:
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The detailed description has been presented for purposes of illustration, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
As will be appreciated by one skilled in the art, aspects may be embodied as a system, method or computer program product. Accordingly, aspects may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present disclosure are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The following detailed description will generally follow the summary, as set forth above, further explaining and expanding the definitions of the various aspects and embodiments as necessary. To this end, this detailed description first sets forth a computing environment in
Northbridge 115 and Southbridge 135 connect to each other using bus 119. In one embodiment, the bus is a Direct Media Interface (DMI) bus that transfers data at high speeds in each direction between Northbridge 115 and Southbridge 135. In another embodiment, a Peripheral Component Interconnect (PCI) bus connects the Northbridge and the Southbridge. Southbridge 135, also known as the I/O Controller Hub (ICH) is a chip that generally implements capabilities that operate at slower speeds than the capabilities provided by the Northbridge. Southbridge 135 typically provides various busses used to connect various components. These busses include, for example, PCI and PCI Express busses, an ISA bus, a System Management Bus (SMBus or SMB), and/or a Low Pin Count (LPC) bus. The LPC bus often connects low-bandwidth devices, such as boot ROM 196 and “legacy” I/O devices (using a “super I/O” chip). The “legacy” I/O devices (198) can include, for example, serial and parallel ports, keyboard, mouse, and/or a floppy disk controller. The LPC bus also connects Southbridge 135 to Trusted Platform Module (TPM) 195. Other components often included in Southbridge 135 include a Direct Memory Access (DMA) controller, a Programmable Interrupt Controller (PIC), and a storage device controller, which connects Southbridge 135 to nonvolatile storage device 185, such as a hard disk drive, using bus 184.
ExpressCard 155 is a slot that connects hot-pluggable devices to the information handling system. ExpressCard 155 supports both PCI Express and USB connectivity as it connects to Southbridge 135 using both the Universal Serial Bus (USB) the PCI Express bus. Southbridge 135 includes USB Controller 140 that provides USB connectivity to devices that connect to the USB. These devices include webcam (camera) 150, infrared (IR) receiver 148, keyboard and trackpad 144, and Bluetooth device 146, which provides for wireless personal area networks (PANs). USB Controller 140 also provides USB connectivity to other miscellaneous USB connected devices 142, such as a mouse, removable nonvolatile storage device 145, modems, network cards, ISDN connectors, fax, printers, USB hubs, and many other types of USB connected devices. While removable nonvolatile storage device 145 is shown as a USB-connected device, removable nonvolatile storage device 145 could be connected using a different interface, such as a Firewire interface, etcetera.
Wireless Local Area Network (LAN) device 175 connects to Southbridge 135 via the PCI or PCI Express bus 172. LAN device 175 typically implements one of the IEEE 802.11 standards of over-the-air modulation techniques that all use the same protocol to wireless communicate between information handling system 100 and another computer system or device. Optical storage device 190 connects to Southbridge 135 using Serial ATA (SATA) bus 188. Serial ATA adapters and devices communicate over a high-speed serial link. The Serial ATA bus also connects Southbridge 135 to other forms of storage devices, such as hard disk drives. Audio circuitry 160, such as a sound card, connects to Southbridge 135 via bus 158. Audio circuitry 160 also provides functionality such as audio line-in and optical digital audio in port 162, optical digital output and headphone jack 164, internal speakers 166, and internal microphone 168. Ethernet controller 170 connects to Southbridge 135 using a bus, such as the PCI or PCI Express bus. Ethernet controller 170 connects information handling system 100 to a computer network, such as a Local Area Network (LAN), the Internet, and other public and private computer networks.
While
The Trusted Platform Module (TPM 195) shown in
At some point, a workspace rotation request is received to rotate the displayed workspace (step 350). In one embodiment, the request is received in response to the user selecting rotation tile 314. When the workspace rotation request is received, the system identifies a current aspect ratio that is currently being used to display portrait orientation 300. A current row value and column value is retrieved for each of the visual tiles shown in portrait orientation workspace 300. In one embodiment, rows and columns can overlap. For example, tiles 314 and 316 are shown as overlapping the tiles included in visual grouping 310. A new aspect ratio is generated by inverting the current aspect ratio. For example, if the current resolution used to display the portrait mode is 1080×1920 providing an aspect ratio of 1:1.78, then the inverted aspect ratio would be 1.78:1 and the resulting resolution would be 1920×1080. The new aspect ratio is used to display the rotated workspace (landscape orientation 350). Each of the visual tiles is rotated ninety degrees in a direction opposite to the rotation of the workspace. For example, if the workspace is being rotated ninety degrees counterclockwise, then each of the visual tiles is rotated ninety degrees in a clockwise direction for display in rotated (landscape orientation) workspace 350. The current column values from current (portrait) orientation workspace 300 become new row values in new (landscape) orientation workspace 350, while the current row values from current (portrait) orientation workspace 300 become new column values in new (landscape) orientation workspace 350. In other words, tiles displayed in common columns in portrait orientation 300 are displayed in common rows in landscape orientation 350 and, at the same time, tiles displayed in common rows in portrait orientation 300 are displayed in common columns in landscape orientation 350.
Turning to landscape orientation 350, notice that each of the visual tiles from portrait orientation 300 is now displayed at the new row and column values that were set for each tile, each of the visual tiles has been rotated, and landscape orientation 350 uses the new aspect ratio that resulted by inverting the aspect ratio used to display portrait orientation 300. In addition, tiles that used to occupy the same column in portrait orientation 300 (e.g., tiles 314 and 316) now occupy the same row in landscape orientation 350. Likewise, tiles that appeared in a common row in the portrait orientation (e.g., tiles 313 and 314) now appear in a common column in landscape orientation. In addition, visual groupings that appeared in a common column in portrait orientation 300 (e.g., visual grouping 310), now appear in a common row in landscape orientation, while those visual groupings that appeared in a common row (e.g., visual grouping 330) in the portrait orientation now appear in a common column. Horizontal scroll features are not swapped like the visual tiles. Instead, if horizontal scroll features appear in the portrait orientation, such as horizontal scroll features 320 and 325, then horizontal scroll features also appear in the landscape orientation (e.g., horizontal scroll features 370 and 375). In one embodiment, toolbar 340 and the icons included in the toolbar are rotated much like the tiles described above, while in another embodiment the presence of the toolbar is detected when the workspace is rotated and presented in a place suitable for the new orientation (e.g., at the top or bottom of the landscape orientation). In addition, placement of the toolbar can, in some embodiments, be configured by the user. When another request is received (step 395) to rotate the workspace once again, the steps described above are used to invert the aspect ratio, rotate the tiles, etc. to once again display portrait orientation 300.
At step 425, the first item is selected from memory area 422. A decision is made as to whether the selected item is a horizontal scroll feature (arrow) or a toolbar (decision 430). If the selected item is a horizontal scroll feature (arrow) or a toolbar, then decision 430 branches to the “yes” branch whereupon a decision (select case) is made as to the type of the item. If the item is a left arrow (left horizontal scroll feature), then the select case branches to the “left arrow” branch whereupon, at step 440, the flag is set to indicate that a left horizontal scroll feature is present. If the item is a right arrow (right horizontal scroll feature), then the select case branches to the “right arrow” branch whereupon, at step 445, the flag is set to indicate that a right horizontal scroll feature is present. Finally, if the item is a toolbar, then the select case branches to the “toolbar” branch whereupon, at step 450, the flag is set to indicate that a toolbar is present.
Returning to decision 430, if selected item is not an arrow (horizontal scroll feature) or a toolbar, then decision 430 branches to the “no” branch to process the selected tile. At step 460, the aspect ratio used to display the tile is adjusted by inverting the current aspect ratio. At step 465, the tile is rotated ninety degrees in a direction opposite to the rotation of the workspace. For example, if the workspace is being rotated ninety degrees counterclockwise, then the tile is rotated ninety degrees in a clockwise direction. At step 470, the current column value and row value of the tile are retrieved from item data 422. At step 475, the tile's new column value is set to be its current row value and, at step 480, the tile's new row value is set to be its current column value. At step 482, the tile's adjusted data is saved in item data memory area 422.
A decision is made as to whether there are more items on the current workspace to process (decision 485). If there are additional items to process, then decision 485 branches to the “yes” branch which loops back to select and process the next item as described above. This looping continues until all of the items have been processed, at which point decision 485 branches to the “no” branch whereupon, at predefined process 490, the rotated view is displayed on the display screen (see
A decision is made as to whether the left arrow (left horizontal feature) flag has been set (decision 530). If the flag has been set, then decision 530 branches to the “yes” branch whereupon, at step 535, the left horizontal feature (e.g., flag) is displayed on the left side of the display screen using the new aspect ratio. A decision is made as to whether the right arrow (right horizontal feature) flag has been set (decision 540). If the flag has been set, then decision 540 branches to the “yes” branch whereupon, at step 545, the right horizontal feature (e.g., flag) is displayed on the right side of the display screen using the new aspect ratio. A decision is made as to whether is made as to whether a toolbar was detected (decision 550). If a toolbar was detected, then decision 550 branches to the “yes” branch whereupon a decision is made as to whether the new orientation of the workspace is landscape or portrait (decision 560). If the new orientation is landscape, then decision 560 branches to the “landscape” branch whereupon, at step 570, the toolbar is displayed on the top (or the bottom) of the screen. On the other hand, if the new orientation is portrait, then decision 560 branches to the “portrait” branch whereupon, at step 580, the toolbar is displayed along the side of the screen (either the left or right side). On the other hand, returning to decision 550, if a toolbar was not detected, then decision 550 branches to the “no” branch bypassing steps 560 through 580. Processing then ends at 595.
A decision is made as to whether the scan has reached the bottom of the screen given the screen's resolution (decision 632). If the scan has not yet reached the bottom of the screen, then decision 632 branches to the “no” branch which loops back to increment the y coordinate value and repeat the process described above. This looping continues until the bottom of the screen is reached, at which point decision 632 branches to the “yes” branch whereupon, at step 634 the y coordinate value is reset to zero, and at step 636, the change column flag (Chg_Col_Flag) is set to YES. A decision is made as to whether the scan has reached the edge of the screen (decision 638). When the edge of the screen is reached, there are no more columns to detect. If the scan has not yet reached the edge of the screen, then decision 638 branches to the “no” branch which loops back to increment the x coordinate value and repeat the scanning process outlined above. This looping continues until all of the columns have been detected, at which point decision 638 branches to the “yes” branch in order to commence the row scanning process.
At step 650, values are initiated to begin the process of scanning for rows. In particular, the current row number (row_num) is set to zero as are the current x and y coordinates. In addition, a flag (Chg_Row_Flag) is set indicating that when a tile is encountered the row number should be incremented and the y coordinate corresponding to the row should be saved. At step 654 the y coordinate value is incremented. The incrementing can be by any value (e.g., one pixel, ten pixels, fifty pixels, etc.) and sets the granularity of row positions. Likewise, at step 656 the x coordinate value is incremented. Again, the incrementing can be by any value (e.g., one pixel, ten pixels, fifty pixels, etc.) and sets the granularity of column positions. In one embodiment, the value used to increment the y and x values is the same value. At step 658, a check is made to identify if a tile is present at the x,y coordinate value. A decision is made as to whether a tile is present at the x,y coordinate value (decision 660). If a tile is at the x,y coordinate value, then decision 660 branches to the “yes” branch whereupon a decision is made as to whether the row change flag (Row_Chg_Flag) is set to YES or NO (decision 662). Logic is also included so that a tile is only detected once per row scan. If the row change flag is set to yes, then decision 662 branches to the “yes” branch whereupon, at step 664, the current row number (row_num) is incremented (e.g. by one) and row number along with the y value corresponding to this row number are saved in row data memory area 665. At step 666, the change row flag is set to NO. Returning to decision 662, if the change row flag is set to NO, then decision 662 branches to the “no” branch bypassing steps 664 and 666. At step 668, the tile that has been detected has its current row number set to the current row number (row_num) and the tile identifier and its row number are saved in item data store 422.
A decision is made as to whether the scan has reached the edge of the screen given the screen's resolution (decision 672). If the scan has not yet reached the edge of the screen, then decision 672 branches to the “no” branch which loops back to increment the x coordinate value and repeat the process described above. This looping continues until the edge of the screen is reached, at which point decision 672 branches to the “yes” branch whereupon, at step 674 the x coordinate value is reset to zero, and at step 676, the change row flag (Chg_Row_Flag) is set to YES. A decision is made as to whether the scan has reached the bottom of the screen (decision 678). When the bottom of the screen is reached, there are no more rows to detect. If the scan has not yet reached the bottom of the screen, then decision 678 branches to the “no” branch which loops back to increment the y coordinate value and repeat the scanning process outlined above. This looping continues until all of the rows have been detected, at which point decision 678 branches to the “yes” branch at which point processing returns to the calling routine (see
A summary flowchart is shown with processing commencing at step 720 when a rotate request is received. At step 730, the current rows and columns are identified by the process shown in
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.