Back to index

im-sdk  12.3.91
IIIMStatus.cpp
Go to the documentation of this file.
00001 #include <qpainter.h>
00002 #include "IIIMText.hh"
00003 #include "IIIMStatus.hh"
00004 
00005 void
00006 IIIMStatusWidget::drawContents(
00007     QPainter *p
00008 )
00009 {
00010     IIIMCF_text text;
00011     IIIMF_status st;
00012 
00013     if (!ctx) return;
00014     st = iiimcf_get_status_text(ctx, &text);
00015     if (st != IIIMF_STATUS_SUCCESS) return;
00016     IIIMText imt(text);
00017     currentsize = imt.draw(p, this, contentsRect());
00018 
00019     adjustSize();
00020 }
00021 
00022 void
00023 IIIMStatusWidget::adjust_location(
00024     const QSize& size
00025 )
00026 {
00027     if (pwlocref) {
00028        QPoint pt;
00029        QRect wrec = pwlocref->frameGeometry();
00030        switch (locref) {
00031          case TOP_LEFT:
00032           pt = wrec.topLeft();
00033           pt.setY(pt.y() - size.height());
00034           move(pt);
00035           break;
00036          case TOP_RIGHT:
00037           pt = wrec.topRight();
00038           pt.setX(pt.x() - size.width());
00039           pt.setY(pt.y() - size.height());
00040           move(pt);
00041           break;
00042          case BOTTOM_LEFT:
00043           pt = wrec.bottomLeft();
00044           move(pt);
00045           break;
00046          case BOTTOM_RIGHT:
00047           pt = wrec.bottomRight();
00048           pt.setX(pt.x() - size.width());
00049           move(pt);
00050           break;
00051        }
00052     }
00053 }
00054 
00055 void
00056 IIIMStatusWidget::resizeEvent(
00057     QResizeEvent *pre
00058 )
00059 {
00060     adjust_location(pre->size());
00061 
00062     QWidget::resizeEvent(pre);
00063     return;
00064 }
00065 
00066 void
00067 IIIMStatusWidget::ref_change()
00068 {
00069     adjust_location(size());
00070 }
00071 
00072 void
00073 IIIMStatusWidget::place(
00074     QWidget *plocation_reference,
00075     enum LOCATION_REFERENCE ref
00076 )
00077 {
00078     pwlocref = plocation_reference;
00079     locref = ref;
00080     if (isShown()) {
00081        adjust_location(size());
00082     }
00083 }
00084 
00085 QSize
00086 IIIMStatusWidget::sizeHint() const
00087 {
00088     return minimumSizeHint();
00089 }
00090 
00091 QSize
00092 IIIMStatusWidget::minimumSizeHint() const
00093 {
00094     int plus = (frameWidth() + margin()) * 2;
00095     return QSize(currentsize.width() + plus, currentsize.height() + plus);
00096 }
00097 
00098 void
00099 IIIMStatusWidget::update_im()
00100 {
00101     IIIMF_status st;
00102     IIIMCF_text text;
00103 
00104     st = iiimcf_get_status_text(ctx, &text);
00105     if (st == IIIMF_STATUS_SUCCESS) {
00106        if (!currentsize.isValid()) {
00107            IIIMText imt(text);
00108            QPainter painter(this);
00109            currentsize = imt.get_size(&painter, this);
00110        }
00111        repaint();
00112        show();
00113     } else {
00114        hide();
00115     }
00116 }
00117 
00118 IIIMStatusWidget::IIIMStatusWidget(
00119     IIIMCF_context x_ctx,
00120     QWidget *parent,
00121     const char *name,
00122     WFlags f
00123 ) : QFrame(parent, name, f)
00124 {
00125     ctx = x_ctx;
00126     //setBackgroundMode(Qt::PaletteBase);
00127     setFrameShape(QFrame::WinPanel);
00128     setSizePolicy(QSizePolicy(QSizePolicy::Minimum,
00129                            QSizePolicy::Minimum));
00130     pwlocref = NULL;
00131 }
00132 
00133 IIIMStatusWidget::~IIIMStatusWidget()
00134 {
00135 }
00136 
00137 /* Local Variables: */
00138 /* c-file-style: "iiim-project" */
00139 /* End: */