--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testfwuis/symbianunittestui/qt/mainwindow.cpp Fri Sep 17 08:58:49 2010 +0300
@@ -0,0 +1,296 @@
+/*
+ * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: QT C++ main window Class.
+ *
+ */
+
+#include <QAction>
+#include <QMenuBar>
+#include <QMenu>
+#include <QGridLayout>
+#include <QTreeWidgetItem>
+#include <QKeyEvent>
+#include <QFile>
+#include <QLatin1String>
+#include <QApplication>
+#include "mainwindow.h"
+#include <symbianunittestversion.h>
+#include "dialogaddtests.h"
+#include "tabwidgettestrun.h"
+#include "dialogsettings.h"
+#include "dialogmsg.h"
+
+static const QString APPNAME = "symbianunittestqt";
+static const QString STYLESHEET = ":/qss/coffee.qss";
+//Symbian EKeyLeftArrow = 0x807
+static const int KeyLeftArrow = 63495;
+//Symbian EKeyRightArrow = 0x808
+static const int KeyRightArrow = 63496;
+//Symbian EKeyUpArrow = 0x809
+static const int KeyUpArrow = 63497;
+//Symbian EKeyDownArrow = 0x80a
+static const int KeyDownArrow = 63498;
+//Symbian EKeyEnter = 0x10
+static const int KeyEnter = 0x10;
+
+MainWindow::MainWindow(QWidget* parent) :
+ QMainWindow(parent)
+ {
+ setTitle();
+ QWidget* centralWidget;
+ centralWidget = new QWidget(this);
+ centralWidget->setContextMenuPolicy(Qt::NoContextMenu);
+ setCentralWidget(centralWidget);
+ load();
+ }
+
+MainWindow::~MainWindow()
+ {
+
+ }
+
+void MainWindow::SetStyle(const QString& styleFile)
+ {
+ QFile file(styleFile);
+ bool rst = file.open(QFile::ReadOnly);
+ if(rst)
+ {
+ QString styleSheet = QLatin1String(file.readAll());
+ qApp->setStyleSheet(styleSheet);
+ }
+ file.close();
+ }
+
+void MainWindow::popupDialogAddTests()
+ {
+ dlgAddTests->clear();
+ dlgAddTests->showMaximized();
+ }
+
+void MainWindow::popupDialogSettings()
+ {
+ dlgSettings->restoreSettings();
+ dlgSettings->showMaximized();
+ }
+
+void MainWindow::popupDialogAbout()
+ {
+ dlgAbout->showMsg(tr("%1 v%2.%3.%4").arg(APPNAME) .arg(
+ SUT_MAJOR_VERSION) .arg(SUT_MINOR_VERSION).arg(SUT_BUILD_VERSION));
+ }
+
+void MainWindow::setTitle()
+ {
+ this->setWindowTitle(tr("%1 v%2.%3.%4").arg(APPNAME) .arg(
+ SUT_MAJOR_VERSION) .arg(SUT_MINOR_VERSION).arg(SUT_BUILD_VERSION));
+ }
+
+void MainWindow::load()
+ {
+ createTabWidget();
+ loadTabWidget();
+ setupTabWidgetEventHandlers();
+ createDialogs();
+ setupDialogEventHandlers();
+ createMenu();
+ setupMenuEventHandlers();
+ loadMenu();
+ setupKeyEventHandlers();
+ SetStyle(STYLESHEET);
+ }
+
+void MainWindow::createMenu()
+ {
+ atnAddTests = new QAction(tr("Add Tests"), this);
+ menuMarkUnmark = new QMenu(tr("Mark / Unmark"), this);
+ menuMarkUnmark->setEnabled(false);
+ atnMark = new QAction(tr("Mark"), menuMarkUnmark);
+ atnMarkAll = new QAction(tr("Mark All"), menuMarkUnmark);
+ atnUnmark = new QAction(tr("Unmark"), menuMarkUnmark);
+ atnUnmarkAll = new QAction(tr("Unmark All"), menuMarkUnmark);
+ atnRun = new QAction(tr("Run"), this);
+ atnRun->setEnabled(false);
+ atnSettings = new QAction(tr("Settings"), this);
+ atnAbout = new QAction(tr("About"), this);
+ atnExit = new QAction(tr("Exit"), this);
+ }
+
+void MainWindow::setupMenuEventHandlers()
+ {
+ // add tests
+ connect(atnAddTests, SIGNAL(triggered()), this,
+ SLOT(popupDialogAddTests()));
+ // Mark / Unmark single / all
+ connect(atnMark, SIGNAL(triggered()), tabWdgtTestRun,
+ SLOT(selectCurrentCase()));
+ connect(atnMarkAll, SIGNAL(triggered()), tabWdgtTestRun,
+ SLOT(selectAllCases()));
+ connect(atnUnmark, SIGNAL(triggered()), tabWdgtTestRun,
+ SLOT(deselectCurrentCase()));
+ connect(atnUnmarkAll, SIGNAL(triggered()), tabWdgtTestRun,
+ SLOT(deselectAllCases()));
+ // Run tests
+ connect(atnRun, SIGNAL(triggered()), tabWdgtTestRun, SLOT(runTests()));
+ // set options to run cases
+ connect(atnSettings, SIGNAL(triggered()), this,
+ SLOT(popupDialogSettings()));
+
+ connect(atnAbout, SIGNAL(triggered()), this, SLOT(popupDialogAbout()));
+ connect(atnExit, SIGNAL(triggered()), this, SLOT(close()));
+ }
+
+void MainWindow::createTabWidget()
+ {
+ tabWdgtTestRun = new TabWidgetTestRun(this);
+ }
+
+void MainWindow::loadMenu()
+ {
+ menuBar()->clear();
+ menuBar()->addAction(atnAddTests);
+ menuMarkUnmark->addAction(atnMark);
+ menuMarkUnmark->addAction(atnMarkAll);
+ menuMarkUnmark->addAction(atnUnmark);
+ menuMarkUnmark->addAction(atnUnmarkAll);
+ menuBar()->addAction(menuMarkUnmark->menuAction());
+ menuBar()->addAction(atnRun);
+ menuBar()->addAction(atnSettings);
+ menuBar()->addAction(atnAbout);
+ menuBar()->addAction(atnExit);
+ }
+
+void MainWindow::loadTabWidget()
+ {
+ QGridLayout* tabLayout = new QGridLayout(this);
+ tabLayout->setVerticalSpacing(2);
+ tabLayout->setHorizontalSpacing(2);
+ tabLayout->setSpacing(2);
+ tabLayout->setMargin(2);
+ tabLayout->addWidget(tabWdgtTestRun, 0, 0);
+ centralWidget()->setLayout(tabLayout);
+ }
+
+void MainWindow::setupTabWidgetEventHandlers()
+ {
+ connect(tabWdgtTestRun, SIGNAL(testsAdded()), this,
+ SLOT(enableMenuMarkUnmark()));
+ connect(tabWdgtTestRun, SIGNAL(selectedTestsChanged(bool, bool, bool)), this,
+ SLOT(setRunMarkUnmarkEnabled(bool, bool, bool)));
+ // current tab changed
+ connect(tabWdgtTestRun, SIGNAL(currentTabChangedToTests(bool)), this,
+ SLOT(changCurrentTabToTests(bool)));
+ connect(tabWdgtTestRun, SIGNAL(currentTabChangedToExecution()), this,
+ SLOT(changCurrentTabToExecution()));
+ }
+
+void MainWindow::createDialogs()
+ {
+ dlgAddTests = new DialogAddTests(this);
+ dlgSettings = new DialogSettings(this);
+ dlgAbout = new DialogMsg(this);
+ }
+
+void MainWindow::setupDialogEventHandlers()
+ {
+ connect(dlgAddTests, SIGNAL(testsSaved(QStringList)), tabWdgtTestRun,
+ SLOT(addTests(QStringList)));
+ connect(dlgSettings, SIGNAL(settingsSaved(const Settings*)),
+ tabWdgtTestRun, SLOT(saveSettings(const Settings*)));
+ }
+
+void MainWindow::changCurrentTabToTests(bool hasTests)
+ {
+ if (hasTests)
+ {
+ menuMarkUnmark->setEnabled(true);
+ }
+ }
+
+void MainWindow::changCurrentTabToExecution()
+ {
+ menuMarkUnmark->setEnabled(false);
+ }
+
+void MainWindow::setRunMarkUnmarkEnabled(bool noneSelected, bool allSelected, bool curSelected)
+ {
+ atnRun->setEnabled(!noneSelected);
+ atnUnmarkAll->setEnabled(!noneSelected);
+ atnUnmark->setEnabled(curSelected);
+ atnMark->setEnabled(!curSelected);
+ atnMarkAll->setEnabled(noneSelected || !allSelected);
+ }
+
+void MainWindow::enableMenuMarkUnmark()
+ {
+ menuMarkUnmark->setEnabled(true);
+ atnMarkAll->setEnabled(true);
+ atnMark->setEnabled(true);
+ atnUnmark->setEnabled(false);
+ atnUnmarkAll->setEnabled(false);
+ }
+
+void MainWindow::keyPressEvent(QKeyEvent* event)
+ {
+ // Handle arrow keys and selection key events
+ switch (event->nativeVirtualKey())
+ {
+ case KeyLeftArrow:
+ {
+ // TODO
+ emit this->leftArrowPressed();
+ break;
+ }
+ case KeyRightArrow:
+ {
+ // TODO
+ emit this->rightArrowPressed();
+ break;
+ }
+ case KeyUpArrow:
+ {
+ // TODO
+ emit this->upArrowPressed();
+ break;
+ }
+ case KeyDownArrow:
+ {
+ // TODO
+ emit this->downArrowPressed();
+ break;
+ }
+ case KeyEnter:
+ {
+ // TODO
+ emit this->enterPressed();
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
+
+void MainWindow::setupKeyEventHandlers()
+ {
+ connect(this, SIGNAL(leftArrowPressed()), tabWdgtTestRun,
+ SLOT(pressLeftArrow()));
+ connect(this, SIGNAL(rightArrowPressed()), tabWdgtTestRun,
+ SLOT(pressRightArrow()));
+ connect(this, SIGNAL(upArrowPressed()), tabWdgtTestRun,
+ SLOT(pressUpArrow()));
+ connect(this, SIGNAL(downArrowPressed()), tabWdgtTestRun,
+ SLOT(pressDownArrow()));
+ connect(this, SIGNAL(enterPressed()), tabWdgtTestRun, SLOT(pressEnter()));
+ }