/* 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 KISSCOUNT_H #define KISSCOUNT_H #include #include #include #include #include #include #define APP_VERSION "0.3" #define ESCAPE_CHARS(s) s = s.replace("\"", "\\\""); s = s.replace("\'", "\\\'"); /*{ \ if (s.Find(wxT("\\\"")) == wxNOT_FOUND) \ s.Replace(wxT("\""), wxT("\\\""), true); \ if (s.Find(wxT("\\\'")) == wxNOT_FOUND) \ s.Replace(wxT("\'"), wxT("\\\'"), true); \ } */ #define UNESCAPE_CHARS(s) s = s.replace("\\\"", "\""); s = s.replace("\\\'", "\'"); /*{ \ s.Replace(wxT("\\\""), wxT("\""), true); \ s.Replace(wxT("\\\'"), wxT("\'"), true); \ } */ class wxUI; class Database; class ImportEngine; class ExportEngine; class KissCount : public QApplication { public: KissCount(int argc, char** argv); ~KissCount(); std::list GetUsers(); bool IsValidUser(const QString& user, const QString& password); void LoadUser(const QString& user); User* GetUser(); void ChangePassword(const QString& password); bool UserExists(const QString& name); void ChangeName(const QString& name); void NewUser(const QString& name); void LoadYear(int year, bool force=false); int AddOperation(Operation& op, bool checkTransfert=true); void UpdateOperation(Operation& op, bool checkTransfert=true); void DeleteOperation(Operation& op); void DeleteOperations(int month, int year); double MetaAmount(int id); double MetaPositiveAmount(int id); double GetAccountAmount(int id, int month, int year); void SetAccountAmount(int accountId, int month, int year, double value); double CalcAccountAmount(int id, int month, int year, bool* had_values); int AddAccount(Account& ac); void UpdateAccount(Account& ac); void DeleteAccount(Account& ac, int replacement); void AddSharedAccount(Account& ac, const QString& granted); void RemoveSharedAccount(Account& ac, int granted); std::map getSharedAccountOwners(int account); QString getSharedAccountOwner(int account); int AddCategory(Category& category); void UpdateCategory(Category& category); void DeleteCategory(Category& category, int replacement); std::map > GetAllOperations(); void GenerateMonth(int monthFrom, int yearFrom, int monthTo, int yearTo); void KillMe(); void SetLanguage(QString language); void SetOperationOrder(const QString& order); const QString& GetOperationOrder(); std::vector* Search(QString* description, QDate* dateFrom, QDate* dateTo, double* amountFrom, double* amountTo, std::vector categories, int types, std::vector accounts); bool SearchPreviousOperation(Operation* res, Operation& op, int month, int year, bool limitToType, int index); void GetStats(int monthFrom, int yearFrom, int monthTo, int yearTo, std::map > >* accountAmounts, std::map* categories); void GetMonthStats(int month, int year, int nbDays, std::map >* operations, std::map* categories); void UpdateStats(); std::map* GetNotChecked(int month, int year); std::map* GetVirtualAmount(int month, int year); static QFont ExtractFont(QString); static QString CompactFont(const QFont& font); static void RegisterImportEngine(ImportEngine* engine); static void UnRegisterImportEngine(ImportEngine* engine); QString GetImportEngineExtensions(); ImportEngine* GetImportEngine(QString path); static void RegisterExportEngine(ExportEngine* engine); static void UnRegisterExportEngine(ExportEngine* engine); QString GetExportEngineExtensions(); ExportEngine* GetExportEngine(QString path, QString filter); void UpdateImportPattern(); void GetHistory(int month, int year, QStringList& list); bool ChangeDatabase(QString filename); QLocale* GetLocale(); QString GetDateFormat(); QString FormatDate(int day, int month, int year); private: wxUI* _wxUI; Database* _db; User* _user; static std::vector *GetImportEngines(); static std::vector *GetExportEngines(); static std::vector *_importEngines; static std::vector *_exportEngines; }; #endif