From 1a3747956a85c29ada1996531f481dff178824f3 Mon Sep 17 00:00:00 2001 From: Sagi Dayan Date: Sun, 31 Aug 2014 21:39:43 +0300 Subject: [PATCH] New way of saving data not yet checked due to compiling errors coming from Liran's changes in Page.h pls, let me know if you fixed it. so i can run some tests! --- src/appDatabase/savedata.cpp | 324 ++++++++++------------------------- src/appDatabase/savedata.h | 30 ++-- 2 files changed, 101 insertions(+), 253 deletions(-) diff --git a/src/appDatabase/savedata.cpp b/src/appDatabase/savedata.cpp index f8f8960..0f1dbfd 100644 --- a/src/appDatabase/savedata.cpp +++ b/src/appDatabase/savedata.cpp @@ -1,144 +1,5 @@ #include "savedata.h" - - -/** - * @brief Checks the status tag in the file - * @return boolean the status - */ -bool SaveData::isSaved() -{ - QString status; - QFile* file = new QFile(FILE_NAME); - /* Opening file for read */ - if(file->open(QIODevice::ReadOnly|QIODevice::Text)) - { - status = getValViaTag("status", file); - if(status == "true") - { - file->close(); //close & return - return true; - } - return false; //close & return - file->close(); - } - /* If Faild to open */ - std::cout << "Faild To Accsess file: " << FILE_NAME << std::endl; - return false; -} - - -/** - * @brief This Function will modify the file, and save the data. - * @param username - QString - * @param password - QString - * @return true if saved - false if error - */ -bool SaveData::save(QString username, QString password) -{ - std::cout << "Trying to save data..." << std::endl; - QFile file(FILE_NAME); - if(!file.open(QIODevice::WriteOnly|QIODevice::Text)) - return false; /* IO Error! */ - QTextStream output(&file); - QString hash_pass = hashPassword(password); - output << "[status]true[/]\n[username]"<open(QIODevice::ReadOnly|QIODevice::Text)) - username = getValViaTag("username", file); - file->close(); - return username; - -} - -/** - * @brief getter for password - * @return QString - password - */ -QString SaveData::getPassword() -{ - QString pass = ""; - QFile* file = new QFile(FILE_NAME); - /* Opening file for read */ - if(file->open(QIODevice::ReadOnly|QIODevice::Text)) - pass = getValViaTag("password", file); - file->close(); - pass = deHashPasword(pass); - return pass; - -} - -/** - * @brief Getiing the last calendar user hase been viewing. - * @return QString - cal - in format [year]-[semester] - */ -QString SaveData::gatCal() -{ - QString cal = ""; - QFile* file = new QFile(FILE_NAME); - /* Opening file for read */ - if(file->open(QIODevice::ReadOnly|QIODevice::Text)) - cal = getValViaTag("cal", file); - file->close(); - return cal; -} - -/** - * @brief Getiing the users local - default is the OS local - * @return QString - local (heb/en/default) - */ -QString SaveData::getLocal() -{ - QString local = ""; - QFile* file = new QFile(FILE_NAME); - /* Opening file for read */ - if(file->open(QIODevice::ReadOnly|QIODevice::Text)) - local = getValViaTag("local", file); - file->close(); - return local; -} - /** * @brief This is A functions that will init the tags file. * if it exist - do nothing @@ -152,107 +13,96 @@ void SaveData::init() { file.open(QIODevice::ReadWrite | QIODevice::Text); file.close(); - deleteData(); + createDB(); + save(); } + else + load(); } -/** - * @brief This function will return the vale of a given tag name. - * NOTE: valid tag names are : "status", "username", "password" - * if tag is invalid - will return "" - an empty QString! - * @param tag - QString, the tag name - * @param file - a QFile pointer - * @return QString - the value in tag - * NOTE: if NULL value, or an invalid tag name -> return "" (empty QString!) - */ -QString SaveData::getValViaTag(QString tag, QFile* file) +bool SaveData::isSaved() { - QString val, line , tmpTag; - QTextStream textStream( file); - while((line = textStream.readLine()) != NULL) - { - std::cout << "DEBUG: line => " << line.toStdString() << std::endl; - for(int i = 0 ; i< line.length() ;++i) - { - if(line[i] == '[' && line[i+1] != '/') //get open tag at begining of line and not end of tag ("[/") - { - i++; - tmpTag = line.mid(i, tag.length()); - if(tmpTag == tag) - { - i+= tag.length()+1; // i is now right after '[' - int j = i; - while(line[j] != '[')// put j at the end of the value - j++; - /* Then... the value is :*/ - val = line.mid(i, j-i); - std::cout << "DEBUG: ["<> DB; + file.close(); +} + +void SaveData::save() +{ + QFile file(FILE_NAME); + file.open(QIODevice::WriteOnly); + QDataStream out(&file); + out << DB; + file.flush(); + file.close(); +} + +void SaveData::createDB() +{ + DB.insert("username", ""); + DB.insert("password", ""); + DB.insert("local", "default"); + DB.insert("calendar", ""); } diff --git a/src/appDatabase/savedata.h b/src/appDatabase/savedata.h index 98235c2..df1d7c4 100644 --- a/src/appDatabase/savedata.h +++ b/src/appDatabase/savedata.h @@ -27,33 +27,31 @@ #include #include #include - -/* C/C++ libs */ -#include -#include -#include +#include +#include #define FILE_NAME "JAC_DB.dat" -#define DEFAULT_DATA_EMPTY "[status]false[/]\n[username][/]\n[password][/]" class SaveData { public: + void static init(); bool static isSaved(); - bool static save(QString username, QString password); - bool static saveCal(QString cal); - bool static saveLocal(QString local); - bool static deleteData(); + bool static reset(); + QString static setUsername(QString username); + QString static setPassword(QString password); + QString static setCal(QString cal); + QString static setLocal(QString local); QString static getUsername(); QString static getPassword(); - QString static gatCal(); + QString static getCal(); QString static getLocal(); - void static init(); + private: - QString static getValViaTag(QString tag, QFile *file); - QString static hashPassword(QString pass); - QString static deHashPasword(QString pass); - bool static isTagLine(QString line, QString tag); + QMap DB; + void static load(); + void static save(); + void static createDB(); }; #endif // SAVEDATA_H