summaryrefslogtreecommitdiff
path: root/core/apps/textedit/textedit.cpp
Unidiff
Diffstat (limited to 'core/apps/textedit/textedit.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp83
1 files changed, 43 insertions, 40 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index 5bb65a9..c9178a5 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -1,91 +1,94 @@
1/********************************************************************** 1/**********************************************************************
2// textedit.cpp 2// textedit.cpp
3** Copyright (C) 2000 Trolltech AS. All rights reserved. 3** Copyright (C) 2000 Trolltech AS. All rights reserved.
4** 4**
5** This file is part of Opie Environment. 5** This file is part of Opie Environment.
6** 6**
7** This file may be distributed and/or modified under the terms of the 7** This file may be distributed and/or modified under the terms of the
8** GNU General Public License version 2 as published by the Free Software 8** GNU General Public License version 2 as published by the Free Software
9** Foundation and appearing in the file LICENSE.GPL included in the 9** Foundation and appearing in the file LICENSE.GPL included in the
10** packaging of this file. 10** packaging of this file.
11** 11**
12**********************************************************************/ 12**********************************************************************/
13// changes added by L. J. Potter Sun 02-17-2002 21:31:31 13// changes added by L. J. Potter Sun 02-17-2002 21:31:31
14
14#include "textedit.h" 15#include "textedit.h"
15#include "filePermissions.h" 16#include "filePermissions.h"
16 17
17 18/* OPIE */
19#include <opie2/odebug.h>
18#include <opie2/ofileselector.h> 20#include <opie2/ofileselector.h>
19#include <opie2/ofiledialog.h> 21#include <opie2/ofiledialog.h>
20#include <opie2/ofontselector.h> 22#include <opie2/ofontselector.h>
21
22#include <qpe/resource.h> 23#include <qpe/resource.h>
23#include <qpe/config.h> 24#include <qpe/config.h>
24#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26using namespace Opie::Core;
27using namespace Opie::Ui;
28
29/* QT */
25#include <qmenubar.h> 30#include <qmenubar.h>
26#include <qtoolbar.h> 31#include <qtoolbar.h>
27
28#include <qtextstream.h> 32#include <qtextstream.h>
29#include <qclipboard.h> 33#include <qclipboard.h>
30#include <qaction.h> 34#include <qaction.h>
31#include <qlineedit.h> 35#include <qlineedit.h>
32#include <qmessagebox.h> 36#include <qmessagebox.h>
33#include <qlayout.h> 37#include <qlayout.h>
34#include <qtimer.h> 38#include <qtimer.h>
35#include <qdir.h> 39#include <qdir.h>
40
41/* STD */
36#include <unistd.h> 42#include <unistd.h>
37#include <sys/stat.h> 43#include <sys/stat.h>
38#include <stdlib.h> //getenv 44#include <stdlib.h> //getenv
39 45
40using namespace Opie::Ui;
41
42#if QT_VERSION < 300 46#if QT_VERSION < 300
43
44class QpeEditor : public QMultiLineEdit 47class QpeEditor : public QMultiLineEdit
45{ 48{
46 49
47public: 50public:
48 QpeEditor( QWidget *parent, const char * name = 0 ) 51 QpeEditor( QWidget *parent, const char * name = 0 )
49 : QMultiLineEdit( parent, name ) { 52 : QMultiLineEdit( parent, name ) {
50 clearTableFlags(); 53 clearTableFlags();
51 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); 54 setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar );
52} 55}
53 56
54 void find( const QString &txt, bool caseSensitive, 57 void find( const QString &txt, bool caseSensitive,
55 bool backwards ); 58 bool backwards );
56protected: 59protected:
57 bool markIt; 60 bool markIt;
58 int line1, line2, col1, col2; 61 int line1, line2, col1, col2;
59 void mousePressEvent( QMouseEvent * ); 62 void mousePressEvent( QMouseEvent * );
60 void mouseReleaseEvent( QMouseEvent * ); 63 void mouseReleaseEvent( QMouseEvent * );
61 64
62//public slots: 65//public slots:
63 /* 66 /*
64signals: 67signals:
65 void notFound(); 68 void notFound();
66 void searchWrapped(); 69 void searchWrapped();
67 */ 70 */
68 71
69private: 72private:
70 73
71}; 74};
72 75
73void QpeEditor::mousePressEvent( QMouseEvent *e ) { 76void QpeEditor::mousePressEvent( QMouseEvent *e ) {
74 switch(e->button()) { 77 switch(e->button()) {
75 case RightButton: 78 case RightButton:
76 { //rediculous workaround for qt popup menu 79 { //rediculous workaround for qt popup menu
77 //and the hold right click mechanism 80 //and the hold right click mechanism
78 this->setSelection( line1, col1, line2, col2); 81 this->setSelection( line1, col1, line2, col2);
79 QMultiLineEdit::mousePressEvent( e ); 82 QMultiLineEdit::mousePressEvent( e );
80 markIt = false; 83 markIt = false;
81 } 84 }
82 break; 85 break;
83 default: 86 default:
84 { 87 {
85 if(!markIt) { 88 if(!markIt) {
86 int line, col; 89 int line, col;
87 this->getCursorPosition(&line, &col); 90 this->getCursorPosition(&line, &col);
88 line1=line2=line; 91 line1=line2=line;
89 col1=col2=col; 92 col1=col2=col;
90 } 93 }
91 QMultiLineEdit::mousePressEvent( e ); 94 QMultiLineEdit::mousePressEvent( e );
@@ -366,97 +369,97 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
366 defaultFont = QFont ( family, size, weight, italic ); 369 defaultFont = QFont ( family, size, weight, italic );
367 editor-> setFont ( defaultFont ); 370 editor-> setFont ( defaultFont );
368// updateCaption(); 371// updateCaption();
369 372
370 cfg.setGroup ( "View" ); 373 cfg.setGroup ( "View" );
371 374
372 promptExit = cfg.readBoolEntry ( "PromptExit", false ); 375 promptExit = cfg.readBoolEntry ( "PromptExit", false );
373 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); 376 openDesktop = cfg.readBoolEntry ( "OpenDesktop", true );
374 filePerms = cfg.readBoolEntry ( "FilePermissions", false ); 377 filePerms = cfg.readBoolEntry ( "FilePermissions", false );
375 useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); 378 useSearchBar = cfg.readBoolEntry ( "SearchBar", false );
376 startWithNew = cfg.readBoolEntry ( "startNew", true); 379 startWithNew = cfg.readBoolEntry ( "startNew", true);
377 featureAutoSave = cfg.readBoolEntry( "autosave", false); 380 featureAutoSave = cfg.readBoolEntry( "autosave", false);
378 381
379 if(useSearchBar) searchBarAction->setOn(true); 382 if(useSearchBar) searchBarAction->setOn(true);
380 if(promptExit) nAdvanced->setOn( true ); 383 if(promptExit) nAdvanced->setOn( true );
381 if(openDesktop) desktopAction->setOn( true ); 384 if(openDesktop) desktopAction->setOn( true );
382 if(filePerms) filePermAction->setOn( true ); 385 if(filePerms) filePermAction->setOn( true );
383 if(startWithNew) nStart->setOn( true ); 386 if(startWithNew) nStart->setOn( true );
384 if(featureAutoSave) nAutoSave->setOn(true); 387 if(featureAutoSave) nAutoSave->setOn(true);
385 388
386// { 389// {
387// doTimer(true); 390// doTimer(true);
388// } 391// }
389 392
390 bool wrap = cfg. readBoolEntry ( "Wrap", true ); 393 bool wrap = cfg. readBoolEntry ( "Wrap", true );
391 wa-> setOn ( wrap ); 394 wa-> setOn ( wrap );
392 setWordWrap ( wrap ); 395 setWordWrap ( wrap );
393 396
394///////////////// 397/////////////////
395 if( qApp->argc() > 1) { 398 if( qApp->argc() > 1) {
396 currentFileName=qApp->argv()[1]; 399 currentFileName=qApp->argv()[1];
397 400
398 QFileInfo fi(currentFileName); 401 QFileInfo fi(currentFileName);
399 402
400 if(fi.baseName().left(1) == "") { 403 if(fi.baseName().left(1) == "") {
401 openDotFile(currentFileName); 404 openDotFile(currentFileName);
402 } else { 405 } else {
403 openFile(currentFileName); 406 openFile(currentFileName);
404 } 407 }
405 } else { 408 } else {
406 edited1=false; 409 edited1=false;
407 openDotFile(""); 410 openDotFile("");
408 } 411 }
409 412
410 viewSelection = cfg.readNumEntry( "FileView", 0 ); 413 viewSelection = cfg.readNumEntry( "FileView", 0 );
411} 414}
412 415
413TextEdit::~TextEdit() { 416TextEdit::~TextEdit() {
414 qWarning("textedit d'tor"); 417 owarn << "textedit d'tor" << oendl;
415 delete editor; 418 delete editor;
416} 419}
417 420
418void TextEdit::closeEvent(QCloseEvent *) { 421void TextEdit::closeEvent(QCloseEvent *) {
419 if( edited1 && promptExit) 422 if( edited1 && promptExit)
420 { 423 {
421 switch( savePrompt() ) 424 switch( savePrompt() )
422 { 425 {
423 case 1: 426 case 1:
424 { 427 {
425 saveAs(); 428 saveAs();
426 qApp->quit(); 429 qApp->quit();
427 } 430 }
428 break; 431 break;
429 432
430 case 2: 433 case 2:
431 { 434 {
432 qApp->quit(); 435 qApp->quit();
433 } 436 }
434 break; 437 break;
435 438
436 case -1: 439 case -1:
437 break; 440 break;
438 }; 441 };
439 } 442 }
440 else 443 else
441 qApp->quit(); 444 qApp->quit();
442 445
443} 446}
444 447
445void TextEdit::cleanUp() { 448void TextEdit::cleanUp() {
446 449
447 Config cfg ( "TextEdit" ); 450 Config cfg ( "TextEdit" );
448 cfg. setGroup ( "Font" ); 451 cfg. setGroup ( "Font" );
449 QFont f = editor->font(); 452 QFont f = editor->font();
450 cfg.writeEntry ( "Family", f. family ( )); 453 cfg.writeEntry ( "Family", f. family ( ));
451 cfg.writeEntry ( "Size", f. pointSize ( )); 454 cfg.writeEntry ( "Size", f. pointSize ( ));
452 cfg.writeEntry ( "Weight", f. weight ( )); 455 cfg.writeEntry ( "Weight", f. weight ( ));
453 cfg.writeEntry ( "Italic", f. italic ( )); 456 cfg.writeEntry ( "Italic", f. italic ( ));
454 457
455 cfg.setGroup ( "View" ); 458 cfg.setGroup ( "View" );
456 cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth ); 459 cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth );
457 cfg.writeEntry ( "FileView", viewSelection ); 460 cfg.writeEntry ( "FileView", viewSelection );
458 461
459 cfg.writeEntry ( "PromptExit", promptExit ); 462 cfg.writeEntry ( "PromptExit", promptExit );
460 cfg.writeEntry ( "OpenDesktop", openDesktop ); 463 cfg.writeEntry ( "OpenDesktop", openDesktop );
461 cfg.writeEntry ( "FilePermissions", filePerms ); 464 cfg.writeEntry ( "FilePermissions", filePerms );
462 cfg.writeEntry ( "SearchBar", useSearchBar ); 465 cfg.writeEntry ( "SearchBar", useSearchBar );
@@ -601,595 +604,595 @@ void TextEdit::fileRevert() {
601 clear(); 604 clear();
602 fileOpen(); 605 fileOpen();
603} 606}
604 607
605void TextEdit::editCut() { 608void TextEdit::editCut() {
606#ifndef QT_NO_CLIPBOARD 609#ifndef QT_NO_CLIPBOARD
607 editor->cut(); 610 editor->cut();
608#endif 611#endif
609} 612}
610 613
611void TextEdit::editCopy() { 614void TextEdit::editCopy() {
612#ifndef QT_NO_CLIPBOARD 615#ifndef QT_NO_CLIPBOARD
613 editor->copy(); 616 editor->copy();
614#endif 617#endif
615} 618}
616 619
617void TextEdit::editPaste() { 620void TextEdit::editPaste() {
618#ifndef QT_NO_CLIPBOARD 621#ifndef QT_NO_CLIPBOARD
619 editor->paste(); 622 editor->paste();
620#endif 623#endif
621} 624}
622 625
623void TextEdit::editFind() { 626void TextEdit::editFind() {
624 searchBar->show(); 627 searchBar->show();
625 searchEdit->setFocus(); 628 searchEdit->setFocus();
626} 629}
627 630
628void TextEdit::findNext() { 631void TextEdit::findNext() {
629 editor->find( searchEdit->text(), false, false ); 632 editor->find( searchEdit->text(), false, false );
630 633
631} 634}
632 635
633void TextEdit::findClose() { 636void TextEdit::findClose() {
634 searchBar->hide(); 637 searchBar->hide();
635} 638}
636 639
637void TextEdit::search() { 640void TextEdit::search() {
638 editor->find( searchEdit->text(), false, false ); 641 editor->find( searchEdit->text(), false, false );
639} 642}
640 643
641void TextEdit::newFile( const DocLnk &f ) { 644void TextEdit::newFile( const DocLnk &f ) {
642 DocLnk nf = f; 645 DocLnk nf = f;
643 nf.setType("text/plain"); 646 nf.setType("text/plain");
644 clear(); 647 clear();
645 setWState (WState_Reserved1 ); 648 setWState (WState_Reserved1 );
646 editor->setFocus(); 649 editor->setFocus();
647 doc = new DocLnk(nf); 650 doc = new DocLnk(nf);
648 currentFileName = "Unnamed"; 651 currentFileName = "Unnamed";
649 qDebug("newFile "+currentFileName); 652 odebug << "newFile "+currentFileName << oendl;
650 updateCaption( currentFileName); 653 updateCaption( currentFileName);
651// editor->setEdited( false); 654// editor->setEdited( false);
652} 655}
653 656
654void TextEdit::openDotFile( const QString &f ) { 657void TextEdit::openDotFile( const QString &f ) {
655 if(!currentFileName.isEmpty()) { 658 if(!currentFileName.isEmpty()) {
656 currentFileName=f; 659 currentFileName=f;
657 660
658 qDebug("openFile dotfile " + currentFileName); 661 odebug << "openFile dotfile " + currentFileName << oendl;
659 QString txt; 662 QString txt;
660 QFile file(f); 663 QFile file(f);
661 file.open(IO_ReadWrite); 664 file.open(IO_ReadWrite);
662 QTextStream t(&file); 665 QTextStream t(&file);
663 while ( !t.atEnd()) { 666 while ( !t.atEnd()) {
664 txt+=t.readLine()+"\n"; 667 txt+=t.readLine()+"\n";
665 } 668 }
666 editor->setText(txt); 669 editor->setText(txt);
667 editor->setEdited( false); 670 editor->setEdited( false);
668 edited1=false; 671 edited1=false;
669 edited=false; 672 edited=false;
670 673
671 674
672 } 675 }
673 updateCaption( currentFileName); 676 updateCaption( currentFileName);
674} 677}
675 678
676void TextEdit::openFile( const QString &f ) { 679void TextEdit::openFile( const QString &f ) {
677 qDebug("filename is "+ f); 680 odebug << "filename is "+ f << oendl;
678 QString filer; 681 QString filer;
679 QFileInfo fi( f); 682 QFileInfo fi( f);
680// bFromDocView = true; 683// bFromDocView = true;
681 if(f.find(".desktop",0,true) != -1 && !openDesktop ) 684 if(f.find(".desktop",0,true) != -1 && !openDesktop )
682 { 685 {
683 switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Text Editor has detected<BR>you selected a <B>.desktop</B>file.<BR>Open<B>.desktop</B> file or <B>linked</B> file?"),tr(".desktop File"),tr("Linked Document"),0,1,1) ) 686 switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Text Editor has detected<BR>you selected a <B>.desktop</B>file.<BR>Open<B>.desktop</B> file or <B>linked</B> file?"),tr(".desktop File"),tr("Linked Document"),0,1,1) )
684 { 687 {
685 case 0: //desktop 688 case 0: //desktop
686 filer = f; 689 filer = f;
687 break; 690 break;
688 case 1: //linked 691 case 1: //linked
689 DocLnk sf(f); 692 DocLnk sf(f);
690 filer = sf.file(); 693 filer = sf.file();
691 break; 694 break;
692 }; 695 };
693 } 696 }
694 else if(fi.baseName().left(1) == "") 697 else if(fi.baseName().left(1) == "")
695 { 698 {
696 qDebug("opening dotfile"); 699 odebug << "opening dotfile" << oendl;
697 currentFileName=f; 700 currentFileName=f;
698 openDotFile(currentFileName); 701 openDotFile(currentFileName);
699 return; 702 return;
700 } 703 }
701 /* 704 /*
702 * The problem is a file where Config(f).isValid() and it does not 705 * The problem is a file where Config(f).isValid() and it does not
703 * end with .desktop will be treated as desktop file 706 * end with .desktop will be treated as desktop file
704 */ 707 */
705 else if (f.find(".desktop",0,true) != -1 ) 708 else if (f.find(".desktop",0,true) != -1 )
706 { 709 {
707 DocLnk sf(f); 710 DocLnk sf(f);
708 filer = sf.file(); 711 filer = sf.file();
709 if(filer.right(1) == "/") 712 if(filer.right(1) == "/")
710 filer = f; 713 filer = f;
711 714
712 } 715 }
713 else 716 else
714 filer = f; 717 filer = f;
715 718
716 DocLnk nf; 719 DocLnk nf;
717 nf.setType("text/plain"); 720 nf.setType("text/plain");
718 nf.setFile(filer); 721 nf.setFile(filer);
719 currentFileName=filer; 722 currentFileName=filer;
720 723
721 nf.setName(fi.baseName()); 724 nf.setName(fi.baseName());
722 openFile(nf); 725 openFile(nf);
723 726
724 qDebug("openFile string "+currentFileName); 727 odebug << "openFile string "+currentFileName << oendl;
725 728
726 showEditTools(); 729 showEditTools();
727 // Show filename in caption 730 // Show filename in caption
728 QString name = filer; 731 QString name = filer;
729 int sep = name.findRev( '/' ); 732 int sep = name.findRev( '/' );
730 if ( sep > 0 ) 733 if ( sep > 0 )
731 name = name.mid( sep+1 ); 734 name = name.mid( sep+1 );
732 updateCaption( name ); 735 updateCaption( name );
733} 736}
734 737
735void TextEdit::openFile( const DocLnk &f ) { 738void TextEdit::openFile( const DocLnk &f ) {
736// clear(); 739// clear();
737// bFromDocView = true; 740// bFromDocView = true;
738 FileManager fm; 741 FileManager fm;
739 QString txt; 742 QString txt;
740 currentFileName=f.file(); 743 currentFileName=f.file();
741 qDebug("openFile doclnk " + currentFileName); 744 odebug << "openFile doclnk " + currentFileName << oendl;
742 if ( !fm.loadFile( f, txt ) ) { 745 if ( !fm.loadFile( f, txt ) ) {
743 // ####### could be a new file 746 // ####### could be a new file
744 qDebug( "Cannot open file" ); 747 odebug << "Cannot open file" << oendl;
745 } 748 }
746// fileNew(); 749// fileNew();
747 if ( doc ) 750 if ( doc )
748 delete doc; 751 delete doc;
749 doc = new DocLnk(f); 752 doc = new DocLnk(f);
750 editor->setText(txt); 753 editor->setText(txt);
751 editor->setEdited( false); 754 editor->setEdited( false);
752 edited1=false; 755 edited1=false;
753 edited=false; 756 edited=false;
754 757
755 doc->setName(currentFileName); 758 doc->setName(currentFileName);
756 updateCaption(); 759 updateCaption();
757 setTimer(); 760 setTimer();
758} 761}
759 762
760void TextEdit::showEditTools() { 763void TextEdit::showEditTools() {
761 menu->show(); 764 menu->show();
762 editBar->show(); 765 editBar->show();
763 if(!useSearchBar) 766 if(!useSearchBar)
764 searchBar->hide(); 767 searchBar->hide();
765 else 768 else
766 searchBar->show(); 769 searchBar->show();
767 setWState (WState_Reserved1 ); 770 setWState (WState_Reserved1 );
768} 771}
769 772
770/*! 773/*!
771 unprompted save */ 774 unprompted save */
772bool TextEdit::save() { 775bool TextEdit::save() {
773 qDebug("saveAsFile " + currentFileName); 776 odebug << "saveAsFile " + currentFileName << oendl;
774 if(currentFileName.isEmpty()) { 777 if(currentFileName.isEmpty()) {
775 saveAs(); 778 saveAs();
776 return false; 779 return false;
777 } 780 }
778 781
779 QString file = doc->file(); 782 QString file = doc->file();
780 qDebug("saver file "+file); 783 odebug << "saver file "+file << oendl;
781 QString name= doc->name(); 784 QString name= doc->name();
782 qDebug("File named "+name); 785 odebug << "File named "+name << oendl;
783 QString rt = editor->text(); 786 QString rt = editor->text();
784 if( !rt.isEmpty() ) { 787 if( !rt.isEmpty() ) {
785 if(name.isEmpty()) { 788 if(name.isEmpty()) {
786 saveAs(); 789 saveAs();
787 } else { 790 } else {
788 currentFileName= name ; 791 currentFileName= name ;
789 qDebug("saveFile "+currentFileName); 792 odebug << "saveFile "+currentFileName << oendl;
790 793
791 struct stat buf; 794 struct stat buf;
792 mode_t mode; 795 mode_t mode;
793 stat(file.latin1(), &buf); 796 stat(file.latin1(), &buf);
794 mode = buf.st_mode; 797 mode = buf.st_mode;
795 798
796 if(!fileIs) { 799 if(!fileIs) {
797 doc->setName( name); 800 doc->setName( name);
798 FileManager fm; 801 FileManager fm;
799 if ( !fm.saveFile( *doc, rt ) ) { 802 if ( !fm.saveFile( *doc, rt ) ) {
800 QMessageBox::message(tr("Text Edit"),tr("Save Failed")); 803 QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
801 return false; 804 return false;
802 } 805 }
803 } else { 806 } else {
804 qDebug("regular save file"); 807 odebug << "regular save file" << oendl;
805 QFile f(file); 808 QFile f(file);
806 if( f.open(IO_WriteOnly)) { 809 if( f.open(IO_WriteOnly)) {
807 QCString crt = rt.utf8(); 810 QCString crt = rt.utf8();
808 f.writeBlock(crt,crt.length()); 811 f.writeBlock(crt,crt.length());
809 } else { 812 } else {
810 QMessageBox::message(tr("Text Edit"),tr("Write Failed")); 813 QMessageBox::message(tr("Text Edit"),tr("Write Failed"));
811 return false; 814 return false;
812 } 815 }
813 816
814 } 817 }
815 editor->setEdited( false); 818 editor->setEdited( false);
816 edited1=false; 819 edited1=false;
817 edited=false; 820 edited=false;
818 if(caption().left(1)=="*") 821 if(caption().left(1)=="*")
819 setCaption(caption().right(caption().length()-1)); 822 setCaption(caption().right(caption().length()-1));
820 823
821 824
822 chmod( file.latin1(), mode); 825 chmod( file.latin1(), mode);
823 } 826 }
824 return true; 827 return true;
825 } 828 }
826 return false; 829 return false;
827} 830}
828 831
829/*! 832/*!
830 prompted save */ 833 prompted save */
831bool TextEdit::saveAs() { 834bool TextEdit::saveAs() {
832 835
833 if(caption() == tr("Text Editor")) 836 if(caption() == tr("Text Editor"))
834 return false; 837 return false;
835 qDebug("saveAsFile " + currentFileName); 838 odebug << "saveAsFile " + currentFileName << oendl;
836 // case of nothing to save... 839 // case of nothing to save...
837// if ( !doc && !currentFileName.isEmpty()) { 840// if ( !doc && !currentFileName.isEmpty()) {
838// //|| !bFromDocView) 841// //|| !bFromDocView)
839// qDebug("no doc"); 842// odebug << "no doc" << oendl;
840// return true; 843// return true;
841// } 844// }
842// if ( !editor->edited() ) { 845// if ( !editor->edited() ) {
843// delete doc; 846// delete doc;
844// doc = 0; 847// doc = 0;
845// return true; 848// return true;
846// } 849// }
847 850
848 QString rt = editor->text(); 851 QString rt = editor->text();
849 qDebug(currentFileName); 852 odebug << currentFileName << oendl;
850 853
851 if( currentFileName.isEmpty() 854 if( currentFileName.isEmpty()
852 || currentFileName == tr("Unnamed") 855 || currentFileName == tr("Unnamed")
853 || currentFileName == tr("Text Editor")) { 856 || currentFileName == tr("Text Editor")) {
854 qDebug("do silly TT filename thing"); 857 odebug << "do silly TT filename thing" << oendl;
855// if ( doc && doc->name().isEmpty() ) { 858// if ( doc && doc->name().isEmpty() ) {
856 QString pt = rt.simplifyWhiteSpace(); 859 QString pt = rt.simplifyWhiteSpace();
857 int i = pt.find( ' ' ); 860 int i = pt.find( ' ' );
858 QString docname = pt; 861 QString docname = pt;
859 if ( i > 0 ) 862 if ( i > 0 )
860 docname = pt.left( i ); 863 docname = pt.left( i );
861 // remove "." at the beginning 864 // remove "." at the beginning
862 while( docname.startsWith( "." ) ) 865 while( docname.startsWith( "." ) )
863 docname = docname.mid( 1 ); 866 docname = docname.mid( 1 );
864 docname.replace( QRegExp("/"), "_" ); 867 docname.replace( QRegExp("/"), "_" );
865 // cut the length. filenames longer than that 868 // cut the length. filenames longer than that
866 //don't make sense and something goes wrong when they get too long. 869 //don't make sense and something goes wrong when they get too long.
867 if ( docname.length() > 40 ) 870 if ( docname.length() > 40 )
868 docname = docname.left(40); 871 docname = docname.left(40);
869 if ( docname.isEmpty() ) 872 if ( docname.isEmpty() )
870 docname = tr("Unnamed"); 873 docname = tr("Unnamed");
871 if(doc) doc->setName(docname); 874 if(doc) doc->setName(docname);
872 currentFileName=docname; 875 currentFileName=docname;
873// } 876// }
874// else 877// else
875// qDebug("hmmmmmm"); 878// odebug << "hmmmmmm" << oendl;
876 } 879 }
877 880
878 881
879 QMap<QString, QStringList> map; 882 QMap<QString, QStringList> map;
880 map.insert(tr("All"), QStringList() ); 883 map.insert(tr("All"), QStringList() );
881 QStringList text; 884 QStringList text;
882 text << "text/*"; 885 text << "text/*";
883 map.insert(tr("Text"), text ); 886 map.insert(tr("Text"), text );
884 text << "*"; 887 text << "*";
885 map.insert(tr("All"), text ); 888 map.insert(tr("All"), text );
886 889
887 QFileInfo cuFi( currentFileName); 890 QFileInfo cuFi( currentFileName);
888 QString filee = cuFi.fileName(); 891 QString filee = cuFi.fileName();
889 QString dire = cuFi.dirPath(); 892 QString dire = cuFi.dirPath();
890 if(dire==".") 893 if(dire==".")
891 dire = QPEApplication::documentDir(); 894 dire = QPEApplication::documentDir();
892 QString str; 895 QString str;
893 if( !featureAutoSave) { 896 if( !featureAutoSave) {
894 str = OFileDialog::getSaveFileName( 2, 897 str = OFileDialog::getSaveFileName( 2,
895 dire, 898 dire,
896 filee, map); 899 filee, map);
897 } else 900 } else
898 str=currentFileName; 901 str=currentFileName;
899 902
900 if(!str.isEmpty()) { 903 if(!str.isEmpty()) {
901 QString fileNm=str; 904 QString fileNm=str;
902 905
903 qDebug("saving filename "+fileNm); 906 odebug << "saving filename "+fileNm << oendl;
904 QFileInfo fi(fileNm); 907 QFileInfo fi(fileNm);
905 currentFileName=fi.fileName(); 908 currentFileName=fi.fileName();
906 if(doc) 909 if(doc)
907// QString file = doc->file(); 910// QString file = doc->file();
908// doc->removeFiles(); 911// doc->removeFiles();
909 delete doc; 912 delete doc;
910 DocLnk nf; 913 DocLnk nf;
911 nf.setType("text/plain"); 914 nf.setType("text/plain");
912 nf.setFile( fileNm); 915 nf.setFile( fileNm);
913 doc = new DocLnk(nf); 916 doc = new DocLnk(nf);
914// editor->setText(rt); 917// editor->setText(rt);
915 qDebug("Saving file as "+currentFileName); 918 odebug << "Saving file as "+currentFileName << oendl;
916 doc->setName( currentFileName); 919 doc->setName( currentFileName);
917 updateCaption( currentFileName); 920 updateCaption( currentFileName);
918 921
919 FileManager fm; 922 FileManager fm;
920 if ( !fm.saveFile( *doc, rt ) ) { 923 if ( !fm.saveFile( *doc, rt ) ) {
921 QMessageBox::message(tr("Text Edit"),tr("Save Failed")); 924 QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
922 return false; 925 return false;
923 } 926 }
924 927
925 if( filePerms ) { 928 if( filePerms ) {
926 filePermissions *filePerm; 929 filePermissions *filePerm;
927 filePerm = new filePermissions(this, 930 filePerm = new filePermissions(this,
928 tr("Permissions"),true, 931 tr("Permissions"),true,
929 0,(const QString &)fileNm); 932 0,(const QString &)fileNm);
930 QPEApplication::execDialog( filePerm ); 933 QPEApplication::execDialog( filePerm );
931 934
932 if( filePerm) 935 if( filePerm)
933 delete filePerm; 936 delete filePerm;
934 } 937 }
935// } 938// }
936 editor->setEdited( false); 939 editor->setEdited( false);
937 edited1 = false; 940 edited1 = false;
938 edited = false; 941 edited = false;
939 if(caption().left(1)=="*") 942 if(caption().left(1)=="*")
940 setCaption(caption().right(caption().length()-1)); 943 setCaption(caption().right(caption().length()-1));
941 944
942 return true; 945 return true;
943 } 946 }
944 qDebug("returning false"); 947 odebug << "returning false" << oendl;
945 return false; 948 return false;
946} //end saveAs 949} //end saveAs
947 950
948void TextEdit::clear() { 951void TextEdit::clear() {
949 delete doc; 952 delete doc;
950 doc = 0; 953 doc = 0;
951 editor->clear(); 954 editor->clear();
952} 955}
953 956
954void TextEdit::updateCaption( const QString &name ) { 957void TextEdit::updateCaption( const QString &name ) {
955 958
956 if ( name.isEmpty() ) 959 if ( name.isEmpty() )
957 setCaption( tr("Text Editor") ); 960 setCaption( tr("Text Editor") );
958 else { 961 else {
959 QString s = name; 962 QString s = name;
960 if ( s.isNull() ) 963 if ( s.isNull() )
961 s = doc->name(); 964 s = doc->name();
962 if ( s.isEmpty() ) { 965 if ( s.isEmpty() ) {
963 s = tr( "Unnamed" ); 966 s = tr( "Unnamed" );
964 currentFileName=s; 967 currentFileName=s;
965 } 968 }
966// if(s.left(1) == "/") 969// if(s.left(1) == "/")
967// s = s.right(s.length()-1); 970// s = s.right(s.length()-1);
968 setCaption( tr("%1 - Text Editor").arg( s ) ); 971 setCaption( tr("%1 - Text Editor").arg( s ) );
969 } 972 }
970} 973}
971 974
972void TextEdit::setDocument(const QString& fileref) { 975void TextEdit::setDocument(const QString& fileref) {
973 if(fileref != "Unnamed") { 976 if(fileref != "Unnamed") {
974 currentFileName=fileref; 977 currentFileName=fileref;
975 qDebug("setDocument"); 978 odebug << "setDocument" << oendl;
976 QFileInfo fi(currentFileName); 979 QFileInfo fi(currentFileName);
977 qDebug("basename:"+fi.baseName()+": current filenmame "+currentFileName); 980 odebug << "basename:"+fi.baseName()+": current filenmame "+currentFileName << oendl;
978 if( (fi.baseName().left(1)).isEmpty() ) { 981 if( (fi.baseName().left(1)).isEmpty() ) {
979 openDotFile(currentFileName); 982 openDotFile(currentFileName);
980 983
981 } else { 984 } else {
982 qDebug("setDoc open"); 985 odebug << "setDoc open" << oendl;
983 bFromDocView = true; 986 bFromDocView = true;
984 openFile(fileref); 987 openFile(fileref);
985 editor->setEdited(true); 988 editor->setEdited(true);
986 edited1=false; 989 edited1=false;
987 edited=true; 990 edited=true;
988 // fromSetDocument=false; 991 // fromSetDocument=false;
989 // doSearchBar(); 992 // doSearchBar();
990 } 993 }
991 } 994 }
992 updateCaption( currentFileName); 995 updateCaption( currentFileName);
993} 996}
994 997
995void TextEdit::changeFont() { 998void TextEdit::changeFont() {
996 QDialog *d = new QDialog ( this, "FontDialog", true ); 999 QDialog *d = new QDialog ( this, "FontDialog", true );
997 d-> setCaption ( tr( "Choose font" )); 1000 d-> setCaption ( tr( "Choose font" ));
998 QBoxLayout *lay = new QVBoxLayout ( d ); 1001 QBoxLayout *lay = new QVBoxLayout ( d );
999 OFontSelector *ofs = new OFontSelector ( true, d ); 1002 OFontSelector *ofs = new OFontSelector ( true, d );
1000 lay-> addWidget ( ofs ); 1003 lay-> addWidget ( ofs );
1001 ofs-> setSelectedFont ( editor-> font ( )); 1004 ofs-> setSelectedFont ( editor-> font ( ));
1002 1005
1003 if ( QPEApplication::execDialog( d ) == QDialog::Accepted ) 1006 if ( QPEApplication::execDialog( d ) == QDialog::Accepted )
1004 editor-> setFont ( ofs-> selectedFont ( )); 1007 editor-> setFont ( ofs-> selectedFont ( ));
1005 delete d; 1008 delete d;
1006 1009
1007} 1010}
1008 1011
1009void TextEdit::editDelete() { 1012void TextEdit::editDelete() {
1010 switch ( QMessageBox::warning(this,tr("Text Editor"), 1013 switch ( QMessageBox::warning(this,tr("Text Editor"),
1011 tr("Do you really want<BR>to <B>delete</B> " 1014 tr("Do you really want<BR>to <B>delete</B> "
1012 "the current file\nfrom the disk?<BR>This is " 1015 "the current file\nfrom the disk?<BR>This is "
1013 "<B>irreversable!</B>"), 1016 "<B>irreversable!</B>"),
1014 tr("Yes"),tr("No"),0,0,1) ) { 1017 tr("Yes"),tr("No"),0,0,1) ) {
1015 case 0: 1018 case 0:
1016 if(doc) { 1019 if(doc) {
1017 doc->removeFiles(); 1020 doc->removeFiles();
1018 clear(); 1021 clear();
1019 setCaption( tr("Text Editor") ); 1022 setCaption( tr("Text Editor") );
1020 } 1023 }
1021 break; 1024 break;
1022 case 1: 1025 case 1:
1023 // exit 1026 // exit
1024 break; 1027 break;
1025 }; 1028 };
1026} 1029}
1027 1030
1028void TextEdit::changeStartConfig( bool b ) { 1031void TextEdit::changeStartConfig( bool b ) {
1029 startWithNew=b; 1032 startWithNew=b;
1030 Config cfg("TextEdit"); 1033 Config cfg("TextEdit");
1031 cfg.setGroup("View"); 1034 cfg.setGroup("View");
1032 cfg.writeEntry("startNew",b); 1035 cfg.writeEntry("startNew",b);
1033 update(); 1036 update();
1034} 1037}
1035 1038
1036void TextEdit::editorChanged() { 1039void TextEdit::editorChanged() {
1037// qDebug("editor changed"); 1040// odebug << "editor changed" << oendl;
1038 if( /*editor->edited() &&*/ /*edited && */!edited1) { 1041 if( /*editor->edited() &&*/ /*edited && */!edited1) {
1039 setCaption( "*"+caption()); 1042 setCaption( "*"+caption());
1040 edited1=true; 1043 edited1=true;
1041 } 1044 }
1042 edited=true; 1045 edited=true;
1043} 1046}
1044 1047
1045void TextEdit::receive(const QCString&msg, const QByteArray &) { 1048void TextEdit::receive(const QCString&msg, const QByteArray &) {
1046 qDebug("QCop "+msg); 1049 odebug << "QCop "+msg << oendl;
1047 if ( msg == "setDocument(QString)" ) { 1050 if ( msg == "setDocument(QString)" ) {
1048 qDebug("bugger all"); 1051 odebug << "bugger all" << oendl;
1049 1052
1050 } 1053 }
1051 1054
1052} 1055}
1053 1056
1054void TextEdit::doAbout() { 1057void TextEdit::doAbout() {
1055 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>" 1058 QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>"
1056 "2000 Trolltech AS, and<BR>" 1059 "2000 Trolltech AS, and<BR>"
1057 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>" 1060 "2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>"
1058 "and is licensed under the GPL")); 1061 "and is licensed under the GPL"));
1059} 1062}
1060 1063
1061void TextEdit::doPrompt(bool b) { 1064void TextEdit::doPrompt(bool b) {
1062 promptExit=b; 1065 promptExit=b;
1063 Config cfg("TextEdit"); 1066 Config cfg("TextEdit");
1064 cfg.setGroup ( "View" ); 1067 cfg.setGroup ( "View" );
1065 cfg.writeEntry ( "PromptExit", b); 1068 cfg.writeEntry ( "PromptExit", b);
1066} 1069}
1067 1070
1068void TextEdit::doDesktop(bool b) { 1071void TextEdit::doDesktop(bool b) {
1069 openDesktop=b; 1072 openDesktop=b;
1070 Config cfg("TextEdit"); 1073 Config cfg("TextEdit");
1071 cfg.setGroup ( "View" ); 1074 cfg.setGroup ( "View" );
1072 cfg.writeEntry ( "OpenDesktop", b); 1075 cfg.writeEntry ( "OpenDesktop", b);
1073} 1076}
1074 1077
1075void TextEdit::doFilePerms(bool b) { 1078void TextEdit::doFilePerms(bool b) {
1076 filePerms=b; 1079 filePerms=b;
1077 Config cfg("TextEdit"); 1080 Config cfg("TextEdit");
1078 cfg.setGroup ( "View" ); 1081 cfg.setGroup ( "View" );
1079 cfg.writeEntry ( "FilePermissions", b); 1082 cfg.writeEntry ( "FilePermissions", b);
1080} 1083}
1081 1084
1082void TextEdit::editPasteTimeDate() { 1085void TextEdit::editPasteTimeDate() {
1083#ifndef QT_NO_CLIPBOARD 1086#ifndef QT_NO_CLIPBOARD
1084 QClipboard *cb = QApplication::clipboard(); 1087 QClipboard *cb = QApplication::clipboard();
1085 QDateTime dt = QDateTime::currentDateTime(); 1088 QDateTime dt = QDateTime::currentDateTime();
1086 cb->setText( dt.toString()); 1089 cb->setText( dt.toString());
1087 editor->paste(); 1090 editor->paste();
1088#endif 1091#endif
1089} 1092}
1090 1093
1091int TextEdit::savePrompt() 1094int TextEdit::savePrompt()
1092{ 1095{
1093 switch( QMessageBox::information( 0, (tr("Textedit")), 1096 switch( QMessageBox::information( 0, (tr("Textedit")),
1094 (tr("Textedit detected\n" 1097 (tr("Textedit detected\n"
1095 "you have unsaved changes\n" 1098 "you have unsaved changes\n"
1096 "Go ahead and save?\n")), 1099 "Go ahead and save?\n")),
1097 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) 1100 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
1098 { 1101 {
1099 case 0: 1102 case 0:
1100 { 1103 {
1101 return 1; 1104 return 1;
1102 } 1105 }
1103 break; 1106 break;
1104 1107
1105 case 1: 1108 case 1:
1106 { 1109 {
1107 return 2; 1110 return 2;
1108 } 1111 }
1109 break; 1112 break;
1110 1113
1111 case 2: 1114 case 2:
1112 { 1115 {
1113 return -1; 1116 return -1;
1114 } 1117 }
1115 break; 1118 break;
1116 }; 1119 };
1117 1120
1118 return 0; 1121 return 0;
1119} 1122}
1120 1123
1121void TextEdit::timerCrank() 1124void TextEdit::timerCrank()
1122{ 1125{
1123 if(featureAutoSave && edited1) 1126 if(featureAutoSave && edited1)
1124 { 1127 {
1125 if(currentFileName.isEmpty()) 1128 if(currentFileName.isEmpty())
1126 { 1129 {
1127 currentFileName = QDir::homeDirPath()+"/textedit.tmp"; 1130 currentFileName = QDir::homeDirPath()+"/textedit.tmp";
1128 saveAs(); 1131 saveAs();
1129 } 1132 }
1130 else 1133 else
1131 { 1134 {
1132// qDebug("autosave"); 1135// odebug << "autosave" << oendl;
1133 save(); 1136 save();
1134 } 1137 }
1135 setTimer(); 1138 setTimer();
1136 } 1139 }
1137} 1140}
1138 1141
1139void TextEdit::doTimer(bool b) 1142void TextEdit::doTimer(bool b)
1140{ 1143{
1141 Config cfg("TextEdit"); 1144 Config cfg("TextEdit");
1142 cfg.setGroup ( "View" ); 1145 cfg.setGroup ( "View" );
1143 cfg.writeEntry ( "autosave", b); 1146 cfg.writeEntry ( "autosave", b);
1144 featureAutoSave = b; 1147 featureAutoSave = b;
1145 nAutoSave->setOn(b); 1148 nAutoSave->setOn(b);
1146 if(b) 1149 if(b)
1147 { 1150 {
1148// qDebug("doTimer true"); 1151// odebug << "doTimer true" << oendl;
1149 setTimer(); 1152 setTimer();
1150 } 1153 }
1151// else 1154// else
1152// qDebug("doTimer false"); 1155// odebug << "doTimer false" << oendl;
1153} 1156}
1154 1157
1155void TextEdit::setTimer() 1158void TextEdit::setTimer()
1156{ 1159{
1157if(featureAutoSave) 1160if(featureAutoSave)
1158 { 1161 {
1159// qDebug("setting autosave"); 1162// odebug << "setting autosave" << oendl;
1160 QTimer *timer = new QTimer(this ); 1163 QTimer *timer = new QTimer(this );
1161 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); 1164 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
1162 timer->start( 300000, true); //5 minutes 1165 timer->start( 300000, true); //5 minutes
1163 } 1166 }
1164} 1167}
1165 1168
1166void TextEdit::gotoLine() { 1169void TextEdit::gotoLine() {
1167 if( editor->length() < 1) 1170 if( editor->length() < 1)
1168 return; 1171 return;
1169 QWidget *d = QApplication::desktop(); 1172 QWidget *d = QApplication::desktop();
1170 gotoEdit = new QLineEdit( 0, "Goto line"); 1173 gotoEdit = new QLineEdit( 0, "Goto line");
1171 1174
1172 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2)); 1175 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2));
1173 gotoEdit->setFrame(true); 1176 gotoEdit->setFrame(true);
1174 gotoEdit->show(); 1177 gotoEdit->show();
1175 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto())); 1178 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto()));
1176} 1179}
1177 1180
1178void TextEdit::doGoto() { 1181void TextEdit::doGoto() {
1179 QString number = gotoEdit->text(); 1182 QString number = gotoEdit->text();
1180 gotoEdit->hide(); 1183 gotoEdit->hide();
1181 1184
1182 if(gotoEdit) { 1185 if(gotoEdit) {
1183 delete gotoEdit; 1186 delete gotoEdit;
1184 gotoEdit = 0; 1187 gotoEdit = 0;
1185 } 1188 }
1186 1189
1187 bool ok; 1190 bool ok;
1188 int lineNumber = number.toInt(&ok, 10); 1191 int lineNumber = number.toInt(&ok, 10);
1189 if( editor->numLines() < lineNumber) 1192 if( editor->numLines() < lineNumber)
1190 QMessageBox::message(tr("Text Edit"),tr("Not enough lines")); 1193 QMessageBox::message(tr("Text Edit"),tr("Not enough lines"));
1191 else 1194 else
1192 { 1195 {
1193 editor->setCursorPosition(lineNumber, 0, false); 1196 editor->setCursorPosition(lineNumber, 0, false);
1194 } 1197 }
1195} 1198}