summaryrefslogtreecommitdiff
path: root/noncore
authoralwin <alwin>2004-11-12 15:57:59 (UTC)
committer alwin <alwin>2004-11-12 15:57:59 (UTC)
commite1ed329d0b8be10ac6e019d37b82afcf21990691 (patch) (side-by-side diff)
tree0c84e2c4fd062487932de9add39a083da194cca0 /noncore
parentde558d6f0bc31f58ffaa894a0236f0d9cb5d73e0 (diff)
downloadopie-e1ed329d0b8be10ac6e019d37b82afcf21990691.zip
opie-e1ed329d0b8be10ac6e019d37b82afcf21990691.tar.gz
opie-e1ed329d0b8be10ac6e019d37b82afcf21990691.tar.bz2
- fixed a bug in docview-lister: different files may have same docview
name. So mapping filenames to docname isn't usefull. - when opie-eye is started from doctab closing the imagewindow closes the application - when a doc-link is changed while opie-eye is running it get the changes, too.
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp58
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.h4
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.cpp15
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.h2
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.cpp37
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.h3
-rw-r--r--noncore/graphics/opie-eye/impl/doc/doc_lister.cpp129
-rw-r--r--noncore/graphics/opie-eye/impl/doc/doc_lister.h8
8 files changed, 166 insertions, 90 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index 948477c..138e661 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -197,4 +197,5 @@ PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg )
m_internalReset = false;
m_customWidget = 0;
+ m_setDocCalled = false;
m_hbox = new QHBox( this );
@@ -213,8 +214,5 @@ PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg )
m_mode = m_cfg->readNumEntry("ListViewMode", 1);
- QString lastView = m_cfg->readEntry("LastView","");
-
if (m_mode < 1 || m_mode>3) m_mode = 1;
-
m_view->setItemTextPos( QIconView::Right );
if (m_mode >1) {
@@ -228,22 +226,11 @@ PIconView::PIconView( QWidget* wid, Opie::Core::OConfig* cfg )
calculateGrid();
-
initKeys();
-
loadViews();
- int cc=0;
- for (; cc<m_views->count();++cc) {
- if (m_views->text(cc)==lastView) {
- break;
- }
- }
- if (cc<m_views->count()) {
- m_views->setCurrentItem(cc);
- slotViewChanged(cc);
- } else {
- slotViewChanged(m_views->currentItem());
}
- connect( m_views, SIGNAL(activated(int)),
- this, SLOT(slotViewChanged(int)) );
+
+void PIconView::setDoccalled(bool how)
+{
+ m_setDocCalled = how;
}
@@ -442,4 +429,28 @@ void PIconView::resetView() {
}
+void PIconView::polish()
+{
+ odebug << "===\n"
+ << "PIconView::polish()\n"
+ << "====" << oendl;
+ QVBox::polish();
+
+ QString lastView = m_cfg->readEntry("LastView","");
+ int cc=0;
+ for (; cc<m_views->count();++cc) {
+ if (m_views->text(cc)==lastView) {
+ break;
+ }
+ }
+ if (cc<m_views->count()) {
+ m_views->setCurrentItem(cc);
+ slotViewChanged(cc);
+ } else {
+ slotViewChanged(m_views->currentItem());
+ }
+ connect( m_views, SIGNAL(activated(int)),
+ this, SLOT(slotViewChanged(int)) );
+}
+
/*
*swicth view reloadDir and connect signals
@@ -530,13 +541,18 @@ void PIconView::addFiles( const QStringList& lst) {
pre = m_path+"/";
}
+ QString s = "";
+ int pos;
for (it=lst.begin(); it!= lst.end(); ++it ) {
+ s = (*it);
+ pos = s.find(char(0));
m_pix = PPixmapCache::self()->cachedImage( pre+(*it), m_iconsize, m_iconsize );
+ if (pos>-1) {
+ _iv = new IconViewItem( m_view, s.mid(pos+1), s.left(pos),m_iconsize );
+ } else {
_iv = new IconViewItem( m_view, pre+(*it), (*it),m_iconsize );
+ }
if (m_mode==3) {
_iv->setTextOnly(true);
_iv->setPixmap(QPixmap());
-
-
-
} else {
if (m_pix) _iv->setPixmap(*m_pix);
diff --git a/noncore/graphics/opie-eye/gui/iconview.h b/noncore/graphics/opie-eye/gui/iconview.h
index 78dda58..6e08fd8 100644
--- a/noncore/graphics/opie-eye/gui/iconview.h
+++ b/noncore/graphics/opie-eye/gui/iconview.h
@@ -36,4 +36,6 @@ public:
Opie::Core::OKeyConfigManager* manager();
+ void setDoccalled(bool);
+
signals:
void sig_showInfo( const QString& );
@@ -46,4 +48,5 @@ public slots:
virtual void slotShowLast();
virtual bool slotShowFirst();
+ virtual void polish();
protected:
@@ -57,4 +60,5 @@ private:
void loadViews();
void calculateGrid(QResizeEvent*e = 0);
+ bool m_setDocCalled:1;
private slots:
diff --git a/noncore/graphics/opie-eye/gui/imageview.cpp b/noncore/graphics/opie-eye/gui/imageview.cpp
index ebdfc60..ac6474c 100644
--- a/noncore/graphics/opie-eye/gui/imageview.cpp
+++ b/noncore/graphics/opie-eye/gui/imageview.cpp
@@ -28,4 +28,5 @@ ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name
m_gPrevNext = 0;
m_hGroup = 0;
+ closeIfHide = false;
}
@@ -153,5 +154,17 @@ void ImageView::keyReleaseEvent(QKeyEvent * e)
return;
}
- if (e->key()==Qt::Key_Escape && fullScreen()) emit hideMe();
+ if (e->key()==Qt::Key_Escape) {
+ if (fullScreen()) {
+ emit hideMe();
+ }
+ if (closeIfHide) {
+ QTimer::singleShot(0, qApp, SLOT(closeAllWindows()));
+ }
+ }
+}
+
+void ImageView::setCloseIfHide(bool how)
+{
+ closeIfHide = how;
}
diff --git a/noncore/graphics/opie-eye/gui/imageview.h b/noncore/graphics/opie-eye/gui/imageview.h
index 2408211..f1067bb 100644
--- a/noncore/graphics/opie-eye/gui/imageview.h
+++ b/noncore/graphics/opie-eye/gui/imageview.h
@@ -40,4 +40,5 @@ public:
void stopSlide();
void setMenuActions(QActionGroup*hGroup,QActionGroup*nextprevGroup, QActionGroup*disptypeGroup);
+ void setCloseIfHide(bool);
signals:
@@ -62,4 +63,5 @@ protected:
virtual void focusInEvent ( QFocusEvent * );
QActionGroup *m_gDisplayType,*m_gPrevNext,*m_hGroup;
+ bool closeIfHide:1;
public slots:
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp
index f443ccb..295f93f 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.cpp
+++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp
@@ -47,4 +47,6 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
m_cfg->setGroup("main" );
readConfig();
+ m_setDocCalled = false;
+ m_polishDone = false;
m_storage = new StorageInfo();
@@ -420,4 +422,5 @@ void PMainWindow::closeEvent( QCloseEvent* ev ) {
* or properly quit
*/
+ if (!m_setDocCalled) {
if ( m_stack->visibleWidget() == m_info ||
m_stack->visibleWidget() == m_disp ) {
@@ -426,4 +429,5 @@ void PMainWindow::closeEvent( QCloseEvent* ev ) {
return;
}
+ }
if (m_disp && m_disp->fullScreen()) {
/* otherwise opie-eye crashes in bigscreen mode! */
@@ -437,6 +441,4 @@ void PMainWindow::closeEvent( QCloseEvent* ev ) {
void PMainWindow::setDocument( const QString& showImg )
{
- bool first_start = m_disp==0;
-
QString file = showImg;
DocLnk lnk(showImg);
@@ -444,7 +446,9 @@ void PMainWindow::setDocument( const QString& showImg )
file = lnk.file();
slotDisplay( file );
- if (first_start && m_aFullScreen->isOn()) {
+#if 0
+ if (!m_polishDone) {
QTimer::singleShot(0,this,SLOT(check_view_fullscreen()));
}
+#endif
}
@@ -690,15 +694,11 @@ void PMainWindow::listviewselected(QAction*which)
if (!which || which->isOn()==false) return;
int val = 1;
-// QString name;
if (which==m_aDirName) {
val = 3;
-// name = "opie-eye/opie-eye-textview";
} else if (which==m_aDirShort) {
val = 2;
-// name = "opie-eye/opie-eye-thumbonly";
} else if (which==m_aDirLong) {
val = 1;
-// name = "opie-eye/opie-eye-thumb";
}
emit changeListMode(val);
@@ -709,2 +709,25 @@ void PMainWindow::readConfig()
autoSave =m_cfg->readBoolEntry("savestatus",true);
}
+
+void PMainWindow::polish()
+{
+ if (m_disp) {
+ odebug << "======================\n"
+ << "Called via setdocument\n"
+ << "======================" << oendl;
+ m_setDocCalled = true;
+ m_view->setDoccalled(true);
+ m_disp->setCloseIfHide(true);
+ } else {
+ m_setDocCalled = false;
+ m_view->setDoccalled(false);
+ }
+ m_polishDone = true;
+ QMainWindow::polish();
+ if (m_setDocCalled) {
+ if (m_aFullScreen->isOn()) {
+ QTimer::singleShot(0,this,SLOT(check_view_fullscreen()));
+ } else if (m_stack->mode() != Opie::Ui::OWidgetStack::SmallScreen) {
+ }
+ }
+}
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h
index 465e352..2f54090 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.h
+++ b/noncore/graphics/opie-eye/gui/mainwindow.h
@@ -59,4 +59,5 @@ public slots:
virtual void slotToggleFullScreen();
virtual void slotFullScreenToggled(bool);
+ virtual void polish();
protected slots:
@@ -81,4 +82,6 @@ private:
ImageView *m_disp;
bool autoSave;
+ bool m_setDocCalled:1;
+ bool m_polishDone:1;
QToolButton*fsButton;
QToolBar *toolBar;
diff --git a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp
index f5c711a..8bcf01d 100644
--- a/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp
+++ b/noncore/graphics/opie-eye/impl/doc/doc_lister.cpp
@@ -12,4 +12,5 @@
#include <qpe/qpeapplication.h>
#include <qpe/applnk.h>
+#include <opie2/oglobal.h>
#include <qtopia/private/categories.h>
@@ -21,4 +22,5 @@ using namespace Opie::Core;
#include <qdir.h>
#include <qfileinfo.h>
+#include <qtopia/qcopenvelope_qws.h>
Doc_DirLister::Doc_DirLister()
@@ -36,8 +38,12 @@ Doc_DirLister::Doc_DirLister()
connect( master, SIGNAL(sig_thumbNail(const QString&, const QPixmap&)),
this, SLOT(slotThumbNail(const QString&, const QPixmap&)) );
-
- m_namemap.clear();
- m_filemap.clear();
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()
+{
}
@@ -46,5 +52,5 @@ QString Doc_DirLister::defaultPath()const {
}
-bool Doc_DirLister::matchCat(const AppLnk* app)
+bool Doc_DirLister::matchCat(const AppLnk* app)const
{
if (!app) return false;
@@ -57,20 +63,13 @@ bool Doc_DirLister::matchCat(const AppLnk* app)
QString Doc_DirLister::setStartPath(const QString&) {
static const QString Mtype_str("image/jpeg;image/gif;image/bmp;image/png");
- if (m_namemap.isEmpty()) {
if (!m_docreads) {
Global::findDocuments(&m_ds,Mtype_str);
m_docreads = true;
}
- QListIterator<DocLnk> dit(m_ds.children());
- for( ; dit.current(); ++dit) {
- if (!matchCat((*dit))) continue;
- m_namemap[(*dit)->name()]=(*dit)->file();
- m_filemap[(*dit)->file()]=(*dit)->name();
- }
- }
return QString::null;
}
-QString Doc_DirLister::currentPath()const {
+QString Doc_DirLister::currentPath()const
+{
return QString::null;
}
@@ -83,7 +82,11 @@ QStringList Doc_DirLister::folders()const {
QStringList Doc_DirLister::files()const {
QStringList out;
- QMap<QString,QString>::ConstIterator it;
- for (it = m_namemap.begin();it != m_namemap.end();++it) {
- out.append(it.key());
+ QListIterator<DocLnk> dit(m_ds.children());
+ for( ; dit.current(); ++dit) {
+ if (!matchCat((*dit))) continue;
+ QString s = (*dit)->name();
+ s+=char(0);
+ s+=(*dit)->file();
+ out.append(s);
}
return out;
@@ -94,69 +97,40 @@ void Doc_DirLister::deleteImage( const QString& )
}
-void Doc_DirLister::thumbNail( const QString& str, int w, int h) {
- if (m_namemap.find(str)==m_namemap.end()) {
- return;
- }
- QString fname = m_namemap[str];
- SlaveMaster::self()->thumbNail( fname, w, h );
+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) {
- if (m_namemap.find(str)==m_namemap.end()) {
- return QImage();
- }
- QString fname = m_namemap[str];
- return SlaveMaster::self()->image( fname, f, m );
+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) {
- if (m_namemap.find(str)==m_namemap.end()) {
- return;
- }
- QString fname = m_namemap[str];
- SlaveMaster::self()->thumbInfo( fname );
+ SlaveMaster::self()->thumbInfo( str );
}
void Doc_DirLister::fullImageInfo( const QString& str) {
- if (m_namemap.find(str)==m_namemap.end()) {
- return;
- }
- QString fname = m_namemap[str];
- SlaveMaster::self()->imageInfo( fname );
+ SlaveMaster::self()->imageInfo(str);
}
void Doc_DirLister::slotFullInfo(const QString&f, const QString&t)
{
- if (m_filemap.find(f)==m_filemap.end()) {
- return;
- }
- QString name = m_filemap[f];
- emit sig_fullInfo(name, t);
+ emit sig_fullInfo(f, t);
}
void Doc_DirLister::slotThumbInfo(const QString&f, const QString&t)
{
- if (m_filemap.find(f)==m_filemap.end()) {
- return;
- }
- QString name = m_filemap[f];
- emit sig_thumbInfo(name, t);
+ emit sig_thumbInfo(f, t);
}
void Doc_DirLister::slotThumbNail(const QString&f, const QPixmap&p)
{
- if (m_filemap.find(f)==m_filemap.end()) {
- return;
- }
- QString name = m_filemap[f];
- emit sig_thumbNail(name, p);
+ emit sig_thumbNail(f, p);
}
QString Doc_DirLister::nameToFname(const QString&name)const
{
- if (m_namemap.find(name)==m_namemap.end()) {
- return QString::null;
- }
- return m_namemap[name];
+ return name;
}
@@ -183,6 +157,45 @@ void Doc_DirLister::showCategory(int which)
{
m_catFilter = which==-2?0:which;
- m_namemap.clear();
setStartPath("");
emit sig_reloadDir();
}
+
+void Doc_DirLister::systemMsg(const QCString &msg, const QByteArray &data)
+{
+ if ( msg != "linkChanged(QString)"||!m_docreads) {
+ return;
+ }
+ 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();
+ }
+}
diff --git a/noncore/graphics/opie-eye/impl/doc/doc_lister.h b/noncore/graphics/opie-eye/impl/doc/doc_lister.h
index 403241c..3f8825f 100644
--- a/noncore/graphics/opie-eye/impl/doc/doc_lister.h
+++ b/noncore/graphics/opie-eye/impl/doc/doc_lister.h
@@ -15,4 +15,5 @@
class Config;
class AppLnk;
+class QCopChannel;
class Doc_DirLister : public PDirLister {
@@ -20,5 +21,5 @@ class Doc_DirLister : public PDirLister {
public:
Doc_DirLister();
- virtual ~Doc_DirLister(){}
+ virtual ~Doc_DirLister();
QString defaultPath()const;
@@ -38,7 +39,6 @@ public:
private:
- QMap<QString,QString> m_namemap,m_filemap;
int m_catFilter;
- bool matchCat(const AppLnk* app);
+ bool matchCat(const AppLnk* app)const;
bool m_docreads;
DocLnkSet m_ds;
@@ -49,4 +49,6 @@ protected slots:
virtual void slotThumbNail(const QString&, const QPixmap&);
virtual void showCategory(int);
+ void systemMsg(const QCString &, const QByteArray &);
+ QCopChannel *syschannel;
};