/* Copyright 2010-2012 Grégory Soutadé This file is part of KissCount. KissCount 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 3 of the License, or (at your option) any later version. KissCount 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 KissCount. If not, see . */ #ifndef ACCOUNT_H #define ACCOUNT_H #include struct Account { int id; QString name; QString number; bool shared; bool blocked; bool _default; bool is_owner; bool _virtual; bool hidden; QDate start_date; QDate end_date; bool operator() (const Account& ac1, const Account& ac2) const { if (ac1._default) return true; if (ac2._default) return false; if (!ac1.blocked && ac2.blocked) return true; if (ac1.blocked && !ac2.blocked) return false; if (!ac1._virtual && ac2._virtual) return true; if (ac1._virtual && !ac2._virtual) return false; if (!ac1.hidden && ac2.hidden) return true; if (ac1.hidden && !ac2.hidden) return false; return ac1.name < ac2.name; } bool operator == (int accountId) { return id == accountId; } bool validAt(int day, int month, int year) { QDate targetDate = QDate(year, month+1, day+1); return (targetDate >= start_date && targetDate <= end_date); } bool validAt(int month, int year) { QDate targetDateS = QDate(year, month+1, 01); QDate targetDateE = targetDateS.addMonths(1).addDays(-1); return !(end_date < targetDateS || start_date > targetDateE); } bool validAt(int month_start, int year_start, int month_end, int year_end) { QDate targetDateS = QDate(year_start, month_start+1, 01); QDate targetDateE = QDate(year_end, month_end+1, 01); targetDateE = targetDateE.addMonths(1).addDays(-1); return !(end_date < targetDateS || start_date > targetDateE); } }; #endif