Diffstat (limited to 'core/apps/textedit/textedit.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/apps/textedit/textedit.cpp | 75 |
1 files changed, 46 insertions, 29 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index c869dc9..515fcdc 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp @@ -1,73 +1,77 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** 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. ** **********************************************************************/ // changes added by L. J. Potter Sun 02-17-2002 21:31:31 #include "textedit.h" #include "fileBrowser.h" #include "fileSaver.h" +#include "filePermissions.h" #include "fontDialog.h" #include <qpe/fontdatabase.h> #include <qpe/global.h> #include <qpe/fileselector.h> #include <qpe/applnk.h> #include <qpe/resource.h> #include <qpe/config.h> #include <qpe/qpeapplication.h> #include <qpe/qpemenubar.h> #include <qpe/qpetoolbar.h> //#include <qpe/finddialog.h> #include <qstringlist.h> #include <qaction.h> #include <qcolordialog.h> #include <qfileinfo.h> #include <qlineedit.h> #include <qmessagebox.h> #include <qobjectlist.h> #include <qpopupmenu.h> #include <qspinbox.h> #include <qtoolbutton.h> #include <qwidgetstack.h> +#include <qcheckbox.h> +#include <unistd.h> +#include <sys/stat.h> #include <stdlib.h> //getenv /* XPM */ static char * filesave_xpm[] = { "16 16 78 1", " c None", ". c #343434", "+ c #A0A0A0", "@ c #565656", "# c #9E9E9E", "$ c #525252", "% c #929292", "& c #676767", "* c #848484", "= c #666666", "- c #D8D8D8", "; c #FFFFFF", "> c #DBDBDB", ", c #636363", "' c #989898", ") c #2D2D2D", "! c #909090", "~ c #AEAEAE", "{ c #EAEAEA", @@ -394,49 +398,49 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) resize( 200, 300 ); // setFontSize(defsize,TRUE); FontDatabase fdb; QFont defaultFont=editor->font(); QFontInfo fontInfo(defaultFont); cfg.setGroup("Font"); 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(); +// save(); 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() { setFontSize(editor->font().pointSize()-1,TRUE); } void TextEdit::setFontSize(int sz, bool round_down_not_up) { int s=10; @@ -673,140 +677,152 @@ void TextEdit::openFile( const DocLnk &f ) 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() { QString file = doc->file(); QString name= doc->name(); + QString rt = editor->text(); currentFileName= name ; qDebug("saveFile "+currentFileName); + struct stat buf; + mode_t mode; + lstat(file.latin1(), &buf); + mode = buf.st_mode; + doc->setName( name); FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } -// if(doc) -// delete doc; -// doc = 0; editor->setEdited( false ); + + chmod( file.latin1(), mode); return true; } /*! prompted save */ bool TextEdit::saveAs() { - qDebug("saveAsFile "+currentFileName); +// 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 = "Unnamed"; doc->setName(docname); currentFileName=docname; } } + fileSaveDlg=new fileSaver(this,"SaveFile",TRUE,0, currentFileName); qDebug("wanna save filename "+currentFileName); fileSaveDlg->exec(); if( fileSaveDlg->result() == 1 ) { - QString fileNm=fileSaveDlg->selectedFileName; - qDebug("saving filename "+fileNm); - QFileInfo fi(fileNm); - currentFileName=fi.fileName(); - if(doc) { - qDebug("doclnk exists"); + QString fileNm=fileSaveDlg->selectedFileName; + 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); + delete doc; + DocLnk nf; + nf.setType("text/plain"); + nf.setFile( fileNm); + doc = new DocLnk(nf); // editor->setText(rt); - qDebug("openFile doclnk "+currentFileName); - } - doc->setName( currentFileName); - updateCaption( currentFileName); - - FileManager fm; - if ( !fm.saveFile( *doc, rt ) ) { - return false; - } -// delete doc; -// doc = 0; - editor->setEdited( false ); + qDebug("openFile doclnk "+currentFileName); + doc->setName( currentFileName); + updateCaption( currentFileName); + + FileManager fm; + if ( !fm.saveFile( *doc, rt ) ) { + return false; + } + if( fileSaveDlg->filePermCheck->isChecked() ) { + filePermissions *filePerm; + filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)fileNm); + filePerm->exec(); + editor->setEdited( false ); + if( filePerm) + delete filePerm; + } + } } + if(fileSaveDlg) - delete 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; if ( s.isNull() ) s = doc->name(); if ( s.isEmpty() ) { s = tr( "Unnamed" ); currentFileName=s; } setCaption( s + " - " + tr("Text Editor") ); @@ -814,48 +830,49 @@ void TextEdit::updateCaption( const QString &name ) } void TextEdit::setDocument(const QString& fileref) { bFromDocView = TRUE; openFile(DocLnk(fileref)); // showEditTools(); } void TextEdit::closeEvent( QCloseEvent *e ) { if ( editorStack->visibleWidget() == fileSelector && !bFromDocView ) { e->ignore(); repaint(); // fileRevert(); } else { bFromDocView = FALSE; e->accept(); } } void TextEdit::accept() { + save(); close(); // fileOpen(); //godamn thats obnoxious! lemme out!!! } void TextEdit::changeFont() { FontDatabase fdb; QFont defaultFont=editor->font(); QFontInfo fontInfo(defaultFont); Config cfg("TextEdit"); cfg.setGroup("Font"); 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); FontDialog *fontDlg; fontDlg=new FontDialog(this,"FontDialog",TRUE); fontDlg->exec(); QFont myFont=fontDlg->selectedFont; editor->setFont( myFont); |