-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp index b39a633..65b3dea 100644 --- a/noncore/graphics/drawpad/drawpadcanvas.cpp +++ b/noncore/graphics/drawpad/drawpadcanvas.cpp | |||
@@ -350,195 +350,205 @@ void DrawPadCanvas::deleteAll() | |||
350 | QMessageBox::Information, QMessageBox::Yes, | 350 | QMessageBox::Information, QMessageBox::Yes, |
351 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, | 351 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, |
352 | QMessageBox::NoButton, this); | 352 | QMessageBox::NoButton, this); |
353 | 353 | ||
354 | if (messageBox.exec() == QMessageBox::Yes) { | 354 | if (messageBox.exec() == QMessageBox::Yes) { |
355 | m_pages.clear(); | 355 | m_pages.clear(); |
356 | 356 | ||
357 | m_pages.append(new QPixmap(contentsRect().size())); | 357 | m_pages.append(new QPixmap(contentsRect().size())); |
358 | m_pages.current()->fill(Qt::white); | 358 | m_pages.current()->fill(Qt::white); |
359 | 359 | ||
360 | m_pageBackups.clear(); | 360 | m_pageBackups.clear(); |
361 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 361 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
362 | 362 | ||
363 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 363 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
364 | viewport()->update(); | 364 | viewport()->update(); |
365 | 365 | ||
366 | emit pagesChanged(); | 366 | emit pagesChanged(); |
367 | emit pageBackupsChanged(); | 367 | emit pageBackupsChanged(); |
368 | } | 368 | } |
369 | } | 369 | } |
370 | 370 | ||
371 | void DrawPadCanvas::newPage() | 371 | void DrawPadCanvas::newPage() |
372 | { | 372 | { |
373 | QRect rect = contentsRect(); | 373 | QRect rect = contentsRect(); |
374 | 374 | ||
375 | NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(), | 375 | NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(), |
376 | m_pDrawPad->brush().color(), this); | 376 | m_pDrawPad->brush().color(), this); |
377 | 377 | ||
378 | if (newPageDialog.exec() == QDialog::Accepted) { | 378 | if (newPageDialog.exec() == QDialog::Accepted) { |
379 | m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(), | 379 | m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(), |
380 | newPageDialog.selectedHeight())); | 380 | newPageDialog.selectedHeight())); |
381 | m_pages.current()->fill(newPageDialog.selectedColor()); | 381 | m_pages.current()->fill(newPageDialog.selectedColor()); |
382 | 382 | ||
383 | m_pageBackups.clear(); | 383 | m_pageBackups.clear(); |
384 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 384 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
385 | 385 | ||
386 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 386 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
387 | viewport()->update(); | 387 | viewport()->update(); |
388 | 388 | ||
389 | emit pagesChanged(); | 389 | emit pagesChanged(); |
390 | emit pageBackupsChanged(); | 390 | emit pageBackupsChanged(); |
391 | } | 391 | } |
392 | } | 392 | } |
393 | 393 | ||
394 | void DrawPadCanvas::clearPage() | 394 | void DrawPadCanvas::clearPage() |
395 | { | 395 | { |
396 | QMessageBox messageBox(tr("Clear Page"), tr("Do you want to clear\nthe current page?"), | 396 | QMessageBox messageBox(tr("Clear Page"), tr("Do you want to clear\nthe current page?"), |
397 | QMessageBox::Information, QMessageBox::Yes, | 397 | QMessageBox::Information, QMessageBox::Yes, |
398 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, | 398 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, |
399 | QMessageBox::NoButton, this); | 399 | QMessageBox::NoButton, this); |
400 | 400 | ||
401 | if (messageBox.exec() == QMessageBox::Yes) { | 401 | if (messageBox.exec() == QMessageBox::Yes) { |
402 | m_pages.current()->fill(Qt::white); | 402 | m_pages.current()->fill(Qt::white); |
403 | 403 | ||
404 | viewport()->update(); | 404 | viewport()->update(); |
405 | } | 405 | } |
406 | } | 406 | } |
407 | 407 | ||
408 | void DrawPadCanvas::deletePage() | 408 | void DrawPadCanvas::deletePage() |
409 | { | 409 | { |
410 | QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe current page?"), | 410 | QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe current page?"), |
411 | QMessageBox::Information, QMessageBox::Yes, | 411 | QMessageBox::Information, QMessageBox::Yes, |
412 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, | 412 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, |
413 | QMessageBox::NoButton, this); | 413 | QMessageBox::NoButton, this); |
414 | 414 | ||
415 | if (messageBox.exec() == QMessageBox::Yes) { | 415 | if (messageBox.exec() == QMessageBox::Yes) { |
416 | m_pages.remove(m_pages.current()); | 416 | m_pages.remove(m_pages.current()); |
417 | 417 | ||
418 | if (m_pages.isEmpty()) { | 418 | if (m_pages.isEmpty()) { |
419 | m_pages.append(new QPixmap(contentsRect().size())); | 419 | m_pages.append(new QPixmap(contentsRect().size())); |
420 | m_pages.current()->fill(Qt::white); | 420 | m_pages.current()->fill(Qt::white); |
421 | } | 421 | } |
422 | 422 | ||
423 | m_pageBackups.clear(); | 423 | m_pageBackups.clear(); |
424 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 424 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
425 | 425 | ||
426 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 426 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
427 | viewport()->update(); | 427 | viewport()->update(); |
428 | 428 | ||
429 | emit pagesChanged(); | 429 | emit pagesChanged(); |
430 | emit pageBackupsChanged(); | 430 | emit pageBackupsChanged(); |
431 | } | 431 | } |
432 | } | 432 | } |
433 | 433 | ||
434 | bool DrawPadCanvas::undoEnabled() | 434 | bool DrawPadCanvas::undoEnabled() |
435 | { | 435 | { |
436 | return (m_pageBackups.current() != m_pageBackups.getFirst()); | 436 | return (m_pageBackups.current() != m_pageBackups.getFirst()); |
437 | } | 437 | } |
438 | 438 | ||
439 | bool DrawPadCanvas::redoEnabled() | 439 | bool DrawPadCanvas::redoEnabled() |
440 | { | 440 | { |
441 | return (m_pageBackups.current() != m_pageBackups.getLast()); | 441 | return (m_pageBackups.current() != m_pageBackups.getLast()); |
442 | } | 442 | } |
443 | 443 | ||
444 | bool DrawPadCanvas::goPreviousPageEnabled() | 444 | bool DrawPadCanvas::goPreviousPageEnabled() |
445 | { | 445 | { |
446 | return (m_pages.current() != m_pages.getFirst()); | 446 | return (m_pages.current() != m_pages.getFirst()); |
447 | } | 447 | } |
448 | 448 | ||
449 | bool DrawPadCanvas::goNextPageEnabled() | 449 | bool DrawPadCanvas::goNextPageEnabled() |
450 | { | 450 | { |
451 | return (m_pages.current() != m_pages.getLast()); | 451 | return (m_pages.current() != m_pages.getLast()); |
452 | } | 452 | } |
453 | 453 | ||
454 | void DrawPadCanvas::undo() | 454 | void DrawPadCanvas::undo() |
455 | { | 455 | { |
456 | *(m_pages.current()) = *(m_pageBackups.prev()); | 456 | *(m_pages.current()) = *(m_pageBackups.prev()); |
457 | 457 | ||
458 | viewport()->update(); | 458 | viewport()->update(); |
459 | 459 | ||
460 | emit pageBackupsChanged(); | 460 | emit pageBackupsChanged(); |
461 | } | 461 | } |
462 | 462 | ||
463 | void DrawPadCanvas::redo() | 463 | void DrawPadCanvas::redo() |
464 | { | 464 | { |
465 | *(m_pages.current()) = *(m_pageBackups.next()); | 465 | *(m_pages.current()) = *(m_pageBackups.next()); |
466 | 466 | ||
467 | viewport()->update(); | 467 | viewport()->update(); |
468 | 468 | ||
469 | emit pageBackupsChanged(); | 469 | emit pageBackupsChanged(); |
470 | } | 470 | } |
471 | 471 | ||
472 | void DrawPadCanvas::goFirstPage() | 472 | void DrawPadCanvas::goFirstPage() |
473 | { | 473 | { |
474 | m_pages.first(); | 474 | m_pages.first(); |
475 | m_pageBackups.clear(); | 475 | m_pageBackups.clear(); |
476 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 476 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
477 | 477 | ||
478 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 478 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
479 | viewport()->update(); | 479 | viewport()->update(); |
480 | 480 | ||
481 | emit pagesChanged(); | 481 | emit pagesChanged(); |
482 | emit pageBackupsChanged(); | 482 | emit pageBackupsChanged(); |
483 | } | 483 | } |
484 | 484 | ||
485 | void DrawPadCanvas::goPreviousPage() | 485 | void DrawPadCanvas::goPreviousPage() |
486 | { | 486 | { |
487 | m_pages.prev(); | 487 | m_pages.prev(); |
488 | m_pageBackups.clear(); | 488 | m_pageBackups.clear(); |
489 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 489 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
490 | 490 | ||
491 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 491 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
492 | viewport()->update(); | 492 | viewport()->update(); |
493 | 493 | ||
494 | emit pagesChanged(); | 494 | emit pagesChanged(); |
495 | emit pageBackupsChanged(); | 495 | emit pageBackupsChanged(); |
496 | } | 496 | } |
497 | 497 | ||
498 | void DrawPadCanvas::goNextPage() | 498 | void DrawPadCanvas::goNextPage() |
499 | { | 499 | { |
500 | m_pages.next(); | 500 | m_pages.next(); |
501 | m_pageBackups.clear(); | 501 | m_pageBackups.clear(); |
502 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 502 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
503 | 503 | ||
504 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 504 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
505 | viewport()->update(); | 505 | viewport()->update(); |
506 | 506 | ||
507 | emit pagesChanged(); | 507 | emit pagesChanged(); |
508 | emit pageBackupsChanged(); | 508 | emit pageBackupsChanged(); |
509 | } | 509 | } |
510 | 510 | ||
511 | void DrawPadCanvas::goLastPage() | 511 | void DrawPadCanvas::goLastPage() |
512 | { | 512 | { |
513 | m_pages.last(); | 513 | m_pages.last(); |
514 | m_pageBackups.clear(); | 514 | m_pageBackups.clear(); |
515 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 515 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
516 | 516 | ||
517 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 517 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
518 | viewport()->update(); | 518 | viewport()->update(); |
519 | 519 | ||
520 | emit pagesChanged(); | 520 | emit pagesChanged(); |
521 | emit pageBackupsChanged(); | 521 | emit pageBackupsChanged(); |
522 | } | 522 | } |
523 | 523 | ||
524 | void DrawPadCanvas::contentsMousePressEvent(QMouseEvent* e) | 524 | void DrawPadCanvas::contentsMousePressEvent(QMouseEvent* e) |
525 | { | 525 | { |
526 | m_pDrawPad->tool()->mousePressEvent(e); | 526 | m_pDrawPad->tool()->mousePressEvent(e); |
527 | } | 527 | } |
528 | 528 | ||
529 | void DrawPadCanvas::contentsMouseReleaseEvent(QMouseEvent* e) | 529 | void DrawPadCanvas::contentsMouseReleaseEvent(QMouseEvent* e) |
530 | { | 530 | { |
531 | m_pDrawPad->tool()->mouseReleaseEvent(e); | 531 | m_pDrawPad->tool()->mouseReleaseEvent(e); |
532 | } | 532 | } |
533 | 533 | ||
534 | void DrawPadCanvas::contentsMouseMoveEvent(QMouseEvent* e) | 534 | void DrawPadCanvas::contentsMouseMoveEvent(QMouseEvent* e) |
535 | { | 535 | { |
536 | m_pDrawPad->tool()->mouseMoveEvent(e); | 536 | m_pDrawPad->tool()->mouseMoveEvent(e); |
537 | } | 537 | } |
538 | 538 | ||
539 | void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch) | 539 | void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch) |
540 | { | 540 | { |
541 | QRect clipRect(cx, cy, cw, ch); | 541 | QRect clipRect(cx, cy, cw, ch); |
542 | QRect pixmapRect(0, 0, m_pages.current()->width(), m_pages.current()->height()); | ||
543 | QRect drawRect = pixmapRect.intersect(clipRect); | ||
542 | 544 | ||
543 | p->drawPixmap(clipRect.topLeft(), *(m_pages.current()), clipRect); | 545 | p->drawPixmap(drawRect.topLeft(), *(m_pages.current()), drawRect); |
546 | |||
547 | if (drawRect.right() < clipRect.right()) { | ||
548 | p->fillRect(drawRect.right() + 1, cy, cw - drawRect.width(), ch, colorGroup().dark()); | ||
549 | } | ||
550 | |||
551 | if (drawRect.bottom() < clipRect.bottom()) { | ||
552 | p->fillRect(cx, drawRect.bottom() + 1, cw, ch - drawRect.height(), colorGroup().dark()); | ||
553 | } | ||
544 | } | 554 | } |