windowssyncsourceconfig.cpp

来自「funambol window mobile客户端源代码」· C++ 代码 · 共 280 行

CPP
280
字号
/*
 * Funambol is a mobile platform developed by Funambol, Inc. 
 * Copyright (C) 2003 - 2007 Funambol, Inc.
 * 
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License version 3 as published by
 * the Free Software Foundation with the addition of the following permission
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
 * WARRANTY OF NON INFRINGEMENT  OF THIRD PARTY RIGHTS.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
 * details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program; if not, see http://www.gnu.org/licenses or write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA.
 * 
 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
 * 
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 * 
 * In accordance with Section 7(b) of the GNU Affero General Public License
 * version 3, these Appropriate Legal Notices must retain the display of the
 * "Powered by Funambol" logo. If the display of the logo is not reasonably
 * feasible for technical reasons, the Appropriate Legal Notices must display
 * the words "Powered by Funambol".
 */



#include "pim/WindowsSyncSourceConfig.h"
#include "base/util/utils.h"
#include "syncml/core/CTCap.h"
#include "pim/ContactBuilder.h"
#include "pim/AppointmentBuilder.h"
#include "pim/TaskBuilder.h"
#include "pim/UtilsRecurrence.h"

WindowsSyncSourceConfig::WindowsSyncSourceConfig() {

    initialize();
    // Please note that 's' pointer MUST be set!!
}

WindowsSyncSourceConfig::WindowsSyncSourceConfig(SyncSourceConfig* sc) {

    initialize();

    // Link SyncSourceConfig pointer with common properties:
    if (!sc) {
        //sprintf(lastErrorMsg, "WindowsSyncSourceConfig initialized with a NULL pointer!");
        //throw lastErrorMsg;
        setError( ERR_NULLPTR_WINDSYNCSOURCECONFIG , "WindowsSyncSourceConfig initialized with a NULL pointer!" );
        throw getLastErrorMsg();
    }
    s = sc;
    populateCTCap();
}

WindowsSyncSourceConfig::~WindowsSyncSourceConfig() {
    /*if (folderPath) {
        delete [] folderPath;
        folderPath = NULL;
    }*/
    s=NULL;
}


// Return the pointer to external SyncSourceConfig object
// used for common properties.
SyncSourceConfig* WindowsSyncSourceConfig::getCommonConfig() {
    return s;
}




//
// Internal properties
//
/*_declspec(dllexport) const char* WindowsSyncSourceConfig::getFolderPath() const {
    return folderPath;
}
void WindowsSyncSourceConfig::setFolderPath(const char* v) {
    safeDelete(&folderPath);
    folderPath = stringdup(v);
}
*/

/*_declspec(dllexport) bool WindowsSyncSourceConfig::getUseSubfolders() const {
    return useSubfolders;
}
void WindowsSyncSourceConfig::setUseSubfolders(bool v) {
    useSubfolders = v;
}*/


/*
_declspec(dllexport) long WindowsSyncSourceConfig::getEndTimestamp() const {
    return endTimestamp;
}
void WindowsSyncSourceConfig::setEndTimestamp(long v) {
    endTimestamp = v;
}
*/


/*bool WindowsSyncSourceConfig::getIsSynced() const {
    return isSynced;
}
void WindowsSyncSourceConfig::setIsSynced(bool v) {
    isSynced = v;
}*/



/*
 * Copy Constructor
 */
WindowsSyncSourceConfig::WindowsSyncSourceConfig(const WindowsSyncSourceConfig& wsc) {

    if (&wsc == this) {
        return;
    }

    initialize();

    // WARNING! pointer to the same object!
    s = wsc.s;

    populateCTCap();

    //setFolderPath    (wsc.getFolderPath    ());
    //setUseSubfolders (wsc.getUseSubfolders ());
    //setEndTimestamp  (wsc.getEndTimestamp  ());
    //setIsSynced      (wsc.getIsSynced      ());
}


/*
 * Operator =
 */
WindowsSyncSourceConfig& WindowsSyncSourceConfig::operator = (const WindowsSyncSourceConfig& wsc) {

    initialize();

    // WARNING! pointer to the same object!
    s = wsc.s;

    //setFolderPath    (wsc.getFolderPath    ());
    //setUseSubfolders (wsc.getUseSubfolders ());
    //setEndTimestamp  (wsc.getEndTimestamp  ());
    //setIsSynced      (wsc.getIsSynced      ());

    populateCTCap();

    return *this;
}



/**
 * Assign the internal SyncSourceConfig* pointer.
 */
void WindowsSyncSourceConfig::setCommonConfig(SyncSourceConfig* sc) {
    s = sc;
    populateCTCap();
}



// Initialize members
void WindowsSyncSourceConfig::initialize() {

    s               = NULL;
    //folderPath      = NULL;
    //useSubfolders   = false;
    //endTimestamp    = 0;
    //isSynced        = false;

}

__declspec(dllexport) const string& WindowsSyncSourceConfig::getSyncDir() const {
    return dir;
}

const string& WindowsSyncSourceConfig::getUseSif()  const  {
    return useSif;
}

void WindowsSyncSourceConfig::populateCTCap(){
    if (strcmp ( s->getName(), "contact" ) == 0){
        //adding sif
        ArrayList* p = getContactProperties();
        s->addCtCap(p);

        //adding vcard
        p = getVCardProperties();
        s->addCtCap(p, "text/x-vcard", "2.1");
    }
    if (strcmp ( s->getName(), "calendar" ) == 0){
        //adding sif
        ArrayList* p = getAppointmentProperties();
        p->add(getRecurrenceProperties());
        Property prop;
        prop.setPropName("Exceptions");
        p->add(prop);
        s->addCtCap(p);

        //adding vcalendar
        p = getVCalendarProperties();
        s->addCtCap(p, "text/x-vcalendar", "1.0");
    }
    if (strcmp ( s->getName(), "task" ) == 0){
        //adding sif
        ArrayList* p = getTaskProperties();
        p->add(getRecurrenceProperties());
        s->addCtCap(p);

        //adding vTodo
        p = getVTodoProperties();
        s->addCtCap(p, "text/x-vcalendar", "1.0");
    }
    if (strcmp ( s->getName(), "note" ) == 0){
        ArrayList* p = new ArrayList();
        
        //adding sif
        Property subject,body;
        subject.setPropName("Subject");
        body.setPropName("Body");
        p->add(subject);
        p->add(body);
        s->addCtCap(p);

        p->clear();

        //adding vNote
        Property pval;
        subject.setPropName("SUBJECT");
        body.setPropName("BODY");
        ArrayList valenums;
        StringBuffer val;

        pval.setPropName("BEGIN");
        val = "VNOTE";
        valenums.add(val);
        pval.setValEnums(&valenums);
        p->add(pval);

        valenums.clear();

        pval.setPropName("END");
        val = "VNOTE";
        valenums.add(val);
        pval.setValEnums(&valenums);
        p->add(pval);

        valenums.clear();

        pval.setPropName("VERSION");
        val = "1.1";
        valenums.add(val);
        pval.setValEnums(&valenums);
        p->add(pval);
        p->add(subject);
        p->add(body);
        s->addCtCap(p, "text/x-vnote", "1.1");
    }
}



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?