diff -r c84cf270c54f -r 92ab7f8d0eab phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.h Fri Mar 19 09:28:42 2010 +0200 @@ -0,0 +1,243 @@ +/* + * 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: + * + */ +#ifndef CPDIVERTPLUGINGROUP_H +#define CPDIVERTPLUGINGROUP_H + +#include +#include +#include +#include +#include +#include +#include "cptelephonyutilsdefs.h" +#include "cppluginlogging.h" + + +class HbDataFormViewItem; +class PSetWrapper; +class SsSettingsWrapper; +class HbComboBox; +class PSCallDivertingCommand; +class HbListWidget; +class CpDivertItemData; + +using namespace CpTelephonyUtils; + +/*! + \class CpDivertPluginGroup + \brief The class CpDivertPluginGroup defines items shown on UI. + */ +class CpDivertPluginGroup : public CpSettingFormItemData +{ + Q_OBJECT + + enum DivertRequest{ + ActivateDivert = 0, + DeactivateDivert, + CheckDivertStatus + }; + + class CpDivertRequestQueueItem + { + public: + DivertRequest request; + CpDivertItemData *item; + }; + + +public: + + explicit CpDivertPluginGroup(CpItemDataHelper &helper); + + ~CpDivertPluginGroup(); + +public slots: + + // PSetCallDivertingWrapper signal handling + /** + Set info request results + */ + void handleDivertingChanged( + const PSCallDivertingCommand& aSetting, + bool aPlural); + + /** + Get info request results + */ + void handleDivertingStatus( + QList& divertList, + bool plural); + + /** + Request failed. + */ + void handleDivertingError(int aReason); + + /** + Adaptation has handled previous request. + */ + void divertRequestProcessed(); + + /** + Slot which handles change requests according UI. + */ + void changeDivertingStateRequested(CpDivertItemData &item); + + /** + Slot which handles item updating when it is needed. + */ + void itemShown(const QModelIndex& item); +private: + + /** + Creates group items. + */ + void createVoiceCallItems(); + + /** + Creates group items. + */ + void createVideoCallItems(); + + /** + Creates group items. + */ + void createVoIPCallItems(); + + /** + Show to user divert number query list. + */ + bool popUpVoiceNumberListQuery( + const QString& heading, QString& result); + + /** + Show to user number query. + */ + bool popUpNumberEditor( + const QString& heading, QString& result); + + + /** + Send comand to psetwrappercalldiverting. + */ + void setCallDiverting(PSCallDivertingCommand& command); + + /** + Show to user divert time out query list. + */ + bool popUpTimerQuery(int &timeout) const; + + /** + Desides which bsc parameters to use. + */ + int bscParam(); + + /** + Adds divert data item for wanted parent. + */ + void addDivertDataItem(CpDivertItemData* item, CpSettingFormItemData *parent); + + /** + Process next divert request. + */ + void processDivertingRequestQueue(); + + /** + Add new request to divert queue. + */ + void addToDivertingRequestQueue( + DivertRequest request, + CpDivertItemData &item); + + /** + Changes divertItemData data. + */ + void changeItemData( + PsCallDivertingCondition condition, + PsCallDivertingStatus status, + const QString& number, + int timeout); + + /** + Reverts divertItemData data to the last known valid values. + */ + void revertItemData(PsCallDivertingCondition condition); + +private: + + /** + Creates dialog with default parameters + */ + HbDialog* createDialog( const QString& heading ) const; + + /** + Adds item to given list widget + */ + void addItemToListWidget(HbListWidget* w, + const QString& item, const QString& data) const; + + /** + Adds item to given list widget + */ + void addItemToListWidget(HbListWidget* w, + const QString& item, const int& data) const; + + /** + Synchronizes content and status of divert options dependent from the + status of some other divert. + */ + void updateDependentDivertOptions(); + + /** + Synchronizes content and status of not available divert option based on + statuses of CFB, CFNry and CFNrc. + */ + void updateNotAvailableDivertOption(); + +private: // data + + // Setting wrappers + PSetWrapper *m_pSetWrapper; + SsSettingsWrapper *m_ssSettingsWrapper; + + // Not own + PSetCallDivertingWrapper* m_callDivertingWrapper; + + // Not owned objects + CpSettingFormItemData *m_csVoiceCallPage; + CpDivertItemData *m_DataItemAllVoiceCalls; + CpDivertItemData *m_DataItemIfBusy; + CpDivertItemData *m_DataItemIfNotAnswered; + CpDivertItemData *m_DataItemIfOutOfReach; + CpDivertItemData *m_DataItemIfNotAvailable; + int m_activeNoteId; + int m_activeProgressNoteId; + + // To prevent adding vmbx number to defaultlist + bool m_divertToVoiceMailBox; + + /** + Divert request queue + */ + QQueue m_divertRequestQueue; + + CpItemDataHelper &m_helper; +}; + +#endif // CPDIVERTPLUGINGROUP_H + +// end of file