| The trouble with most calendars is they are flat. Get an image in your head of what is coming up in the next week or so and it will look nothing like a calendar (hopefully). A more intuitive calendar design would be one that matches most people concept of time. 3D step interface - My idea is to show the calendar as a series of wide steps vanishing downwards into the distance. Each step represents one day, week or month depending on what mode the user is in. The day steps would be divided into hour tiles, the week steps into day tiles and so on. Simple information, like working days, can be shown by changing the colour or texture of the tiles. 3D event sprites - To take advantage of the extra space allowed by the 3d environment, 3d sprites could be used to represent events, deadlines, appointments etc. The user could add an event at a specific time and date and pick a model from the applications standard library or load their own. When people use calendars, they write important things to remember in big, underlined letters: big -> important. In 3d, the size of the sprite would reflect the importance the user has given it (say, on a scale on 1-5). The more important, the bigger the sprite. The size/importance combined with the perspective effect gives a very intuitive idea of the urgency of the event. In bigger views, like one month per step, only the most important events will e shown to avoid cluttering up the view. Sketches - There should be more steps in this design, which shrink less at each stage, but I'm not much of an artist. The squares marking the time either side of the event sprites are meant to be mostly transparent. Aplogies for the drawings, but I can't get at any 3D modelling packages till I get out of school. Modular schedules - Some people will need to add a lot of information to their calendar. However, they will usually only need to closely examine similar types of events at once. For example, someone checking their project deadlines won't need to see doctors appointments at the same time. The events can be grouped into seperate scheduless of similar objects. Each schedule will be stored in a different file. The user will be able to select which schedules they currently want to see and events from other schedules will become partly transparent. This has the added benefit that in collaborative projects the schedule containing the project deadlines can be distributed to everyone and updated every time they log on. Flexibility - The calendar information should be separate from the GUI in the code so that the GUI is just a front end to the calendar system. That way different interfaces can be added. The calendar should also be able to be embedded in another application, like an email client. Other things need to be considered, like a adding reminders that go off before the event and a daemon to popup reminders. |