summaryrefslogtreecommitdiff
path: root/core/apps/textedit/fileBrowser.cpp
authorllornkcor <llornkcor>2002-02-18 14:08:55 (UTC)
committer llornkcor <llornkcor>2002-02-18 14:08:55 (UTC)
commit9741205aa0b0892b870d2b7df7c5dd7e25b0bb18 (patch) (side-by-side diff)
tree7f2f3d44ff3215984bd8b487b206d3d958a498da /core/apps/textedit/fileBrowser.cpp
parent0640b30f13beb9d6480d8042ec5397a68e6247fc (diff)
downloadopie-9741205aa0b0892b870d2b7df7c5dd7e25b0bb18.zip
opie-9741205aa0b0892b870d2b7df7c5dd7e25b0bb18.tar.gz
opie-9741205aa0b0892b870d2b7df7c5dd7e25b0bb18.tar.bz2
added fontDialog, fileBrowserDialog, and fileSave dialog, so we can edit anyfile, save anywhere,
using a user selected name. Changed what is seen when it opens. It now opens with the texteditor opened to a new file, instead of the file selector, unless one is specified from commandline, or setDocument message. FileSelector is still available, but from a menu item.
Diffstat (limited to 'core/apps/textedit/fileBrowser.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/textedit/fileBrowser.cpp160
1 files changed, 160 insertions, 0 deletions
diff --git a/core/apps/textedit/fileBrowser.cpp b/core/apps/textedit/fileBrowser.cpp
new file mode 100644
index 0000000..82ccf2c
--- a/dev/null
+++ b/core/apps/textedit/fileBrowser.cpp
@@ -0,0 +1,160 @@
+/****************************************************************************
+** 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.
+**
+****************************************************************************/
+#include "fileBrowser.h"
+#include <qpe/config.h>
+
+#include <qlistview.h>
+#include <qpushbutton.h>
+#include <qfile.h>
+#include <qmessagebox.h>
+#include <unistd.h>
+
+fileBrowser::fileBrowser( QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter )
+ : QDialog( parent, name, modal, fl )
+{
+ if ( !name )
+ setName( "fileBrowser" );
+ resize( 236, 280 );
+ setCaption(tr( "Browse for file" ) );
+ filterStr=filter;
+ dirLabel = new QLabel(this, "DirLabel");
+ dirLabel->setText(currentDir.canonicalPath());
+ dirLabel->setGeometry(10,4,230,30);
+ ListView = new QListView( this, "ListView" );
+ ListView->addColumn( tr( "Name" ) );
+ ListView->setColumnWidth(0,140);
+ ListView->setSorting( 2, FALSE);
+ ListView->addColumn( tr( "Size" ) );
+ ListView->setColumnWidth(1,59);
+// ListView->addColumn( tr( "" ) );
+// ListView->setColumnWidth(1,59);
+// ListView->setMultiSelection(true);
+// ListView->setSelectionMode(QListView::Extended);
+
+ ListView->setAllColumnsShowFocus( TRUE );
+ ListView->setGeometry( QRect( 10, 35, 220, 240 ) );
+
+ // signals and slots connections
+ connect( ListView, SIGNAL(doubleClicked( QListViewItem*)), SLOT(listDoubleClicked(QListViewItem *)) );
+ connect( ListView, SIGNAL(pressed( QListViewItem*)), SLOT(listClicked(QListViewItem *)) );
+ currentDir.setPath(QDir::currentDirPath());
+ populateList();
+}
+
+fileBrowser::~fileBrowser()
+{
+}
+
+
+void fileBrowser::populateList()
+{
+ ListView->clear();
+//qDebug(currentDir.canonicalPath());
+ currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden );
+ currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst);
+ currentDir.setMatchAllDirs(TRUE);
+
+ currentDir.setNameFilter(filterStr);
+// currentDir.setNameFilter("*.txt;*.etx");
+ QString fileL, fileS;
+ 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+="/";
+// qDebug(currentDir.canonicalPath()+fileL);
+ }
+ }
+ item= new QListViewItem( ListView,fileL,fileS );
+ ++it;
+ }
+ ListView->setSorting( 2, FALSE);
+ dirLabel->setText("Current Directory:\n"+currentDir.canonicalPath());
+}
+
+void fileBrowser::upDir()
+{
+// qDebug(currentDir.canonicalPath());
+}
+
+void fileBrowser::listDoubleClicked(QListViewItem *selectedItem)
+{
+}
+
+// you may want to switch these 2 functions. I like single clicks
+void fileBrowser::listClicked(QListViewItem *selectedItem)
+{
+ QString strItem=selectedItem->text(0);
+ QString strSize=selectedItem->text(1);
+// qDebug("strItem is "+strItem);
+ 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
+ if( QFile::exists(strItem ) ) {
+// qDebug("We found our files!!");
+ 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();
+}