#include "contractlistmodel.h"
+#include <fres_contract.h>
+#include <QByteArray>
-ContractListModel::ContractListModel(QObject *parent, forb_orb aorb) :
- QAbstractListModel(parent), list()
+ContractListModel::ContractListModel(QObject *parent) :
+ QAbstractListModel(parent), contracts(0)
{
- update();
}
int ContractListModel::rowCount(const QModelIndex &parent) const
{
- return list.count();
+ if (contracts && !parent.isValid())
+ return contracts->_length;
+ else
+ return 0;
}
QVariant ContractListModel::data(const QModelIndex &index, int role) const
{
- switch (role) {
- case Qt::DisplayRole:
- return QVariant(list.at(index.row()));
+ if (index.isValid() && contracts) {
+ switch (role) {
+ case Qt::DisplayRole: {
+ QByteArray buf(100, 0);
+ struct fres_contract *c;
+ c = contracts->_buffer[index.row()];
+ fres_contract_id_to_string(buf.data(), &c->id, buf.size());
+ return QVariant(buf);
+ }
+ }
}
return QVariant();
}
-int ContractListModel::update()
+int ContractListModel::update(fres_resource_manager frm)
{
- list.clear();
- for (int i=0; i<10; i++) {
- list.append(QString("%1").arg(rand()));
+ CORBA_Environment ev;
+ CORBA_long utilization;
+ if (frm) {
+ fres_resource_manager_get_contracts(frm, &contracts, &utilization, &ev);
+ reset();
+ //TODO: Release old contracts from memory
}
- reset();
+ return 0;
}
Qt::ItemFlags ContractListModel::flags(const QModelIndex &index) const
#include <QAbstractListModel>
#include <forb.h>
#include <QStringList>
+#include <frm.h>
class ContractListModel : public QAbstractListModel
{
public:
- ContractListModel(QObject *parent, forb_orb aorb);
+ ContractListModel(QObject *parent);
int rowCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
- int update();
+ int update(fres_resource_manager frm);
private:
forb_orb orb;
- QStringList list;
+ fres_contract_ptr_seq *contracts;
};
#endif // CONTRACTLISTMODEL_H
using namespace std;
Dialog::Dialog(QWidget *parent)
- : QDialog(parent), ui(new Ui::DialogClass)
+ : QDialog(parent), ui(new Ui::DialogClass), frm(0)
{
ui->setupUi(this);
orb = forb_init(0, NULL, NULL);
resourcesModel = new ResourceListModel(this, orb);
- contractsModel = new ContractListModel(this, orb);
+ contractsModel = new ContractListModel(this);
ui->resources->setModel(resourcesModel);
ui->contracts->setModel(contractsModel);
void Dialog::updateData()
{
resourcesModel->update();
- contractsModel->update();
+ contractsModel->update(frm);
+}
+
+void Dialog::on_resources_currentIndexChanged(int index)
+{
+ frm = (fres_resource_manager)resourcesModel->data(resourcesModel->index(index,0), ObjRefRole).value<void*>();
+ contractsModel->update(frm);
}
#include <QTimer>
#include <QModelIndex>
#include <forb.h>
+#include <frm.h>
#include "contractlistmodel.h"
#include "resourcelistmodel.h"
ContractListModel *contractsModel;
QTimer *timer;
ContractListModel *contracts;
+ fres_resource_manager frm;
private slots:
+ void on_resources_currentIndexChanged(int index);
void on_contracts_clicked(QModelIndex index);
void updateData();
};
INCLUDEPATH += /home/wsh/frescor/src/omk-build/aquosa/_compiled/include
DEFINES += AQuoSA
libdir=$$system(cd /home/wsh/frescor/src/omk-build/aquosa/_compiled/lib; pwd)
-LIBS += -L$$libdir -Wl,-rpath-link=$$libdir -Wl,-rpath=$$libdir -lpthread -lfrsh
+LIBS += -L$$libdir -Wl,-rpath-link=$$libdir -Wl,-rpath=$$libdir -lpthread -lfrsh -lcontract -lfrm_client -lforb
QVariant ResourceListModel::data(const QModelIndex &index, int role) const
{
- if (resources && index.isValid() &&
- (role == Qt::DisplayRole || role == Qt::EditRole)) {
- return QVariant(QString("%1.%2")
- .arg(restype2str(resources->_buffer[index.row()].restype))
- .arg(resources->_buffer[index.row()].resid));
- } else
- return QVariant();
+ if (resources && index.isValid())
+ {
+ switch (role) {
+ case Qt::DisplayRole:
+ case Qt::EditRole:
+ return QVariant(QString("%1.%2")
+ .arg(restype2str(resources->_buffer[index.row()].restype))
+ .arg(resources->_buffer[index.row()].resid));
+ case ObjRefRole:
+ return qVariantFromValue((void*)resources->_buffer[index.row()].desc.manager);
+ }
+ }
+ return QVariant();
}
#include <forb.h>
#include <fcb.h>
+const int ObjRefRole = Qt::UserRole+1;
+
class ResourceListModel : public QAbstractListModel
{
public: