Changeset 86

Show
Ignore:
Timestamp:
07/09/07 10:02:18 (1 year ago)
Author:
daboo
Message:

Some 4.1 changes. Mostly vCard/CardDAV and CalDAV scheduling support.

Location:
Mulberry/branches/v4.1d1/Sources_Common
Files:
68 added
90 modified

Legend:

Unmodified
Added
Removed
  • Mulberry/branches/v4.1d1/Sources_Common/Application/Address_Book/CAddressBookViewCommon.cp

    r19 r86  
    2222#include "CAdbkManagerTable.h" 
    2323#include "CAdbkProtocol.h" 
     24#include "CAddressBook.h" 
    2425#include "CAddressBookToolbar.h" 
    2526#include "CAddressBookWindow.h" 
     
    2930#include "CErrorHandler.h" 
    3031#include "CGroupTable.h" 
    31 #include "CLocalAddressBook.h" 
    3232#include "CLog.h" 
    3333#include "CPreferences.h" 
    34 #include "CRemoteAddressBook.h" 
    3534#include "CTableViewWindow.h" 
    3635#include "CTaskClasses.h" 
     
    113112{ 
    114113        // See if it matches current address book 
    115         if (proto && dynamic_cast<CRemoteAddressBook*>(GetAddressBook()) && 
    116                 (dynamic_cast<CRemoteAddressBook*>(GetAddressBook())->GetProtocol() == proto)) 
     114        if (proto && (GetAddressBook()->GetProtocol() == proto)) 
    117115        { 
    118116                // Special case 3-pane/1-pane 
     
    133131bool CAddressBookView::TestClose() 
    134132{ 
    135         // Check for local (file-based) address book 
    136         if (dynamic_cast<CLocalAddressBook*>(GetAddressBook())) 
    137                 // Ask user whether they really want to do this 
    138                 return CErrorHandler::PutCautionAlertRsrc(true, "Alerts::Adbk::CloseDeactivate") == CErrorHandler::Ok; 
    139         else 
    140133                // Can always close remote 
    141134                return true; 
     
    165158                // Now close the address book if this is the last view containing it 
    166159                GetAddressBook()->Close(); 
    167  
    168                 // Must delete local address books 
    169                 if (dynamic_cast<CLocalAddressBook*>(GetAddressBook())) 
    170                 { 
    171                         delete mAdbk; 
    172                         mAdbk = NULL; 
    173                 } 
    174160        } 
    175161         
     
    306292                 
    307293                // Stop listening to previous address book's protocol 
    308                 if (dynamic_cast<CRemoteAddressBook*>(old_adbk)) 
    309                         dynamic_cast<CRemoteAddressBook*>(old_adbk)->GetProtocol()->Remove_Listener(this); 
     294                old_adbk->GetProtocol()->Remove_Listener(this); 
    310295        } 
    311296 
     
    314299        // Open the address book first 
    315300        if (adbk) 
     301        { 
    316302                GetAddressBook()->Open(); 
    317303                 
    318304        // Start listening to new address book's protocol 
    319         if (dynamic_cast<CRemoteAddressBook*>(GetAddressBook())) 
    320                 dynamic_cast<CRemoteAddressBook*>(GetAddressBook())->GetProtocol()->Add_Listener(this); 
     305                GetAddressBook()->GetProtocol()->Add_Listener(this); 
     306        } 
    321307 
    322308        // Reset table items and initiate sort 
  • Mulberry/branches/v4.1d1/Sources_Common/Application/Address_Book_Manager/CAdbkManagerTableCommon.cp

    r19 r86  
    2424#include "CAdbkProtocol.h" 
    2525#include "CAdbkSearchWindow.h" 
    26 #include "CAddressBookDoc.h" 
     26#include "CAddressBook.h" 
    2727#include "CAddressBookManager.h" 
    2828#include "CAddressBookView.h" 
     
    3838#include "CMulberryApp.h" 
    3939#include "CMulberryCommon.h" 
    40 #include "CRemoteAddressBook.h" 
    4140#if __dest_os == __mac_os || __dest_os == __mac_os_x 
    4241#include "CResources.h" 
     
    4443#include "CPreferences.h" 
    4544#include "CTaskClasses.h" 
     45#include "CWaitCursor.h" 
    4646 
    4747#if __dest_os == __mac_os || __dest_os == __mac_os_x 
     
    6262 
    6363// O T H E R  M E T H O D S ____________________________________________________________________________ 
     64 
     65// Set the address book manager 
     66void CAdbkManagerTable::SetManager(CAddressBookManager* manager) 
     67{ 
     68        // Save server 
     69        mManager = manager; 
     70         
     71        if (mManager) 
     72        { 
     73                mManager->Add_Listener(this); 
     74 
     75                // Make sure its open so items will actually be displayed 
     76                mTableView->SetOpen(); 
     77 
     78                // Calculate number of rows for first time 
     79                ResetTable(); 
     80        } 
     81} 
     82 
     83// Reset the table 
     84void CAdbkManagerTable::ResetTable() 
     85{ 
     86        // Start cursor for busy operation 
     87        CWaitCursor wait; 
     88 
     89        // Delete all existing rows 
     90        Clear(); 
     91        mHierarchyCol = 1; 
     92        mData.clear(); 
     93 
     94        // Only if we have the manager 
     95        if (!mManager) 
     96                return; 
     97 
     98        // Get list from manager 
     99        const CAddressBookList& nodes = mManager->GetNodes(); 
     100 
     101        // Add each node 
     102        TableIndexT row = 0; 
     103        TableIndexT exp_row = 1; 
     104        for(CAddressBookList::const_iterator iter = nodes.begin(); iter != nodes.end(); iter++) 
     105        { 
     106                AddNode(*iter, row, false); 
     107 
     108                // Listen to each protocol 
     109                CAdbkProtocol* proto = (*iter)->GetProtocol(); 
     110                if (proto) 
     111                        proto->Add_Listener(this); 
     112                 
     113                // Bump up exposed row counter 
     114                exp_row++; 
     115        } 
     116 
     117        // Always expand a single account 
     118        if (exp_row == 2) 
     119                ExpandRow(1); 
     120 
     121        // Refresh list 
     122        FRAMEWORK_REFRESH_WINDOW(this) 
     123         
     124        // Force toolbar update 
     125        mTableView->RefreshToolbar(); 
     126 
     127} 
     128 
     129// Reset the table from the mboxList 
     130void CAdbkManagerTable::ClearTable() 
     131{ 
     132        // Delete all existing rows 
     133        Clear(); 
     134        mData.clear(); 
     135 
     136        // Refresh list 
     137        FRAMEWORK_REFRESH_WINDOW(this) 
     138         
     139        // Force toolbar update 
     140        mTableView->RefreshToolbar(); 
     141} 
    64142 
    65143void CAdbkManagerTable::ListenTo_Message(long msg, void* param) 
     
    83161                RefreshProtocol(static_cast<CAdbkProtocol*>(param)); 
    84162                break; 
     163        case CINETProtocol::eBroadcast_Logon: 
     164                SwitchProtocol(static_cast<CAdbkProtocol*>(param)); 
     165                break; 
    85166        case CINETProtocol::eBroadcast_Logoff: 
    86                 LogoffProtocol(static_cast<CAdbkProtocol*>(param)); 
     167                SwitchProtocol(static_cast<CAdbkProtocol*>(param)); 
    87168                break; 
    88         } 
    89 } 
    90  
    91 // Test for selected adbk 
    92 bool CAdbkManagerTable::TestSelectionAdbk(TableIndexT row) 
    93 { 
    94         // This is an adbk 
    95         return IsCellAdbk(row); 
    96 } 
    97  
    98 // Test for selected adbk 
    99 bool CAdbkManagerTable::TestSelectionAdbkDisconnected(TableIndexT row) 
    100 { 
    101         // This is an adbk 
    102         if (IsCellAdbk(row)) 
    103         { 
    104                 CRemoteAddressBook* adbk = dynamic_cast<CRemoteAddressBook*>(GetCellAdbk(row)); 
    105  
    106                 return adbk && adbk->GetProtocol()->CanDisconnect() && !adbk->GetProtocol()->IsDisconnected(); 
    107         } 
    108          
    109         return false; 
    110 } 
    111  
    112 // Test for selected adbk 
    113 bool CAdbkManagerTable::TestSelectionAdbkClearDisconnected(TableIndexT row) 
    114 { 
    115         // This is an adbk 
    116         if (IsCellAdbk(row)) 
    117         { 
    118                 CRemoteAddressBook* adbk = dynamic_cast<CRemoteAddressBook*>(GetCellAdbk(row)); 
    119  
    120                 return adbk && adbk->GetProtocol()->CanDisconnect(); 
    121         } 
    122          
    123         return false; 
    124 } 
    125  
    126 // Set the address book manager 
    127 void CAdbkManagerTable::SetManager(CAddressBookManager* manager) 
    128 { 
    129         // Save server 
    130         mManager = manager; 
    131          
    132         if (mManager) 
    133         { 
    134                 mManager->Add_Listener(this); 
    135  
    136                 // Make sure its open so items will actually be displayed 
    137                 mTableView->SetOpen(); 
    138  
    139                 // Calculate number of rows for first time 
    140                 ResetTable(); 
    141         } 
     169        case CAdbkProtocol::eBroadcast_ClearSubList: 
     170                ClearSubList(static_cast<CAddressBook*>(param)); 
     171                break; 
     172        case CAdbkProtocol::eBroadcast_RefreshSubList: 
     173                RefreshSubList(static_cast<CAddressBook*>(param)); 
     174                break; 
     175        case CAddressBookManager::eBroadcast_InsertNode: 
     176                InsertNode(static_cast<CAddressBook*>(param)); 
     177                break; 
     178        case CAddressBookManager::eBroadcast_RemoveNode: 
     179        case CAddressBookManager::eBroadcast_DeleteNode: 
     180                DeleteNode(static_cast<CAddressBook*>(param)); 
     181                break; 
     182        case CAdbkProtocol::eBroadcast_RefreshNode: 
     183                RefreshNode(static_cast<CAddressBook*>(param)); 
     184                break; 
     185        } 
     186} 
     187 
     188void CAdbkManagerTable::DoSelectionChanged() 
     189{ 
     190        CHierarchyTableDrag::DoSelectionChanged(); 
     191         
     192        // Determine whether preview is triggered 
     193        const CUserAction& preview = mTableView->GetPreviewAction(); 
     194        if (preview.GetSelection()) 
     195                DoPreview(); 
     196 
     197        // Determine whether full view is triggered 
     198        const CUserAction& fullview = mTableView->GetFullViewAction(); 
     199        if (fullview.GetSelection()) 
     200                DoFullView(); 
     201} 
     202 
     203// Handle single click 
     204void CAdbkManagerTable::DoSingleClick(unsigned long row, const CKeyModifiers& mods) 
     205{ 
     206        // Determine whether preview is triggered 
     207        const CUserAction& preview = mTableView->GetPreviewAction(); 
     208        if (preview.GetSingleClick() && 
     209                (preview.GetSingleClickModifiers() == mods)) 
     210                DoPreview(); 
     211 
     212        // Determine whether full view is triggered 
     213        const CUserAction& fullview = mTableView->GetFullViewAction(); 
     214        if (fullview.GetSingleClick() && 
     215                (fullview.GetSingleClickModifiers() == mods)) 
     216                DoFullView(); 
     217        } 
     218         
     219// Handle double click 
     220void CAdbkManagerTable::DoDoubleClick(unsigned long row, const CKeyModifiers& mods) 
     221{ 
     222        // Determine whether preview is triggered 
     223        const CUserAction& preview = mTableView->GetPreviewAction(); 
     224        if (preview.GetDoubleClick() && 
     225                (preview.GetDoubleClickModifiers() == mods)) 
     226                DoPreview(); 
     227 
     228        // Determine whether full view is triggered 
     229        const CUserAction& fullview = mTableView->GetFullViewAction(); 
     230        if (fullview.GetDoubleClick() && 
     231                (fullview.GetDoubleClickModifiers() == mods)) 
     232                DoFullView(); 
     233} 
     234 
     235void CAdbkManagerTable::DoPreview() 
     236{ 
     237        PreviewAddressBook(); 
     238        } 
     239         
     240void CAdbkManagerTable::DoPreview(CAddressBook* adbk) 
     241{ 
     242        PreviewAddressBook(adbk); 
     243} 
     244 
     245// Just edit the item 
     246void CAdbkManagerTable::DoFullView() 
     247{ 
     248        OnOpenAddressBook(); 
    142249} 
    143250 
     
    154261        { 
    155262                // Add selection to list 
    156                 CFlatAdbkList selected; 
     263                CAddressBookList selected; 
     264                selected.set_delete_data(false); 
    157265                if (DoToSelection1((DoToSelection1PP) &CAdbkManagerTable::AddSelectionToList, &selected) && (selected.size() == 1)) 
     266                { 
    158267                        adbk = selected.front(); 
     268                        if (!adbk->IsAdbk()) 
     269                                adbk = NULL; 
     270                } 
    159271        } 
    160272         
     
    177289                // Check whether different 
    178290                CAddressBook* old_adbk = mTableView->GetPreview()->GetAddressBook(); 
    179                 cdstring old_url = old_adbk ? old_adbk->GetURL(true) : cdstring::null_str; 
    180                 if ((adbk ? adbk->GetURL(true) : cdstring::null_str) != old_url) 
     291                cdstring old_url = old_adbk ? old_adbk->GetAccountName() : cdstring::null_str; 
     292                if ((adbk ? adbk->GetAccountName() :