summaryrefslogtreecommitdiff
authorzecke <zecke>2005-02-05 16:05:04 (UTC)
committer zecke <zecke>2005-02-05 16:05:04 (UTC)
commit23fc6bad8aa84ee1a690a07124ba9e59650e2aea (patch) (side-by-side diff)
tree73f5efbf4ae055b781c78d395fa32bebc2705344
parent8ba13dd38e7da296177719dcc8fddbbe978a4b9a (diff)
downloadopie-23fc6bad8aa84ee1a690a07124ba9e59650e2aea.zip
opie-23fc6bad8aa84ee1a690a07124ba9e59650e2aea.tar.gz
opie-23fc6bad8aa84ee1a690a07124ba9e59650e2aea.tar.bz2
Implement deletion for the Document and Camera Liste
This should fix 1540
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp2
-rw-r--r--noncore/graphics/opie-eye/impl/doc/doc_lister.cpp12
2 files changed, 12 insertions, 2 deletions
diff --git a/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp
index 3c3d702..147eb9c 100644
--- a/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp
+++ b/noncore/graphics/opie-eye/impl/dcim/dcim_lister.cpp
@@ -27,155 +27,155 @@ DCIM_DirLister::DCIM_DirLister()
DCIM_DirLister::~DCIM_DirLister() {}
QString DCIM_DirLister::defaultPath()const {
m_mode = ListingStart;
return QString::null;
}
QString DCIM_DirLister::setStartPath( const QString& str) {
/**
* IconView adds a '/' to path. Lets strip
* that.
*/
QString st = str.mid( 1 );
if ( ListingStart == m_mode && m_map.contains( st ) ) {
m_path = m_map[st]+ "/dcim";
m_mode = ListingFolder;
}else if ( m_mode == ListingFolder ) {
m_mode = ListingFiles;
m_path = str;
}else if ( m_mode == ListingReFolder ) {
m_mode = ListingFolder;
}
owarn << " StartPath2 " << str << " " << m_path << oendl;
return m_path;
}
QString DCIM_DirLister::currentPath()const {
return m_path;
}
/*
* depending on the mode we will either
* Find Digital Cameras
*/
QStringList DCIM_DirLister::folders()const {
QStringList lst;
switch( m_mode ) {
case ListingUnknown:
case ListingStart:
lst = findCameras();
break;
case ListingFolder:
lst = findAlbums();
break;
case ListingFiles:
default:
break;
}
return lst;
}
QStringList DCIM_DirLister::files()const {
if ( m_mode != ListingFiles )
return QStringList();
else
return findImages();
}
QString DCIM_DirLister::dirUp( const QString& p )const {
QString str;
switch( m_mode ) {
case ListingFiles:
m_mode = ListingReFolder;
str = PDirLister::dirUp( p );
break;
case ListingFolder:
m_mode = ListingStart;
break;
case ListingUnknown:
case ListingStart:
default:
break;
}
/* down cases */
owarn << " New String " << str << " old path " << m_mode << oendl;
m_path = str;
return str;
}
QStringList DCIM_DirLister::findCameras()const {
QStringList lst;
StorageInfo inf;
m_map.clear();
const QList<FileSystem> &list = inf.fileSystems();
QListIterator<FileSystem> it( list );
FileSystem *sys;
for ( sys = it.current(); (sys=it.current())!=0 ; ++it )
if ( QFileInfo( sys->path() + "/dcim/" ).exists() ) {
lst << sys->name();
m_map.insert( sys->name(), sys->path() );
}
if ( lst.isEmpty() ) {
m_mode = ListingUnknown;
lst << QObject::tr("Error no Camera Dir found");
}else
m_mode = ListingStart;
return lst;
}
QStringList DCIM_DirLister::findAlbums()const {
QStringList lst = QDir( m_path ).entryList( QDir::Dirs );
lst.remove( "." );
lst.remove( ".." );
return lst;
}
QStringList DCIM_DirLister::findImages()const {
return QDir( m_path ).entryList("*.jpg *.jpeg *.png", QDir::Files );
}
void DCIM_DirLister::deleteImage( const QString& fl ) {
QFileInfo inf( fl );
QFile::remove( fl );
- QFile::remove( inf.dirPath ()+"/preview"+
+ QFile::remove( inf.dirPath ()+"/preview/"+
inf.fileName() );
}
void DCIM_DirLister::thumbNail( const QString& _str, int w, int h ) {
QFileInfo inf( _str );
QString str = QFileInfo( inf.dirPath()+"/preview"+ inf.fileName() ).exists() ?
inf.dirPath()+"/preview"+ inf.fileName() : _str;
SlaveMaster::self()->thumbNail( str, w, h );
}
QImage DCIM_DirLister::image( const QString& str, Factor f, int m ) {
return SlaveMaster::self()->image( str, f, m );
}
void DCIM_DirLister::imageInfo( const QString& str ) {
SlaveMaster::self()->thumbInfo( str );
}
void DCIM_DirLister::fullImageInfo( const QString& str ) {
SlaveMaster::self()->imageInfo( str );
}
QString DCIM_DirLister::nameToFname( const QString& name )const {
return name;
}
diff --git a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp
index 4a491e2..5281b75 100644
--- a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp
+++ b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp
@@ -1,208 +1,218 @@
/*
* GPLv2 zecke@handhelds.org
*/
#include "doc_lister.h"
#include <lib/slavemaster.h>
/* OPIE */
#include <opie2/odebug.h>
#include <qpe/config.h>
#include <qpe/qpeapplication.h>
#include <qpe/applnk.h>
#include <opie2/oglobal.h>
#include <qtopia/private/categories.h>
#include <qtopia/categoryselect.h>
using namespace Opie::Core;
/* QT */
#include <qdir.h>
#include <qfileinfo.h>
#include <qtopia/qcopenvelope_qws.h>
Doc_DirLister::Doc_DirLister()
: PDirLister( "doc_dir_lister" )
{
/* connect the signals */
m_catFilter = 0;
SlaveMaster* master = SlaveMaster::self();
connect( master, SIGNAL(sig_start()), this, SIGNAL(sig_start()) );
connect( master, SIGNAL(sig_end()), this, SIGNAL(sig_end()) );
connect( master, SIGNAL(sig_thumbInfo(const QString&, const QString&)),
this, SLOT(slotThumbInfo(const QString&, const QString&)) );
connect( master, SIGNAL(sig_fullInfo(const QString&, const QString&)),
this, SLOT(slotFullInfo(const QString&, const QString&)) );
connect( master, SIGNAL(sig_thumbNail(const QString&, const QPixmap&)),
this, SLOT(slotThumbNail(const QString&, const QPixmap&)) );
m_docreads = false;
syschannel = new QCopChannel("QPE/System", this);
connect(syschannel, SIGNAL(received(const QCString&,const QByteArray&)),
this, SLOT(systemMsg(const QCString&,const QByteArray&)) );
}
Doc_DirLister::~Doc_DirLister()
{
}
QString Doc_DirLister::defaultPath()const {
return QString::null;
}
bool Doc_DirLister::matchCat(const AppLnk* app)const
{
if (!app) return false;
if (m_catFilter==0 || app->categories().contains(m_catFilter) || m_catFilter == -1 && app->categories().count() == 0 ) {
return true;
}
return false;
}
QString Doc_DirLister::setStartPath(const QString&) {
static const QString Mtype_str("image/jpeg;image/gif;image/bmp;image/png");
if (!m_docreads) {
Global::findDocuments(&m_ds,Mtype_str);
m_docreads = true;
}
return QString::null;
}
QString Doc_DirLister::currentPath()const
{
return QString::null;
}
QStringList Doc_DirLister::folders()const {
return QStringList();
}
QStringList Doc_DirLister::files()const {
QStringList out;
QListIterator<DocLnk> dit(m_ds.children());
for( ; dit.current(); ++dit) {
if (!(*dit)->isValid()) continue;
if (!matchCat((*dit))) continue;
QString s = (*dit)->name();
s+=char(0);
s+=(*dit)->file();
out.append(s);
}
return out;
}
-void Doc_DirLister::deleteImage( const QString& )
+void Doc_DirLister::deleteImage( const QString& f)
{
+ /*
+ * find the file in the set of doclnks
+ */
+ QListIterator<DocLnk> dit(m_ds.children());
+ for( ; dit.current(); ++dit) {
+ if ( f == (*dit)->file() ) {
+ (*dit)->removeFiles();
+ return;
+ }
+ }
}
void Doc_DirLister::thumbNail( const QString& str, int w, int h)
{
SlaveMaster::self()->thumbNail( str, w, h );
}
QImage Doc_DirLister::image( const QString& str, Factor f, int m)
{
return SlaveMaster::self()->image(str, f, m );
}
void Doc_DirLister::imageInfo( const QString& str) {
SlaveMaster::self()->thumbInfo( str );
}
void Doc_DirLister::fullImageInfo( const QString& str) {
SlaveMaster::self()->imageInfo(str);
}
void Doc_DirLister::slotFullInfo(const QString&f, const QString&t)
{
emit sig_fullInfo(f, t);
}
void Doc_DirLister::slotThumbInfo(const QString&f, const QString&t)
{
emit sig_thumbInfo(f, t);
}
void Doc_DirLister::slotThumbNail(const QString&f, const QPixmap&p)
{
emit sig_thumbNail(f, p);
}
QString Doc_DirLister::nameToFname(const QString&name)const
{
return name;
}
QString Doc_DirLister::dirUp( const QString& p ) const{
return p;
}
QWidget* Doc_DirLister::widget(QWidget*parent)
{
CategorySelect * catmb = new CategorySelect(parent);
Categories cats( 0 );
cats.load( categoryFileName() );
QArray<int> vl( 0 );
catmb->setCategories( vl, "Document View", // No tr
"Document View" );
catmb->setRemoveCategoryEdit( TRUE );
catmb->setAllCategories( TRUE );
connect(catmb, SIGNAL(signalSelected(int)), this, SLOT(showCategory(int)));
catmb->setCurrentCategory(-2);
return catmb;
}
void Doc_DirLister::showCategory(int which)
{
odebug<<"Show cat " << which << oendl;
m_catFilter = which==-2?0:which;
setStartPath("");
odebug<<"Show cat before emit" << oendl;
emit sig_reloadDir();
odebug<<"Show cat - emit signal finished" << oendl;
}
void Doc_DirLister::systemMsg(const QCString &msg, const QByteArray &data)
{
if ( msg != "linkChanged(QString)"||!m_docreads) {
return;
}
#if 0
// makes big problems on zaurus!
QString link;
QDataStream stream( data, IO_ReadOnly );
stream >> link;
odebug << "Doc_DirLister systemMsg -> linkchanged( " << link << " )" << oendl;
if ( link.isNull() || OGlobal::isAppLnkFileName(link) ) {
return;
}
QListIterator<DocLnk> dit(m_ds.children());
bool must_reload = false;
bool found = false;
while ( dit.current() ) {
DocLnk *doc = dit.current();
++dit;
if (doc->linkFile() == link) {
found = true;
DocLnk* dl = new DocLnk(link);
if (dl->fileKnown()) {
// changing
m_ds.add(dl);
} else {
delete dl;
}
if (matchCat(doc) || matchCat(dl)) {
must_reload = true;
}
m_ds.remove( doc ); // remove old link from docLnkSet
delete doc;
}
}
if (must_reload) {
setStartPath("");
emit sig_reloadDir();
}
#endif
}