htiui/HtiAdminQt/mainview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 09:42:37 +0300
branchRCL_3
changeset 13 822c625f7adc
parent 11 454d022d514b
child 17 65b472535a0d
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

/*
* Copyright (c) 2009 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:  Implementation of HtiAdmin main.
*
*/


#include <hbmainwindow.h>
#include <hbapplication.h>
#include <hbmenu.h>
#include <hbaction.h>
#include <hblabel.h>
#include <hbinputdialog.h>
#include <qgraphicslinearlayout.h>
//#include <HbListDialog.h>
#include <hbmessagebox.h>



#include "htienginewrapper.h"
#include "mainview.h"
#include "hbtoolbar.h"

// ---------------------------------------------------------------------------

MainView::MainView(HbMainWindow &mainWindow, HtiEngineWrapper& engineWrapper):
    mMainWindow(mainWindow),
    mEngineWrapper(engineWrapper)
{
}

// ---------------------------------------------------------------------------

MainView::~MainView()
{

}

// ---------------------------------------------------------------------------

void MainView::init(HbApplication &app)
{
    this->setTitle("Hti Admin");
    createToolbar();
    createMenu(app);
    createTexts();
    
    mEngineWrapper.updateStatuses();
    
    QString version;
    mEngineWrapper.getVersionIfo(version);
    mEngineWrapper.listCommPlugins();
    
    mHtiVersionTxt->setPlainText("Hti Version: " + version);
}

// ---------------------------------------------------------------------------
void MainView::createMenu(HbApplication& app)
{
    
    HbMenu* menu = new HbMenu();
    
    if (menu != NULL) {
        
        mActionExit = menu->addAction("Exit");
        connect(mActionExit, SIGNAL(triggered()), &app, SLOT( quit() ) );

        connect(mActionStartHti, SIGNAL(triggered()), this, SLOT( startHti() ) );
        connect(mActionStopHti, SIGNAL(triggered()), this, SLOT( stopHti() ) );
        
        mActionSelectComm = menu->addAction("Select Communication");
        connect(mActionSelectComm, SIGNAL(triggered()), this, SLOT( enableComm() ) );
        
        mActionSetPriority = menu->addAction("Set Priority");
        connect(mActionSetPriority, SIGNAL(triggered()), this, SLOT( setPriority() ) );
        
        mActionEnableAuto = menu->addAction("Enable Auto Start");
        connect(mActionEnableAuto, SIGNAL(triggered()), this, SLOT( enableAutoStart() ) );
        
        mActionDisableAuto = menu->addAction("Disable Auto Start");
        connect(mActionDisableAuto, SIGNAL(triggered()), this, SLOT( disableAutoStart() ) );
        
        mActionEnableWdog = menu->addAction("Enable Watchdog");
        connect(mActionEnableWdog, SIGNAL(triggered()), this, SLOT( enableWatchdog() ) );
                
        mActionDisableWdog = menu->addAction("Disable Watchdog");
        connect(mActionDisableWdog, SIGNAL(triggered()), this, SLOT( disableWatchdog() ) );
        
        mActionEnableConsole = menu->addAction("Enable Console");
        connect(mActionEnableConsole, SIGNAL(triggered()), this, SLOT( enableConsole() ) );
                        
		mActionDisableConsole = menu->addAction("Disable Console");
		connect(mActionDisableConsole, SIGNAL(triggered()), this, SLOT( disableConsole() ) );
		
		mActionSetParameter = menu->addAction("Set Parameter");
		connect(mActionSetParameter, SIGNAL(triggered()), this, SLOT( showParamList() ) );
        
        this->setMenu(menu);
    }
    
    
    connect(&mEngineWrapper, SIGNAL(statusChanged(HtiEngineWrapper::HtiStatus)), this, SLOT(htiStatusChanged(HtiEngineWrapper::HtiStatus)));
    connect(&mEngineWrapper, SIGNAL(commSet(QString&)), this, SLOT(commStatusChanged(QString&)));
    connect(&mEngineWrapper, SIGNAL(commDetails(QString&)), this, SLOT(commDetailsChanged(QString&)));
    connect(&mEngineWrapper, SIGNAL(autostartSet(HtiEngineWrapper::AutoStartStatus)), this, SLOT(autostartStatusChanged(HtiEngineWrapper::AutoStartStatus)));
    connect(&mEngineWrapper, SIGNAL(consoleSet(bool)), this, SLOT(consoleStatusChanged(bool)));
    connect(&mEngineWrapper, SIGNAL(watchDogSet(bool)), this, SLOT(watchDogStatusChanged(bool)));
    connect(&mEngineWrapper, SIGNAL(commPluginsRetrieved(QStringList&)), this, SLOT(updatePluginInfo(QStringList&)));
    
    
}

// ---------------------------------------------------------------------------
void MainView::createTexts()
{
	QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical, this);
	
	mCommDetailsTxt = new HbLabel(this);
	mHtiStatusTxt = new HbLabel(this);
	mHtiVersionTxt = new HbLabel(this);
	
	mHtiAutoStartStatusTxt = new HbLabel(this);
	mCommunicationTxt = new HbLabel(this);
	
	mHtiStatusTxt->setPlainText("Hti Status:");
	mHtiVersionTxt->setPlainText("Hti Version:");
	mHtiAutoStartStatusTxt->setPlainText("Auto Start:");
	mCommunicationTxt->setPlainText("Communication ");
		
	layout->addItem(mHtiStatusTxt);
	layout->addItem(mHtiVersionTxt);
	layout->addItem(mHtiAutoStartStatusTxt);
	layout->addItem(mCommunicationTxt);
	layout->addItem(mCommDetailsTxt);

	layout->setMaximumHeight(300);
	this->setLayout(layout);
}

// ---------------------------------------------------------------------------
void MainView::htiStatusChanged(HtiEngineWrapper::HtiStatus newStatus)
{
	switch(newStatus)
			{
			case HtiEngineWrapper::Running:
				mHtiStatusTxt->setPlainText("Hti Status: Running" );
				break;
			case HtiEngineWrapper::Stopped:
				mHtiStatusTxt->setPlainText("Hti Status: Stopped" );
				break;
			case HtiEngineWrapper::Panic:
				mHtiStatusTxt->setPlainText("Hti Status: Panic" );
				break;
			default:
				mHtiStatusTxt->setPlainText("Hti Status: Error" );
			}
	
	// Update menu items status
	bool isRunning = (newStatus == HtiEngineWrapper::Running);
    mActionStartHti->setEnabled(!isRunning);
    mActionStopHti->setEnabled(isRunning);
    mActionSelectComm->setEnabled(!isRunning);
    mActionSetPriority->setEnabled(!isRunning);
    mActionEnableAuto->setEnabled(!isRunning);
    mActionDisableAuto->setEnabled(!isRunning);
    mActionEnableWdog->setEnabled(!isRunning);
    mActionDisableWdog->setEnabled(!isRunning);
    mActionEnableConsole->setEnabled(!isRunning);
    mActionDisableConsole->setEnabled(!isRunning);
    mActionSetParameter->setEnabled(!isRunning);
}

// ---------------------------------------------------------------------------
void MainView::commStatusChanged(QString& newStatus)
{
	if (mCommunicationTxt) {
		mCommunicationTxt->setPlainText("Communication: " + newStatus);
	}
}

// ---------------------------------------------------------------------------
void MainView::commDetailsChanged(QString& newStatus)
{
	if (mCommDetailsTxt) {
		mCommDetailsTxt->setPlainText(newStatus);
	}
}

// ---------------------------------------------------------------------------
void MainView::updatePluginInfo(QStringList& pluginList)
{
	mPluginList = pluginList;
}

// ---------------------------------------------------------------------------
void MainView::autostartStatusChanged(HtiEngineWrapper::AutoStartStatus newStatus)
{
	switch(newStatus)
		{
		case HtiEngineWrapper::AutoStartDisabled:
			mHtiAutoStartStatusTxt->setPlainText("Auto Start: Disabled" );
			break;
		case HtiEngineWrapper::AutoStartEnabled:
			mHtiAutoStartStatusTxt->setPlainText("Auto Start: Enabled" );
			break;
		default:
			mHtiAutoStartStatusTxt->setPlainText("Auto Start: Unknown" );
		}
	
	bool isAutoStartEnabled = (newStatus == HtiEngineWrapper::AutoStartEnabled);
    mActionEnableAuto->setVisible(!isAutoStartEnabled);
    mActionDisableAuto->setVisible(isAutoStartEnabled);
}

// ---------------------------------------------------------------------------
void MainView::consoleStatusChanged(bool enabled)
{
    mActionEnableConsole->setVisible(!enabled);
    mActionDisableConsole->setVisible(enabled);
}

// ---------------------------------------------------------------------------
void MainView::watchDogStatusChanged(bool enabled)
{
    mActionEnableWdog->setVisible(!enabled);
    mActionDisableWdog->setVisible(enabled);
}


// ---------------------------------------------------------------------------

void MainView::createToolbar()
{
	mActionStartHti = toolBar()->addAction("Start Hti");
	mActionStopHti = toolBar()->addAction("Stop Hti");
}

// ---------------------------------------------------------------------------

void MainView::startHti()
{
	mEngineWrapper.startHti();
}

// ---------------------------------------------------------------------------

void MainView::stopHti()
{
	mEngineWrapper.stopHti();
}

// ---------------------------------------------------------------------------
void MainView::enableComm()
{
    //Get current selection
//	QString currentComm;
//	mEngineWrapper.getSelectedComm(currentComm);
//	int curSelection = mPluginList.indexOf(currentComm, 0);
//	
//	QStringList selection;
//	bool ok = false;
//	selection = HbListDialog::getStringItems("Select Comm", mPluginList, curSelection, &ok, HbAbstractItemView::SingleSelection);
//		
//	if(ok){
//			if(selection[0] == QString("Bt serial comm")){
//				enableBTComm();
//			}
//			else if(selection[0] == QString("IP comm")){
//				enableIPComm();
//			}
//			else if(selection[0] == QString("SERIAL comm")){
//				enableSerialComm();
//			}
//			else{
//				//All other comm plugins
//				mEngineWrapper.enableOtherComm(selection[0]);
//			}	
//		}
}

// ---------------------------------------------------------------------------
void MainView::enableSerialComm()
{
//	bool ok = false;
//    QString str = HbInputDialog::getText(
//					"Set Comm Port number ",
//					"",
//					&ok);
//    
//    if(ok){
//    	mEngineWrapper.enableSerial(str);
//    }
}


// ---------------------------------------------------------------------------
void MainView::enableIPComm()
{
    // Get IAPs list
//    QStringList iapsList;
//    mEngineWrapper.listIAPs(iapsList); 
//    if(iapsList.count() == 0)
//    {
//        HbMessageBox msg("No IAPs for selection!", HbMessageBox::MessageTypeWarning);
//        msg.exec();
//        return;
//    }
//    
//    // Get current selection
//    QString curIapName;
//    QString param = "IAPName";
//    mEngineWrapper.getIPCfgParam(param, curIapName);
//    int curSelction = iapsList.indexOf(curIapName, 0);
//    
//    QString iap;
//	QStringList selection;
//	bool ok = false;
//	selection = HbListDialog::getStringItems("Select IAP:", iapsList, curSelction, &ok, HbAbstractItemView::SingleSelection);
//	
//	if(ok)
//	{
//        iap = selection[0];
//	}
//	else
//	{
//        return;
//	}
//	
//	QStringList srcList;
//	srcList <<"Listen" <<"Connect";
//	
//	selection = HbListDialog::getStringItems("Select IP Comm", srcList, 0, &ok, HbAbstractItemView::SingleSelection);
//	
//	if(ok){
//		if(selection[0] == srcList[0]){
//			QString port = HbInputDialog::getText(
//								"Local port",
//								"",
//								&ok);	
//		
//			if(ok){
//				mEngineWrapper.ipListen(port, iap);
//			}
//			
//		}
//		else{
//			QString host = HbInputDialog::getText(
//								"Remote Host",
//								"",
//								&ok);	
//					
//			if(ok){
//				QString port = HbInputDialog::getText(
//												"Remote port",
//												"",
//												&ok);	
//			
//				if(ok){
//					mEngineWrapper.ipConnect(host, port, iap);
//				}
//			}
//		}
//			
//	}
}

// ---------------------------------------------------------------------------
void MainView::enableBTComm()
{
//	QStringList srcList;
//	QStringList selection;
//	 
//	srcList <<"BT address" <<"BT name" <<"Search when starting" ;
//	
//	bool ok = false;
//	selection = HbListDialog::getStringItems("", srcList, 0, &ok, HbAbstractItemView::SingleSelection);
//	
//	if(ok){
//		if(selection[0] == srcList[0]){
//			QString address = HbInputDialog::getText(
//						"BT address",
//						"",
//						&ok);
//		
//			if(ok){
//				mEngineWrapper.enableBtByAddress(address);	
//			}
//		}
//		else if(selection[0] == srcList[1]){
//			QString name = HbInputDialog::getText(
//								"BT name",
//								"",
//								&ok);
//				
//					if(ok){
//						mEngineWrapper.enableBtByName(name);	
//					}
//		}
//		else if(selection[0] == srcList[2]){
//			mEngineWrapper.btSearch();
//		}
//	}
}


// ---------------------------------------------------------------------------
void MainView::setPriority()
{
    // Get current priority
//    bool ok = false;
//    QString curPriority;
//    QString param = "Priority";
//    mEngineWrapper.getHtiCfgParam(param, curPriority);
//    int curSelection = curPriority.toInt(&ok);
//    if(ok){
//        curSelection--;
//    }
//    else{
//    curSelection = 2;
//    }
//    
//	QStringList srcList;
//	QStringList selection;
//	 
//	srcList <<"Backgroung" <<"Foregound" <<"High" << "Absolute High";
//	
//	
//	selection = HbListDialog::getStringItems("Select Hti Priority", srcList, curSelection, &ok, HbAbstractItemView::SingleSelection);
//	
//	if(ok){
//		if(selection[0] == srcList[0]){
//			mEngineWrapper.setPriorityBackground();
//		}
//		else if(selection[0] == srcList[1]){
//					mEngineWrapper.setPriorityForeground();
//		}
//		else if(selection[0] == srcList[2]){
//			mEngineWrapper.setPriorityHigh();
//		}
//		else{
//			mEngineWrapper.setPriorityAbsoluteHigh();
//		}	
//	}
}

// ---------------------------------------------------------------------------
void MainView::enableAutoStart()
{
	mEngineWrapper.autoStartEnable(true);
}

// ---------------------------------------------------------------------------
void MainView::disableAutoStart()
{
	mEngineWrapper.autoStartEnable(false);
}

// ---------------------------------------------------------------------------
void MainView::enableWatchdog()
{
	mEngineWrapper.watchDogEnable(true);
}

// ---------------------------------------------------------------------------
void MainView::disableWatchdog()
{
	mEngineWrapper.watchDogEnable(false);
}

// ---------------------------------------------------------------------------
void MainView::enableConsole()
{
	mEngineWrapper.consoleEnable(true);
}

// ---------------------------------------------------------------------------
void MainView::disableConsole()
{
	mEngineWrapper.consoleEnable(false);
}

// ---------------------------------------------------------------------------
void MainView::showParamList()
{
//	QStringList srcList;
//	QStringList selection;
//	QString value;
//	QString name;
//	QString cfgSelection;
//	QString paramSelection;
//	QString cfgHti = "Hti.cfg";
//	QString cfgBtComm ="HtiBtComm.cfg";
//	QString cfgSerialComm = "HtiSerialComm.cfg";
//	QString cfgIPComm = "HtiIPComm.cfg";
//	 
//	srcList <<cfgHti <<cfgBtComm <<cfgSerialComm << cfgIPComm;
//	
//	bool ok = false;
//	selection = HbListDialog::getStringItems("Select cfg file to modify", srcList, 0, &ok, HbAbstractItemView::SingleSelection);
//	
//	if(ok){
//        cfgSelection = selection[0];
//        srcList.clear();
//	    if(cfgSelection == cfgHti){
//	    srcList <<"CommPlugin" <<"MaxMsgSize" <<"MaxQueueSize" <<"MaxHeapSize"<<"Priority"
//	            <<"ShowConsole"<<"MaxWaitTime"<<"StartUpDelay"<<"EnableHtiWatchDog"
//	            <<"EnableHtiAutoStart"<<"ShowErrorDialogs"<<"ReconnectDelay";
//	    }
//	    else if(cfgSelection == cfgBtComm){
//	        srcList <<"BtDeviceName" <<"BtDeviceName";
//	    }
//	    else if(cfgSelection == cfgSerialComm){
//            srcList <<"CommPort" <<"DataRate"<<"Parity"<<"DataBits"<<"StopBits"<<"SendDelay"<<"Handshake";
//	    }
//	    else{
//	    srcList <<"IAPName"<<"LocalPort"<<"RemoteHost"<<"RemotePort"<<"ConnectTimeout";
//	    }
//	    
//	    selection = HbListDialog::getStringItems("Select a parameter name in" + cfgSelection, srcList, 0, &ok, HbAbstractItemView::SingleSelection);
//	}
//    
//    if(ok){
//        name = selection[0];
//        value = HbInputDialog::getText("Value for paramater " + name, "", &ok);
//    }
//    
//    if(ok){
//       if(cfgSelection == cfgHti){
//            mEngineWrapper.setHtiCfgParam(name, value);
//        }
//        else if(cfgSelection == cfgBtComm){
//            mEngineWrapper.setBtCfgParam(name, value);
//        }
//        else if(cfgSelection == cfgSerialComm){
//            mEngineWrapper.setSerialCfgParam(name, value);
//        }
//        else{
//            mEngineWrapper.setIPCfgParam(name, value);
//        }   
//    }
}