-rw-r--r-- | core/apps/textedit/fileBrowser.cpp | 634 | ||||
-rw-r--r-- | core/apps/textedit/fileBrowser.h | 120 | ||||
-rw-r--r-- | core/apps/textedit/fileSaver.cpp | 271 | ||||
-rw-r--r-- | core/apps/textedit/fileSaver.h | 75 | ||||
-rw-r--r-- | core/apps/textedit/textedit.cpp | 17 | ||||
-rw-r--r-- | core/apps/textedit/textedit.h | 4 | ||||
-rw-r--r-- | core/apps/textedit/textedit.pro | 4 |
7 files changed, 7 insertions, 1118 deletions
diff --git a/core/apps/textedit/fileBrowser.cpp b/core/apps/textedit/fileBrowser.cpp deleted file mode 100644 index 3798f90..0000000 --- a/core/apps/textedit/fileBrowser.cpp +++ b/dev/null @@ -1,634 +0,0 @@ -/**************************************************************************** -** copyright 2001 ljp ljp@llornkcor.com -** Created: Fri Dec 14 08:16:46 2001 -** -** 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. -** -****************************************************************************/ -#define QTOPIA_INTERNAL_MIMEEXT -#include "fileBrowser.h" -//#include "inputDialog.h" - -#include <qpe/config.h> -#include <qpe/resource.h> -#include <qpe/fileselector.h> -#include <qpe/qpeapplication.h> -#include <qpe/menubutton.h> -#include <qpe/mimetype.h> - -#include <qdict.h> -#include <qwidgetstack.h> -#include <qlistview.h> -#include <qcombo.h> -#include <qpushbutton.h> -#include <qfile.h> -#include <qmessagebox.h> -#include <qlayout.h> -#include <unistd.h> -#include <qpopupmenu.h> -#include <qlineedit.h> -#include <qstringlist.h> - -#include <unistd.h> -#include <stdlib.h> - -static int u_id = 1; -static int get_unique_id() -{ - return u_id++; -} - -fileBrowser::fileBrowser( QWidget* parent, const char* name, bool modal, WFlags fl , const QString mimeFilter ) - : QDialog( parent, name, modal, fl ) -{ - if ( !name ) - setName( "fileBrowser" ); - setCaption(tr( name ) ); - -// getMimeTypes(); - -// mimeType = mimeFilter; -// MimeType mt( mimeType); - -// if( mt.extension().isEmpty()) { - -// QStringList filterList; -// filterList=QStringList::split(";",mimeFilter,FALSE); - -// for ( QStringList::Iterator it = filterList.begin(); it != filterList.end(); ++it ) { -// printf( "%s \n", (*it).latin1() ); -// } - -// filterStr = mimeFilter.right(mimeFilter.length() - mimeFilter.find("/",0,TRUE) - 1);// "*"; - -// qDebug(filterStr); -// } else { - filterStr = "*";//+ mt.extension(); -// qDebug("description "+mt.description()); -// qDebug( "id "+mt.id()); -// qDebug("extension "+mt.extension()); -// } -// channel = new QCopChannel( "QPE/fileDialog", this ); -// connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), -// this, SLOT(receive(const QCString&, const QByteArray&)) ); - - QGridLayout *layout = new QGridLayout( this ); - layout->setSpacing( 4 ); - layout->setMargin( 4 ); - - dirPathCombo = new QComboBox( FALSE, this, "dirPathCombo" ); - dirPathCombo->setEditable(TRUE); - - connect( dirPathCombo, SIGNAL( activated( const QString & ) ), - this, SLOT( dirPathComboActivated( const QString & ) ) ); - - connect( dirPathCombo->lineEdit(), SIGNAL( returnPressed( ) ), - this, SLOT( dirPathEditPressed( ) ) ); - - dirPathStringList << "/"; -// we can get the storage here - - layout->addMultiCellWidget( dirPathCombo, 0, 0, 0, 4 ); - - cdUpButton = new QPushButton(Resource::loadIconSet("up"),"",this,"cdUpButton"); - cdUpButton ->setMinimumSize( QSize( 20, 20 ) ); - cdUpButton ->setMaximumSize( QSize( 20, 20 ) ); - connect( cdUpButton ,SIGNAL(released()),this,SLOT( upDir()) ); - cdUpButton ->setFlat(TRUE); - layout->addMultiCellWidget( cdUpButton, 0, 0, 5, 5 ); - - docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",this,"docsButton"); - docButton->setMinimumSize( QSize( 20, 20 ) ); - docButton->setMaximumSize( QSize( 20, 20 ) ); - connect( docButton,SIGNAL(released()),this,SLOT( docButtonPushed()) ); - docButton->setFlat(TRUE); - layout->addMultiCellWidget( docButton, 0, 0, 6, 6 ); - - homeButton = new QPushButton( Resource::loadIconSet("home"),"",this,"homeButton"); - homeButton->setMinimumSize( QSize( 20, 20 ) ); - homeButton->setMaximumSize( QSize( 20, 20 ) ); - connect(homeButton,SIGNAL(released()),this,SLOT(homeButtonPushed()) ); - homeButton->setFlat(TRUE); - layout->addMultiCellWidget( homeButton, 0, 0, 7, 7 ); - - FileStack = new QWidgetStack( this ); - - ListView = new QListView( this, "ListView" ); -// ListView->setMinimumSize( QSize( 100, 25 ) ); - ListView->addColumn( tr( "Name" ) ); - ListView->setColumnWidth(0,120); - ListView->setSorting( 2, FALSE); - ListView->addColumn( tr( "Size" ) ); - ListView->setColumnWidth(1,-1); - ListView->addColumn( "Date",-1); - - ListView->setColumnWidthMode(0,QListView::Manual); - ListView->setColumnAlignment(1,QListView::AlignRight); - ListView->setColumnAlignment(2,QListView::AlignRight); - ListView->setAllColumnsShowFocus( TRUE ); - - QPEApplication::setStylusOperation( ListView->viewport(),QPEApplication::RightOnHold); - connect( ListView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), - this, SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); - - connect( ListView, SIGNAL( clicked( QListViewItem*)), SLOT(listClicked(QListViewItem *)) ); - - FileStack->addWidget( ListView, get_unique_id() ); -mimeType="text/plain"; - fileSelector = new FileSelector( mimeType, FileStack, "fileselector" , FALSE, FALSE); //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( docOpen( const DocLnk & ) ) ); - layout->addMultiCellWidget( FileStack, 1, 1, 0, 7 ); - - SelectionCombo = new QComboBox( FALSE, this, "SelectionCombo" ); - SelectionCombo->insertItem( tr( "Documents" ) ); - SelectionCombo->insertItem( tr( "All files" ) ); - SelectionCombo->insertItem( tr( "Hidden files" ) ); -// SelectionCombo->setMaximumWidth(120); - layout->addMultiCellWidget( SelectionCombo, 2, 2, 0, 3 ); - - connect( SelectionCombo, SIGNAL( activated( const QString & ) ), - this, SLOT( selectionChanged( const QString & ) ) ); - - typemb = new MenuButton(this); - typemb->setLabel(tr("Type: %1")); - typemb->setMinimumWidth(110); - typemb->setFixedHeight(22); - layout->addMultiCellWidget( typemb, 2, 2, 4, 7 ); - updateMimeTypeMenu() ; - - currentDir.setPath(QDir::currentDirPath()); - currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden */| QDir::All); - currentDir.setNameFilter(filterStr); - - populateList(); - move(0,15); -} - -fileBrowser::~fileBrowser() -{ -} - -void fileBrowser::setFileView( int selection ) -{ - SelectionCombo->setCurrentItem( selection ); - selectionChanged( SelectionCombo->currentText() ); -} - -void fileBrowser::populateList() -{ - ListView->clear(); - QListViewItem * item; - bool isDir=FALSE; -//qDebug(currentDir.canonicalPath()); - currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); - currentDir.setMatchAllDirs(TRUE); - -// currentDir.setNameFilter("*.txt;*.etx"); - QString fileL, fileS, fileDate; - const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); - QFileInfoListIterator it(*list); - QFileInfo *fi; - while ( (fi=it.current()) ) { - if (fi->isSymLink() ){ - QString symLink=fi->readLink(); -// qDebug("Symlink detected "+symLink); - QFileInfo sym( symLink); - fileS.sprintf( "%10li", sym.size() ); - fileL.sprintf( "%s -> %s", sym.fileName().data(),sym.absFilePath().data() ); - fileDate = sym.lastModified().toString(); - } else { -// qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); - fileS.sprintf( "%10li", fi->size() ); - fileL.sprintf( "%s",fi->fileName().data() ); - fileDate= fi->lastModified().toString(); - if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { - fileL+="/"; - isDir=TRUE; -// qDebug( fileL); - } - } - if(fileL !="./" && fi->exists()) { - item= new QListViewItem( ListView,fileL,fileS , fileDate); - QPixmap pm; - - if(isDir || fileL.find("/",0,TRUE) != -1) { - if( !QDir( fi->filePath() ).isReadable()) - pm = Resource::loadPixmap( "lockedfolder" ); - else - pm= Resource::loadPixmap( "folder" ); - item->setPixmap( 0,pm ); - } else { - if( !fi->isReadable() ) - pm = Resource::loadPixmap( "locked" ); - else { - MimeType mt(fi->filePath()); - pm=mt.pixmap();// sets the pixmap for the mimetype - if(pm.isNull()) - pm = Resource::loadPixmap( "UnknownDocument-14" ); - item->setPixmap( 0,pm); - } - } - if( fileL.find("->",0,TRUE) != -1) { - // overlay link image - pm= Resource::loadPixmap( "folder" ); - QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); - QPainter painter( &pm ); - painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); - pm.setMask( pm.createHeuristicMask( FALSE ) ); - item->setPixmap( 0, pm); - } - } - isDir=FALSE; - ++it; -// } - } - ListView->setSorting( 3, FALSE); - QString currentPath = currentDir.canonicalPath(); - - fillCombo( (const QString &)currentPath); -// dirPathCombo->lineEdit()->setText(currentPath); - -// if( dirPathStringList.grep(currentPath,TRUE).isEmpty() ) { -// dirPathCombo->clear(); -// dirPathStringList.prepend(currentPath ); -// dirPathCombo->insertStringList( dirPathStringList,-1); -// } -} - -void fileBrowser::upDir() -{ - QString current = currentDir.canonicalPath(); - QDir dir(current); - dir.cdUp(); - current = dir.canonicalPath(); - chdir( current.latin1() ); - currentDir.cd( current, TRUE); - populateList(); - update(); -} - -// you may want to switch these 2 functions. I like single clicks -void fileBrowser::listClicked(QListViewItem *selectedItem) -{ - if(selectedItem) { - QString strItem=selectedItem->text(0); - QString strSize=selectedItem->text(1); -// 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 { - strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); - if( QFile::exists(strItem ) ) { -//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); - fileList.append( selectedFileName ); - } - } - accept(); -} - -void fileBrowser::homeButtonPushed() { - QString current = QDir::homeDirPath(); - chdir( current.latin1() ); - currentDir.cd( current, TRUE); - populateList(); - update(); -} - -void fileBrowser::docButtonPushed() { - QString current = QPEApplication::documentDir(); - chdir( current.latin1() ); - currentDir.cd( current, TRUE); - populateList(); - update(); - -} - -void fileBrowser::selectionChanged( const QString &select ) -{ - if ( select == "Documents") { - FileStack->raiseWidget( fileSelector ); - dirPathCombo->hide(); - cdUpButton->hide(); - docButton->hide(); - homeButton->hide(); - } else { - if ( select == "All files" ) - currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::All); - else - currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); - - populateList(); - update(); - dirPathCombo->show(); - cdUpButton->show(); - docButton->show(); - homeButton->show(); - FileStack->raiseWidget( ListView ); - } -} - -void fileBrowser::docOpen( const DocLnk &doc ) -{ - fileList.append( doc.file().latin1() ); - accept(); -} - -void fileBrowser::ListPressed( int mouse, QListViewItem *item, const QPoint &point, int i) -{ - switch (mouse) { - case 1: - break; - case 2: - showListMenu(item); - break; - }; -} - -void fileBrowser::showListMenu(QListViewItem *item) { - - QPopupMenu m;// = new QPopupMenu( Local_View ); - if(item) { - if( item->text(0).find("/",0,TRUE)) - m.insertItem( tr( "Change Directory" ), this, SLOT( doCd() )); - m.insertItem( tr( "Make Directory" ), this, SLOT( makDir() )); - m.insertItem( tr( "Rescan" ), this, SLOT( populateList() )); - m.insertItem( tr( "Rename" ), this, SLOT( localRename() )); - m.insertSeparator(); - m.insertItem( tr( "Delete" ), this, SLOT( localDelete() )); - } else { - m.insertItem( tr( "Make Directory" ), this, SLOT( makDir() )); - m.insertItem( tr( "Rescan" ), this, SLOT( populateList() )); - - } - m.exec( QCursor::pos() ); -} - -void fileBrowser::doCd() { - listClicked( ListView->currentItem()); -} - -void fileBrowser::makDir() { - InputDialog *fileDlg; - fileDlg = new InputDialog(this,"Make Directory",TRUE, 0); - fileDlg->exec(); - if( fileDlg->result() == 1 ) { - QString filename = fileDlg->LineEdit1->text(); - qDebug("Make dir"); - currentDir.mkdir( currentDir.canonicalPath()+"/"+filename); - } - populateList(); -} - -void fileBrowser::localRename() { - QString curFile = ListView->currentItem()->text(0); - InputDialog *fileDlg; - fileDlg = new InputDialog(this,"Rename",TRUE, 0); - fileDlg->setTextEdit((const QString &) curFile); - fileDlg->exec(); - if( fileDlg->result() == 1 ) { - QString oldname = currentDir.canonicalPath() + "/" + curFile; - QString newName = currentDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; - if( rename(oldname.latin1(), newName.latin1())== -1) - QMessageBox::message("Note","Could not rename"); - } - populateList(); -} - -void fileBrowser::localDelete() { - QString f = ListView->currentItem()->text(0); - if(QDir(f).exists() ) { - switch ( QMessageBox::warning(this,"Delete","Do you really want to delete\n"+f+ - " ?\nIt must be empty","Yes","No",0,0,1) ) { - case 0: { - f=currentDir.canonicalPath()+"/"+f; - QString cmd="rmdir "+f; - system( cmd.latin1()); - populateList(); - } - break; - case 1: - // exit - break; - }; - } else { - switch ( QMessageBox::warning(this,"Delete","Do you really want to delete\n"+f - +" ?","Yes","No",0,0,1) ) { - case 0: { - f=currentDir.canonicalPath()+"/"+f; - QString cmd="rm "+f; - system( cmd.latin1()); - populateList(); - } - break; - case 1: - // exit - break; - }; - } -} - -void fileBrowser::updateMimeTypeMenu() { - - disconnect( typemb, SIGNAL(selected(const QString&)), - this, SLOT(showType(const QString&)) ); - - QString prev; - - // Type filter - QStringList types; - types << tr("All"); - types << "--"; - types += getMimeTypes(); - prev = typemb->currentText(); - typemb->clear(); - typemb->insertItems(types); - // typemb->select(prev); - - connect(typemb, SIGNAL(selected(const QString&)), this, SLOT(showType(const QString&))); -} - -void fileBrowser::showType(const QString &t) { - -// qDebug("Show type "+t); - if(t.find("All",0,TRUE) != -1) { - filterStr = "*"; - } else { - QStringList list = mimetypes.grep( t,TRUE); - QString ext; - for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { - mimeType =(*it); - MimeType mt(mimeType); - -// qDebug("mime "+mimeType); -// qDebug("description "+mt.description()); -// qDebug( "id "+mt.id()); -// qDebug("extension "+mt.extension()); - - if( mt.extension().isEmpty()) - filterStr = "*"; - else - filterStr = "*."+ mt.extension()+" "; -// printf( "%s \n", (*it).latin1() ); - } - } - currentDir.setNameFilter(filterStr); - - populateList(); - update(); -// if(fileSelector) { -// disconnect( fileSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( docOpen( const DocLnk & ) ) ); -// delete fileSelector; - // } - // fileSelector = new FileSelector( mimeType, FileStack, "fileselector" , FALSE, FALSE); //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( docOpen( const DocLnk & ) ) ); -// fileSelector->reread(); -// if ( t == tr("All") ) { -// icons->setTypeFilter("",TRUE); -// } else { -// icons->setTypeFilter(t+"/*",TRUE); -// } - -} - -QStringList fileBrowser::getMimeTypes() { - - QStringList r; - AppLnkSet apps( QPEApplication::qpeDir() + "apps" ); - QFile file( QPEApplication::qpeDir()+"etc/available.mime"); - file.open( IO_WriteOnly|IO_Truncate);//) - for ( QListIterator<AppLnk> it( apps.children() ); it.current(); ++it ) { - AppLnk* l; - l = it.current(); - QStringList maj = l->mimeTypes(); - QStringList::ConstIterator f; - for ( f = maj.begin(); f != maj.end(); f++ ) { - QString temp = *f; - qDebug("type "+temp); - mimetypes << temp; - int sl = temp.find('/'); - if (sl >= 0) { - QString k = temp;//.left(sl); - if( r.grep(k,TRUE).isEmpty() ) { - r << k; - k+="\n"; - file.writeBlock( k.latin1(), k.length()); - } - } - } - } - r.sort(); - file.close(); - return r; -} - -void fileBrowser::receive( const QCString &msg, const QByteArray &data ) { -// QDataStream stream( data, IO_ReadOnly ); -// if (msg == "keyRegister(int key, QString channel, QString message)") -// { -// int k; -// QString c, m; -// stream >> k; -// stream >> c; -// stream >> m; -} - -void fileBrowser::dirPathComboActivated( const QString & current) { - chdir( current.latin1() ); - currentDir.cd( current, TRUE); - populateList(); - update(); -} - -void fileBrowser::dirPathEditPressed() { - QString current = dirPathCombo->lineEdit()->text(); - chdir( current.latin1() ); - currentDir.cd( current, TRUE); - populateList(); - update(); -} - -void fileBrowser::fillCombo(const QString ¤tPath) { - - dirPathCombo->lineEdit()->setText(currentPath); - - if( dirPathStringList.grep(currentPath,TRUE).isEmpty() ) { - dirPathCombo->clear(); - dirPathStringList.prepend(currentPath ); - dirPathCombo->insertStringList( dirPathStringList,-1); - } -} - - -InputDialog::InputDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) -{ - if ( !name ) - setName( "InputDialog" ); - resize( 234, 50 ); - setMaximumSize( QSize( 240, 50 ) ); - setCaption( tr(name ) ); - - LineEdit1 = new QLineEdit( this, "LineEdit1" ); - LineEdit1->setGeometry( QRect( 10, 10, 216, 22 ) ); -} - -InputDialog::~InputDialog() -{ - inputText= LineEdit1->text(); - -} - -void InputDialog::setTextEdit(const QString &string) { - LineEdit1->setText(string); -} diff --git a/core/apps/textedit/fileBrowser.h b/core/apps/textedit/fileBrowser.h deleted file mode 100644 index 352cb51..0000000 --- a/core/apps/textedit/fileBrowser.h +++ b/dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Created: Fri Dec 14 08:16:02 2001 -** -** 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. -** -copyright Sun 02-17-2002 22:28:23 L. J. Potter ljp@llornkcor.com -****************************************************************************/ -#ifndef FILEBROWSER_H -#define FILEBROWSER_H - -//#include <qvariant.h> -#include <qdialog.h> -#include <qfile.h> -#include <qdir.h> -#include <qstringlist.h> -#include <qlabel.h> -#include <qstring.h> -#include <qdict.h> - -#include <qpe/filemanager.h> - -#include <qvariant.h> -#include <qdialog.h> -#include <qregexp.h> - - -class QLineEdit; -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QListView; -class QListViewItem; -class QPushButton; -class QComboBox; -class QWidgetStack; -class FileSelector; -class QPoint; -class MenuButton; - - -class fileBrowser : public QDialog -{ - Q_OBJECT - -public: - fileBrowser( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ,const QString filter=0); - ~fileBrowser(); - - QString selectedFileName; - QFile file; - QStringList fileList; - QComboBox *SelectionCombo; -public slots: - void setFileView( int ); - -private: -// QDict<void> mimes; - QPushButton *buttonOk, *buttonCancel, *homeButton, *docButton, *hideButton, *cdUpButton; - QListView* ListView; - QLabel *dirLabel; - QString filterStr, mimeType; - QDir currentDir; - QStringList dirPathStringList, mimetypes; -/* QListViewItem * item; */ - QComboBox *dirPathCombo; - MenuButton *typemb; - QWidgetStack *FileStack; - FileSelector *fileSelector; - QRegExp tf; - QStringList getMimeTypes(); - void fillCombo( const QString&); - -private slots: - void populateList(); - void homeButtonPushed(); - void docButtonPushed(); - void ListPressed( int, QListViewItem *, const QPoint&, int); - void showListMenu(QListViewItem*); - void doCd(); - void makDir(); - void localRename(); - void localDelete(); - void receive( const QCString &msg, const QByteArray &data ); - void dirPathComboActivated( const QString & ); - void upDir(); - void listClicked( QListViewItem * ); - void selectionChanged( const QString & ); - void OnOK(); - void docOpen( const DocLnk & ); - void updateMimeTypeMenu(); - void showType(const QString &); - void dirPathEditPressed(); - -protected slots: - -protected: - -}; - - -class InputDialog : public QDialog -{ - Q_OBJECT - -public: - InputDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~InputDialog(); - QString inputText; - QLineEdit* LineEdit1; - void setTextEdit(const QString &); -}; - -#endif // FILEBROWSER_H diff --git a/core/apps/textedit/fileSaver.cpp b/core/apps/textedit/fileSaver.cpp deleted file mode 100644 index 209a258..0000000 --- a/core/apps/textedit/fileSaver.cpp +++ b/dev/null @@ -1,271 +0,0 @@ -/**************************************************************************** -** copyright 2001 ljp ljp@llornkcor.com -** Created: Fri Dec 14 08:16:46 2001 fileSaver.cpp -** -** 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. -** -****************************************************************************/ -#include "fileSaver.h" -#include <qpe/config.h> -#include <qpe/resource.h> -#include <qpe/mimetype.h> - -#include <qpe/qpeapplication.h> -#include <qlistview.h> -#include <qpushbutton.h> -#include <qfile.h> -#include <qmessagebox.h> -#include <qlineedit.h> -#include <qcheckbox.h> - -#include <unistd.h> - -fileSaver::fileSaver( QWidget* parent, const char* name, bool modal, WFlags fl , const QString currentFileName ) - : QDialog( parent, name, modal, fl ) -{ - if ( !name ) - setName( tr("fileSaver")); - resize( 240, 280 ); - setCaption(tr( name ) ); - QFileInfo fi(currentFileName); - QString tmpFileName=fi.fileName(); -// qDebug( tmpFileName); - dirLabel = new QLabel(this, "DirLabel"); - dirLabel->setText(currentDir.canonicalPath()); - dirLabel->setGeometry(10,20,230,15); - - homeButton = new QPushButton(Resource::loadIconSet("home"),"",this,"homeButton"); - homeButton->setGeometry(200,4,25,25); - connect(homeButton,SIGNAL(released()),this,SLOT(homeButtonPushed()) ); - homeButton->setFlat(TRUE); - - docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",this,"docsButton"); - docButton->setGeometry(170,4,25,25); - connect( docButton,SIGNAL(released()),this,SLOT( docButtonPushed()) ); - - docButton->setFlat(TRUE); - - hideButton = new QPushButton( Resource::loadIconSet("textedit/s_hidden"),"",this,"hideButton"); - hideButton->setGeometry(140,4,25,25); - connect( hideButton,SIGNAL(toggled(bool)),this,SLOT( hideButtonPushed(bool)) ); - hideButton->setToggleButton(TRUE); - hideButton->setFlat(TRUE); - - ListView = new QListView( this, "ListView" ); - ListView->addColumn( tr( "Name" ) ); - ListView->setColumnWidth(0,120); - ListView->setSorting( 2, FALSE); - ListView->addColumn( tr( "Size" ) ); - ListView->setColumnWidth(1,-1); - ListView->addColumn( tr("Date"),-1); - - ListView->setColumnWidthMode(0,QListView::Manual); - ListView->setColumnAlignment(1,QListView::AlignRight); -// ListView->setMultiSelection(true); -// ListView->setSelectionMode(QListView::Extended); - - ListView->setAllColumnsShowFocus( TRUE ); - ListView->setGeometry( QRect( 10,35,220,125)); - - fileEdit= new QLineEdit(this); - fileEdit->setGeometry( QRect( 10, 162, 205, 17)); - - fileEdit->setText( tmpFileName); - - filePermCheck = new QCheckBox( this, "SetFilePerms" ); - filePermCheck->setText(tr("set file permissions")); - filePermCheck->setGeometry(10, 178, 150,17); - // 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() ); - currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden */| QDir::All); - populateList(); - move(0,15); - fileEdit->setFocus(); -} - -fileSaver::~fileSaver() -{ -} - -void fileSaver::populateList() -{ - ListView->clear(); - bool isDir=FALSE; - currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); - currentDir.setMatchAllDirs(TRUE); - - currentDir.setNameFilter("*"); - QString fileL, fileS, fileDate; - const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); - QFileInfoListIterator it(*list); - QFileInfo *fi; - while ( (fi=it.current()) ) { - - if (fi->isSymLink() ){ - QString symLink=fi->readLink(); -// qDebug("Symlink detected "+symLink); - QFileInfo sym( symLink); - fileS.sprintf( "%10li", sym.size() ); - fileL.sprintf( "%s -> %s", sym.fileName().data(),sym.absFilePath().data() ); - - } else { -// // qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); - fileS.sprintf( "%10li", fi->size() ); - fileL.sprintf( "%s",fi->fileName().data() ); - if( QDir(QDir::cleanDirPath(currentDir.canonicalPath()+"/"+fileL)).exists() ) { - fileL+="/"; - isDir=TRUE; -// qDebug(currentDir.canonicalPath()+fileL); - } - } - if(fileL !="./") { - item= new QListViewItem( ListView,fileL,fileS , fileDate); - QPixmap pm; - - if(isDir || fileL.find("/",0,TRUE) != -1) { - if( !QDir( fi->filePath() ).isReadable()) - pm = Resource::loadPixmap( "lockedfolder" ); - else - pm= Resource::loadPixmap( "folder" ); - item->setPixmap( 0,pm ); - } else { - if( !fi->isReadable() ) - pm = Resource::loadPixmap( "locked" ); - else { - MimeType mt(fi->filePath()); - pm=mt.pixmap(); - if(pm.isNull()) - pm = Resource::loadPixmap( "UnknownDocument-14" ); - item->setPixmap( 0,pm); - } - } - if( fileL.find("->",0,TRUE) != -1) { - // overlay link image - pm= Resource::loadPixmap( "folder" ); - QPixmap lnk = Resource::loadPixmap( "symlink" ); - QPainter painter( &pm ); - painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); - pm.setMask( pm.createHeuristicMask( FALSE ) ); - item->setPixmap( 0, pm); - } - } - isDir=FALSE; - ++it; - } - ListView->setSorting( 2, FALSE); - dirLabel->setText(currentDir.canonicalPath()); - - -} - -void fileSaver::upDir() -{ -// qDebug(currentDir.canonicalPath()); -} - -void fileSaver::listDoubleClicked(QListViewItem *selectedItem) -{ -} - -void fileSaver::listClicked(QListViewItem *selectedItem) -{ - if(selectedItem != NULL) { - QString strItem=selectedItem->text(0); - QString strSize=selectedItem->text(1); -// qDebug("strItem is "+strItem); - strSize.stripWhiteSpace(); -// qDebug(strSize); - - if(strItem.find("@",0,TRUE) !=-1 || strItem.find("->",0,TRUE) !=-1 ) { //if 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 -// if( QFile::exists(strItem ) ) { -// qDebug("We found our files!!"); - -// OnOK(); - } //end not symlink - chdir(strItem.latin1()); - - } -} - - -void fileSaver::closeEvent( QCloseEvent *e ) -{ - if(e->isAccepted()) { - e->accept(); - } else { - qDebug("not accepted"); - done(-1); - } -} - -void fileSaver::accept() { - selectedFileName = fileEdit->text(); - 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); -} - -void fileSaver::homeButtonPushed() { - chdir( QDir::homeDirPath().latin1() ); - currentDir.cd( QDir::homeDirPath(), TRUE); - populateList(); - update(); -} -void fileSaver::docButtonPushed() { - chdir( QString(QPEApplication::documentDir()+"/text").latin1() ); - currentDir.cd( QPEApplication::documentDir()+"/text", TRUE); - populateList(); - update(); - -} - -void fileSaver::hideButtonPushed(bool b) { - if (b) - currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); - else - currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); - -// chdir( QString(QPEApplication::documentDir()+"/text").latin1() ); -// currentDir.cd( QPEApplication::documentDir()+"/text", TRUE); - populateList(); - update(); - -} diff --git a/core/apps/textedit/fileSaver.h b/core/apps/textedit/fileSaver.h deleted file mode 100644 index 195a775..0000000 --- a/core/apps/textedit/fileSaver.h +++ b/dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Created: Fri Dec 14 08:16:02 2001 fileSaver.h -** -copyright Sun 02-17-2002 22:28:48 L. J. Potter ljp@llornkcor.com - -** 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. -** -****************************************************************************/ -#ifndef FILESAVER_H -#define FILESAVER_H - -//#include <qvariant.h> -#include <qdialog.h> -#include <qfile.h> -#include <qdir.h> -#include <qstringlist.h> -#include <qlabel.h> -#include <qstring.h> - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QListView; -class QListViewItem; -class QPushButton; -class QLineEdit; -class QCheckBox; - -class fileSaver : public QDialog -{ - Q_OBJECT - -public: - void populateList(); - fileSaver( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ,const QString filter=0); - ~fileSaver(); - QLineEdit *fileEdit; - - QPushButton *buttonOk, *buttonCancel, *homeButton, *docButton, *hideButton; - QListView* ListView; - QLabel *dirLabel; - QString selectedFileName, filterStr; - QDir currentDir; - QFile file; - QStringList fileList; - QCheckBox *filePermCheck; - -QListViewItem * item; -public slots: - void homeButtonPushed(); - void docButtonPushed(); - void hideButtonPushed(bool); -private: - -private slots: - void accept(); - void upDir(); - void listDoubleClicked(QListViewItem *); - void listClicked(QListViewItem *); - void closeEvent( QCloseEvent * ); - -protected slots: - -protected: - -}; - -#endif // FILESAVER_H diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index 40ea501..b276cbb 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp @@ -1,979 +1,968 @@ /********************************************************************** ** 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 "fileSaver.h" #include "filePermissions.h" #include "fontDialog.h" #include <opie/ofileselector.h> #include <opie/ofiledialog.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 <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 <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", "a c #767676", "b c #818181", "c c #B8B8B8", "d c #FBFBFB", "e c #F9F9F9", "f c #CCCCCC", "g c #030303", "h c #737373", "i c #7A7A7A", "j c #7E7E7E", "k c #6A6A6A", "l c #FAFAFA", "m c #505050", "n c #9D9D9D", "o c #333333", "p c #7B7B7B", "q c #787878", "r c #696969", "s c #494949", "t c #555555", "u c #949494", "v c #E6E6E6", "w c #424242", "x c #515151", "y c #535353", "z c #3E3E3E", "A c #D4D4D4", "B c #0C0C0C", "C c #353535", "D c #474747", "E c #ECECEC", "F c #919191", "G c #7D7D7D", "H c #000000", "I c #404040", "J c #858585", "K c #323232", "L c #D0D0D0", "M c #1C1C1C", " ...+ ", " @#$%&..+ ", " .*=-;;>,..+ ", " ')!~;;;;;;{]..", " ^/(-;;;;;;;_:<", " [}|;;;;;;;{12$", " #34-55;;;;678$+", " 90ab=c;dd;e1fg ", " [ahij((kbl0mn$ ", " op^q^^7r&]s/$+ ", "@btu;vbwxy]zAB ", "CzDEvEv;;DssF$ ", "G.H{E{E{IxsJ$+ ", " +...vEKxzLM ", " +...z]n$ ", " +... "}; #if QT_VERSION < 300 class QpeEditor : public QMultiLineEdit { // Q_OBJECT public: QpeEditor( QWidget *parent, const char * name = 0 ) : QMultiLineEdit( parent, name ) { clearTableFlags(); setTableFlags( Tbl_vScrollBar | Tbl_autoHScrollBar ); } void find( const QString &txt, bool caseSensitive, bool backwards ); //public slots: /* signals: void notFound(); void searchWrapped(); */ private: }; void QpeEditor::find ( const QString &txt, bool caseSensitive, bool backwards ) { static bool wrap = FALSE; int line, col; if ( wrap ) { if ( !backwards ) line = col = 0; wrap = FALSE; // emit searchWrapped(); } else { getCursorPosition( &line, &col ); } //ignore backwards for now.... if ( !backwards ) { for ( ; ; ) { if ( line >= numLines() ) { wrap = TRUE; //emit notFound(); break; } int findCol = getString( line )->find( txt, col, caseSensitive ); if ( findCol >= 0 ) { setCursorPosition( line, findCol, FALSE ); col = findCol + txt.length(); setCursorPosition( line, col, TRUE ); //found = TRUE; break; } line++; col = 0; } } } #else #error "Must make a QpeEditor that inherits QTextEdit" #endif static const int nfontsizes = 6; static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) : QMainWindow( parent, name, f ), bFromDocView( FALSE ) { doc = 0; edited=FALSE; edited1=FALSE; setToolBarsMovable( FALSE ); connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); channel = new QCopChannel( "QPE/Application/textedit", this ); connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) ); setIcon( Resource::loadPixmap( "TextEditor" ) ); QPEToolBar *bar = new QPEToolBar( this ); bar->setHorizontalStretchable( TRUE ); menu = bar; QPEMenuBar *mb = new QPEMenuBar( bar ); QPopupMenu *file = new QPopupMenu( this ); QPopupMenu *edit = new QPopupMenu( this ); font = new QPopupMenu( this ); bar = new QPEToolBar( this ); editBar = bar; 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 ); 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 ); 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 ); // 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(); cfg.setGroup("View"); if(cfg.readEntry("startNew","TRUE") == "TRUE") { nStart->setOn(TRUE); fileNew(); } else { fileOpen(); } viewSelection = cfg.readNumEntry( "FileView", 0 ); } void TextEdit::cleanUp() { // 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); cfg.writeEntry( "FileView", viewSelection ); } TextEdit::~TextEdit() { } 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); } void TextEdit::setItalic(bool y) { QFont f = editor->font(); f.setItalic(y); editor->setFont(f); } void TextEdit::setWordWrap(bool y) { bool state = editor->edited(); editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); editor->setEdited( state ); } void TextEdit::fileNew() { // if( !bFromDocView ) { // saveAs(); // } newFile(DocLnk()); } void TextEdit::fileOpen() { Config cfg("TextEdit"); cfg.setGroup("View"); bool b=FALSE; QMap<QString, QStringList> map; map.insert(tr("All"), QStringList() ); QStringList text; text << "text/*"; map.insert(tr("Text"), text ); text << "*"; map.insert(tr("All"), text ); QString str = OFileDialog::getOpenFileName( 2,"/", QString::null, map); if(!str.isEmpty() ) openFile( str ); } void TextEdit::doSearchBar() { Config cfg("TextEdit"); cfg.setGroup("View"); if(cfg.readEntry("SearchBar","Closed") != "Opened") searchBar->hide(); } #if 0 void TextEdit::slotFind() { FindDialog frmFind( tr("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()) ); frmFind.exec(); } #endif void TextEdit::fileRevert() { clear(); fileOpen(); } void TextEdit::editCut() { #ifndef QT_NO_CLIPBOARD editor->cut(); #endif } void TextEdit::editCopy() { #ifndef QT_NO_CLIPBOARD editor->copy(); #endif } void TextEdit::editPaste() { #ifndef QT_NO_CLIPBOARD editor->paste(); #endif } void TextEdit::editFind() { searchBar->show(); searchVisible = TRUE; searchEdit->setFocus(); Config cfg("TextEdit"); cfg.setGroup("View"); cfg.writeEntry("SearchBar","Opened"); } void TextEdit::findNext() { editor->find( searchEdit->text(), FALSE, FALSE ); } void TextEdit::findClose() { searchVisible = FALSE; searchBar->hide(); Config cfg("TextEdit"); cfg.setGroup("View"); cfg.writeEntry("SearchBar","Closed"); cfg.write(); } void TextEdit::search() { editor->find( searchEdit->text(), FALSE, FALSE ); } void TextEdit::newFile( const DocLnk &f ) { DocLnk nf = f; nf.setType("text/plain"); clear(); setWState (WState_Reserved1 ); editor->setFocus(); doc = new DocLnk(nf); currentFileName = "Unnamed"; qDebug("newFile "+currentFileName); updateCaption( currentFileName); // editor->setEdited( FALSE); } void TextEdit::openFile( const QString &f ) { qDebug("filename is "+ f); QString filer; // bFromDocView = TRUE; if(f.find(".desktop",0,TRUE) != -1) { switch ( QMessageBox::warning(this,tr("Text Editor"), tr("Text Editor has detected\n you selected a .desktop file.\nOpen .desktop file or linked file?"), tr(".desktop File"),tr("Linked Document"),0,1,1) ) { case 0: filer = f; break; case 1: DocLnk sf(f); filer = sf.file(); break; } } else { filer = f; fileIs = TRUE; } DocLnk nf; nf.setType("text/plain"); nf.setFile(filer); currentFileName=filer; QFileInfo fi( currentFileName); nf.setName(fi.baseName()); qDebug("openFile string "+currentFileName); openFile(nf); showEditTools(); // Show filename in caption QString name = filer; 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.file(); qDebug("openFile doclnk " + currentFileName); if ( !fm.loadFile( f, txt ) ) { // ####### could be a new file qDebug( "Cannot open file" ); } // fileNew(); if ( doc ) delete doc; doc = new DocLnk(f); editor->setText(txt); editor->setEdited( FALSE); edited1=FALSE; edited=FALSE; doc->setName(currentFileName); updateCaption(); } void TextEdit::showEditTools() { // if ( !doc ) // close(); // clear(); menu->show(); editBar->show(); if ( searchVisible ) searchBar->show(); // updateCaption(); setWState (WState_Reserved1 ); } /*! unprompted save */ bool TextEdit::save() { QString file = doc->file(); qDebug("saver file "+file); QString name= doc->name(); qDebug("File named "+name); QString rt = editor->text(); if( !rt.isEmpty() ) { if(name.isEmpty()) { saveAs(); } else { currentFileName= name ; qDebug("saveFile "+currentFileName); struct stat buf; mode_t mode; stat(file.latin1(), &buf); mode = buf.st_mode; if(!fileIs) { doc->setName( name); FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } } else { qDebug("regular save file"); QFile f(file); if( f.open(IO_WriteOnly)) { QCString crt = rt.utf8(); f.writeBlock(crt,crt.length()); } else { QMessageBox::message("Text Edit","Write Failed"); return false; } } editor->setEdited( FALSE); edited1=FALSE; edited=FALSE; if(caption().left(1)=="*") setCaption(caption().right(caption().length()-1)); chmod( file.latin1(), mode); } return true; } return false; } /*! prompted save */ bool TextEdit::saveAs() { // qDebug("saveAsFile "+currentFileName); // case of nothing 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 == tr("Unnamed") || currentFileName == tr("Text Editor")) { 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 = tr("Unnamed"); doc->setName(docname); currentFileName=docname; } } -/* QMap<QString, QStringList> map; map.insert(tr("All"), QStringList() ); QStringList text; text << "text/*"; map.insert(tr("Text"), text ); text << "*"; map.insert(tr("All"), text ); QString str = OFileDialog::getSaveFileName( 2,"/", QString::null, map); if(!str.isEmpty() ) { QString fileNm=str; -*/ - - fileSaveDlg=new fileSaver(this,tr("Save File As?"),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) { // 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); doc->setName( currentFileName); updateCaption( currentFileName); FileManager fm; if ( !fm.saveFile( *doc, rt ) ) { return false; } - if( fileSaveDlg->filePermCheck->isChecked() ) { + +// if( fileSaveDlg->filePermCheck->isChecked() ) { filePermissions *filePerm; filePerm = new filePermissions(this, tr("Permissions"),true,0,(const QString &)fileNm); filePerm->exec(); if( filePerm) delete filePerm; - } +// } } } editor->setEdited(TRUE); edited1=FALSE; edited=TRUE; if(caption().left(1)=="*") setCaption(caption().right(caption().length()-1)); - if(fileSaveDlg) - delete fileSaveDlg; return true; } //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::accept() { //if(caption() !="Unnamed") if(edited1) saveAs(); exit(0); } 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,tr("FontDialog"),TRUE); fontDlg->exec(); QFont myFont=fontDlg->selectedFont; editor->setFont( myFont); delete fontDlg; } void TextEdit::editDelete() { switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Do you really want\nto delete the current file\nfrom the disk?\nThis is irreversable!!"),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,"Text Edit","Text Edit is copyright\n" "2000 Trolltech AS, and\n" "2002 by L.J.Potter \nljp@llornkcor.com\n" "and is licensed under the GPL"); } diff --git a/core/apps/textedit/textedit.h b/core/apps/textedit/textedit.h index d8208b1..764d852 100644 --- a/core/apps/textedit/textedit.h +++ b/core/apps/textedit/textedit.h @@ -1,126 +1,126 @@ /********************************************************************** ** 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. ** **********************************************************************/ // 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 "fileSaver.h" #include <qpe/filemanager.h> #include <qpe/qcopenvelope_qws.h> #include <opie/ofileselector.h> #include <qmainwindow.h> #include <qmultilineedit.h> #include <qlist.h> #include <qmap.h> class QAction; class QWidgetStack; class QToolButton; class QPopupMenu; class QToolBar; class QLineEdit; class QAction; class FileSelector; class QpeEditor; class QPopupMenu; class TextEdit : public QMainWindow { Q_OBJECT public: TextEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); ~TextEdit(); QPopupMenu *font; QAction *nStart, *nFileDlgOpt; bool edited, edited1; void openFile( const QString & ); QCopChannel * channel; public slots: void editorChanged(); void receive(const QCString&, const QByteArray&); protected: bool fileIs; void closeEvent( QCloseEvent *e ); void doSearchBar(); private slots: void doAbout(); void setDocument(const QString&); void changeFont(); void fileNew(); void fileRevert(); void fileOpen(); void changeStartConfig(bool); bool save(); bool saveAs(); void cleanUp(); 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: - fileSaver *fileSaveDlg; +// fileSaver *fileSaveDlg; // fileBrowser *browseForFiles; QpeEditor* editor; QToolBar *menu, *editBar, *searchBar; QLineEdit *searchEdit; DocLnk *doc; bool searchVisible; bool bFromDocView; int viewSelection; QAction *zin, *zout; QString currentFileName; }; #endif diff --git a/core/apps/textedit/textedit.pro b/core/apps/textedit/textedit.pro index 484d0cd..f6e6530 100644 --- a/core/apps/textedit/textedit.pro +++ b/core/apps/textedit/textedit.pro @@ -1,24 +1,24 @@ TEMPLATE = app CONFIG += qt warn_on release DESTDIR = $(OPIEDIR)/bin -HEADERS = textedit.h fontDialog.h fileSaver.h filePermissions.h -SOURCES = main.cpp textedit.cpp fontDialog.cpp fileSaver.cpp filePermissions.cpp +HEADERS = textedit.h fontDialog.h filePermissions.h +SOURCES = main.cpp textedit.cpp fontDialog.cpp filePermissions.cpp INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -lopie TARGET = textedit TRANSLATIONS = ../../../i18n/de/textedit.ts \ ../../../i18n/en/textedit.ts \ ../../../i18n/es/textedit.ts \ ../../../i18n/fr/textedit.ts \ ../../../i18n/hu/textedit.ts \ ../../../i18n/ja/textedit.ts \ ../../../i18n/ko/textedit.ts \ ../../../i18n/no/textedit.ts \ ../../../i18n/pl/textedit.ts \ ../../../i18n/pt/textedit.ts \ ../../../i18n/pt_BR/textedit.ts \ ../../../i18n/sl/textedit.ts \ ../../../i18n/zh_CN/textedit.ts \ ../../../i18n/zh_TW/textedit.ts |