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