From 982ae87ec001ff9b70d55f434ac480171295d881 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 7 Aug 2010 23:55:14 -0400 Subject: [PATCH] New Unused Code - Added the outlines of the new Column code. This is not compiled in 1.9.3, but will be in 1.9.4. --- src/Column.cpp | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ src/Column.h | 66 ++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 src/Column.cpp create mode 100644 src/Column.h diff --git a/src/Column.cpp b/src/Column.cpp new file mode 100644 index 000000000..9b8163381 --- /dev/null +++ b/src/Column.cpp @@ -0,0 +1,102 @@ +//////////////////////////////////////////////////////////////////////////////// +// task - a command line task list manager. +// +// Copyright 2006 - 2010, Paul Beckingham, Federico Hernandez. +// 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 +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include + +extern Context context; + +//////////////////////////////////////////////////////////////////////////////// +static Column* Column::factory (const std::string& name) +{ + if (name == "description") return new ColumnDescription (); + + throw std::string ("Unrecognized column type '") + name + "'"; + return NULL; +} + +//////////////////////////////////////////////////////////////////////////////// +Column::Column () +: _name ("") +, _minimum (0) +, _maximum (0) +, _wrap (false) +, _just (left) +, _sizing (minimal) +{ +} + +//////////////////////////////////////////////////////////////////////////////// +Column::Column (const Column& other) +{ + _name = other._name; + _minimum = other._minimum; + _maximum = other._maximum; + _wrap = other._wrap; + _just = other._just; + _sizing = other._sizing; +} + +//////////////////////////////////////////////////////////////////////////////// +Column& Column::operator= (const Column& other) +{ + if (this != &other) + { + _name = other._name; + _minimum = other._minimum; + _maximum = other._maximum; + _wrap = other._wrap; + _just = other._just; + _sizing = other._sizing; + } + + return *this; +} + +//////////////////////////////////////////////////////////////////////////////// +bool Column::operator== (const Column& other) const +{ + return _name == other._name && + _minimum == other._minimum && + _maximum == other._maximum && + _wrap == other._wrap && + _just == other._just && + _sizing == other._sizing; +} + +//////////////////////////////////////////////////////////////////////////////// +Column::~Column () +{ +} + +//////////////////////////////////////////////////////////////////////////////// +void Column::setName (const std::string& name) +{ + _name = name; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/Column.h b/src/Column.h new file mode 100644 index 000000000..7c1ffd1fd --- /dev/null +++ b/src/Column.h @@ -0,0 +1,66 @@ +//////////////////////////////////////////////////////////////////////////////// +// task - a command line task list manager. +// +// Copyright 2006 - 2010, Paul Beckingham, Federico Hernandez. +// 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 +// +//////////////////////////////////////////////////////////////////////////////// +#ifndef INCLUDED_COLUMN +#define INCLUDED_COLUMN + +#include + +class Column +{ +public: + enum just {right = 0, left, center}; + enum sizing {minimal = 0, fixed, proportional, maximal}; + + static Column* factory (const std::string&); + + Column (); + Column (const Column&); + Column& operator= (const Column&); + bool operator== (const Column&) const; // TODO Is this necessary? + ~Column (); + + void setName (const std::string&); + std::string render (Task*, int, int, const std::string style = "default"); + std::string type () const; + +private: + std::string _name; + int _minimum; + int _maximum; + bool _wrap; + just _just; + sizing _sizing; +}; + +class ColumnDescription : public Column +{ +public: +private: +}; + +#endif +////////////////////////////////////////////////////////////////////////////////