summaryrefslogtreecommitdiff
authorpohly <pohly>2004-10-01 08:17:11 (UTC)
committer pohly <pohly>2004-10-01 08:17:11 (UTC)
commit63d9478584fd80902dcef17244e4415f096d76db (patch) (unidiff)
tree32d084308d0dca463a0b5205acfd10b91a10a54b
parent83d2361ccae308696694ab65f69ba8aa999f6696 (diff)
downloadopie-63d9478584fd80902dcef17244e4415f096d76db.zip
opie-63d9478584fd80902dcef17244e4415f096d76db.tar.gz
opie-63d9478584fd80902dcef17244e4415f096d76db.tar.bz2
fixed searching for input filters, following Tim's suggestion
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CFilter.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/noncore/apps/opie-reader/CFilter.cpp b/noncore/apps/opie-reader/CFilter.cpp
index 6d94d70..ab98829 100644
--- a/noncore/apps/opie-reader/CFilter.cpp
+++ b/noncore/apps/opie-reader/CFilter.cpp
@@ -476,339 +476,340 @@ void repalm::getch(tchar& ch, CStyle& sty, unsigned long& pos)
476 break; 476 break;
477 default: 477 default:
478 break; 478 break;
479 } 479 }
480} 480}
481 481
482//static tchar nextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 }; 482//static tchar nextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 };
483//static tchar prevpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','p','r','e','v','i','o','u','s',' ','p','a','r','t',0 }; 483//static tchar prevpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','p','r','e','v','i','o','u','s',' ','p','a','r','t',0 };
484 484
485void DePluck::getch(tchar& ch, CStyle& sty, unsigned long& pos) 485void DePluck::getch(tchar& ch, CStyle& sty, unsigned long& pos)
486{ 486{
487 if (m_buffed > 0) 487 if (m_buffed > 0)
488 { 488 {
489 sty = m_laststyle; 489 sty = m_laststyle;
490 ch = nextpart[m_current++]; 490 ch = nextpart[m_current++];
491 if (m_current == m_buffed) 491 if (m_current == m_buffed)
492 { 492 {
493 m_current = m_buffed = 0; 493 m_current = m_buffed = 0;
494 } 494 }
495 } 495 }
496 else 496 else
497 { 497 {
498 if (m_buffer != 0) 498 if (m_buffer != 0)
499 { 499 {
500 ch = m_buffer; 500 ch = m_buffer;
501 m_buffer = 0; 501 m_buffer = 0;
502 return; 502 return;
503 } 503 }
504 unsigned long lnk, lnkoff; 504 unsigned long lnk, lnkoff;
505 do 505 do
506 { 506 {
507 if (nextpart[m_buffed] == 0) break; 507 if (nextpart[m_buffed] == 0) break;
508 parent->getch(ch, sty, pos); 508 parent->getch(ch, sty, pos);
509 m_laststyle = sty; 509 m_laststyle = sty;
510 if (sty.getLink()) 510 if (sty.getLink())
511 { 511 {
512 lnk = sty.getData(); 512 lnk = sty.getData();
513 lnkoff = sty.getOffset(); 513 lnkoff = sty.getOffset();
514 } 514 }
515 } while (ch == nextpart[m_buffed] && sty.getLink() && ++m_buffed); 515 } while (ch == nextpart[m_buffed] && sty.getLink() && ++m_buffed);
516 m_current = 0; 516 m_current = 0;
517 if (nextpart[m_buffed] == 0) 517 if (nextpart[m_buffed] == 0)
518 { 518 {
519 m_buffed = 0; 519 m_buffed = 0;
520 QString dmy, dmy2; 520 QString dmy, dmy2;
521 parent->hyperlink(lnk, lnkoff, dmy, dmy2); 521 parent->hyperlink(lnk, lnkoff, dmy, dmy2);
522 do 522 do
523 { 523 {
524 parent->getch(ch, sty, pos); 524 parent->getch(ch, sty, pos);
525 } 525 }
526 while (ch != 10); 526 while (ch != 10);
527 parent->getch(ch, sty, pos); 527 parent->getch(ch, sty, pos);
528 } 528 }
529 else if (m_buffed > 0) 529 else if (m_buffed > 0)
530 { 530 {
531 m_buffer = ch; 531 m_buffer = ch;
532 ch = nextpart[0]; 532 ch = nextpart[0];
533 if (m_buffed == 1) 533 if (m_buffed == 1)
534 { 534 {
535 m_buffed = 0; 535 m_buffed = 0;
536 } 536 }
537 else m_current = 1; 537 else m_current = 1;
538 } 538 }
539 } 539 }
540 540
541 return; 541 return;
542} 542}
543 543
544HighlightFilter::HighlightFilter(QTReader* _p) : pReader(_p), lastpos(0), nextpos(0), red(255), green(255), blue(255) 544HighlightFilter::HighlightFilter(QTReader* _p) : pReader(_p), lastpos(0), nextpos(0), red(255), green(255), blue(255)
545{ 545{
546} 546}
547 547
548#include "Bkmks.h" 548#include "Bkmks.h"
549#include "QTReader.h" 549#include "QTReader.h"
550 550
551void HighlightFilter::refresh(unsigned long pos) 551void HighlightFilter::refresh(unsigned long pos)
552{ 552{
553 bkmks = pReader->Bkmklist(); 553 bkmks = pReader->Bkmklist();
554 554
555 red = green = blue = 255; 555 red = green = blue = 255;
556 556
557 if (bkmks == NULL) 557 if (bkmks == NULL)
558 { 558 {
559 lastpos = 0; 559 lastpos = 0;
560 nextpos = 0xffffffff; 560 nextpos = 0xffffffff;
561 } 561 }
562 else 562 else
563 { 563 {
564 lastpos = 0; 564 lastpos = 0;
565 nextpos = 0xffffffff; 565 nextpos = 0xffffffff;
566 for (CList<Bkmk>::iterator i = bkmks->begin(); i != bkmks->end(); i++) 566 for (CList<Bkmk>::iterator i = bkmks->begin(); i != bkmks->end(); i++)
567 { 567 {
568 if ((*i).value() <= pos && pos < (*i).value2()) 568 if ((*i).value() <= pos && pos < (*i).value2())
569 { 569 {
570 red = i->red(); 570 red = i->red();
571 green = i->green(); 571 green = i->green();
572 blue = i->blue(); 572 blue = i->blue();
573 lastpos = (*i).value(); 573 lastpos = (*i).value();
574 nextpos = (*i).value2(); 574 nextpos = (*i).value2();
575 break; 575 break;
576 } 576 }
577 if ((*i).value() > pos) 577 if ((*i).value() > pos)
578 { 578 {
579 nextpos = (*i).value(); 579 nextpos = (*i).value();
580 break; 580 break;
581 } 581 }
582 lastpos = (*i).value(); 582 lastpos = (*i).value();
583 } 583 }
584 } 584 }
585} 585}
586 586
587void HighlightFilter::getch(tchar& ch, CStyle& sty, unsigned long& pos) 587void HighlightFilter::getch(tchar& ch, CStyle& sty, unsigned long& pos)
588{ 588{
589 parent->getch(ch, sty, pos); 589 parent->getch(ch, sty, pos);
590 if (bkmks != pReader->Bkmklist() || pos <= lastpos || pos >= nextpos) 590 if (bkmks != pReader->Bkmklist() || pos <= lastpos || pos >= nextpos)
591 { 591 {
592 // qDebug("Recalc <%lu, %lu, %lu>", lastpos, pos, nextpos); 592 // qDebug("Recalc <%lu, %lu, %lu>", lastpos, pos, nextpos);
593 refresh(pos); 593 refresh(pos);
594 // qDebug("Recalc(2) <%lu, %lu, %lu>", lastpos, pos, nextpos); 594 // qDebug("Recalc(2) <%lu, %lu, %lu>", lastpos, pos, nextpos);
595 } 595 }
596 int r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue(); 596 int r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue();
597 if (r == 255 && g == 255 && b == 255) 597 if (r == 255 && g == 255 && b == 255)
598 { 598 {
599 sty.setBackground(red, green, blue); 599 sty.setBackground(red, green, blue);
600 } 600 }
601} 601}
602 602
603void kern::getch(tchar& ch, CStyle& sty, unsigned long& pos) 603void kern::getch(tchar& ch, CStyle& sty, unsigned long& pos)
604{ 604{
605 if (uselast) 605 if (uselast)
606 { 606 {
607 ch = lastchar; 607 ch = lastchar;
608 sty = laststy; 608 sty = laststy;
609 uselast = false; 609 uselast = false;
610 return; 610 return;
611 } 611 }
612 else 612 else
613 { 613 {
614 parent->getch(ch, sty, pos); 614 parent->getch(ch, sty, pos);
615 } 615 }
616 switch (ch) 616 switch (ch)
617 { 617 {
618 case 'f': 618 case 'f':
619 { 619 {
620 tchar savedchar = 'f'; 620 tchar savedchar = 'f';
621 parent->getch(ch, sty, pos); 621 parent->getch(ch, sty, pos);
622 switch (ch) 622 switch (ch)
623 { 623 {
624 case 'i': 624 case 'i':
625 ch = (251 << 8) + 1; 625 ch = (251 << 8) + 1;
626 break; 626 break;
627 case 'l': 627 case 'l':
628 ch = (251 << 8) + 2; 628 ch = (251 << 8) + 2;
629 break; 629 break;
630 default: 630 default:
631 lastchar = ch; 631 lastchar = ch;
632 uselast = true; 632 uselast = true;
633 laststy = sty; 633 laststy = sty;
634 ch = savedchar; 634 ch = savedchar;
635 } 635 }
636 } 636 }
637 break; 637 break;
638 default: 638 default:
639 break; 639 break;
640 } 640 }
641} 641}
642 642
643class ErrorFilter : public CFilter 643class ErrorFilter : public CFilter
644{ 644{
645 QString error; 645 QString error;
646 int currentpos; 646 int currentpos;
647 public: 647 public:
648 ErrorFilter(const QString& _s) : error(_s), currentpos(0) {} 648 ErrorFilter(const QString& _s) : error(_s), currentpos(0) {}
649 ~ErrorFilter() {} 649 ~ErrorFilter() {}
650 void getch(tchar& ch, CStyle& sty, unsigned long& pos) 650 void getch(tchar& ch, CStyle& sty, unsigned long& pos)
651 { 651 {
652 if (currentpos == error.length()) 652 if (currentpos == error.length())
653 { 653 {
654 ch = UEOF; 654 ch = UEOF;
655 currentpos = 0; 655 currentpos = 0;
656 } 656 }
657 else 657 else
658 { 658 {
659 ch = error[currentpos++].unicode(); 659 ch = error[currentpos++].unicode();
660 } 660 }
661 } 661 }
662 QString about() { return parent->about(); } 662 QString about() { return parent->about(); }
663}; 663};
664 664
665#ifndef __STATIC 665#ifndef __STATIC
666ExternFilter::ExternFilter(const QString& nm, const QString& optional) : filt(NULL), handle(NULL) 666ExternFilter::ExternFilter(const QString& nm, const QString& optional) : filt(NULL), handle(NULL)
667{ 667{
668 QString filterpath(QTReaderUtil::getPluginPath("filters/lib")); 668 QString filterpath(QTReaderUtil::getPluginPath("filters"));
669 filterpath += "/lib";
669 filterpath += nm; 670 filterpath += nm;
670 filterpath += ".so"; 671 filterpath += ".so";
671 if (QFile::exists(filterpath)) 672 if (QFile::exists(filterpath))
672 { 673 {
673 qDebug("Filter:%s", (const char*)filterpath); 674 qDebug("Filter:%s", (const char*)filterpath);
674 handle = dlopen(filterpath, RTLD_LAZY); 675 handle = dlopen(filterpath, RTLD_LAZY);
675 if (handle == 0) 676 if (handle == 0)
676 { 677 {
677 qDebug("Can't find filter:%s", dlerror()); 678 qDebug("Can't find filter:%s", dlerror());
678 // status = -10; 679 // status = -10;
679 filt = new ErrorFilter(QString("Can't find plugin:")+nm); 680 filt = new ErrorFilter(QString("Can't find plugin:")+nm);
680 return; 681 return;
681 } 682 }
682 CFilter* (*newfilter)(const QString&); 683 CFilter* (*newfilter)(const QString&);
683 newfilter = (CFilter* (*)(const QString&))dlsym(handle, "newfilter"); 684 newfilter = (CFilter* (*)(const QString&))dlsym(handle, "newfilter");
684 if (newfilter == NULL) 685 if (newfilter == NULL)
685 { 686 {
686 qDebug("Can't find newfilter"); 687 qDebug("Can't find newfilter");
687 filt = new ErrorFilter(QString("Can't find entry point in plugin:")+nm); 688 filt = new ErrorFilter(QString("Can't find entry point in plugin:")+nm);
688 return; 689 return;
689 } 690 }
690 filt = (*newfilter)(optional); 691 filt = (*newfilter)(optional);
691 } 692 }
692 else 693 else
693 { 694 {
694 qDebug("No filter path"); 695 qDebug("No filter path");
695 filt = new ErrorFilter(QString("No filter plugins installed:")+nm); 696 filt = new ErrorFilter(QString("No filter plugins installed:")+nm);
696 } 697 }
697 if (filt == NULL) 698 if (filt == NULL)
698 { 699 {
699 qDebug("Can't do newfilter"); 700 qDebug("Can't do newfilter");
700 filt = new ErrorFilter(QString("Filter creation failed:")+nm); 701 filt = new ErrorFilter(QString("Filter creation failed:")+nm);
701 return; 702 return;
702 } 703 }
703} 704}
704#endif 705#endif
705 706
706void makeInverse::getch(tchar& ch, CStyle& sty, unsigned long& pos) 707void makeInverse::getch(tchar& ch, CStyle& sty, unsigned long& pos)
707{ 708{
708 parent->getch(ch, sty, pos); 709 parent->getch(ch, sty, pos);
709 int r,g,b; 710 int r,g,b;
710 r = 255 - sty.Red(), g = 255 - sty.Green(), b = 255 - sty.Blue(); 711 r = 255 - sty.Red(), g = 255 - sty.Green(), b = 255 - sty.Blue();
711 sty.setColour(r,g,b); 712 sty.setColour(r,g,b);
712 r = 255 - sty.bRed(), g = 255 - sty.bGreen(), b = 255 - sty.bBlue(); 713 r = 255 - sty.bRed(), g = 255 - sty.bGreen(), b = 255 - sty.bBlue();
713 sty.setBackground(r,g,b); 714 sty.setBackground(r,g,b);
714 r = 255 - sty.pRed(), g = 255 - sty.pGreen(), b = 255 - sty.pBlue(); 715 r = 255 - sty.pRed(), g = 255 - sty.pGreen(), b = 255 - sty.pBlue();
715 sty.setPaper(r,g,b); 716 sty.setPaper(r,g,b);
716} 717}
717/* 718/*
718void makeNegative::getch(tchar& ch, CStyle& sty, unsigned long& pos) 719void makeNegative::getch(tchar& ch, CStyle& sty, unsigned long& pos)
719{ 720{
720 parent->getch(ch, sty, pos); 721 parent->getch(ch, sty, pos);
721 QColor fg(sty.Red(), sty.Green(), sty.Blue()); 722 QColor fg(sty.Red(), sty.Green(), sty.Blue());
722 int h,s,v; 723 int h,s,v;
723 fg.hsv(&h,&s,&v); 724 fg.hsv(&h,&s,&v);
724 fg.setHsv(h,s,255-v); 725 fg.setHsv(h,s,255-v);
725 int r,g,b; 726 int r,g,b;
726 fg.rgb(&r,&g,&b); 727 fg.rgb(&r,&g,&b);
727 sty.setColour(r,g,b); 728 sty.setColour(r,g,b);
728 729
729 fg = QColor(sty.bRed(), sty.bGreen(), sty.bBlue()); 730 fg = QColor(sty.bRed(), sty.bGreen(), sty.bBlue());
730 fg.hsv(&h,&s,&v); 731 fg.hsv(&h,&s,&v);
731 fg.setHsv(h,s,255-v); 732 fg.setHsv(h,s,255-v);
732 fg.rgb(&r,&g,&b); 733 fg.rgb(&r,&g,&b);
733 sty.setBackground(r,g,b); 734 sty.setBackground(r,g,b);
734} 735}
735*/ 736*/
736void setbg::getch(tchar& ch, CStyle& sty, unsigned long& pos) 737void setbg::getch(tchar& ch, CStyle& sty, unsigned long& pos)
737{ 738{
738 parent->getch(ch, sty, pos); 739 parent->getch(ch, sty, pos);
739 int r = sty.pRed(), g = sty.pGreen(), b = sty.pBlue(); 740 int r = sty.pRed(), g = sty.pGreen(), b = sty.pBlue();
740 if (r == 255 && g == 255 && b == 255) 741 if (r == 255 && g == 255 && b == 255)
741 { 742 {
742 sty.setPaper(m_r,m_g,m_b); 743 sty.setPaper(m_r,m_g,m_b);
743 } 744 }
744 else 745 else
745 { 746 {
746 qDebug("We have background [%x%x%x]", r, g, b); 747 qDebug("We have background [%x%x%x]", r, g, b);
747 } 748 }
748 r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue(); 749 r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue();
749 if (r == 255 && g == 255 && b == 255) 750 if (r == 255 && g == 255 && b == 255)
750 { 751 {
751 sty.setBackground(m_r,m_g,m_b); 752 sty.setBackground(m_r,m_g,m_b);
752 } 753 }
753 else 754 else
754 { 755 {
755 qDebug("We have background [%x%x%x]", r, g, b); 756 qDebug("We have background [%x%x%x]", r, g, b);
756 } 757 }
757} 758}
758 759
759void setfg::getch(tchar& ch, CStyle& sty, unsigned long& pos) 760void setfg::getch(tchar& ch, CStyle& sty, unsigned long& pos)
760{ 761{
761 parent->getch(ch, sty, pos); 762 parent->getch(ch, sty, pos);
762 int r = sty.Red(), g = sty.Green(), b = sty.Blue(); 763 int r = sty.Red(), g = sty.Green(), b = sty.Blue();
763 if (r == 0 && g == 0 && b == 0) 764 if (r == 0 && g == 0 && b == 0)
764 { 765 {
765 sty.setColour(m_r,m_g,m_b); 766 sty.setColour(m_r,m_g,m_b);
766 } 767 }
767} 768}
768 769
769#include "CRegExp.h" 770#include "CRegExp.h"
770 771
771repara::repara(const QString& pat) : tch(0) 772repara::repara(const QString& pat) : tch(0)
772{ 773{
773 // QString pat("{\\n[A-Z\"]}"); 774 // QString pat("{\\n[A-Z\"]}");
774 flt = new CRegExpFilt(pat, false); 775 flt = new CRegExpFilt(pat, false);
775 qDebug("Construction done"); 776 qDebug("Construction done");
776} 777}
777 778
778repara::~repara() 779repara::~repara()
779{ 780{
780 delete flt; 781 delete flt;
781} 782}
782 783
783void repara::getch(tchar& ch, CStyle& sty, unsigned long& pos) 784void repara::getch(tchar& ch, CStyle& sty, unsigned long& pos)
784{ 785{
785 if (flt->empty()) 786 if (flt->empty())
786 { 787 {
787 while (flt->empty()) 788 while (flt->empty())
788 { 789 {
789 parent->getch(ch, sty, pos); 790 parent->getch(ch, sty, pos);
790 flt->addch(ch); 791 flt->addch(ch);
791 } 792 }
792 } 793 }
793 ch = flt->pop(); 794 ch = flt->pop();
794 /* 795 /*
795 parent->getch(ch, sty, pos); 796 parent->getch(ch, sty, pos);
796 if (ch == 10 || ch == ' ') 797 if (ch == 10 || ch == ' ')
797 { 798 {
798 if (tch == 10) 799 if (tch == 10)
799 { 800 {
800 tch = ch; 801 tch = ch;
801 ch = 10; 802 ch = 10;
802 return; 803 return;
803 } 804 }
804 else 805 else
805 { 806 {
806 tch = ch; 807 tch = ch;
807 ch = ' '; 808 ch = ' ';
808 return; 809 return;
809 } 810 }
810 } 811 }
811 tch = ch; 812 tch = ch;
812 */ 813 */
813 return; 814 return;
814} 815}