summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector.cc217
1 files changed, 112 insertions, 105 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 7481360..6748bec 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -1,10 +1,11 @@
+#include <qwmatrix.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qheader.h>
#include <qlabel.h>
#include <qabstractlayout.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qlistview.h>
@@ -35,27 +36,27 @@
QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0;
namespace {
int indexByString( const QComboBox *box, const QString &str ){
int index= 0;
for(int i= 0; i < box->count(); i++ ){
if( str == box->text(i ) ){
- index= i;
- break;
+ index= i;
+ break;
}
}
return index;
}
class OFileSelectorItem : public QListViewItem {
public:
OFileSelectorItem(QListView *view, const QPixmap &pixmap, const QString &path,
- const QString &date, const QString &size, const QString &mDir,
- bool isLocked=false, bool isDir=false ): QListViewItem(view) {
+ const QString &date, const QString &size, const QString &mDir,
+ bool isLocked=false, bool isDir=false ): QListViewItem(view) {
setPixmap(0, pixmap );
setText(1, path );
setText(2, size );
setText(3, date );
//setText(4, mDir );
m_dir = mDir;
dir = isDir;
mLocked = isLocked;
@@ -70,58 +71,58 @@ namespace {
return dir;
}
QString path()const{
return text(1 );
}
QString key(int id, bool )const {
QString ke;
if( id == 0 || id == 1 ){ // name
- if( dir ){
- ke.append("0" );
- ke.append( text(1) );
- }else{
- ke.append("1" );
- ke.append( text(1) );
- }
+ if( dir ){
+ ke.append("0" );
+ ke.append( text(1) );
+ }else{
+ ke.append("1" );
+ ke.append( text(1) );
+ }
}else if( id == 2 ){ // size
- return text(2);
+ return text(2);
}else if( id == 3 ){ // date
- return text(3);
+ return text(3);
}
return ke;
};
private:
bool mLocked:1;
bool dir:1;
QString m_dir;
};
};
OFileSelector::OFileSelector( QWidget *wid, int mode, int selector,
- const QString &dirName,
- const QString &fileName,
+ const QString &dirName,
+ const QString &fileName,
const QMap<QString,QStringList>& mimeTypes)
: QWidget( wid, "OFileSelector")
{
m_mimetypes = mimeTypes;
if (mode == SAVE )
m_name = fileName;
initVars();
m_mode = mode;
m_selector = selector;
m_currentDir = dirName;
init();
//QTimer::singleShot(6*1000, this, SLOT( slotTest() ) );
}
OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
- const char *name, bool newVisible,
- bool closeVisible )
+ const char *name, bool newVisible,
+ bool closeVisible )
: QWidget( parent, name )
{
if (!mimeFilter.isEmpty() ) {
QStringList list = QStringList::split(";", mimeFilter );
m_mimetypes.insert(mimeFilter, list );
}
initVars();
m_currentDir = QPEApplication::documentDir();
@@ -129,39 +130,38 @@ OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
m_selector = NORMAL;
m_shClose = closeVisible;
m_shNew = newVisible;
m_shLne = false;
m_shPerm = false;
m_shYesNo = false;
init();
-
}
OFileSelector::~OFileSelector()
{
}
void OFileSelector::setNewVisible( bool visible )
{
m_shNew = visible;
if( m_selector == NORMAL ){
delete m_select;
// we need to initialize but keep the selected mimetype
QString mime = currentMimeType();
m_select = new FileSelector( mime ,
- m_stack, "fileselector",
- m_shNew, m_shClose);
+ m_stack, "fileselector",
+ m_shNew, m_shClose);
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
- this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
+ this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
connect(m_select, SIGNAL(closeMe() ),
- this, SIGNAL(closeMe() ) );
+ this, SIGNAL(closeMe() ) );
//connect to close me and other signals as well
m_stack->addWidget( m_select, NORMAL );
}else{
m_new->show();
}
}
void OFileSelector::setCloseVisible( bool visible )
{
@@ -428,20 +428,20 @@ void OFileSelector::slotCancel()
void OFileSelector::slotViewCheck(const QString &sel)
{
if( sel == tr("Documents" ) ){
if( m_select == 0 ){
// autMime? fix cause now we use All and not the current
// yes currentMime fixes that for us
QString mime = currentMimeType();
m_select = new FileSelector(mime,
- m_stack, "fileselector",
- m_shNew, m_shClose);
+ m_stack, "fileselector",
+ m_shNew, m_shClose);
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
- this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
+ this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
connect(m_select, SIGNAL(closeMe() ),
this, SIGNAL(closeMe() ) );
//connect to close me and other signals as well
m_stack->addWidget( m_select, NORMAL );
}
m_stack->raiseWidget( NORMAL );
m_selector = NORMAL;
@@ -493,19 +493,19 @@ void OFileSelector::slotMimeCheck(const QString &mime)
}
}
delete m_select;
m_select = new FileSelector( newMimeType,
m_stack, "fileselector",
m_shNew, m_shClose);
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
- this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
+ this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
connect(m_select, SIGNAL(closeMe() ),
- this, SIGNAL(closeMe() ) );
+ this, SIGNAL(closeMe() ) );
//connect to close me and other signals as well
m_stack->addWidget( m_select, NORMAL );
m_stack->raiseWidget( NORMAL );
updateMimes();
updateMimeCheck();
m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
//}
}else{ // others
@@ -578,31 +578,31 @@ void OFileSelector::init()
if (!m_autoMime) {
if (!m_mimetypes.isEmpty() ) {
QMap<QString, QStringList>::Iterator it;
it = m_mimetypes.begin(); // cause we're in the init
mime = it.data().join(";");
}
}
m_select = new FileSelector(mime,
- m_stack, "fileselector",
- m_shNew, m_shClose);
+ m_stack, "fileselector",
+ m_shNew, m_shClose);
connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
- this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
+ this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
connect(m_select, SIGNAL(closeMe() ),
- this, SIGNAL( closeMe() ) );
+ this, SIGNAL( closeMe() ) );
//connect to close me and other signals as well
m_stack->addWidget( m_select, NORMAL );
m_stack->raiseWidget( NORMAL );
}else{ // we're in init so it will be EXTENDED or EXTENDED_ALL
// and initializeListview will take care of those
// toolbar get's generade in initializeListView
- initializeListView( ); // will raise the widget as well
+ initializeListView( ); // will raise the widget as well
m_stack->raiseWidget( EXTENDED );
}
m_lay->addWidget( m_stack, 100 ); // add to the layout 10 = stretch
if( m_shLne ) // the LineEdit with the current FileName
initializeName();
if( m_shPerm ) // the Permission QCheckBox
@@ -622,18 +622,18 @@ void OFileSelector::updateMimes()
if( m_autoMime ){
m_mimetypes.clear();
m_mimetypes.insert( tr("All"), QString::null );
if( m_selector == NORMAL ){
DocLnkSet set;
Global::findDocuments(&set, QString::null );
QListIterator<DocLnk> dit( set.children() );
for( ; dit.current(); ++dit ){
- if( !m_mimetypes.contains( (*dit)->type() ) )
- m_mimetypes.insert( (*dit)->type(), (*dit)->type() );
+ if( !m_mimetypes.contains( (*dit)->type() ) )
+ m_mimetypes.insert( (*dit)->type(), (*dit)->type() );
}
}// else done in reparse
}
}
void OFileSelector::initVars()
{
if( m_mimetypes.isEmpty() )
m_autoMime = true;
@@ -691,57 +691,63 @@ void OFileSelector::addFile(const QString &/*mime*/, QFileInfo *info, bool symli
MimeType type( info->absFilePath() );
if (!compliesMime( type.id() ) )
return;
QPixmap pix = type.pixmap();
QString dir;
QString name;
bool locked;
- if( pix.isNull() )
- pix = Resource::loadPixmap( "UnknownDocument-14");
+ if( pix.isNull() ) {
+ //TODO make this scaled pixmap global, so we dont have to keep doing this
+ QWMatrix matrix;
+ QPixmap pixer(Resource::loadPixmap( "UnknownDocument" ));
+ matrix.scale( .4, .4);
+ pix = pixer.xForm(matrix);
+// pix = Resource::loadPixmap( "UnknownDocument-14");
+ }
dir = info->dirPath( true );
if( symlink )
name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink();
else {
name = info->fileName();
if( ( m_mode == OPEN && !info->isReadable() )||
- ( m_mode == SAVE && !info->isWritable() ) ){
+ ( m_mode == SAVE && !info->isWritable() ) ){
locked = true; pix = Resource::loadPixmap("locked");
}
}
new OFileSelectorItem( m_View, pix, name,
- info->lastModified().toString(),
- QString::number( info->size() ),
- dir, locked );
+ info->lastModified().toString(),
+ QString::number( info->size() ),
+ dir, locked );
}
void OFileSelector::addDir(const QString &/*mime*/, QFileInfo *info, bool symlink )
{
if(!m_dir)
return;
if( m_selector == EXTENDED_ALL || m_selector == EXTENDED ){
bool locked = false;
QString name;
QPixmap pix;
if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){
locked = true;
if( symlink )
- pix = (*m_pixmaps)["symlinkedlocked"];
+ pix = (*m_pixmaps)["symlinkedlocked"];
else
- pix = Resource::loadPixmap("lockedfolder");
+ pix = Resource::loadPixmap("lockedfolder");
}else { // readable
pix = symlink ? (*m_pixmaps)["dirsymlink"] : Resource::loadPixmap("folder") ;
}
name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ;
new OFileSelectorItem( m_View, pix, name,
- info->lastModified().toString(),
- QString::number( info->size() ),
- info->dirPath( true ), locked,
- true );
+ info->lastModified().toString(),
+ QString::number( info->size() ),
+ info->dirPath( true ), locked,
+ true );
}// else CUSTOM View
}
void OFileSelector::delItems()
{
}
void OFileSelector::initializeName()
@@ -781,19 +787,19 @@ void OFileSelector::initializeYes()
//m_boxOk->addWidget( m_ok );
//m_boxOk->addWidget( m_cancel );
m_boxOk->setMargin( 5 );
m_boxOk->setSpacing( 10 );
m_lay->addWidget( m_boxOk, 0 );
connect( m_ok, SIGNAL( clicked() ),
- this, SLOT(slotOk() ) );
+ this, SLOT(slotOk() ) );
connect( m_cancel, SIGNAL( clicked() ),
- this, SLOT( slotCancel() ) );
+ this, SLOT( slotCancel() ) );
}
}
/*
* OK m_mimeCheck is a QComboBox we now want to fill
* out that combobox
* if automime we need to update the mimetypes
*/
void OFileSelector::updateMimeCheck() {
@@ -819,19 +825,19 @@ void OFileSelector::initializeChooser()
m_lay->addWidget(m_boxView, 0 );
m_viewCheck->insertItem( tr("Documents") );
m_viewCheck->insertItem( tr("Files") );
m_viewCheck->insertItem( tr("All Files") );
updateMimeCheck();
connect( m_viewCheck, SIGNAL( activated(const QString & ) ),
- this, SLOT( slotViewCheck(const QString & ) ) );
+ this, SLOT( slotViewCheck(const QString & ) ) );
connect( m_mimeCheck, SIGNAL( activated(const QString & ) ),
- this, SLOT( slotMimeCheck( const QString & ) ) );
+ this, SLOT( slotMimeCheck( const QString & ) ) );
}
}
void OFileSelector::initializeListView()
{
qWarning("initializeListView");
if( m_pseudo == 0 ){
qWarning("init");
m_pseudo = new QWidget( m_stack, "Pseudo Widget");
@@ -842,99 +848,100 @@ void OFileSelector::initializeListView()
// toolbar members
{
// location QComboBox
m_location = new QComboBox( m_boxToolbar );
m_location->setEditable( TRUE );
m_location->setDuplicatesEnabled( FALSE );
connect( m_location, SIGNAL(activated(const QString &) ),
- this, SLOT( slotLocationActivated(const QString &) ) );
+ this, SLOT( slotLocationActivated(const QString &) ) );
connect( m_location->lineEdit(), SIGNAL(returnPressed() ),
- this, SLOT(locationComboChanged() ) );
+ this, SLOT(locationComboChanged() ) );
// UP Button
m_up = new QPushButton(Resource::loadIconSet("up"),"",
- m_boxToolbar,"cdUpButton");
+ m_boxToolbar,"cdUpButton");
m_up->setFixedSize( QSize( 20, 20 ) );
connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
m_up->setFlat(TRUE);
// Home Button
m_homeButton = new QPushButton(Resource::loadIconSet("home") ,
- "", m_boxToolbar);
+ "", m_boxToolbar);
m_homeButton->setFixedSize( QSize( 20, 20 ) );
connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) );
m_homeButton->setFlat(TRUE);
// Documents Button
m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",
- m_boxToolbar,"docsButton");
+ m_boxToolbar,"docsButton");
m_docButton->setFixedSize( QSize( 20, 20 ) );
connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
m_docButton->setFlat(TRUE);
// Close button
m_close = new QPushButton( Resource::loadIconSet( "close"), "",
- m_boxToolbar );
+ m_boxToolbar );
connect( m_close, SIGNAL(clicked() ), this, SIGNAL(closeMe() ) );
m_close->setFixedSize( 20, 20 );
m_boxToolbar->setFixedHeight( 20 );
m_pseudoLayout->addWidget(m_boxToolbar );
// let;s fill the Location ComboBox
StorageInfo storage;
const QList<FileSystem> &fs = storage.fileSystems();
QListIterator<FileSystem> it ( fs );
for( ; it.current(); ++it ){
- const QString disk = (*it)->name();
- const QString path = (*it)->path();
- m_location->insertItem(path+ "<-"+disk );
+ const QString disk = (*it)->name();
+ const QString path = (*it)->path();
+ m_location->insertItem(path+ "<-"+disk );
}
int count = m_location->count();
m_location->insertItem( m_currentDir );
m_location->setCurrentItem( count );
// due to the New and Close button we can not simply hide m_boxToolBar to not show it
if( !m_shTool ){
- m_location->hide( );
- m_up->hide( );
- m_homeButton->hide( );
- m_docButton->hide( );
+ m_location->hide( );
+ m_up->hide( );
+ m_homeButton->hide( );
+ m_docButton->hide( );
}
if(!m_shClose )
- m_close->hide();
+ m_close->hide();
//if(!m_shNew)
//m_close->hide();
} // off toolbar
// the Main ListView
// make a QWidgetStack first so Views can share the Toolbar
m_View = new QListView( m_pseudo, "Extended view");
QPEApplication::setStylusOperation( m_View->viewport(),
- QPEApplication::RightOnHold);
+ QPEApplication::RightOnHold);
m_View->addColumn(" " );
m_View->addColumn(tr("Name"), 135 );
m_View->addColumn(tr("Size"), -1 );
m_View->addColumn(tr("Date"), 60 );
m_View->addColumn(tr("Mime Type"), -1 );
QHeader *header = m_View->header();
header->hide();
m_View->setSorting( 1 );
m_View->setAllColumnsShowFocus( TRUE );
connect(m_View, SIGNAL(selectionChanged() ),
- this, SLOT(slotSelectionChanged() ) );
+ this, SLOT(slotSelectionChanged() ) );
- connect(m_View, SIGNAL(currentChanged(QListViewItem *) ),
- this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
+ connect(m_View, SIGNAL(clicked(QListViewItem *) ),
+// connect(m_View, SIGNAL(currentChanged(QListViewItem *) ),
+ this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
- this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
+ this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
- this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
+ this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
m_pseudoLayout->addWidget( m_View, 288 );
m_stack->addWidget( m_pseudo, EXTENDED );
}
}
void OFileSelector::initializePerm()
{
if( m_checkPerm == 0 ){
@@ -1045,17 +1052,17 @@ void OFileSelector::slotCurrentChanged(QListViewItem* item )
{
if( item == 0 )
return;
if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;)
qWarning("current changed");
if(!sel->isDir() ){
if( m_shLne )
- m_edit->setText( sel->text(1) );
+ m_edit->setText( sel->text(1) );
if (m_mode == FILESELECTOR ) {
QStringList str = QStringList::split("->", sel->text(1) );
QString path =sel->directory() + "/" + str[0].stripWhiteSpace();
emit fileSelected(path );
DocLnk lnk( path );
emit fileSelected(lnk );
}
@@ -1074,26 +1081,26 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &
default:
break;
case EXTENDED: // fall through
case EXTENDED_ALL:{
OFileSelectorItem *sel = (OFileSelectorItem*)item;
if(!sel->isLocked() ){
QStringList str = QStringList::split("->", sel->text(1) );
if( sel->isDir() ){
- cd( sel->directory() + "/" + str[0].stripWhiteSpace() );
- // if MODE Dir m_shLne set the Text
+ cd( sel->directory() + "/" + str[0].stripWhiteSpace() );
+ // if MODE Dir m_shLne set the Text
}else{
- if( m_shLne )
- m_edit->setText( str[0].stripWhiteSpace() );
+ if( m_shLne )
+ m_edit->setText( str[0].stripWhiteSpace() );
qWarning("selected here in slot clicked");
- emit fileSelected( sel->directory() + "/" + str[0].stripWhiteSpace() );
- DocLnk lnk( sel->directory() + "/" + str[0].stripWhiteSpace() );
+ emit fileSelected( sel->directory() + "/" + str[0].stripWhiteSpace() );
+ DocLnk lnk( sel->directory() + "/" + str[0].stripWhiteSpace() );
qWarning("file selected");
- emit fileSelected( lnk );
+ emit fileSelected( lnk );
}
}
break;
}
}
}
void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
{
@@ -1204,27 +1211,27 @@ void OFileSelector::reparse()
QDir dir( m_currentDir );
if( dir.exists() ){
dir.setFilter( QDir::Files | QDir::Readable );
dir.setSorting( QDir::Size );
const QFileInfoList *list = dir.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
while( (fi=it.current() ) ) {
- if( fi->extension() == QString::fromLatin1("desktop") ){
- ++it;
- continue;
- }
- MimeType type( fi->absFilePath() );
- if( !m_mimetypes.contains( type.id() ) ){
- //qWarning("Type %s", type.id().latin1() );
- m_mimetypes.insert( type.id(), type.id() );
- }
-
- ++it;
+ if( fi->extension() == QString::fromLatin1("desktop") ){
+ ++it;
+ continue;
+ }
+ MimeType type( fi->absFilePath() );
+ if( !m_mimetypes.contains( type.id() ) ){
+ //qWarning("Type %s", type.id().latin1() );
+ m_mimetypes.insert( type.id(), type.id() );
+ }
+
+ ++it;
}
// add them to the chooser
updateMimeCheck();
m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) );
currentMimeType = m_mimeCheck->currentText();
}
}
}else { // no autoMime
@@ -1263,32 +1270,32 @@ void OFileSelector::reparse()
if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){
//qWarning(".. or ." );
++it;
continue;
}
if( fi->isSymLink() ){
QString file = fi->dirPath( true ) + "/" + fi->readLink();
for( int i = 0; i<=4; i++) { // 5 tries to prevent dos
- QFileInfo info( file );
- if( !info.exists() ){
- addSymlink( currentMimeType, fi, TRUE );
- break;
- }else if( info.isDir() ){
- addDir( currentMimeType, fi, TRUE );
- break;
- }else if( info.isFile() ){
- addFile( currentMimeType, fi, TRUE );
- break;
- }else if( info.isSymLink() ){
- file = info.dirPath(true ) + "/" + info.readLink() ;
- break;
- }else if( i == 4){
- addSymlink( currentMimeType, fi );
- }
+ QFileInfo info( file );
+ if( !info.exists() ){
+ addSymlink( currentMimeType, fi, TRUE );
+ break;
+ }else if( info.isDir() ){
+ addDir( currentMimeType, fi, TRUE );
+ break;
+ }else if( info.isFile() ){
+ addFile( currentMimeType, fi, TRUE );
+ break;
+ }else if( info.isSymLink() ){
+ file = info.dirPath(true ) + "/" + info.readLink() ;
+ break;
+ }else if( i == 4){
+ addSymlink( currentMimeType, fi );
+ }
} // off for loop
}else if( fi->isDir() ){
addDir( currentMimeType, fi );
}else if( fi->isFile() ){
addFile( currentMimeType, fi );
}
//qWarning( "%s", fi->fileName().latin1() );
++it;