summaryrefslogtreecommitdiff
path: root/libopie
authorzecke <zecke>2002-06-29 10:19:59 (UTC)
committer zecke <zecke>2002-06-29 10:19:59 (UTC)
commitd8508c23608ad28e0b37f26807ee35055fcabe38 (patch) (side-by-side diff)
tree916888a027aa6312d5521c9018ff16d0432a004f /libopie
parent0252b90a4b2e7be6186518eaa12ea03ef26ae08c (diff)
downloadopie-d8508c23608ad28e0b37f26807ee35055fcabe38.zip
opie-d8508c23608ad28e0b37f26807ee35055fcabe38.tar.gz
opie-d8508c23608ad28e0b37f26807ee35055fcabe38.tar.bz2
Fix bugs #94 and #96
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector.cc39
1 files changed, 32 insertions, 7 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 824acf2..3c3a6c4 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -317,35 +317,39 @@ QString text;
void OFileSelector::setPopupMenu(QPopupMenu *popup )
{
m_custom = popup;
m_showPopup = true;
}
//void OFileSelector::updateL
QString OFileSelector::selectedName() const
{
QString name;
if( m_selector == NORMAL ){
const DocLnk *lnk = m_select->selected();
name = lnk->file();
delete lnk;
}else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
- QListViewItem *item = m_View->currentItem();
- if( item != 0 )
- name = m_currentDir + "/" + item->text( 1 );
+ if ( m_shLne ) {
+ name = m_currentDir + "/" +m_edit->text();
+ }else{
+ QListViewItem *item = m_View->currentItem();
+ if( item != 0 )
+ name = m_currentDir + "/" + item->text( 1 );
+ }
}else { // installed view
;
}
return name;
}
QStringList OFileSelector::selectedNames()const
{
QStringList list;
if( m_selector == NORMAL ){
list << selectedName();
}else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
list << selectedName(); // FIXME implement multiple Selections
}
return list;
}
/** If mode is set to the Dir selection this will return the selected path.
@@ -508,59 +512,80 @@ void OFileSelector::slotMimeCheck(const QString &mime)
m_stack->addWidget( m_select, NORMAL );
m_stack->raiseWidget( NORMAL );
updateMimes();
updateMimeCheck();
m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
//}
}else{ // others
qWarning("Mime %s", mime.latin1() );
if(m_shChooser ){
qWarning("Current Text %s", m_mimeCheck->currentText().latin1() );
//m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
}
reparse();
}
}
+/*
+ * Ok if a non dir gets inserted into this combobox
+ * we need to change it
+ * QFileInfo and dirPath will give us the right Dir
+ */
void OFileSelector::slotLocationActivated(const QString &file)
{
- cd(file.left(file.find("<-",0,TRUE)));
- reparse();
+ qWarning("slotLocationActivated");
+ QString name = file.left( file.find("<-", 0, TRUE ) );
+ QFileInfo info( name );
+ if ( info.isFile() )
+ cd(info.dirPath( TRUE ) ); //absolute
+ else
+ cd(name );
+ reparse();
}
void OFileSelector::slotInsertLocationPath(const QString &currentPath, int count)
{
QStringList pathList;
bool underDog = FALSE;
for(int i=0;i<count;i++) {
pathList << m_location->text(i);
if( m_location->text(i) == currentPath)
underDog = TRUE;
}
if( !underDog) {
m_location->clear();
if( currentPath.left(2)=="//")
pathList.append( currentPath.right(currentPath.length()-1) );
else
pathList.append( currentPath );
m_location->insertStringList( pathList,-1);
}
}
+/*
+ * Do not crash anymore
+ * don't try to change dir to a file
+ */
void OFileSelector::locationComboChanged()
{
- cd( m_location->lineEdit()->text());
- reparse();
+ QFileInfo info( m_location->lineEdit()->text() );
+ qWarning("info %s %s", info.dirPath(true).latin1(), m_location->lineEdit()->text().latin1() );
+ if (info.isFile() )
+ cd(info.dirPath(TRUE) ); //absolute path
+ else
+ cd( m_location->lineEdit()->text() );
+
+ reparse();
}
void OFileSelector::init()
{
m_lay = new QVBoxLayout( this );
m_lay->setSpacing(0 );
m_stack = new QWidgetStack( this );
if( m_selector == NORMAL ){
QString mime;
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(";");
}
}