#include "qlopdatabase.h" #include QList* QLopDataBase::m_dataBase=NULL; QLopDataBase* QLopDataBase::_self=NULL; QDockWidget* QLopDataBase::m_gui=NULL; #define INIT() \ if(Q_UNLIKELY(_self==NULL))\ {\ init();\ } QLopDataBase::QLopDataBase(bool noGUI,QObject *parent) : QLopService(parent) { this->m_dataBase = new QList(); m_serviceName="QLopDataBase"; m_noGui=noGUI; } QLopDataBase::~QLopDataBase() { } QDockWidget *QLopDataBase::getGUI() { if(!m_noGui && (m_gui==NULL)) { m_gui=new QLopDataBaseViewer(); m_gui->setFeatures(QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable); } return m_gui; } void QLopDataBase::init(bool noGUI, QObject *parent) { _self=new QLopDataBase(); } const QString &QLopDataBase::serviceName() { INIT(); return m_serviceName; } int QLopDataBase::addData(QLopData *data) { INIT(); if(!m_dataBase->contains(data)) { m_dataBase->append(data); emit QLopDataBase::self()->DBChanged(); return 1; } return 0; } int QLopDataBase::addData(const QLopDataList& data) { INIT(); int addedData=0; for (int i = 0; i < data.count(); i++) { addedData += addData(data.at(i)); } emit QLopDataBase::self()->DBChanged(); return addedData; } int QLopDataBase::removeData(QLopData *data) { INIT(); if(m_dataBase->contains(data)) { m_dataBase->removeAll(data); emit QLopDataBase::self()->DBChanged(); return 1; } return 0; } int QLopDataBase::removeData(const QLopDataList &data) { INIT(); int removedData=0; for (int i = 0; i < data.count(); i++) { removedData += removeData(data.at(i)); } emit QLopDataBase::self()->DBChanged(); return removedData; } QLopDataBase *QLopDataBase::self() { INIT(); return _self; } int QLopDataBase::count() { INIT(); return m_dataBase->count(); } QLopData *QLopDataBase::getData(const QString &name) { INIT(); for (int i = 0; i < m_dataBase->count(); i++) { if(Q_UNLIKELY(m_dataBase->at(i)->name==name)) { return m_dataBase->at(i); } } return NULL; } QLopData *QLopDataBase::getData(int ID) { INIT(); for (int i = 0; i < m_dataBase->count(); i++) { if(Q_UNLIKELY(m_dataBase->at(i)->ID==ID)) { return m_dataBase->at(i); } } return NULL; } QLopData *QLopDataBase::getDataFromIdex(int index) { if((index>=0)&&(indexcount())) return m_dataBase->at(index); else return NULL; }