示例#1
0
int TableWidgetItem::setWhatsThis( lua_State * L )// ( const QString & whatsThis ) void
 {
 	 QTableWidgetItem* lhs = ValueInstaller2<QTableWidgetItem>::check( L, 1 );
	 //QString* whatsThis = ValueInstaller2<QString>::check( L, 2 );
	 lhs->setStatusTip( Util::toString( L, 2 ) );
	 return 0;
 }
示例#2
0
int TableWidgetItem::setToolTip ( lua_State * L )// ( const QString & toolTip ) void
 {
 	 QTableWidgetItem* lhs = ValueInstaller2<QTableWidgetItem>::check( L, 1 );
	 //QString* toolTip = ValueInstaller2<QString>::check( L, 2 );
	 lhs->setStatusTip( Util::toString( L, 2 ) );
	 return 0;
 }
示例#3
0
void    BabelWindow::setContactStatus(int row, bool available)
{
    QTableWidgetItem   *contact = ui->_contactsTable->item(row, 0);

    if (available)
    {
        contact->setIcon(QPixmap(":Images/Available.png"));
        contact->setStatusTip("available");
    }
    else
    {
        contact->setIcon(QPixmap(":Images/Busy.png"));
        contact->setStatusTip("busy");
    }

}
示例#4
0
static void eventCallback(struct event_handler_args args)
{
    CHNODE *pNode = (CHNODE *)ca_puser(args.chid);
	AttachChannelAccess	*pacacc = (AttachChannelAccess *)pNode->acacc;
    pNode->dbfType = ca_field_type(pNode->ch_id);

	QString pvname = ca_name(args.chid);
	QString strvalue;
	unsigned int chindex = pNode->chindex;

	//qDebug("Event Callback...:PVName(%s)", pvname.toStdString().c_str());
    if( args.status != ECA_NORMAL ) 
	{
		printChidInfo(args.chid,"eventCallback");
    } 
	else 
	{
		QString objName = pNode->objname;
		if(objName.contains("CATableList", Qt::CaseInsensitive) == true)
		{
			struct dbr_time_string *pdata = (struct dbr_time_string*)args.dbr;
			QTableWidgetItem *pItem = pNode->pItem;
			strvalue = QString(pdata->value);
			pItem->setText(strvalue);
			CATableList *pTable = (CATableList*)pItem->tableWidget();
			pItem->setStatusTip(QString("PVname : ").append(pvname).append(QString(", Value: ")).append(strvalue));
			pTable->TableUpdate();
			return;
		};

		//++leesi
		switch(pNode->dbrequest)
		{
			//case DBR_GR_CHAR:
			case DBR_TIME_STRING:
				{
					struct dbr_time_string *pdata = (struct dbr_time_string*)args.dbr;
					strvalue = QString(pdata->value);
					pacacc->UpdateObj(pNode->objname, strvalue, pdata->severity);
				}
				break;
			case DBR_GR_DOUBLE:
			default:
				{
					struct dbr_gr_double* pdata = (struct dbr_gr_double*)args.dbr;
					if(objName.contains("CAPopUp", Qt::CaseInsensitive) == true)
						qDebug("PVName: %s, Value:%f", pvname.toStdString().c_str(), pdata->value);
#if 0
					//for test,,,
					static int count = 0;
					qDebug("CAMon Value:%f, count(%d)",pdata->value, count++);
#endif
					pacacc->UpdateObj(pNode->objname, pdata->value, pdata->severity, pdata->precision);
				}
				break;
		};
    };
};
示例#5
0
//Главная функция, которая рисует дни
void MainWindow::SetDays(int DaysCount){
    ClearTTable(); //Очищаем таблицу

    ui->ttable->insertRow(0);      // Две строчки
    ui->ttable->insertRow(0);      // и столбец для
    ui->ttable->insertColumn(0);   // имитации заголовков

    int placesCount;  //Число площадок
    int beginRow, addedRows =0; //Начальная строка объединения и число дополнительно вставленных строчек

    if (db.isOpen()){
      QSqlQuery query, subq, subq2;

      //Узнаём, сколько имеется площадок
      query.exec("select count(place_id) from places");
      query.first();
      placesCount= query.value(0).toInt();

      //Получаем список площадок
      query.exec("select place_id, name, color from places order by name");
      query.first();
      for (int k=0;k<DaysCount;k++){
          int j=1;
          // Забиваем список площадок в массив заголовков столько раз,
          // сколько требуется показать дней
          do {
              ui->ttable->insertColumn(j);
              QTableWidgetItem * nitm = new QTableWidgetItem (query.value(1).toString());
              nitm->setBackgroundColor("lightgray");
              nitm->setStatusTip("ac");
              ui->ttable->setItem(1,j, nitm);

              j++;
          }
          while (query.next());
          query.first();
      }

      //Узнаём рабочее время
      QSqlQuery q2;
      q2.exec("select value from settings where name='work_start_time'"); q2.first();
      int work_start_time=q2.value(0).toInt();
      q2.exec("select value from settings where name='work_end_time'"); q2.first();
      int work_end_time=q2.value(0).toInt();

      //Узнаём обеденное время
      QSqlQuery queryD;
      queryD.exec("select value from settings where name='dinner_start_time'"); queryD.first();
      int dinner_start_time=queryD.value(0).toInt();
      queryD.exec("select value from settings where name='dinner_end_time'"); queryD.first();
      int dinner_end_time=queryD.value(0).toInt();

      int hr;
      for (hr=work_start_time; hr<=work_end_time; hr++) {
          //Добавляем строчку часа
          ui->ttable->insertRow(ui->ttable->rowCount());
          beginRow=ui->ttable->rowCount()-1;
          addedRows=0;

          //Добавляем имитацию заголовка
          QTableWidgetItem * nitm = new QTableWidgetItem (QString("%1:00").arg(hr));
          nitm->setBackgroundColor("lightgray");
          nitm->setStatusTip("ac");
          ui->ttable->setItem(beginRow, 0, nitm);

              //Смотрим, не обеденное ли сейчас время?
         if (hr>=dinner_start_time && hr<dinner_end_time && dinner_start_time<dinner_end_time ){
              //Обеденное - закрашиваем строчку цветом обеда
                            for (int j=1; j<ui->ttable->columnCount(); j++){
                            QTableWidgetItem *newItem1 = new QTableWidgetItem("");
                            newItem1->setBackgroundColor(dinner_color);
                            newItem1->setStatusTip("dt");
                            newItem1->setToolTip(tr("Dinner"));
                            ui->ttable->setItem(ui->ttable->rowCount()-1,j, newItem1);
                    }
                } else {

             //Время не обеденное, но учитывать обед всё равно надо
             //int dinnerlap=0;
             //if (hr>=dinner_end_time) dinnerlap=dinner_end_time-dinner_start_time;

              for (int dd=0; dd<DaysCount; dd++){
              //Добавляем в строчку часа закрашенные ячейки
              //Получаем список площадок, на которых работы начинаются в этот час в i-й день.
                  query.exec("select place_id, client_id, service_id, date, TIME(date), record_id, hours from ttable where DATE(date)='"+ day.addDays(dd).toString("yyyy-MM-dd") +"' and TIME(date)<='"+QTime::fromString("00:00:00").addSecs(3600*hr).toString("hh:mm:ss")+"'");
                  while (query.next()) {
                  if (QTime::fromString(query.value(4).toString()).toString("h:mm:ss")==QString("%1:00:00").arg(hr)){
                  //Получаем id площадки и вычисляем её положение среди столбцов
                  QSqlQuery plname;
                  plname.exec("select name, color from places where place_id="+query.value(0).toString()); plname.first();
                  int col=1;
                  for (int i=1+(ui->ttable->columnCount()/DaysCount)*dd; i<1+(ui->ttable->columnCount()/DaysCount)*dd+placesCount; i++)
                      if(ui->ttable->item(1,i)->text()==plname.value(0).toString()) col=i;
                  //Создаём закрашенную ячейку
                  //Убираем заголовок ячейки из массива - он попадёт в объединённый заголовок
                           subq.exec("select * from clients where client_id="+query.value(1).toString()+";"); subq.first();
                  subq2.exec("select * from services where service_id="+query.value(2).toString()+";"); subq2.first();
                  QString ttip = query.value(4).toString()+"\n"+subq.value(1).toString()+"\n"+subq2.value(1).toString()+"\n"+subq.value(3).toString()+"\n"+subq.value(2).toString();
                  QColor colr = plname.value(1).toString();
                  QTableWidgetItem *newItem = new QTableWidgetItem();
                  newItem->setBackgroundColor(colr);
                  newItem->setToolTip(ttip);
                  newItem->setStatusTip(query.value(5).toString());
                  ui->ttable->setItem(beginRow,col, newItem);
                  bool arfilled=false;
                  if (addedRows>0){
                      for (int m=1; m<=addedRows; m++){
                          if (!ui->ttable->item(beginRow+m, 1+(ui->ttable->columnCount()/DaysCount)*dd )){
                              //Новую строчку добавлять не надо, пишем в найденной пустой
                              QTableWidgetItem * nitm = new QTableWidgetItem (subq.value(1).toString()+" "+subq2.value(1).toString()+" "+subq.value(3).toString()+" "+subq.value(2).toString());
                              nitm->setBackgroundColor("#ffffff");
                              nitm->setStatusTip("ac");
                              ui->ttable->setItem(beginRow+m, 1+(ui->ttable->columnCount()/DaysCount)*dd, nitm);
                              arfilled=true;
                              break;
                          }
                        }
                      };
                      if (!arfilled){
                  //Добавляем дополнительную строчку
                  ui->ttable->insertRow(ui->ttable->rowCount());
                  addedRows++;
                  //Делаем объединение ячеек
                  for (int ds=0; ds<DaysCount; ds++)
                  ui->ttable->setSpan(ui->ttable->rowCount()-1, 1+(ui->ttable->columnCount()/DaysCount)*ds,1,placesCount);
                  QTableWidgetItem * nitm = new QTableWidgetItem (subq.value(1).toString()+" "+subq2.value(1).toString()+" "+subq.value(3).toString()+" "+subq.value(2).toString());
                  nitm->setBackgroundColor("#ffffff");
                  nitm->setStatusTip("ac");
                  ui->ttable->setItem(ui->ttable->rowCount()-1, 1+(ui->ttable->columnCount()/DaysCount)*dd, nitm);
                          };
                 }else if(
                          (hr>QTime::fromString(query.value(4).toString()).toString("hh").toInt())
                          &&(hr<=(QTime::fromString(query.value(4).toString()).toString("hh").toInt() + query.value(6).toInt()))
                                                                                               ) {
                      //Просто заливаем ячейку
                      //Получаем id площадки и вычисляем её положение среди столбцов
                      QSqlQuery plname;
                      plname.exec("select name, color from places where place_id="+query.value(0).toString()); plname.first();
                      int col=1;
                      for (int i=1+(ui->ttable->columnCount()/DaysCount)*dd; i<1+(ui->ttable->columnCount()/DaysCount)*dd+placesCount; i++)
                          if(ui->ttable->item(1,i)->text()==plname.value(0).toString()) col=i;
                      subq.exec("select * from clients where client_id="+query.value(1).toString()+";"); subq.first();
                      subq2.exec("select * from services where service_id="+query.value(2).toString()+";"); subq2.first();
                      QString ttip = query.value(4).toString()+"\n"+subq.value(1).toString()+"\n"+subq2.value(1).toString()+"\n"+subq.value(3).toString()+"\n"+subq.value(2).toString();
                      QColor colr = plname.value(1).toString();
                      QTableWidgetItem *newItem = new QTableWidgetItem();
                      newItem->setBackgroundColor(colr);
                      newItem->setToolTip(ttip);
                      newItem->setStatusTip(query.value(5).toString());
                      ui->ttable->setItem(ui->ttable->rowCount()-1-addedRows,col, newItem);
                  };

              };
          };
          };
          //Объединяем горизонтальные заголовки в часы
          if (addedRows>0) ui->ttable->setSpan(beginRow, 0,addedRows+1,1);
      };

 //А теперь объединяем площадки в дни

      for (int k=0;k<DaysCount;k++){
          QString cday=day.addDays(k).toString("dd.MM.yyyy dddd");
          QTableWidgetItem * nitm = new QTableWidgetItem (cday);
          nitm->setBackgroundColor("lightgray");
          nitm->setStatusTip("ac");
          ui->ttable->setItem(0, 1+(ui->ttable->columnCount()/DaysCount)*k, nitm);
          ui->ttable->setSpan(0, 1+(ui->ttable->columnCount()/DaysCount)*k,1,placesCount);
      }
    ui->ttable->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
};
}