Most computing devices generate visually appealing graphical user interfaces. Designers select fonts, colors, icons, and images, and similar elements, with the goal that a graphical user interface be both functional and aesthetically pleasing. However, what is beautiful to one user may be ugly to another. Designers can alleviate a user's distaste by enabling the user to customize a graphical user interface.
Some devices permit users to change the appearance of a graphical user interface in minute ways. For instance, some merely provide a choice of wallpaper or color scheme for an interface. Some graphical user interfaces can be modified by “themes,” which are packages comprising specific graphical appearance details for an application or operating system. Themes can also include sounds that replace default sounds of an application or operating system.
A user can apply a theme on a device to change the look and feel of applications and an operating system universally. However, some users may wish to only change the look and feel of an interface for a particular application. Conventional systems do not enable a user to easily customize a look and feel of a particular interface.
The need exists for a system that overcomes the above problems, as well as one that provides additional benefits. Overall, the examples herein of some prior or related systems and their associated limitations are intended to be illustrative and not exclusive. Other limitations of existing or prior systems will become apparent to those of skill in the art upon reading the following Detailed Description.
A method and system are described for modifying, based on a theme, a look and feel of a graphical user interface (GUI) generated for a first application without comparatively modifying a look and feel of a GUI generated for another application. The GUIs for both the first and second applications include corresponding components that are customizable. The components include icons, fonts, colors, images, sounds, and so forth. A theme comprises GUI elements, and a GUI element of a theme is associated with a component of a GUI. GUI elements comprise icons, colors, wallpapers, notification sounds, ringtones, and so forth. A GUI element is applied to a component of a GUI for changing a look and feel of the GUI when a theme that the GUI element is included in is applied to the GUI. The system applies a theme, modifying the look and feel of a GUI generated for the first application without modifying the look and feel of a GUI generated for the second application, despite the first and second applications including corresponding components that are customizable.
The system receives a request by a user to modify a look and feel of a GUI, and the system generates a theming overlay. The system receives user input navigating to a foreground application. The system receives a selection by the user of the theming overlay, and the system generates an interface for receiving a selection by a user of a theme to apply to the foreground application. The system receives a selection by the user of a theme to apply to the foreground application. The system modifies, based on the selected theme, the look and feel of a GUI generated for the foreground application. The system does not modify, based on the selected theme, the look and feel of a GUI generated for another application.
Various implementations of the invention will now be described. The following description provides specific details for a thorough understanding and an enabling description of these implementations. One skilled in the art will understand, however, that the invention may be practiced without many of these details. Additionally, some well-known structures or functions may not be shown or described in detail, so as to avoid unnecessarily obscuring the relevant description of the various implementations. The terminology used in the description presented below is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific implementations of the invention.
The following discussion includes examples of systems for theming a first application without similarly theming a second application. The systems are described with respect to a number of processes that they may implement and numerous examples of how they may be implemented.
The system and method can also be practiced in distributed computing environments, where tasks or modules are performed by remote processing devices, which are linked through a communications network 160, such as a Local Area Network (“LAN”), Wide Area Network (“WAN”), or the Internet. In a distributed computing environment, program modules or subroutines may be located in both local and remote memory storage devices. Aspects of the invention described herein may be stored or distributed on tangible, non-transitory computer-readable media, including magnetic and optically readable and removable computer discs, stored in firmware in chips (e.g., EEPROM chips). Alternatively, aspects of the invention may be distributed electronically over the Internet or over other networks (including wireless networks). Those skilled in the relevant art will recognize that portions of the invention may reside on a server computer, while corresponding portions reside on a client computer. Data structures and transmission of data particular to aspects of the invention are also encompassed within the scope of the invention.
Referring to the example of
The mobile devices 105 and computers 110 communicate with each other and the server 115 and third party servers 125 through networks 160, including, for example, the Internet. The mobile devices 105 communicates wirelessly with a base station or access point using a wireless mobile telephone standard, such as the Global System for Mobile Communications (GSM), or another wireless standard, such as IEEE 802.11, and the base station or access point communicates with the server 115 via the networks 160. Computers 110 communicate through the networks 160 using, for example, TCP/IP protocols. The wearable devices 108 communicate via short range communication protocols (e.g., Bluetooth) with the mobile devices 105 and/or computers 110.
The theme maintenance module 210 maintains theme data in theme data storage area 255. Theme data includes themes, GUI elements, and data associated with themes or GUI elements. Themes are packages of GUI elements. GUI elements include icons, fonts, colors, images, wallpapers, controls, ringtones, boot animations, notification sounds, etc. A GUI element of a theme is associated with at least one component of a GUI, and the GUI element is applied to the at least one component of the GUI when the theme is applied to the GUI. Components of a GUI include icons, fonts, colors, wallpapers, etc. of a GUI. A component can include sub-components. For example, an icons component may include sub-components for individual icons. The system can treat sub-components as it does components. For example, a GUI element of a theme can be associated with a sub-component of a GUI, and the GUI element can be applied to the sub-component when the theme is applied to a GUI for an application.
Theme data is stored in theme data storage 255. In some implementations, theme data is received from third parties. For example, the system may receive a theme from a theme publisher. Theme data can also be created by a user of a device whose GUI is customized by the system, or theme data may be created by other users. For example, theme data may include a customized theme, as described in commonly-assigned U.S. patent application Ser. No. 14/519,156, filed Oct. 21, 2014, entitled SYSTEM AND METHOD FOR CUSTOMIZING A THEME FOR MODIFYING A LOOK AND FEEL OF A GRAPHICAL USER ITERFACE, which is incorporated in its entirety by reference herein. In some implementations, theme data stored in theme data storage 255 includes themes of a theme store, and the themes can be purchased by a user. In some implementations, theme data includes settings and configuration details for a GUI generated by a device. For example, theme data may include a theme that has already been applied to a GUI for an operating system.
The application identification module 220 receives application data and identifies an application that a theme is to be applied to. Application data includes information associated with active applications running on a device, including an application name. Application data includes customizable components of GUI generated for an application. In some implementations, the application identification module receives a selection by a user of an application that a theme is to be applied to. For example, the user interface module 240 may generate an interface including a list of applications, and the system may receive a user's selection of an application from the list. In some implementations, the application identification module identifies an application that a theme is to be applied to based on a foreground application in a GUI being displayed by a device when a request to theme an application is received from the user. For example, the application identification module may identify the application that is to be themed based on the foreground application in a GUI when a selection of a theming overlay is received.
The theme application module 230 receives user input including an instruction to apply a theme to an application, and generates GUI customization data that is applied to data for generating a GUI for the application, thus applying the theme to the application. Theme data can be accessed in theme data storage area 255. The theme application module may receive a selection by a user of a theme to apply to the application. For example, after receiving a selection of the theme button 405 included in the GUI 405 of
GUI customization data includes configuration details, determined based on the identified theme, for modifying a look and feel of a GUI generated for an application. GUI customization data can identify or include GUI elements of a theme, which are respectively associated with customizable components of a GUI generated for an application, which may be included in application data. The theme application module 230 can apply a theme to an application by outputting an instruction to modify, based on GUI customization data for the theme, data used for generating a GUI for the application, such that customizable components of the GUI for the application are associated with GUI elements of the theme.
In some implementations, data for generating a GUI for an application is stored in a database using the JavaScript Object Notation (JSON) format. The JSON formatted data is represented as a string in the database. In some implementations, the theme application module 230 applies a theme to an application by modifying, based on GUI customization data, the JSON formatted data for generating a GUI for the application. When booting into an operating system or launching an application, a device references the JSON formatted data to identify GUI elements to load, reflecting the theme applied to the application.
In some implementations, GUI customization data includes a resource table listing GUI elements of a theme and a command that a device reference the resource table for identifying GUI elements when generating a GUI for a themed application. In some implementations, GUI customization data includes additions or changes to an existing resource table including GUI elements of a theme. For example, a theme may already be applied generally on a device, and GUI customization data may add references to GUI elements of a theme being applied for customizable components of a GUI generated for a foreground application. The operating system can traverse through multiple resource tables in order to identify GUI elements to apply to components of a GUI generated for the application, and it can utilize framework and application resources for identifying GUI elements to apply to components not modified by the resource tables. GUI customization data can also include XML data identifying GUI elements for an application being themed. For example, XML data can identify a font to be applied as part of a theme to an application.
The user interface module 240 generates theme application interfaces, including various graphical user interfaces for displaying information to a user and receiving user input. For example, the user interface module generates a theming overlay, which may be displayed over a GUI for a foreground application, as discussed above. The user interface module 240 may generate the theming overlay after receiving a selection by a user of an application for selectively theming an application. In some implementations, the theming overlay is a floating window. The system may receive a user's selection of the them ing overlay for identifying an application to be themed. The user interface module generates the interfaces included in
The system 200 for selectively applying a theme to an application for changing a look and feel of a GUI for the application may operate on a mobile device.
At a block 305, the system 200 maintains theme data, including themes and GUI elements. Themes may be maintained by storing theme data on the mobile device or in remote data storage. In some implementations, the system receives theme data that is maintained by another system. For example, theme data may be downloaded from a theme store operated by third party systems. At a block 310, the system 200 receives a request to apply a theme to an application. In some implementations, the system receives an instruction by a user to launch an application for theming applications.
At a block 315, the system 200 displays a theming overlay. The system identifies an application to be themed based on the foreground application on which the theming overlay appears when the theming overlay is selected by a user. A user may navigate between applications or to a home screen, and the theming overlay remains displayed over the active foreground application. Similarly, a user may interact with a device, including a foreground application and GUI elements of the foreground application, while the theming overlay is displayed over an interface. For example, referring again to
At a decision block 320, the system determines whether a selection has been received of the theming overlay. A selection of the theming overlay corresponds to a request by a user to identify a theme to apply to a foreground application displayed in a GUI below the theme button. For example, referring again to
At block 325, the system 300 identifies a foreground application associated with the selection of the theming overlay. The foreground application is associated with a GUI displayed below the theming overlay when the selection from the user was received. For example, the foreground application associated with the GUI 405 of the mobile device 400 of
At a block 330, the system 300 displays available themes for theming the foreground application. In some implementations, the system generates a menu listing themes that can be applied to the foreground application. For example,
At a block 335, the system 300 receives a selection of a theme to apply to the foreground application. For example, referring again to
The disclosed system and method enable a user to quickly and easily apply a theme to an application without applying the theme to other applications. A user may quickly theme different applications based on different themes. Accordingly, a user is provided more control over the look and feel of applications on a device.
Those skilled in the art will appreciate that the actual implementation of a data storage area may take a variety of forms, and the phrases “data storage” and “data storage area” are used herein in the generic sense to refer to any area that allows data to be stored in a structured and accessible fashion using such applications or constructs as databases, tables, linked lists, arrays, and so on.
The above Detailed Description of examples of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed above. While specific examples for the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative implementations may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative combinations or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed or implemented in parallel, or may be performed at different times.
In general, the terms used in the following claims should not be construed to limit the invention to the specific examples disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed examples, but also all equivalent ways of practicing or implementing the invention under the claims.