⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syncsettings.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
 * 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 General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */

// SyncSettings.cpp : implementation file
//

#include "stdafx.h"
#include "SyncSettings.h"

#include "ContactSettings.h"
#include "CalendarSettings.h"
#include "TaskSettings.h"
#include "MailSettings.h"
#include "BriefcaseSettings.h"
#include "pim/ClientSettings.h"
#include "SyncSettingsAdvanced.h"

#if defined(WIN32_PLATFORM_PSPC)
#include "NotesSettings.h"
#endif

#include "aygshell.h"
#include "pim/maincpp.h"
#include "pim/account.h"

// CSyncSettings dialog

#define ADVANCED_CONTACTS 1
#define ADVANCED_CALENDAR 2
#define ADVANCED_TASKS 4
#define ADVANCED_MAIL 8
#define ADVANCED_BRIEFCASE 16
#define ADVANCED_NOTES 32

IMPLEMENT_DYNAMIC(CSyncSettings, CDialog)

CSyncSettings::CSyncSettings(CWnd* pParent /*=NULL*/)
: CDialog(CSyncSettings::IDD, pParent)
{
}

CSyncSettings::~CSyncSettings()
{
}

void CSyncSettings::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_SYNC_CONTACTS, checkContacts);
    DDX_Control(pDX, IDC_SYNC_CALENDAR, checkCalendar);
    DDX_Control(pDX, IDC_SYNC_TASKS, checkTasks);
    DDX_Control(pDX, IDC_SYNC_MAIL, checkMail);
    DDX_Control(pDX, IDC_SYNC_BRIEFCASE, checkBriefcase);
#if defined(WIN32_PLATFORM_PSPC)
    DDX_Control(pDX, IDC_SYNC_NOTES, checkNotes);
    DDX_Control(pDX, IDC_SYNC_BUTTON_NOTES, butNotes);
#endif
    DDX_Control(pDX, IDC_SYNC_BUTTON_MAIL, butMail);
    DDX_Control(pDX, IDC_SYNC_BUTTON_CALENDAR, butCalendar);
    DDX_Control(pDX, IDC_SYNC_BUTTON_CONTACTS, butContacts);
    DDX_Control(pDX, IDC_SYNC_BUTTON_TASKS, butTasks);
    DDX_Control(pDX, IDC_SYNC_BUTTON_BRIEFCASE, butBriefcase);
    DDX_Control(pDX, IDC_SYNC_LINK_ADVANCED, linkAdvanced);
}


BEGIN_MESSAGE_MAP(CSyncSettings, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
    ON_WM_SIZE()
#endif
    ON_BN_SETFOCUS(IDC_SYNC_CONTACTS, &CSyncSettings::OnSetfocusSyncContacts)
    ON_BN_CLICKED(IDC_SYNC_CONTACTS, &CSyncSettings::OnBnClickedSyncContacts)
    ON_BN_SETFOCUS(IDC_SYNC_CALENDAR, &CSyncSettings::OnBnSetfocusSyncCalendar)
    ON_BN_SETFOCUS(IDC_SYNC_TASKS, &CSyncSettings::OnBnSetfocusSyncTasks)
    ON_BN_SETFOCUS(IDC_SYNC_MAIL, &CSyncSettings::OnBnSetfocusSyncMail)
    ON_BN_SETFOCUS(IDC_SYNC_BRIEFCASE, &CSyncSettings::OnBnSetfocusSyncBriefcase)
    ON_BN_SETFOCUS(IDC_SYNC_BRIEFCASE, &CSyncSettings::OnBnSetfocusSyncBriefcase)
    ON_BN_SETFOCUS(IDC_SYNC_LINK_ADVANCED, &CSyncSettings::OnBnSetfocusSyncLinkAdvanced)

#if defined(WIN32_PLATFORM_PSPC)
    ON_BN_SETFOCUS(IDC_SYNC_NOTES, &CSyncSettings::OnBnSetfocusSyncNotes)
#endif

    ON_BN_CLICKED(IDC_SYNC_CALENDAR, &CSyncSettings::OnBnClickedSyncCalendar)
    ON_BN_CLICKED(IDC_SYNC_TASKS, &CSyncSettings::OnBnClickedSyncTasks)
    ON_BN_CLICKED(IDC_SYNC_MAIL, &CSyncSettings::OnBnClickedSyncMail)
    ON_BN_CLICKED(IDC_SYNC_BRIEFCASE, &CSyncSettings::OnBnClickedSyncBriefcase)
    //ON_COMMAND(IDADVANCED, &CSyncSettings::showAdvanced)
    ON_BN_CLICKED(IDC_SYNC_BUTTON_MAIL, &CSyncSettings::OnClickedSyncButtonMail)
    ON_BN_CLICKED(IDC_SYNC_BUTTON_CALENDAR, &CSyncSettings::OnClickedSyncButtonCalendar)
    ON_BN_CLICKED(IDC_SYNC_BUTTON_CONTACTS, &CSyncSettings::OnClickedSyncButtonContacts)
    ON_BN_CLICKED(IDC_SYNC_BUTTON_TASKS, &CSyncSettings::OnClickedSyncButtonTasks)
    ON_BN_CLICKED(IDC_SYNC_BUTTON_BRIEFCASE, &CSyncSettings::OnClickedSyncButtonBriefcase)
#if defined(WIN32_PLATFORM_PSPC)
    ON_BN_CLICKED(IDC_SYNC_NOTES, &CSyncSettings::OnBnClickedSyncNotes)
    ON_BN_CLICKED(IDC_SYNC_BUTTON_NOTES, &CSyncSettings::OnClickedSyncButtonNotes)
#endif
    ON_BN_CLICKED(IDC_SYNC_LINK_ADVANCED, &CSyncSettings::OnBnClickedSyncLinkAdvanced)
END_MESSAGE_MAP()


// CSyncSettings message handlers
BOOL CSyncSettings::OnInitDialog()
{
    CString s1;
    s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNC_SETTINGS);
    SetWindowText(s1);
    CDialog::OnInitDialog();

    butMail.ShowWindow(TRUE);
    butCalendar.ShowWindow(TRUE);
    butContacts.ShowWindow(TRUE);
    butTasks.ShowWindow(TRUE);
    butBriefcase.ShowWindow(TRUE);

#if defined(WIN32_PLATFORM_PSPC)
    butNotes.ShowWindow(TRUE);
#endif

    ZeroMemory(&dlgCommandBar, sizeof(SHMENUBARINFO));
    dlgCommandBar.cbSize = sizeof(SHMENUBARINFO);
    dlgCommandBar.hwndParent = this->GetSafeHwnd();
    dlgCommandBar.dwFlags = SHCMBF_HMENU;
    dlgCommandBar.nToolBarId = IDM_OKCANCEL;

#if defined WIN32_PLATFORM_WFSP
#if (_WIN32_WCE < 0x500)
    dlgCommandBar.nToolBarId = IDR_MENUBAR_OKCANCEL;
#endif
#endif
    dlgCommandBar.hInstRes = getLocalizationUtils()->getLocaleResource();
    dlgCommandBar.nBmpId = 0;
    dlgCommandBar.cBmpImages = 0;
    if(!SHCreateMenuBar(&dlgCommandBar)){
        TRACE(_T("Cannot create command bar!"));
        return FALSE;
    }

    // load strings
    LoadStringResources();

    LOGFONT lf;
    memset(&lf, 0, sizeof(LOGFONT));
    HFONT hFont = (HFONT) GetStockObject(SYSTEM_FONT);
    GetObject(hFont, sizeof lf, &lf);
    lf.lfWeight = FW_BOLD;
    lf.lfHeight +=FONT_HEIGHT_OFFSET;
    VERIFY(fontBold.CreateFontIndirect(&lf));

    GetDlgItem(IDC_SYNC_STATIC_ITEMS)->SetFont(&fontBold);
    s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_ADVANCED_SETTINGS); linkAdvanced.setText(s1);

    s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_DETAILS_LINK);
    //s1=getStringLang(IDS_DETAILS_LINK);
    butMail.setText(s1); butContacts.setText(s1);
    butCalendar.setText(s1); butTasks.setText(s1);
    butBriefcase.setText(s1);

#if defined(WIN32_PLATFORM_PSPC)
    butNotes.setText(s1);
#endif

    // read encryption value from registry
    ClientSettings* cs = getRegConfig();

    if( strcmp(cs->getConfigSourcesParameter("contact","sync"), "none")){
        checkContacts.SetCheck(BST_CHECKED);
    }
    else
    {
        checkContacts.SetCheck(BST_UNCHECKED);
        butContacts.EnableWindow(FALSE);
    }

    if(strcmp(cs->getConfigSourcesParameter("calendar","sync"), "none")) {
        checkCalendar.SetCheck(BST_CHECKED);
    }
    else
    {
        checkCalendar.SetCheck(BST_UNCHECKED);
        butCalendar.EnableWindow(FALSE);
    }


    checkTasks.EnableWindow(TRUE);
    if( strcmp(cs->getConfigSourcesParameter("task","sync"), "none")){
        checkTasks.SetCheck(BST_CHECKED);
    }
    else{
        checkTasks.SetCheck(BST_UNCHECKED);
        butTasks.EnableWindow(FALSE);
    }

    if (doesFunambolAccountExist()) {
        // Funambol mail account exists
        checkMail.EnableWindow(TRUE);
        if( strcmp(cs->getConfigSourcesParameter("mail","sync"), "none")){
            checkMail.SetCheck(BST_CHECKED);
        }
        else{
            checkMail.SetCheck(BST_UNCHECKED);
            butMail.EnableWindow(FALSE);
        };
    } else {
        // Funambol mail account DOES NOT exist
        checkMail.EnableWindow(FALSE);
        butMail.EnableWindow(FALSE);
        checkMail.SetCheck(BST_UNCHECKED);
    }

    if (!cs->getIsPortal()) {
        checkBriefcase.EnableWindow(TRUE);
        checkBriefcase.ShowWindow(SW_SHOW);
        butBriefcase.ShowWindow(SW_SHOW);
        if( strcmp(cs->getConfigSourcesParameter("briefcase","sync"), "none"))
            checkBriefcase.SetCheck(BST_CHECKED);
        else
        {
            checkBriefcase.SetCheck(BST_UNCHECKED);
            butBriefcase.EnableWindow(FALSE);
        }
    } else {
        checkBriefcase.EnableWindow(FALSE);
        checkBriefcase.SetCheck(BST_UNCHECKED);
        checkBriefcase.ShowWindow(SW_HIDE);
        butBriefcase.EnableWindow(FALSE);
        butBriefcase.ShowWindow(SW_HIDE);
    }

#if defined(WIN32_PLATFORM_PSPC)
    if (!cs->getIsPortal()) {
        checkNotes.EnableWindow(TRUE);
        checkNotes.ShowWindow(SW_SHOW);
        butNotes.ShowWindow(SW_SHOW);
        if( strcmp(cs->getConfigSourcesParameter("note","sync"), "none"))
            checkNotes.SetCheck(BST_CHECKED);
        else
        {
            checkNotes.SetCheck(BST_UNCHECKED);
            butNotes.EnableWindow(FALSE);
        }
    }  else {
        checkNotes.EnableWindow(FALSE);
        checkNotes.SetCheck(BST_UNCHECKED);
        checkNotes.ShowWindow(SW_HIDE);
        butNotes.EnableWindow(FALSE);
        butNotes.ShowWindow(SW_HIDE);
    }
#endif

    source = TEXT("");
    advanced = 0;
    checkedSources = 0;

    Invalidate();
    UpdateWindow();

    // fix for wrong title problem, we get & set the title for the main window
    wchar_t title[256];
    AfxGetMainWnd()->GetWindowText(title,256);
    AfxGetMainWnd()->SetWindowText(title);

    checkMail.SetFocus();

    return FALSE;
}

void CSyncSettings::OnSetfocusSyncContacts()
{
    if(checkContacts.GetCheck() == BST_CHECKED) {
        source=TEXT("contacts");
    }
}

void CSyncSettings::OnBnClickedSyncContacts()
{
    if(checkContacts.GetCheck() == BST_UNCHECKED)
        butContacts.EnableWindow(FALSE);
    else
        butContacts.EnableWindow(TRUE);

    if(checkContacts.GetCheck() == BST_CHECKED) {
        source=TEXT("contacts");
    }
}

void CSyncSettings::OnBnSetfocusSyncCalendar()
{
    if(checkCalendar.GetCheck() == BST_CHECKED) {
        source=TEXT("calendar");
    }
}

void CSyncSettings::OnBnSetfocusSyncTasks()
{
    if(checkTasks.GetCheck() == BST_CHECKED) {
        source=TEXT("tasks");
    }
}

void CSyncSettings::OnBnSetfocusSyncMail()
{
    if(checkMail.GetCheck() == BST_CHECKED) {
        source=TEXT("mail");
    }
}

void CSyncSettings::OnBnSetfocusSyncBriefcase()
{
    if(checkBriefcase.GetCheck() == BST_CHECKED) {
        source=TEXT("briefcase");
    }
}

void CSyncSettings::OnBnClickedSyncCalendar()
{
    if(checkCalendar.GetCheck() == BST_UNCHECKED)
        butCalendar.EnableWindow(FALSE);
    else
        butCalendar.EnableWindow(TRUE);

    if(checkCalendar.GetCheck() == BST_CHECKED) {
        source=TEXT("calendar");
    }
}

void CSyncSettings::OnBnClickedSyncTasks()
{
    if(checkTasks.GetCheck() == BST_UNCHECKED)
        butTasks.EnableWindow(FALSE);
    else
        butTasks.EnableWindow(TRUE);

    if(checkTasks.GetCheck() == BST_CHECKED) {
        source=TEXT("tasks");
    }
}

void CSyncSettings::OnBnClickedSyncMail()
{
    if(checkMail.GetCheck() == BST_UNCHECKED)
        butMail.EnableWindow(FALSE);
    else
        butMail.EnableWindow(TRUE);

    if(checkMail.GetCheck() == BST_CHECKED) {
        source=TEXT("mail");
    }
}

void CSyncSettings::OnBnClickedSyncBriefcase()
{
    if(checkBriefcase.GetCheck() == BST_UNCHECKED)
        butBriefcase.EnableWindow(FALSE);
    else
        butBriefcase.EnableWindow(TRUE);

    if(checkBriefcase.GetCheck() == BST_CHECKED) {
        source=TEXT("briefcase");
    }
}


void CSyncSettings::showAdvanced()
{
    if(source == "contacts"){
        CContactSettings wndContSett;
        INT_PTR result = wndContSett.DoModal();
        if(result == IDOK)
            advanced |= ADVANCED_CONTACTS;

        butContacts.SetFocus();
    };

    if(source == "calendar"){
        CCalendarSettings wndSett;
        INT_PTR result = wndSett.DoModal();
        if(result == IDOK)
            advanced |= ADVANCED_CALENDAR;

        butCalendar.SetFocus();
    }

    if(source == "tasks"){
        CTaskSettings wndSett;
        INT_PTR result = wndSett.DoModal();
        if(result == IDOK)
            advanced |= ADVANCED_TASKS;

        butTasks.SetFocus();
    }

    if(source == "mail"){
        CMailSettings wndSett;
        INT_PTR result = wndSett.DoModal();
        if(result == IDOK)
            advanced |= ADVANCED_MAIL;

        butMail.SetFocus();
    }

    if(source == "briefcase"){
        CBriefcaseSettings wndSett;
        INT_PTR result = wndSett.DoModal();
        if(result == IDOK)
            advanced |= ADVANCED_BRIEFCASE;

        butBriefcase.SetFocus();
    }

#if defined(WIN32_PLATFORM_PSPC)
    if(source == "note"){
        CNotesSettings wndSett;
        INT_PTR result = wndSett.DoModal();
        if(result == IDOK)
            advanced |= ADVANCED_NOTES;

        butNotes.SetFocus();

⌨️ 快捷键说明

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