summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/mainwindow.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp
index 924fde1..2002e87 100644
--- a/core/pim/todo/mainwindow.cpp
+++ b/core/pim/todo/mainwindow.cpp
@@ -817,193 +817,194 @@ void MainWindow::slotComplete( const OPimTodo& todo ) {
817 817
818 /* for every alarm move the day */ 818 /* for every alarm move the day */
819 for ( OPimNotifyManager::Alarms::Iterator it = _als.begin(); it != _als.end(); ++it ) { 819 for ( OPimNotifyManager::Alarms::Iterator it = _als.begin(); it != _als.end(); ++it ) {
820 OPimAlarm al = (*it); 820 OPimAlarm al = (*it);
821 al.setDateTime( al.dateTime().addDays( dayDiff ) ); 821 al.setDateTime( al.dateTime().addDays( dayDiff ) );
822 als.append( al ); 822 als.append( al );
823 } 823 }
824 to2.notifiers().setAlarms( als ); 824 to2.notifiers().setAlarms( als );
825 handleAlarms( OPimTodo(), todo ); 825 handleAlarms( OPimTodo(), todo );
826 } 826 }
827 to2.setCompletedDate( inval ); 827 to2.setCompletedDate( inval );
828 to2.setCompleted( false ); 828 to2.setCompleted( false );
829 829
830 updateTodo( to2 ); 830 updateTodo( to2 );
831 }else 831 }else
832 updateTodo( to ); 832 updateTodo( to );
833 }else 833 }else
834 updateTodo( to ); 834 updateTodo( to );
835 835
836 currentView()->updateView(); 836 currentView()->updateView();
837 raiseCurrentView(); 837 raiseCurrentView();
838} 838}
839void MainWindow::flush() { 839void MainWindow::flush() {
840 slotFlush(); 840 slotFlush();
841} 841}
842void MainWindow::reload() { 842void MainWindow::reload() {
843 slotReload(); 843 slotReload();
844} 844}
845int MainWindow::create() { 845int MainWindow::create() {
846 int uid = 0; 846 int uid = 0;
847 if(m_syncing) { 847 if(m_syncing) {
848 QMessageBox::warning(this, QWidget::tr("Todo"), 848 QMessageBox::warning(this, QWidget::tr("Todo"),
849 QWidget::tr("Data can not be edited, currently syncing")); 849 QWidget::tr("Data can not be edited, currently syncing"));
850 return uid; 850 return uid;
851 } 851 }
852 m_todoMgr.load(); 852 m_todoMgr.load();
853 853
854 854
855 OPimTodo todo = currentEditor()->newTodo( currentCatId(), 855 OPimTodo todo = currentEditor()->newTodo( currentCatId(),
856 this ); 856 this );
857 857
858 if ( currentEditor()->accepted() ) { 858 if ( currentEditor()->accepted() ) {
859 //todo.assignUid(); 859 //todo.assignUid();
860 uid = todo.uid(); 860 uid = todo.uid();
861 handleAlarms( OPimTodo(), todo ); 861 handleAlarms( OPimTodo(), todo );
862 m_todoMgr.add( todo ); 862 m_todoMgr.add( todo );
863 currentView()->addEvent( todo ); 863 currentView()->addEvent( todo );
864 864
865 865
866 // I'm afraid we must call this every time now, otherwise 866 // I'm afraid we must call this every time now, otherwise
867 // spend expensive time comparing all these strings... 867 // spend expensive time comparing all these strings...
868 // but only call if we changed something -zecke 868 // but only call if we changed something -zecke
869 populateCategories(); 869 populateCategories();
870 } 870 }
871 raiseCurrentView( ); 871 raiseCurrentView( );
872 872
873 return uid; 873 return uid;
874} 874}
875/* delete it silently... */ 875/* delete it silently... */
876bool MainWindow::remove( int uid ) { 876bool MainWindow::remove( int uid ) {
877 if (m_syncing) return false; 877 if (m_syncing) return false;
878 878
879 /* argh need to get the whole OEvent... to disable alarms -zecke */ 879 /* argh need to get the whole OEvent... to disable alarms -zecke */
880 handleAlarms( OPimTodo(), m_todoMgr.event( uid ) ); 880 handleAlarms( OPimTodo(), m_todoMgr.event( uid ) );
881 881
882 return m_todoMgr.remove( uid ); 882 return m_todoMgr.remove( uid );
883} 883}
884void MainWindow::beam( int uid) { 884void MainWindow::beam( int uid) {
885 if( uid == 0 ) return; 885 if( uid == 0 ) return;
886 886
887 ::unlink( beamfile ); 887 ::unlink( beamfile );
888 m_todoMgr.load(); 888 m_todoMgr.load();
889 889
890 OPimTodo todo = event( uid ); 890 OPimTodo todo = event( uid );
891 OPimTodoAccessVCal* cal = new OPimTodoAccessVCal(QString::fromLatin1(beamfile) ); 891 OPimTodoAccessVCal* cal = new OPimTodoAccessVCal(QString::fromLatin1(beamfile) );
892 OPimTodoAccess acc( cal ); 892 OPimTodoAccess acc( cal );
893 acc.load(); 893 acc.load();
894 acc.add( todo ); 894 acc.add( todo );
895 acc.save(); 895 acc.save();
896 Ir* ir = new Ir(this ); 896 Ir* ir = new Ir(this );
897 connect(ir, SIGNAL(done(Ir*) ), 897 connect(ir, SIGNAL(done(Ir*) ),
898 this, SLOT(beamDone(Ir*) ) ); 898 this, SLOT(beamDone(Ir*) ) );
899 ir->send(beamfile, todo.summary(), "text/x-vCalendar" ); 899 ir->send(beamfile, todo.summary(), "text/x-vCalendar" );
900} 900}
901void MainWindow::show( int uid ) { 901void MainWindow::show( int uid ) {
902 m_todoMgr.load(); // might not be loaded yet 902 m_todoMgr.load(); // might not be loaded yet
903 m_showing = true; 903 m_showing = true;
904 slotShow( uid ); 904 slotShow( uid );
905 raise(); 905 raise();
906 QPEApplication::setKeepRunning(); 906 QPEApplication::setKeepRunning();
907} 907}
908void MainWindow::edit( int uid ) { 908void MainWindow::edit( int uid ) {
909 m_todoMgr.load(); 909 m_todoMgr.load();
910 slotEdit( uid ); 910 slotEdit( uid );
911} 911}
912void MainWindow::add( const OPimRecord& rec) { 912void MainWindow::add( const OPimRecord& rec) {
913 if ( rec.rtti() != OPimTodo::rtti() ) return; 913 OPimTodo test;
914 if ( rec.rtti() != test.rtti() ) return;
914 m_todoMgr.load(); // might not be loaded 915 m_todoMgr.load(); // might not be loaded
915 916
916 const OPimTodo& todo = static_cast<const OPimTodo&>(rec); 917 const OPimTodo& todo = static_cast<const OPimTodo&>(rec);
917 918
918 m_todoMgr.add(todo ); 919 m_todoMgr.add(todo );
919 currentView()->addEvent( todo ); 920 currentView()->addEvent( todo );
920 921
921 922
922 // I'm afraid we must call this every time now, otherwise 923 // I'm afraid we must call this every time now, otherwise
923 // spend expensive time comparing all these strings... 924 // spend expensive time comparing all these strings...
924 // but only call if we changed something -zecke 925 // but only call if we changed something -zecke
925 populateCategories(); 926 populateCategories();
926} 927}
927void MainWindow::slotReturnFromView() { 928void MainWindow::slotReturnFromView() {
928 m_showing = false; 929 m_showing = false;
929 raiseCurrentView(); 930 raiseCurrentView();
930} 931}
931 932
932namespace { 933namespace {
933 OPimNotifyManager::Alarms findNonMatching( const OPimNotifyManager::Alarms& oldAls, 934 OPimNotifyManager::Alarms findNonMatching( const OPimNotifyManager::Alarms& oldAls,
934 const OPimNotifyManager::Alarms& newAls ) { 935 const OPimNotifyManager::Alarms& newAls ) {
935 OPimNotifyManager::Alarms nonMatching; 936 OPimNotifyManager::Alarms nonMatching;
936 OPimNotifyManager::Alarms::ConstIterator oldIt = oldAls.begin(); 937 OPimNotifyManager::Alarms::ConstIterator oldIt = oldAls.begin();
937 OPimNotifyManager::Alarms::ConstIterator newIt; 938 OPimNotifyManager::Alarms::ConstIterator newIt;
938 for ( ; oldIt != oldAls.end(); ++oldIt ) { 939 for ( ; oldIt != oldAls.end(); ++oldIt ) {
939 bool found = false; 940 bool found = false;
940 QDateTime oldDt = (*oldIt).dateTime(); 941 QDateTime oldDt = (*oldIt).dateTime();
941 for (newIt= newAls.begin(); newIt != newAls.end(); ++newIt ) { 942 for (newIt= newAls.begin(); newIt != newAls.end(); ++newIt ) {
942 if ( oldDt == (*newIt).dateTime() ) { 943 if ( oldDt == (*newIt).dateTime() ) {
943 found = true; 944 found = true;
944 break; 945 break;
945 } 946 }
946 } 947 }
947 if (!found) 948 if (!found)
948 nonMatching.append( (*oldIt) ); 949 nonMatching.append( (*oldIt) );
949 } 950 }
950 return nonMatching; 951 return nonMatching;
951 } 952 }
952 void addAlarms( const OPimNotifyManager::Alarms& als, int uid ) { 953 void addAlarms( const OPimNotifyManager::Alarms& als, int uid ) {
953 OPimNotifyManager::Alarms::ConstIterator it; 954 OPimNotifyManager::Alarms::ConstIterator it;
954 for ( it = als.begin(); it != als.end(); ++it ) { 955 for ( it = als.begin(); it != als.end(); ++it ) {
955 owarn << "Adding alarm for " << (*it).dateTime().toString() << oendl; 956 owarn << "Adding alarm for " << (*it).dateTime().toString() << oendl;
956 AlarmServer::addAlarm( (*it).dateTime(), "QPE/Application/todolist", "alarm(QDateTime,int)", uid ); 957 AlarmServer::addAlarm( (*it).dateTime(), "QPE/Application/todolist", "alarm(QDateTime,int)", uid );
957 } 958 }
958 959
959 } 960 }
960 void removeAlarms( const OPimNotifyManager::Alarms& als, int uid ) { 961 void removeAlarms( const OPimNotifyManager::Alarms& als, int uid ) {
961 OPimNotifyManager::Alarms::ConstIterator it; 962 OPimNotifyManager::Alarms::ConstIterator it;
962 for ( it = als.begin(); it != als.end(); ++it ) { 963 for ( it = als.begin(); it != als.end(); ++it ) {
963 owarn << "Removinf alarm for " << (*it).dateTime().toString() << oendl; 964 owarn << "Removinf alarm for " << (*it).dateTime().toString() << oendl;
964 AlarmServer::deleteAlarm( (*it).dateTime(), "QPE/Application/todolist", "alarm(QDateTime,int)", uid ); 965 AlarmServer::deleteAlarm( (*it).dateTime(), "QPE/Application/todolist", "alarm(QDateTime,int)", uid );
965 } 966 }
966 } 967 }
967} 968}
968 969
969void MainWindow::handleAlarms( const OPimTodo& oldTodo, const OPimTodo& newTodo) { 970void MainWindow::handleAlarms( const OPimTodo& oldTodo, const OPimTodo& newTodo) {
970 /* 971 /*
971 * if oldTodo is not empty and has notifiers we need to find the deleted ones 972 * if oldTodo is not empty and has notifiers we need to find the deleted ones
972 */ 973 */
973 if(!oldTodo.isEmpty() && oldTodo.hasNotifiers() ) { 974 if(!oldTodo.isEmpty() && oldTodo.hasNotifiers() ) {
974 OPimNotifyManager::Alarms removed; 975 OPimNotifyManager::Alarms removed;
975 OPimNotifyManager::Alarms oldAls = oldTodo.notifiers().alarms(); 976 OPimNotifyManager::Alarms oldAls = oldTodo.notifiers().alarms();
976 if (!newTodo.hasNotifiers() ) 977 if (!newTodo.hasNotifiers() )
977 removed = oldAls; 978 removed = oldAls;
978 else 979 else
979 removed = findNonMatching( oldAls, newTodo.notifiers().alarms() ); 980 removed = findNonMatching( oldAls, newTodo.notifiers().alarms() );
980 981
981 removeAlarms( removed, oldTodo.uid() ); 982 removeAlarms( removed, oldTodo.uid() );
982 } 983 }
983 if ( newTodo.hasNotifiers() ) { 984 if ( newTodo.hasNotifiers() ) {
984 OPimNotifyManager::Alarms added; 985 OPimNotifyManager::Alarms added;
985 if ( oldTodo.isEmpty() || !oldTodo.hasNotifiers() ) 986 if ( oldTodo.isEmpty() || !oldTodo.hasNotifiers() )
986 added = newTodo.notifiers().alarms(); 987 added = newTodo.notifiers().alarms();
987 else 988 else
988 added = findNonMatching( newTodo.notifiers().alarms(), oldTodo.notifiers().alarms() ); 989 added = findNonMatching( newTodo.notifiers().alarms(), oldTodo.notifiers().alarms() );
989 990
990 addAlarms( added, newTodo.uid() ); 991 addAlarms( added, newTodo.uid() );
991 } 992 }
992} 993}
993/* we might have not loaded the db */ 994/* we might have not loaded the db */
994void MainWindow::doAlarm( const QDateTime& dt, int uid ) { 995void MainWindow::doAlarm( const QDateTime& dt, int uid ) {
995 m_todoMgr.load(); 996 m_todoMgr.load();
996 997
997 OPimTodo todo = m_todoMgr.event( uid ); 998 OPimTodo todo = m_todoMgr.event( uid );
998 if (!todo.hasNotifiers() ) return; 999 if (!todo.hasNotifiers() ) return;
999 1000
1000 /* 1001 /*
1001 * let's find the right alarm and find out if silent 1002 * let's find the right alarm and find out if silent
1002 * then show a richtext widget 1003 * then show a richtext widget
1003 */ 1004 */
1004 bool loud = false; 1005 bool loud = false;
1005 OPimNotifyManager::Alarms als = todo.notifiers().alarms(); 1006 OPimNotifyManager::Alarms als = todo.notifiers().alarms();
1006 OPimNotifyManager::Alarms::Iterator it; 1007 OPimNotifyManager::Alarms::Iterator it;
1007 for ( it = als.begin(); it != als.end(); ++it ) { 1008 for ( it = als.begin(); it != als.end(); ++it ) {
1008 if ( (*it).dateTime() == dt ) { 1009 if ( (*it).dateTime() == dt ) {
1009 loud = ( (*it).sound() == OPimAlarm::Loud ); 1010 loud = ( (*it).sound() == OPimAlarm::Loud );