diff --git a/ChangeLog b/ChangeLog index bc1c0792d..7cf80f9f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,8 @@ + The 'entry', 'start' and 'end' columns now have equivalents that include the time, and are called 'entry_time', 'start_time', and 'end_time', for use in custom reports. + + The new 'priority_long' field can be shown in custom reports, and will + display 'High' rather than the abbreviated 'H'. + Added feature #307 that provides vim with syntax highlighting for .taskrc. + Task now support .taskrc command line overrides using rc.name:value and the new rc.name=value to accommodate a frequent mistake. diff --git a/src/Config.cpp b/src/Config.cpp index aa9b55777..f871ba89a 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -181,9 +181,10 @@ void Config::createDefaultRC (const std::string& rc, const std::string& data) << "\n" << "alias.rm=delete\n" << "\n" - << "# Fields: id,uuid,project,priority,entry,entry_time,start,entry_time,due,\n" - << "# recur,recurrence_indicator,age,age_compact,active,tags,tag_indicator,\n" - << "# description,description_only,end,end_time\n" + << "# Fields: id,uuid,project,priority,priority_long,entry,entry_time,\n" + << "# start,entry_time,due,recur,recurrence_indicator,age,\n" + << "# age_compact,active,tags,tag_indicator,description,\n" + << "# description_only,end,end_time\n" << "# Description: This report is ...\n" << "# Sort: due+,priority-,project+\n" << "# Filter: pro:x pri:H +bug limit:10\n" diff --git a/src/custom.cpp b/src/custom.cpp index 4b044309c..89a0bc66b 100644 --- a/src/custom.cpp +++ b/src/custom.cpp @@ -218,6 +218,26 @@ int runCustomReport ( table.addCell (row++, columnCount, task->get ("priority")); } + else if (*col == "priority_long") + { + table.addColumn (columnLabels[*col] != "" ? columnLabels[*col] : "Pri"); + table.setColumnWidth (columnCount, Table::minimum); + table.setColumnJustification (columnCount, Table::left); + + int row = 0; + std::string pri; + foreach (task, tasks) + { + pri = task->get ("priority"); + + if (pri == "H") pri = "High"; // TODO i18n + else if (pri == "M") pri = "Medium"; // TODO i18n + else if (pri == "L") pri = "Low"; // TODO i18n + + table.addCell (row++, columnCount, pri); + } + } + else if (*col == "entry") { table.addColumn (columnLabels[*col] != "" ? columnLabels[*col] : "Added"); @@ -632,6 +652,7 @@ void validReportColumns (const std::vector & columns) *it != "uuid" && *it != "project" && *it != "priority" && + *it != "priority_long" && *it != "entry" && *it != "entry_time" && *it != "start" && diff --git a/src/tests/custom.priority_long.t b/src/tests/custom.priority_long.t new file mode 100755 index 000000000..38fd097a6 --- /dev/null +++ b/src/tests/custom.priority_long.t @@ -0,0 +1,72 @@ +#! /usr/bin/perl +################################################################################ +## task - a command line task list manager. +## +## Copyright 2006 - 2010, Paul Beckingham. +## All rights reserved. +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 2 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +## FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, write to the +## +## Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, +## Boston, MA +## 02110-1301 +## USA +## +################################################################################ + +use strict; +use warnings; +use Test::More tests => 10; + +# Create the rc file. +if (open my $fh, '>', 'pri.rc') +{ + print $fh "data.location=.\n", + "report.foo.description=DESC\n", + "report.foo.columns=id,priority_long\n", + "report.foo.labels=ID,P\n", + "report.foo.sort=id+\n"; + close $fh; + ok (-r 'pri.rc', 'Created pri.rc'); +} + +# Generate the usage screen, and locate the custom report on it. +qx{../task rc:pri.rc add one pri:H}; +qx{../task rc:pri.rc add two pri:M}; +qx{../task rc:pri.rc add three pri:L}; +qx{../task rc:pri.rc add four pri:}; + +my $output = qx{../task rc:pri.rc foo 2>&1}; +like ($output, qr/ID P/, 'priority_long indicator heading'); +like ($output, qr/1\s+High/, 'priority_long High'); +like ($output, qr/2\s+Medium/, 'priority_long Medium'); +like ($output, qr/3\s+Low/, 'priority_long Low'); +like ($output, qr/4\s*\n/, 'priority_long None'); + +# Cleanup. +unlink 'pending.data'; +ok (!-r 'pending.data', 'Removed pending.data'); + +unlink 'completed.data'; +ok (!-r 'completed.data', 'Removed completed.data'); + +unlink 'undo.data'; +ok (!-r 'undo.data', 'Removed undo.data'); + +unlink 'pri.rc'; +ok (!-r 'pri.rc', 'Removed pri.rc'); + +exit 0; +