diff --git a/src/Makefile.am b/src/Makefile.am index d3e6bd4d3..8a47a7985 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,10 +2,10 @@ bin_PROGRAMS = task task_SOURCES = Att.cpp Cmd.cpp Config.cpp Context.cpp Date.cpp Duration.cpp \ Filter.cpp Grid.cpp Keymap.cpp Location.cpp Nibbler.cpp \ Record.cpp Sequence.cpp StringTable.cpp Subst.cpp Task.cpp \ - TDB.cpp Table.cpp Timer.cpp color.cpp command.cpp edit.cpp \ - import.cpp interactive.cpp valid.cpp recur.cpp report.cpp \ - custom.cpp rules.cpp main.cpp text.cpp util.cpp \ + TDB.cpp Table.cpp Timer.cpp Permission.cpp color.cpp edit.cpp \ + command.cpp import.cpp interactive.cpp valid.cpp recur.cpp \ + report.cpp custom.cpp rules.cpp main.cpp text.cpp util.cpp \ Att.h Cmd.h Config.h Context.h Date.h Duration.h Filter.h \ Grid.h Keymap.h Location.h Nibbler.h Record.h Sequence.h \ - StringTable.h Subst.h Task.h TDB.h Table.h Timer.h color.h \ - i18n.h main.h text.h util.h + StringTable.h Subst.h Task.h TDB.h Table.h Timer.h \ + Permission.h color.h i18n.h main.h text.h util.h diff --git a/src/Permission.cpp b/src/Permission.cpp new file mode 100644 index 000000000..b8d5dcf8c --- /dev/null +++ b/src/Permission.cpp @@ -0,0 +1,58 @@ +//////////////////////////////////////////////////////////////////////////////// +// task - a command line task list manager. +// +// Copyright 2006 - 2009, 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 +// +//////////////////////////////////////////////////////////////////////////////// + +#include "Permission.h" +#include "util.h" +#include "i18n.h" + +//////////////////////////////////////////////////////////////////////////////// +Permission::Permission () +: needConfirmation (false) +, allConfirmed (false) +{ +} + +//////////////////////////////////////////////////////////////////////////////// +bool Permission::confirmed (const std::string& question) +{ + if (!needConfirmation) + return true; + + if (allConfirmed) + return true; + + int answer = confirm3 (question); + if (answer == 2) + allConfirmed = true; + + if (answer > 0) + return true; + + return false; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/Permission.h b/src/Permission.h new file mode 100644 index 000000000..ef7ce024c --- /dev/null +++ b/src/Permission.h @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +// task - a command line task list manager. +// +// Copyright 2006 - 2009, 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 +// +//////////////////////////////////////////////////////////////////////////////// +#ifndef INCLUDED_PERMISSION +#define INCLUDED_PERMISSION + +#include + +class Permission +{ +public: + Permission (); + Permission (const Permission&); + Permission& operator= (const Permission&); + + void bigChange () { needConfirmation = true; } + void bigSequence () { needConfirmation = true; } + bool confirmed (const std::string&); + +private: + bool needConfirmation; + bool allConfirmed; +}; + +#endif +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/tests/Makefile b/src/tests/Makefile index f6476bb0c..efeea7499 100644 --- a/src/tests/Makefile +++ b/src/tests/Makefile @@ -8,7 +8,7 @@ OBJECTS = ../TDB.o ../Task.o ../valid.o ../text.o ../Date.o ../Table.o \ ../Record.o ../StringTable.o ../Subst.o ../Nibbler.o ../Location.o \ ../Filter.o ../Context.o ../Keymap.o ../command.o ../interactive.o \ ../report.o ../Grid.o ../color.o ../rules.o ../recur.o ../custom.o \ - ../import.o ../edit.o ../Timer.o + ../import.o ../edit.o ../Timer.o ../Permission.o all: $(PROJECT)