summaryrefslogtreecommitdiff
path: root/core/apps/textedit/textedit.cpp
Side-by-side diff
Diffstat (limited to 'core/apps/textedit/textedit.cpp') (more/less context) (show whitespace changes)
-rw-r--r--core/apps/textedit/textedit.cpp108
1 files changed, 39 insertions, 69 deletions
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index f6a869a..7b50a6c 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -1,107 +1,109 @@
/**********************************************************************
** 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
/*
useAdvancedfeatures =
1) do not prompt on cancel, even if text is edited.
2) prompt user is .desktop file
3) prompt user for File Permissions on saveAs
*/
#include "textedit.h"
#include "filePermissions.h"
-#include "fontDialog.h"
+//#include "fontDialog.h"
#include <opie/ofileselector.h>
#include <opie/ofiledialog.h>
+#include <opie/ofontselector.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/qcopenvelope_qws.h>
#include <qdatetime.h>
#include <qclipboard.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 <qcombo.h>
+#include <qlayout.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",
"] c #575757",
"^ c #585858",
"/ c #8A8A8A",
"( c #828282",
"_ c #6F6F6F",
": c #C9C9C9",
"< c #050505",
"[ c #292929",
"} c #777777",
"| c #616161",
"1 c #3A3A3A",
"2 c #BEBEBE",
"3 c #2C2C2C",
"4 c #7C7C7C",
"5 c #F6F6F6",
"6 c #FCFCFC",
"7 c #6B6B6B",
"8 c #959595",
"9 c #4F4F4F",
"0 c #808080",
@@ -267,244 +269,224 @@ TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
a->addTo( bar );
a->addTo( file );
a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
a->addTo( bar );
a->addTo( file );
a = new QAction( tr( "Save" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
file->insertSeparator();
a->addTo( file );
a = new QAction( tr( "Save As" ), QPixmap(( const char** ) filesave_xpm ) , QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
a->addTo( file );
a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
a->addTo( editBar );
a->addTo( edit );
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 );
#ifndef QT_NO_CLIPBOARD
a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) );
a->addTo( edit );
#endif
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() ) );
zout->addTo( font );
font->insertSeparator();
-#if 0
- QAction *ba = new QAction( tr("Bold"), QString::null, 0, this, 0 );
- connect( ba, SIGNAL( toggled(bool) ), this, SLOT( setBold(bool) ) );
- ba->setToggleAction(TRUE);
- ba->addTo( font );
-
- QAction *ia = new QAction( tr("Italic"), QString::null, 0, this, 0 );
- connect( ia, SIGNAL( toggled(bool) ), this, SLOT( setItalic(bool) ) );
- ia->setToggleAction(TRUE);
- ia->addTo( font );
-
- ba->setOn(defb);
- ia->setOn(defi);
-
- font->insertSeparator();
-#endif
-
QAction *wa = new QAction( tr("Wrap lines"), QString::null, 0, this, 0 );
connect( wa, SIGNAL( toggled(bool) ), this, SLOT( setWordWrap(bool) ) );
wa->setToggleAction(TRUE);
wa->addTo( font );
font->insertSeparator();
font->insertItem(tr("Font"), this, SLOT(changeFont()) );
font->insertSeparator();
nStart = new QAction( tr("Start with new file"), QString::null, 0, this, 0 );
connect( nStart, SIGNAL( toggled(bool) ), this, SLOT( changeStartConfig(bool) ) );
nStart->setToggleAction(TRUE);
nStart->addTo( font );
nAdvanced = new QAction( tr("Advanced features"), QString::null, 0, this, 0 );
connect( nAdvanced, SIGNAL( toggled(bool) ), this, SLOT( doAdvanced(bool) ) );
nAdvanced->setToggleAction(TRUE);
nAdvanced->addTo( font );
- if(cfg.readBoolEntry("AdvancedFeatures")) {
- qDebug("using advanced features");
- useAdvancedFeatures = true;
- nAdvanced->setOn(TRUE);
- } else
- useAdvancedFeatures = false;
font->insertSeparator();
font->insertItem(tr("About"), this, SLOT( doAbout()) );
mb->insertItem( tr( "File" ), file );
mb->insertItem( tr( "Edit" ), edit );
mb->insertItem( tr( "View" ), font );
searchBar = new QPEToolBar(this);
addToolBar( searchBar, "Search", QMainWindow::Top, TRUE );
searchBar->setHorizontalStretchable( TRUE );
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( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
a->addTo( edit );
searchBar->hide();
editor = new QpeEditor( this );
setCentralWidget( editor );
editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
connect( editor, SIGNAL( textChanged() ), this, SLOT( editorChanged() ) );
-// resize( 200, 300 );
+ Config cfg("TextEdit");
+
+ cfg. setGroup ( "Font" );
-// 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()) );
+ QString family = cfg. readEntry ( "Family", defaultFont. family ( ));
+ int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( ));
+ int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( ));
+ bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( ));
- defaultFont = fdb.font(family,style,i_size,charSet);
+ defaultFont = QFont ( family, size, weight, italic );
editor->setFont( defaultFont);
- wa->setOn(wrap);
updateCaption();
cfg.setGroup("View");
+
+ useAdvancedFeatures = cfg. readBoolEntry ( "AdvancedFeatures", false );
+
+ if ( useAdvancedFeatures )
+ nAdvanced-> setOn ( true );
+
+ bool wrap = cfg. readBoolEntry ( "Wrap", true );
+ wa-> setOn ( wrap );
+ setWordWrap ( wrap );
+
if(cfg.readEntry("startNew","TRUE") == "TRUE") {
nStart->setOn(TRUE);
fileNew();
} else {
fileOpen();
}
viewSelection = cfg.readNumEntry( "FileView", 0 );
}
TextEdit::~TextEdit() {
if( edited1 & !useAdvancedFeatures )
saveAs();
}
void TextEdit::cleanUp() {
qDebug("cleanUp");// save();
+
Config cfg("TextEdit");
- cfg.setGroup("View");
+ cfg. setGroup ( "Font" );
QFont f = editor->font();
- cfg.writeEntry("FontSize",f.pointSize());
- cfg.writeEntry("Bold",f.bold());
+ cfg. writeEntry ( "Family", f. family ( ));
+ cfg. writeEntry ( "Size", f. pointSize ( ));
+ cfg. writeEntry ( "Weight", f. weight ( ));
cfg.writeEntry("Italic",f.italic());
+
+ cfg. setGroup ( "View" );
cfg.writeEntry("Wrap",editor->wordWrap() == QMultiLineEdit::WidgetWidth);
cfg.writeEntry( "FileView", viewSelection );
+ cfg. writeEntry ( "AdvancedFeatures", useAdvancedFeatures );
}
void TextEdit::accept() {
if( edited1)
saveAs();
exit(0);
}
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;
for (int i=0; i<nfontsizes; i++) {
if ( fontsize[i] == sz ) {
s = sz;
break;
} else if ( round_down_not_up ) {
if ( fontsize[i] < sz )
s = fontsize[i];
} else {
if ( fontsize[i] > sz ) {
s = fontsize[i];
break;
}
}
}
QFont f = editor->font();
f.setPointSize(s);
editor->setFont(f);
zin->setEnabled(s != fontsize[nfontsizes-1]);
zout->setEnabled(s != fontsize[0]);
}
void TextEdit::setBold(bool y) {
QFont f = editor->font();
f.setBold(y);
editor->setFont(f);
}
@@ -855,136 +837,124 @@ bool TextEdit::saveAs() {
edited = false;
if(caption().left(1)=="*")
setCaption(caption().right(caption().length()-1));
return true;
}
qDebug("returning false");
return false;
} //end saveAs
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;
}
if(s.left(1) == "/")
s = s.right(s.length()-1);
setCaption( s + " - " + tr("Text Editor") );
}
}
void TextEdit::setDocument(const QString& fileref) {
bFromDocView = TRUE;
openFile(fileref);
editor->setEdited(TRUE);
edited1=FALSE;
edited=TRUE;
doSearchBar();
}
void TextEdit::closeEvent( QCloseEvent *e ) {
bFromDocView = FALSE;
e->accept();
}
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);
+ QDialog *d = new QDialog ( this, "FontDialog", true );
+ d-> setCaption ( tr( "Choose font" ));
+ QBoxLayout *lay = new QVBoxLayout ( d );
+ OFontSelector *ofs = new OFontSelector ( true, d );
+ lay-> addWidget ( ofs );
+ ofs-> setSelectedFont ( editor-> font ( ));
- FontDialog *fontDlg;
- fontDlg=new FontDialog(this,tr("FontDialog"),TRUE);
-
- fontDlg->exec();
-
- QFont myFont=fontDlg->selectedFont;
- editor->setFont( myFont);
- delete fontDlg;
+ d-> showMaximized ( );
+ if ( d-> exec ( ) == QDialog::Accepted )
+ editor-> setFont ( ofs-> selectedFont ( ));
+ delete d;
}
void TextEdit::editDelete() {
switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Do you really want<BR>to <B>delete</B> the current file\nfrom the disk?<BR>This is <B>irreversable!!</B>"),tr("Yes"),tr("No"),0,0,1) ) {
case 0:
if(doc) {
doc->removeFiles();
clear();
setCaption( tr("Text Editor") );
}
break;
case 1:
// exit
break;
};
}
void TextEdit::changeStartConfig( bool b ) {
Config cfg("TextEdit");
cfg.setGroup("View");
if(b) {
qDebug("bool");
cfg.writeEntry("startNew","TRUE");
} else {
cfg.writeEntry("startNew","FALSE");
}
update();
}
void TextEdit::editorChanged() {
if(editor->edited() && edited && !edited1) {
setCaption( "*"+caption());
edited1=TRUE;
}
edited=TRUE;
}
void TextEdit::receive(const QCString&msg, const QByteArray&) {
qDebug("QCop "+msg);
if ( msg == "setDocument(QString)" ) {
qDebug("bugger all");
}
}
void TextEdit::doAbout() {
QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>"
"2000 Trolltech AS, and<BR>"
"2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>"
"and is licensed under the GPL"));
}
void TextEdit::doAdvanced(bool b) {
useAdvancedFeatures=b;
- Config cfg("TextEdit");
- cfg.setGroup("View");
- cfg.writeEntry("AdvancedFeatures",b);
}
void TextEdit::editPasteTimeDate() {
#ifndef QT_NO_CLIPBOARD
QClipboard *cb = QApplication::clipboard();
QDateTime dt = QDateTime::currentDateTime();
cb->setText( dt.toString());
editor->paste();
#endif
}