177 |
180 |
178 actRunCasePar = new QAction(tr("Parallel"), this); |
181 actRunCasePar = new QAction(tr("Parallel"), this); |
179 connect(actRunCasePar, SIGNAL(triggered()), this, |
182 connect(actRunCasePar, SIGNAL(triggered()), this, |
180 SLOT(on_actRunCasePar_triggered())); |
183 SLOT(on_actRunCasePar_triggered())); |
181 |
184 |
|
185 //////////////////// |
|
186 actReapeatRunSeq = new QAction(tr("Repeat run sequentially"), this); |
|
187 connect(actReapeatRunSeq, SIGNAL(triggered()), this, |
|
188 SLOT(on_actReapeatRunSeq_triggered())); |
|
189 |
182 actAddtoSet = new QAction(tr("Add cases to Set"), this); |
190 actAddtoSet = new QAction(tr("Add cases to Set"), this); |
183 connect(actAddtoSet, SIGNAL(triggered()), this, |
191 connect(actAddtoSet, SIGNAL(triggered()), this, |
184 SLOT(on_actAddtoSet_triggered())); |
192 SLOT(on_actAddtoSet_triggered())); |
185 |
193 |
186 actSelectAll = new QAction(tr("Select All"), this); |
194 actSelectAll = new QAction(tr("Select All"), this); |
503 //Cases Tab |
511 //Cases Tab |
504 menuBar()->addAction(actOpenFile); |
512 menuBar()->addAction(actOpenFile); |
505 menuBar()->addMenu(menuRunCase); |
513 menuBar()->addMenu(menuRunCase); |
506 menuRunCase->addAction(actRunCaseSeq); |
514 menuRunCase->addAction(actRunCaseSeq); |
507 menuRunCase->addAction(actRunCasePar); |
515 menuRunCase->addAction(actRunCasePar); |
|
516 menuBar()->addAction(actReapeatRunSeq); |
508 menuBar()->addSeparator(); |
517 menuBar()->addSeparator(); |
509 menuBar()->addAction(actAddtoSet); |
518 menuBar()->addAction(actAddtoSet); |
510 menuBar()->addSeparator(); |
519 menuBar()->addSeparator(); |
511 menuBar()->addAction(actSelectAll); |
520 menuBar()->addAction(actSelectAll); |
512 menuBar()->addAction(actExpandAll); |
521 menuBar()->addAction(actExpandAll); |
685 { |
694 { |
686 startRunning(); |
695 startRunning(); |
687 controller->RunCases(getSelectedCases(), Parallel); |
696 controller->RunCases(getSelectedCases(), Parallel); |
688 } |
697 } |
689 |
698 |
|
699 void FrmMain::on_actReapeatRunSeq_triggered() |
|
700 { |
|
701 DlgRepeatRun dlgRepeatRun(this); |
|
702 int result = dlgRepeatRun.exec(); |
|
703 if(result == QDialog::Accepted) |
|
704 { |
|
705 QList<CSTFCase> selectedCases = getSelectedCases(); |
|
706 if(selectedCases.count() > 0) |
|
707 { |
|
708 startRunning(); |
|
709 controller->RepeatRunCases( selectedCases, |
|
710 dlgRepeatRun.isRepeatInfinitely(), |
|
711 dlgRepeatRun.GetLoopTimes() ); |
|
712 } |
|
713 |
|
714 } |
|
715 } |
|
716 |
690 void FrmMain::on_actAddtoSet_triggered() |
717 void FrmMain::on_actAddtoSet_triggered() |
691 { |
718 { |
692 |
|
693 QList<CSTFCase> list = getSelectedCases(); |
719 QList<CSTFCase> list = getSelectedCases(); |
694 if (list.size() == 0) |
720 if (list.size() == 0) |
695 { |
721 { |
696 QErrorMessage *errorMessageDialog = new QErrorMessage(this); |
722 QErrorMessage *errorMessageDialog = new QErrorMessage(this); |
697 errorMessageDialog->setAutoFillBackground(true); |
723 errorMessageDialog->setAutoFillBackground(true); |
910 controller->AbortCase(); |
936 controller->AbortCase(); |
911 } |
937 } |
912 |
938 |
913 void FrmMain::on_treeModuleList_itemClicked(QTreeWidgetItem* item, int /*column*/) |
939 void FrmMain::on_treeModuleList_itemClicked(QTreeWidgetItem* item, int /*column*/) |
914 { |
940 { |
|
941 //Check if shift key is pressed |
|
942 bool isShiftPressed = false; |
|
943 Qt::KeyboardModifiers keyMod = QApplication::keyboardModifiers(); |
|
944 isShiftPressed=keyMod.testFlag(Qt::ShiftModifier); |
|
945 |
|
946 //Handle shift key. |
|
947 //Shift not pressed. |
|
948 if(!isShiftPressed) |
|
949 { |
|
950 setItemClicked(item); |
|
951 } |
|
952 //Shift pressed. |
|
953 else |
|
954 { |
|
955 enum Direction |
|
956 { |
|
957 Item_NoDirection, |
|
958 Item_Above, |
|
959 Item_Below |
|
960 }; |
|
961 Direction direction = Item_NoDirection; |
|
962 QTreeWidgetItem* tempItem = item; |
|
963 //check direction of last selected item comparing current one. |
|
964 while(tempItem) |
|
965 { |
|
966 tempItem = treeModuleList->itemAbove(tempItem); |
|
967 if(tempItem == lastItemSelected) |
|
968 { |
|
969 direction = Item_Above; |
|
970 break; |
|
971 } |
|
972 } |
|
973 if (direction != Item_Above) |
|
974 { |
|
975 tempItem = item; |
|
976 while(tempItem) |
|
977 { |
|
978 tempItem = treeModuleList->itemBelow(tempItem); |
|
979 if(tempItem == lastItemSelected) |
|
980 { |
|
981 direction = Item_Below; |
|
982 break; |
|
983 } |
|
984 } |
|
985 } |
|
986 |
|
987 // Select all items between current item and last selected item. |
|
988 tempItem = item; |
|
989 if(direction != Item_NoDirection) |
|
990 { |
|
991 while(tempItem) |
|
992 { |
|
993 //check if this item been selected. |
|
994 bool isItemSelected = false; |
|
995 if ( tempItem->text(0).left(3).compare(SELECTITEMHEADER)==0 ) |
|
996 { |
|
997 isItemSelected = true; |
|
998 } |
|
999 // If not selected, set to selected. |
|
1000 if (!isItemSelected ) |
|
1001 { |
|
1002 setItemClicked(tempItem); |
|
1003 } |
|
1004 |
|
1005 //Go above/below |
|
1006 if (direction == Item_Above) |
|
1007 { |
|
1008 tempItem = treeModuleList->itemAbove(tempItem); |
|
1009 } |
|
1010 if (direction == Item_Below) |
|
1011 { |
|
1012 tempItem = treeModuleList->itemBelow(tempItem); |
|
1013 } |
|
1014 |
|
1015 if (tempItem == lastItemSelected) |
|
1016 { |
|
1017 break; |
|
1018 } |
|
1019 } |
|
1020 } |
|
1021 } |
|
1022 |
|
1023 // Set current clicked item to last selected item. |
|
1024 lastItemSelected = item; |
|
1025 |
|
1026 |
|
1027 } |
|
1028 |
|
1029 void FrmMain::setItemClicked(QTreeWidgetItem* item) |
|
1030 { |
915 QString header = UNSELECTITEMHEADER; |
1031 QString header = UNSELECTITEMHEADER; |
916 if(item->text(0).startsWith(UNSELECTITEMHEADER)) |
1032 if(item->text(0).startsWith(UNSELECTITEMHEADER)) |
917 { |
1033 { |
918 header = SELECTITEMHEADER; |
1034 header = SELECTITEMHEADER; |
919 } |
1035 } |