]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
frm_gui displays contracts and status
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 11 Feb 2009 00:37:21 +0000 (01:37 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 11 Feb 2009 00:37:21 +0000 (01:37 +0100)
fres/frm_gui/contractlistmodel.cpp
fres/frm_gui/contractlistmodel.h
fres/frm_gui/dialog.cpp
fres/frm_gui/dialog.h
fres/frm_gui/dialog.ui
fres/frm_gui/frm_gui.pro
fres/frm_gui/resourcelistmodel.cpp

index 97248be8393207a1845b6ba4bdb55c0de9dc40ea..dabb0d0f940ebe1647c967189c15fea7da7592df 100644 (file)
@@ -26,15 +26,19 @@ QVariant ContractListModel::data(const QModelIndex &index, int role) const
                 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();
index 1c6115564213aac875e4b13198b55559793d53a8..f68bdc64ef4e403ebc1ce117f8e0cef1d6c2bd65 100644 (file)
@@ -6,6 +6,8 @@
 #include <QStringList>
 #include <frm.h>
 
+const int ContractRole = Qt::UserRole+2;
+
 class ContractListModel : public QAbstractListModel
 {
 public:
@@ -14,7 +16,7 @@ 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;
index 59a9350dac1ea76e298f1d4109037f5e3fda3632..6ba67ed6cf911eb2a9637639129fa427f00c0c9c 100644 (file)
@@ -3,6 +3,7 @@
 #include <forb.h>
 #include <QTimer>
 #include <iostream>
+#include <fres_contract.h>
 
 using namespace std;
 
@@ -19,6 +20,7 @@ Dialog::Dialog(QWidget *parent)
     timer = new QTimer();
     connect(timer, SIGNAL(timeout()), this, SLOT(updateData()));
     timer->start(1000);
+    ui->status->setText("");
 }
 
 Dialog::~Dialog()
@@ -28,17 +30,44 @@ 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();
 }
index 9bf16aab64709256b123dc1f462a65801be76267..9ec3a70e362fd5c13a00c7241ac311fe44feed61 100644 (file)
@@ -35,6 +35,8 @@ private slots:
     void on_resources_currentIndexChanged(int index);
     void on_contracts_clicked(QModelIndex index);
     void updateData();
+    void updateResource();
+
 };
 
 #endif // DIALOG_H
index 32c528ac669cf355669c80ed8bd3b5fc501b798d..fcfd91a2219130ac1a23e4493e59f058ecfbcab0 100644 (file)
   <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>
index 33c006162cf5db5f54343a6b88b8fa257133d862..8f9e8d98f6f21791b687842ba799fef0d34bd497 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 -lcontract -lfrm_client -lforb
+LIBS   += -L$$libdir -Wl,-rpath-link=$$libdir -Wl,-rpath=$$libdir -lpthread -lfrsh -lfrm_client -lforb -lcontract
index 9c41aa949faf41ad7d4b9c4e7259e7b4aba7b95b..90b91da6ece45d01b2573657ca085b4db5d70cd5 100644 (file)
@@ -34,7 +34,7 @@ int ResourceListModel::update()
 
     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;
     }