-rw-r--r-- | korganizer/kotodoview.cpp | 47 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 1 |
2 files changed, 31 insertions, 17 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index d79a9b9..ba94057 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -1152,615 +1152,628 @@ void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) | |||
1152 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); | 1152 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); |
1153 | } | 1153 | } |
1154 | 1154 | ||
1155 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) | 1155 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) |
1156 | { | 1156 | { |
1157 | pendingSubtodo = 0; | 1157 | pendingSubtodo = 0; |
1158 | mActiveItem = (KOTodoViewItem *)item; | 1158 | mActiveItem = (KOTodoViewItem *)item; |
1159 | if (item) { | 1159 | if (item) { |
1160 | switch (column){ | 1160 | switch (column){ |
1161 | case 1: | 1161 | case 1: |
1162 | mPriorityPopupMenu->popup(QCursor::pos ()); break; | 1162 | mPriorityPopupMenu->popup(QCursor::pos ()); break; |
1163 | case 2: | 1163 | case 2: |
1164 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; | 1164 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; |
1165 | case 3: | 1165 | case 3: |
1166 | moveTodo(); | 1166 | moveTodo(); |
1167 | break; | 1167 | break; |
1168 | case 7: | 1168 | case 7: |
1169 | mCategoryPopupMenu->popup(QCursor::pos ()); break; | 1169 | mCategoryPopupMenu->popup(QCursor::pos ()); break; |
1170 | case 8: | 1170 | case 8: |
1171 | mCalPopupMenu->popup(QCursor::pos ()); break; | 1171 | mCalPopupMenu->popup(QCursor::pos ()); break; |
1172 | default: | 1172 | default: |
1173 | mItemPopupMenu->popup(QCursor::pos()); | 1173 | mItemPopupMenu->popup(QCursor::pos()); |
1174 | } | 1174 | } |
1175 | } else mPopupMenu->popup(QCursor::pos()); | 1175 | } else mPopupMenu->popup(QCursor::pos()); |
1176 | } | 1176 | } |
1177 | void KOTodoView::newTodo() | 1177 | void KOTodoView::newTodo() |
1178 | { | 1178 | { |
1179 | emit newTodoSignal(); | 1179 | emit newTodoSignal(); |
1180 | } | 1180 | } |
1181 | 1181 | ||
1182 | void KOTodoView::newSubTodo() | 1182 | void KOTodoView::newSubTodo() |
1183 | { | 1183 | { |
1184 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1184 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1185 | if (mActiveItem) { | 1185 | if (mActiveItem) { |
1186 | if ( mQuickAdd->isVisible() && !mQuickAdd->text().isEmpty() && mQuickAdd->text() != i18n("Click to add new Todo") ) { | 1186 | if ( mQuickAdd->isVisible() && !mQuickAdd->text().isEmpty() && mQuickAdd->text() != i18n("Click to add new Todo") ) { |
1187 | addQuickTodoPar( mActiveItem->todo()); | 1187 | addQuickTodoPar( mActiveItem->todo()); |
1188 | } else | 1188 | } else |
1189 | emit newSubTodoSignal(mActiveItem->todo()); | 1189 | emit newSubTodoSignal(mActiveItem->todo()); |
1190 | } | 1190 | } |
1191 | } | 1191 | } |
1192 | void KOTodoView::unparentTodo() | 1192 | void KOTodoView::unparentTodo() |
1193 | { | 1193 | { |
1194 | if (mActiveItem) { | 1194 | if (mActiveItem) { |
1195 | emit unparentTodoSignal(mActiveItem->todo()); | 1195 | emit unparentTodoSignal(mActiveItem->todo()); |
1196 | } | 1196 | } |
1197 | } | 1197 | } |
1198 | 1198 | ||
1199 | void KOTodoView::reparentTodo() | 1199 | void KOTodoView::reparentTodo() |
1200 | { | 1200 | { |
1201 | if (mActiveItem) { | 1201 | if (mActiveItem) { |
1202 | topLevelWidget()->setCaption(i18n("Click on new parent item")); | 1202 | topLevelWidget()->setCaption(i18n("Click on new parent item")); |
1203 | pendingSubtodo = mActiveItem; | 1203 | pendingSubtodo = mActiveItem; |
1204 | } | 1204 | } |
1205 | } | 1205 | } |
1206 | void KOTodoView::editTodo() | 1206 | void KOTodoView::editTodo() |
1207 | { | 1207 | { |
1208 | if (mActiveItem) { | 1208 | if (mActiveItem) { |
1209 | emit editTodoSignal(mActiveItem->todo()); | 1209 | emit editTodoSignal(mActiveItem->todo()); |
1210 | } | 1210 | } |
1211 | } | 1211 | } |
1212 | void KOTodoView::cloneTodo() | 1212 | void KOTodoView::cloneTodo() |
1213 | { | 1213 | { |
1214 | if (mActiveItem) { | 1214 | if (mActiveItem) { |
1215 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); | 1215 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); |
1216 | } | 1216 | } |
1217 | } | 1217 | } |
1218 | void KOTodoView::cancelTodo() | 1218 | void KOTodoView::cancelTodo() |
1219 | { | 1219 | { |
1220 | if (mActiveItem) { | 1220 | if (mActiveItem) { |
1221 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); | 1221 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); |
1222 | } | 1222 | } |
1223 | } | 1223 | } |
1224 | void KOTodoView::moveTodo() | 1224 | void KOTodoView::moveTodo() |
1225 | { | 1225 | { |
1226 | if (mActiveItem) { | 1226 | if (mActiveItem) { |
1227 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); | 1227 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); |
1228 | } | 1228 | } |
1229 | } | 1229 | } |
1230 | void KOTodoView::beamTodo() | 1230 | void KOTodoView::beamTodo() |
1231 | { | 1231 | { |
1232 | if (mActiveItem) { | 1232 | if (mActiveItem) { |
1233 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); | 1233 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); |
1234 | } | 1234 | } |
1235 | } | 1235 | } |
1236 | 1236 | ||
1237 | 1237 | ||
1238 | void KOTodoView::showTodo() | 1238 | void KOTodoView::showTodo() |
1239 | { | 1239 | { |
1240 | if (mActiveItem) { | 1240 | if (mActiveItem) { |
1241 | emit showTodoSignal(mActiveItem->todo()); | 1241 | emit showTodoSignal(mActiveItem->todo()); |
1242 | } | 1242 | } |
1243 | } | 1243 | } |
1244 | 1244 | ||
1245 | void KOTodoView::deleteTodo() | 1245 | void KOTodoView::deleteTodo() |
1246 | { | 1246 | { |
1247 | if (mActiveItem) { | 1247 | if (mActiveItem) { |
1248 | emit deleteTodoSignal(mActiveItem->todo()); | 1248 | emit deleteTodoSignal(mActiveItem->todo()); |
1249 | } | 1249 | } |
1250 | } | 1250 | } |
1251 | 1251 | ||
1252 | void KOTodoView::setNewPriority(int index) | 1252 | void KOTodoView::setNewPriority(int index) |
1253 | { | 1253 | { |
1254 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 1254 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
1255 | mActiveItem->todo()->setPriority(mPriority[index]); | 1255 | mActiveItem->todo()->setPriority(mPriority[index]); |
1256 | mActiveItem->construct(); | 1256 | mActiveItem->construct(); |
1257 | todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); | 1257 | todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); |
1258 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 1258 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
1259 | } | 1259 | } |
1260 | processSelectionChange(); | 1260 | processSelectionChange(); |
1261 | } | 1261 | } |
1262 | 1262 | ||
1263 | void KOTodoView::setNewPercentage(int index) | 1263 | void KOTodoView::setNewPercentage(int index) |
1264 | { | 1264 | { |
1265 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 1265 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
1266 | 1266 | ||
1267 | if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) { | 1267 | if ( mPercentage[index] == 100 && !mActiveItem->isOn() ) { |
1268 | mActiveItem->setOn( true ); | 1268 | mActiveItem->setOn( true ); |
1269 | processSelectionChange(); | 1269 | processSelectionChange(); |
1270 | return; | 1270 | return; |
1271 | } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) { | 1271 | } else if ( mPercentage[index] != 100 && mActiveItem->isOn() ) { |
1272 | KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent())); | 1272 | KOTodoViewItem* par = (static_cast<KOTodoViewItem*>(mActiveItem->parent())); |
1273 | if ( par && par->isOn() ) | 1273 | if ( par && par->isOn() ) |
1274 | par->setOn( false ); | 1274 | par->setOn( false ); |
1275 | } | 1275 | } |
1276 | if (mPercentage[index] == 100) { | 1276 | if (mPercentage[index] == 100) { |
1277 | mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); | 1277 | mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); |
1278 | } else { | 1278 | } else { |
1279 | mActiveItem->todo()->setCompleted(false); | 1279 | mActiveItem->todo()->setCompleted(false); |
1280 | } | 1280 | } |
1281 | mActiveItem->todo()->setPercentComplete(mPercentage[index]); | 1281 | mActiveItem->todo()->setPercentComplete(mPercentage[index]); |
1282 | mActiveItem->construct(); | 1282 | mActiveItem->construct(); |
1283 | todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); | 1283 | todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); |
1284 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 1284 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
1285 | } | 1285 | } |
1286 | processSelectionChange(); | 1286 | processSelectionChange(); |
1287 | } | 1287 | } |
1288 | 1288 | ||
1289 | void KOTodoView::fillCategories () | 1289 | void KOTodoView::fillCategories () |
1290 | { | 1290 | { |
1291 | mCategoryPopupMenu->clear(); | 1291 | mCategoryPopupMenu->clear(); |
1292 | if ( ! mActiveItem ) return; | 1292 | if ( ! mActiveItem ) return; |
1293 | QStringList checkedCategories = mActiveItem->todo()->categories (); | 1293 | QStringList checkedCategories = mActiveItem->todo()->categories (); |
1294 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); | 1294 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); |
1295 | it != KOPrefs::instance()->mCustomCategories.end (); | 1295 | it != KOPrefs::instance()->mCustomCategories.end (); |
1296 | ++it) { | 1296 | ++it) { |
1297 | int index = mCategoryPopupMenu->insertItem (*it); | 1297 | int index = mCategoryPopupMenu->insertItem (*it); |
1298 | mCategory[index] = *it; | 1298 | mCategory[index] = *it; |
1299 | if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true); | 1299 | if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true); |
1300 | } | 1300 | } |
1301 | } | 1301 | } |
1302 | void KOTodoView::fillCal () | 1302 | void KOTodoView::fillCal () |
1303 | { | 1303 | { |
1304 | mCalPopupMenu->clear(); | 1304 | mCalPopupMenu->clear(); |
1305 | if (!mActiveItem) return; | 1305 | if (!mActiveItem) return; |
1306 | bool readO = mActiveItem->todo()->isReadOnly(); | 1306 | bool readO = mActiveItem->todo()->isReadOnly(); |
1307 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); | 1307 | KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); |
1308 | while ( kkf ) { | 1308 | while ( kkf ) { |
1309 | int index = mCalPopupMenu->insertItem( kkf->mName, kkf->mCalNumber); | 1309 | int index = mCalPopupMenu->insertItem( kkf->mName, kkf->mCalNumber); |
1310 | if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) | 1310 | if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) |
1311 | mCalPopupMenu->setItemEnabled( index, false ); | 1311 | mCalPopupMenu->setItemEnabled( index, false ); |
1312 | mCalPopupMenu->setItemChecked (index, kkf->mCalNumber == mActiveItem->todo()->calID()); | 1312 | mCalPopupMenu->setItemChecked (index, kkf->mCalNumber == mActiveItem->todo()->calID()); |
1313 | kkf = KOPrefs::instance()->mCalendars.next(); | 1313 | kkf = KOPrefs::instance()->mCalendars.next(); |
1314 | } | 1314 | } |
1315 | } | 1315 | } |
1316 | void KOTodoView::changedCal (int index ) | 1316 | void KOTodoView::changedCal (int index ) |
1317 | { | 1317 | { |
1318 | if (!mActiveItem) return; | 1318 | if (!mActiveItem) return; |
1319 | mActiveItem->todo()->setCalID( index ); | 1319 | mActiveItem->todo()->setCalID( index ); |
1320 | mActiveItem->construct(); | 1320 | mActiveItem->construct(); |
1321 | } | 1321 | } |
1322 | void KOTodoView::changedCategories(int index) | 1322 | void KOTodoView::changedCategories(int index) |
1323 | { | 1323 | { |
1324 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 1324 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
1325 | QStringList categories = mActiveItem->todo()->categories (); | 1325 | QStringList categories = mActiveItem->todo()->categories (); |
1326 | QString colcat = categories.first(); | 1326 | QString colcat = categories.first(); |
1327 | if (categories.find (mCategory[index]) != categories.end ()) | 1327 | if (categories.find (mCategory[index]) != categories.end ()) |
1328 | categories.remove (mCategory[index]); | 1328 | categories.remove (mCategory[index]); |
1329 | else | 1329 | else |
1330 | categories.insert (categories.end(), mCategory[index]); | 1330 | categories.insert (categories.end(), mCategory[index]); |
1331 | categories.sort (); | 1331 | categories.sort (); |
1332 | if ( !colcat.isEmpty() ) { | 1332 | if ( !colcat.isEmpty() ) { |
1333 | if ( categories.find ( colcat ) != categories.end () ) { | 1333 | if ( categories.find ( colcat ) != categories.end () ) { |
1334 | categories.remove( colcat ); | 1334 | categories.remove( colcat ); |
1335 | categories.prepend( colcat ); | 1335 | categories.prepend( colcat ); |
1336 | } | 1336 | } |
1337 | } | 1337 | } |
1338 | mActiveItem->todo()->setCategories (categories); | 1338 | mActiveItem->todo()->setCategories (categories); |
1339 | mActiveItem->construct(); | 1339 | mActiveItem->construct(); |
1340 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 1340 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
1341 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); | 1341 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); |
1342 | } | 1342 | } |
1343 | } | 1343 | } |
1344 | void KOTodoView::toggleRunningItemQuick() | ||
1345 | { | ||
1346 | if ( !mActiveItem ) return; | ||
1347 | Todo * t = mActiveItem->todo(); | ||
1348 | if ( t->isRunning() ) { | ||
1349 | if ( t->runTime() < 15) { | ||
1350 | t->stopRunning(); | ||
1351 | mActiveItem->construct(); | ||
1352 | topLevelWidget()->setCaption(i18n("Todo stopped - no data saved because runtime was < 15 sec!")); | ||
1353 | return; | ||
1354 | } | ||
1355 | else | ||
1356 | toggleRunningItem(); | ||
1357 | return; | ||
1358 | } else { | ||
1359 | t->setRunning( true ); | ||
1360 | mActiveItem->construct(); | ||
1361 | topLevelWidget()->setCaption(i18n("Todo started! Double click again to stop!")); | ||
1362 | } | ||
1363 | } | ||
1344 | void KOTodoView::itemDoubleClicked(QListViewItem *item) | 1364 | void KOTodoView::itemDoubleClicked(QListViewItem *item) |
1345 | { | 1365 | { |
1346 | if ( pendingSubtodo != 0 ) { | 1366 | if ( pendingSubtodo != 0 ) { |
1347 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); | 1367 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); |
1348 | } | 1368 | } |
1349 | pendingSubtodo = 0; | 1369 | pendingSubtodo = 0; |
1350 | //int row = mTodoListView->header()->sectionAt ( mTodoListView->header()->mapFromGlobal( QCursor::pos()).x() ); | 1370 | //int row = mTodoListView->header()->sectionAt ( mTodoListView->header()->mapFromGlobal( QCursor::pos()).x() ); |
1351 | int row = mTodoListView->header()->sectionAt ( mTodoListView->viewportToContents(mTodoListView->viewport()->mapFromGlobal( QCursor::pos())) .x() ); | 1371 | int row = mTodoListView->header()->sectionAt ( mTodoListView->viewportToContents(mTodoListView->viewport()->mapFromGlobal( QCursor::pos())) .x() ); |
1352 | //qDebug("ROW %d ", row); | 1372 | //qDebug("ROW %d ", row); |
1353 | if (!item) { | 1373 | if (!item) { |
1354 | newTodo(); | 1374 | newTodo(); |
1355 | return; | 1375 | return; |
1356 | } else { | 1376 | } else { |
1357 | if ( row == 1 ) { | 1377 | if ( row == 1 ) { |
1358 | mActiveItem = (KOTodoViewItem *) item; | 1378 | mActiveItem = (KOTodoViewItem *) item; |
1359 | newSubTodo(); | 1379 | newSubTodo(); |
1360 | return; | 1380 | return; |
1361 | } | 1381 | } |
1362 | if ( row == 5 || row == 6 || row == 2) { | 1382 | if ( row == 5 || row == 6 || row == 2) { |
1363 | mActiveItem = (KOTodoViewItem *) item; | 1383 | mActiveItem = (KOTodoViewItem *) item; |
1364 | Todo * t = mActiveItem->todo(); | 1384 | toggleRunningItemQuick(); |
1365 | if ( t->isRunning() ) { | 1385 | return; |
1366 | if ( t->runTime() < 15) { | ||
1367 | t->stopRunning(); | ||
1368 | mActiveItem->construct(); | ||
1369 | topLevelWidget()->setCaption(i18n("Todo stopped - no data saved because runtime was < 15 sec!")); | ||
1370 | return; | ||
1371 | } | ||
1372 | else | ||
1373 | toggleRunningItem(); | ||
1374 | return; | ||
1375 | } else { | ||
1376 | t->setRunning( true ); | ||
1377 | mActiveItem->construct(); | ||
1378 | topLevelWidget()->setCaption(i18n("Todo started! Double click again to stop!")); | ||
1379 | return; | ||
1380 | } | ||
1381 | } | 1386 | } |
1382 | } | 1387 | } |
1383 | if ( KOPrefs::instance()->mEditOnDoubleClick ) | 1388 | if ( KOPrefs::instance()->mEditOnDoubleClick ) |
1384 | editItem( item ); | 1389 | editItem( item ); |
1385 | else | 1390 | else |
1386 | showItem( item , QPoint(), 0 ); | 1391 | showItem( item , QPoint(), 0 ); |
1387 | } | 1392 | } |
1388 | void KOTodoView::toggleRunningItem() | 1393 | void KOTodoView::toggleRunningItem() |
1389 | { | 1394 | { |
1390 | // qDebug("KOTodoView::toggleRunning() "); | 1395 | // qDebug("KOTodoView::toggleRunning() "); |
1391 | if ( ! mActiveItem ) | 1396 | if ( ! mActiveItem ) |
1392 | return; | 1397 | return; |
1393 | Todo * t = mActiveItem->todo(); | 1398 | Todo * t = mActiveItem->todo(); |
1394 | if ( t->isRunning() ) { | 1399 | if ( t->isRunning() ) { |
1395 | KOStopTodoPrefs tp ( t, this ); | 1400 | KOStopTodoPrefs tp ( t, this ); |
1396 | if (QApplication::desktop()->width() <= 800 ){ | 1401 | if (QApplication::desktop()->width() <= 800 ){ |
1397 | int wid = tp.width(); | 1402 | int wid = tp.width(); |
1398 | int hei = tp.height(); | 1403 | int hei = tp.height(); |
1399 | int xx = (QApplication::desktop()->width()-wid)/2; | 1404 | int xx = (QApplication::desktop()->width()-wid)/2; |
1400 | int yy = (QApplication::desktop()->height()-hei)/2; | 1405 | int yy = (QApplication::desktop()->height()-hei)/2; |
1401 | tp.setGeometry( xx,yy,wid,hei ); | 1406 | tp.setGeometry( xx,yy,wid,hei ); |
1402 | } | 1407 | } |
1403 | tp.exec(); | 1408 | tp.exec(); |
1404 | updateTodo ( t, KOGlobals::EVENTEDITED ); | 1409 | updateTodo ( t, KOGlobals::EVENTEDITED ); |
1405 | } else { | 1410 | } else { |
1406 | KOStartTodoPrefs tp ( t->summary(), this ); | 1411 | KOStartTodoPrefs tp ( t->summary(), this ); |
1407 | if (QApplication::desktop()->width() <= 800 ){ | 1412 | if (QApplication::desktop()->width() <= 800 ){ |
1408 | int wid = tp.width(); | 1413 | int wid = tp.width(); |
1409 | int hei = tp.height(); | 1414 | int hei = tp.height(); |
1410 | int xx = (QApplication::desktop()->width()-wid)/2; | 1415 | int xx = (QApplication::desktop()->width()-wid)/2; |
1411 | int yy = (QApplication::desktop()->height()-hei)/2; | 1416 | int yy = (QApplication::desktop()->height()-hei)/2; |
1412 | tp.setGeometry( xx,yy,wid,hei ); | 1417 | tp.setGeometry( xx,yy,wid,hei ); |
1413 | } | 1418 | } |
1414 | if ( !tp.exec() ) return; | 1419 | if ( !tp.exec() ) return; |
1415 | if ( tp.stopAll() ) { | 1420 | if ( tp.stopAll() ) { |
1416 | mCalendar->stopAllTodos(); | 1421 | mCalendar->stopAllTodos(); |
1417 | t->setRunning( true ); | 1422 | t->setRunning( true ); |
1418 | updateView(); | 1423 | updateView(); |
1419 | } else { | 1424 | } else { |
1420 | t->setRunning( true ); | 1425 | t->setRunning( true ); |
1421 | updateTodo ( t, KOGlobals::EVENTEDITED ); | 1426 | updateTodo ( t, KOGlobals::EVENTEDITED ); |
1422 | } | 1427 | } |
1423 | } | 1428 | } |
1424 | } | 1429 | } |
1425 | 1430 | ||
1426 | void KOTodoView::itemClicked(QListViewItem *item) | 1431 | void KOTodoView::itemClicked(QListViewItem *item) |
1427 | { | 1432 | { |
1428 | //qDebug("KOTodoView::itemClicked %d", item); | 1433 | //qDebug("KOTodoView::itemClicked %d", item); |
1429 | if (!item) { | 1434 | if (!item) { |
1430 | if ( pendingSubtodo != 0 ) { | 1435 | if ( pendingSubtodo != 0 ) { |
1431 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); | 1436 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); |
1432 | } | 1437 | } |
1433 | pendingSubtodo = 0; | 1438 | pendingSubtodo = 0; |
1434 | return; | 1439 | return; |
1435 | } | 1440 | } |
1436 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 1441 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
1437 | if ( pendingSubtodo != 0 ) { | 1442 | if ( pendingSubtodo != 0 ) { |
1438 | bool allowReparent = true; | 1443 | bool allowReparent = true; |
1439 | QListViewItem *par = item; | 1444 | QListViewItem *par = item; |
1440 | while ( par ) { | 1445 | while ( par ) { |
1441 | if ( par == pendingSubtodo ) { | 1446 | if ( par == pendingSubtodo ) { |
1442 | allowReparent = false; | 1447 | allowReparent = false; |
1443 | break; | 1448 | break; |
1444 | } | 1449 | } |
1445 | par = par->parent(); | 1450 | par = par->parent(); |
1446 | } | 1451 | } |
1447 | if ( !allowReparent ) { | 1452 | if ( !allowReparent ) { |
1448 | topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); | 1453 | topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); |
1449 | pendingSubtodo = 0; | 1454 | pendingSubtodo = 0; |
1450 | } else { | 1455 | } else { |
1451 | Todo* newParent = todoItem->todo(); | 1456 | Todo* newParent = todoItem->todo(); |
1452 | Todo* newSub = pendingSubtodo->todo(); | 1457 | Todo* newSub = pendingSubtodo->todo(); |
1453 | pendingSubtodo = 0; | 1458 | pendingSubtodo = 0; |
1454 | emit reparentTodoSignal( newParent,newSub ); | 1459 | emit reparentTodoSignal( newParent,newSub ); |
1455 | return; | 1460 | return; |
1456 | } | 1461 | } |
1457 | } | 1462 | } |
1458 | 1463 | ||
1459 | } | 1464 | } |
1460 | 1465 | ||
1461 | void KOTodoView::setDocumentId( const QString &id ) | 1466 | void KOTodoView::setDocumentId( const QString &id ) |
1462 | { | 1467 | { |
1463 | 1468 | ||
1464 | mDocPrefs->setDoc( id ); | 1469 | mDocPrefs->setDoc( id ); |
1465 | } | 1470 | } |
1466 | 1471 | ||
1467 | void KOTodoView::itemStateChanged( QListViewItem *item ) | 1472 | void KOTodoView::itemStateChanged( QListViewItem *item ) |
1468 | { | 1473 | { |
1469 | if (!item) return; | 1474 | if (!item) return; |
1470 | 1475 | ||
1471 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 1476 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
1472 | 1477 | ||
1473 | // kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; | 1478 | // kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; |
1474 | 1479 | ||
1475 | if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); | 1480 | if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); |
1476 | } | 1481 | } |
1477 | 1482 | ||
1478 | void KOTodoView::saveLayout(KConfig *config, const QString &group) const | 1483 | void KOTodoView::saveLayout(KConfig *config, const QString &group) const |
1479 | { | 1484 | { |
1480 | mTodoListView->saveLayout(config,group); | 1485 | mTodoListView->saveLayout(config,group); |
1481 | } | 1486 | } |
1482 | 1487 | ||
1483 | void KOTodoView::restoreLayout(KConfig *config, const QString &group) | 1488 | void KOTodoView::restoreLayout(KConfig *config, const QString &group) |
1484 | { | 1489 | { |
1485 | mTodoListView->restoreLayout(config,group); | 1490 | mTodoListView->restoreLayout(config,group); |
1486 | } | 1491 | } |
1487 | 1492 | ||
1488 | void KOTodoView::processSelectionChange() | 1493 | void KOTodoView::processSelectionChange() |
1489 | { | 1494 | { |
1490 | // kdDebug() << "KOTodoView::processSelectionChange()" << endl; | 1495 | // kdDebug() << "KOTodoView::processSelectionChange()" << endl; |
1491 | 1496 | ||
1492 | KOTodoViewItem *item = | 1497 | KOTodoViewItem *item = |
1493 | static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); | 1498 | static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); |
1494 | 1499 | ||
1495 | if ( !item ) { | 1500 | if ( !item ) { |
1496 | emit incidenceSelected( 0 ); | 1501 | emit incidenceSelected( 0 ); |
1497 | mNewSubBut->setEnabled( false ); | 1502 | mNewSubBut->setEnabled( false ); |
1498 | } else { | 1503 | } else { |
1499 | emit incidenceSelected( item->todo() ); | 1504 | emit incidenceSelected( item->todo() ); |
1500 | mNewSubBut->setEnabled( true ); | 1505 | mNewSubBut->setEnabled( true ); |
1501 | } | 1506 | } |
1502 | } | 1507 | } |
1503 | 1508 | ||
1504 | void KOTodoView::modified(bool b) | 1509 | void KOTodoView::modified(bool b) |
1505 | { | 1510 | { |
1506 | emit isModified(b); | 1511 | emit isModified(b); |
1507 | } | 1512 | } |
1508 | void KOTodoView::setTodoModified( Todo* todo ) | 1513 | void KOTodoView::setTodoModified( Todo* todo ) |
1509 | { | 1514 | { |
1510 | todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); | 1515 | todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); |
1511 | } | 1516 | } |
1512 | void KOTodoView::clearSelection() | 1517 | void KOTodoView::clearSelection() |
1513 | { | 1518 | { |
1514 | mTodoListView->selectAll( false ); | 1519 | mTodoListView->selectAll( false ); |
1515 | } | 1520 | } |
1516 | void KOTodoView::setAllOpen() | 1521 | void KOTodoView::setAllOpen() |
1517 | { | 1522 | { |
1518 | if ( isFlatDisplay ) { | 1523 | if ( isFlatDisplay ) { |
1519 | isFlatDisplay = false; | 1524 | isFlatDisplay = false; |
1520 | mPopupMenu->setItemChecked( 8,false ); | 1525 | mPopupMenu->setItemChecked( 8,false ); |
1521 | updateView(); | 1526 | updateView(); |
1522 | } else { | 1527 | } else { |
1523 | storeCurrentItem(); | 1528 | storeCurrentItem(); |
1524 | } | 1529 | } |
1525 | setOpen(mTodoListView->firstChild(), true); | 1530 | setOpen(mTodoListView->firstChild(), true); |
1526 | resetCurrentItem(); | 1531 | resetCurrentItem(); |
1527 | } | 1532 | } |
1528 | void KOTodoView::setAllClose() | 1533 | void KOTodoView::setAllClose() |
1529 | { | 1534 | { |
1530 | if ( isFlatDisplay ) { | 1535 | if ( isFlatDisplay ) { |
1531 | isFlatDisplay = false; | 1536 | isFlatDisplay = false; |
1532 | mPopupMenu->setItemChecked( 8,false ); | 1537 | mPopupMenu->setItemChecked( 8,false ); |
1533 | updateView(); | 1538 | updateView(); |
1534 | } else { | 1539 | } else { |
1535 | storeCurrentItem(); | 1540 | storeCurrentItem(); |
1536 | } | 1541 | } |
1537 | setOpen(mTodoListView->firstChild(), false); | 1542 | setOpen(mTodoListView->firstChild(), false); |
1538 | resetCurrentItem(); | 1543 | resetCurrentItem(); |
1539 | } | 1544 | } |
1540 | void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) | 1545 | void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) |
1541 | { | 1546 | { |
1542 | 1547 | ||
1543 | while ( item ) { | 1548 | while ( item ) { |
1544 | setOpen( item->firstChild(), setOpenI ); | 1549 | setOpen( item->firstChild(), setOpenI ); |
1545 | item->setOpen( setOpenI ); | 1550 | item->setOpen( setOpenI ); |
1546 | item = item->nextSibling(); | 1551 | item = item->nextSibling(); |
1547 | } | 1552 | } |
1548 | } | 1553 | } |
1549 | 1554 | ||
1550 | void KOTodoView::displayAllFlat() | 1555 | void KOTodoView::displayAllFlat() |
1551 | { | 1556 | { |
1552 | 1557 | ||
1553 | mActiveItem = 0; | 1558 | mActiveItem = 0; |
1554 | pendingSubtodo = 0; | 1559 | pendingSubtodo = 0; |
1555 | if ( mBlockUpdate ) { | 1560 | if ( mBlockUpdate ) { |
1556 | return; | 1561 | return; |
1557 | } | 1562 | } |
1558 | clearList (); | 1563 | clearList (); |
1559 | mPopupMenu->setItemChecked( 8,true ); | 1564 | mPopupMenu->setItemChecked( 8,true ); |
1560 | isFlatDisplay = true; | 1565 | isFlatDisplay = true; |
1561 | QPtrList<Todo> todoList = calendar()->todos(); | 1566 | QPtrList<Todo> todoList = calendar()->todos(); |
1562 | Todo *todo; | 1567 | Todo *todo; |
1563 | for(todo = todoList.first(); todo; todo = todoList.next()) { | 1568 | for(todo = todoList.first(); todo; todo = todoList.next()) { |
1564 | if ( checkTodo( todo ) ) { | 1569 | if ( checkTodo( todo ) ) { |
1565 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | 1570 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); |
1566 | mTodoMap.insert(todo,todoItem); | 1571 | mTodoMap.insert(todo,todoItem); |
1567 | } | 1572 | } |
1568 | } | 1573 | } |
1569 | resetCurrentItem(); | 1574 | resetCurrentItem(); |
1570 | } | 1575 | } |
1571 | 1576 | ||
1572 | void KOTodoView::setAllFlat() | 1577 | void KOTodoView::setAllFlat() |
1573 | { | 1578 | { |
1574 | if ( isFlatDisplay ) { | 1579 | if ( isFlatDisplay ) { |
1575 | isFlatDisplay = false; | 1580 | isFlatDisplay = false; |
1576 | mPopupMenu->setItemChecked( 8,false ); | 1581 | mPopupMenu->setItemChecked( 8,false ); |
1577 | updateView(); | 1582 | updateView(); |
1578 | return; | 1583 | return; |
1579 | } | 1584 | } |
1580 | displayAllFlat(); | 1585 | displayAllFlat(); |
1581 | } | 1586 | } |
1582 | 1587 | ||
1583 | void KOTodoView::purgeCompleted() | 1588 | void KOTodoView::purgeCompleted() |
1584 | { | 1589 | { |
1585 | emit purgeCompletedSignal(); | 1590 | emit purgeCompletedSignal(); |
1586 | 1591 | ||
1587 | } | 1592 | } |
1588 | void KOTodoView::toggleQuickTodo() | 1593 | void KOTodoView::toggleQuickTodo() |
1589 | { | 1594 | { |
1590 | if ( mQuickBar->isVisible() ) { | 1595 | if ( mQuickBar->isVisible() ) { |
1591 | mQuickBar->hide(); | 1596 | mQuickBar->hide(); |
1592 | KOPrefs::instance()->mEnableQuickTodo = false; | 1597 | KOPrefs::instance()->mEnableQuickTodo = false; |
1593 | } | 1598 | } |
1594 | else { | 1599 | else { |
1595 | mQuickBar->show(); | 1600 | mQuickBar->show(); |
1596 | KOPrefs::instance()->mEnableQuickTodo = true; | 1601 | KOPrefs::instance()->mEnableQuickTodo = true; |
1597 | } | 1602 | } |
1598 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); | 1603 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); |
1599 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); | 1604 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); |
1600 | } | 1605 | } |
1601 | 1606 | ||
1602 | void KOTodoView::toggleRunning() | 1607 | void KOTodoView::toggleRunning() |
1603 | { | 1608 | { |
1604 | KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; | 1609 | KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; |
1605 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); | 1610 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); |
1606 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); | 1611 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); |
1607 | updateView(); | 1612 | updateView(); |
1608 | if ( KOPrefs::instance()->mHideNonStartedTodos ) | 1613 | if ( KOPrefs::instance()->mHideNonStartedTodos ) |
1609 | topLevelWidget()->setCaption(i18n("Hide not Running")); | 1614 | topLevelWidget()->setCaption(i18n("Hide not Running")); |
1610 | else | 1615 | else |
1611 | topLevelWidget()->setCaption(i18n("Show not Running")); | 1616 | topLevelWidget()->setCaption(i18n("Show not Running")); |
1612 | } | 1617 | } |
1613 | 1618 | ||
1614 | void KOTodoView::toggleCompleted() | 1619 | void KOTodoView::toggleCompleted() |
1615 | { | 1620 | { |
1616 | KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; | 1621 | KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; |
1617 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); | 1622 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); |
1618 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); | 1623 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); |
1619 | updateView(); | 1624 | updateView(); |
1620 | if ( KOPrefs::instance()->mShowCompletedTodo ) | 1625 | if ( KOPrefs::instance()->mShowCompletedTodo ) |
1621 | topLevelWidget()->setCaption(i18n("Show Completed")); | 1626 | topLevelWidget()->setCaption(i18n("Show Completed")); |
1622 | else | 1627 | else |
1623 | topLevelWidget()->setCaption(i18n("Hide Completed")); | 1628 | topLevelWidget()->setCaption(i18n("Hide Completed")); |
1624 | } | 1629 | } |
1625 | 1630 | ||
1626 | void KOTodoView::addQuickTodo() | 1631 | void KOTodoView::addQuickTodo() |
1627 | { | 1632 | { |
1628 | addQuickTodoPar( 0 ); | 1633 | addQuickTodoPar( 0 ); |
1629 | } | 1634 | } |
1630 | void KOTodoView::addQuickTodoPar( Todo * parentTodo) | 1635 | void KOTodoView::addQuickTodoPar( Todo * parentTodo) |
1631 | { | 1636 | { |
1632 | Todo *todo = new Todo(); | 1637 | Todo *todo = new Todo(); |
1633 | todo->setSummary(mQuickAdd->text()); | 1638 | todo->setSummary(mQuickAdd->text()); |
1634 | todo->setOrganizer(KOPrefs::instance()->email()); | 1639 | todo->setOrganizer(KOPrefs::instance()->email()); |
1635 | if ( parentTodo ) { | 1640 | if ( parentTodo ) { |
1636 | todo->setRelatedTo(parentTodo); | 1641 | todo->setRelatedTo(parentTodo); |
1637 | 1642 | ||
1638 | todo->setCategories (parentTodo->categoriesStr ()); | 1643 | todo->setCategories (parentTodo->categoriesStr ()); |
1639 | todo->setSecrecy (parentTodo->secrecy ()); | 1644 | todo->setSecrecy (parentTodo->secrecy ()); |
1640 | if ( parentTodo->priority() < 3 ) | 1645 | if ( parentTodo->priority() < 3 ) |
1641 | todo->setPriority( parentTodo->priority() ); | 1646 | todo->setPriority( parentTodo->priority() ); |
1642 | todo->setCalID( parentTodo->calID() ); | 1647 | todo->setCalID( parentTodo->calID() ); |
1643 | } else { | 1648 | } else { |
1644 | CalFilter * cf = mCalendar->filter(); | 1649 | CalFilter * cf = mCalendar->filter(); |
1645 | if ( cf ) { | 1650 | if ( cf ) { |
1646 | if ( cf->isEnabled()&& cf->showCategories()) { | 1651 | if ( cf->isEnabled()&& cf->showCategories()) { |
1647 | todo->setCategories(cf->categoryList()); | 1652 | todo->setCategories(cf->categoryList()); |
1648 | } | 1653 | } |
1649 | if ( cf->isEnabled() ) | 1654 | if ( cf->isEnabled() ) |
1650 | todo->setSecrecy( cf->getSecrecy()); | 1655 | todo->setSecrecy( cf->getSecrecy()); |
1651 | } | 1656 | } |
1652 | } | 1657 | } |
1653 | mCalendar->addTodo(todo); | 1658 | mCalendar->addTodo(todo); |
1654 | mQuickAdd->setText(""); | 1659 | mQuickAdd->setText(""); |
1655 | todoModified (todo, KOGlobals::EVENTADDED ); | 1660 | todoModified (todo, KOGlobals::EVENTADDED ); |
1656 | updateView(); | 1661 | updateView(); |
1657 | 1662 | ||
1658 | } | 1663 | } |
1659 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) | 1664 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) |
1660 | { | 1665 | { |
1661 | // e->ignore(); | 1666 | // e->ignore(); |
1662 | //return; | 1667 | //return; |
1663 | if ( !isVisible() ) { | 1668 | if ( !isVisible() ) { |
1664 | e->ignore(); | 1669 | e->ignore(); |
1665 | return; | 1670 | return; |
1666 | } | 1671 | } |
1667 | switch ( e->key() ) { | 1672 | switch ( e->key() ) { |
1668 | case Qt::Key_Down: | 1673 | case Qt::Key_Down: |
1669 | case Qt::Key_Up: | 1674 | case Qt::Key_Up: |
1670 | // KOrg::BaseView::keyPressEvent ( e ); | 1675 | // KOrg::BaseView::keyPressEvent ( e ); |
1671 | e->ignore(); | 1676 | e->ignore(); |
1672 | break; | 1677 | break; |
1673 | 1678 | ||
1674 | case Qt::Key_Q: | 1679 | case Qt::Key_Q: |
1675 | 1680 | ||
1676 | 1681 | ||
1677 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) { | 1682 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) { |
1678 | e->ignore(); | 1683 | e->ignore(); |
1679 | break; | 1684 | break; |
1680 | } | 1685 | } |
1681 | toggleQuickTodo(); | 1686 | toggleQuickTodo(); |
1682 | break; | 1687 | break; |
1683 | case Qt::Key_U: | 1688 | case Qt::Key_U: |
1684 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | 1689 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { |
1685 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1690 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1686 | unparentTodo(); | 1691 | unparentTodo(); |
1687 | e->accept(); | 1692 | e->accept(); |
1688 | } else | 1693 | } else |
1689 | e->ignore(); | 1694 | e->ignore(); |
1690 | break; | 1695 | break; |
1691 | case Qt::Key_S: | 1696 | case Qt::Key_S: |
1692 | if ( e->state() == Qt::ControlButton ) { | 1697 | if ( e->state() == Qt::ControlButton ) { |
1693 | e->ignore(); | 1698 | e->ignore(); |
1694 | break; | 1699 | break; |
1695 | } | 1700 | } |
1696 | if ( e->state() == Qt::ShiftButton ) { | 1701 | if ( e->state() == Qt::ShiftButton ) { |
1697 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1702 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1698 | reparentTodo(); | 1703 | reparentTodo(); |
1699 | e->accept(); | 1704 | e->accept(); |
1700 | } else | 1705 | } else |
1701 | e->ignore(); | 1706 | e->ignore(); |
1702 | break; | 1707 | break; |
1703 | case Qt::Key_P: | 1708 | case Qt::Key_P: |
1704 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | 1709 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { |
1705 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1710 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1706 | if ( pendingSubtodo ) | 1711 | if ( pendingSubtodo ) |
1707 | itemClicked(mActiveItem); | 1712 | itemClicked(mActiveItem); |
1708 | e->accept(); | 1713 | e->accept(); |
1709 | } else | 1714 | } else |
1710 | e->ignore(); | 1715 | e->ignore(); |
1716 | break; | ||
1717 | case Qt::Key_R: | ||
1718 | if (!( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) ) { | ||
1719 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | ||
1720 | toggleRunningItemQuick(); | ||
1721 | e->accept(); | ||
1722 | } else | ||
1723 | e->ignore(); | ||
1711 | break; | 1724 | break; |
1712 | case Qt::Key_Escape: | 1725 | case Qt::Key_Escape: |
1713 | if ( pendingSubtodo ) { | 1726 | if ( pendingSubtodo ) { |
1714 | itemClicked(0); | 1727 | itemClicked(0); |
1715 | e->accept(); | 1728 | e->accept(); |
1716 | } else | 1729 | } else |
1717 | e->ignore(); | 1730 | e->ignore(); |
1718 | break; | 1731 | break; |
1719 | default: | 1732 | default: |
1720 | e->ignore(); | 1733 | e->ignore(); |
1721 | } | 1734 | } |
1722 | 1735 | ||
1723 | if ( true ) { | 1736 | if ( true ) { |
1724 | if ( e->key() == Qt::Key_I ) { | 1737 | if ( e->key() == Qt::Key_I ) { |
1725 | KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); | 1738 | KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); |
1726 | if ( cn ) { | 1739 | if ( cn ) { |
1727 | mActiveItem = cn; | 1740 | mActiveItem = cn; |
1728 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); | 1741 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); |
1729 | if ( ci ){ | 1742 | if ( ci ){ |
1730 | showTodo(); | 1743 | showTodo(); |
1731 | cn = (KOTodoViewItem*)cn->itemBelow(); | 1744 | cn = (KOTodoViewItem*)cn->itemBelow(); |
1732 | if ( cn ) { | 1745 | if ( cn ) { |
1733 | mTodoListView->setCurrentItem ( cn ); | 1746 | mTodoListView->setCurrentItem ( cn ); |
1734 | mTodoListView->ensureItemVisible ( cn ); | 1747 | mTodoListView->ensureItemVisible ( cn ); |
1735 | } | 1748 | } |
1736 | 1749 | ||
1737 | } | 1750 | } |
1738 | } | 1751 | } |
1739 | e->accept(); | 1752 | e->accept(); |
1740 | } | 1753 | } |
1741 | } | 1754 | } |
1742 | } | 1755 | } |
1743 | 1756 | ||
1744 | void KOTodoView::updateTodo( Todo * t, int type ) | 1757 | void KOTodoView::updateTodo( Todo * t, int type ) |
1745 | { | 1758 | { |
1746 | if ( mBlockUpdate ) | 1759 | if ( mBlockUpdate ) |
1747 | return; | 1760 | return; |
1748 | 1761 | ||
1749 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; | 1762 | QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; |
1750 | itemIterator = mTodoMap.find(t); | 1763 | itemIterator = mTodoMap.find(t); |
1751 | if (itemIterator != mTodoMap.end()) { | 1764 | if (itemIterator != mTodoMap.end()) { |
1752 | (*itemIterator)->construct(); | 1765 | (*itemIterator)->construct(); |
1753 | } else { | 1766 | } else { |
1754 | if ( type == KOGlobals::EVENTADDED ) { | 1767 | if ( type == KOGlobals::EVENTADDED ) { |
1755 | insertTodoItem( t ); | 1768 | insertTodoItem( t ); |
1756 | } | 1769 | } |
1757 | } | 1770 | } |
1758 | 1771 | ||
1759 | } | 1772 | } |
1760 | 1773 | ||
1761 | void KOTodoView::todoModified(Todo * t , int p ) | 1774 | void KOTodoView::todoModified(Todo * t , int p ) |
1762 | { | 1775 | { |
1763 | mBlockUpdate = true; | 1776 | mBlockUpdate = true; |
1764 | emit todoModifiedSignal ( t, p ); | 1777 | emit todoModifiedSignal ( t, p ); |
1765 | mBlockUpdate = false; | 1778 | mBlockUpdate = false; |
1766 | } | 1779 | } |
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 161ecb0..0cbc087 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h | |||
@@ -59,252 +59,253 @@ class DocPrefs; | |||
59 | 59 | ||
60 | 60 | ||
61 | class KOStopTodoPrefs : public QDialog | 61 | class KOStopTodoPrefs : public QDialog |
62 | { | 62 | { |
63 | Q_OBJECT | 63 | Q_OBJECT |
64 | public: | 64 | public: |
65 | KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ; | 65 | KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ; |
66 | 66 | ||
67 | 67 | ||
68 | private slots: | 68 | private slots: |
69 | void doNotSave(); | 69 | void doNotSave(); |
70 | void accept(); | 70 | void accept(); |
71 | private: | 71 | private: |
72 | Todo* mTodo; | 72 | Todo* mTodo; |
73 | QLineEdit* mComment; | 73 | QLineEdit* mComment; |
74 | QDateTime mStop; | 74 | QDateTime mStop; |
75 | KDateEdit *sde, *ede; | 75 | KDateEdit *sde, *ede; |
76 | KOTimeEdit *ste, *ete; | 76 | KOTimeEdit *ste, *ete; |
77 | 77 | ||
78 | }; | 78 | }; |
79 | 79 | ||
80 | class KOStartTodoPrefs : public QDialog | 80 | class KOStartTodoPrefs : public QDialog |
81 | { | 81 | { |
82 | Q_OBJECT | 82 | Q_OBJECT |
83 | public: | 83 | public: |
84 | KOStartTodoPrefs( QString sum, QWidget *parent=0, const char *name=0 ) ; | 84 | KOStartTodoPrefs( QString sum, QWidget *parent=0, const char *name=0 ) ; |
85 | 85 | ||
86 | bool stopAll() { return mStopAll; } | 86 | bool stopAll() { return mStopAll; } |
87 | private slots: | 87 | private slots: |
88 | void doStop(); | 88 | void doStop(); |
89 | private: | 89 | private: |
90 | bool mStopAll; | 90 | bool mStopAll; |
91 | 91 | ||
92 | }; | 92 | }; |
93 | 93 | ||
94 | class KOTodoListView : public KListView | 94 | class KOTodoListView : public KListView |
95 | { | 95 | { |
96 | Q_OBJECT | 96 | Q_OBJECT |
97 | public: | 97 | public: |
98 | KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); | 98 | KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); |
99 | virtual ~KOTodoListView() {} | 99 | virtual ~KOTodoListView() {} |
100 | 100 | ||
101 | signals: | 101 | signals: |
102 | void paintNeeded(); | 102 | void paintNeeded(); |
103 | void todoDropped(Todo *, int); | 103 | void todoDropped(Todo *, int); |
104 | void double_Clicked(QListViewItem *item); | 104 | void double_Clicked(QListViewItem *item); |
105 | void reparentTodoSignal( Todo *,Todo * ); | 105 | void reparentTodoSignal( Todo *,Todo * ); |
106 | void unparentTodoSignal(Todo *); | 106 | void unparentTodoSignal(Todo *); |
107 | void deleteTodo( Todo * ); | 107 | void deleteTodo( Todo * ); |
108 | protected: | 108 | protected: |
109 | void wheelEvent (QWheelEvent *e); | 109 | void wheelEvent (QWheelEvent *e); |
110 | void contentsDragEnterEvent(QDragEnterEvent *); | 110 | void contentsDragEnterEvent(QDragEnterEvent *); |
111 | void contentsDragMoveEvent(QDragMoveEvent *); | 111 | void contentsDragMoveEvent(QDragMoveEvent *); |
112 | void contentsDragLeaveEvent(QDragLeaveEvent *); | 112 | void contentsDragLeaveEvent(QDragLeaveEvent *); |
113 | void contentsDropEvent(QDropEvent *); | 113 | void contentsDropEvent(QDropEvent *); |
114 | 114 | ||
115 | void contentsMousePressEvent(QMouseEvent *); | 115 | void contentsMousePressEvent(QMouseEvent *); |
116 | void contentsMouseMoveEvent(QMouseEvent *); | 116 | void contentsMouseMoveEvent(QMouseEvent *); |
117 | void contentsMouseReleaseEvent(QMouseEvent *); | 117 | void contentsMouseReleaseEvent(QMouseEvent *); |
118 | void contentsMouseDoubleClickEvent(QMouseEvent *); | 118 | void contentsMouseDoubleClickEvent(QMouseEvent *); |
119 | 119 | ||
120 | private: | 120 | private: |
121 | void paintEvent(QPaintEvent * pevent); | 121 | void paintEvent(QPaintEvent * pevent); |
122 | bool internalDrop; | 122 | bool internalDrop; |
123 | QString mName; | 123 | QString mName; |
124 | Calendar *mCalendar; | 124 | Calendar *mCalendar; |
125 | QPoint mPressPos; | 125 | QPoint mPressPos; |
126 | bool mMousePressed; | 126 | bool mMousePressed; |
127 | QListViewItem *mOldCurrent; | 127 | QListViewItem *mOldCurrent; |
128 | bool mFlagKeyPressed; | 128 | bool mFlagKeyPressed; |
129 | void keyPressEvent ( QKeyEvent * ) ; | 129 | void keyPressEvent ( QKeyEvent * ) ; |
130 | void keyReleaseEvent ( QKeyEvent * ) ; | 130 | void keyReleaseEvent ( QKeyEvent * ) ; |
131 | }; | 131 | }; |
132 | 132 | ||
133 | 133 | ||
134 | /** | 134 | /** |
135 | This is the line-edit on top of the todoview for fast addition of new todos | 135 | This is the line-edit on top of the todoview for fast addition of new todos |
136 | */ | 136 | */ |
137 | class KOQuickTodo : public QLineEdit | 137 | class KOQuickTodo : public QLineEdit |
138 | { | 138 | { |
139 | public: | 139 | public: |
140 | KOQuickTodo(QWidget *parent=0); | 140 | KOQuickTodo(QWidget *parent=0); |
141 | protected: | 141 | protected: |
142 | void focusInEvent(QFocusEvent *ev); | 142 | void focusInEvent(QFocusEvent *ev); |
143 | void focusOutEvent(QFocusEvent *ev); | 143 | void focusOutEvent(QFocusEvent *ev); |
144 | }; | 144 | }; |
145 | 145 | ||
146 | 146 | ||
147 | /** | 147 | /** |
148 | This class provides a multi-column list view of todo events. | 148 | This class provides a multi-column list view of todo events. |
149 | 149 | ||
150 | @short multi-column list view of todo events. | 150 | @short multi-column list view of todo events. |
151 | @author Cornelius Schumacher <schumacher@kde.org> | 151 | @author Cornelius Schumacher <schumacher@kde.org> |
152 | */ | 152 | */ |
153 | class KOTodoView : public KOrg::BaseView | 153 | class KOTodoView : public KOrg::BaseView |
154 | { | 154 | { |
155 | Q_OBJECT | 155 | Q_OBJECT |
156 | public: | 156 | public: |
157 | KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); | 157 | KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); |
158 | ~KOTodoView(); | 158 | ~KOTodoView(); |
159 | 159 | ||
160 | QPtrList<Incidence> selectedIncidences(); | 160 | QPtrList<Incidence> selectedIncidences(); |
161 | QPtrList<Todo> selectedTodos(); | 161 | QPtrList<Todo> selectedTodos(); |
162 | 162 | ||
163 | DateList selectedDates() | 163 | DateList selectedDates() |
164 | {DateList q; | 164 | {DateList q; |
165 | return q;} | 165 | return q;} |
166 | 166 | ||
167 | /** Return number of shown dates. TodoView does not show dates, */ | 167 | /** Return number of shown dates. TodoView does not show dates, */ |
168 | int currentDateCount() { return 0; } | 168 | int currentDateCount() { return 0; } |
169 | 169 | ||
170 | void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); | 170 | void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); |
171 | 171 | ||
172 | void setDocumentId( const QString & ); | 172 | void setDocumentId( const QString & ); |
173 | 173 | ||
174 | void saveLayout(KConfig *config, const QString &group) const; | 174 | void saveLayout(KConfig *config, const QString &group) const; |
175 | void restoreLayout(KConfig *config, const QString &group); | 175 | void restoreLayout(KConfig *config, const QString &group); |
176 | void setNavigator( DateNavigator* nav ) {mNavigator = nav;} | 176 | void setNavigator( DateNavigator* nav ) {mNavigator = nav;} |
177 | QString getWhatsThisText(QPoint p); | 177 | QString getWhatsThisText(QPoint p); |
178 | void clearList( bool saveCurrentItem = true ); | 178 | void clearList( bool saveCurrentItem = true ); |
179 | 179 | ||
180 | public slots: | 180 | public slots: |
181 | void updateView(); | 181 | void updateView(); |
182 | void updateConfig(); | 182 | void updateConfig(); |
183 | 183 | ||
184 | void changeEventDisplay(Event *, int); | 184 | void changeEventDisplay(Event *, int); |
185 | 185 | ||
186 | void showDates(const QDate &start, const QDate &end); | 186 | void showDates(const QDate &start, const QDate &end); |
187 | void showEvents(QPtrList<Event> eventList); | 187 | void showEvents(QPtrList<Event> eventList); |
188 | 188 | ||
189 | void clearSelection(); | 189 | void clearSelection(); |
190 | void jumpToDate (); | 190 | void jumpToDate (); |
191 | 191 | ||
192 | void editItem(QListViewItem *item); | 192 | void editItem(QListViewItem *item); |
193 | void showItem(QListViewItem *item,const QPoint &,int); | 193 | void showItem(QListViewItem *item,const QPoint &,int); |
194 | void popupMenu(QListViewItem *item,const QPoint &,int); | 194 | void popupMenu(QListViewItem *item,const QPoint &,int); |
195 | void newTodo(); | 195 | void newTodo(); |
196 | void newSubTodo(); | 196 | void newSubTodo(); |
197 | void unparentTodo(); | 197 | void unparentTodo(); |
198 | void reparentTodo(); | 198 | void reparentTodo(); |
199 | void showTodo(); | 199 | void showTodo(); |
200 | void editTodo(); | 200 | void editTodo(); |
201 | void cloneTodo(); | 201 | void cloneTodo(); |
202 | void cancelTodo(); | 202 | void cancelTodo(); |
203 | void moveTodo(); | 203 | void moveTodo(); |
204 | void beamTodo(); | 204 | void beamTodo(); |
205 | void deleteTodo(); | 205 | void deleteTodo(); |
206 | 206 | ||
207 | void setNewPriority(int); | 207 | void setNewPriority(int); |
208 | void setNewPercentage(int); | 208 | void setNewPercentage(int); |
209 | void changedCategories(int); | 209 | void changedCategories(int); |
210 | 210 | ||
211 | void setAllOpen(); | 211 | void setAllOpen(); |
212 | void setAllClose(); | 212 | void setAllClose(); |
213 | void setAllFlat(); | 213 | void setAllFlat(); |
214 | void displayAllFlat(); | 214 | void displayAllFlat(); |
215 | 215 | ||
216 | void purgeCompleted(); | 216 | void purgeCompleted(); |
217 | void toggleCompleted(); | 217 | void toggleCompleted(); |
218 | void toggleRunning(); | 218 | void toggleRunning(); |
219 | void toggleQuickTodo(); | 219 | void toggleQuickTodo(); |
220 | void updateTodo( Todo *, int ); | 220 | void updateTodo( Todo *, int ); |
221 | 221 | ||
222 | void itemClicked(QListViewItem *); | 222 | void itemClicked(QListViewItem *); |
223 | void itemStateChanged(QListViewItem *); | 223 | void itemStateChanged(QListViewItem *); |
224 | void modified(bool); | 224 | void modified(bool); |
225 | void itemDoubleClicked(QListViewItem *item); | 225 | void itemDoubleClicked(QListViewItem *item); |
226 | void resetFocusToList(); | 226 | void resetFocusToList(); |
227 | void fillCategories (); | 227 | void fillCategories (); |
228 | void fillCal (); | 228 | void fillCal (); |
229 | void changedCal (int); | 229 | void changedCal (int); |
230 | 230 | ||
231 | signals: | 231 | signals: |
232 | void newTodoSignal(); | 232 | void newTodoSignal(); |
233 | void newSubTodoSignal(Todo *); | 233 | void newSubTodoSignal(Todo *); |
234 | void unparentTodoSignal(Todo *); | 234 | void unparentTodoSignal(Todo *); |
235 | void reparentTodoSignal( Todo *,Todo * ); | 235 | void reparentTodoSignal( Todo *,Todo * ); |
236 | void showTodoSignal(Todo *); | 236 | void showTodoSignal(Todo *); |
237 | 237 | ||
238 | void editTodoSignal(Todo *); | 238 | void editTodoSignal(Todo *); |
239 | void deleteTodoSignal(Todo *); | 239 | void deleteTodoSignal(Todo *); |
240 | void todoModifiedSignal (Todo *, int); | 240 | void todoModifiedSignal (Todo *, int); |
241 | 241 | ||
242 | void isModified(bool); | 242 | void isModified(bool); |
243 | void cloneTodoSignal( Incidence * ); | 243 | void cloneTodoSignal( Incidence * ); |
244 | void cancelTodoSignal( Incidence * ); | 244 | void cancelTodoSignal( Incidence * ); |
245 | void moveTodoSignal( Incidence * ); | 245 | void moveTodoSignal( Incidence * ); |
246 | void beamTodoSignal( Incidence * ); | 246 | void beamTodoSignal( Incidence * ); |
247 | void purgeCompletedSignal(); | 247 | void purgeCompletedSignal(); |
248 | 248 | ||
249 | protected slots: | 249 | protected slots: |
250 | void toggleRunningItem(); | 250 | void toggleRunningItem(); |
251 | void toggleRunningItemQuick(); | ||
251 | void paintNeeded(); | 252 | void paintNeeded(); |
252 | void processSelectionChange(); | 253 | void processSelectionChange(); |
253 | void addQuickTodo(); | 254 | void addQuickTodo(); |
254 | void setTodoModified( Todo* ); | 255 | void setTodoModified( Todo* ); |
255 | void todoModified(Todo *, int ); | 256 | void todoModified(Todo *, int ); |
256 | 257 | ||
257 | private: | 258 | private: |
258 | bool mIsActiveWindow; | 259 | bool mIsActiveWindow; |
259 | void addQuickTodoPar( Todo * parentTodo); | 260 | void addQuickTodoPar( Todo * parentTodo); |
260 | /* | 261 | /* |
261 | * the TodoEditor approach is rather unscaling in the long | 262 | * the TodoEditor approach is rather unscaling in the long |
262 | * run. | 263 | * run. |
263 | * Korganizer keeps it in memory and we need to update | 264 | * Korganizer keeps it in memory and we need to update |
264 | * 1. make KOTodoViewItem a QObject again? | 265 | * 1. make KOTodoViewItem a QObject again? |
265 | * 2. add a public method for setting one todo modified? | 266 | * 2. add a public method for setting one todo modified? |
266 | * 3. add a private method for setting a todo modified + friend here? | 267 | * 3. add a private method for setting a todo modified + friend here? |
267 | * -- zecke 2002-07-08 | 268 | * -- zecke 2002-07-08 |
268 | */ | 269 | */ |
269 | KOTodoViewWhatsThis* mKOTodoViewWhatsThis; | 270 | KOTodoViewWhatsThis* mKOTodoViewWhatsThis; |
270 | friend class KOTodoListView; | 271 | friend class KOTodoListView; |
271 | void paintEvent(QPaintEvent * pevent); | 272 | void paintEvent(QPaintEvent * pevent); |
272 | bool mPendingUpdateBeforeRepaint; | 273 | bool mPendingUpdateBeforeRepaint; |
273 | friend class KOTodoViewItem; | 274 | friend class KOTodoViewItem; |
274 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); | 275 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); |
275 | void restoreItemState( QListViewItem * ); | 276 | void restoreItemState( QListViewItem * ); |
276 | 277 | ||
277 | bool checkTodo( Todo * ); | 278 | bool checkTodo( Todo * ); |
278 | bool isFlatDisplay; | 279 | bool isFlatDisplay; |
279 | void setOpen( QListViewItem*, bool setOpen); | 280 | void setOpen( QListViewItem*, bool setOpen); |
280 | KOTodoListView *mTodoListView; | 281 | KOTodoListView *mTodoListView; |
281 | QPopupMenu *mItemPopupMenu; | 282 | QPopupMenu *mItemPopupMenu; |
282 | QPopupMenu *mPopupMenu; | 283 | QPopupMenu *mPopupMenu; |
283 | QPopupMenu *mPriorityPopupMenu; | 284 | QPopupMenu *mPriorityPopupMenu; |
284 | QPopupMenu *mPercentageCompletedPopupMenu; | 285 | QPopupMenu *mPercentageCompletedPopupMenu; |
285 | QPopupMenu *mCategoryPopupMenu; | 286 | QPopupMenu *mCategoryPopupMenu; |
286 | QPopupMenu *mCalPopupMenu; | 287 | QPopupMenu *mCalPopupMenu; |
287 | 288 | ||
288 | QMap<int, int> mPercentage; | 289 | QMap<int, int> mPercentage; |
289 | QMap<int, int> mPriority; | 290 | QMap<int, int> mPriority; |
290 | QMap<int, QString> mCategory; | 291 | QMap<int, QString> mCategory; |
291 | KOTodoViewItem *mActiveItem; | 292 | KOTodoViewItem *mActiveItem; |
292 | 293 | ||
293 | QMap<Todo *,KOTodoViewItem *> mTodoMap; | 294 | QMap<Todo *,KOTodoViewItem *> mTodoMap; |
294 | QString mName; | 295 | QString mName; |
295 | QWidget* mQuickBar; | 296 | QWidget* mQuickBar; |
296 | 297 | ||
297 | DocPrefs *mDocPrefs; | 298 | DocPrefs *mDocPrefs; |
298 | QString mCurrentDoc; | 299 | QString mCurrentDoc; |
299 | KOQuickTodo *mQuickAdd; | 300 | KOQuickTodo *mQuickAdd; |
300 | bool mBlockUpdate; | 301 | bool mBlockUpdate; |
301 | void keyPressEvent ( QKeyEvent * ) ; | 302 | void keyPressEvent ( QKeyEvent * ) ; |
302 | KOTodoViewItem * pendingSubtodo; | 303 | KOTodoViewItem * pendingSubtodo; |
303 | DateNavigator* mNavigator; | 304 | DateNavigator* mNavigator; |
304 | void storeCurrentItem(); | 305 | void storeCurrentItem(); |
305 | void resetCurrentItem(); | 306 | void resetCurrentItem(); |
306 | Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; | 307 | Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; |
307 | QPushButton * mNewSubBut; | 308 | QPushButton * mNewSubBut; |
308 | }; | 309 | }; |
309 | 310 | ||
310 | #endif | 311 | #endif |