fres_contract_id_to_string(buf.data(), &c->id, buf.size());
return QVariant(buf);
}
+ case ContractRole:
+ struct fres_contract *c;
+ c = contracts->_buffer[index.row()];
+ return qVariantFromValue((void*)c);
+
}
}
return QVariant();
}
-int ContractListModel::update(fres_resource_manager frm)
+int ContractListModel::update(fres_resource_manager frm, int &utilization)
{
CORBA_Environment ev;
- CORBA_long utilization;
if (frm) {
fres_resource_manager_get_contracts(frm, &contracts, &utilization, &ev);
reset();
#include <QStringList>
#include <frm.h>
+const int ContractRole = Qt::UserRole+2;
+
class ContractListModel : public QAbstractListModel
{
public:
QVariant data(const QModelIndex &index, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
- int update(fres_resource_manager frm);
+ int update(fres_resource_manager frm, int &utilization);
private:
forb_orb orb;
fres_contract_ptr_seq *contracts;
#include <forb.h>
#include <QTimer>
#include <iostream>
+#include <fres_contract.h>
using namespace std;
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(updateData()));
timer->start(1000);
+ ui->status->setText("");
}
Dialog::~Dialog()
void Dialog::on_contracts_clicked(QModelIndex index)
{
- ui->contractText->setText(index.data().toString());
+ QByteArray str(1000, 0);
+ fres_contract *c;
+ c = (fres_contract *)contractsModel->data(index, ContractRole).value<void*>();
+ fres_contract_to_string(str.data(), str.size(), c);
+ ui->contractText->setText(QString(str));
+}
+
+void Dialog::updateResource()
+{
+ int utilization;
+ contractsModel->update(frm, utilization);
+ ui->utilization->setEnabled(utilization >= 0);
+ if (utilization >= 0)
+ ui->utilization->setValue(utilization);
+ else
+ ui->utilization->setValue(0);
+
}
void Dialog::updateData()
{
- resourcesModel->update();
- contractsModel->update(frm);
+ int ret;
+ bool ok;
+ ret = resourcesModel->update();
+ ok = (ret == 0);
+ this->setEnabled(ok);
+ ui->status->setText(ok ? "FCB contacted" : "FCB not found!");
+ if (ok) {
+ if (ui->resources->currentIndex() == -1 &&
+ resourcesModel->rowCount(QModelIndex()) > 0) {
+ ui->resources->setCurrentIndex(0);
+ }
+ updateResource();
+ }
}
void Dialog::on_resources_currentIndexChanged(int index)
{
frm = (fres_resource_manager)resourcesModel->data(resourcesModel->index(index,0), ObjRefRole).value<void*>();
- contractsModel->update(frm);
+ updateResource();
}
void on_resources_currentIndexChanged(int index);
void on_contracts_clicked(QModelIndex index);
void updateData();
+ void updateResource();
+
};
#endif // DIALOG_H
<property name="windowTitle">
<string>FRESCOR Resource Manager Inspector</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_4">
+ <layout class="QVBoxLayout" name="verticalLayout_5">
<item>
- <widget class="QSplitter" name="splitter_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <widget class="QWidget" name="layoutWidget">
+ <layout class="QHBoxLayout" name="contentLayout">
+ <item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
</layout>
</item>
</layout>
- </widget>
- <widget class="QSplitter" name="splitter">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <widget class="QGraphicsView" name="utilization">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>1</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Plain</enum>
- </property>
- <property name="backgroundBrush">
- <brush brushstyle="SolidPattern">
- <color alpha="255">
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </brush>
- </property>
- <property name="interactive">
- <bool>false</bool>
- </property>
- </widget>
- <widget class="QLabel" name="contractText">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>10</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>TextLabel</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Utilization:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="utilization">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="contractText">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>10</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Contract details</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="status">
+ <property name="text">
+ <string>Status:</string>
+ </property>
</widget>
</item>
</layout>
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 -lcontract -lfrm_client -lforb
+LIBS += -L$$libdir -Wl,-rpath-link=$$libdir -Wl,-rpath=$$libdir -lpthread -lfrsh -lfrm_client -lforb -lcontract
fcb = forb_resolve_reference(orb, fres_contract_broker_reg_name);
if (!fcb) {
- QMessageBox::warning(0, tr("Warning"), tr("Could not find contract broker."));
+ //QMessageBox::warning(0, tr("Warning"), tr("Could not find contract broker."));
return -1;
}