summaryrefslogtreecommitdiff
authorzecke <zecke>2004-07-24 18:46:24 (UTC)
committer zecke <zecke>2004-07-24 18:46:24 (UTC)
commit69df55bd0b74c7e59ff40390e2f1d902f882491f (patch) (unidiff)
treeefb617312c1e77ca3990487d727bd283516a2702
parent5a8963dff615da61611f5cc4bf410e7a6eeef55b (diff)
downloadopie-69df55bd0b74c7e59ff40390e2f1d902f882491f.zip
opie-69df55bd0b74c7e59ff40390e2f1d902f882491f.tar.gz
opie-69df55bd0b74c7e59ff40390e2f1d902f882491f.tar.bz2
Try to get the Keyup Event inside the IconView to not 'move'
forward later. Long Return press triggers autorepeat
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.cpp19
-rw-r--r--noncore/graphics/opie-eye/gui/iconview.h1
2 files changed, 20 insertions, 0 deletions
diff --git a/noncore/graphics/opie-eye/gui/iconview.cpp b/noncore/graphics/opie-eye/gui/iconview.cpp
index 211314b..652acc9 100644
--- a/noncore/graphics/opie-eye/gui/iconview.cpp
+++ b/noncore/graphics/opie-eye/gui/iconview.cpp
@@ -313,278 +313,297 @@ QString PIconView::nextFileName(bool &isDir)const
313{ 313{
314 isDir = false; 314 isDir = false;
315 QIconViewItem* _it1 = m_view->currentItem(); 315 QIconViewItem* _it1 = m_view->currentItem();
316 if ( !_it1 ) 316 if ( !_it1 )
317 return QString::null; 317 return QString::null;
318 QIconViewItem* _it = _it1->nextItem(); 318 QIconViewItem* _it = _it1->nextItem();
319 if ( !_it ) 319 if ( !_it )
320 return QString::null; 320 return QString::null;
321 IconViewItem* it = static_cast<IconViewItem*>( _it ); 321 IconViewItem* it = static_cast<IconViewItem*>( _it );
322 isDir = it->isDir(); 322 isDir = it->isDir();
323 return it->path(); 323 return it->path();
324} 324}
325 325
326QString PIconView::prevFileName(bool &isDir)const{ 326QString PIconView::prevFileName(bool &isDir)const{
327 isDir = false; 327 isDir = false;
328 QIconViewItem* _it = m_view->currentItem(); 328 QIconViewItem* _it = m_view->currentItem();
329 if ( !_it ) 329 if ( !_it )
330 return QString::null; 330 return QString::null;
331 _it = _it->prevItem(); 331 _it = _it->prevItem();
332 if ( !_it ) 332 if ( !_it )
333 return QString::null; 333 return QString::null;
334 IconViewItem* it = static_cast<IconViewItem*>( _it ); 334 IconViewItem* it = static_cast<IconViewItem*>( _it );
335 isDir = it->isDir(); 335 isDir = it->isDir();
336 return it->path(); 336 return it->path();
337} 337}
338 338
339void PIconView::slotTrash() { 339void PIconView::slotTrash() {
340 bool isDir; 340 bool isDir;
341 QString pa = currentFileName( isDir ); 341 QString pa = currentFileName( isDir );
342 if ( isDir && pa.isEmpty() ) 342 if ( isDir && pa.isEmpty() )
343 return; 343 return;
344 344
345 if (!QPEMessageBox::confirmDelete( this, 345 if (!QPEMessageBox::confirmDelete( this,
346 tr("Delete Image" ), 346 tr("Delete Image" ),
347 tr("the Image %1" ).arg(pa))) 347 tr("the Image %1" ).arg(pa)))
348 return 348 return
349 349
350 350
351 currentView()->dirLister()->deleteImage( pa ); 351 currentView()->dirLister()->deleteImage( pa );
352 delete m_view->currentItem(); 352 delete m_view->currentItem();
353} 353}
354 354
355/* 355/*
356 * see what views are available 356 * see what views are available
357 */ 357 */
358void PIconView::loadViews() { 358void PIconView::loadViews() {
359 ViewMap::Iterator it; 359 ViewMap::Iterator it;
360 ViewMap* map = viewMap(); 360 ViewMap* map = viewMap();
361 for ( it = map->begin(); it != map->end(); ++it ) 361 for ( it = map->begin(); it != map->end(); ++it )
362 m_views->insertItem( it.key() ); 362 m_views->insertItem( it.key() );
363} 363}
364 364
365void PIconView::resetView() { 365void PIconView::resetView() {
366 slotViewChanged(m_views->currentItem()); 366 slotViewChanged(m_views->currentItem());
367} 367}
368 368
369/* 369/*
370 *swicth view reloadDir and connect signals 370 *swicth view reloadDir and connect signals
371 */ 371 */
372void PIconView::slotViewChanged( int i) { 372void PIconView::slotViewChanged( int i) {
373 if (!m_views->count() ) { 373 if (!m_views->count() ) {
374 setCurrentView( 0l); 374 setCurrentView( 0l);
375 return; 375 return;
376 } 376 }
377 377
378 PDirView* cur = currentView(); 378 PDirView* cur = currentView();
379 if (cur) delete cur; 379 if (cur) delete cur;
380 QString str = m_views->text(i); 380 QString str = m_views->text(i);
381 ViewMap* map = viewMap(); 381 ViewMap* map = viewMap();
382 if (!map) {setCurrentView(0l); return;} 382 if (!map) {setCurrentView(0l); return;}
383 if (map->find(str) == map->end()) { 383 if (map->find(str) == map->end()) {
384 owarn << "Key not found" << oendl; 384 owarn << "Key not found" << oendl;
385 setCurrentView(0l); return; 385 setCurrentView(0l); return;
386 } 386 }
387 m_cfg->writeEntry("LastView",str); 387 m_cfg->writeEntry("LastView",str);
388 m_cfg->write(); 388 m_cfg->write();
389 cur = (*(*map)[str])(*m_cfg); 389 cur = (*(*map)[str])(*m_cfg);
390 setCurrentView( cur ); 390 setCurrentView( cur );
391 391
392 /* connect to the signals of the lister */ 392 /* connect to the signals of the lister */
393 PDirLister* lis = cur->dirLister(); 393 PDirLister* lis = cur->dirLister();
394 connect(lis, SIGNAL(sig_thumbInfo(const QString&, const QString& )), 394 connect(lis, SIGNAL(sig_thumbInfo(const QString&, const QString& )),
395 this, SLOT( slotThumbInfo(const QString&, const QString&))); 395 this, SLOT( slotThumbInfo(const QString&, const QString&)));
396 connect(lis, SIGNAL( sig_thumbNail(const QString&, const QPixmap&)), 396 connect(lis, SIGNAL( sig_thumbNail(const QString&, const QPixmap&)),
397 this, SLOT(slotThumbNail(const QString&, const QPixmap&))); 397 this, SLOT(slotThumbNail(const QString&, const QPixmap&)));
398 connect(lis, SIGNAL(sig_start()), 398 connect(lis, SIGNAL(sig_start()),
399 this, SLOT(slotStart())); 399 this, SLOT(slotStart()));
400 connect(lis, SIGNAL(sig_end()) , 400 connect(lis, SIGNAL(sig_end()) ,
401 this, SLOT(slotEnd()) ); 401 this, SLOT(slotEnd()) );
402 402
403 403
404 /* reload now */ 404 /* reload now */
405 QTimer::singleShot( 0, this, SLOT(slotReloadDir())); 405 QTimer::singleShot( 0, this, SLOT(slotReloadDir()));
406} 406}
407 407
408 408
409void PIconView::slotReloadDir() { 409void PIconView::slotReloadDir() {
410 slotChangeDir( m_path ); 410 slotChangeDir( m_path );
411} 411}
412 412
413 413
414/* 414/*
415 * add files and folders 415 * add files and folders
416 */ 416 */
417void PIconView::addFolders( const QStringList& lst) { 417void PIconView::addFolders( const QStringList& lst) {
418 QStringList::ConstIterator it; 418 QStringList::ConstIterator it;
419 IconViewItem * _iv; 419 IconViewItem * _iv;
420 420
421 for(it=lst.begin(); it != lst.end(); ++it ) { 421 for(it=lst.begin(); it != lst.end(); ++it ) {
422 _iv = new IconViewItem( m_view, m_path+"/"+(*it), (*it), true ); 422 _iv = new IconViewItem( m_view, m_path+"/"+(*it), (*it), true );
423 if (m_mode==3) _iv->setTextOnly(true); 423 if (m_mode==3) _iv->setTextOnly(true);
424 } 424 }
425} 425}
426 426
427void PIconView::addFiles( const QStringList& lst) { 427void PIconView::addFiles( const QStringList& lst) {
428 QStringList::ConstIterator it; 428 QStringList::ConstIterator it;
429 IconViewItem * _iv; 429 IconViewItem * _iv;
430 QPixmap*m_pix = 0; 430 QPixmap*m_pix = 0;
431 QString pre = ""; 431 QString pre = "";
432 if (!m_path.isEmpty()) { 432 if (!m_path.isEmpty()) {
433 pre = m_path+"/"; 433 pre = m_path+"/";
434 } 434 }
435 for (it=lst.begin(); it!= lst.end(); ++it ) { 435 for (it=lst.begin(); it!= lst.end(); ++it ) {
436 m_pix = PPixmapCache::self()->cachedImage( pre+(*it), 64, 64 ); 436 m_pix = PPixmapCache::self()->cachedImage( pre+(*it), 64, 64 );
437 _iv = new IconViewItem( m_view, pre+(*it), (*it) ); 437 _iv = new IconViewItem( m_view, pre+(*it), (*it) );
438 if (m_mode==3) { 438 if (m_mode==3) {
439 _iv->setTextOnly(true); 439 _iv->setTextOnly(true);
440 _iv->setPixmap(QPixmap()); 440 _iv->setPixmap(QPixmap());
441
442
443
441 } else { 444 } else {
442 if (m_pix) _iv->setPixmap(*m_pix); 445 if (m_pix) _iv->setPixmap(*m_pix);
443 } 446 }
444 } 447 }
445 448
446} 449}
447 450
448/* 451/*
449 * user clicked on the item. Change dir or view 452 * user clicked on the item. Change dir or view
450 */ 453 */
451void PIconView::slotClicked(QIconViewItem* _it) { 454void PIconView::slotClicked(QIconViewItem* _it) {
452 if(!_it ) 455 if(!_it )
453 return; 456 return;
454 457
455 IconViewItem* it = static_cast<IconViewItem*>(_it); 458 IconViewItem* it = static_cast<IconViewItem*>(_it);
456 if( it->isDir() ) 459 if( it->isDir() )
457 slotChangeDir( it->path() ); 460 slotChangeDir( it->path() );
458 else // view image 461 else // view image
459 slotShowImage(); 462 slotShowImage();
460} 463}
461 464
462/* 465/*
466 * Return was pressed. which is triggered by the keydown
467 * handler. The problem is that the key up will be handled
468 * by the ImageDisplayer and goes to the next image
469 */
470void PIconView::slotRetrun( QIconViewItem *_it ) {
471 if(!_it )
472 return;
473
474 IconViewItem* it = static_cast<IconViewItem*>(_it);
475 if( it->isDir() )
476 slotChangeDir( it->path() );
477 else
478 QTimer::singleShot(0, this, SLOT(slotShowImage()) );
479}
480
481/*
463 * got thumb info add to the cache if items is visible 482 * got thumb info add to the cache if items is visible
464 * we later need update after processing of slave is done 483 * we later need update after processing of slave is done
465 */ 484 */
466void PIconView::slotThumbInfo( const QString& _path, const QString& str ) { 485void PIconView::slotThumbInfo( const QString& _path, const QString& str ) {
467 IconViewItem* item = g_stringInf[_path]; 486 IconViewItem* item = g_stringInf[_path];
468 if (!item ) 487 if (!item )
469 return; 488 return;
470 489
471 if (m_mode == 2) { 490 if (m_mode == 2) {
472 return; 491 return;
473 } 492 }
474 if ( item->intersects(QRect( m_view->contentsX(),m_view->contentsY(), 493 if ( item->intersects(QRect( m_view->contentsX(),m_view->contentsY(),
475 m_view->contentsWidth(), m_view->contentsHeight() ) ) ) 494 m_view->contentsWidth(), m_view->contentsHeight() ) ) )
476 m_updatet = true; 495 m_updatet = true;
477 496
478 item->setText( str ); 497 item->setText( str );
479 g_stringInf.remove( _path ); 498 g_stringInf.remove( _path );
480} 499}
481 500
482/* 501/*
483 * got thumbnail and see if it is visible so we need to update later 502 * got thumbnail and see if it is visible so we need to update later
484 */ 503 */
485void PIconView::slotThumbNail(const QString& _path, const QPixmap &pix) { 504void PIconView::slotThumbNail(const QString& _path, const QPixmap &pix) {
486 IconViewItem* item = g_stringPix[_path]; 505 IconViewItem* item = g_stringPix[_path];
487 if (!item ) 506 if (!item )
488 return; 507 return;
489 508
490 if ( item->intersects(QRect( m_view->contentsX(),m_view->contentsY(), 509 if ( item->intersects(QRect( m_view->contentsX(),m_view->contentsY(),
491 m_view->contentsWidth(), m_view->contentsHeight() ) ) ) 510 m_view->contentsWidth(), m_view->contentsHeight() ) ) )
492 m_updatet = true; 511 m_updatet = true;
493 512
494 if (pix.width()>0) { 513 if (pix.width()>0) {
495 PPixmapCache::self()->insertImage( _path, pix, 64, 64 ); 514 PPixmapCache::self()->insertImage( _path, pix, 64, 64 );
496 item->setPixmap(pix,true); 515 item->setPixmap(pix,true);
497 } else { 516 } else {
498 PPixmapCache::self()->insertImage( _path, Resource::loadPixmap( "UnknownDocument" ), 64, 64 ); 517 PPixmapCache::self()->insertImage( _path, Resource::loadPixmap( "UnknownDocument" ), 64, 64 );
499 } 518 }
500 g_stringPix.remove( _path ); 519 g_stringPix.remove( _path );
501} 520}
502 521
503 522
504/* 523/*
505 * FIXME rename 524 * FIXME rename
506 */ 525 */
507void PIconView::slotRename() { 526void PIconView::slotRename() {
508 527
509} 528}
510 529
511 530
512/* 531/*
513 * BEAM the current file 532 * BEAM the current file
514 */ 533 */
515void PIconView::slotBeam() { 534void PIconView::slotBeam() {
516 bool isDir; 535 bool isDir;
517 QString pa = currentFileName( isDir ); 536 QString pa = currentFileName( isDir );
518 if ( isDir && pa.isEmpty() ) 537 if ( isDir && pa.isEmpty() )
519 return; 538 return;
520 539
521 Ir* ir = new Ir( this ); 540 Ir* ir = new Ir( this );
522 connect( ir, SIGNAL(done(Ir*)), 541 connect( ir, SIGNAL(done(Ir*)),
523 this, SLOT(slotBeamDone(Ir*))); 542 this, SLOT(slotBeamDone(Ir*)));
524 ir->send(pa, tr( "Image" ) ); 543 ir->send(pa, tr( "Image" ) );
525} 544}
526 545
527/* 546/*
528 * BEAM done clean up 547 * BEAM done clean up
529 */ 548 */
530void PIconView::slotBeamDone( Ir* ir) { 549void PIconView::slotBeamDone( Ir* ir) {
531 delete ir; 550 delete ir;
532} 551}
533 552
534void PIconView::slotStart() { 553void PIconView::slotStart() {
535 m_view->viewport()->setUpdatesEnabled( false ); 554 m_view->viewport()->setUpdatesEnabled( false );
536} 555}
537 556
538void PIconView::slotEnd() { 557void PIconView::slotEnd() {
539 if ( m_updatet ) 558 if ( m_updatet )
540 m_view->arrangeItemsInGrid( ); 559 m_view->arrangeItemsInGrid( );
541 m_view->viewport()->setUpdatesEnabled( true ); 560 m_view->viewport()->setUpdatesEnabled( true );
542 m_updatet = false; 561 m_updatet = false;
543} 562}
544 563
545void PIconView::slotShowNext() 564void PIconView::slotShowNext()
546{ 565{
547 bool isDir = false; 566 bool isDir = false;
548 QString name = nextFileName(isDir); 567 QString name = nextFileName(isDir);
549 if (name.isEmpty()) return; 568 if (name.isEmpty()) return;
550 if (isDir) return; 569 if (isDir) return;
551 /* if we got a name we have a next item */ 570 /* if we got a name we have a next item */
552 m_view->setCurrentItem(m_view->currentItem()->nextItem()); 571 m_view->setCurrentItem(m_view->currentItem()->nextItem());
553 slotShowImage(name); 572 slotShowImage(name);
554} 573}
555 574
556void PIconView::slotShowPrev() 575void PIconView::slotShowPrev()
557{ 576{
558 bool isDir = false; 577 bool isDir = false;
559 QString name = prevFileName(isDir); 578 QString name = prevFileName(isDir);
560 if (name.isEmpty()) return; 579 if (name.isEmpty()) return;
561 if (isDir) return; 580 if (isDir) return;
562 /* if we got a name we have a prev item */ 581 /* if we got a name we have a prev item */
563 m_view->setCurrentItem(m_view->currentItem()->prevItem()); 582 m_view->setCurrentItem(m_view->currentItem()->prevItem());
564 slotShowImage(name); 583 slotShowImage(name);
565} 584}
566 585
567void PIconView::slotShowImage() 586void PIconView::slotShowImage()
568{ 587{
569 bool isDir = false; 588 bool isDir = false;
570 QString name = currentFileName(isDir); 589 QString name = currentFileName(isDir);
571 if (isDir) return; 590 if (isDir) return;
572 slotShowImage( name ); 591 slotShowImage( name );
573} 592}
574void PIconView::slotShowImage( const QString& name) { 593void PIconView::slotShowImage( const QString& name) {
575 PDirLister *lister = currentView()->dirLister(); 594 PDirLister *lister = currentView()->dirLister();
576 QString r_name = lister->nameToFname(name); 595 QString r_name = lister->nameToFname(name);
577 emit sig_display( r_name ); 596 emit sig_display( r_name );
578} 597}
579void PIconView::slotImageInfo() { 598void PIconView::slotImageInfo() {
580 bool isDir = false; 599 bool isDir = false;
581 QString name = currentFileName(isDir); 600 QString name = currentFileName(isDir);
582 if (isDir) return; 601 if (isDir) return;
583 602
584 slotImageInfo( name ); 603 slotImageInfo( name );
585} 604}
586 605
587void PIconView::slotImageInfo( const QString& name) { 606void PIconView::slotImageInfo( const QString& name) {
588 PDirLister *lister = currentView()->dirLister(); 607 PDirLister *lister = currentView()->dirLister();
589 QString r_name = lister->nameToFname(name); 608 QString r_name = lister->nameToFname(name);
590 emit sig_showInfo(r_name ); 609 emit sig_showInfo(r_name );
diff --git a/noncore/graphics/opie-eye/gui/iconview.h b/noncore/graphics/opie-eye/gui/iconview.h
index 14ad168..a424c5c 100644
--- a/noncore/graphics/opie-eye/gui/iconview.h
+++ b/noncore/graphics/opie-eye/gui/iconview.h
@@ -1,95 +1,96 @@
1/* 1/*
2 * GPLv2 zecke@handhelds.org 2 * GPLv2 zecke@handhelds.org
3 * No WArranty... 3 * No WArranty...
4 */ 4 */
5 5
6#ifndef PHUNK_ICON_VIEW_H 6#ifndef PHUNK_ICON_VIEW_H
7#define PHUNK_ICON_VIEW_H 7#define PHUNK_ICON_VIEW_H
8 8
9#include <qvbox.h> 9#include <qvbox.h>
10 10
11 11
12class QIconView; 12class QIconView;
13class QIconViewItem; 13class QIconViewItem;
14class QComboBox; 14class QComboBox;
15class PIconViewItem; 15class PIconViewItem;
16class PDirLister; 16class PDirLister;
17class Ir; 17class Ir;
18 18
19namespace Opie { 19namespace Opie {
20namespace Core{ 20namespace Core{
21 class OConfig; 21 class OConfig;
22 class OKeyConfigManager; 22 class OKeyConfigManager;
23} 23}
24} 24}
25 25
26class PIconView : public QVBox { 26class PIconView : public QVBox {
27 Q_OBJECT 27 Q_OBJECT
28 friend class PIconViewItem; 28 friend class PIconViewItem;
29 enum ActionIds { 29 enum ActionIds {
30 BeamItem, DeleteItem, ViewItem, InfoItem 30 BeamItem, DeleteItem, ViewItem, InfoItem
31 }; 31 };
32public: 32public:
33 PIconView( QWidget* wid, Opie::Core::OConfig *cfg ); 33 PIconView( QWidget* wid, Opie::Core::OConfig *cfg );
34 ~PIconView(); 34 ~PIconView();
35 void resetView(); 35 void resetView();
36 Opie::Core::OKeyConfigManager* manager(); 36 Opie::Core::OKeyConfigManager* manager();
37 37
38signals: 38signals:
39 void sig_showInfo( const QString& ); 39 void sig_showInfo( const QString& );
40 void sig_display( const QString& ); 40 void sig_display( const QString& );
41 41
42public slots: 42public slots:
43 virtual void slotShowNext(); 43 virtual void slotShowNext();
44 virtual void slotShowPrev(); 44 virtual void slotShowPrev();
45 45
46protected: 46protected:
47 void resizeEvent( QResizeEvent* ); 47 void resizeEvent( QResizeEvent* );
48 48
49private: 49private:
50 void initKeys(); 50 void initKeys();
51 QString currentFileName(bool &isDir)const; 51 QString currentFileName(bool &isDir)const;
52 QString nextFileName(bool &isDir)const; 52 QString nextFileName(bool &isDir)const;
53 QString prevFileName(bool &isDir)const; 53 QString prevFileName(bool &isDir)const;
54 void loadViews(); 54 void loadViews();
55 void calculateGrid(); 55 void calculateGrid();
56 56
57private slots: 57private slots:
58 void slotDirUp(); 58 void slotDirUp();
59 void slotChangeDir(const QString&); 59 void slotChangeDir(const QString&);
60 void slotTrash(); 60 void slotTrash();
61 void slotViewChanged( int ); 61 void slotViewChanged( int );
62 void slotReloadDir(); 62 void slotReloadDir();
63 void slotRename(); 63 void slotRename();
64 void slotBeam(); 64 void slotBeam();
65 void slotBeamDone( Ir* ); 65 void slotBeamDone( Ir* );
66 66
67 void slotShowImage(); 67 void slotShowImage();
68 void slotShowImage( const QString& ); 68 void slotShowImage( const QString& );
69 void slotImageInfo(); 69 void slotImageInfo();
70 void slotImageInfo( const QString& ); 70 void slotImageInfo( const QString& );
71 71
72 void slotStart(); 72 void slotStart();
73 void slotEnd(); 73 void slotEnd();
74 74
75/* for performance reasons make it inline in the future */ 75/* for performance reasons make it inline in the future */
76 void addFolders( const QStringList& ); 76 void addFolders( const QStringList& );
77 void addFiles( const QStringList& ); 77 void addFiles( const QStringList& );
78 void slotClicked(QIconViewItem* ); 78 void slotClicked(QIconViewItem* );
79 void slotRetrun(QIconViewItem* );
79 80
80/**/ 81/**/
81 void slotThumbInfo(const QString&, const QString&); 82 void slotThumbInfo(const QString&, const QString&);
82 void slotThumbNail(const QString&, const QPixmap&); 83 void slotThumbNail(const QString&, const QPixmap&);
83 84
84 void slotChangeMode( int ); 85 void slotChangeMode( int );
85private: 86private:
86 Opie::Core::OKeyConfigManager *m_viewManager; 87 Opie::Core::OKeyConfigManager *m_viewManager;
87 Opie::Core::OConfig *m_cfg; 88 Opie::Core::OConfig *m_cfg;
88 QComboBox* m_views; 89 QComboBox* m_views;
89 QIconView* m_view; 90 QIconView* m_view;
90 QString m_path; 91 QString m_path;
91 bool m_updatet : 1; 92 bool m_updatet : 1;
92 int m_mode; 93 int m_mode;
93}; 94};
94 95
95#endif 96#endif