예제 #1
0
/* ////////////////////////////////////////////////////////////////////////////
 * Default constructor
 */
TTMpeg2MainWnd::TTMpeg2MainWnd()
  :QMainWindow()
{
  setupUi(this);

  // some default values
  currentStreamOrder = -1;
  isProjectOpen      = false;
  sliderUpdateFrame  = false;

  enableControls(false);

  // Conect signals from main menu
  connect(actionFileOpen,  SIGNAL(triggered()), videoFileInfo, SLOT(onFileOpen()));
  connect(actionAnalyze,   SIGNAL(triggered()), SLOT(onAnalyze()));
  connect(actionSettings,  SIGNAL(triggered()), SLOT(onSettings()));
  connect(actionExit,      SIGNAL(triggered()), SLOT(onExit()));

  connect(actionWriteHeaderList, SIGNAL(triggered()), SLOT(onWriteHeaderList()));

  // Connect signals from video file info widget
  connect(videoFileInfo,  SIGNAL(fileOpened(QString)), SLOT(onLoadVideoFile(QString)));

  // Connect signals from the step control widget
  connect(stepControl,    SIGNAL(gotoNextFrame(int, int)), SLOT(onGotoNextFrame(int, int)));
  connect(stepControl,    SIGNAL(gotoPrevFrame(int, int)), SLOT(onGotoPrevFrame(int, int)));

  // Scroller
  connect(scroller,       SIGNAL(valueChanged(int)), SLOT(onSliderValueChanged(int)));
}
/*
 * Constructor
 */
TTVideoFileInfo::TTVideoFileInfo(QWidget* parent)
  :QWidget(parent)
{
  setupUi( this );

  connect(pbVideoOpen, SIGNAL(clicked()), SLOT(onFileOpen()));
}
예제 #3
0
AS_NAMESPACE_START

EditorTabs::EditorTabs(QWidget *parent)
    : QTabWidget(parent), _finder(nullptr)
{
    _connections << connect(parent, SIGNAL(editCopy()), this, SLOT(onEditCopy()));
    _connections << connect(parent, SIGNAL(editCut()), this, SLOT(onEditCut()));
    _connections << connect(parent, SIGNAL(editFind()), this, SLOT(onEditFind()));
    _connections << connect(parent, SIGNAL(editGoto()), this, SLOT(onEditGoto()));
    _connections << connect(parent, SIGNAL(editPaste()), this, SLOT(onEditPaste()));
    _connections << connect(parent, SIGNAL(editRedo()), this, SLOT(onEditRedo()));
    _connections << connect(parent, SIGNAL(editReplace()), this, SLOT(onEditReplace()));
    _connections << connect(parent, SIGNAL(editUndo()), this, SLOT(onEditUndo()));
    _connections << connect(parent, SIGNAL(fileClose()), this, SLOT(onFileClose()));
    _connections << connect(parent, SIGNAL(fileCloseAll()), this, SLOT(onFileCloseAll()));
    _connections << connect(parent, SIGNAL(fileOpen(QString)), this, SLOT(onFileOpen(QString)));
    _connections << connect(parent, SIGNAL(fileSave()), this, SLOT(onFileSave()));
    _connections << connect(parent, SIGNAL(fileSaveAll()), this, SLOT(onFileSaveAll()));
    _connections << connect(this, &QTabWidget::tabCloseRequested, this, &EditorTabs::onTabCloseRequested);
    _connections << connect(tabBar(), &QTabBar::tabMoved, this, &EditorTabs::onTabMoved);
    _connections << connect(this, &EditorTabs::currentChanged, this, &EditorTabs::onCurrentChanged);
    _connections << connect(this, SIGNAL(fileChanged(QString)), parent, SLOT(onFileChanged(QString)));
    _connections << connect(this, SIGNAL(fileSaved(QString)), parent, SLOT(onFileSaved(QString)));
    setMovable(true);
    setTabsClosable(true);
}
예제 #4
0
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) {
	ui.setupUi(this);

	connect(ui.actionOpen, SIGNAL(triggered()), this, SLOT(onFileOpen()));
	connect(ui.actionExit, SIGNAL(triggered()), this, SLOT(close()));

	// setup the OpenGL widget
	glWidget = new GLWidget3D();
	setCentralWidget(glWidget);
}
bool DiffAnalystWindow::initViewToolBar()
{
	QIconSet icon;
	bool ret=false;
	
	// ////////////////////////////////////////////////////////////////////
	// FILE TOOLBAR
	m_pFileTools = new QToolBar (this, "File Toolbar");
	if(m_pFileTools == NULL) return false;

	icon = QIconSet (QPixmap(XpmFileNew));
	m_ToolsToolId [TM_FILENEW] =  new QToolButton( icon, "New Diff Session", QString::null, this,
		SLOT(onFileNew()), m_pFileTools);
	
	icon = QIconSet (QPixmap(XpmFileOpen));
	m_ToolsToolId [TM_FILEOPEN] =  new QToolButton( icon, "Open Diff Session", QString::null, this,
		SLOT(onFileOpen()), m_pFileTools);

	icon = QIconSet (QPixmap(XpmFileSave));
	m_ToolsToolId [TM_FILESAVE] =  new QToolButton( icon, "Save Diff Session", QString::null, this,
		SLOT(onFileSave()), m_pFileTools);
	m_ToolsToolId [TM_FILESAVE]->setEnabled(false);

	// ////////////////////////////////////////////////////////////////////
	// VIEW TOOLBAR
	m_pViewTools = new QToolBar (this, "View Toolbar");
	if(m_pViewTools == NULL) return false;

	icon = QIconSet (QPixmap(viewconfig));
	m_ToolsToolId [TM_EDITVIEWS] =  new QToolButton( icon, "View Management", QString::null, this,
		SLOT(onViewManage()), m_pViewTools);

	// ////////////////////////////////////////////////////////////////////
	// TOOLS TOOLBAR
	m_pToolTools = new QToolBar (this, "Tools Toolbar");
	if(m_pToolTools == NULL) return false;

	icon = QIconSet (QPixmap((const char**)disassemblyIcon));
	m_ToolsToolId [TM_TOOLDASM] =  new QToolButton( icon, "Show/Hide Disassembly", QString::null, this,
		SLOT(onToggleDasmView()), m_pToolTools);
	
	icon = QIconSet (QPixmap((const char**)propertyIcon));
	m_ToolsToolId [TM_TOOLPROP] =  new QToolButton( icon,"Show/Hide Property", QString::null, this,
		SLOT(onToggleProp()), m_pToolTools);

	// ////////////////////////////////////////////////////////////////////
	moveDockWindow (m_pViewTools, Qt::DockTop);
	ret = true;
	return ret;
}
예제 #6
0
APP_NAMESPACE_START

ProjectDock::ProjectDock(QWidget *p)
    : QDockWidget(__("project", "docks"), p)
{
    _connections << connect(this, SIGNAL(fileOpen(QString)), p, SLOT(onFileOpen(QString)));
    _connections << connect(p, SIGNAL(projectOpen(QString)), this, SLOT(onProjectOpen(QString)));
    _connections << connect(p, SIGNAL(projectReload()), this, SLOT(onProjectReload()));
    _tree = new QTreeWidget(this);
    _tree->header()->hide();
    _tree->setContextMenuPolicy(Qt::CustomContextMenu);
    _tree->setEditTriggers(QAbstractItemView::NoEditTriggers);
    _tree->setSelectionBehavior(QAbstractItemView::SelectItems);
    _tree->setSelectionMode(QAbstractItemView::SingleSelection);
    _tree->setSortingEnabled(false);
    _connections << connect(_tree, &QTreeWidget::doubleClicked, this, &ProjectDock::onDoubleClicked);
    setObjectName("ProjectDock");
    setWidget(_tree);
}
/*
 * Constructor
 */
TTVideoFileInfo::TTVideoFileInfo(QWidget* parent)
  :QWidget(parent)
{
  setupUi( this );

  videoListView->setRootIsDecorated(false);
  QHeaderView* header = videoListView->header();
  header->resizeSection(0, 220);
  header->resizeSection(1, 220);
  header->resizeSection(2, 140);
  header->resizeSection(3, 80);
  header->resizeSection(4, 80);
  header->resizeSection(5, 100);
  header->resizeSection(6,  60);

  connect( pbVideoOpen,   SIGNAL(clicked()),   SLOT(onFileOpen()));
  connect( pbVideoDelete, SIGNAL(clicked()),   SLOT(onDeleteVideo()) );
  connect( videoListView, SIGNAL(customContextMenuRequested(const QPoint&)),
                                              SLOT(onContextMenuRequest(const QPoint& )) );
  connect( videoListView, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)),
                                              SLOT(onCurItemChange(QTreeWidgetItem*, QTreeWidgetItem*)) );
}
void TTVideoFileInfo::onContextMenuRequest( const QPoint& point )
{
  if ( videoListView->currentItem() != NULL ) {
    QAction* itemNewAction = new QAction(tr("&Insert video"), this);
    itemNewAction->setIcon(QIcon(QString::fromUtf8(":/pixmaps/pixmaps/fileopen_24.xpm")));
    itemNewAction->setStatusTip(tr("Open a new video and insert to list"));
    connect(itemNewAction, SIGNAL(triggered()), SLOT(onFileOpen()));

    QAction* itemDeleteAction = new QAction(tr("&Delete video"), this);
    itemDeleteAction->setIcon(QIcon(QString::fromUtf8(":/pixmaps/pixmaps/cancel_18.xpm")));
    itemDeleteAction->setStatusTip(tr("Remove selected video from list"));
    connect(itemDeleteAction, SIGNAL(triggered()), SLOT(onDeleteVideo()));

    QMenu contextMenu(this);
    contextMenu.addAction(itemNewAction);
    contextMenu.addSeparator();
    contextMenu.addAction(itemDeleteAction);

    contextMenu.exec( videoListView->mapToGlobal(point) );

    delete itemNewAction;
    delete itemDeleteAction;
  }
}
/* /////////////////////////////////////////////////////////////////////////////
 * Application main window constructor
 */
TTCutMainWindow::TTCutMainWindow() 
: QMainWindow()
{

  // setup Qt Designer UI
  setupUi( this );

  // images
  // --------------------------------------------------------------------------
  TTCut::imgDownArrow  = new QPixmap( downarrow_18_xpm );
  TTCut::imgUpArrow    = new QPixmap( uparrow_18_xpm );
  TTCut::imgDelete     = new QPixmap( cancel_18_xpm );
  TTCut::imgFileOpen24 = new QPixmap( fileopen_24_xpm );
  TTCut::imgFileNew    = new QPixmap( filenew_16_xpm );
  TTCut::imgFileOpen   = new QPixmap( fileopen_16_xpm );
  TTCut::imgFileSave   = new QPixmap( filesave_16_xpm );;
  TTCut::imgFileSaveAs = new QPixmap( filesaveas_16_xpm );
  TTCut::imgSaveImage  = new QPixmap( saveimage_16_xpm );
  TTCut::imgSettings   = new QPixmap( settings_16_xpm );
  TTCut::imgSettings18 = new QPixmap( settings_18_xpm );
  TTCut::imgExit       = new QPixmap( exit_16_xpm );
  TTCut::imgPlay       = new QPixmap( play_18_xpm );
  TTCut::imgStop       = new QPixmap( stop_18_xpm );
  TTCut::imgSearch     = new QPixmap( search_18_xpm );
  TTCut::imgChapter    = new QPixmap( chapter_18_xpm );
  TTCut::imgPreview    = new QPixmap( preview_18_xpm );
  TTCut::imgCutAV      = new QPixmap( cutav_18_xpm );
  TTCut::imgCutAudio   = new QPixmap( cutaudio_18_xpm );
  TTCut::imgGoTo       = new QPixmap( goto_18_xpm );
  TTCut::imgMarker     = new QPixmap( note_18_xpm );
  TTCut::imgClock      = new QPixmap( clock_16_xpm );
  TTCut::imgApply      = new QPixmap( apply_18_xpm );
  TTCut::imgAddToList  = new QPixmap( addtolist_18_xpm );
  TTCut::imgFileClose  = new QPixmap( fileclose_18_xpm );

  setFocusPolicy(Qt::StrongFocus);

  // Message logger instance
  log = TTMessageLogger::getInstance();
  
  // Get the current Qt version at runtime
  log->infoMsg(oName, "TTCut-Version: %s", qPrintable(TTCut::versionString));
  log->infoMsg(oName, "Qt-Version:    %s", qVersion());

#if QT_VERSION < 0x040100
  // TODO: Show message box and abort session
  log->errorMsg(oName, "Qt-Version >= 4.1.0 required");
#endif

  // Settings
  TTCut::recentFileList.clear();
  settings = new TTCutSettings();
  settings->readSettings();
  log->enableLogFile(TTCut::createLogFile);
  log->setLogModeConsole(TTCut::logModeConsole);
  log->setLogModeExtended(TTCut::logModeExtended);

 
  // Audio list
  audioList = new TTAudioListData();
  audioFileInfo->setListData(audioList);

  // Mux list and mplex provider (later by plugin)
  muxListData   = new TTMuxListData();
  mplexProvider = new TTMplexProvider();

  // no navigation
  navigationEnabled( false );
 
  // init
  cutListData            = NULL;
  mpegStream             = NULL;
  TTCut::isVideoOpen     = false;
  TTCut::projectFileName = "";
  
  // Signal and slot connections
  // 
  // Connect signals from main menu
  // --------------------------------------------------------------------------
  connect(actionOpenVideo,        SIGNAL(triggered()), videoFileInfo, SLOT(onFileOpen()));
  connect(actionOpenAudio,        SIGNAL(triggered()), audioFileInfo, SLOT(onFileOpen()));
  connect(actionFileNew,          SIGNAL(triggered()), SLOT(onFileNew()));
  connect(actionFileOpen,         SIGNAL(triggered()), SLOT(onFileOpen()));
  connect(actionFileSave,         SIGNAL(triggered()), SLOT(onFileSave()));
  connect(actionFileSaveAs,       SIGNAL(triggered()), SLOT(onFileSaveAs()));
  connect(actionExit,             SIGNAL(triggered()), SLOT(onFileExit()));
  connect(actionSaveCurrentFrame, SIGNAL(triggered()), SLOT(onActionSave()));
  connect(actionSettings,         SIGNAL(triggered()), SLOT(onActionSettings()));
  connect(actionAbout,            SIGNAL(triggered()), SLOT(onHelpAbout()));

  // recent files
  for (int i = 0; i < MaxRecentFiles; ++i) {
    recentFileAction[i] = new QAction(this);
    recentFileAction[i]->setVisible(false);
    menuRecentProjects->addAction(recentFileAction[i]);
    connect(recentFileAction[i], SIGNAL(triggered()), SLOT(onFileRecent()));
  }
 
  updateRecentFileActions();

  // Connect signals from video and audio info
  // --------------------------------------------------------------------------
  connect(videoFileInfo,          SIGNAL(fileOpened(QString)), SLOT(onReadVideoStream(QString)));
  connect(audioFileInfo,          SIGNAL(fileOpened(QString)), SLOT(onReadAudioStream(QString)));

  // Connect signals from navigation widget
  // --------------------------------------------------------------------------
  connect(navigation, SIGNAL(prevIFrame()),      currentFrame, SLOT(onPrevIFrame()));
  connect(navigation, SIGNAL(nextIFrame()),      currentFrame, SLOT(onNextIFrame()));
  connect(navigation, SIGNAL(prevPFrame()),      currentFrame, SLOT(onPrevPFrame()));
  connect(navigation, SIGNAL(nextPFrame()),      currentFrame, SLOT(onNextPFrame()));
  connect(navigation, SIGNAL(prevBFrame()),      currentFrame, SLOT(onPrevBFrame()));
  connect(navigation, SIGNAL(nextBFrame()),      currentFrame, SLOT(onNextBFrame()));
  connect(navigation, SIGNAL(setCutOut(int)),    currentFrame, SLOT(onSetCutOut(int)));
  connect(navigation, SIGNAL(setCutOut(int)),    cutOutFrame,  SLOT(onGotoCutOut(int)));
  connect(navigation, SIGNAL(setCutIn(int)),     currentFrame, SLOT(onSetCutIn(int)));
  connect(navigation, SIGNAL(gotoCutIn(int)),    currentFrame, SLOT(onGotoCutIn(int)));
  connect(navigation, SIGNAL(gotoCutOut(int)),   currentFrame, SLOT(onGotoCutOut(int)));
  connect(navigation, SIGNAL(addCutRange(int, int)), cutList,   SLOT(onAddEntry(int, int)));
  connect(navigation, SIGNAL(gotoMarker(int)),   currentFrame, SLOT(onGotoMarker(int)));
  connect(navigation, SIGNAL(moveNumSteps(int)), currentFrame, SLOT(onMoveNumSteps(int)));
  connect(navigation, SIGNAL(moveToHome()),      currentFrame, SLOT(onMoveToHome()));
  connect(navigation, SIGNAL(moveToEnd()),       currentFrame, SLOT(onMoveToEnd()));

  // Connect signal from video slider
  // --------------------------------------------------------------------------
  connect(streamNavigator, SIGNAL(sliderValueChanged(int)), SLOT(onVideoSliderChanged(int)));

  // Connect signals from cut-out frame widget
  // --------------------------------------------------------------------------
  connect(cutOutFrame, SIGNAL(equalFrameFound(int)), currentFrame, SLOT(onGotoFrame(int)));
  connect(cutOutFrame, SIGNAL(newCutOutFramePos(int)), cutList,    SLOT(onEditCutOut(int)));

  // Connect signals from current frame widget
  // --------------------------------------------------------------------------
  connect(currentFrame, SIGNAL(newFramePosition(int)), SLOT(onNewFramePos(int))); 

  // Connect signals from cut list widget
  // --------------------------------------------------------------------------
  connect(cutList, SIGNAL(entrySelected(int)), cutOutFrame,     SLOT(onGotoCutOut(int)));
  connect(cutList, SIGNAL(entryEdit(const TTCutListDataItem&)), 
                                              navigation,       SLOT(onEditCut(const TTCutListDataItem&)));
  connect(cutList, SIGNAL(gotoCutIn(int)),     currentFrame,    SLOT(onGotoFrame(int)));
  connect(cutList, SIGNAL(gotoCutOut(int)),    currentFrame,    SLOT(onGotoFrame(int)));
  connect(cutList, SIGNAL(refreshDisplay()),   streamNavigator, SLOT(onRefreshDisplay()));
  connect(cutList, SIGNAL(previewCut(int)),                     SLOT(onPreviewCut(int)));
  connect(cutList, SIGNAL(audioVideoCut(int)),                  SLOT(onAudioVideoCut(int)));
  connect(cutList, SIGNAL(audioCut(int)),                       SLOT(onAudioCut(int)));
}
bool DiffAnalystWindow::initMenuBar()
{
	bool ret=false;
	// ////////////////////////////////////////////////////////////////////
	// FILE
	m_pFileMenu = new QPopupMenu (this);
	if(m_pFileMenu == NULL) return false;
	menuBar ()->insertItem ("&File", m_pFileMenu);

	// New
	m_pFileMenu->insertItem (QIconSet (QPixmap (XpmFileNew)), "&New Session Wizard", this,
		SLOT (onFileNew ()), CTRL + Key_N);
	// Open
	m_pFileMenu->insertItem (QIconSet (QPixmap (XpmFileOpen)), "&Open",
		this, SLOT (onFileOpen ()), CTRL + Key_O);
	
	// -------------------
	m_pFileMenu->insertSeparator ();
	
	// Save
	m_SaveId = m_pFileMenu->insertItem (QIconSet (QPixmap (XpmFileSave)),
		"&Save", this, SLOT (onFileSave ()), CTRL + Key_S);
	m_pFileMenu->setItemEnabled (m_SaveId, false);

	// Save As
	m_SaveAsId = m_pFileMenu->insertItem (QIconSet(QPixmap()),
		"Save &As", this, SLOT (onFileSaveAs ()), CTRL + Key_A);
	m_pFileMenu->setItemEnabled (m_SaveAsId, false);

	// -------------------
//	m_pFileMenu->insertSeparator ();

	// export data
//	m_ExportDataId = m_pFileMenu->insertItem ("&Export...", this,
//		SLOT (onExportData ()));
//	m_pFileMenu->setItemEnabled (m_ExportDataId, false);

	// -------------------
	m_pFileMenu->insertSeparator ();

	// Close
	m_CloseId 	= m_pFileMenu->insertItem ("&Close", this, SLOT (onFileClose ()), CTRL + Key_W);
	m_CloseAllId 	= m_pFileMenu->insertItem ("Close Al&l", this, SLOT (onCloseAllWindows ()));

	// Quit
	m_pFileMenu->insertItem ("&Quit", this, SLOT (close ()), CTRL + Key_Q);
	QObject::connect (qApp, SIGNAL (aboutToQuit ()), this,
		SLOT (onAboutToQuit ()));
	
	// ////////////////////////////////////////////////////////////////////
	// SETTINGS
//	m_pSettingsMenu = new QPopupMenu (this);
//	if(m_pSettingsMenu == NULL) return false;
//	menuBar ()->insertItem ("&Settings", m_pSettingsMenu);

	// /////////////////////////////////////////////////////////////////////
	// TOOLS
	m_pToolsMenu = new QPopupMenu (this);
	if(m_pToolsMenu == NULL) return false;

	m_pToolsMenu->setCheckable (TRUE);
        connect (m_pToolsMenu, SIGNAL (aboutToShow ()), this,
                SLOT (toolsMenuAboutToShow ()));

	menuBar ()->insertItem ("&Tools", m_pToolsMenu);

	// /////////////////////////////////////////////////////////////////////
	// VIEW 
	m_pViewMenu = new QPopupMenu (this);
	if(m_pViewMenu == NULL) return false;
	menuBar ()->insertItem ("&View", m_pViewMenu);

	// View Management
	m_ViewManageId = m_pViewMenu->insertItem (QPixmap(viewconfig),"&View Management", this,
		SLOT (onViewManage ()));

	// /////////////////////////////////////////////////////////////////////
	// WINDOWS
	m_pWindowsMenu = new QPopupMenu (this);
	if(m_pWindowsMenu == NULL) return false;
        connect (m_pWindowsMenu, SIGNAL (aboutToShow ()), this,
                SLOT (onWindowsMenuAboutToShow ()));
	
	menuBar ()->insertItem ("&Windows", m_pWindowsMenu);

	// /////////////////////////////////////////////////////////////////////
	// HELPS
	m_pHelpMenu = new QPopupMenu (this);
	if(m_pHelpMenu == NULL) return false;
	menuBar ()->insertItem ("&Help", m_pHelpMenu);

	m_pHelpMenu->insertItem ("&About", this, SLOT (onHelpAbout ()), Key_F1);
	m_pHelpMenu->insertItem ("&Help", this, SLOT (onHelpContents ()));
	
	ret = true;
	return ret;
}// DiffAnalystWindow::initMenuBar
예제 #11
0
QTPcapReplay::QTPcapReplay(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	/* Connects  */
	m_jobReplay = new JobReplay;
	m_jobReplay->SetPcapReplay(this);
	m_jobReplay->SetUI(&ui);

	//BUTTONACT(ui.removeFileButton, removeFile());
	connect(ui.removeFileButton, SIGNAL(pressed()), this, SLOT(removeFile()));
	connect(ui.exitAppButton, SIGNAL(pressed()), this, SLOT(onFileExit()));
	connect(ui.actionFiles, SIGNAL(triggered()), this, SLOT(onFileOpen()));
	connect(ui.actionFrom_Folder, SIGNAL(triggered()), this, SLOT(onFolderOpen()));
	connect(ui.actionClose, SIGNAL(triggered()), this, SLOT(onFileExit()));
	connect(ui.actionNew_Window, SIGNAL(triggered()), this, SLOT(onNewWindow()));
	connect(ui.actionNew_Window_Dynamic, SIGNAL(triggered()), this, SLOT(onNewWindowDynamic()));
	connect(ui.actionScheduler, SIGNAL(triggered()), this, SLOT(onSchedulerDynamic()));
	connect(ui.startReplayButton, SIGNAL(pressed()), m_jobReplay, SLOT(StartReplay()));
	connect(ui.pauseReplayButton, SIGNAL(pressed()), this, SLOT(onPause()));
	connect(ui.stopReplayButton, SIGNAL(pressed()), this, SLOT(StopPlaying()));
	connect(m_jobReplay, SIGNAL(updateProgress(const int&)), this, SLOT(getProgress(int)));
	connect(m_jobReplay, SIGNAL(updateNextPacketNumber(const QString&)), this, SLOT(getNextPacketNumber(QString)));
	connect(m_jobReplay, SIGNAL(updateCurrentPlayingFile(const QString&)), this, SLOT(getCurStatus(QString)));
	connect(m_jobReplay, SIGNAL(updatePlayingStatus(const bool&)), this, SLOT(updatePlayingStatus(bool)));
	connect(&(m_SchedulerTimer.m_timer), SIGNAL(timeout()), this, SLOT(handleTimeout()));
	connect(&(m_NetSpeedMeasure), SIGNAL(UpdateNetSpeed(double)), this, SLOT(updateNetSpeedMeasure(double)));
	connect(&(m_PacketTimeReportor), SIGNAL(UpdateTimeReport(QString)), this, SLOT(PrintTimeReport(QString)));
	connect(m_jobReplay, SIGNAL(sendMessageBox(const QString&)), this, SLOT(showMessageBox(const QString&)));
	connect(ui.regularReplayButton, SIGNAL(pressed()), m_jobReplay, SLOT(startRegularReplay()));
	connect(m_jobReplay, SIGNAL(updateRegularReplayingStatus(const bool&)), this, SLOT(updateRegularReplayingStatus(bool)));
	connect(m_jobReplay, SIGNAL(sendUpdateRegularButtonText(const QString&)), this, SLOT(updateRegularButtonText(const QString&)));
	connect(ui.actionSave_Config, SIGNAL(triggered()), this, SLOT(save_config_setting()));
	connect(ui.actionLoad_Config, SIGNAL(triggered()), this, SLOT(load_config_setting()));

	ui.progressBar->setValue(0);

	if (InitAdapterName() == 1)
		exit(0);

	m_playerTimer = new PlayerTimer;
	m_threadPool = new threadPool(2);
	m_threadPool->submit(m_playerTimer);

	// Modify display
	ui.curPcapPackage->setText(QString(""));
	ui.StatusReportLabel->setText(QString(""));
	ui.schedulerStatus->setText(QString("Scheduler Stop"));
	ui.schedulerStatus->setStyleSheet("QLabel { background-color : red; color : black; }");
	ui.pauseReplayButton->setDisabled(true);
	ui.stopReplayButton->setDisabled(true);
	ui.offSet_lineEdit->setText("0");
	ui.speed_LineEdit->setText("1");
	ui.netSpeedMon->setText("");
	ui.packetTimeLabel->setText("");

	// Status
	m_bPlaying = false;
	m_bBeforePlay = true;

	
	m_openFilePath = QDir::currentPath();

	// net speed measurement

	// icon
	//m_icon.addFile("C:\NGN2\NGN2011\App\QTPcapReplay\QTPcapReplay\test.bmp");
	//this->setWindowIcon(m_icon);
}