]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
frm_gui can display contracts
authorMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 10 Feb 2009 14:14:57 +0000 (15:14 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 10 Feb 2009 14:14:57 +0000 (15:14 +0100)
TODO: Display also contract details after clicking on a contract

fres/frm_gui/contractlistmodel.cpp
fres/frm_gui/contractlistmodel.h
fres/frm_gui/dialog.cpp
fres/frm_gui/dialog.h
fres/frm_gui/frm_gui.pro
fres/frm_gui/resourcelistmodel.cpp
fres/frm_gui/resourcelistmodel.h

index 8a37689841717a16c1bbe9eb2b673bdbbecfbbcb..97248be8393207a1845b6ba4bdb55c0de9dc40ea 100644 (file)
@@ -1,32 +1,46 @@
 #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
index 5f94289168f661518f72a413572d82f98524961f..1c6115564213aac875e4b13198b55559793d53a8 100644 (file)
@@ -4,19 +4,20 @@
 #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
index 29a1b31e3bf47aef2675087c22f1342d24fbe9d7..59a9350dac1ea76e298f1d4109037f5e3fda3632 100644 (file)
@@ -7,12 +7,12 @@
 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);
 
@@ -34,5 +34,11 @@ void Dialog::on_contracts_clicked(QModelIndex index)
 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);
 }
index 4227b01152b4ee92f17e3344de648cacbd8ae072..9bf16aab64709256b123dc1f462a65801be76267 100644 (file)
@@ -5,6 +5,7 @@
 #include <QTimer>
 #include <QModelIndex>
 #include <forb.h>
+#include <frm.h>
 #include "contractlistmodel.h"
 #include "resourcelistmodel.h"
 
@@ -28,8 +29,10 @@ private:
     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();
 };
index 4aaa2e4ca659a00d576cd7dad135eceb90ef3c52..33c006162cf5db5f54343a6b88b8fa257133d862 100644 (file)
@@ -14,4 +14,4 @@ FORMS += dialog.ui
 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
index 3d20b115806d1368ff3e6d6067d69948a721ea72..9c41aa949faf41ad7d4b9c4e7259e7b4aba7b95b 100644 (file)
@@ -73,13 +73,19 @@ int ResourceListModel::rowCount(const QModelIndex &parent) const
 
 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();
 }
 
 
index 0423a97b292769a9920531e6940e42389a94d4eb..bff9927430f97ef8000d8b9bc0f0a3738665ccd5 100644 (file)
@@ -5,6 +5,8 @@
 #include <forb.h>
 #include <fcb.h>
 
+const int ObjRefRole = Qt::UserRole+1;
+
 class ResourceListModel : public QAbstractListModel
 {
 public: