diff --git a/silentdragon-lite.pro b/silentdragon-lite.pro index 5e32f1e..c09eea7 100644 --- a/silentdragon-lite.pro +++ b/silentdragon-lite.pro @@ -71,7 +71,10 @@ SOURCES += \ src/chatbubbleme.cpp \ src/chatbubblepartner.cpp \ src/chatmodel.cpp \ - src/contactmodel.cpp + src/contactmodel.cpp \ + src/DataStore/DataStore.cpp \ + src/DataStore/ChatDataStore.cpp \ + src/DataStore/SietchDataStore.cpp HEADERS += \ src/firsttimewizard.h \ diff --git a/src/DataStore/ChatDataStore.cpp b/src/DataStore/ChatDataStore.cpp new file mode 100644 index 0000000..d3a79e4 --- /dev/null +++ b/src/DataStore/ChatDataStore.cpp @@ -0,0 +1,42 @@ +#include "ChatDataStore.h" + +ChatDataStore* ChatDataStore::getInstance() +{ + if(!ChatDataStore::instanced) + { + ChatDataStore::instanced = true; + ChatDataStore::instance = new ChatDataStore(); + } + + return ChatDataStore::instance; +} + +void ChatDataStore::clear() +{ + this->data.clear(); +} + + +void ChatDataStore::setData(QString key, ChatItem value) +{ + this->data[key] = value; +} + +ChatItem ChatDataStore::getData(QString key) +{ + return this->data[key]; +} + +QString ChatDataStore::dump() +{ + return ""; +} + +std::map ChatDataStore::getAllRawChatItems() +{ + return this->data; +} + + +ChatDataStore* ChatDataStore::instance = nullptr; +bool ChatDataStore::instanced = false; \ No newline at end of file diff --git a/src/DataStore/ChatDataStore.h b/src/DataStore/ChatDataStore.h index 82651fd..85fd4b9 100644 --- a/src/DataStore/ChatDataStore.h +++ b/src/DataStore/ChatDataStore.h @@ -1,6 +1,6 @@ #ifndef CHATDATASTORE_H #define CHATDATASTORE_H - +#include "../chatmodel.h" using json = nlohmann::json; class ChatDataStore @@ -15,20 +15,11 @@ class ChatDataStore } public: - static ChatDataStore* getInstance() - { - if(!ChatDataStore::instanced) - { - ChatDataStore::instanced = true; - ChatDataStore::instance = new ChatDataStore(); - } - - return ChatDataStore::instance; - } - + static ChatDataStore* getInstance(); void clear(); void setData(QString key, ChatItem value); ChatItem getData(QString key); + std::map getAllRawChatItems(); QString dump(); ~ChatDataStore() @@ -38,28 +29,6 @@ class ChatDataStore } }; -void ChatDataStore::clear() -{ - this->data.clear(); -} -void ChatDataStore::setData(QString key, ChatItem value) -{ - this->data[key] = value; -} - -ChatItem ChatDataStore::getData(QString key) -{ - return this->data[key]; -} - -QString ChatDataStore::dump() -{ - return ""; -} - -ChatDataStore* ChatDataStore::instance = nullptr; -bool ChatDataStore::instanced = false; - #endif \ No newline at end of file diff --git a/src/DataStore/DataStore.cpp b/src/DataStore/DataStore.cpp new file mode 100644 index 0000000..d16c255 --- /dev/null +++ b/src/DataStore/DataStore.cpp @@ -0,0 +1,11 @@ +#include "DataStore.h" + +SietchDataStore* DataStore::getSietchDataStore() +{ + return SietchDataStore::getInstance(); +} + +ChatDataStore* DataStore::getChatDataStore() +{ + return ChatDataStore::getInstance(); +} \ No newline at end of file diff --git a/src/DataStore/DataStore.h b/src/DataStore/DataStore.h index 6c006b0..6715c02 100644 --- a/src/DataStore/DataStore.h +++ b/src/DataStore/DataStore.h @@ -11,14 +11,4 @@ class DataStore static ChatDataStore* getChatDataStore(); }; -SietchDataStore* DataStore::getSietchDataStore() -{ - return SietchDataStore::getInstance(); -} - -ChatDataStore* DataStore::getChatDataStore() -{ - return ChatDataStore::getInstance(); -} - #endif \ No newline at end of file diff --git a/src/DataStore/SietchDataStore.cpp b/src/DataStore/SietchDataStore.cpp new file mode 100644 index 0000000..140ab3f --- /dev/null +++ b/src/DataStore/SietchDataStore.cpp @@ -0,0 +1,35 @@ +#include "SietchDataStore.h" + +SietchDataStore* SietchDataStore::getInstance() +{ + if(!SietchDataStore::instanced) + { + SietchDataStore::instanced = true; + SietchDataStore::instance = new SietchDataStore(); + } + + return SietchDataStore::instance; +} + +void SietchDataStore::clear() +{ + this->data.clear(); +} + +void SietchDataStore::setData(QString key, QString value) +{ + this->data[key] = value; +} + +QString SietchDataStore::getData(QString key) +{ + return this->data[key]; +} + +QString SietchDataStore::dump() +{ + return ""; +} + +SietchDataStore* SietchDataStore::instance = nullptr; +bool SietchDataStore::instanced = false; \ No newline at end of file diff --git a/src/DataStore/SietchDataStore.h b/src/DataStore/SietchDataStore.h index c94c76f..5b5b498 100644 --- a/src/DataStore/SietchDataStore.h +++ b/src/DataStore/SietchDataStore.h @@ -15,17 +15,7 @@ class SietchDataStore } public: - static SietchDataStore* getInstance() - { - if(!SietchDataStore::instanced) - { - SietchDataStore::instanced = true; - SietchDataStore::instance = new SietchDataStore(); - } - - return SietchDataStore::instance; - } - + static SietchDataStore* getInstance(); void clear(); void setData(QString key, QString value); QString getData(QString key); @@ -38,27 +28,4 @@ class SietchDataStore } }; -void SietchDataStore::clear() -{ - this->data.clear(); -} - -void SietchDataStore::setData(QString key, QString value) -{ - this->data[key] = value; -} - -QString SietchDataStore::getData(QString key) -{ - return this->data[key]; -} - -QString SietchDataStore::dump() -{ - return ""; -} - -SietchDataStore* SietchDataStore::instance = nullptr; -bool SietchDataStore::instanced = false; - #endif \ No newline at end of file diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp index 98bb0f8..078a56f 100644 --- a/src/chatmodel.cpp +++ b/src/chatmodel.cpp @@ -13,6 +13,7 @@ #include "addressbook.h" #include #include +#include "DataStore/DataStore.h" using namespace std; @@ -109,7 +110,7 @@ void ChatModel::renderChatBox(Ui::MainWindow* ui, QListView *view) // ui->lcdNumber->setPalette(Qt::red); // ui->lcdNumber->display("1"); - for (auto &c : this->chatItems) + for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems())//this->chatItems) for (auto &p : AddressBook::getInstance()->getAllAddressLabels()) { //////Render only Memos for selected contacts. Do not render empty Memos //// Render only memos where cid=cid @@ -159,7 +160,7 @@ void ChatModel::renderContactRequest(){ QStandardItemModel* contactRequest = new QStandardItemModel(); - for (auto &c : this->chatItems) + for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems())//this->chatItems) { if ((c.second.getType() == "cont") && (c.second.isOutgoing() == false) && (c.second.getMemo().startsWith("{"))) { @@ -187,7 +188,7 @@ void ChatModel::renderContactRequest(){ QObject::connect(requestContact.requestContact, &QTableView::clicked, [&] () { - for (auto &c : this->chatItems){ + for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems()){//this->chatItems){ QModelIndex index = requestContact.requestContact->currentIndex(); QString label_contact = index.data(Qt::DisplayRole).toString(); QStandardItemModel* contactMemo = new QStandardItemModel(); diff --git a/src/chatmodel.h b/src/chatmodel.h index 945c27c..984ce56 100644 --- a/src/chatmodel.h +++ b/src/chatmodel.h @@ -13,8 +13,6 @@ #include "settings.h" #include "camount.h" - - class ListViewDelegate : public QAbstractItemDelegate { int d_radius; diff --git a/src/controller.cpp b/src/controller.cpp index ac6b603..b34d519 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -887,7 +887,8 @@ void Controller::refreshTransactions() { txid, true // is an outgoing message ); - chatModel->addMessage(item); + DataStore::getChatDataStore()->setData(chatModel->generateChatItemID(item), item); + //chatModel->addMessage(item); } @@ -992,8 +993,8 @@ void Controller::refreshTransactions() { txid, false ); - - chatModel->addMessage(item); + DataStore::getChatDataStore()->setData(chatModel->generateChatItemID(item), item); + //chatModel->addMessage(item); } } diff --git a/src/controller.h b/src/controller.h index bc56587..9977427 100644 --- a/src/controller.h +++ b/src/controller.h @@ -13,7 +13,6 @@ #include "connection.h" #include "chatmodel.h" #include "contactmodel.h" - using json = nlohmann::json; struct WatchedTx {