35 |
35 |
36 #include <cmapplsettingsui.h> |
36 #include <cmapplsettingsui.h> |
37 #include <cmmanagerdefines_shim.h> |
37 #include <cmmanagerdefines_shim.h> |
38 #include <qnetworkconfigmanager.h> |
38 #include <qnetworkconfigmanager.h> |
39 #include <qnetworkconfiguration.h> |
39 #include <qnetworkconfiguration.h> |
40 |
40 #include <qservicemanager.h> |
41 |
41 |
42 #include "nmipssettingshelper.h" |
42 #include "nmipssettingshelper.h" |
43 #include "nmipssettingsmanagerbase.h" |
43 #include "nmipssettingsmanagerbase.h" |
44 #include "nmipssettingscustomitem.h" |
44 #include "nmipssettingscustomitem.h" |
45 #include "nmipsextendedsettingsmanager.h" |
45 #include "nmipsextendedsettingsmanager.h" |
46 |
46 |
47 // CONSTANTS |
47 // CONSTANTS |
48 |
48 |
49 // Dynamic receiving schedule group items. |
49 // Dynamic receiving schedule items. |
50 const IpsServices::SettingItem NmIpsSettingsReceivingSchedule[] = { |
50 const IpsServices::SettingItem NmIpsSettingsReceivingScheduleItems[] = { |
51 IpsServices::ReceptionInboxSyncWindow, |
51 IpsServices::ReceptionInboxSyncWindow, |
52 IpsServices::ReceptionWeekDays, |
52 IpsServices::ReceptionWeekDays, |
53 IpsServices::ReceptionDayStartTime, |
53 IpsServices::ReceptionDayStartTime, |
54 IpsServices::ReceptionDayEndTime, |
54 IpsServices::ReceptionDayEndTime, |
55 IpsServices::ReceptionRefreshPeriodDayTime}; |
55 IpsServices::ReceptionRefreshPeriodDayTime}; |
|
56 |
|
57 // Dynamic receiving schedule item count. |
|
58 const int NmIpsSettingsReceivingScheduleItemCount( |
|
59 sizeof(NmIpsSettingsReceivingScheduleItems) / sizeof(NmIpsSettingsReceivingScheduleItems[0])); |
|
60 |
|
61 // Index of ReceptionDayStartTime in NmIpsSettingsReceivingScheduleItems array. |
|
62 const int NmIpsSettingsIndexOfReceptionDayStartTime(2); |
|
63 |
|
64 // Index of user defined mode. |
|
65 const int NmIpsSettingsIndexOfUserDefinedMode(3); |
|
66 |
|
67 // Receving schedule item not found value. |
|
68 const int NmIpsSettingsRecevingScheduleItemNotFound(-1); |
|
69 |
|
70 |
56 |
71 |
57 QTM_USE_NAMESPACE |
72 QTM_USE_NAMESPACE |
58 |
73 |
59 |
74 |
60 /*! |
75 /*! |
322 } |
343 } |
323 |
344 |
324 /*! |
345 /*! |
325 Creates the setting items under the Serverinfo group items user authentication. |
346 Creates the setting items under the Serverinfo group items user authentication. |
326 */ |
347 */ |
327 void NmIpsSettingsHelper::createServerInfoGroupDynamicItems() |
348 void NmIpsSettingsHelper::createServerInfoGroupDynamicItems(bool hiddenItem) |
328 { |
349 { |
329 HbDataFormModelItem *item = mContentItems.value(IpsServices::SMTPAuthentication); |
350 HbDataFormModelItem *item = mContentItems.value(IpsServices::SMTPAuthentication); |
330 int insertIndex = mServerInfoGroupItem->indexOf(item) + 1; |
351 int insertIndex = mServerInfoGroupItem->indexOf(item) + 1; |
331 |
352 |
332 // Username |
353 // Username |
333 QVariant username; |
354 QVariant username; |
334 mSettingsManager.readSetting(IpsServices::OutgoingLoginName, username); |
355 mSettingsManager.readSetting(IpsServices::OutgoingLoginName, username); |
335 CpSettingFormItemData *usernameItem = new CpSettingFormItemData( |
356 CpSettingFormItemData *usernameItem = new CpSettingFormItemData( |
336 HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_username")); |
357 HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_username")); |
337 insertContentItem(IpsServices::OutgoingLoginName, usernameItem); |
358 insertContentItem(IpsServices::OutgoingLoginName, usernameItem); |
338 usernameItem->setContentWidgetData(QString("text"), username); |
359 usernameItem->setContentWidgetData("text", username); |
339 mDataForm.addConnection(usernameItem, SIGNAL(editingFinished()), |
360 mDataForm.addConnection(usernameItem, SIGNAL(editingFinished()), |
340 this, SLOT(saveOutgoingUserName())); |
361 this, SLOT(saveOutgoingUserName())); |
341 mDataForm.addConnection(usernameItem, SIGNAL(textChanged(QString)), |
362 mDataForm.addConnection(usernameItem, SIGNAL(textChanged(QString)), |
342 this, SLOT(outgoingUserNameTextChange(QString))); |
363 this, SLOT(outgoingUserNameTextChange(QString))); |
|
364 if (hiddenItem) { // Starred and dimmed. |
|
365 usernameItem->setContentWidgetData("echoMode", HbLineEdit::Password); |
|
366 usernameItem->setEnabled(false); |
|
367 } |
343 mServerInfoGroupItem->insertChild(insertIndex, usernameItem); |
368 mServerInfoGroupItem->insertChild(insertIndex, usernameItem); |
344 |
369 |
345 // Password |
370 // Password |
346 QVariant password; |
371 QVariant password; |
347 mSettingsManager.readSetting(IpsServices::OutgoingPassword, password); |
372 mSettingsManager.readSetting(IpsServices::OutgoingPassword, password); |
348 CpSettingFormItemData *passwordItem = new CpSettingFormItemData( |
373 CpSettingFormItemData *passwordItem = new CpSettingFormItemData( |
349 HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password")); |
374 HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password")); |
350 insertContentItem(IpsServices::OutgoingPassword, passwordItem); |
375 insertContentItem(IpsServices::OutgoingPassword, passwordItem); |
351 passwordItem->setContentWidgetData(QString("text"), password); |
376 passwordItem->setContentWidgetData("text", password); |
352 passwordItem->setContentWidgetData(QString("echoMode"), HbLineEdit::PasswordEchoOnEdit); |
377 passwordItem->setContentWidgetData("echoMode", HbLineEdit::PasswordEchoOnEdit); |
353 mDataForm.addConnection(passwordItem, SIGNAL(editingFinished()), |
378 mDataForm.addConnection(passwordItem, SIGNAL(editingFinished()), |
354 this, SLOT(saveOutgoingPassword())); |
379 this, SLOT(saveOutgoingPassword())); |
355 mServerInfoGroupItem->insertChild(insertIndex + 1, passwordItem); |
380 mServerInfoGroupItem->insertChild(insertIndex + 1, passwordItem); |
356 |
381 |
357 mServerInfoDynamicItemsVisible = true; |
382 mServerInfoDynamicItemsVisible = true; |
459 { |
487 { |
460 if (mCurrentLineEditChanged) { |
488 if (mCurrentLineEditChanged) { |
461 emit goOffline(mSettingsManager.mailboxId()); |
489 emit goOffline(mSettingsManager.mailboxId()); |
462 mEmitOnline = true; |
490 mEmitOnline = true; |
463 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingLoginName); |
491 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingLoginName); |
464 QVariant username = item->contentWidgetData(QString("text")); |
492 QVariant username = item->contentWidgetData("text"); |
465 mSettingsManager.writeSetting(IpsServices::IncomingLoginName, username); |
493 mSettingsManager.writeSetting(IpsServices::IncomingLoginName, username); |
466 // Outgoing username needs to be updated if it is set as Same as Incoming. |
494 // Outgoing username needs to be updated if it is set as Same as Incoming. |
467 item = mContentItems.value(IpsServices::SMTPAuthentication); |
495 item = mContentItems.value(IpsServices::SMTPAuthentication); |
468 QVariant selected = item->contentWidgetData(QString("selected")); |
496 QVariant selected = item->contentWidgetData("selected"); |
469 if (selected.toInt() == IpsServices::EMailAuthSameAsIncoming) { |
497 if (selected.toInt() == IpsServices::EMailAuthSameAsIncoming) { |
470 mSettingsManager.writeSetting(IpsServices::OutgoingLoginName, username); |
498 mSettingsManager.writeSetting(IpsServices::OutgoingLoginName, username); |
471 } |
499 } |
472 } |
500 } |
473 mCurrentLineEditChanged = false; |
501 mCurrentLineEditChanged = false; |
535 void NmIpsSettingsHelper::saveOutgoingPassword() |
563 void NmIpsSettingsHelper::saveOutgoingPassword() |
536 { |
564 { |
537 emit goOffline(mSettingsManager.mailboxId()); |
565 emit goOffline(mSettingsManager.mailboxId()); |
538 mEmitOnline = true; |
566 mEmitOnline = true; |
539 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPassword); |
567 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPassword); |
540 QVariant data = item->contentWidgetData(QString("text")); |
568 QVariant data = item->contentWidgetData("text"); |
541 mSettingsManager.writeSetting(IpsServices::OutgoingPassword, data); |
569 mSettingsManager.writeSetting(IpsServices::OutgoingPassword, data); |
542 } |
570 } |
543 /*! |
571 /*! |
544 Saves the Reply to value into database if user has changed the value. |
572 Saves the Reply to value into database if user has changed the value. |
545 */ |
573 */ |
546 void NmIpsSettingsHelper::saveReplyTo() |
574 void NmIpsSettingsHelper::saveReplyTo() |
547 { |
575 { |
548 if (mCurrentLineEditChanged) { |
576 if (mCurrentLineEditChanged) { |
549 HbDataFormModelItem *item = mContentItems.value(IpsServices::ReplyAddress); |
577 HbDataFormModelItem *item = mContentItems.value(IpsServices::ReplyAddress); |
550 QVariant data = item->contentWidgetData(QString("text")); |
578 QVariant data = item->contentWidgetData("text"); |
551 mSettingsManager.writeSetting(IpsServices::ReplyAddress, data); |
579 mSettingsManager.writeSetting(IpsServices::ReplyAddress, data); |
552 } |
580 } |
553 mCurrentLineEditChanged = false; |
581 mCurrentLineEditChanged = false; |
554 } |
582 } |
555 |
583 |
643 QHash<QString, QVariant> data = item->contentWidgetData(); |
675 QHash<QString, QVariant> data = item->contentWidgetData(); |
644 data.remove("text"); |
676 data.remove("text"); |
645 item->setData(HbDataFormModelItem::PropertyRole, data); |
677 item->setData(HbDataFormModelItem::PropertyRole, data); |
646 } |
678 } |
647 |
679 |
648 // Read receiving schedule dynamic group item values and |
680 // Read receiving schedule item values and |
649 // make a decision based on those if item should be visible or not. |
681 // make a decision based on those if item should be visible or not. |
650 const int dynamicGroupItemsCount( |
682 mAbortDynamicRSItemHandling = false; |
651 sizeof(NmIpsSettingsReceivingSchedule) / sizeof(NmIpsSettingsReceivingSchedule[0])); |
683 for (int index(0); (index < NmIpsSettingsReceivingScheduleItemCount) && |
652 |
684 !mAbortDynamicRSItemHandling; ++index) { |
653 for (int itemIndex(0); itemIndex < dynamicGroupItemsCount; ++itemIndex) { |
685 |
|
686 // Read setting value from active profile |
654 QVariant setting; |
687 QVariant setting; |
655 // Read setting value from active profile |
688 IpsServices::SettingItem item(NmIpsSettingsReceivingScheduleItems[index]); |
656 IpsServices::SettingItem item(NmIpsSettingsReceivingSchedule[itemIndex]); |
|
657 mSettingsManager.readSetting(item, setting); |
689 mSettingsManager.readSetting(item, setting); |
658 |
690 |
659 // If setting value is not valid (-1=N/A) then remove setting item. |
691 // If setting value is not valid (-1=N/A) then remove setting item. |
660 int value = setting.toInt(); |
692 if (setting.toInt() != NmIpsSettingsRecevingScheduleItemNotFound) { |
661 if (value != -1) { |
|
662 createOrUpdateReceivingScheduleGroupDynamicItem(item); |
693 createOrUpdateReceivingScheduleGroupDynamicItem(item); |
663 } else { |
694 } else { |
664 deleteReceivingScheduleGroupDynamicItem(item); |
695 deleteReceivingScheduleGroupDynamicItem(item); |
665 } |
696 } |
666 } |
697 } |
667 |
|
668 updateShowMailInMailbox(); |
698 updateShowMailInMailbox(); |
669 } |
699 } |
670 |
700 |
671 /*! |
701 /*! |
672 Returns state if online should be emited. |
702 Returns state if online should be emited. |
782 */ |
812 */ |
783 void NmIpsSettingsHelper::outgoingMailServerTextChange(const QString &text) |
813 void NmIpsSettingsHelper::outgoingMailServerTextChange(const QString &text) |
784 { |
814 { |
785 Q_UNUSED(text); |
815 Q_UNUSED(text); |
786 mCurrentLineEditChanged = true; |
816 mCurrentLineEditChanged = true; |
|
817 } |
|
818 |
|
819 void NmIpsSettingsHelper::handleModelDataChange(QModelIndex startIn, QModelIndex endIn) |
|
820 { |
|
821 Q_UNUSED(endIn); |
|
822 HbDataFormModelItem *item = mDataFormModel.itemFromIndex(startIn); |
|
823 |
|
824 if(item == mContentItems.value(IpsServices::IncomingSecureSockets)) { |
|
825 QVariant data = item->contentWidgetData("selected"); |
|
826 incomingSecureConnectionItemChange(data.toInt()); |
|
827 } |
|
828 else if(item == mContentItems.value(IpsServices::IncomingPort)) { |
|
829 QVariant data = item->contentWidgetData("selected"); |
|
830 incomingPortChange(data.toInt()); |
|
831 } |
|
832 else if(item == mContentItems.value(IpsServices::OutgoingSecureSockets)) { |
|
833 QVariant data = item->contentWidgetData("selected"); |
|
834 outgoingSecureConnectionItemChange(data.toInt()); |
|
835 } |
|
836 else if(item == mContentItems.value(IpsServices::OutgoingPort)) { |
|
837 QVariant data = item->contentWidgetData("selected"); |
|
838 outgoingPortChange(data.toInt()); |
|
839 } |
|
840 else if(item == mContentItems.value(IpsServices::SMTPAuthentication)) { |
|
841 QVariant data = item->contentWidgetData("selected"); |
|
842 outgoingAuthenticationChange(data.toInt()); |
|
843 } |
|
844 else if(item == mContentItems.value(IpsServices::FolderPath)) { |
|
845 QVariant data = item->contentWidgetData("selected"); |
|
846 folderPathChange(data.toInt()); |
|
847 } |
787 } |
848 } |
788 |
849 |
789 /*! |
850 /*! |
790 Saves the incoming port value into database if user has changed the value. If the user wish to |
851 Saves the incoming port value into database if user has changed the value. If the user wish to |
791 define the port, a input dialog is shown. |
852 define the port, a input dialog is shown. |
792 \param index Used to determine if the default value or a user defined value should be written |
853 \param index Used to determine if the default value or a user defined value should be written |
793 */ |
854 */ |
794 void NmIpsSettingsHelper::incomingPortChange(int index) |
855 void NmIpsSettingsHelper::incomingPortChange(int index) |
795 { |
856 { |
796 if (mRadioButtonPreviousIndex != index && index == IpsServices::NmIpsSettingsDefault) { |
857 int previousindex = getCorrectIncomingPortRadioButtonIndex(); |
797 emit goOffline(mSettingsManager.mailboxId()); |
858 |
798 mEmitOnline = true; |
859 if (previousindex != index ) { |
799 int port = mSettingsManager.determineDefaultIncomingPort(); |
860 if (index == IpsServices::NmIpsSettingsDefault) { |
800 mSettingsManager.writeSetting(IpsServices::IncomingPort, port); |
861 emit goOffline(mSettingsManager.mailboxId()); |
801 } else if (index == IpsServices::NmIpsSettingsUserDefined) { |
862 mEmitOnline = true; |
802 showIncomingPortInputDialog(); |
863 int port = mSettingsManager.determineDefaultIncomingPort(); |
|
864 mSettingsManager.writeSetting(IpsServices::IncomingPort, port); |
|
865 } else if (index == IpsServices::NmIpsSettingsUserDefined) { |
|
866 showIncomingPortInputDialog(); |
|
867 } |
803 } |
868 } |
804 } |
869 } |
805 |
870 |
806 /*! |
871 /*! |
807 Shows an input dialog for allowing the user to specify a incoming port. |
872 Shows an input dialog for allowing the user to specify a incoming port. |
831 /*! |
896 /*! |
832 Handles the saving of the port new value. |
897 Handles the saving of the port new value. |
833 */ |
898 */ |
834 void NmIpsSettingsHelper::handleUserDefinedIncomingPortInput(HbAction *action) |
899 void NmIpsSettingsHelper::handleUserDefinedIncomingPortInput(HbAction *action) |
835 { |
900 { |
|
901 int previousindex = getCorrectIncomingPortRadioButtonIndex(); |
|
902 |
836 if (action == mIncomingPortInputDialog->actions().at(0)) { |
903 if (action == mIncomingPortInputDialog->actions().at(0)) { |
837 QVariant newPort = mIncomingPortInputDialog->value(); |
904 QVariant newPort = mIncomingPortInputDialog->value(); |
838 emit goOffline(mSettingsManager.mailboxId()); |
905 emit goOffline(mSettingsManager.mailboxId()); |
839 mEmitOnline = true; |
906 mEmitOnline = true; |
840 mSettingsManager.writeSetting(IpsServices::IncomingPort, newPort); |
907 mSettingsManager.writeSetting(IpsServices::IncomingPort, newPort); |
841 } else { |
908 } else { |
842 //set selected value back if user canceled. |
909 //set selected value back if user canceled. |
843 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingPort); |
910 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingPort); |
844 item->setContentWidgetData(QString("selected"), mRadioButtonPreviousIndex); |
911 item->setContentWidgetData("selected", previousindex); |
845 } |
912 } |
846 } |
913 } |
847 |
914 |
848 /*! |
915 /*! |
849 Used for getting the index to display in the port radio button list |
916 Used for getting the index to display in the port radio button list |
850 \return index Used to set the selected value |
917 \return index Used to set the selected value |
851 */ |
918 */ |
852 int NmIpsSettingsHelper::getCorrectPortRadioButtonIndex(int currentPort) |
919 int NmIpsSettingsHelper::getCorrectIncomingPortRadioButtonIndex() |
853 { |
920 { |
|
921 QVariant incomingPort; |
|
922 mSettingsManager.readSetting(IpsServices::IncomingPort, incomingPort); |
854 int index = 0; |
923 int index = 0; |
855 int port = mSettingsManager.determineDefaultIncomingPort(); |
924 int port = mSettingsManager.determineDefaultIncomingPort(); |
856 if (port == currentPort) { |
925 if (port == incomingPort.toInt()) { |
857 index = IpsServices::NmIpsSettingsDefault; |
926 index = IpsServices::NmIpsSettingsDefault; |
858 } else { |
927 } else { |
859 index = IpsServices::NmIpsSettingsUserDefined; |
928 index = IpsServices::NmIpsSettingsUserDefined; |
860 } |
929 } |
861 return index; |
930 return index; |
862 } |
931 } |
863 |
932 |
864 /*! |
933 /*! |
865 Sets the previous index value to indicate that user has edited the field |
|
866 \param text Reference to the item in the radio button list. |
|
867 */ |
|
868 void NmIpsSettingsHelper::incomingPortPress(const QModelIndex &index) |
|
869 { |
|
870 Q_UNUSED(index); |
|
871 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingPort); |
|
872 QVariant data = item->contentWidgetData(QString("selected")); |
|
873 mRadioButtonPreviousIndex = data.toInt(); |
|
874 } |
|
875 |
|
876 /*! |
|
877 Saves the incoming secure connection value into database if user has changed the value. |
934 Saves the incoming secure connection value into database if user has changed the value. |
878 */ |
935 */ |
879 void NmIpsSettingsHelper::incomingSecureConnectionItemChange(int index) |
936 void NmIpsSettingsHelper::incomingSecureConnectionItemChange(int index) |
880 { |
937 { |
881 if (mRadioButtonPreviousIndex != index) { |
938 int previousindex = getCorrectIncomingSecureRadioButtonIndex(); |
|
939 |
|
940 if (previousindex != index) { |
882 emit goOffline(mSettingsManager.mailboxId()); |
941 emit goOffline(mSettingsManager.mailboxId()); |
883 mEmitOnline = true; |
942 mEmitOnline = true; |
884 switch (index) { |
943 switch (index) { |
885 case IpsServices::EMailStartTls: // On (Start TLS) |
944 case IpsServices::EMailStartTls: // On (Start TLS) |
886 mSettingsManager.writeSetting(IpsServices::IncomingSecureSockets, true); |
945 mSettingsManager.writeSetting(IpsServices::IncomingSecureSockets, true); |
887 mSettingsManager.writeSetting(IpsServices::IncomingSSLWrapper, false); |
946 mSettingsManager.writeSetting(IpsServices::IncomingSSLWrapper, false); |
888 break; |
947 break; |
889 |
948 |
890 case IpsServices::EMailSslTls: // On (SSL/TLS) |
949 case IpsServices::EMailSslTls: // On (SSL/TLS) |
891 mSettingsManager.writeSetting(IpsServices::IncomingSecureSockets, false); |
950 mSettingsManager.writeSetting(IpsServices::IncomingSecureSockets, false); |
892 mSettingsManager.writeSetting(IpsServices::IncomingSSLWrapper, true); |
951 mSettingsManager.writeSetting(IpsServices::IncomingSSLWrapper, true); |
893 break; |
952 break; |
894 |
953 |
895 case IpsServices::EMailSecurityOff: // Off |
954 case IpsServices::EMailSecurityOff: // Off |
896 mSettingsManager.writeSetting(IpsServices::IncomingSecureSockets, false); |
955 mSettingsManager.writeSetting(IpsServices::IncomingSecureSockets, false); |
897 mSettingsManager.writeSetting(IpsServices::IncomingSSLWrapper, false); |
956 mSettingsManager.writeSetting(IpsServices::IncomingSSLWrapper, false); |
898 break; |
957 break; |
899 |
958 |
900 default: |
959 default: |
901 break; |
960 break; |
902 } |
961 } |
903 // Update incoming port value only if default incoming port used |
962 // Update incoming port value only if default incoming port used |
904 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingPort); |
963 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingPort); |
905 QVariant data = item->contentWidgetData(QString("selected")); |
964 QVariant data = item->contentWidgetData("selected"); |
906 // Default incoming port selected |
965 // Default incoming port selected |
907 if (data.toInt() == IpsServices::NmIpsSettingsDefault) { |
966 if (data.toInt() == IpsServices::NmIpsSettingsDefault) { |
908 int port = mSettingsManager.determineDefaultIncomingPort(); |
967 int port = mSettingsManager.determineDefaultIncomingPort(); |
909 mSettingsManager.writeSetting(IpsServices::IncomingPort, port); |
968 mSettingsManager.writeSetting(IpsServices::IncomingPort, port); |
910 } |
969 } |
911 } |
970 } |
912 } |
|
913 |
|
914 /*! |
|
915 Sets the previous index value to indicate that user has edited the field. |
|
916 \param text Reference to the item in the radio button list. |
|
917 */ |
|
918 void NmIpsSettingsHelper::incomingSecureConnectionPress(const QModelIndex &index) |
|
919 { |
|
920 Q_UNUSED(index); |
|
921 HbDataFormModelItem *item = mContentItems.value(IpsServices::IncomingSecureSockets); |
|
922 QVariant data = item->contentWidgetData(QString("selected")); |
|
923 mRadioButtonPreviousIndex = data.toInt(); |
|
924 } |
971 } |
925 |
972 |
926 /*! |
973 /*! |
927 Used for getting the index to display in the secure connection radio button list. |
974 Used for getting the index to display in the secure connection radio button list. |
928 \return index Used to set the selected value |
975 \return index Used to set the selected value |
929 */ |
976 */ |
930 int NmIpsSettingsHelper::getCorrectSecureRadioButtonIndex(QVariant secureSockets, |
977 int NmIpsSettingsHelper::getCorrectIncomingSecureRadioButtonIndex() |
931 QVariant secureSSLWrapper) |
978 { |
932 { |
979 QVariant secureSockets; |
|
980 QVariant secureSSLWrapper; |
|
981 mSettingsManager.readSetting(IpsServices::IncomingSecureSockets, secureSockets); |
|
982 mSettingsManager.readSetting(IpsServices::IncomingSSLWrapper, secureSSLWrapper); |
|
983 |
933 IpsServices::TIpsSetDataSecurityTypes securityType = IpsServices::EMailStartTls; |
984 IpsServices::TIpsSetDataSecurityTypes securityType = IpsServices::EMailStartTls; |
934 // secureSockets == True |
985 // secureSockets == True |
935 if (secureSockets.toBool()) { |
986 if (secureSockets.toBool()) { |
936 securityType = IpsServices::EMailStartTls; |
987 securityType = IpsServices::EMailStartTls; |
937 } |
988 } |
945 } |
996 } |
946 return securityType; |
997 return securityType; |
947 } |
998 } |
948 |
999 |
949 /*! |
1000 /*! |
|
1001 Used for getting the index to display in the secure connection radio button list. |
|
1002 \return index Used to set the selected value |
|
1003 */ |
|
1004 int NmIpsSettingsHelper::getCorrectOutgoingSecureRadioButtonIndex() |
|
1005 { |
|
1006 QVariant secureSockets; |
|
1007 QVariant secureSSLWrapper; |
|
1008 mSettingsManager.readSetting(IpsServices::OutgoingSecureSockets, secureSockets); |
|
1009 mSettingsManager.readSetting(IpsServices::OutgoingSSLWrapper, secureSSLWrapper); |
|
1010 |
|
1011 IpsServices::TIpsSetDataSecurityTypes securityType = IpsServices::EMailStartTls; |
|
1012 // secureSockets == True |
|
1013 if (secureSockets.toBool()) { |
|
1014 securityType = IpsServices::EMailStartTls; |
|
1015 } |
|
1016 // secureSockets == False & secureSSLWrapper == True |
|
1017 else if (secureSSLWrapper.toBool()) { |
|
1018 securityType = IpsServices::EMailSslTls; |
|
1019 } |
|
1020 // secureSockets == False & secureSSLWrapper == False |
|
1021 else { |
|
1022 securityType = IpsServices::EMailSecurityOff; |
|
1023 } |
|
1024 return securityType; |
|
1025 } |
|
1026 |
|
1027 /*! |
950 Saves the folderpath value into database if user has changed the value. |
1028 Saves the folderpath value into database if user has changed the value. |
951 */ |
1029 */ |
952 void NmIpsSettingsHelper::folderPathChange(int index) |
1030 void NmIpsSettingsHelper::folderPathChange(int index) |
953 { |
1031 { |
954 if (mRadioButtonPreviousIndex != index && index == IpsServices::NmIpsSettingsDefault) { |
1032 int previousindex = getCorrectFolderPathRadioButtonIndex(); |
955 // Empty string sets the folder path to default. |
1033 |
956 mSettingsManager.writeSetting(IpsServices::FolderPath, QString("")); |
1034 if (previousindex != index ) { |
957 } else if (index == IpsServices::NmIpsSettingsUserDefined) { |
1035 if (index == IpsServices::NmIpsSettingsDefault) { |
958 showFolderPathInputDialog(); |
1036 // Empty string sets the folder path to default. |
|
1037 mSettingsManager.writeSetting(IpsServices::FolderPath, ""); |
|
1038 } else if (index == IpsServices::NmIpsSettingsUserDefined) { |
|
1039 showFolderPathInputDialog(); |
|
1040 } |
959 } |
1041 } |
960 } |
1042 } |
961 |
1043 |
962 /*! |
1044 /*! |
963 Show a input dialog for allowing the user to specify a folder path. |
1045 Show a input dialog for allowing the user to specify a folder path. |
982 /*! |
1064 /*! |
983 Handels the saving of the folder path new value. |
1065 Handels the saving of the folder path new value. |
984 */ |
1066 */ |
985 void NmIpsSettingsHelper::handleUserDefinedFolderPathInput(HbAction *action) |
1067 void NmIpsSettingsHelper::handleUserDefinedFolderPathInput(HbAction *action) |
986 { |
1068 { |
|
1069 int previousindex = getCorrectFolderPathRadioButtonIndex(); |
|
1070 |
987 HbDataFormModelItem *item = mContentItems.value(IpsServices::FolderPath); |
1071 HbDataFormModelItem *item = mContentItems.value(IpsServices::FolderPath); |
988 |
1072 |
989 if (action == mFolderPathInputDialog->actions().at(0)) { |
1073 if (action == mFolderPathInputDialog->actions().at(0)) { |
990 QVariant newFolderPath = mFolderPathInputDialog->value(); |
1074 QVariant newFolderPath = mFolderPathInputDialog->value(); |
991 mSettingsManager.writeSetting(IpsServices::FolderPath, newFolderPath); |
1075 mSettingsManager.writeSetting(IpsServices::FolderPath, newFolderPath); |
992 //set selected index to default if user inputed empty string. |
1076 //set selected index to default if user inputed empty string. |
993 if (newFolderPath.toString().isEmpty()) { |
1077 if (newFolderPath.toString().isEmpty()) { |
994 item->setContentWidgetData(QString("selected"), IpsServices::NmIpsSettingsDefault); |
1078 item->setContentWidgetData("selected", IpsServices::NmIpsSettingsDefault); |
995 } |
1079 } |
996 } else { |
1080 } else { |
997 //set selected value back if user canceled. |
1081 //set selected value back if user canceled. |
998 item->setContentWidgetData(QString("selected"), mRadioButtonPreviousIndex); |
1082 item->setContentWidgetData("selected", previousindex); |
999 } |
1083 } |
1000 } |
|
1001 |
|
1002 /*! |
|
1003 Sets the previous index value to indicate that user has edited the field. |
|
1004 |
|
1005 \param text Reference to the item in the radio button list. |
|
1006 */ |
|
1007 void NmIpsSettingsHelper::folderPathPress(const QModelIndex &index) |
|
1008 { |
|
1009 Q_UNUSED(index); |
|
1010 HbDataFormModelItem *item = mContentItems.value(IpsServices::FolderPath); |
|
1011 QVariant data = item->contentWidgetData(QString("selected")); |
|
1012 mRadioButtonPreviousIndex = data.toInt(); |
|
1013 } |
1084 } |
1014 |
1085 |
1015 /*! |
1086 /*! |
1016 Handles weekdays modifications. |
1087 Handles weekdays modifications. |
1017 */ |
1088 */ |
1018 void NmIpsSettingsHelper::receivingWeekdaysModified() |
1089 void NmIpsSettingsHelper::receivingWeekdaysModified() |
1019 { |
1090 { |
1020 HbDataFormModelItem *item = mContentItems.value(IpsServices::ReceptionWeekDays); |
1091 HbDataFormModelItem *item = mContentItems.value(IpsServices::ReceptionWeekDays); |
1021 QVariant widgetData = item->contentWidgetData(QString("selectedItems")); |
1092 QVariant widgetData = item->contentWidgetData("selectedItems"); |
1022 QList<QVariant> selectedIndexes = widgetData.value< QList<QVariant> >(); |
1093 QList<QVariant> selectedIndexes = widgetData.value< QList<QVariant> >(); |
1023 QVariant itemData = item->data(HbDataFormModelItem::DescriptionRole + 1); |
1094 QVariant itemData = item->data(HbDataFormModelItem::DescriptionRole + 1); |
1024 QList<QVariant> itemValues = itemData.value< QList<QVariant> >(); |
1095 QList<QVariant> itemValues = itemData.value< QList<QVariant> >(); |
1025 |
1096 |
1026 int days(0); |
1097 int days(0); |
1163 */ |
1239 */ |
1164 void NmIpsSettingsHelper::copyReceivingScheduleSettingsFromActiveProfile(int profileMode) |
1240 void NmIpsSettingsHelper::copyReceivingScheduleSettingsFromActiveProfile(int profileMode) |
1165 { |
1241 { |
1166 // Read receiving schedule dynamic group item values and |
1242 // Read receiving schedule dynamic group item values and |
1167 // make a decision based on those if item should be visible or not. |
1243 // make a decision based on those if item should be visible or not. |
1168 const int dynamicGroupItemsCount( |
|
1169 sizeof(NmIpsSettingsReceivingSchedule) / sizeof(NmIpsSettingsReceivingSchedule[0])); |
|
1170 |
|
1171 NmIpsExtendedSettingsManager &extendedSettingsManager = |
1244 NmIpsExtendedSettingsManager &extendedSettingsManager = |
1172 mSettingsManager.extendedSettingsManager(); |
1245 mSettingsManager.extendedSettingsManager(); |
1173 |
1246 |
1174 for (int itemIndex(0); itemIndex < dynamicGroupItemsCount; ++itemIndex) { |
1247 for (int index(0); index < NmIpsSettingsReceivingScheduleItemCount; ++index) { |
1175 QVariant setting; |
1248 QVariant setting; |
1176 // Read setting value from active profile |
1249 // Read setting value from active profile |
1177 IpsServices::SettingItem item(NmIpsSettingsReceivingSchedule[itemIndex]); |
1250 IpsServices::SettingItem item(NmIpsSettingsReceivingScheduleItems[index]); |
1178 mSettingsManager.readSetting(item, setting); |
1251 mSettingsManager.readSetting(item, setting); |
1179 |
1252 |
1180 // write settings to user defined profile. |
1253 // write settings to user defined profile. |
1181 extendedSettingsManager.writeSetting(profileMode, item, setting); |
1254 extendedSettingsManager.writeSetting(profileMode, item, setting); |
1182 } |
1255 } |
1183 } |
1256 } |
|
1257 |
|
1258 /*! |
|
1259 Updates the mailbox entry in AppLib. |
|
1260 \param op App Library operation. |
|
1261 \param mailboxName Mailbox name. |
|
1262 */ |
|
1263 void NmIpsSettingsHelper::updateAppLib(AppLibUpdateOperation op, QString mailboxName) |
|
1264 { |
|
1265 // Find and load the interface. |
|
1266 QServiceManager manager; |
|
1267 QServiceFilter filter("com.nokia.symbian.IEmailRegisterAccount"); |
|
1268 QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter); |
|
1269 QObject *registerInterface = 0; |
|
1270 if (!interfaces.isEmpty()) { |
|
1271 registerInterface = manager.loadInterface(interfaces.first()); |
|
1272 } |
|
1273 |
|
1274 if (registerInterface) { |
|
1275 quint64 mailboxId(mSettingsManager.mailboxId().id()); |
|
1276 switch(op) { |
|
1277 case UnregisterMailbox: |
|
1278 // Try to remove the mailbox from the App Library. |
|
1279 (void)QMetaObject::invokeMethod(registerInterface, |
|
1280 "unregisterMailbox", |
|
1281 Q_ARG(quint64, mailboxId)); |
|
1282 break; |
|
1283 case UpdateMailboxName: |
|
1284 // Update the mailbox's name in the App Library. |
|
1285 (void)QMetaObject::invokeMethod(registerInterface, |
|
1286 "updateMailboxName", |
|
1287 Q_ARG(quint64, mailboxId), |
|
1288 Q_ARG(QString, mailboxName)); |
|
1289 break; |
|
1290 default: |
|
1291 break; |
|
1292 } |
|
1293 } |
|
1294 } |
|
1295 |
|
1296 /*! |
|
1297 Deletes ReceptionDayStartTime, ReceptionDayEndTime and ReceptionRefreshPeriodDayTime |
|
1298 setting items. |
|
1299 */ |
|
1300 void NmIpsSettingsHelper::noReceptionWeekdaysSelected() |
|
1301 { |
|
1302 for (int index(NmIpsSettingsIndexOfReceptionDayStartTime); |
|
1303 index < NmIpsSettingsReceivingScheduleItemCount; ++index) { |
|
1304 deleteReceivingScheduleGroupDynamicItem(NmIpsSettingsReceivingScheduleItems[index]); |
|
1305 } |
|
1306 } |
|
1307 |
1184 /*! |
1308 /*! |
1185 Saves the outgoing port value into database if user has changed the value. If the user wish to |
1309 Saves the outgoing port value into database if user has changed the value. If the user wish to |
1186 define the port, a input dialog is shown. |
1310 define the port, a input dialog is shown. |
1187 \param index Used to determine if the default value or a user defined value should be written |
1311 \param index Used to determine if the default value or a user defined value should be written |
1188 */ |
1312 */ |
1189 void NmIpsSettingsHelper::outgoingPortChange(int index) |
1313 void NmIpsSettingsHelper::outgoingPortChange(int index) |
1190 { |
1314 { |
1191 if (mRadioButtonPreviousIndex != index && index == IpsServices::NmIpsSettingsDefault) { |
1315 int previousindex = getCorrectOutgoingPortRadioButtonIndex(); |
1192 emit goOffline(mSettingsManager.mailboxId()); |
1316 |
1193 mEmitOnline = true; |
1317 if (previousindex != index) { |
1194 int port = mSettingsManager.determineDefaultOutgoingPort(); |
1318 if (index == IpsServices::NmIpsSettingsDefault) { |
1195 mSettingsManager.writeSetting(IpsServices::OutgoingPort, port); |
1319 emit goOffline(mSettingsManager.mailboxId()); |
1196 } else if (index == IpsServices::NmIpsSettingsUserDefined) { |
1320 mEmitOnline = true; |
1197 showOutgoingPortInputDialog(); |
1321 int port = mSettingsManager.determineDefaultOutgoingPort(); |
|
1322 mSettingsManager.writeSetting(IpsServices::OutgoingPort, port); |
|
1323 } else if (index == IpsServices::NmIpsSettingsUserDefined) { |
|
1324 showOutgoingPortInputDialog(); |
|
1325 } |
1198 } |
1326 } |
1199 } |
1327 } |
1200 |
1328 |
1201 /*! |
1329 /*! |
1202 Shows an input dialog for allowing the user to specify a outgoing port. |
1330 Shows an input dialog for allowing the user to specify a outgoing port. |
1227 Handles the saving of the port new value. |
1355 Handles the saving of the port new value. |
1228 \action Selected action. |
1356 \action Selected action. |
1229 */ |
1357 */ |
1230 void NmIpsSettingsHelper::handleUserDefinedOutgoingPortInput(HbAction *action) |
1358 void NmIpsSettingsHelper::handleUserDefinedOutgoingPortInput(HbAction *action) |
1231 { |
1359 { |
|
1360 int previousindex = getCorrectOutgoingPortRadioButtonIndex(); |
|
1361 |
1232 if (action == mOutgoingPortInputDialog->actions().at(0)) { |
1362 if (action == mOutgoingPortInputDialog->actions().at(0)) { |
1233 QVariant newPort = mOutgoingPortInputDialog->value(); |
1363 QVariant newPort = mOutgoingPortInputDialog->value(); |
1234 emit goOffline(mSettingsManager.mailboxId()); |
1364 emit goOffline(mSettingsManager.mailboxId()); |
1235 mEmitOnline = true; |
1365 mEmitOnline = true; |
1236 mSettingsManager.writeSetting(IpsServices::OutgoingPort, newPort); |
1366 mSettingsManager.writeSetting(IpsServices::OutgoingPort, newPort); |
1237 } else { |
1367 } else { |
1238 //set selected value back if user canceled. |
1368 //set selected value back if user canceled. |
1239 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPort); |
1369 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPort); |
1240 item->setContentWidgetData(QString("selected"), mRadioButtonPreviousIndex); |
1370 item->setContentWidgetData("selected", previousindex); |
1241 } |
1371 } |
1242 } |
1372 } |
1243 |
1373 |
1244 /*! |
1374 /*! |
1245 Handles the saving of the selected network connection. |
1375 Handles the saving of the selected network connection. |
1251 CmApplSettingsUi::SettingSelection selection = mDestinationDialog->selection(); |
1381 CmApplSettingsUi::SettingSelection selection = mDestinationDialog->selection(); |
1252 uint destId(selection.id); |
1382 uint destId(selection.id); |
1253 if (mSettingsManager.writeSetting(IpsServices::Connection, QVariant(destId))) { |
1383 if (mSettingsManager.writeSetting(IpsServices::Connection, QVariant(destId))) { |
1254 QString destName(destinationNameFromIdentifier(destId)); |
1384 QString destName(destinationNameFromIdentifier(destId)); |
1255 HbDataFormModelItem *item = mContentItems.value(IpsServices::Connection); |
1385 HbDataFormModelItem *item = mContentItems.value(IpsServices::Connection); |
1256 item->setContentWidgetData(QString("text"), destName); |
1386 item->setContentWidgetData("text", destName); |
1257 } |
1387 } |
1258 } |
1388 } |
1259 } |
|
1260 |
|
1261 /*! |
|
1262 Sets the previous index value to indicate that user has edited the field. |
|
1263 \param index Reference to the item in the radio button list. |
|
1264 */ |
|
1265 void NmIpsSettingsHelper::outgoingPortPress(const QModelIndex &index) |
|
1266 { |
|
1267 Q_UNUSED(index); |
|
1268 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPort); |
|
1269 QVariant data = item->contentWidgetData(QString("selected")); |
|
1270 mRadioButtonPreviousIndex = data.toInt(); |
|
1271 } |
1389 } |
1272 |
1390 |
1273 /*! |
1391 /*! |
1274 Used for getting the index to display in the outgoing port radio button list. |
1392 Used for getting the index to display in the outgoing port radio button list. |
1275 \return index Used to set the selected value. |
1393 \return index Used to set the selected value. |
1276 */ |
1394 */ |
1277 int NmIpsSettingsHelper::getCorrectOutgoingPortRadioButtonIndex(int currentPort) |
1395 int NmIpsSettingsHelper::getCorrectOutgoingPortRadioButtonIndex() |
1278 { |
1396 { |
|
1397 QVariant outgoingPort; |
|
1398 mSettingsManager.readSetting(IpsServices::OutgoingPort, outgoingPort); |
|
1399 |
1279 int index = 0; |
1400 int index = 0; |
1280 int port = mSettingsManager.determineDefaultOutgoingPort(); |
1401 int port = mSettingsManager.determineDefaultOutgoingPort(); |
1281 if (port == currentPort) { |
1402 if (port == outgoingPort.toInt()) { |
1282 index = IpsServices::NmIpsSettingsDefault; |
1403 index = IpsServices::NmIpsSettingsDefault; |
1283 } else { |
1404 } else { |
1284 index = IpsServices::NmIpsSettingsUserDefined; |
1405 index = IpsServices::NmIpsSettingsUserDefined; |
1285 } |
1406 } |
1286 return index; |
1407 return index; |
1348 default: |
1475 default: |
1349 break; |
1476 break; |
1350 } |
1477 } |
1351 // Update outgoing port value only if default outgoing port used |
1478 // Update outgoing port value only if default outgoing port used |
1352 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPort); |
1479 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingPort); |
1353 QVariant data = item->contentWidgetData(QString("selected")); |
1480 QVariant data = item->contentWidgetData("selected"); |
1354 // Default outgoing port selected |
1481 // Default outgoing port selected |
1355 if (data.toInt() == IpsServices::NmIpsSettingsDefault) { |
1482 if (data.toInt() == IpsServices::NmIpsSettingsDefault) { |
1356 int port = mSettingsManager.determineDefaultOutgoingPort(); |
1483 int port = mSettingsManager.determineDefaultOutgoingPort(); |
1357 mSettingsManager.writeSetting(IpsServices::OutgoingPort, port); |
1484 mSettingsManager.writeSetting(IpsServices::OutgoingPort, port); |
1358 } |
1485 } |
1359 } |
1486 } |
1360 } |
1487 } |
1361 |
1488 |
1362 /*! |
1489 /*! |
1363 Sets the previous index value to indicate that user has edited the field. |
|
1364 \param index Reference to the item in the radio button list. |
|
1365 */ |
|
1366 void NmIpsSettingsHelper::outgoingSecureConnectionPress(const QModelIndex &index) |
|
1367 { |
|
1368 Q_UNUSED(index); |
|
1369 HbDataFormModelItem *item = mContentItems.value(IpsServices::OutgoingSecureSockets); |
|
1370 QVariant data = item->contentWidgetData(QString("selected")); |
|
1371 mRadioButtonPreviousIndex = data.toInt(); |
|
1372 } |
|
1373 |
|
1374 /*! |
|
1375 Saves the outgoing authetication value into database if user has changed the value and |
1490 Saves the outgoing authetication value into database if user has changed the value and |
1376 updates dynamic group items. |
1491 updates dynamic group items. |
1377 \param index Selected radio button index. |
1492 \param index Selected radio button index. |
1378 */ |
1493 */ |
1379 void NmIpsSettingsHelper::outgoingAuthenticationChange(int index) |
1494 void NmIpsSettingsHelper::outgoingAuthenticationChange(int index) |
1380 { |
1495 { |
1381 if (mRadioButtonPreviousIndex != index) { |
1496 int previousindex = getCorrectOutgoingAuthenticationRadioButtonIndex(); |
|
1497 |
|
1498 if (previousindex != index) { |
1382 QVariant loginName; |
1499 QVariant loginName; |
1383 QVariant loginPassword; |
1500 QVariant loginPassword; |
1384 emit goOffline(mSettingsManager.mailboxId()); |
1501 emit goOffline(mSettingsManager.mailboxId()); |
1385 mEmitOnline = true; |
1502 mEmitOnline = true; |
1386 switch (index) { |
1503 switch (index) { |