-rw-r--r-- | core/apps/textedit/fileBrowser.cpp | 11 | ||||
-rw-r--r-- | core/apps/textedit/fileSaver.cpp | 24 | ||||
-rw-r--r-- | core/apps/textedit/fileSaver.h | 5 | ||||
-rw-r--r-- | core/apps/textedit/textedit.cpp | 102 | ||||
-rw-r--r-- | core/apps/textedit/textedit.h | 7 |
5 files changed, 112 insertions, 37 deletions
diff --git a/core/apps/textedit/fileBrowser.cpp b/core/apps/textedit/fileBrowser.cpp index 82ccf2c..bb420e6 100644 --- a/core/apps/textedit/fileBrowser.cpp +++ b/core/apps/textedit/fileBrowser.cpp @@ -97,64 +97,67 @@ void fileBrowser::populateList() } void fileBrowser::upDir() { // qDebug(currentDir.canonicalPath()); } void fileBrowser::listDoubleClicked(QListViewItem *selectedItem) { } // you may want to switch these 2 functions. I like single clicks void fileBrowser::listClicked(QListViewItem *selectedItem) { QString strItem=selectedItem->text(0); QString strSize=selectedItem->text(1); -// qDebug("strItem is "+strItem); +// qDebug("strItem is "+strItem); strSize.stripWhiteSpace(); // qDebug(strSize); if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if symlink // is symlink QString strItem2=strItem.right( (strItem.length()-strItem.find("->",0,TRUE)) -4); // qDebug("strItem symlink is "+strItem2); if(QDir(strItem2).exists() ) { currentDir.cd(strItem2, TRUE); populateList(); } } else { // not a symlink if(strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) { if(QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem)).exists() ) { strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); currentDir.cd(strItem,FALSE); // qDebug("Path is "+strItem); populateList(); } else { currentDir.cdUp(); populateList(); } if(QDir(strItem).exists()){ currentDir.cd(strItem, TRUE); populateList(); } - } else + } else { + strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); if( QFile::exists(strItem ) ) { -// qDebug("We found our files!!"); +//currentDir.canonicalPath() + qDebug("We found our files!!"+strItem); OnOK(); + } } //end not symlink chdir(strItem.latin1()); } } void fileBrowser::OnOK() { QListViewItemIterator it1( ListView); for ( ; it1.current(); ++it1 ) { if ( it1.current()->isSelected() ) { selectedFileName=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+it1.current()->text(0)); -// qDebug("selected filename is "+selectedFileName); + qDebug("selected filename is "+selectedFileName); fileList.append( selectedFileName ); } } accept(); } diff --git a/core/apps/textedit/fileSaver.cpp b/core/apps/textedit/fileSaver.cpp index 88608cc..af51fc3 100644 --- a/core/apps/textedit/fileSaver.cpp +++ b/core/apps/textedit/fileSaver.cpp @@ -37,33 +37,33 @@ fileSaver::fileSaver( QWidget* parent, const char* name, bool modal, WFlags fl dirLabel->setText(currentDir.canonicalPath()); dirLabel->setGeometry(10,4,230,30); ListView = new QListView( this, "ListView" ); ListView->addColumn( tr( "Name" ) ); ListView->setColumnWidth(0,140); ListView->setSorting( 2, FALSE); ListView->addColumn( tr( "Size" ) ); ListView->setColumnWidth(1,59); // ListView->setMultiSelection(true); // ListView->setSelectionMode(QListView::Extended); ListView->setAllColumnsShowFocus( TRUE ); ListView->setGeometry( QRect( 10, 35, 220, 160 ) ); fileEdit= new QLineEdit(this); - fileEdit->setGeometry( QRect( 10, 230, 200, 25)); + fileEdit->setGeometry( QRect( 10, 200, 200, 22)); fileEdit->setText( tmpFileName); // signals and slots connections connect( ListView, SIGNAL(doubleClicked( QListViewItem*)), SLOT(listDoubleClicked(QListViewItem *)) ); connect( ListView, SIGNAL(pressed( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); // tmpFileName=fi.FilePath(); // qDebug( tmpFileName); currentDir.setPath( QDir::currentDirPath() ); populateList(); } fileSaver::~fileSaver() { } @@ -134,39 +134,49 @@ void fileSaver::listClicked(QListViewItem *selectedItem) } } else { // not a symlink if(strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) { if(QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem)).exists() ) { strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); currentDir.cd(strItem,FALSE); // qDebug("Path is "+strItem); populateList(); } else { currentDir.cdUp(); populateList(); } if(QDir(strItem).exists()){ currentDir.cd(strItem, TRUE); populateList(); } - } // else + } // else // if( QFile::exists(strItem ) ) { // qDebug("We found our files!!"); // OnOK(); } //end not symlink chdir(strItem.latin1()); } -void fileSaver::OnOK() +void fileSaver::closeEvent( QCloseEvent *e ) { -// reject(); + if(e->isAccepted()) { + e->accept(); + } else { + qDebug("not accepted"); + done(-1); + } } void fileSaver::accept() { selectedFileName = fileEdit->text(); - selectedFileName = currentDir.canonicalPath()+ selectedFileName; - qDebug("goint to save "+selectedFileName); - reject(); + QString path = currentDir.canonicalPath()+"/" + selectedFileName; + if( path.find("//",0,TRUE) ==-1 ) { + selectedFileName = path; + } else { + selectedFileName = currentDir.canonicalPath()+selectedFileName; + } + qDebug("going to save "+selectedFileName); + done(1); } diff --git a/core/apps/textedit/fileSaver.h b/core/apps/textedit/fileSaver.h index f496270..4a38a65 100644 --- a/core/apps/textedit/fileSaver.h +++ b/core/apps/textedit/fileSaver.h @@ -44,28 +44,29 @@ public: QPushButton* buttonOk; QListView* ListView; QPushButton* buttonCancel; QLabel *dirLabel; QString selectedFileName, filterStr; QDir currentDir; QFile file; QStringList fileList; QListViewItem * item; public slots: private: private slots: - void accept(); + void accept(); void upDir(); void listDoubleClicked(QListViewItem *); void listClicked(QListViewItem *); - void OnOK(); + void closeEvent( QCloseEvent * ); + protected slots: protected: }; #endif // FILESAVER_H diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index 8004771..e41c69d 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp @@ -286,32 +286,33 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); a->addTo( editBar ); a->addTo( edit ); a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); a->addTo( editBar ); a->addTo( edit ); a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); edit->insertSeparator(); a->addTo( bar ); a->addTo( edit ); + int defsize; bool defb, defi, wrap; Config cfg("TextEdit"); cfg.setGroup("View"); defsize = cfg.readNumEntry("FontSize",10); defb = cfg.readBoolEntry("Bold",FALSE); defi = cfg.readBoolEntry("Italic",FALSE); wrap = cfg.readBoolEntry("Wrap",TRUE); zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); zin->addTo( font ); zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); @@ -355,32 +356,37 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) searchEdit = new QLineEdit( searchBar, "searchEdit" ); searchBar->setStretchableWidget( searchEdit ); connect( searchEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( search() ) ); a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); a->addTo( searchBar ); a->addTo( edit ); a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); a->addTo( searchBar ); + edit->insertSeparator(); + a = new QAction( tr( "Delete" ), Resource::loadPixmap( "delete" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); + a->addTo( edit ); + searchBar->hide(); editorStack = new QWidgetStack( this ); setCentralWidget( editorStack ); searchVisible = FALSE; fileSelector = new FileSelector( "text/*", editorStack, "fileselector" , TRUE, TRUE); //buggy connect( fileSelector, SIGNAL( closeMe() ), this, SLOT( showEditTools() ) ); connect( fileSelector, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); connect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( openFile( const DocLnk & ) ) ); // fileOpen(); editor = new QpeEditor( editorStack ); editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); editorStack->addWidget( editor, get_unique_id() ); @@ -396,33 +402,33 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) QString family = cfg.readEntry("Family", fontInfo.family()); QString style = cfg.readEntry("Style", fdb.styleString(defaultFont)); int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); defaultFont = fdb.font(family,style,i_size,charSet); editor->setFont( defaultFont); wa->setOn(wrap); updateCaption(); fileNew(); } TextEdit::~TextEdit() { - saveAs(); +// saveAs(); Config cfg("TextEdit"); cfg.setGroup("View"); QFont f = editor->font(); cfg.writeEntry("FontSize",f.pointSize()); cfg.writeEntry("Bold",f.bold()); cfg.writeEntry("Italic",f.italic()); cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth); } void TextEdit::zoomIn() { setFontSize(editor->font().pointSize()+1,FALSE); } void TextEdit::zoomOut() @@ -496,58 +502,57 @@ void TextEdit::fileOpen() // "\nContinue anyway?" ), // QMessageBox::Yes|QMessageBox::Escape, // QMessageBox::No|QMessageBox::Default ) // != QMessageBox::Yes ) // return; // else { // delete doc; // doc = 0; // } // } menu->hide(); editBar->hide(); searchBar->hide(); clearWState (WState_Reserved1 ); editorStack->raiseWidget( fileSelector ); fileSelector->reread(); - updateCaption(currentFileName); + updateCaption(); } void TextEdit::newFileOpen() { - fileBrowser *browseForFiles; browseForFiles=new fileBrowser(this,"fileBrowser",TRUE,0, "*"); - if( browseForFiles->exec()!= 0 ) { + if( browseForFiles->exec() != -1 ) { QString selFile= browseForFiles->selectedFileName; QStringList fileList=browseForFiles->fileList; qDebug(selFile); QStringList::ConstIterator f; QString fileTemp; for ( f = fileList.begin(); f != fileList.end(); f++ ) { fileTemp = *f; fileTemp.right( fileTemp.length()-5); QString fileName = fileTemp; if( fileName != "Unnamed" || fileName != "Empty Text" ) { currentFileName = fileName; // qDebug("please open "+currentFileName); openFile(fileName ); } } } delete browseForFiles; - + editor->setEdited( true ); } #if 0 void TextEdit::slotFind() { FindDialog frmFind( "Text Editor", this ); connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)), editor, SLOT(slotDoFind( const QString&,bool,bool))); //case sensitive, backwards, [category] connect( editor, SIGNAL(notFound()), &frmFind, SLOT(slotNotFound()) ); connect( editor, SIGNAL(searchWrapped()), &frmFind, SLOT(slotWrapAround()) ); @@ -604,156 +609,191 @@ void TextEdit::findClose() } void TextEdit::search() { editor->find( searchEdit->text(), FALSE, FALSE ); } void TextEdit::newFile( const DocLnk &f ) { DocLnk nf = f; nf.setType("text/plain"); clear(); editorStack->raiseWidget( editor ); setWState (WState_Reserved1 ); editor->setFocus(); doc = new DocLnk(nf); + qDebug("newFile "+currentFileName); updateCaption(currentFileName); } void TextEdit::openFile( const QString &f ) { bFromDocView = TRUE; DocLnk nf; nf.setType("text/plain"); nf.setFile(f); + currentFileName=f; + qDebug("openFile string"+currentFileName); + openFile(nf); showEditTools(); // Show filename in caption QString name = f; int sep = name.findRev( '/' ); if ( sep > 0 ) name = name.mid( sep+1 ); updateCaption( name ); } void TextEdit::openFile( const DocLnk &f ) { // clear(); bFromDocView = TRUE; FileManager fm; QString txt; + currentFileName=f.name(); + qDebug("openFile doclnk " + currentFileName); if ( !fm.loadFile( f, txt ) ) { // ####### could be a new file qDebug( "Cannot open file" ); //return; } fileNew(); if ( doc ) delete doc; doc = new DocLnk(f); editor->setText(txt); - editor->setEdited(FALSE); - updateCaption(currentFileName); + editor->setEdited( false); + qDebug("openFile doclnk "+currentFileName); + doc->setName(currentFileName); + updateCaption(); } void TextEdit::showEditTools() { // if ( !doc ) // close(); // clear(); fileSelector->hide(); menu->show(); editBar->show(); if ( searchVisible ) searchBar->show(); // updateCaption(); editorStack->raiseWidget( editor ); setWState (WState_Reserved1 ); } +/*! + unprompted save */ bool TextEdit::save() { + qDebug("saveFile "+currentFileName); + QString rt = editor->text(); doc->setName( currentFileName); FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } - delete doc; - doc = 0; +// if(doc) +// delete doc; +// doc = 0; editor->setEdited( false ); return true; - } +/*! + prompted save */ bool TextEdit::saveAs() { - // case of nothing to save... - if ( !doc || !bFromDocView) - return true; + qDebug("saveAsFile "+currentFileName); + + // case of nothing to save... /// there's always something to save +// if ( !doc )//|| !bFromDocView) +// { +// qDebug("no doc"); +// return true; +// } if ( !editor->edited() ) { delete doc; doc = 0; return true; } QString rt = editor->text(); qDebug(currentFileName); if( currentFileName.isEmpty() || currentFileName == "Unnamed") { - + qDebug("do silly TT filename thing"); if ( doc->name().isEmpty() ) { QString pt = rt.simplifyWhiteSpace(); int i = pt.find( ' ' ); QString docname = pt; if ( i > 0 ) docname = pt.left( i ); // remove "." at the beginning while( docname.startsWith( "." ) ) docname = docname.mid( 1 ); docname.replace( QRegExp("/"), "_" ); // cut the length. filenames longer than that don't make sense and something goes wrong when they get too long. if ( docname.length() > 40 ) docname = docname.left(40); if ( docname.isEmpty() ) - docname = "Empty Text"; + docname = "Unnamed"; doc->setName(docname); currentFileName=docname; } } - fileSaver *fileSaveDlg; fileSaveDlg=new fileSaver(this,"SaveFile",TRUE,0, currentFileName); - if( fileSaveDlg->exec() != 0 ) { + qDebug("wanna save filename "+currentFileName); + fileSaveDlg->exec(); + if( fileSaveDlg->result() == 1 ) { QString fileNm=fileSaveDlg->selectedFileName; - qDebug("save filename "+fileNm); - doc->setName(fileNm); - updateCaption(fileNm); + qDebug("saving filename "+fileNm); + QFileInfo fi(fileNm); + currentFileName=fi.fileName(); + if(doc) { + qDebug("doclnk exists"); +// QString file = doc->file(); +// doc->removeFiles(); + delete doc; + DocLnk nf; + nf.setType("text/plain"); + nf.setFile( fileNm); + doc = new DocLnk(nf); +// editor->setText(rt); + qDebug("openFile doclnk "+currentFileName); } - delete fileSaveDlg; - + doc->setName( currentFileName); + updateCaption( currentFileName); + FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } - delete doc; - doc = 0; +// delete doc; +// doc = 0; editor->setEdited( false ); + } + if(fileSaveDlg) + delete fileSaveDlg; return true; } void TextEdit::clear() { delete doc; doc = 0; editor->clear(); } void TextEdit::updateCaption( const QString &name ) { if ( !doc ) setCaption( tr("Text Editor") ); else { QString s = name; @@ -805,16 +845,30 @@ void TextEdit::changeFont() { int i_size = cfg.readNumEntry("Size", fontInfo.pointSize()/10); QString charSet = cfg.readEntry("CharSet", QFont::encodingName( fontInfo.charSet()) ); defaultFont = fdb.font(family,style,i_size,charSet); FontDialog *fontDlg; fontDlg=new FontDialog(this,"FontDialog",TRUE); fontDlg->exec(); QFont myFont=fontDlg->selectedFont; editor->setFont( myFont); delete fontDlg; } +void TextEdit::editDelete() +{ + switch ( QMessageBox::warning(this,"Text Editor","Do you really want\nto delete the current file\nfrom the disk?\nThis is irreversable!!","Yes","No",0,0,1) ) { + case 0: + if(doc) { + doc->removeFiles(); + clear(); + } + break; + case 1: + // exit + break; + }; +} diff --git a/core/apps/textedit/textedit.h b/core/apps/textedit/textedit.h index f9eb241..781061a 100644 --- a/core/apps/textedit/textedit.h +++ b/core/apps/textedit/textedit.h @@ -11,32 +11,35 @@ ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ // additions made by L.J. Potter Sun 02-17-2002 22:27:46 #ifndef TEXTEDIT_H #define TEXTEDIT_H #define QTEXTEDIT_OPEN_API +#include "fileBrowser.h" +#include "fileSaver.h" + #include <qpe/filemanager.h> #include <qmainwindow.h> #include <qmultilineedit.h> #include <qlist.h> #include <qmap.h> class QWidgetStack; class QToolButton; class QPopupMenu; class QToolBar; class QLineEdit; class QAction; class FileSelector; class QpeEditor; @@ -55,53 +58,57 @@ protected: private slots: void setDocument(const QString&); void changeFont(); void fileNew(); void fileRevert(); void fileOpen(); void newFileOpen(); bool save(); bool saveAs(); void editCut(); void editCopy(); void editPaste(); void editFind(); + void editDelete(); void findNext(); void findClose(); void search(); void accept(); void newFile( const DocLnk & ); void openFile( const DocLnk & ); void showEditTools(); void zoomIn(); void zoomOut(); void setBold(bool y); void setItalic(bool y); void setWordWrap(bool y); private: void colorChanged( const QColor &c ); void clear(); void updateCaption( const QString &name=QString::null ); void setFontSize(int sz, bool round_down_not_up); private: QWidgetStack *editorStack; FileSelector *fileSelector; + fileSaver *fileSaveDlg; + fileBrowser *browseForFiles; + QpeEditor* editor; QToolBar *menu, *editBar, *searchBar; QLineEdit *searchEdit; DocLnk *doc; bool searchVisible; bool bFromDocView; QAction *zin, *zout; QString currentFileName; }; #endif |