When I first released ToDoList more than 11 years ago it was as a consequence of exploring some UI ideas, the principal of which was using the non-client region of a tree-view control to draw attribute columns.

But while this satisfied my research goal it had a major drawback: The attribute columns could not move independently of the task titles meaning that if you displayed too many columns the task title got squeezed and some of the attribute columns might not be visible.

In addition there was no column reordering or resizing because I would have had to write this from scratch and that seemed too great an effort when the built-in Windows list-view gave you that for free. So I pushed the problem into the background and palmed-away questions as they came up.

Then sometime in 2012 I started to think about creating a Gantt plugin and I realised that the 'tree-part' and the 'bar-part' were going to have to be physically separate because the 'bar-part' was definitely going to need to scroll horizontally but that scrolling could not cause the 'tree-part' to be hidden. And I further realised that solving this might also provide the solution to Task-Tree attribute columns issue.

So I started work on a 'Tree-List-Syncer' whose primary goal was to synchronise the vertical scrolling of either a tree and a list or two lists, positioned side-by-side. Additionally the LHS widget had to hide its vertical scrollbar and instead respond to scroll events from the RHS widget.

The Gantt plugin was released with 6.7 in 2013 and proved successful as a solution yet it still took a couple more versions for me to summon up the courage to pull open the guts of the app to replace the Task-Tree and List-View. I think I was still hoping that the Gantt plugin would reveal a huge flaw in my approach so that I didn't have to do the work!

But here it is. Both the Task-Tree and List-View now have task attributes that can be scrolled horizontally without impacting the task titles. They are divided by a splitter bar (which can be effectively hidden in the preferences) giving total control over 'pane' widths. Attributes columns can be reordered and resized by dragging the column header dividers ala Explorer.

I do understand that some of you will find these changes upsetting but they had to made in order that other more important usability features could be included to keep ToDoList relevant.

Introduction

You know how it is - you start work on one project and halfway through, you find one or two side-projects crop up that have to be solved before you can continue on the original project.

This is one such project with the added twist that it too started its life as a side-project. Here's what happened:

<Cue wavy screen effect>

I can only imagine that the planets must have been in (mis-)alignment or something, because at one point a few months ago, I was suddenly fielding emails on four or five separate articles I had previously submitted to CodeProject, some asking for features and others for bug fixes.

Foolishly or otherwise, I largely agreed with all the points raised, and subsequently found myself with fourteen or fifteen separate issues to resolve.

The situation was also made worse because I was trying to use CodeProject to keep track of all the things I had agreed to do, meaning that I had to continuously trawl the comments section of each article to remind myself of what I was supposed to be working on.

It even got to the stage where I was worrying that I'd fail to deliver on something - silly I know, but there you are!

Keeping a list on paper was a definite step in the right direction, but since I do all my coding on the same machine, it seemed somewhat inelegant, and anyway, we all know what happens to crucial bits of paper left lying around on desks and such.

The next step was to hunt around on the web for a tool to meet the following requirements:

Simple interface

Support for hierarchical data

Numbered items/subitems

Open file format

Freeware

Simple, huh! not!

I will admit that I did not spend weeks searching, but I am still surprised at the general lack of software matching my needs.

On reflection, I think that the reason may be simple: people are so used to commercial software being 'feature-rich' that when they come to design software themselves, they (not unreasonably) think they too need to cram as much in as possible, often leading to software where a lot of essential functionality is hidden away in the menu bar.

So, surprise, surprise, I decided to write something myself.

However, it's fair to say that I did not originally intend to post it on CodeProject and am only really doing so because I had a heap of fun solving some very interesting problems and these are what I think make it worth it.

Using the Software

There's really very little I need to say here since every feature/function is explicitly visible in the interface.

Nevertheless, the following list of basic capabilities and omissions may go someway to answering any questions that arise:

Files are stored in XML format with .xml file extension.

Trying to load a non-tasklist file will generally fail (unless you read the code to see how to circumvent it).

The number of items/subitems is limited only by memory (although performance may be the deciding factor before you exhaust memory).

Marking a parent item as 'done' will also gray-out child items, but they are not disabled or automatically marked as 'done'.

An ellipsis (...) indicates that an item has sub-items.

All items can be expanded or collapsed (by double-clicking).

Top-level items and sub-items are created using different toolbar buttons.

There are task-specific context-menus.

The previously open tasklists are re-opened on startup.

The tasklist is automatically saved when closing the software or minimizing it to the system tray.

The priority of a task is shown as a grayscale box to the left of the item.

Points of Interest

Here's where we come to the side-projects I was talking about, the first two of which I intend to work up into follow-up articles.

They are:

The 'ordered' tree control, which incorporates a non-client gutter for displaying the item numbers.

The idea stemmed from research I did into alternative designs for a tree-list control, which did not solve it by creating a hybrid control incorporating a tree and a list.

The hybrid control seems such an obvious solution that I suspect few people have stopped to question it, but it has still always struck me as looking far too much like hard work to be truly elegant ('square pegs' and 'round holes' spring to mind).

One possible idea is to implement the 'list' portion entirely in the non-client area of the tree. I.e., shift the right hand client edge to the left and then render the list portion in the resulting non-client area.

Whilst I've yet to get round to building a proof of concept, it was nevertheless this ongoing mental debate which prompted me to try to solve the requirement for numbered items and subitems by rendering the item/subitem numbers in the non-client area.

Without going into too much detail (as this will subsequently be an article of its own), this is how I got it to work:

Handle TVM_INSERTITEM and TVM_DELETEITEM to know exactly when items are added and removed.

In these handlers recalculate the width of the gutter required to display the widest 'dotted' item/subitem number. (Note: this is not necessarily simply the deepest subitem.)

Handle WM_NCCALCSIZE when it does, and offset the left border by the required gutter width.

Handle WM_NCPAINT for painting the numbers.

This is necessarily an over-simplification, but it captures the essence of the solution, and all that essentially remains is lots of fiddling about to ensure the non-client area gets redrawn at the the right times to stay synchronized with the client area.

Embedding .RC control definition data directly in a .cpp file to break the dependency on binary resources (a.k.a. 'Runtime Dialogs').

This is an idea that has been floating about for quite some time and which has only recently gelled into a workable solution.

The problem, put simply, is that if you want to take advantage of the resource editor in Visual Studio (and who doesn't), then you very quickly find yourself stuck with having to load dialog templates from resources compiled into the binary file.

This further means that if you want to make use of a dialog across multiple projects, then either you need to copy and paste the dialog template between project .RC files, or you need to build the dialog into a DLL from which it can be accessed.

'Runtime Dialogs' (a snappy title I coined myself) is a solution that neatly sidesteps both the nuisance of copying dialog resources between resource files and the extra work (and maintenance) involved in packaging dialogs in DLLs.

And it works like this:

First, you design your dialog template in the resource editor, create a CDialog derived class using class wizard, and wire up all the controls just as you normally would.

Next, you #include "runtimedlg.h" and change all instances of CDialog to CRuntimeDlg.

Then, you cut and paste the control definition section from the appropriate section in the .RC file and embed it directly in the dialog's .cpp file as a static string (with a bit of tweaking to handle double quotes and such like).

Finally, in the constructor of your dialog, you simply call CRuntimeDlg::AddRCControls(...) passing the control definitions as a string.

And CRuntimeDlg takes care of the rest including, if required, auto-sizing the dialog to suit the control layout.

I'm certainly not suggesting that this is a 'win-win' solution for all situations but it certainly has merits in its closer coupling of dialog template to dialog code which makes sharing dialogs across multiple projects a breeze.

P.S.: In case it's not clear here, I used CRuntimeDlg to create CToDoCtrl which encapsulates the ordered tree together with the priority, date and comments controls as a single simple-to-instantiate control.

This is possibly the most satisfying aspect of the whole project because it was completely unexpected.

What I mean is that, until recently, my knowledge of DOM and XMLDOM was virtually non-existent, as it's only since I've become more interested in the presentation of AbstractSpoon that I've been forced to get to grips with the various implementations of DOM and XMLDOM out there.

I'm pleased to say that the code on my site works under IE 6.0, Netscape 7.1, and Mozilla, although custom code was required to achieve this.

Generic MFC Classes that may prove Useful to You

The following table lists a wide range of utility classes written for this project. They can all be included in any MFC project provided you include any class dependencies too. Feel free to ask any questions relating to these specific classes and how to use them.

Adds support for recognizing urls, clicking them and setting custom url callbacks

CWinClasses

Encapsulates the ::GetClassName Win32 functions

CXmlFile, CXmlItem

Non-Unicode class for reading and writing xml files

CXmlFileEx

Adds encryption capabilities to CXmlFile

CXmlFile, IEncryption

* CSubclassWnd was originally written by Paul DiLascia for MSJ magazine. The version I use has been heavily extended to suit my specific needs. The classes that depend on it here need this extended version.

Further Work

Whilst this tool was originally intended for my personal use only, it is now a 'community' project, so if you find it useful and want to make suggestions for enhancements or bug fixes, then post below.

History

7.0.13 (04 Feb 2016) - Mostly likely the last update of 7.0

Fixed uneven task row heights on Windows XP 64-bit

Fixed incorrect strike-through in Find Tasks dialog for incomplete parent tasks having all their subtasks completed

Fixed doubled-up Help Menu separator on XP

Fixed translation 'Cleanup' button not saving changes

Fixed XML encoding for Unicode tasklists

Fixed tasklist tab-bar resize bug after double-clicking on titlebar

7.0.12.1 (20 Jan 2016)

Fixed loading of Ansi tasklists

7.0.12 (14 Jan 2016)

Fixed bug where pasting a text fragment from Firefox would display the wrong source URL

Fixed List View selection render artifacts in full screen when resizing the title pane

Fixed inability to tab to Status field after making the field 'read-only'

Armando, first you need to open .ics from your colleagues in your Outlook. Then try to import calendar items by "Tools - Import Tasks - Format: Microsoft Outlook" as it was mentioned by Pierre, just click "Change..." current folder and choose the one you imported .ics (another copy of Calendar I guess).

Yes! this worked! I could import. It was very cool BUT...The problem is that were not imported the dates of start and end (or start and due dates).Therefore neither incorporated into my schedule TDL :(

Moreover: what good would that TDL can have "macros"!! so that by pressing a button, you could, for example, import a specific Outlook calendar (or update one ...!)

It occurs to me the following idea (let me know if I'm wrong) would be excellent if TDL would work with ".ics" files as something internal (not to import, but to read ... even shared .ics files ) .... this would be great ... At least for me. Maybe I went too far... sorry Dan

In summary, the messages I got were that the following aspects of TDL's UI could be off-putting:

The plainness of its styling

The visual complexity

The lack of more 'goal-oriented' workflows

So now what I want are concrete suggestions in each of these 3 areas, and the format I would like in each of the areas is this:

Images of any application interfaces (not just tasklist-related) that you find beautiful, together with a statement of why you feel they are beautiful. Windows, Mac or Linux.

I would also invite you to take a screenshot of TDL and 'make' it more beautiful by crafting bit of other apps on to it.

Images of TDL that you have 'doctored' to make them appear less complex, including hiding features that you consider 'advanced'.

Specific suggestions for features that are more geared to users' outcomes, various use-cases that we can incorporate into workflows. Perhaps even a completely separate and optional menu structure for newcomers.

Notes:

I know that I am entering a dangerous place in asking for opinion, but I am committed to allowing everyone to express their own views, so please feel safe about making 'out-there' suggestions.

Please also try to avoid 'wordy' descriptions, they don't really help me

Although I am one of those who think that TDL is ugly and am attracted to prettier programs, I would be quite cautious about making any changes to the interface. And I don't want a more goal orientated workflow.

Making a complex program look pretty while also retaining its ability to function is really tough. Firstly fashions change every few years. Secondly I can't think of an example of it being really well done.

Apple seem to have approached the problem by removing functionality of programs (eg Aperture) and now seem to have a policy of downgrading desktop apps to be the same as iOS equivalents. MS invented the ribbon (which I do think is prettier) but I now find it hard to locate many options and functions.

I can see how complex preference files are confusing and offputting to some new users - at the same time they are my preferred way of getting into something new because they usually give a very good guide to a programs functions and where to find them.

The TDL interface is very busy - but I admit to having everything showing because that works much better for me, so a lot of the business is the result of my own choice. If it can be done so that functions are as easily available but not visible that would be an improvement.

DAN: definitely: You have to see and explore this page. I have no doubt that this is an "ideal" for TDL style.Note: in order to "test" the program (which works only "online") you have to register. Worth.

For me TDL is beat, out of the box, for reasons that have very little to do with the program itself:

- it's intimidating, or, as some say, busy

- for some reason I can't fathom, the concept of sub-tasks is difficult / non-intuitive to understand for the phone / tablet generation. This is the only reason I can think of as to why every task manager on the planet doesn't have the concept of sub-tasks baked into the very premise of the effort. How can the concept of grocery list not have inherently required a Meat subsection, is beyond me.(Just try transforming a recommended daily allowances / food guide on top of a grocery list, and not have to try and figure out do you have enough portions for X number of meals for Y number of people, across Z number of days, broken down by food group! Sadly, neither beer nor desert classify as food groups. Sub-groups, or contexts ... arguable.)

- Palm (I'll guess) made the PIM popular. Tasks (TDL) are the least favourite cousin of the PIM, especially if you try to define a line between event calendar entries (pick up milk), project planning (go shopping), and todo's, some of which are context and time sensitive. (You have a task list of which some portion of entries have corresponding contextual calendar entries. OK, I'm getting groceries, and there's a pharmacy in the same mall. And bring home pizza.)

- it's the ecosystem that surrounds TDL more than TDL itself. Aside from the PIM / calendaring aspects, where is the user community (the user community, not the programmer or geek community), mutual support, documentation, and so on. i.e. All the things that cost money that Dan.G's not interested in (nor should he be, if coding is his thing) - except, wait for it, it's a free program. There's no wonder this isn't as around or as pretty as other -commercial- products. Nor should it be. But the ecosystem lack holds TDL back. pbworks nothwithstanding - which for years I've seen hasn't been touched in years. (Working on this, now.)

- so, for TDL to be more successful, at least at an introductory / superficial level, it must integrate into other PIMs out there. [Don't even mention Outlook - I will not ever own it.] If Palm introduced and made popular the PIM, then the world spun backwards when it introduced Android. No PIM, local sync., all of that rich, good, user happy stuff, got left by the wayside. Google calendar is a joke (can't even tick off a task as being completed), Google tasks is even worse - so many attributes missing and anyone thinking Google will ever do anything with it is fantasizing somewhere I don't want to be near. Even ToodleDo, apparently reasonably popuplar (and 'pretty', vis a vis TDL, but not MLO), is able to get away with subtasks that aren't. For money even. Summary: There is no PIM ecosystem out there for TDL to integrate into. There's only the web 2.0 app nonsense that has lost local storage of my own data, tight / easy to use interfaces, keystroke oriented.

- What is TDL? It's a project manager (ick, intimidating), no, wait, it's a list manager (less intimidating), no it's a life manager, it's a goal roadmap, it's a todo list keeper, it's a tasklist manager (never mind the apparently intellectual exercise necessary to understand that tasks are todos and vice versa), it's a GTD system (a wha?), it's a ... WHAT THE HECK IS IT??? It's all of those things, in a generic, universal interface. Which makes it hard to suck up and realize I want to spend many hours here because IT WILL MAKE MY LIFE BETTER!

- Dropbox coming along, and Android app., since (see, world moving along), has brought me back to TDL. So, I have a way to keep (cross-platform and cross-computer, because of external forces), share with my TEAM, and some of the ecosystem misses in today's world are now present. To TDL's benefit! And all beyond the control, and necessary expenditure of effort, of TDL. So leverage / publicize it - 'it fits within your current workflow and makes your life better! Buy today! Quantities are limited! Comes in chocolate too!)

Having said this, some easy things to do:

- start a google group, or something. Better with a wiki. pbworks appears nice enough at start, but is missing lots. More user driven than not - Dan.G. need not watch it every other second. [Note: This is not in place of this forum. Or pbworks, or at least not yet.] Start pulling together the rich user community experience to leverage off each other - particularly the non-geeks and coders. Google todolist and you'll find references on all sorts of web sites - instead of one major one-stop shopping TDL info central.

- right-click a task and post to my google calendar - equivalent to 'share as' present in Android - both TDL and MLO. I say Google only because it has become ubiquitous, no matter how bad the functionality is. (Go figure.) Which is to say, anything that comes out on a go forward basis is going to be Google aware - or that anything else is going to go nowhere. Anything more can come elsewhen - (storage in google docs, etc., as present, is wonderful - except the Android app says it can't save to docs, only Dropbox). Storage is NOT PIM integration. So Google Calendar and Tasks integration (you'd be the first app I know of to integrate what should never have been separate in the first place - Google subtasks with dated items appearing in the calendar simultaneously.) Why does this matter? Because everything else in the world is now keying off Google (only thing out there). Be it colours, presentation, alerts, widgets, sharing - you name it. And TDL would come along for the ride. (Heck, integrate / merge with Pimlical - subtasks are the only thing it's missing. Not saying Pimlical is all there yet, but their history shows they know what's what and are actively working towards where the world already was - in Palm, that disappeared with Android and Google. Just, like TDL, there's only so many programmers available and hours in a day.

- change preferences to have one (left) line (tab?) per right-window. It took me far too long to realize when I clicked on the 2nd left line I was still in the same window on the right as when I was on the top line. When I first encountered this years ago, my gut started telling me I wasn't in a program I wanted to spend hours of my life in. It all makes sense once you're used to it, but it's not intuitive / consistent with other software, even it is easier to program - and having encountered it, one starts looking askance at every other aspect of the program. Just about the first thing I do with any new piece of software is look at the preferences.

- change the default view at first open to maximized with notes, checkbox and title only. Take the intimidation factor away. Let them sink into that much of TDL before going deeper. Anyone looking for more will have seen the possibilities in screenshots or wherever, and know it's in there, they just have to turn something on - or they wouldn't be trying TDL in the first place. Include an initial popup of 'press Esc for detailed view' or something.

- here's an idea just thought of, see if it resonates. One comes to TDL looking for 'a something', to solve a need - not a Swiss Army knife of incredible functionality and flexibility. Don't want to call this themeing, but, what if an initial (install?) dialogue asked what you're initially looking to do with TDL? If it's 'todo/list/task manager' set some default preferences / initial views appropriately. e.g. Little or no date columns, maximized with notes view, etc. If it's 'project management' then a different initial view results, with many date fields visible. No doubt there are others, but can the extraneous, intimidating, 'not what I'm here for' aspects of "I'm trying this software because" aspects be removed - at least long enough to get comfortable and realize, YES, this IS where I really want to be.

- I hesitate to say this, in this so called paperless age, but could a print (output) wizard be created? a la Report Writers. (Custom headers, templates, etc. Think old dBase 3, or even LibreOffice Base.) No man lives alone, and one doesn't come to such software as TDL if they're not working with others, really. So, in some fashion I'm going to share with someone this is my list, or this is some wonderful software I'm using ... see? And every time someone shows such to someone else, they're starting to evaluate whether or not TDL would be useful to them. If that demonstration looks tightly applicable, clean and easily integrates into their own current workflow, to their particular use case, then you've just acquired another user. But I won't even show it to you if ... (and the word on the wonderfulness of TDL doesn't get spread around as much as it otherwise might).

The program is solid, its GUTS are magnificent. It's interface is clean and simple, which REALLY attracts me to it and keeps me coming back. But software does not live by code alone - it must integrate with the rest of one's life, including calendars. And that is a continuously moving target - witness today's prevalence of Android and Google. Neither of which were predictable in Palm's heydey. And somehow the world went backwards, post-Palm, losing established functionality in Google, yet somehow being so successful as to have become ubiquitous. I believe the era of standalone non-integrated software is gone. And web 2.0 apps (read, subscription revenue for program development costs) becoming all pervasive - sadly. The latter also meaning it is no longer sufficient to code well only - one must have graphics artists, marketers, and support contributors surrounding them. Even if I only want to code, and there already aren't enough hours in the day.

I agree with much of what you say. Although some of this blurs the look and feel of TDL, with its functionality and that of its interface. Something I have struggled with.

I agree re the PIM thing. I also find it crazy that tasks and calendars are separate (and I never used Palm). I have been using a hard-copy diary to achieve this! By the way, I have started putting some ideas down for a 'day-view', which is essentially a PIM in disguise. Hopefully will send this through to Dan soonish.

I also wonder at the simplification that Google promotes. So many task managers with a single level if tasks. Do people not want this? Google has removed functionality from its own software many times, with the excuse that it was not used enough - so it is lowest common denominator stuff.But as you say, aligning with Google is smart, as it is everywhere. Being able to pull calendar info from Google calendar into TDL would be great. The only issue is they reserve the right (and exercise it) to change functionality and services any time...

zajchapp wrote: I agree with much of what you say. Although some of this blurs the look and feel of TDL, with its functionality and that of its interface. Something I have struggled with.

Yep - tdl is a task manager, not a calendar. Problem is ... once a task has a date ... one probably would like to see it on their calendar - which is a separate program. Let alone, if that date has passed or the task is completed. The first suggests either a moving calendar entry date or an overdue task, the second suggests communications between disparate programs to say check off that task and assign a date (today?) to the next in the sequence. (Assuming dependency between tasks. And now we're into something a la MS Project.)

I agree re the PIM thing. I also find it crazy that tasks and calendars are separate (and I never used Palm). I have been using a hard-copy diary to achieve this! By the way, I have started putting some ideas down for a 'day-view', which is essentially a PIM in disguise. Hopefully will send this through to Dan soonish.

It makes sense depending upon where you're coming from. Once a task has a date, it makes sense that there be a calendar entry. The reverse not so - an undated calendar entry? When the very nature of a calendar is to plunk the item into a date slot? Otherwise one my put in to the empty space before the 1st of a month (on that fridge calendar) [do soon, this month, ?] - but at that point it's really just an undated task. On a calendar. And we're back to the blur between calendars and tasks - and tdl is ostensibly a task manager, not a calendar/diary. Arrgghh! What's a poor programmer (Dan) to do?

I also wonder at the simplification that Google promotes. So many task managers with a single level if tasks. Do people not want this?

Evidently not. Or, probably most importantly - not that they're willing to pay for. Even $2 in play.google. There are few commercial consumer level products - even. Also, being fair, ultimately such functionality requires a database, and until recently very few lightweight (cross-platform) databases have been available. Be it sqlite, firebird (which requires running a server if on a network), or even xml - relatively recent concepts, not well known, and not cross-platform / universal.

And the world keeps moving - google having since come along, and ... wherefore btree? (Long ago / DOS single file database routines.)

Google has removed functionality from its own software many times, with the excuse that it was not used enough - so it is lowest common denominator stuff.

But as you say, aligning with Google is smart, as it is everywhere. Being able to pull calendar info from Google calendar into TDL would be great. The only issue is they reserve the right (and exercise it) to change functionality and services any time...

Fair enough, but probably not likely - how much less functionality can they put into either, at this point. Let alone if the world ecosystem has meshed with google, 'great unhappiness in the world' if/when then change things. I suspect, thought, that the underlying api calls wouldn't likely change. Even if a particular call becomes deprecated, or functionality added doesn't make it into that deprecated call.

It gets worse ... contexts. So you have work and home, and you change something on one side or the other. Complexity. Let alone (as I just learned from wiki best practices article) TDL supports multiple contexts. (Work@Home, and most context aware task managers have a limited number of contexts, unlike TDL.) So, dated, context tasks, need to go into a unique (personal) calendar [Home, vs work] - tough for the user to manage superficially. Most merely have 'stuff' to do.

Sort of why I suggest a meld with Pimlical makes a certain amount of intuitive sense.

In the mean time, a direct if I put a date on a task, post it to the calendar, would be useful. If limited.It'd be start.

Problem is - pull that string, and a great whacking amount of other string is going to come with it. (People wanting calendar entries to dynamically change with each task change - not through some sort of global sync process at TDL start / stop.)

I don't much wonder why the functionality isn't there - but I still want it.

Answer: TDL has to reverse takeover the world, becoming the new Google.

If you want to be yet more useful to me/TDL (and I'm not suggesting that you do ), you could take this big conversation (which is already somewhat overwhelming me with possibilities) and put it on the wiki, distilled into more manageable pieces.

Most people probably think that writing TDL is all about coding, yet for me 'thinking' is the more important activity, and I find that my thinking can get bogged down in too much information, hence the desire to have other help out in this area.

ps. As an aside, you might also be interested in this conversation[^] too which occurred just before you came onboard.

.dan.g. wrote: If you want to be yet more useful to me/TDL (and I'm not suggesting that you do ), you could take this big conversation (which is already somewhat overwhelming me with possibilities) and put it on the wiki, distilled into more manageable pieces.

Only just saw this now. I hear you. Except ... my mind sort of blows up trying to grapple with how to approach / organize / lay out. If something occurs to me, I'll give it a whirl.

But this also shows how some additional facility of some sort would be useful. (Not tracs, but perhaps that sort of thing. If sf were it, it would be more used than it is.) Feature requests, voting? / prioritization with effort estimates, bug reports, discussion threads? Even a wiki? [As in self-signup. Not that I have any idea how you avoid spam.]

Most people probably think that writing TDL is all about coding, yet for me 'thinking' is the more important activity, and I find that my thinking can get bogged down in too much information, hence the desire to have other help out in this area.

Fair enough. Probably because you are the apparent single face of all things TDL. I sure get the one has to wrap their mind about a beastie, an approach, and how to integrate with what's already there, before coding can even start. Then there's the which, next, question.

ps. As an aside, you might also be interested in this conversation[^] too which occurred just before you came onboard.

10-4. Didn't mean to be making feature requests. Was intending more towards trying to throw out spit balls for reaction vis a vis what might be quickly / easily done to make TDL 'prettier'. I know / knew the whole calendar thang was / is something people have wanted even before stuff comes out of beta. And if it were easy, it would already be there. Let alone, the world has been a moving target - the lack of Android, or a local Android sync, let alone an on-board native database?, meant anyone wishing to do sync had to reinvent the wheel on their own. == non-trivial. Only to have the rug pulled out from under their design feet within a couple of years.

But software does not live by code alone - it must integrate with the rest of one's life, including calendars.

Yes, I like this.

I share many things in your post. Even though escaping, or goes beyond, the order of Dan ("TDL is ugly?")

I highlight only one aspect:

I think this is what we all want: to integrate the different parts of our lives (mails, tasks, events, scheduling meetings), not repeat or duplicate efforts.But TDL can not do all (emails, etc). But can keep trying to integrate even better with other programs (Outlook, google calendar and other big). IMHO I think this will be the key to the future success of TDL.

I speak in my reality:Outlook is a program that has sought to integrate all this. But it has many shortcomings (especially task management. Calendar is every day more interesting).

Everyone has their way of working ... and organize your life.In my case, I would be satisfied if I could get TDL and better integrate Outlook.

I think others will want to integrate with TDL alia: Google calendar, etc..

Dan, you have something very important in hand. TDL has great potential. I am a great software tester and I have tried many! Go ahead!

"One thing that TDL does better is providing a rich text mode of the comment area. One thing that does it worse is the filtering. Though TDL has list and tree views/tabs, they use the same filtering rules. And I always confuse the controls for filtering with those for editing, as they look similar. In MLO the filtering is nicely tucked away into views. Having to manually set filters is cumbersome and error-prone. The principle of MLO of having views/tabs on the same data with different, customizable filtering rules is much better. By the way, that's one thing that many other task management tools get wrong."

I will put aesthetics largely aside, as has been mentioned above, they are dictated by fashion. And the look, while quite 'stand-alone' application is fine in my opinion. However, I like an interface that can be configured to the way I work, presents the information in a logical, tidy, consistent fashion without visual clutter, and is efficient to use. Pretty comes second to that, but is nice when it can be achieved.

I have several suggestions for improving the TDL interface below. Some blur between UI usability and application functionality, but I am not sure that can be helped.

Visible informationSome of the visible items in the interface aren't always needed. It would be useful to be able to hide them when not needed. I personally find the filter bar superfluous most of the time. I am not really sure of the purpose of the Project edit box – could the tab name be directly editable? If in-grid editing was possible, could hide the edit bar also. I would hide these either in a column to the left of the tasklist (like All-in-one sidebar in Firefox), or at the top, in place of the filter-bar.Further, I think it would be useful to hide the tasklist tabs that you won't use for a particular tasklist (e.g. Calendar).Two examples: http://i.imgur.com/cirIzeK.png[^] and http://i.imgur.com/W2Zhmt4.png[^]

'Views'TDL could be provided with 3 default views, that are easily swapped between. The user could choose which to start with. These views would control the visible columns, tabs, toolbars and probably menu items. There could be a global view preference, but each tasklist could have its own view. My suggestions: - Simple: Totally lite, for the android generation. Mimic many of the current task managers. Listview only, no hierarchy, Task title, due date, priority, reminder., maybe flag and category. Ability to sort by fields, or by manually dragging. Has comments. Reduce menu options to cover the above. Maybe allow for say 4 priorities, indicated by the colour of the taskExample: http://i.imgur.com/JfHM13q.png[^]

- Basic: For the mid-range user. Add the tree view, and the ability to nest tasks. Ability to add any of the other columns and functionality? Or leave off Gantt, Stats, custom fields for instance. Initial view is as for the Introduction.tdl. Not entirely sure of where best to pitch this though... Or maybe MLO like. Not so many columns, but icons instead.. - Expert: The full experience for the real taskers and project managers. All features exposed.

This could also be used for setting up TDL for specific uses (mentioned by _BS_). For instance, I have a set up for notetaking, that mimics many of the hierarchical notetaking apps (e.g. Keynote). Currently I run this is a separate version of TDL, due to the width of the comments affecting all tasklists. Only really need Task tree. Note: It would be useful for the comments width to be tasklist specific.Notebook view: http://i.imgur.com/8nRTC0F.png[^]

To push this boat out still further, I think it would be useful to allow the user to define their own views. This would enable the user to work with a tasklist in a visually simple way, but then quickly switch to a more complex view for more intensive / detailed work.

Text FormattingI agree with Alex. Being able to visually distinguish certain types of task by the text format would be useful. For me the following would be useful:Definable font formatting for Tasks based on LevelDefinable fonts based on an attribute value (e.g. Tag - could be complex) - Definable fonts for attribute columns - The possibility to display icons instead of text in the attribute columns (this is now partly possible for the user defined icon based attributes. Would be nice to do this for some of the in-built ones, as they are better integrated in the application than the user defined ones.

Some things for 'ease of use' – but these are features as much as UI / Workflow enhancement:Grouping of tasks in ListviewI still think it is a major thing, to be able to group tasks by one or more attributes in Listview.

User defined sorts and groupsWe have user defined filtering, and that is great. Would be useful to be able to do this for (multi) Sorting. And if implemented, grouping.

Separate Filtering and Sorting for different TabsI still think it would be able to be able to de-couple the filtering for the different tabs (perhaps by preference).

Rules builderBeing able to set up rules that change attributes, based on what happens to other attributes could be nice for efficency. Would be useful for integrating user defined attributes into the application better. But this has been discussed before.

Finally, I would also counsel caution in making changes, and to be clear why you want to. Is the point having a task list that is everything to everyone?zajchap

I am using 6.7.8 and have encountered problems when printing. Many if not all of the stylesheets do not print all of my tasks and I cannot detect a pattern. The samee thing happens when printing without stylesheets. I have enabled all tasks, uncompleted tasks, visible columns and including comments.

Reasoning that some of the trouble might come from older versions of the stylesheets, I extracted the updated versions from Beta 4. Several of these are now working correctly. Specifically, ToDoListTableStylesheet_v1.xsl, and Z_DetailedReport.xsl seem to work. If I try with no stylesheets, then once again, only some of my tasks will print.

for most of users I introduced TDL to, yes, it is. They just don't care too much about functionality (at least in the beginning), it looks confusing to them, they don't stay with the app for long so there's no chance for them to become advance users and they rarely come back.Another issue is a learning curve, some extensive actions to reach a goal (remember, http://www.codeproject.com/Messages/4680904/Task-focus.aspx[^], your solution was

Quote:

What about combining: Filter Bar > Show > Selected Tasks

with Filter Bar > Options > Show all subtasks ?

Still it's a good solution and you are getting the required result but not everybody would be so insistent to come over it even if there's already some experience with the app.We mentioned MLO several times, it's a shareware so they have to do something to sell it good. Have a look at its evolution within last, say, 7-8 years.

In the beginning users want something eye-candy, then they want functionality and in the end they insist on customization. In my view for most users TDL has the latter twos but lacks the first one, as soon as it gets it http://www.youtube.com/watch?v=ryrQ8nadah8[^]

Unfortunately I cannot help with the design itself, probably it can be somehow outsourced but if you ask what exactly can be helpful:1. ability to choose between simple, moderate and advanced layouts during installation.Probably it's even better to have some advice for users which layout to choose depending on their previous experience and workflow requirements (a housemaid doesn't need Gantt charting and Burndown statistics so a simple layout is a good choice for her, likewise a project manager wouldn't be embarrassed by these terms and will choose an advanced layout)2. more themes to choose from3. more curved edges of GUI windows4. icon sets (or different icons)5. more visual effectsP.S. mostly the abovementioned are feedbacks from users in my surrounding, they are not keyboard ninjas or masters of planning, just normal users

I have come back here (TDL) [again] after having not kept with it, as the poster above mentions. Again the only real competition is MLO - even then it's not much competition, given the cost ...

What I have been searching for for quite some time, and still not found, is a PIM with subtasks, post-Palm world.The world has moved on in a number of ways since Palm, not the least Google, Android, and Linux. i.e. Agendus + ShadowPlan/Bonsai in a larger cross-platform Linux / Windows / Google / Android / Internet world. And none of this website subscription / synchronization nonsense, direct sync only. (But I appreciate that the subscription route is probably the only way to keep food in your mouth in this ecosystem.)

I am back to TDL mostly for two things - Android app, and finally got Wine going and found I could run TDL under it. TDL as a windows only app, still, is harming itself. Which is all to say, it's not TDL, it's the ecosystem surrounding it - pbworks and codeproject are easy examples of this. Everything screams 'coders only'. The lack of (Google) calendar integration also holds it back.

(Given my recent experience, had to play with Windows 8.1 for the first time, I've vowed never to buy another MS machine, and to get off all things MS ASAP. Like I said, TDL windows only holds it back.)

Anywho ... the reason / what caused me to write this ... careful if you take up the offer to check out MLO - the free version is still many, many, years old, and also 'plainly ugly'. If you want to see the esthetics of what the above poster is talking about, stick with the screenshots the website shows. Or purchase.

In the mean time ... in many ways I appreciate the 'ugliness' of TDL - it's CLEAN! Straightforward. Easy to use / understand - once you understand outlines, and project management, little extraneous. But, if all that were intuitive to most people ... there'd be more competition for it out there - and there isn't.

Dan: I totally agree with what Alex said.I am a graphic designer. AND I REGRET be unable to help, I not have time! had begun with icons, but -you see- I could not move much.TDL functionality is AWESOME. And certainly, if I TDL had an attractive UI ... quickly be positioned as the best program of its kind ..There are many programs with beautiful UI. In a future post try to post some links.Yes, TDL it's a bit ugly, but... we love it Regards,

Thx Alex, I really appreciate the time and effort you have put into your response.

mugrrrr wrote:

they don't stay with the app for long so there's no chance for them to become advance users and they rarely come back.

I would appreciate you outlining (in any level of detail) what you might consider to be a good 'Out of the Box' experience for TDL that we could aim for. I hope you appreciate that after 10 years it's very difficult for me to see TDL with 'new' eyes.

mugrrrr wrote:

Another issue is a learning curve, some extensive actions to reach a goal

I get you. Perhaps here too you could suggest some further 'goal-oriented' simplifications we could make.

mugrrrr wrote:

ability to choose between simple, moderate and advanced layouts during installation.

Feel free to highlight which parts of the UI (in your opinion) significantly add to its complexity.

mugrrrr wrote:

a housemaid doesn't need Gantt charting and Burndown statistics

It is my intention to add preferences to control what tabs are visible, so that certain tabs can be turned off by default.

mugrrrr wrote:

feedbacks from users in my surrounding

I know that many people don't know what they do like, but do know what they don't like, but it would be great if we could translate what they don't like into statements of what they would prefer.

mugrrrr wrote:

as soon as it gets it

And we could change TDL's name to FLYTRAP!

Thx again for all your comments. I'd love to make this an ongoing conversation where everyone can contribute to the debate.

I guess i know or more feel what the author of those lines meant. The design of TDL is not fresh. It can´t be as it hardly changed over the years.

But:Design is a fashion-victim. What does that mean? Same as fashion it runs through the standard fashionpsychology cycle of perception which is chronological:

strange - unknown - new - fresh - stylish - wannabuy - must have - more common - even used by standard people - not capable to stand out any more - not stylish - not wearable

The more special the design the quicker the runthrough of the cycle. You may remember the fashion brand ED HARDY ? Explore your feelings about it then and now...

At the moment grey, colourless designs are the trend. Office 2013 and iOS 7 are examples for that. You actually wonder why you are using a color monitor. Please, don´t go there!

IMHO you should not look for any designs at all. Instead make it just a bit more visual and adaptable. This way it will never look outdated. Designwishes are even more userspecific as featurewishs. I know Prefs are already big but what about:

- Definable fonts for Tasks and the subtasks up to Level 5 including Options for Bold and Italic- Definable fonts for attribute columns- Definable fonts for Menu´s- The possibility to display icons instead of text in the attribute columns. Just one example: In the "Occurs" columns you could display icons for daily, weekly, monthly... instead of words. It would also save space!

I would not say TDL is 'ugly'. There are prettier and uglier applications out there. It is however very busy and loud when compared to more recent aesthetics. It is functional though, and when using its substantial capabilities needs to be able to show a lot of information. However, some things I have noticed:

The initial level of detail can put people off - as has been mentioned above. You tend to grow into task planning, often going from simple to complex (and then back to simple again ). It seems only certain types of people actually want / enjoy / can be bothered with extensive task management. So some people I work with use no task management, others use simple systems (e.g. post-its, diaries, google tasks etc), and others again use slightly more able systems, such as Toggl, usually for team or time recording reasons. My point I guess is that the interface may put off those in the first 2 camps, especially if they really only want a simple, non-hierarchical list, with task title and a due date... But then are these people target audience?

Back to the styling. I have also looked at a variety of task managers on Android. They are often quite pretty and minimalist. They are obviously touch based, and don't have the extensive functionality of TDL, but some have some very nice ways of hiding detail unless you want it (e.g. slide out toolbars and menus, information only becoming visible when hovering over or clicking). TDL is a bit inflexible in what and how things are displayed (e.g. it would be great to specify visibility of columns, filter, entry fields separately in user defined 'views', grouping of tasks in task view, ability to hide/slide/pin toolbars easily in the interface rather than by shortcut or menu navigation)

As also mentioned above, the TDL functionality is fantastic and you can do all sorts of things, but sometimes it feels hard / inelegant. It is often just little things, and they are probably really hard to deal with, as everyone works a bit differently. You usually just get used to them. So much so I can't really recall any specific cases..

I would personally like the option for in-place editing, and it is more intuitive for new users IMO. I rarely change multiple items at once, and it means I am looking directly at the row I am editing, rather than looking up and down. But I can see reasons for both, and am used to it.

To summarise, for a propeller head like me, the interface is fine. It has its rough edges, but most things are able to be handled in one way or another. To me, of more value is the functionality. But for people who are after a simple list of task names with due dates/days, the additional functionality is not relevant, and hence the look and ease of use will be of greater importance.

Maybe you can have a parallel release ("the beauty edition") just to see how it goes.

Best regards,Stefan

P.S. Initially I was using the KeyNote Note taking app (not the apple one) until it become discontinued. It was a delphi application, but the use of it came so naturally that I thought it was beautiful. So in my eyes user experience is beauty

I build a Ruby on Rails application which does stats on the completed tasks by parsing the *.done.tdl files. When I can't complete a recurring task and want to skip it, at the moment I can do as follows+ Mark it as completed so it moves to its next occurrence. This would make the stats incorrect.+ OR I can manually move the task to its next occurrence. This is a bit tedious.

So my suggestion is adding a new action called something like "Skip this occurrence" which moves a recurring task to its next occurrence.

.dan.g. wrote: Member 10415191 wrote: Sven Axelsson links are broken, are alternatives available / could that page be updated? Have you looked in the 'Stylesheets' subfolder of the install package.

I had not, not having come across them until after reaching that page.

Which sheet is used by the native html export?

Are there documentation links around regarding how to proceed with stylesheets?

Member 10415191 wrote: Are there preferred Linux / Kubuntu equivalents to the suggested msxsl? No. But I believe this is a freely available redistributable from MS.

Do you happen to know if such works under Wine?

Member 10415191 wrote: What / where do I go to change how the exported html looks? The only way is to play with the stylesheet.

I had assumed svenax.net was a domain long gone, but I now see it's still there - my guess is a change from dupal to wordpress lost that content in the process. Could someone shoot him a note asking for the pbworks links to be updated? I'm guessing his pages probably had some useful explanatory notes for stylesheets on them.

Are there documentation links around regarding how to proceed with stylesheets?

Unfortunately not, it's a case of familiarising yourself with XSL and then experimenting. If you have any specific questions, post them with XSL in the title and someonthis wiki page[^]inux-under-Wine">this wiki page[^] will hopefully assist you here.

Member 10415191 wrote:

Could someone shoot him a note asking for the pbworks links to be updated?