emailservices/nmclientapi/src/nmapimailboxsettingsdata_p.cpp
author hgs
Thu, 24 Jun 2010 14:32:18 +0300
changeset 47 f83bd4ae1fe3
child 48 10eaf342f539
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "nmapimailboxsettingsdata_p.h"
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include <nmapimailboxsettingsdata.h>
hgs
parents:
diff changeset
    21
#include <QObject>
hgs
parents:
diff changeset
    22
#include <QVariant>
hgs
parents:
diff changeset
    23
#include <QString>
hgs
parents:
diff changeset
    24
#include <QHash>
hgs
parents:
diff changeset
    25
#include "emailtrace.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
namespace EmailClientApi
hgs
parents:
diff changeset
    28
{
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
NmApiMailboxSettingsDataPrivate::NmApiMailboxSettingsDataPrivate() :
hgs
parents:
diff changeset
    31
    mId(0), mSettings(new QHash<int, QVariant>())
hgs
parents:
diff changeset
    32
{
hgs
parents:
diff changeset
    33
    NM_FUNCTION;
hgs
parents:
diff changeset
    34
    Q_CHECK_PTR( mSettings );
hgs
parents:
diff changeset
    35
}
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
NmApiMailboxSettingsDataPrivate::~NmApiMailboxSettingsDataPrivate()
hgs
parents:
diff changeset
    38
{
hgs
parents:
diff changeset
    39
    NM_FUNCTION;
hgs
parents:
diff changeset
    40
}
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
/*!
hgs
parents:
diff changeset
    43
 \fn setMailboxId 
hgs
parents:
diff changeset
    44
 \param mailboxId - valid mailbox id as quint64.
hgs
parents:
diff changeset
    45
 
hgs
parents:
diff changeset
    46
 Sets the mailbox id               
hgs
parents:
diff changeset
    47
 */
hgs
parents:
diff changeset
    48
void NmApiMailboxSettingsDataPrivate::setMailboxId(quint64 mailboxId)
hgs
parents:
diff changeset
    49
{
hgs
parents:
diff changeset
    50
    NM_FUNCTION;
hgs
parents:
diff changeset
    51
    mId = mailboxId;
hgs
parents:
diff changeset
    52
}
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
/*!
hgs
parents:
diff changeset
    55
 \fn mailboxId
hgs
parents:
diff changeset
    56
 \return quint64 - the mailbox id.
hgs
parents:
diff changeset
    57
 
hgs
parents:
diff changeset
    58
 Gets the mailbox id.              
hgs
parents:
diff changeset
    59
 */
hgs
parents:
diff changeset
    60
quint64 NmApiMailboxSettingsDataPrivate::mailboxId() const
hgs
parents:
diff changeset
    61
{
hgs
parents:
diff changeset
    62
    NM_FUNCTION;
hgs
parents:
diff changeset
    63
    return mId;
hgs
parents:
diff changeset
    64
}
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
/*!
hgs
parents:
diff changeset
    67
 \fn setValue 
hgs
parents:
diff changeset
    68
 \param key - setting data to be set.
hgs
parents:
diff changeset
    69
 \param settingValue - Value to be set as QVariant.
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
 Sets individual setting value.        
hgs
parents:
diff changeset
    72
 */
hgs
parents:
diff changeset
    73
void NmApiMailboxSettingsDataPrivate::setValue(int key, const QVariant &settingValue)
hgs
parents:
diff changeset
    74
{
hgs
parents:
diff changeset
    75
    NM_FUNCTION;
hgs
parents:
diff changeset
    76
    (*mSettings)[key] = settingValue;
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
/*!
hgs
parents:
diff changeset
    80
 \fn getValue
hgs
parents:
diff changeset
    81
 \param key - setting data to get.
hgs
parents:
diff changeset
    82
 \param settingValue - On return holds as QVariant.
hgs
parents:
diff changeset
    83
 \return true if succesfull, false otherwise.
hgs
parents:
diff changeset
    84
 
hgs
parents:
diff changeset
    85
 Get individual setting value.        
hgs
parents:
diff changeset
    86
 */
hgs
parents:
diff changeset
    87
bool NmApiMailboxSettingsDataPrivate::getValue(int key, QVariant &settingValue) const
hgs
parents:
diff changeset
    88
{
hgs
parents:
diff changeset
    89
    NM_FUNCTION;
hgs
parents:
diff changeset
    90
    if (mSettings->contains(key)) {
hgs
parents:
diff changeset
    91
        settingValue = (*mSettings)[key];
hgs
parents:
diff changeset
    92
        return true;
hgs
parents:
diff changeset
    93
    }
hgs
parents:
diff changeset
    94
    return false;
hgs
parents:
diff changeset
    95
}
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
/*!
hgs
parents:
diff changeset
    98
 \fn validateString
hgs
parents:
diff changeset
    99
 \param key - setting data to validate.
hgs
parents:
diff changeset
   100
 \param val - value to validate.
hgs
parents:
diff changeset
   101
 \param validated - if this key was validated by the method
hgs
parents:
diff changeset
   102
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   103
 
hgs
parents:
diff changeset
   104
 validates individual string type value.        
hgs
parents:
diff changeset
   105
 */
hgs
parents:
diff changeset
   106
bool NmApiMailboxSettingsDataPrivate::validateString(int key, QVariant& val, bool& validated) const
hgs
parents:
diff changeset
   107
{
hgs
parents:
diff changeset
   108
    NM_FUNCTION;
hgs
parents:
diff changeset
   109
    bool ret = true;
hgs
parents:
diff changeset
   110
    switch (key) {     
hgs
parents:
diff changeset
   111
     case OutgoingPassword:
hgs
parents:
diff changeset
   112
     case IncomingPassword:     
hgs
parents:
diff changeset
   113
     case FolderPath: 
hgs
parents:
diff changeset
   114
     case IncomingLoginName:
hgs
parents:
diff changeset
   115
     case MailboxName:
hgs
parents:
diff changeset
   116
     case MyName:
hgs
parents:
diff changeset
   117
     case ReceptionActiveProfile:
hgs
parents:
diff changeset
   118
     case IncomingMailServer:
hgs
parents:
diff changeset
   119
     case OutgoingMailServer:
hgs
parents:
diff changeset
   120
     case OutgoingLoginName:
hgs
parents:
diff changeset
   121
     case EmailAddress:
hgs
parents:
diff changeset
   122
     case ReplyAddress:
hgs
parents:
diff changeset
   123
     case EmailAlias:               
hgs
parents:
diff changeset
   124
     case IncomingMailUsesAuthentication:
hgs
parents:
diff changeset
   125
     case OutgoingMailUsesAuthentication:
hgs
parents:
diff changeset
   126
     case IncomingMailSecurityType:
hgs
parents:
diff changeset
   127
     case OutgoingMailSecurityType:
hgs
parents:
diff changeset
   128
     case EmailNotificationState:         
hgs
parents:
diff changeset
   129
     case AlwaysOnlineState:{
hgs
parents:
diff changeset
   130
         validated=true;
hgs
parents:
diff changeset
   131
         if (val.type() != QVariant::String) {
hgs
parents:
diff changeset
   132
             ret = false;
hgs
parents:
diff changeset
   133
             break;
hgs
parents:
diff changeset
   134
         }
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
         QString sz = val.toString();                   
hgs
parents:
diff changeset
   137
         ret = validateStringValue(key, sz);
hgs
parents:
diff changeset
   138
         break;
hgs
parents:
diff changeset
   139
     }
hgs
parents:
diff changeset
   140
         
hgs
parents:
diff changeset
   141
     default: {
hgs
parents:
diff changeset
   142
         validated = false;
hgs
parents:
diff changeset
   143
         ret = false;
hgs
parents:
diff changeset
   144
         break;
hgs
parents:
diff changeset
   145
         }
hgs
parents:
diff changeset
   146
    }    
hgs
parents:
diff changeset
   147
    return ret;
hgs
parents:
diff changeset
   148
}
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
/*!
hgs
parents:
diff changeset
   151
 \fn validateStringValue
hgs
parents:
diff changeset
   152
 \param key - setting data to validate.
hgs
parents:
diff changeset
   153
 \param val - value to validate. 
hgs
parents:
diff changeset
   154
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   155
 
hgs
parents:
diff changeset
   156
 validates individual string type value.        
hgs
parents:
diff changeset
   157
 */
hgs
parents:
diff changeset
   158
bool NmApiMailboxSettingsDataPrivate::validateStringValue(int key, QString& val) const
hgs
parents:
diff changeset
   159
{
hgs
parents:
diff changeset
   160
    NM_FUNCTION;
hgs
parents:
diff changeset
   161
    int ret = true;
hgs
parents:
diff changeset
   162
    bool valid = true, validated = false;
hgs
parents:
diff changeset
   163
    
hgs
parents:
diff changeset
   164
    valid = validateStringGeneral(key ,val, validated);
hgs
parents:
diff changeset
   165
    if (validated && !valid) {
hgs
parents:
diff changeset
   166
            ret = false;
hgs
parents:
diff changeset
   167
    }
hgs
parents:
diff changeset
   168
    
hgs
parents:
diff changeset
   169
    if( !validated ) {
hgs
parents:
diff changeset
   170
        valid = validateEmailAddress(key ,val, validated);
hgs
parents:
diff changeset
   171
        if (validated && !valid) {
hgs
parents:
diff changeset
   172
            ret = false;
hgs
parents:
diff changeset
   173
        }
hgs
parents:
diff changeset
   174
    }
hgs
parents:
diff changeset
   175
    
hgs
parents:
diff changeset
   176
    if( !validated ) {
hgs
parents:
diff changeset
   177
        valid = validateUsesAuthentication(key ,val, validated);
hgs
parents:
diff changeset
   178
        if (validated && !valid) {
hgs
parents:
diff changeset
   179
            ret = false;
hgs
parents:
diff changeset
   180
        }
hgs
parents:
diff changeset
   181
    }
hgs
parents:
diff changeset
   182
    
hgs
parents:
diff changeset
   183
    if( !validated ) {
hgs
parents:
diff changeset
   184
        valid = validateSecurityType(key ,val, validated);
hgs
parents:
diff changeset
   185
        if (validated && !valid) {
hgs
parents:
diff changeset
   186
            ret = false;
hgs
parents:
diff changeset
   187
        }
hgs
parents:
diff changeset
   188
    }
hgs
parents:
diff changeset
   189
    
hgs
parents:
diff changeset
   190
    if( !validated ) {
hgs
parents:
diff changeset
   191
        valid = validateAOLState(key ,val, validated);
hgs
parents:
diff changeset
   192
        if (validated && !valid) {
hgs
parents:
diff changeset
   193
            ret = false;
hgs
parents:
diff changeset
   194
        }
hgs
parents:
diff changeset
   195
    }        
hgs
parents:
diff changeset
   196
    return ret;
hgs
parents:
diff changeset
   197
}
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
/*!
hgs
parents:
diff changeset
   200
 \fn validateStringGeneral
hgs
parents:
diff changeset
   201
 \param key - setting data to validate.
hgs
parents:
diff changeset
   202
 \param val - value to validate.
hgs
parents:
diff changeset
   203
 \param handled - true if method value was handled by method.
hgs
parents:
diff changeset
   204
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   205
 
hgs
parents:
diff changeset
   206
 validates individual string type value.        
hgs
parents:
diff changeset
   207
 */
hgs
parents:
diff changeset
   208
bool NmApiMailboxSettingsDataPrivate::validateStringGeneral(int key, QString& /*val*/, bool& handled) const
hgs
parents:
diff changeset
   209
{
hgs
parents:
diff changeset
   210
    NM_FUNCTION;
hgs
parents:
diff changeset
   211
    int ret = true;
hgs
parents:
diff changeset
   212
    switch (key) {     
hgs
parents:
diff changeset
   213
         case OutgoingPassword:
hgs
parents:
diff changeset
   214
         case IncomingPassword:     
hgs
parents:
diff changeset
   215
         case FolderPath:
hgs
parents:
diff changeset
   216
         case IncomingLoginName:
hgs
parents:
diff changeset
   217
         case MailboxName:
hgs
parents:
diff changeset
   218
         case MyName:
hgs
parents:
diff changeset
   219
         case ReceptionActiveProfile:
hgs
parents:
diff changeset
   220
         case IncomingMailServer:
hgs
parents:
diff changeset
   221
         case OutgoingMailServer:
hgs
parents:
diff changeset
   222
         case OutgoingLoginName: {
hgs
parents:
diff changeset
   223
             // Allready validated that values are string, 
hgs
parents:
diff changeset
   224
             // otherwise method is not called
hgs
parents:
diff changeset
   225
             handled = true;         
hgs
parents:
diff changeset
   226
             break;
hgs
parents:
diff changeset
   227
         }
hgs
parents:
diff changeset
   228
         default: {
hgs
parents:
diff changeset
   229
             handled = false;
hgs
parents:
diff changeset
   230
             ret = false;
hgs
parents:
diff changeset
   231
             break;
hgs
parents:
diff changeset
   232
         }    
hgs
parents:
diff changeset
   233
    } 
hgs
parents:
diff changeset
   234
    return ret;
hgs
parents:
diff changeset
   235
}
hgs
parents:
diff changeset
   236
         
hgs
parents:
diff changeset
   237
/*!
hgs
parents:
diff changeset
   238
 \fn validateEmailAddress
hgs
parents:
diff changeset
   239
 \param key - setting data to validate.
hgs
parents:
diff changeset
   240
 \param val - value to validate.
hgs
parents:
diff changeset
   241
 \param handled - true if value was validated by the method
hgs
parents:
diff changeset
   242
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   243
 
hgs
parents:
diff changeset
   244
 validates individual string type value.        
hgs
parents:
diff changeset
   245
 */
hgs
parents:
diff changeset
   246
bool NmApiMailboxSettingsDataPrivate::validateEmailAddress(int key, QString& val, bool& handled) const
hgs
parents:
diff changeset
   247
{
hgs
parents:
diff changeset
   248
    NM_FUNCTION;
hgs
parents:
diff changeset
   249
    int ret = true;
hgs
parents:
diff changeset
   250
    switch (key) {        
hgs
parents:
diff changeset
   251
        case EmailAddress:
hgs
parents:
diff changeset
   252
        case ReplyAddress: {
hgs
parents:
diff changeset
   253
            handled = true;
hgs
parents:
diff changeset
   254
            if (val.size() == 0) {             
hgs
parents:
diff changeset
   255
                 ret = false;
hgs
parents:
diff changeset
   256
                 break;
hgs
parents:
diff changeset
   257
            }
hgs
parents:
diff changeset
   258
            if (!(val.contains("@"))) {
hgs
parents:
diff changeset
   259
               ret = false;
hgs
parents:
diff changeset
   260
            }
hgs
parents:
diff changeset
   261
            break;
hgs
parents:
diff changeset
   262
        }
hgs
parents:
diff changeset
   263
        case EmailAlias:  {
hgs
parents:
diff changeset
   264
            handled = true;            
hgs
parents:
diff changeset
   265
            break;
hgs
parents:
diff changeset
   266
        }
hgs
parents:
diff changeset
   267
        default: {
hgs
parents:
diff changeset
   268
            handled = false;
hgs
parents:
diff changeset
   269
            ret = false;
hgs
parents:
diff changeset
   270
            break;
hgs
parents:
diff changeset
   271
        }
hgs
parents:
diff changeset
   272
    }
hgs
parents:
diff changeset
   273
    return ret;
hgs
parents:
diff changeset
   274
}
hgs
parents:
diff changeset
   275
     
hgs
parents:
diff changeset
   276
/*!
hgs
parents:
diff changeset
   277
 \fn validateUsesAuthentication
hgs
parents:
diff changeset
   278
 \param key - setting data to validate.
hgs
parents:
diff changeset
   279
 \param val - value to validate.
hgs
parents:
diff changeset
   280
 \param handled - true if value was validated by the method
hgs
parents:
diff changeset
   281
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   282
 
hgs
parents:
diff changeset
   283
 validates individual string type value.        
hgs
parents:
diff changeset
   284
 */
hgs
parents:
diff changeset
   285
bool NmApiMailboxSettingsDataPrivate::validateUsesAuthentication(int key, QString& val, bool& handled) const
hgs
parents:
diff changeset
   286
{ 
hgs
parents:
diff changeset
   287
    NM_FUNCTION;
hgs
parents:
diff changeset
   288
    int ret = true;
hgs
parents:
diff changeset
   289
    switch (key) { 
hgs
parents:
diff changeset
   290
        case IncomingMailUsesAuthentication:
hgs
parents:
diff changeset
   291
        case OutgoingMailUsesAuthentication: {
hgs
parents:
diff changeset
   292
            handled = true;
hgs
parents:
diff changeset
   293
            if (val.size() == 0) {
hgs
parents:
diff changeset
   294
                ret = false;
hgs
parents:
diff changeset
   295
                break;
hgs
parents:
diff changeset
   296
            }
hgs
parents:
diff changeset
   297
            if (!(val.contains("none") ||
hgs
parents:
diff changeset
   298
              val.contains("UserAuthentication") ||
hgs
parents:
diff changeset
   299
                  (key == OutgoingMailUsesAuthentication &&
hgs
parents:
diff changeset
   300
                   val.contains("SameAsIncoming")) )) {
hgs
parents:
diff changeset
   301
                ret = false;
hgs
parents:
diff changeset
   302
            }
hgs
parents:
diff changeset
   303
            break;
hgs
parents:
diff changeset
   304
        }
hgs
parents:
diff changeset
   305
        default: {
hgs
parents:
diff changeset
   306
            handled = false;
hgs
parents:
diff changeset
   307
            ret = false;
hgs
parents:
diff changeset
   308
            break;
hgs
parents:
diff changeset
   309
        }
hgs
parents:
diff changeset
   310
    }
hgs
parents:
diff changeset
   311
    return ret;
hgs
parents:
diff changeset
   312
}
hgs
parents:
diff changeset
   313
        
hgs
parents:
diff changeset
   314
/*!
hgs
parents:
diff changeset
   315
 \fn validateSecurityType
hgs
parents:
diff changeset
   316
 \param key - setting data to validate.
hgs
parents:
diff changeset
   317
 \param val - value to validate.
hgs
parents:
diff changeset
   318
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   319
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   320
 
hgs
parents:
diff changeset
   321
 validates individual string type value.        
hgs
parents:
diff changeset
   322
 */
hgs
parents:
diff changeset
   323
bool NmApiMailboxSettingsDataPrivate::validateSecurityType(int key, QString& val, bool& handled) const
hgs
parents:
diff changeset
   324
{ 
hgs
parents:
diff changeset
   325
    NM_FUNCTION;
hgs
parents:
diff changeset
   326
    int ret = true;
hgs
parents:
diff changeset
   327
    switch (key) {
hgs
parents:
diff changeset
   328
         case IncomingMailSecurityType:
hgs
parents:
diff changeset
   329
         case OutgoingMailSecurityType: {
hgs
parents:
diff changeset
   330
            handled = true;
hgs
parents:
diff changeset
   331
            if (val.size() == 0) {
hgs
parents:
diff changeset
   332
                ret = false;
hgs
parents:
diff changeset
   333
                break;
hgs
parents:
diff changeset
   334
            }
hgs
parents:
diff changeset
   335
            if (!(val.contains("StartTls") || 
hgs
parents:
diff changeset
   336
                  val.contains("SSLTls") || 
hgs
parents:
diff changeset
   337
                  val.contains("none"))) {
hgs
parents:
diff changeset
   338
                ret = false;
hgs
parents:
diff changeset
   339
            }
hgs
parents:
diff changeset
   340
            break;
hgs
parents:
diff changeset
   341
         }
hgs
parents:
diff changeset
   342
         default: {
hgs
parents:
diff changeset
   343
             handled = false;
hgs
parents:
diff changeset
   344
             ret = false;
hgs
parents:
diff changeset
   345
             break;
hgs
parents:
diff changeset
   346
         }
hgs
parents:
diff changeset
   347
     }
hgs
parents:
diff changeset
   348
     return ret;
hgs
parents:
diff changeset
   349
}
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
/*!
hgs
parents:
diff changeset
   352
 \fn validateAOLState
hgs
parents:
diff changeset
   353
 \param key - setting data to validate.
hgs
parents:
diff changeset
   354
 \param val - value to validate.
hgs
parents:
diff changeset
   355
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   356
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   357
 
hgs
parents:
diff changeset
   358
 validates individual string type value.        
hgs
parents:
diff changeset
   359
 */
hgs
parents:
diff changeset
   360
bool NmApiMailboxSettingsDataPrivate::validateAOLState(int key, QString& val, bool& handled) const
hgs
parents:
diff changeset
   361
{ 
hgs
parents:
diff changeset
   362
    NM_FUNCTION;
hgs
parents:
diff changeset
   363
    int ret = true;
hgs
parents:
diff changeset
   364
    switch (key) {
hgs
parents:
diff changeset
   365
        case EmailNotificationState:         
hgs
parents:
diff changeset
   366
        case AlwaysOnlineState:{
hgs
parents:
diff changeset
   367
         handled = true;
hgs
parents:
diff changeset
   368
         if (val.size() == 0) {
hgs
parents:
diff changeset
   369
              ret = false;
hgs
parents:
diff changeset
   370
              break;
hgs
parents:
diff changeset
   371
          }
hgs
parents:
diff changeset
   372
          if (!( (val.contains("always") && key == AlwaysOnlineState) || 
hgs
parents:
diff changeset
   373
                 (val.contains("automatic") && key == EmailNotificationState) || 
hgs
parents:
diff changeset
   374
                  val.contains("homeOnly") || 
hgs
parents:
diff changeset
   375
                  val.contains("off"))) {
hgs
parents:
diff changeset
   376
              ret = false;
hgs
parents:
diff changeset
   377
          }
hgs
parents:
diff changeset
   378
          break;
hgs
parents:
diff changeset
   379
        }
hgs
parents:
diff changeset
   380
        default: {
hgs
parents:
diff changeset
   381
            handled = false;
hgs
parents:
diff changeset
   382
            ret = false;
hgs
parents:
diff changeset
   383
            break;
hgs
parents:
diff changeset
   384
        }
hgs
parents:
diff changeset
   385
    }
hgs
parents:
diff changeset
   386
    return ret;
hgs
parents:
diff changeset
   387
}
hgs
parents:
diff changeset
   388
hgs
parents:
diff changeset
   389
/*!
hgs
parents:
diff changeset
   390
 \fn validateInteger
hgs
parents:
diff changeset
   391
 \param key - setting data to validate.
hgs
parents:
diff changeset
   392
 \param val - value to validate.
hgs
parents:
diff changeset
   393
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   394
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   395
 
hgs
parents:
diff changeset
   396
 validates individual integer type value.        
hgs
parents:
diff changeset
   397
 */
hgs
parents:
diff changeset
   398
bool NmApiMailboxSettingsDataPrivate::validateInteger(int key, QVariant& val, bool& validated) const
hgs
parents:
diff changeset
   399
{
hgs
parents:
diff changeset
   400
    NM_FUNCTION;
hgs
parents:
diff changeset
   401
    bool ret = true;
hgs
parents:
diff changeset
   402
    switch (key) { 
hgs
parents:
diff changeset
   403
        case DownloadPictures:
hgs
parents:
diff changeset
   404
        case MessageDivider:
hgs
parents:
diff changeset
   405
        case UserNameHidden:
hgs
parents:
diff changeset
   406
        case FirstEmnReceived:
hgs
parents:
diff changeset
   407
        case EmnReceivedNotSynced:
hgs
parents:
diff changeset
   408
        case AoLastUpdateFailed:
hgs
parents:
diff changeset
   409
        case AoUpdateSuccessfulWithCurSettings:
hgs
parents:
diff changeset
   410
        case ReceptionUserDefinedProfile:
hgs
parents:
diff changeset
   411
        case ReceptionInboxSyncWindow:
hgs
parents:
diff changeset
   412
        case ReceptionGenericSyncWindowInMessages:
hgs
parents:
diff changeset
   413
        case IncomingPort:
hgs
parents:
diff changeset
   414
        case OutgoingPort:
hgs
parents:
diff changeset
   415
        case ReceptionWeekDays:
hgs
parents:
diff changeset
   416
        case ReceptionDayStartTime:
hgs
parents:
diff changeset
   417
        case ReceptionDayEndTime:
hgs
parents:
diff changeset
   418
        case ReceptionRefreshPeriodDayTime:
hgs
parents:
diff changeset
   419
        case ReceptionRefreshPeriodOther: {
hgs
parents:
diff changeset
   420
            validated = true;
hgs
parents:
diff changeset
   421
            if (!(val.type() == QVariant::Int ||
hgs
parents:
diff changeset
   422
                  val.type() == QVariant::UInt ||
hgs
parents:
diff changeset
   423
                  val.type() == QVariant::LongLong  ||
hgs
parents:
diff changeset
   424
                  val.type() == QVariant::ULongLong ||
hgs
parents:
diff changeset
   425
                  val.type() == QVariant::Double)) {
hgs
parents:
diff changeset
   426
                ret = false;
hgs
parents:
diff changeset
   427
                break;
hgs
parents:
diff changeset
   428
            }            
hgs
parents:
diff changeset
   429
            int ival = val.toInt();
hgs
parents:
diff changeset
   430
            ret = validateIntVal(key,ival);
hgs
parents:
diff changeset
   431
            break;
hgs
parents:
diff changeset
   432
        }
hgs
parents:
diff changeset
   433
        default: {
hgs
parents:
diff changeset
   434
            validated = false;
hgs
parents:
diff changeset
   435
            ret = false;
hgs
parents:
diff changeset
   436
            break;
hgs
parents:
diff changeset
   437
        }
hgs
parents:
diff changeset
   438
     }
hgs
parents:
diff changeset
   439
     return ret;
hgs
parents:
diff changeset
   440
}
hgs
parents:
diff changeset
   441
hgs
parents:
diff changeset
   442
/*!
hgs
parents:
diff changeset
   443
 \fn validateIntVal
hgs
parents:
diff changeset
   444
 \param key - setting data to validate.
hgs
parents:
diff changeset
   445
 \param val - value to validate. 
hgs
parents:
diff changeset
   446
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   447
 
hgs
parents:
diff changeset
   448
 validates individual integer type value.        
hgs
parents:
diff changeset
   449
 */
hgs
parents:
diff changeset
   450
bool NmApiMailboxSettingsDataPrivate::validateIntVal(int key, int val) const
hgs
parents:
diff changeset
   451
{
hgs
parents:
diff changeset
   452
    NM_FUNCTION;
hgs
parents:
diff changeset
   453
    int ret = true;
hgs
parents:
diff changeset
   454
    bool valid = true, validated = false;
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
    valid = validateIntGeneral(key ,val, validated);
hgs
parents:
diff changeset
   457
    if (validated && !valid) {
hgs
parents:
diff changeset
   458
           ret = false;
hgs
parents:
diff changeset
   459
    }
hgs
parents:
diff changeset
   460
    
hgs
parents:
diff changeset
   461
    if( !validated ) {
hgs
parents:
diff changeset
   462
       valid = validateOnOffValue(key ,val, validated);
hgs
parents:
diff changeset
   463
       if (validated && !valid) {
hgs
parents:
diff changeset
   464
           ret = false;
hgs
parents:
diff changeset
   465
       }
hgs
parents:
diff changeset
   466
    }
hgs
parents:
diff changeset
   467
    
hgs
parents:
diff changeset
   468
    if( !validated ) {
hgs
parents:
diff changeset
   469
       valid = validateWeekdayMask(key ,val, validated);
hgs
parents:
diff changeset
   470
       if (validated && !valid) {
hgs
parents:
diff changeset
   471
           ret = false;
hgs
parents:
diff changeset
   472
       }
hgs
parents:
diff changeset
   473
    }
hgs
parents:
diff changeset
   474
    
hgs
parents:
diff changeset
   475
    if( !validated ) {
hgs
parents:
diff changeset
   476
       valid = validateHoursInDay(key ,val, validated);
hgs
parents:
diff changeset
   477
       if (validated && !valid) {
hgs
parents:
diff changeset
   478
           ret = false;
hgs
parents:
diff changeset
   479
       }
hgs
parents:
diff changeset
   480
    }
hgs
parents:
diff changeset
   481
    return ret;
hgs
parents:
diff changeset
   482
}
hgs
parents:
diff changeset
   483
hgs
parents:
diff changeset
   484
/*!
hgs
parents:
diff changeset
   485
 \fn validateOnOffValue
hgs
parents:
diff changeset
   486
 \param key - setting data to validate.
hgs
parents:
diff changeset
   487
 \param val - value to validate.
hgs
parents:
diff changeset
   488
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   489
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   490
 
hgs
parents:
diff changeset
   491
 validates individual integer type value.        
hgs
parents:
diff changeset
   492
 */
hgs
parents:
diff changeset
   493
bool NmApiMailboxSettingsDataPrivate::validateOnOffValue(int key, int val, bool& handled) const
hgs
parents:
diff changeset
   494
{
hgs
parents:
diff changeset
   495
    NM_FUNCTION;
hgs
parents:
diff changeset
   496
    bool ret = true;
hgs
parents:
diff changeset
   497
    switch (key) {   
hgs
parents:
diff changeset
   498
        // Integer: 0=Off, 1=On    
hgs
parents:
diff changeset
   499
        case DownloadPictures:
hgs
parents:
diff changeset
   500
        case MessageDivider:
hgs
parents:
diff changeset
   501
        case UserNameHidden:
hgs
parents:
diff changeset
   502
        
hgs
parents:
diff changeset
   503
        // Integer: 0=false,1=true
hgs
parents:
diff changeset
   504
        case FirstEmnReceived:
hgs
parents:
diff changeset
   505
        case EmnReceivedNotSynced:
hgs
parents:
diff changeset
   506
        case AoLastUpdateFailed:
hgs
parents:
diff changeset
   507
        case AoUpdateSuccessfulWithCurSettings:
hgs
parents:
diff changeset
   508
        
hgs
parents:
diff changeset
   509
        // Integer: 0=Disabled, 1=Enabled
hgs
parents:
diff changeset
   510
        case ReceptionUserDefinedProfile: {
hgs
parents:
diff changeset
   511
            handled = true;
hgs
parents:
diff changeset
   512
            if (!(0 <= val && val <= 1)) {
hgs
parents:
diff changeset
   513
                ret = false;
hgs
parents:
diff changeset
   514
            }
hgs
parents:
diff changeset
   515
            break;
hgs
parents:
diff changeset
   516
        }
hgs
parents:
diff changeset
   517
        default: {
hgs
parents:
diff changeset
   518
            handled = false;
hgs
parents:
diff changeset
   519
            ret = false;
hgs
parents:
diff changeset
   520
            break;
hgs
parents:
diff changeset
   521
        }
hgs
parents:
diff changeset
   522
    }
hgs
parents:
diff changeset
   523
    return ret;
hgs
parents:
diff changeset
   524
}
hgs
parents:
diff changeset
   525
hgs
parents:
diff changeset
   526
/*!
hgs
parents:
diff changeset
   527
 \fn validateIntGeneral
hgs
parents:
diff changeset
   528
 \param key - setting data to validate.
hgs
parents:
diff changeset
   529
 \param val - value to validate.
hgs
parents:
diff changeset
   530
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   531
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   532
 
hgs
parents:
diff changeset
   533
 validates individual integer type value.        
hgs
parents:
diff changeset
   534
 */
hgs
parents:
diff changeset
   535
bool NmApiMailboxSettingsDataPrivate::validateIntGeneral(int key, int /*val*/, bool& handled) const
hgs
parents:
diff changeset
   536
{ 
hgs
parents:
diff changeset
   537
    NM_FUNCTION;
hgs
parents:
diff changeset
   538
    bool ret = true;
hgs
parents:
diff changeset
   539
    switch (key) {         
hgs
parents:
diff changeset
   540
        // Integer: 5,15,60,240,0="When open mailbox"
hgs
parents:
diff changeset
   541
        case ReceptionRefreshPeriodDayTime:
hgs
parents:
diff changeset
   542
        case ReceptionRefreshPeriodOther:
hgs
parents:
diff changeset
   543
            
hgs
parents:
diff changeset
   544
        // Integer: 0=All messages
hgs
parents:
diff changeset
   545
        case ReceptionInboxSyncWindow:
hgs
parents:
diff changeset
   546
        case ReceptionGenericSyncWindowInMessages:
hgs
parents:
diff changeset
   547
            
hgs
parents:
diff changeset
   548
        // Integer
hgs
parents:
diff changeset
   549
        case IncomingPort:
hgs
parents:
diff changeset
   550
        case OutgoingPort: {
hgs
parents:
diff changeset
   551
            // Allready valid thate these are integers
hgs
parents:
diff changeset
   552
            handled = true;
hgs
parents:
diff changeset
   553
            break;
hgs
parents:
diff changeset
   554
        }
hgs
parents:
diff changeset
   555
        default: {
hgs
parents:
diff changeset
   556
            handled = false;
hgs
parents:
diff changeset
   557
            ret = false;
hgs
parents:
diff changeset
   558
            break;
hgs
parents:
diff changeset
   559
        }
hgs
parents:
diff changeset
   560
    }
hgs
parents:
diff changeset
   561
    return ret;
hgs
parents:
diff changeset
   562
}
hgs
parents:
diff changeset
   563
hgs
parents:
diff changeset
   564
/*!
hgs
parents:
diff changeset
   565
 \fn validateWeekDayMask
hgs
parents:
diff changeset
   566
 \param key - setting data to validate.
hgs
parents:
diff changeset
   567
 \param val - value to validate.
hgs
parents:
diff changeset
   568
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   569
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   570
 
hgs
parents:
diff changeset
   571
 validates individual integer type value.        
hgs
parents:
diff changeset
   572
 */
hgs
parents:
diff changeset
   573
bool NmApiMailboxSettingsDataPrivate::validateWeekdayMask(int key, int val, bool& handled) const
hgs
parents:
diff changeset
   574
{
hgs
parents:
diff changeset
   575
    NM_FUNCTION;
hgs
parents:
diff changeset
   576
    bool ret = true;
hgs
parents:
diff changeset
   577
    switch (key) {
hgs
parents:
diff changeset
   578
        // Integer bitmask of weekdays: 0x01=Mon,0x02=Tue,0x04=Wed,0x08=Thu,0x10=Fri,0x20=Sat,0x40=Sun
hgs
parents:
diff changeset
   579
        case ReceptionWeekDays: {
hgs
parents:
diff changeset
   580
            handled = true;
hgs
parents:
diff changeset
   581
            int wkdmask = Mon | Tue | Wed | Thu | Fri | Sat | Sun;
hgs
parents:
diff changeset
   582
            if ((val & wkdmask) != val) {
hgs
parents:
diff changeset
   583
                ret = false;
hgs
parents:
diff changeset
   584
            }
hgs
parents:
diff changeset
   585
            break;
hgs
parents:
diff changeset
   586
        }
hgs
parents:
diff changeset
   587
        default: {
hgs
parents:
diff changeset
   588
            handled = false;
hgs
parents:
diff changeset
   589
            ret = false;
hgs
parents:
diff changeset
   590
            break;
hgs
parents:
diff changeset
   591
        }
hgs
parents:
diff changeset
   592
    }
hgs
parents:
diff changeset
   593
    return ret;
hgs
parents:
diff changeset
   594
}
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
/*!
hgs
parents:
diff changeset
   597
 \fn validateHoursInDay
hgs
parents:
diff changeset
   598
 \param key - setting data to validate.
hgs
parents:
diff changeset
   599
 \param val - value to validate.
hgs
parents:
diff changeset
   600
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   601
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   602
 
hgs
parents:
diff changeset
   603
 validates individual integer type value.        
hgs
parents:
diff changeset
   604
 */
hgs
parents:
diff changeset
   605
bool NmApiMailboxSettingsDataPrivate::validateHoursInDay(int key, int val, bool& handled) const
hgs
parents:
diff changeset
   606
{ 
hgs
parents:
diff changeset
   607
    NM_FUNCTION;
hgs
parents:
diff changeset
   608
    bool ret = true;
hgs
parents:
diff changeset
   609
    switch (key) {
hgs
parents:
diff changeset
   610
        // Integer: 0-23
hgs
parents:
diff changeset
   611
        case ReceptionDayStartTime:
hgs
parents:
diff changeset
   612
        case ReceptionDayEndTime: {
hgs
parents:
diff changeset
   613
            handled = true;
hgs
parents:
diff changeset
   614
            if (!(0 <= val && val <= 23)) { 
hgs
parents:
diff changeset
   615
                ret = false;
hgs
parents:
diff changeset
   616
            }
hgs
parents:
diff changeset
   617
            break;
hgs
parents:
diff changeset
   618
        }
hgs
parents:
diff changeset
   619
        default: {
hgs
parents:
diff changeset
   620
            handled = false;
hgs
parents:
diff changeset
   621
            ret = false;
hgs
parents:
diff changeset
   622
            break;
hgs
parents:
diff changeset
   623
        }
hgs
parents:
diff changeset
   624
    }
hgs
parents:
diff changeset
   625
    return ret;
hgs
parents:
diff changeset
   626
}
hgs
parents:
diff changeset
   627
hgs
parents:
diff changeset
   628
/*!
hgs
parents:
diff changeset
   629
 \fn validateBool
hgs
parents:
diff changeset
   630
 \param key - setting data to validate.
hgs
parents:
diff changeset
   631
 \param val - value to validate.
hgs
parents:
diff changeset
   632
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   633
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   634
 
hgs
parents:
diff changeset
   635
 validates individual bool type value.        
hgs
parents:
diff changeset
   636
 */
hgs
parents:
diff changeset
   637
bool NmApiMailboxSettingsDataPrivate::validateBool(int key, QVariant& val, bool& validated) const
hgs
parents:
diff changeset
   638
{
hgs
parents:
diff changeset
   639
    NM_FUNCTION;
hgs
parents:
diff changeset
   640
    bool ret = true;
hgs
parents:
diff changeset
   641
    switch (key) {    
hgs
parents:
diff changeset
   642
        
hgs
parents:
diff changeset
   643
        // Boolean
hgs
parents:
diff changeset
   644
        case IncomingSecureSockets:
hgs
parents:
diff changeset
   645
        case IncomingSSLWrapper:
hgs
parents:
diff changeset
   646
        case UseOutgoingAuthentication:
hgs
parents:
diff changeset
   647
        case OutgoingSecureSockets:
hgs
parents:
diff changeset
   648
        case OutgoingSSLWrapper: {
hgs
parents:
diff changeset
   649
            validated = true;
hgs
parents:
diff changeset
   650
            if (val.type() != QVariant::Bool)
hgs
parents:
diff changeset
   651
                ret = false;
hgs
parents:
diff changeset
   652
            break;
hgs
parents:
diff changeset
   653
        }
hgs
parents:
diff changeset
   654
        default: {
hgs
parents:
diff changeset
   655
            validated = false;
hgs
parents:
diff changeset
   656
            ret = false;
hgs
parents:
diff changeset
   657
            break;
hgs
parents:
diff changeset
   658
        }
hgs
parents:
diff changeset
   659
    }
hgs
parents:
diff changeset
   660
    return ret;
hgs
parents:
diff changeset
   661
}
hgs
parents:
diff changeset
   662
hgs
parents:
diff changeset
   663
/*!
hgs
parents:
diff changeset
   664
 \fn validateDateTime
hgs
parents:
diff changeset
   665
 \param key - setting data to validate.
hgs
parents:
diff changeset
   666
 \param val - value to validate.
hgs
parents:
diff changeset
   667
 \param validated - true if value was validated by the method
hgs
parents:
diff changeset
   668
 \return true if valid value, false otherwise.
hgs
parents:
diff changeset
   669
 
hgs
parents:
diff changeset
   670
 validates individual QDateTime type value.        
hgs
parents:
diff changeset
   671
 */
hgs
parents:
diff changeset
   672
bool NmApiMailboxSettingsDataPrivate::validateDateTime(int key, QVariant& val, bool& validated) const
hgs
parents:
diff changeset
   673
{
hgs
parents:
diff changeset
   674
    NM_FUNCTION;
hgs
parents:
diff changeset
   675
    switch(key) {
hgs
parents:
diff changeset
   676
        case AoLastSuccessfulUpdate: {
hgs
parents:
diff changeset
   677
            if (val.type() != QVariant::DateTime) {
hgs
parents:
diff changeset
   678
                validated = true;
hgs
parents:
diff changeset
   679
                return false;
hgs
parents:
diff changeset
   680
            }
hgs
parents:
diff changeset
   681
            return true;
hgs
parents:
diff changeset
   682
        }
hgs
parents:
diff changeset
   683
        default: {
hgs
parents:
diff changeset
   684
            validated = false;
hgs
parents:
diff changeset
   685
            return false;
hgs
parents:
diff changeset
   686
        }
hgs
parents:
diff changeset
   687
    }
hgs
parents:
diff changeset
   688
}
hgs
parents:
diff changeset
   689
hgs
parents:
diff changeset
   690
/*!
hgs
parents:
diff changeset
   691
 \fn validateData
hgs
parents:
diff changeset
   692
 \return boolean - true, everything validated OK, false otherwise
hgs
parents:
diff changeset
   693
 
hgs
parents:
diff changeset
   694
 Validates data in this container. 
hgs
parents:
diff changeset
   695
 */   
hgs
parents:
diff changeset
   696
bool NmApiMailboxSettingsDataPrivate::validateData() const
hgs
parents:
diff changeset
   697
{
hgs
parents:
diff changeset
   698
    NM_FUNCTION;
hgs
parents:
diff changeset
   699
    QHash<int, QVariant>::const_iterator i = mSettings->constBegin();
hgs
parents:
diff changeset
   700
    while (i != mSettings->constEnd()) {
hgs
parents:
diff changeset
   701
        
hgs
parents:
diff changeset
   702
        bool validated = false;
hgs
parents:
diff changeset
   703
        bool valid = false;        
hgs
parents:
diff changeset
   704
        
hgs
parents:
diff changeset
   705
        int key = i.key();
hgs
parents:
diff changeset
   706
        QVariant val = i.value();
hgs
parents:
diff changeset
   707
        
hgs
parents:
diff changeset
   708
        ++i;
hgs
parents:
diff changeset
   709
        
hgs
parents:
diff changeset
   710
        valid = validateString(key ,val, validated);
hgs
parents:
diff changeset
   711
        if (validated) {
hgs
parents:
diff changeset
   712
            if (!valid){
hgs
parents:
diff changeset
   713
                return valid;
hgs
parents:
diff changeset
   714
            }
hgs
parents:
diff changeset
   715
            continue;
hgs
parents:
diff changeset
   716
        }
hgs
parents:
diff changeset
   717
        
hgs
parents:
diff changeset
   718
        valid = validateInteger(key ,val, validated);
hgs
parents:
diff changeset
   719
        if (validated) {
hgs
parents:
diff changeset
   720
            if (!valid){
hgs
parents:
diff changeset
   721
                return valid;
hgs
parents:
diff changeset
   722
            }
hgs
parents:
diff changeset
   723
            continue;
hgs
parents:
diff changeset
   724
        }
hgs
parents:
diff changeset
   725
         
hgs
parents:
diff changeset
   726
        valid = validateBool(key ,val, validated);
hgs
parents:
diff changeset
   727
        if (validated) {
hgs
parents:
diff changeset
   728
            if (!valid){
hgs
parents:
diff changeset
   729
                return valid;
hgs
parents:
diff changeset
   730
            }
hgs
parents:
diff changeset
   731
            continue;
hgs
parents:
diff changeset
   732
        } 
hgs
parents:
diff changeset
   733
         
hgs
parents:
diff changeset
   734
        valid = validateDateTime(key ,val, validated);
hgs
parents:
diff changeset
   735
        if (validated) {
hgs
parents:
diff changeset
   736
            if (!valid){
hgs
parents:
diff changeset
   737
                return valid;
hgs
parents:
diff changeset
   738
            }
hgs
parents:
diff changeset
   739
            continue;
hgs
parents:
diff changeset
   740
        }
hgs
parents:
diff changeset
   741
     }
hgs
parents:
diff changeset
   742
     return true;
hgs
parents:
diff changeset
   743
}
hgs
parents:
diff changeset
   744
hgs
parents:
diff changeset
   745
QList<int> NmApiMailboxSettingsDataPrivate::listSettings() const
hgs
parents:
diff changeset
   746
{
hgs
parents:
diff changeset
   747
    NM_FUNCTION;
hgs
parents:
diff changeset
   748
    return mSettings->keys();
hgs
parents:
diff changeset
   749
}
hgs
parents:
diff changeset
   750
hgs
parents:
diff changeset
   751
/*!
hgs
parents:
diff changeset
   752
 \fn clearSettings 
hgs
parents:
diff changeset
   753
 
hgs
parents:
diff changeset
   754
 Resets data in this container. 
hgs
parents:
diff changeset
   755
 */
hgs
parents:
diff changeset
   756
void NmApiMailboxSettingsDataPrivate::clearSettings()
hgs
parents:
diff changeset
   757
{
hgs
parents:
diff changeset
   758
	mSettings->clear();
hgs
parents:
diff changeset
   759
}
hgs
parents:
diff changeset
   760
hgs
parents:
diff changeset
   761
}//end namespace