[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: branches/kdepim/enterprise/kdepim/kmail
From:       David Faure <dfaure () klaralvdalens-datakonsult ! se>
Date:       2007-05-18 11:34:09
Message-ID: 200705181334.18327.dfaure () klaralvdalens-datakonsult ! se
[Download RAW message or body]

On Thursday 17 May 2007, Till Adam wrote:
> SVN commit 665722 by tilladam:
> 
> For read-only folders (those where we can't adjust the alarm relevance of a
> folder directly, offer to override teh alarm relevanve, that is, make it
> possible to block alarms for other people's folders. The gui changes from
> a combo box to a checkbox, in that case, and the "we have a local override"
> flag prevents the change from being overwritten by the next sync. If the
> alarms are re-enabled, that flag is reset, and the next sync restores the
> state from the server.
> 
> if ( mIncidencesForComboBox )
> -      mIncidencesForComboBox->setEnabled( type == KMail::ContentsTypeCalendar ||
> -                                          type == KMail::ContentsTypeTask );
> +      mIncidencesForComboBox->setEnabled( enable );
> +  if ( mIncidencesForComboBox )
> +      mIncidencesForCheckBox->setEnabled( enable );

Copy/paste bug, fixed.

> -      KMFolderCachedImap::IncidencesFor incfor =
> -        static_cast<KMFolderCachedImap::IncidencesFor>( \
> mIncidencesForComboBox->currentItem() ); +    if ( folder->folderType() == \
> KMFolderTypeCachedImap ) { KMFolderCachedImap* dimap = \
> static_cast<KMFolderCachedImap *>( mDlg->folder()->storage() ); +      \
> KMFolderCachedImap::IncidencesFor incfor = KMFolderCachedImap::IncForAdmins; +      \
> if ( mIncidencesForComboBox ) { +        incfor = \
> static_cast<KMFolderCachedImap::IncidencesFor>( \
> mIncidencesForComboBox->currentItem() ); +      }
> +      if ( mIncidencesForCheckBox ) {
> +        incfor = mIncidencesForCheckBox->isChecked() ? \
> KMFolderCachedImap::IncForAdmins: KMFolderCachedImap::IncForNobody;
Can you explain the logic for this line?
This is about readonly folders; whether it's ForAdmins or ForNobody doesn't change \
anything for the current user, right? So, shouldn't the checkbox toggle between \
"ForAllReaders" and one of the other two values?

> if ( dimap->incidencesFor() != incfor ) {
> dimap->setIncidencesFor( incfor );
> +        if ( mIncidencesForCheckBox && incfor != KMFolderCachedImap::IncForNobody \
> ) +          dimap->resetIncidencesForChanged();
This allows to clear the local override when the server has "for admins" and we \
select "for admins" locally. But what about all the other cases?
Let's see..

* Server has ForNobody: should we then disable the checkbox? Currently it would be \
unchecked, but if I check it then incfor will be ForAdmins (should be ForAllReaders, \
as mentionned above), and the reset call should be made if I set back to Nobody (i.e. \
uncheck the checkbox), so the above if() has wrong logic. I think we need to store a \
local copy of the server annotation?

* Server has ForAdmins: current user doesn't get alarms by default. So also the line
 mIncidencesForCheckBox->setChecked( dimap->incidencesFor() != \
KMFolderCachedImap::IncForNobody ); seems wrong...
AFAIU, in a readonly folder, the correct initialization logic would be
mIncidencesForCheckBox->setChecked( dimap->incidencesFor() == \
KMFolderCachedImap::IncForReaders );

* Server has ForReaders: current user gets alarms by default. And we need to let the \
checkbox toggle between ForReaders and, well, either ForAdmins or ForNobody, doesn't \
matter since current user gets no alarms in either case.

-- 
David Faure, faure@kde.org, dfaure@klaralvdalens-datakonsult.se
KDE/KOffice developer, Qt consultancy projects
Klarälvdalens Datakonsult AB, Platform-independent software solutions


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic