Feature
- New 'modified' attribute, which contains the most recent modification date, if a modification has occurred.
This commit is contained in:
@@ -577,6 +577,9 @@ void TDB2::modify (Task& task)
|
||||
// Ensure the task is consistent, and provide defaults if necessary.
|
||||
task.validate (false);
|
||||
|
||||
// All modified tasks are timestamped.
|
||||
task.setModified ();
|
||||
|
||||
// Find task, overwrite it.
|
||||
Task original;
|
||||
get (task.get ("uuid"), original);
|
||||
|
||||
@@ -218,6 +218,14 @@ void Task::setStart ()
|
||||
recalc_urgency = true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Task::setModified ()
|
||||
{
|
||||
char now[16];
|
||||
sprintf (now, "%u", (unsigned int) time (NULL));
|
||||
set ("modified", now);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Task::has (const std::string& name) const
|
||||
{
|
||||
|
||||
@@ -69,6 +69,7 @@ public:
|
||||
void setEntry ();
|
||||
void setEnd ();
|
||||
void setStart ();
|
||||
void setModified ();
|
||||
|
||||
bool has (const std::string&) const;
|
||||
std::vector <std::string> all ();
|
||||
|
||||
@@ -15,6 +15,7 @@ set (columns_SRCS Column.cpp Column.h
|
||||
ColID.cpp ColID.h
|
||||
ColIMask.cpp ColIMask.h
|
||||
ColMask.cpp ColMask.h
|
||||
ColModified.cpp ColModified.h
|
||||
ColParent.cpp ColParent.h
|
||||
ColPriority.cpp ColPriority.h
|
||||
ColProject.cpp ColProject.h
|
||||
|
||||
51
src/columns/ColModified.cpp
Normal file
51
src/columns/ColModified.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// taskwarrior - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006-2012, Paul Beckingham, Federico Hernandez.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
// http://www.opensource.org/licenses/mit-license.php
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define L10N // Localization complete.
|
||||
|
||||
#include <ColModified.h>
|
||||
#include <i18n.h>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
ColumnModified::ColumnModified ()
|
||||
{
|
||||
_name = "modified";
|
||||
_label = STRING_COLUMN_LABEL_MOD;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
ColumnModified::~ColumnModified ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool ColumnModified::validate (std::string& value)
|
||||
{
|
||||
return ColumnDate::validate (value);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
44
src/columns/ColModified.h
Normal file
44
src/columns/ColModified.h
Normal file
@@ -0,0 +1,44 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// taskwarrior - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006-2012, Paul Beckingham, Federico Hernandez.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
// http://www.opensource.org/licenses/mit-license.php
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef INCLUDED_COLMODIFIED
|
||||
#define INCLUDED_COLMODIFIED
|
||||
#define L10N // Localization complete.
|
||||
|
||||
#include <ColDate.h>
|
||||
|
||||
class ColumnModified : public ColumnDate
|
||||
{
|
||||
public:
|
||||
ColumnModified ();
|
||||
~ColumnModified ();
|
||||
|
||||
bool validate (std::string&);
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <ColID.h>
|
||||
#include <ColIMask.h>
|
||||
#include <ColMask.h>
|
||||
#include <ColModified.h>
|
||||
#include <ColParent.h>
|
||||
#include <ColPriority.h>
|
||||
#include <ColProject.h>
|
||||
@@ -87,6 +88,7 @@ Column* Column::factory (const std::string& name, const std::string& report)
|
||||
else if (column_name == "id") c = new ColumnID ();
|
||||
else if (column_name == "imask") c = new ColumnIMask ();
|
||||
else if (column_name == "mask") c = new ColumnMask ();
|
||||
else if (column_name == "modified") c = new ColumnModified ();
|
||||
else if (column_name == "parent") c = new ColumnParent ();
|
||||
else if (column_name == "priority") c = new ColumnPriority ();
|
||||
else if (column_name == "project") c = new ColumnProject ();
|
||||
@@ -129,6 +131,7 @@ void Column::factory (std::map <std::string, Column*>& all)
|
||||
c = new ColumnID (); all[c->_name] = c;
|
||||
c = new ColumnIMask (); all[c->_name] = c;
|
||||
c = new ColumnMask (); all[c->_name] = c;
|
||||
c = new ColumnModified (); all[c->_name] = c;
|
||||
c = new ColumnParent (); all[c->_name] = c;
|
||||
c = new ColumnPriority (); all[c->_name] = c;
|
||||
c = new ColumnProject (); all[c->_name] = c;
|
||||
|
||||
@@ -305,6 +305,19 @@ int CmdInfo::execute (std::string& output)
|
||||
view.set (row, 0, STRING_COLUMN_LABEL_URGENCY);
|
||||
view.set (row, 1, trimLeft (format (task->urgency (), 4, 4)));
|
||||
|
||||
// modified
|
||||
if (task->has ("modified"))
|
||||
{
|
||||
row = view.addRow ();
|
||||
view.set (row, 0, STRING_CMD_INFO_MODIFIED);
|
||||
|
||||
Date mod (task->get_date ("modified"));
|
||||
|
||||
std::string age = Duration (now - mod).format ();
|
||||
view.set (row, 1, Date (task->get_date ("modified")).toString (dateformat) +
|
||||
" (" + age + ")");
|
||||
}
|
||||
|
||||
// Show any UDAs
|
||||
std::vector <std::string> all = task->all ();
|
||||
std::vector <std::string>::iterator att;
|
||||
|
||||
@@ -141,6 +141,7 @@
|
||||
#define STRING_COLUMN_LABEL_ENTERED "Entered"
|
||||
#define STRING_COLUMN_LABEL_COUNT "Count"
|
||||
#define STRING_COLUMN_LABEL_COMPLETE "Completed"
|
||||
#define STRING_COLUMN_LABEL_MOD "Modified"
|
||||
#define STRING_COLUMN_LABEL_ADDED "Added"
|
||||
#define STRING_COLUMN_LABEL_AGE "Age"
|
||||
#define STRING_COLUMN_LABEL_ID "ID"
|
||||
@@ -236,6 +237,7 @@
|
||||
#define STRING_CMD_INFO_UNTIL "Until"
|
||||
#define STRING_CMD_INFO_MODIFICATION "Modification"
|
||||
#define STRING_CMD_INFO_TOTAL_ACTIVE "Total active time"
|
||||
#define STRING_CMD_INFO_MODIFIED "Last modified"
|
||||
#define STRING_CMD_UNDO_USAGE "Reverts the most recent change to a task"
|
||||
#define STRING_CMD_UNDO_MODS "The undo command does not allow further task modification."
|
||||
#define STRING_CMD_STATS_USAGE "Shows task database statistics"
|
||||
|
||||
Reference in New Issue
Block a user