#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 This is A functions that will init the tags file. * if it exist - do nothing * if there is no file, it will create it and run the deleteData function * so tags will be set. */ void SaveData::init() { QFile file(FILE_NAME); if(!file.exists()) { file.open(QIODevice::ReadWrite | QIODevice::Text); file.close(); deleteData(); } } /** * @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) { 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: ["<