-rw-r--r-- | apps/Applications/advancedfm.desktop | 7 | ||||
-rw-r--r-- | noncore/apps/advancedfm/Makefile | 159 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedFm.control | 10 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 1263 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.h | 118 | ||||
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.pro | 11 | ||||
-rw-r--r-- | noncore/apps/advancedfm/filePermissions.cpp | 274 | ||||
-rw-r--r-- | noncore/apps/advancedfm/filePermissions.h | 56 | ||||
-rw-r--r-- | noncore/apps/advancedfm/inputDialog.cpp | 44 | ||||
-rw-r--r-- | noncore/apps/advancedfm/inputDialog.h | 35 | ||||
-rw-r--r-- | noncore/apps/advancedfm/main.cpp | 31 | ||||
-rw-r--r-- | noncore/apps/advancedfm/output.cpp | 38 | ||||
-rw-r--r-- | noncore/apps/advancedfm/output.h | 33 |
13 files changed, 2079 insertions, 0 deletions
diff --git a/apps/Applications/advancedfm.desktop b/apps/Applications/advancedfm.desktop new file mode 100644 index 0000000..f0284f3 --- a/dev/null +++ b/apps/Applications/advancedfm.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Comment = An advanced file manager program +Exec = advancedfm +File = advancedfm +Icon = FileBrowser +Name = AdvancedFM +Type = Application diff --git a/noncore/apps/advancedfm/Makefile b/noncore/apps/advancedfm/Makefile new file mode 100644 index 0000000..4622c6e --- a/dev/null +++ b/noncore/apps/advancedfm/Makefile @@ -0,0 +1,159 @@ +############################################################################# +# Makefile for building $(OPIEDIR)/bin/advancedfm +# Generated by tmake at 18:31, 2002/04/15 +# Project: advancedfm +# Template: app +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +CFLAGS = -pipe -Wall -W -O2 -fno-default-inline -DNO_DEBUG +CXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG +INCPATH = -I$(OPIEDIR)/include -I$(QTDIR)/include +LINK = g++ +LFLAGS = +LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lqpe -lqte +MOC = $(QTDIR)/bin/moc +UIC = $(QTDIR)/bin/uic + +TAR = tar -cf +GZIP = gzip -9f + +####### Files + +HEADERS = advancedfm.h \ + inputDialog.h \ + filePermissions.h \ + output.h +SOURCES = advancedfm.cpp \ + inputDialog.cpp \ + filePermissions.cpp \ + output.cpp \ + main.cpp +OBJECTS = advancedfm.o \ + inputDialog.o \ + filePermissions.o \ + output.o \ + main.o +INTERFACES = +UICDECLS = +UICIMPLS = +SRCMOC = moc_advancedfm.cpp \ + moc_inputDialog.cpp \ + moc_filePermissions.cpp \ + moc_output.cpp +OBJMOC = moc_advancedfm.o \ + moc_inputDialog.o \ + moc_filePermissions.o \ + moc_output.o +DIST = +TARGET = $(OPIEDIR)/bin/advancedfm +INTERFACE_DECL_PATH = . + +####### Implicit rules + +.SUFFIXES: .cpp .cxx .cc .C .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + + +all: $(TARGET) + +$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) + +moc: $(SRCMOC) + +tmake: Makefile + +Makefile: advancedfm.pro + tmake advancedfm.pro -o Makefile + +dist: + $(TAR) advancedfm.tar advancedfm.pro $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST) + $(GZIP) advancedfm.tar + +clean: + -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET) + -rm -f *~ core + +####### Sub-libraries + + +###### Combined headers + + +####### Compile + +advancedfm.o: advancedfm.cpp \ + advancedfm.h \ + inputDialog.h \ + filePermissions.h \ + output.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/lnkproperties.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/filemanager.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/qcopenvelope_qws.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/qpemenubar.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/qpetoolbar.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/qpeapplication.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/resource.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/config.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/mimetype.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/applnk.h + +inputDialog.o: inputDialog.cpp \ + inputDialog.h + +filePermissions.o: filePermissions.cpp \ + filePermissions.h + +output.o: output.cpp \ + output.h + +main.o: main.cpp \ + /usr/src/oldsrc/Opie/opie/include/qpe/qpeapplication.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/qcopenvelope_qws.h \ + /usr/src/oldsrc/Opie/opie/include/qpe/config.h \ + advancedfm.h + +moc_advancedfm.o: moc_advancedfm.cpp \ + advancedfm.h + +moc_inputDialog.o: moc_inputDialog.cpp \ + inputDialog.h + +moc_filePermissions.o: moc_filePermissions.cpp \ + filePermissions.h + +moc_output.o: moc_output.cpp \ + output.h + +moc_advancedfm.cpp: advancedfm.h + $(MOC) advancedfm.h -o moc_advancedfm.cpp + +moc_inputDialog.cpp: inputDialog.h + $(MOC) inputDialog.h -o moc_inputDialog.cpp + +moc_filePermissions.cpp: filePermissions.h + $(MOC) filePermissions.h -o moc_filePermissions.cpp + +moc_output.cpp: output.h + $(MOC) output.h -o moc_output.cpp + diff --git a/noncore/apps/advancedfm/advancedFm.control b/noncore/apps/advancedfm/advancedFm.control new file mode 100644 index 0000000..40102ba --- a/dev/null +++ b/noncore/apps/advancedfm/advancedFm.control @@ -0,0 +1,10 @@ +Files: bin/advancedfm pics/opie/symlink.png apps/Applications/advanced.desktop +Priority: optional +Package: advancedFm +Section: opie/applications +Maintainer: L.J. Potter <ljp@llornkcor.com> +Architecture: arm +Version: $QPE_VERSION-$SUB_VERSION +Depends: opie-base ($QPE_VERSION) +Description: AdvancedFm + The advanced file manager for the Opie environment. diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp new file mode 100644 index 0000000..a4ec714 --- a/dev/null +++ b/noncore/apps/advancedfm/advancedfm.cpp @@ -0,0 +1,1263 @@ +/*************************************************************************** + AdvancedFm.cpp + ------------------- +** Created: Sat Mar 9 23:33:09 2002 + copyright : (C) 2002 by ljp + email : ljp@llornkcor.com + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#define DEVELOPERS_VERSION +#define QTOPIA_INTERNAL_FSLP // to get access to fileproperties + +#include "advancedfm.h" +#include "inputDialog.h" +#include "filePermissions.h" +#include "output.h" + +#include <qpe/lnkproperties.h> +#include <qpe/filemanager.h> +#include <qpe/qcopenvelope_qws.h> +#include <qpe/qpemenubar.h> +#include <qpe/qpetoolbar.h> +#include <qpe/qpeapplication.h> +#include <qpe/resource.h> +#include <qpe/qcopenvelope_qws.h> +#include <qpe/config.h> +#include <qpe/mimetype.h> +#include <qpe/applnk.h> + +//#include <opie/ofileselector.h> +#include <qmultilineedit.h> + +#include <qtextstream.h> +#include <qpushbutton.h> +#include <qtoolbutton.h> +#include <qdatetime.h> +#include <qdir.h> +#include <qfile.h> +#include <qstring.h> +#include <qcombobox.h> +#include <qpopupmenu.h> +#include <qlistview.h> +#include <qmainwindow.h> +#include <qlabel.h> +#include <qprogressbar.h> +#include <qspinbox.h> +#include <qtabwidget.h> +#include <qwidget.h> +#include <qlayout.h> +#include <qimage.h> +#include <qpixmap.h> +#include <qmessagebox.h> +#include <qlineedit.h> +#include <qregexp.h> + +#include <unistd.h> +#include <stdlib.h> +#include <sys/stat.h> +#include <dirent.h> +#include <stdio.h> +#include <time.h> +#include <fcntl.h> + +AdvancedFm::AdvancedFm( ) + : QMainWindow( ) +{ + setCaption( tr( "AdvancedFm" ) ); + + QGridLayout *layout = new QGridLayout( this ); + layout->setSpacing( 2); + layout->setMargin( 2); + + connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); + + QPEMenuBar *menuBar = new QPEMenuBar(this); +// fileMenu = new QPopupMenu( this ); + fileMenu = new QPopupMenu( this ); + viewMenu = new QPopupMenu( this ); + + layout->addMultiCellWidget( menuBar, 0, 0, 0, 1 ); + + menuBar->insertItem( tr( "File" ), fileMenu); + menuBar->insertItem( tr( "View" ), viewMenu); + + cfButton = new QPushButton(Resource::loadIconSet("cardmon/pcmcia"),"",this,"CFButton"); + cfButton ->setFixedSize( QSize( 20, 20 ) ); + connect( cfButton ,SIGNAL(released()),this,SLOT( CFButtonPushed()) ); + cfButton->setFlat(TRUE); + layout->addMultiCellWidget( cfButton , 0, 0, 2, 2); + + sdButton = new QPushButton(Resource::loadIconSet("sdmon/sdcard"),"",this,"SDButton"); + sdButton->setFixedSize( QSize( 20, 20 ) ); + connect( sdButton ,SIGNAL(released()),this,SLOT( SDButtonPushed()) ); + sdButton->setFlat(TRUE); + layout->addMultiCellWidget( sdButton , 0, 0, 3, 3); + + cdUpButton = new QPushButton(Resource::loadIconSet("up"),"",this,"cdUpButton"); + cdUpButton ->setFixedSize( QSize( 20, 20 ) ); + connect( cdUpButton ,SIGNAL(released()),this,SLOT( upDir()) ); + cdUpButton ->setFlat(TRUE); + layout->addMultiCellWidget( cdUpButton , 0, 0, 4, 4); + + docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",this,"docsButton"); + docButton->setFixedSize( QSize( 20, 20 ) ); + connect( docButton,SIGNAL(released()),this,SLOT( docButtonPushed()) ); + docButton->setFlat(TRUE); + layout->addMultiCellWidget( docButton, 0, 0, 5, 5); + + homeButton = new QPushButton( Resource::loadIconSet("home"),"",this,"homeButton"); + homeButton->setFixedSize( QSize( 20, 20 ) ); + connect(homeButton,SIGNAL(released()),this,SLOT(homeButtonPushed()) ); + homeButton->setFlat(TRUE); + layout->addMultiCellWidget( homeButton, 0, 0, 6, 6); +// fileMenu->insertItem( tr( "New" ), this, SLOT( newConnection() )); +// fileMenu->insertItem( tr( "Connect" ), this, SLOT( connector() )); +// fileMenu->insertItem( tr( "Disconnect" ), this, SLOT( disConnector() )); + + fileMenu->insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); + fileMenu->insertSeparator(); + fileMenu->insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() )); + fileMenu->insertItem( tr( "Rename" ), this, SLOT( localRename() )); + fileMenu->insertItem( tr( "Run Command" ), this, SLOT( runCommandStd() )); + fileMenu->insertItem( tr( "Run Command with Output" ), this, SLOT( runCommand() )); + fileMenu->insertSeparator(); + fileMenu->insertItem( tr( "Delete" ), this, SLOT( localDelete() )); + fileMenu->setCheckable(TRUE); + + viewMenu->insertItem( tr( "Switch to Local" ), this, SLOT( switchToLocalTab() )); + viewMenu->insertItem( tr( "Switch to Remote" ), this, SLOT( switchToRemoteTab() )); + viewMenu->setCheckable(TRUE); + + TabWidget = new QTabWidget( this, "TabWidget" ); + layout->addMultiCellWidget( TabWidget, 1, 1, 0, 6); + + tab = new QWidget( TabWidget, "tab" ); + tabLayout = new QGridLayout( tab ); + tabLayout->setSpacing( 2); + tabLayout->setMargin( 2); + + Local_View = new QListView( tab, "Local_View" ); +// Local_View->setResizePolicy( QListView::AutoOneFit ); + Local_View->addColumn( tr("File"),140); + Local_View->addColumn( tr("Size"),-1); + Local_View->setColumnAlignment(1,QListView::AlignRight); + Local_View->addColumn( tr("Date"),-1); + Local_View->setColumnAlignment(2,QListView::AlignRight); + Local_View->setAllColumnsShowFocus(TRUE); +// Local_View->setMultiSelection( TRUE ); +// Local_View->setSelectionMode(QListView::Extended); + QPEApplication::setStylusOperation( Local_View->viewport(),QPEApplication::RightOnHold); + + tabLayout->addWidget( Local_View, 0, 0 ); + + connect( Local_View, SIGNAL( clicked( QListViewItem*)), + this,SLOT( localListClicked(QListViewItem *)) ); + connect( Local_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), + this,SLOT( localListPressed(int, QListViewItem *, const QPoint&, int)) ); + + TabWidget->insertTab( tab, tr("1")); + + tab_2 = new QWidget( TabWidget, "tab_2" ); + tabLayout_2 = new QGridLayout( tab_2 ); + tabLayout_2->setSpacing( 2); + tabLayout_2->setMargin( 2); + + Remote_View = new QListView( tab_2, "Remote_View" ); + Remote_View->addColumn( tr("File"),140); + Remote_View->addColumn( tr("Size"),-1); + Remote_View->setColumnAlignment(1,QListView::AlignRight); + Remote_View->addColumn( tr("Date"),-1); + Remote_View->setColumnAlignment(2,QListView::AlignRight); + Remote_View->setAllColumnsShowFocus(TRUE); +// Remote_View->setMultiSelection( TRUE ); +// Remote_View->setSelectionMode(QListView::Extended); + QPEApplication::setStylusOperation( Remote_View->viewport(),QPEApplication::RightOnHold); + + connect( Remote_View, SIGNAL( clicked( QListViewItem*)), + this,SLOT( remoteListClicked(QListViewItem *)) ); + connect( Remote_View, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), + this,SLOT( remoteListPressed(int, QListViewItem *, const QPoint&, int)) ); + + tabLayout_2->addWidget( Remote_View, 0, 0 ); + + TabWidget->insertTab( tab_2, tr( "2")); + + connect(TabWidget,SIGNAL(currentChanged(QWidget *)), + this,SLOT(tabChanged(QWidget*))); + +// tab_3 = new QWidget( TabWidget, "tab_3" ); +// tabLayout_3 = new QGridLayout( tab_3 ); +// tabLayout_3->setSpacing( 2); +// tabLayout_3->setMargin( 2); + +// OFileSelector *fileSelector; +// fileSelector = new OFileSelector(tab_3,0,0,"/","","*"); +// tabLayout_3->addMultiCellWidget( fileSelector, 0, 0, 0, 3 ); + +// TabWidget->insertTab( tab_3, tr( "Files" ) ); + + currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + currentDir.setPath( QDir::currentDirPath()); + + currentRemoteDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + currentRemoteDir.setPath( QDir::currentDirPath()); + + currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" ); + currentPathCombo->setEditable(TRUE); + layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 6); + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + + connect( currentPathCombo, SIGNAL( activated( const QString & ) ), + this, SLOT( currentPathComboActivated( const QString & ) ) ); + + connect( currentPathCombo->lineEdit(),SIGNAL(returnPressed()), + this,SLOT(currentPathComboChanged())); + + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + + layout->addMultiCellWidget( currentPathCombo, 3, 3, 0, 6); + + filterStr="*"; + b=FALSE; + populateLocalView(); + populateRemoteView(); +} + +AdvancedFm::~AdvancedFm() +{ +} + +void AdvancedFm::cleanUp() +{ + QString sfile=QDir::homeDirPath(); + if(sfile.right(1) != "/") + sfile+="/._temp"; + else + sfile+="._temp"; + QFile file( sfile); + if(file.exists()) + file.remove(); +} + +void AdvancedFm::tabChanged(QWidget *w) +{ + if (TabWidget->currentPageIndex() == 0) { + currentPathCombo->lineEdit()->setText( currentDir.canonicalPath()); + viewMenu->setItemChecked(viewMenu->idAt(0),TRUE); + viewMenu->setItemChecked(viewMenu->idAt(1),FALSE); + } + if (TabWidget->currentPageIndex() == 1) { + currentPathCombo->lineEdit()->setText( currentRemoteDir.canonicalPath()); + viewMenu->setItemChecked(viewMenu->idAt(1),TRUE); + viewMenu->setItemChecked(viewMenu->idAt(0),FALSE); + } +} + + +void AdvancedFm::populateLocalView() +{ +// QList<QListViewItem> * getSelectedItems( QListView * Local_View ); +// QListViewItemIterator it( Local_View ); +// for ( ; it.current(); ++it ) { +// if ( it.current()->isSelected() ) { +// QString strItem = it.current()->text(0); +// QString localFile = currentDir.canonicalPath()+"/"+strItem; +// QFileInfo fi(localFile); +// } +// } + QPixmap pm; + Local_View->clear(); + currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); + currentDir.setMatchAllDirs(TRUE); + currentDir.setNameFilter(filterStr); + QString fileL, fileS, fileDate; +// qDebug(currentDir.canonicalPath()); + + bool isDir=FALSE; + 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 { + 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( Local_View, fileL, fileS , fileDate); + + 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 correct pixmap for 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; + } + + if(currentDir.canonicalPath().find("dev",0,TRUE) != -1) { + struct stat buf; + struct stat st; + dev_t devT; + mode_t mode; + DIR *dir; + int fd = 0; + struct dirent *mydirent; + int i = 1; + if((dir = opendir( currentDir.canonicalPath().latin1())) != NULL) + while ((mydirent = readdir(dir)) != NULL) { + lstat( mydirent->d_name, &buf); + qDebug(mydirent->d_name); +// mode = buf.st_mode; + fileL.sprintf("%s", mydirent->d_name); +// fileS.sprintf("%d, %d", ); //this isn't correct + devT = buf.st_dev; + fileS.sprintf("%d, %d", (int) ( devT >>8) &0xFF, (int)devT &0xFF); +// fileS.sprintf("%d,%d", devT, devT); + fileDate.sprintf("%s", ctime( &buf.st_mtime)); + if( fileL.find(".") == -1 ){ + item= new QListViewItem( Local_View, fileL, fileS, fileDate); + pm = Resource::loadPixmap( "UnknownDocument-14" ); + item->setPixmap( 0,pm); + } + } + + closedir(dir); + } + + Local_View->setSorting( 3,FALSE); + fillCombo( (const QString &) currentDir.canonicalPath()); +} + +void AdvancedFm::populateRemoteView() +{ +// QList<QListViewItem> * getSelectedItems( QListView * Local_View ); +// QListViewItemIterator it( Remote_View ); +// for ( ; it.current(); ++it ) { +// if ( it.current()->isSelected() ) { +// QString strItem = it.current()->text(0); +// QString localFile = currentRemoteDir.canonicalPath()+"/"+strItem; +// QFileInfo fi(localFile); +// } +// } + QPixmap pm; + Remote_View->clear(); + currentRemoteDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); + currentRemoteDir.setMatchAllDirs(TRUE); + currentRemoteDir.setNameFilter(filterStr); + QString fileL, fileS, fileDate; + bool isDir=FALSE; + const QFileInfoList *list = currentRemoteDir.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( currentRemoteDir.canonicalPath()+"/"+fileL)).exists() ) { + fileL+="/"; + isDir=TRUE; +// qDebug( fileL); + } + } + if(fileL !="./" && fi->exists()) { + item= new QListViewItem( Remote_View,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 correct pixmap for 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( "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; + } + + if(currentRemoteDir.canonicalPath().find("dev",0,TRUE) != -1) { + struct stat buf; + struct stat st; + mode_t mode; + DIR *dir; + int fd = 0; + struct dirent *mydirent; + int i = 1; + if((dir = opendir( currentRemoteDir.canonicalPath().latin1())) != NULL) + while ((mydirent = readdir(dir)) != NULL) { + lstat( mydirent->d_name, &buf); + qDebug(mydirent->d_name); +// mode = buf.st_mode; + fileL.sprintf("%s", mydirent->d_name); +// fileS.sprintf("%d, %d", ); //this isn't correct + fileS.sprintf("%d,%d", (int) (buf.st_dev>>8)&0xFF, (int) buf.st_dev &0xFF); + fileDate.sprintf("%s", ctime( &buf.st_mtime)); + if( fileL.find(".") == -1 ){ + item= new QListViewItem( Remote_View, fileL, fileS, fileDate); + pm = Resource::loadPixmap( "UnknownDocument-14" ); + item->setPixmap( 0,pm); + } + } + + closedir(dir); + } + + Remote_View->setSorting( 3,FALSE); + fillCombo( (const QString &) currentRemoteDir.canonicalPath() ); +} + +void AdvancedFm::localListClicked(QListViewItem *selectedItem) +{ + if(selectedItem) { + QString strItem=selectedItem->text(0); + QString strSize=selectedItem->text(1); + strSize=strSize.stripWhiteSpace(); + 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); + if(QDir(strItem2).exists() ) { + currentDir.cd(strItem2, TRUE); + populateLocalView(); + } + } 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); + populateLocalView(); + } else { + currentDir.cdUp(); + populateLocalView(); + } + if(QDir(strItem).exists()){ + currentDir.cd(strItem, TRUE); + populateLocalView(); + } + } else { + strItem=QDir::cleanDirPath(currentDir.canonicalPath()+"/"+strItem); + if( QFile::exists(strItem ) ) { +// qDebug("upload "+strItem); + } + } //end not symlink + chdir(strItem.latin1()); + } + } +} + +void AdvancedFm::remoteListClicked(QListViewItem *selectedItem) +{ + if(selectedItem) { + QString strItem=selectedItem->text(0); + QString strSize=selectedItem->text(1); + strSize=strSize.stripWhiteSpace(); + 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); + if(QDir(strItem2).exists() ) { + currentRemoteDir.cd(strItem2, TRUE); + populateRemoteView(); + } + } else { // not a symlink + if(strItem.find(". .",0,TRUE) && strItem.find("/",0,TRUE)!=-1 ) { + if(QDir(QDir::cleanDirPath( currentRemoteDir.canonicalPath()+"/"+strItem)).exists() ) { + strItem=QDir::cleanDirPath( currentRemoteDir.canonicalPath()+"/"+strItem); + currentRemoteDir.cd(strItem,FALSE); + populateRemoteView(); + } else { + currentRemoteDir.cdUp(); + populateRemoteView(); + } + if(QDir(strItem).exists()){ + currentRemoteDir.cd(strItem, TRUE); + populateRemoteView(); + } + } else { + strItem=QDir::cleanDirPath( currentRemoteDir.canonicalPath()+"/"+strItem); + if( QFile::exists(strItem ) ) { +// qDebug("upload "+strItem); + } + } //end not symlink + chdir(strItem.latin1()); + } + } +} + +void AdvancedFm::doLocalCd() +{ + localListClicked( Local_View->currentItem()); +} + +void AdvancedFm::doRemoteCd() +{ + localListClicked( Remote_View->currentItem()); +} + +void AdvancedFm::showHidden() +{ + if (!b) { + currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); +// localMenu->setItemChecked(localMenu->idAt(0),TRUE); +// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); + b=TRUE; + + } else { + currentDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); +// localMenu->setItemChecked(localMenu->idAt(0),FALSE); +// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); + b=FALSE; + } + populateLocalView(); +} + +void AdvancedFm::showRemoteHidden() +{ + if (!b) { + currentRemoteDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); +// viewMenu->setItemChecked(localMenu->idAt(0),TRUE); +// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); + b=TRUE; + + } else { + currentRemoteDir.setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); +// localMenu->setItemChecked(localMenu->idAt(0),FALSE); +// currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); + b=FALSE; + } + populateRemoteView(); +} + +void AdvancedFm::localListPressed( int mouse, QListViewItem *item, const QPoint &point, int i) +{ + switch (mouse) { + case 1: + break; + case 2: + showLocalMenu(item); + Local_View->clearSelection(); + break; + }; +} + +void AdvancedFm::remoteListPressed( int mouse, QListViewItem *item, const QPoint &point, int i) +{ + switch (mouse) { + case 1: + break; + case 2: + showRemoteMenu(item); + Remote_View->clearSelection(); + break; + }; +} + +void AdvancedFm::showLocalMenu(QListViewItem * item) +{ + if(item) { + QPopupMenu m; + m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showHidden() )); + m.insertSeparator(); + if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1) + m.insertItem( tr( "Change Directory" ), this, SLOT( doLocalCd() )); + else + m.insertItem( tr( "Open" ), this, SLOT( runThis() )); + m.insertItem( tr( "Open as Text" ), this, SLOT( runText() )); + m.insertItem( tr( "Make Directory" ), this, SLOT( localMakDir() )); + m.insertItem( tr( "Rename" ), this, SLOT( localRename() )); + m.insertItem( tr( "Copy" ), this, SLOT( copy() )); + m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); + m.insertItem( tr( "Move" ), this, SLOT( move() )); + m.insertSeparator(); + m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); + m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); + m.insertSeparator(); + m.insertItem( tr( "Delete" ), this, SLOT( localDelete() )); + m.insertSeparator(); + m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); + m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); + m.setCheckable(TRUE); + if (b) + m.setItemChecked(m.idAt(0),TRUE); + else + m.setItemChecked(m.idAt(0),FALSE); + m.exec( QCursor::pos() ); + } +} + +void AdvancedFm::showRemoteMenu(QListViewItem * item) +{ + if(item) { + QPopupMenu m; + m.insertItem( tr( "Show Hidden Files" ), this, SLOT( showRemoteHidden() )); + m.insertSeparator(); + if( /*item->text(0).right(1) == "/" ||*/ item->text(0).find("/",0,TRUE) !=-1) + m.insertItem( tr( "Change Directory" ), this, SLOT( doRemoteCd() )); + else + m.insertItem( tr( "Open" ), this, SLOT( runThis() )); + m.insertItem( tr( "Open as Text" ), this, SLOT( runText() )); + m.insertItem( tr( "Make Directory" ), this, SLOT( remoteMakDir() )); + m.insertItem( tr( "Rename" ), this, SLOT( remoteRename() )); + m.insertItem( tr( "Copy" ), this, SLOT( copy() )); + m.insertItem( tr( "Copy As" ), this, SLOT( copyAs() )); + m.insertItem( tr( "Move" ), this, SLOT( move() )); + m.insertSeparator(); + m.insertItem( tr( "Run Command" ), this, SLOT( runCommand() )); + m.insertItem( tr( "File Info" ), this, SLOT( fileStatus() )); + m.insertSeparator(); + m.insertItem( tr( "Delete" ), this, SLOT( remoteDelete() )); + m.insertSeparator(); + m.insertItem( tr( "Set Permissions" ), this, SLOT( filePerms() )); + m.insertItem( tr( "Properties" ), this, SLOT( doProperties() )); + m.setCheckable(TRUE); + if (b) + m.setItemChecked(m.idAt(0),TRUE); + else + m.setItemChecked(m.idAt(0),FALSE); + m.exec( QCursor::pos() ); + } +} + +void AdvancedFm::runThis() { +// QFileInfo *fi; + if (TabWidget->currentPageIndex() == 0) { + QString curFile = Local_View->currentItem()->text(0); + curFile = currentDir.canonicalPath()+"/"+curFile; + DocLnk nf(curFile); + QString execStr = nf.exec(); + qDebug( execStr); + if( execStr.isEmpty() ) { + } else { + nf.execute(); + } +// MimeType mt( curFile); + } else { + QString curFile = Remote_View->currentItem()->text(0); + curFile = currentRemoteDir.canonicalPath()+"/"+curFile; + DocLnk nf(curFile); + QString execStr = nf.exec(); + qDebug(execStr); + if( execStr.isEmpty() ) { + } else { + nf.execute(); + } +// MimeType mt( curFile); + } +} + +void AdvancedFm::runText() { + if (TabWidget->currentPageIndex() == 0) { + QString curFile = Local_View->currentItem()->text(0); + curFile = currentDir.canonicalPath()+"/"+curFile; + QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); + e << curFile; + } else { + QString curFile = Remote_View->currentItem()->text(0); + curFile = currentRemoteDir.canonicalPath()+"/"+curFile; + DocLnk nf(curFile); + QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); + e << curFile; + } +} + +void AdvancedFm::localMakDir() +{ + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + currentDir.mkdir( currentDir.canonicalPath()+"/"+filename); + } + populateLocalView(); +} + +void AdvancedFm::remoteMakDir() +{ + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + currentRemoteDir.mkdir( currentRemoteDir.canonicalPath()+"/"+filename); + } + populateRemoteView(); +} + +void AdvancedFm::localDelete() +{ + QString f = Local_View->currentItem()->text(0); + if(QDir(f).exists() ) { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ + tr(" ?\nIt must be empty"),tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + f=currentDir.canonicalPath()+"/"+f; + QString cmd="rmdir "+f; + system( cmd.latin1()); + populateLocalView(); + } + break; + case 1: + // exit + break; + }; + + } else { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f + +" ?",tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + f=currentDir.canonicalPath()+"/"+f; + QString cmd="rm "+f; + system( cmd.latin1()); + populateLocalView(); + } + break; + case 1: + // exit + break; + }; + } +} + +void AdvancedFm::remoteDelete() +{ + QString f = Remote_View->currentItem()->text(0); + if(QDir(f).exists() ) { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f+ + tr(" ?\nIt must be empty"),tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + f = currentRemoteDir.canonicalPath()+"/"+f; + QString cmd="rmdir "+f; + system( cmd.latin1()); + populateRemoteView(); + } + break; + case 1: + // exit + break; + }; + + } else { + switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+f + +" ?",tr("Yes"),tr("No"),0,0,1) ) { + case 0: { + f = currentRemoteDir.canonicalPath()+"/"+f; + QString cmd="rm "+f; + system( cmd.latin1()); + populateRemoteView(); + } + break; + case 1: + // exit + break; + }; + } +} + +void AdvancedFm::localRename() +{ + QString curFile = Local_View->currentItem()->text(0); + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); + fileDlg->setInputText((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(tr("Note"),tr("Could not rename")); + } + populateLocalView(); +} + +void AdvancedFm::remoteRename() +{ + QString curFile = Local_View->currentItem()->text(0); + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Rename"),TRUE, 0); + fileDlg->setInputText((const QString &)curFile); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString oldname = currentRemoteDir.canonicalPath() + "/" + curFile; + QString newName = currentRemoteDir.canonicalPath() + "/" + fileDlg->LineEdit1->text();//+".playlist"; + if( rename(oldname.latin1(), newName.latin1())== -1) + QMessageBox::message(tr("Note"),tr("Could not rename")); + } + populateRemoteView(); +} + +void AdvancedFm::switchToLocalTab() +{ + TabWidget->setCurrentPage(0); +} + +void AdvancedFm::switchToRemoteTab() +{ + TabWidget->setCurrentPage(1); +} + +void AdvancedFm::readConfig() +{ + Config cfg("AdvancedFm"); +} + +void AdvancedFm::writeConfig() +{ + Config cfg("AdvancedFm"); +} + +void AdvancedFm::currentPathComboChanged() +{ + if (TabWidget->currentPageIndex() == 0) { + if(QDir( currentPathCombo->lineEdit()->text()).exists()) { + currentDir.setPath( currentPathCombo->lineEdit()->text() ); + populateLocalView(); + } else { + QMessageBox::message(tr("Note"),tr("That directory does not exist")); + } + } + if (TabWidget->currentPageIndex() == 0) { + if(QDir( currentPathCombo->lineEdit()->text()).exists()) { + currentRemoteDir.setPath( currentPathCombo->lineEdit()->text() ); + populateRemoteView(); + } else { + QMessageBox::message(tr("Note"),tr("That directory does not exist")); + } + } +} + +void AdvancedFm::fillCombo(const QString ¤tPath) { + + if (TabWidget->currentPageIndex() == 0) { + currentPathCombo->lineEdit()->setText( currentPath); + if( localDirPathStringList.grep(currentPath,TRUE).isEmpty() ) { + currentPathCombo->clear(); + localDirPathStringList.prepend( currentPath ); + currentPathCombo->insertStringList( localDirPathStringList,-1); + } + } else { + currentPathCombo->lineEdit()->setText( currentPath); + if( remoteDirPathStringList.grep( currentPath,TRUE).isEmpty() ) { + currentPathCombo->clear(); + remoteDirPathStringList.prepend( currentPath ); + currentPathCombo->insertStringList( remoteDirPathStringList,-1); + } + } +} + +void AdvancedFm::currentPathComboActivated(const QString & currentPath) { + if (TabWidget->currentPageIndex() == 0) { + chdir( currentPath.latin1() ); + currentDir.cd( currentPath, TRUE); + populateLocalView(); + update(); + } else { + chdir( currentPath.latin1() ); + currentRemoteDir.cd( currentPath, TRUE); + populateRemoteView(); + update(); + } +} + +void AdvancedFm::filePerms() { + QString curFile = getPath(); + filePermissions *filePerm; + filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(curFile)); + filePerm->showMaximized(); + filePerm->exec(); + if( filePerm) + delete filePerm; +} + +void AdvancedFm::doProperties() { + + DocLnk lnk( getPath()); + LnkProperties prop( &lnk ); +// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); + prop.showMaximized(); + prop.exec(); +} + +QString AdvancedFm::getPath() { + if (TabWidget->currentPageIndex() == 0) { + return currentDir.canonicalPath()+"/"+ Local_View->currentItem()->text(0); + } else { + return currentRemoteDir.canonicalPath() + "/"+Remote_View->currentItem()->text(0); + } +} + +void AdvancedFm::homeButtonPushed() { + QString current = QDir::homeDirPath(); + chdir( current.latin1() ); + if (TabWidget->currentPageIndex() == 0) { + currentDir.cd( current, TRUE); + populateLocalView(); + } else { + currentRemoteDir.cd( current, TRUE); + populateRemoteView(); + } + update(); +} + +void AdvancedFm::docButtonPushed() { + QString current = QPEApplication::documentDir(); + chdir( current.latin1() ); + if (TabWidget->currentPageIndex() == 0) { + currentDir.cd( current, TRUE); + populateLocalView(); + } else { + currentRemoteDir.cd( current, TRUE); + populateRemoteView(); + } + update(); +} + +void AdvancedFm::SDButtonPushed() { + QString current = "/mnt/card"; + chdir( current.latin1() ); + if (TabWidget->currentPageIndex() == 0) { + currentDir.cd( current, TRUE); + populateLocalView(); + } else { + currentRemoteDir.cd( current, TRUE); + populateRemoteView(); + } + update(); + +} + +void AdvancedFm::CFButtonPushed() { + QString current = "/mnt/cf"; + chdir( current.latin1() ); + if (TabWidget->currentPageIndex() == 0) { + currentDir.cd( current, TRUE); + populateLocalView(); + } else { + currentRemoteDir.cd( current, TRUE); + populateRemoteView(); + } + update(); + +} + + +void AdvancedFm::upDir() +{ + if (TabWidget->currentPageIndex() == 0) { + QString current = currentDir.canonicalPath(); + QDir dir(current); + dir.cdUp(); + current = dir.canonicalPath(); + chdir( current.latin1() ); + currentDir.cd( current, TRUE); + populateLocalView(); + update(); + } else { + QString current = currentRemoteDir.canonicalPath(); + QDir dir(current); + dir.cdUp(); + current = dir.canonicalPath(); + chdir( current.latin1() ); + currentRemoteDir.cd( current, TRUE); + populateRemoteView(); + update(); + } +} + +void AdvancedFm::copy() +{ + QString curFile = getPath(); + if (TabWidget->currentPageIndex() == 0) { + QString destFile = currentRemoteDir.canonicalPath()+"/"+Local_View->currentItem()->text(0); + QFile f(destFile); + if( f.exists()) + f.remove(); + if(!copyFile(destFile, curFile) ) + qWarning("nothin doing"); + populateRemoteView(); + TabWidget->setCurrentPage(1); + } else { + QString destFile = currentDir.canonicalPath()+"/"+Remote_View->currentItem()->text(0); + QFile f(destFile); + if( f.exists()) + f.remove(); + if(!copyFile(destFile, curFile) ) + qWarning("nothin doing"); + populateLocalView(); + TabWidget->setCurrentPage(0); + } +} + +void AdvancedFm::copyAs() +{ + QString curFile = getPath(); + if (TabWidget->currentPageIndex() == 0) { + QString destFile = Local_View->currentItem()->text(0); + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); + fileDlg->setInputText((const QString &) destFile ); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + destFile = currentRemoteDir.canonicalPath()+"/"+destFile; + + QFile f(destFile); + if( f.exists()) + f.remove(); + if(!copyFile(destFile, curFile) ) + qWarning("nothin doing"); + } + populateRemoteView(); + TabWidget->setCurrentPage(1); + } else { + QString destFile = Remote_View->currentItem()->text(0); + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Copy As"),TRUE, 0); + fileDlg->setInputText((const QString &) destFile); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + destFile = currentDir.canonicalPath()+"/"+destFile; + + QFile f(destFile); + if( f.exists()) + f.remove(); + if(!copyFile(destFile, curFile) ) + qWarning("nothin doing"); + } + populateLocalView(); + TabWidget->setCurrentPage(0); + } +} + +void AdvancedFm::move() { + QString curFile = getPath(); +// qDebug(curFile); + QString destFile; + if (TabWidget->currentPageIndex() == 0) { + QString destFile = currentRemoteDir.canonicalPath()+Local_View->currentItem()->text(0); +// qDebug(destFile); + + QFile f(destFile); + if( f.exists()) + f.remove(); + if(!copyFile( destFile, curFile) ) { + QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile)); + return; + } + QFile::remove(curFile); + TabWidget->setCurrentPage(1); + } else { + QString destFile = currentDir.canonicalPath()+destFile + Remote_View->currentItem()->text(0); +// qDebug(destFile); + + QFile f(destFile); + if( f.exists()) + f.remove(); + if(!copyFile(destFile, curFile) ) { + QMessageBox::message(tr("Note"),tr("Could not move\n"+curFile)); + return; + } + QFile::remove(curFile); + TabWidget->setCurrentPage(0); + } + populateRemoteView(); + populateLocalView(); +} + +bool AdvancedFm::copyFile( const QString & dest, const QString & src ) +{ + char bf[ 50000 ]; + int bytesRead; + bool success = TRUE; + struct stat status; + + QFile s( src ); + QFile d( dest ); + + if( s.open( IO_ReadOnly | IO_Raw ) && d.open( IO_WriteOnly | IO_Raw ) ) { + while( (bytesRead = s.readBlock( bf, sizeof( bf ) )) == sizeof( bf ) ) { + if( d.writeBlock( bf, sizeof( bf ) ) != sizeof( bf ) ){ + success = FALSE; + break; + } + } + if( success && (bytesRead > 0) ){ + d.writeBlock( bf, bytesRead ); + } + } else { + success = FALSE; + } + + // Set file permissions + if( stat( (const char *) src, &status ) == 0 ){ + chmod( (const char *) dest, status.st_mode ); + } + + return success; +} + +void AdvancedFm::runCommand() { + QString curFile; + if (TabWidget->currentPageIndex() == 0) { + if( Local_View->currentItem()) + curFile = currentDir.canonicalPath() + Local_View->currentItem()->text(0); + } else { + if(Remote_View->currentItem()) + curFile = currentRemoteDir.canonicalPath() + Remote_View->currentItem()->text(0); + } + + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); + fileDlg->setInputText(curFile); + fileDlg->exec(); + QString command; + if( fileDlg->result() == 1 ) { + command = fileDlg->LineEdit1->text(); + + int err=0; + Output *outDlg; + outDlg = new Output(this, tr("Formatter Output"),FALSE); + outDlg->showMaximized(); + outDlg->show(); + qApp->processEvents(); + FILE *fp; + char line[130]; + sleep(1); +// if(command.find("2>",0,TRUE) != -1) + command +=" 2>&1"; + fp = popen( (const char *) command, "r"); + if ( !fp ) { + qDebug("Could not execute '" + command + "'! err=%d", fp); + QMessageBox::warning( this, tr("AdvancedFm"), tr("command failed!"), tr("&OK") ); + pclose(fp); + return; + } else { + while ( fgets( line, sizeof line, fp)) { + outDlg->OutputEdit->append(line); + outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); + + } + + } + + } + +} + +void AdvancedFm::runCommandStd() { + QString curFile; + if (TabWidget->currentPageIndex() == 0) { + if( Local_View->currentItem()) + curFile = currentDir.canonicalPath() + Local_View->currentItem()->text(0); + } else { + if(Remote_View->currentItem()) + curFile = currentRemoteDir.canonicalPath() + Remote_View->currentItem()->text(0); + } + + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); + fileDlg->setInputText(curFile); + fileDlg->exec(); + QString command; + if( fileDlg->result() == 1 ) { + qApp->processEvents(); + command = fileDlg->LineEdit1->text() + " &"; + system(command.latin1()); + } +} + +void AdvancedFm::fileStatus() { + QString curFile; + if (TabWidget->currentPageIndex() == 0) { + curFile = Local_View->currentItem()->text(0); + } else { + curFile = Remote_View->currentItem()->text(0); + } + QString command = " stat -l "+ curFile +" 2>&1"; + int err=0; + Output *outDlg; + outDlg = new Output(this, tr("Formatter Output"),FALSE); + outDlg->showMaximized(); + outDlg->show(); + qApp->processEvents(); + FILE *fp; + char line[130]; + sleep(1); + fp = popen( (const char *) command, "r"); + if ( !fp ) { + qDebug("Could not execute '" + command + "'! err=%d", fp); + QMessageBox::warning( this, tr("AdvancedFm"), tr("command failed!"), tr("&OK") ); + pclose(fp); + return; + } else { + while ( fgets( line, sizeof line, fp)) { + outDlg->OutputEdit->append(line); + outDlg->OutputEdit->setCursorPosition(outDlg->OutputEdit->numLines() + 1,0,FALSE); + + } + + } +} diff --git a/noncore/apps/advancedfm/advancedfm.h b/noncore/apps/advancedfm/advancedfm.h new file mode 100644 index 0000000..2ca45b1 --- a/dev/null +++ b/noncore/apps/advancedfm/advancedfm.h @@ -0,0 +1,118 @@ +/*************************************************************************** + opieftp.h + ------------------- +** Created: Sat Mar 9 23:33:09 2002 + copyright : (C) 2002 by ljp + email : ljp@llornkcor.com + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#ifndef ADVANCEDFM_H +#define ADVANCEDFM_H + +#include <qvariant.h> +#include <qdialog.h> +#include <qmainwindow.h> +#include <qdir.h> +#include <qstring.h> +#include <qpoint.h> + +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QComboBox; +class QListView; +class QListviewItem; +class QLabel; +class QProgressBar; +class QSpinBox; +class QTabWidget; +class QWidget; +class QPEToolBar; +class QPEMenuBar; +class QPopupMenu; +class QFile; +class QListViewItem; +class QLineEdit; +class QPushButton; + +class AdvancedFm : public QMainWindow +{ + Q_OBJECT +public: + AdvancedFm(); + ~AdvancedFm(); + + QTabWidget *TabWidget; + QWidget *tab, *tab_2, *tab_3; + QListView *Local_View, *Remote_View; + + QLineEdit *currentPathEdit; + QPopupMenu *fileMenu, *localMenu, *remoteMenu, *viewMenu; + QPushButton *homeButton, *docButton, *cdUpButton, *sdButton, *cfButton; + QDir currentDir, currentRemoteDir; + QComboBox *currentPathCombo; + QString filterStr; + QListViewItem * item; + bool b; + int currentServerConfig; +protected slots: + void showLocalMenu( QListViewItem *); + void showRemoteMenu( QListViewItem *); + void doLocalCd(); + void doRemoteCd(); +// void copy(); + + void populateLocalView(); + void populateRemoteView(); + void showHidden(); + void showRemoteHidden(); + void writeConfig(); + void readConfig(); + void localListClicked(QListViewItem *); + void remoteListClicked(QListViewItem *); + void localListPressed( int, QListViewItem *, const QPoint&, int); + void remoteListPressed( int, QListViewItem *, const QPoint&, int); + void localMakDir(); + void localDelete(); + void remoteMakDir(); + void remoteDelete(); +/* bool remoteDirList(const QString &); */ +/* bool remoteChDir(const QString &); */ + void tabChanged(QWidget*); + void cleanUp(); + void remoteRename(); + void localRename(); + void runThis(); + void runText(); + void filePerms(); + void doProperties(); + void runCommand(); + void runCommandStd(); + QString getPath(); + void switchToLocalTab(); + void switchToRemoteTab(); + +protected: + QGridLayout *tabLayout, *tabLayout_2, *tabLayout_3; + QStringList remoteDirPathStringList, localDirPathStringList; + +protected slots: + void homeButtonPushed(); + void docButtonPushed(); + void SDButtonPushed(); + void CFButtonPushed(); + void upDir(); + void currentPathComboChanged(); + void copy(); + void copyAs(); + void currentPathComboActivated(const QString &); + void fillCombo(const QString &); + bool copyFile( const QString & , const QString & ); + void move(); + void fileStatus(); +}; + +#endif // ADVANCEDFM_H diff --git a/noncore/apps/advancedfm/advancedfm.pro b/noncore/apps/advancedfm/advancedfm.pro new file mode 100644 index 0000000..25fb782 --- a/dev/null +++ b/noncore/apps/advancedfm/advancedfm.pro @@ -0,0 +1,11 @@ +TEMPLATE = app +CONFIG += qt warn_on release +HEADERS = advancedfm.h inputDialog.h filePermissions.h output.h +SOURCES = advancedfm.cpp inputDialog.cpp filePermissions.cpp output.cpp main.cpp +TARGET = advancedfm +REQUIRES=medium-config +INCLUDEPATH += $(OPIEDIR)/include +DEPENDPATH += $(OPIEDIR)/include +DESTDIR = $(OPIEDIR)/bin +LIBS += -lqpe + diff --git a/noncore/apps/advancedfm/filePermissions.cpp b/noncore/apps/advancedfm/filePermissions.cpp new file mode 100644 index 0000000..c06f14f --- a/dev/null +++ b/noncore/apps/advancedfm/filePermissions.cpp @@ -0,0 +1,274 @@ +/**************************************************************************** +** copyright 2002 ljp ljp@llornkcor.com +** Created: Sat Feb 23 19:44:40 2002 L.J. Potter +** +** 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 "filePermissions.h" + +#include <qfile.h> +#include <qfileinfo.h> + +#include <qcheckbox.h> +#include <qlabel.h> +#include <qlineedit.h> +#include <qlayout.h> +#include <qvariant.h> +#include <qtooltip.h> +#include <qmessagebox.h> + +#include <unistd.h> +#include <sys/stat.h> +#include <stdlib.h> +#include <sys/types.h> +#include <pwd.h> +#include <grp.h> + +filePermissions::filePermissions( QWidget* parent, const char* name, bool modal, WFlags fl, const QString &fileName ) + : QDialog( parent, name, modal, fl ) +{ + if ( !name ) + setName( "filePermissions" ); +// qDebug("FilePermissions "+fileName); +/* resize( 236, 210 ); + setMaximumSize( QSize( 236, 210 ) ); +*/ setCaption( tr( "Set File Permissions" ) ); + + TextLabel1 = new QLabel( this, "TextLabel1" ); + TextLabel1->setGeometry( QRect( 25, 5, 175, 20 ) ); + TextLabel1->setText( tr( "Set file permissions for:" ) ); + + LineEdit1 = new QLineEdit( this, "LineEdit1" ); + LineEdit1->setGeometry( QRect( 10, 25, 218, 22 ) ); + LineEdit1->setReadOnly(true); + + TextLabel4 = new QLabel( this, "TextLabel4" ); + TextLabel4->setGeometry( QRect( 5, 85, 50, 15 ) ); + TextLabel4->setText( tr( "owner" ) ); + + TextLabel4_2 = new QLabel( this, "TextLabel4_2" ); + TextLabel4_2->setGeometry( QRect( 5, 105, 50, 15 ) ); + TextLabel4_2->setText( tr( "group" ) ); + + TextLabel4_3 = new QLabel( this, "TextLabel4_3" ); + TextLabel4_3->setGeometry( QRect( 5, 125, 50, 15 ) ); + TextLabel4_3->setText( tr( "others" ) ); + + CheckBox1 = new QCheckBox( this, "CheckBox1" ); + CheckBox1->setGeometry( QRect( 75, 85, 20, 16 ) ); + connect(CheckBox1, SIGNAL(released()),this,SLOT(ownReadCheck())); + + CheckBox1_2 = new QCheckBox( this, "CheckBox1_2" ); + CheckBox1_2->setGeometry( QRect( 135, 85, 20, 16 ) ); + connect(CheckBox1_2, SIGNAL(released()),this,SLOT(ownWriteCheck())); + + CheckBox1_3 = new QCheckBox( this, "CheckBox1_3" ); + CheckBox1_3->setGeometry( QRect( 195, 85, 20, 16 ) ); + connect(CheckBox1_3, SIGNAL(released()),this,SLOT(ownExeCheck())); + + CheckBox1_4 = new QCheckBox( this, "CheckBox1_4" ); + CheckBox1_4->setGeometry( QRect( 75, 105, 20, 16 ) ); + connect(CheckBox1_4, SIGNAL(released()),this,SLOT(grpReadCheck())); + + CheckBox1_5 = new QCheckBox( this, "CheckBox1_5" ); + CheckBox1_5->setGeometry( QRect( 135, 105, 20, 16 ) ); + connect(CheckBox1_5, SIGNAL(released()),this,SLOT(grpWriteCheck())); + + CheckBox1_6 = new QCheckBox( this, "CheckBox1_6" ); + CheckBox1_6->setGeometry( QRect( 195, 105, 20, 16 ) ); + connect(CheckBox1_6, SIGNAL(released()),this,SLOT(grpExeCheck())); + + CheckBox1_7 = new QCheckBox( this, "CheckBox1_7" ); + CheckBox1_7->setGeometry( QRect( 75, 125, 16, 16 ) ); + connect(CheckBox1_7, SIGNAL(released()),this,SLOT(wrldReadCheck())); + + CheckBox1_8 = new QCheckBox( this, "CheckBox1_8" ); + CheckBox1_8->setGeometry( QRect( 135, 125, 20, 16 ) ); + connect(CheckBox1_8, SIGNAL(released()),this,SLOT(wrldWriteCheck())); + + CheckBox1_8_2 = new QCheckBox( this, "CheckBox1_8_2" ); + CheckBox1_8_2->setGeometry( QRect( 195, 125, 20, 16 ) ); + connect(CheckBox1_8_2, SIGNAL(released()),this,SLOT(wrldExeCheck())); + + GroupLineEdit = new QLineEdit( this, "GroupLineEdit" ); + GroupLineEdit->setGeometry( QRect( 125, 155, 106, 22 ) ); + + OwnerLineEdit = new QLineEdit( this, "OwnerLineEdit" ); + OwnerLineEdit->setGeometry( QRect( 10, 155, 106, 22 ) ); + + TextLabel5 = new QLabel( this, "TextLabel5" ); + TextLabel5->setGeometry( QRect( 45, 180, 40, 16 ) ); + TextLabel5->setText( tr( "Owner" ) ); + + TextLabel5_2 = new QLabel( this, "TextLabel5_2" ); + TextLabel5_2->setGeometry( QRect( 155, 180, 40, 16 ) ); + TextLabel5_2->setText( tr( "Group" ) ); + + ModeLine = new QLineEdit( this, "TextLabelMode" ); + ModeLine->setGeometry( QRect( 10, 60, 40, 15 ) ); + + TextLabel3_2 = new QLabel( this, "TextLabel3_2" ); + TextLabel3_2->setGeometry( QRect( 60, 55, 50, 20 ) ); + TextLabel3_2->setText( tr( "read" ) ); + TextLabel3_2->setAlignment( int( QLabel::AlignBottom | QLabel::AlignHCenter ) ); + + TextLabel3_2_2 = new QLabel( this, "TextLabel3_2_2" ); + TextLabel3_2_2->setGeometry( QRect( 120, 55, 50, 20 ) ); + TextLabel3_2_2->setText( tr( "write" ) ); + TextLabel3_2_2->setAlignment( int( QLabel::AlignBottom | QLabel::AlignHCenter ) ); + + TextLabel3 = new QLabel( this, "TextLabel3" ); + TextLabel3->setGeometry( QRect( 180, 55, 50, 20 ) ); + TextLabel3->setText( tr( "execute" ) ); + TextLabel3->setAlignment( int( QLabel::AlignBottom | QLabel::AlignHCenter ) ); + + struct stat buf; + mode_t mode; + file = fileName; + QFileInfo fi(file); + + LineEdit1->setText( file); + OwnerLineEdit->setText( fi.owner()); + GroupLineEdit->setText( fi.group()); + + if( fi.permission( QFileInfo::ReadUser)) { CheckBox1->setChecked(true); } + if( fi.permission( QFileInfo::WriteUser)) { CheckBox1_2->setChecked(true); } + if( fi.permission( QFileInfo::ExeUser)) { CheckBox1_3->setChecked(true); } + + if( fi.permission( QFileInfo::ReadGroup)) { CheckBox1_4->setChecked(true); } + if( fi.permission( QFileInfo::WriteGroup)) { CheckBox1_5->setChecked(true); } + if( fi.permission( QFileInfo::ExeGroup)) { CheckBox1_6->setChecked(true); } + + if( fi.permission( QFileInfo::ReadOther)) { CheckBox1_7->setChecked(true); } + if( fi.permission( QFileInfo::WriteOther)) { CheckBox1_8->setChecked(true); } + if( fi.permission( QFileInfo::ExeOther)) { CheckBox1_8_2->setChecked(true); } + + stat(file.latin1(), &buf); + mode = buf.st_mode; + modeStr.sprintf("%#o", buf.st_mode & ~(S_IFMT) ); + ModeLine->setText(modeStr); + bool ok; + i_mode = modeStr.toInt(&ok,10); + +} + +/* + * Destroys the object and frees any allocated resources + */ +filePermissions::~filePermissions() +{ +} + + +// might this be better as a callback routine??? +void filePermissions::ownReadCheck() { + if(CheckBox1->isChecked()) { i_mode +=400; } + else i_mode -=400; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText( modeStr); +// 0400 +} + +void filePermissions::ownWriteCheck() { + if(CheckBox1_2->isChecked()) { i_mode +=200; } + else i_mode -=200; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0200 +} + +void filePermissions::ownExeCheck() { + if(CheckBox1_3->isChecked()) { i_mode +=100; } + else i_mode -=100; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0100 +} + +void filePermissions::grpReadCheck() { + if(CheckBox1_4->isChecked()) { i_mode +=40; } + else i_mode -=40; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0040 +} + +void filePermissions::grpWriteCheck() { + if(CheckBox1_5->isChecked()) { i_mode +=20; } + else i_mode -=20; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0020 +} + +void filePermissions::grpExeCheck() { + if(CheckBox1_6->isChecked()) { i_mode +=10; } + else i_mode -=10; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0010 +} + +void filePermissions::wrldReadCheck() { + if(CheckBox1_7->isChecked()) { i_mode +=4; } + else i_mode -=4; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0004 +} + +void filePermissions::wrldWriteCheck() { + if(CheckBox1_8->isChecked()) { i_mode +=2; } + else i_mode -=2; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0002 +} + +void filePermissions::wrldExeCheck() { + if(CheckBox1_8_2->isChecked()) { i_mode +=1; } + else i_mode -=1; + modeStr.sprintf("0%d",i_mode); + ModeLine->setText(modeStr); +// 0001 +} + +void filePermissions::accept() { + + QFileInfo fi(file); + struct passwd *pwd=0; + struct group *grp=0; + pwd = getpwnam(OwnerLineEdit->text().latin1() ); + if(pwd == NULL) { + perror("getpwnam"); + QMessageBox::warning(this,"Warning","Error- no user"); + return; + } else { + grp = getgrnam(GroupLineEdit->text().latin1()); + if(grp==NULL) { + perror("getgrnam"); + QMessageBox::warning(this,"Warning","Error- no group"); + return; + } + if( chown( file.latin1(), pwd->pw_uid, grp->gr_gid) <0) { + perror("chown"); + QMessageBox::warning(this,"Warning","Error setting ownership or group"); + return; + } + bool ok; + uint moder = modeStr.toUInt(&ok,8); + if( chmod( file.latin1(), moder) < 0) { + perror("chmod"); + QMessageBox::warning(this,"Warning","Error setting mode"); + return; + } + } + close(); +} diff --git a/noncore/apps/advancedfm/filePermissions.h b/noncore/apps/advancedfm/filePermissions.h new file mode 100644 index 0000000..880304f --- a/dev/null +++ b/noncore/apps/advancedfm/filePermissions.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** copyright 2002 ljp ljp@llornkcor.com +** Created: Sat Feb 23 19:44:17 2002 +** +** 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 FILEPERMISSIONS_H +#define FILEPERMISSIONS_H + +#include <qvariant.h> +#include <qdialog.h> +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QCheckBox; +class QLabel; +class QLineEdit; +class QString; + +class filePermissions : public QDialog +{ + Q_OBJECT + +public: + filePermissions( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 , const QString & fileName =""); + ~filePermissions(); + + QLineEdit *LineEdit1, *ModeLine; + QLabel *TextLabel1, *TextLabel4, *TextLabel4_2, *TextLabel4_3, *TextLabel3_2_2, *TextLabel3_2, *TextLabel3, *TextLabel5_2, *TextLabel5; + QCheckBox*CheckBox1, *CheckBox1_3, *CheckBox1_2, *CheckBox1_4, *CheckBox1_5, *CheckBox1_6, *CheckBox1_7, *CheckBox1_8, *CheckBox1_8_2; + QLineEdit*GroupLineEdit, *OwnerLineEdit; + QString modeStr, file; + int i_mode; +private slots: + void ownReadCheck(); + void ownWriteCheck(); + void ownExeCheck(); + + void grpReadCheck(); + void grpWriteCheck(); + void grpExeCheck(); + + void wrldReadCheck(); + void wrldWriteCheck(); + void wrldExeCheck(); + void accept(); +}; + +#endif // FILEPERMISSIONS_H diff --git a/noncore/apps/advancedfm/inputDialog.cpp b/noncore/apps/advancedfm/inputDialog.cpp new file mode 100644 index 0000000..5af0f72 --- a/dev/null +++ b/noncore/apps/advancedfm/inputDialog.cpp @@ -0,0 +1,44 @@ +/**************************************************************************** + inputDialog.cpp + ------------------- +** Created: Sat Mar 9 23:33:09 2002 + copyright : (C) 2002 by ljp + email : ljp@llornkcor.com + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ + +#include "inputDialog.h" + +#include <qlineedit.h> +#include <qlayout.h> +#include <qvariant.h> +#include <qtooltip.h> +#include <qwhatsthis.h> + + +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::setInputText(const QString &string) +{ +LineEdit1->setText( string); +} diff --git a/noncore/apps/advancedfm/inputDialog.h b/noncore/apps/advancedfm/inputDialog.h new file mode 100644 index 0000000..114a3a8 --- a/dev/null +++ b/noncore/apps/advancedfm/inputDialog.h @@ -0,0 +1,35 @@ +/*************************************************************************** + inputDialog.h + ------------------- +** Created: Sat Mar 9 23:33:09 2002 + copyright : (C) 2002 by ljp + email : ljp@llornkcor.com + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#ifndef INPUTDIALOG_H +#define INPUTDIALOG_H + +#include <qvariant.h> +#include <qdialog.h> +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QLineEdit; + +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 setInputText(const QString &); + +}; + +#endif // INPUTDIALOG_H diff --git a/noncore/apps/advancedfm/main.cpp b/noncore/apps/advancedfm/main.cpp new file mode 100644 index 0000000..a0401e8 --- a/dev/null +++ b/noncore/apps/advancedfm/main.cpp @@ -0,0 +1,31 @@ + +/*************************************************************************** + main.cpp - description + ------------------- + begin : March 10, 2002 + copyright : (C) 2002 by llornkcor + email : ljp@llornkcor.com + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#include <qpe/qpeapplication.h> +#include <qpe/qcopenvelope_qws.h> +#include <qpe/config.h> +#include <qstring.h> +#include <qstringlist.h> + + + +#include "advancedfm.h" + +int main(int argc, char *argv[]) +{ + QPEApplication a(argc, argv); + + AdvancedFm advencedFm; + a.showMainWidget( &advencedFm); + return a.exec(); +} + diff --git a/noncore/apps/advancedfm/output.cpp b/noncore/apps/advancedfm/output.cpp new file mode 100644 index 0000000..6970f58 --- a/dev/null +++ b/noncore/apps/advancedfm/output.cpp @@ -0,0 +1,38 @@ +/**************************************************************************** +** outputEdit.cpp +** +** Copyright: Fri Apr 12 15:12:58 2002 L.J. Potter <ljp@llornkcor.com> +****************************************************************************/ +#include "output.h" + +#include <qmultilineedit.h> +#include <qpushbutton.h> +#include <qlayout.h> +#include <qvariant.h> +#include <qtooltip.h> +#include <qwhatsthis.h> + +Output::Output( QWidget* parent, const char* name, bool modal, WFlags fl ) + : QDialog( parent, name, modal, fl ) +{ + if ( !name ) + setName( "Output" ); + resize( 196, 269 ); + setCaption( name ); + OutputLayout = new QGridLayout( this ); + OutputLayout->setSpacing( 6 ); + OutputLayout->setMargin( 11 ); + + OutputEdit = new QMultiLineEdit( this, "OutputEdit" ); + + OutputLayout->addWidget( OutputEdit, 0, 0 ); +} + +/* + * Destroys the object and frees any allocated resources + */ +Output::~Output() +{ + // no need to delete child widgets, Qt does it all for us +} + diff --git a/noncore/apps/advancedfm/output.h b/noncore/apps/advancedfm/output.h new file mode 100644 index 0000000..84adccd --- a/dev/null +++ b/noncore/apps/advancedfm/output.h @@ -0,0 +1,33 @@ +/**************************************************************************** +** Form interface generated from reading ui file 'outputEdit.ui' +** +** Created: Fri Apr 12 15:12:44 2002 +** by: The User Interface Compiler (uic) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ +#ifndef OUTPUT_H +#define OUTPUT_H + +#include <qvariant.h> +#include <qdialog.h> +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QMultiLineEdit; + +class Output : public QDialog +{ + Q_OBJECT + +public: + Output( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + ~Output(); + + QMultiLineEdit* OutputEdit; + +protected: + QGridLayout* OutputLayout; +}; + +#endif // OUTPUT_H |