[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/kmplayer/src
From:       Koos Vriezen <koos.vriezen () xs4all ! nl>
Date:       2006-09-03 21:51:04
Message-ID: 1157320264.362727.9821.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 580560 by vriezen:

Code dup to make root items open on clicked() signal and not on 
executed(), to work as espected in icons double click mode
More control on whether active nodes should be opened and/or selected, 
no use change only a hack removal


 M  +8 -8      kmplayerapp.cpp  
 M  +29 -7     kmplayerpartbase.cpp  
 M  +2 -1      kmplayerpartbase.h  
 M  +2 -2      kmplayertvsource.cpp  
 M  +10 -11    playlistview.cpp  
 M  +4 -3      playlistview.h  


--- trunk/extragear/multimedia/kmplayer/src/kmplayerapp.cpp #580559:580560
@@ -686,7 +686,7 @@
             if (count > 50)
                 more->removeChild (more->lastChild ());
         }
-        m_view->playList ()->updateTree (recents_id, recents, 0);
+        m_view->playList ()->updateTree (recents_id, recents, 0, false, false);
     }
 }
 
@@ -966,7 +966,7 @@
             QString txt = m_view->infoPanel ()->text ();
             QTextStream ts (txt, IO_ReadOnly);
             KMPlayer::readXML (si->node, ts, QString (), false);
-            m_view->playList ()->updateTree (edit_tree_id, si->node->document(), \
si->node); +            m_view->playList ()->updateTree (edit_tree_id, \
si->node->document(), si->node, true, false);  }
     } else
         m_player->openURL (m_player->source ()->url ());
@@ -1264,7 +1264,7 @@
     if (recents) { // small window this check fails and thus ClearHistory fails
         recents->defer (); // make sure it's loaded
         recents->clear ();
-        m_view->playList ()->updateTree (recents_id, recents, 0);
+        m_view->playList ()->updateTree (recents_id, recents, 0, false, false);
     }
 }
 
@@ -1433,7 +1433,7 @@
         else
             n->parentNode ()->insertBefore (pi, n->nextSibling ());
     }
-    m_view->playList()->updateTree (playlist_id, playlist, pi);
+    m_view->playList()->updateTree (playlist_id, playlist, pi, true, false);
 }
 
 KDE_NO_EXPORT void KMPlayerApp::menuDropInGroup () {
@@ -1455,7 +1455,7 @@
             pi = new PlaylistItem (playlist,this,m_drop_list[i].url ());
         g->appendChild (pi);
     }
-    m_view->playList()->updateTree (playlist_id, playlist, pi);
+    m_view->playList()->updateTree (playlist_id, playlist, pi, true, false);
 }
 
 KDE_NO_EXPORT void KMPlayerApp::menuCopyDrop () {
@@ -1466,7 +1466,7 @@
             n->insertBefore (pi, n->firstChild ());
         else
             n->parentNode ()->insertBefore (pi, n->nextSibling ());
-        m_view->playList()->updateTree (playlist_id, playlist, pi);
+        m_view->playList()->updateTree (playlist_id, playlist, pi, true, false);
     }
 }
 
@@ -1476,7 +1476,7 @@
         n = playlist_node->previousSibling() ? playlist_node->previousSibling() : \
playlist_node->parentNode ();  playlist_node->parentNode ()->removeChild \
(playlist_node);  }
-    m_view->playList()->updateTree (playlist_id, playlist, n);
+    m_view->playList()->updateTree (playlist_id, playlist, n, true, false);
 }
 
 KDE_NO_EXPORT void KMPlayerApp::playListItemMoved () {
@@ -1487,7 +1487,7 @@
         KMPlayer::NodePtr p = si->node->parentNode ();
         if (p) {
             p->removeChild (si->node);
-            m_view->playList()->updateTree (playlist_id, playlist, 0L);
+            m_view->playList()->updateTree(playlist_id,playlist,0L,false,false);
         }
     }
 }
--- trunk/extragear/multimedia/kmplayer/src/kmplayerpartbase.cpp #580559:580560
@@ -225,8 +225,10 @@
              this, SLOT (playListItemExecuted (QListViewItem *)));
     connect (playlist, SIGNAL (selectionChanged (QListViewItem *)),
              this, SLOT (playListItemSelected (QListViewItem *)));
-    connect (this, SIGNAL (treeChanged (int, NodePtr, NodePtr)),
-             playlist, SLOT (updateTree (int, NodePtr, NodePtr)));
+    connect (playlist, SIGNAL (clicked (QListViewItem *)),
+             this, SLOT (playListItemClicked (QListViewItem *)));
+    connect (this, SIGNAL (treeChanged (int, NodePtr, NodePtr, bool, bool)),
+             playlist, SLOT (updateTree (int, NodePtr, NodePtr, bool, bool)));
     connect (this, SIGNAL (treeUpdated ()),
              playlist, SLOT (triggerUpdate ()));
 }
@@ -578,7 +580,7 @@
     m_source->forward ();
 }
 
-void PartBase::playListItemSelected (QListViewItem * item) {
+KDE_NO_EXPORT void PartBase::playListItemSelected (QListViewItem * item) {
     if (m_in_update_tree) return;
     PlayListItem * vi = static_cast <PlayListItem *> (item);
     if (vi->node) {
@@ -588,11 +590,31 @@
         updateTree (); // items already deleted
 }
 
-void PartBase::playListItemExecuted (QListViewItem * item) {
+KDE_NO_EXPORT void PartBase::playListItemClicked (QListViewItem * item) {
+    if (!item)
+        return;
+    PlayListItem * vi = static_cast <PlayListItem *> (item);
+    RootPlayListItem * ri = vi->playListView ()->rootItem (item);
+    if (ri == item && vi->node) {
+        QString src = ri->source;
+        kdDebug() << "playListItemClicked " << src << " " << vi->node->nodeName() << \
endl; +        Source * source = src.isEmpty() ? m_source : m_sources[src.ascii()];
+        if (vi->node->isPlayable ()) {
+            source->jump (vi->node); //may become !isPlayable by lazy loading
+            if (!vi->node->isPlayable ())
+                emit treeChanged (ri->id, vi->node, 0, false, true);
+        } else if (vi->firstChild ())
+            vi->listView ()->setOpen (vi, !vi->isOpen ());
+    }
+}
+
+KDE_NO_EXPORT void PartBase::playListItemExecuted (QListViewItem * item) {
     if (m_in_update_tree) return;
     if (m_view->editMode ()) return;
     PlayListItem * vi = static_cast <PlayListItem *> (item);
     RootPlayListItem * ri = vi->playListView ()->rootItem (item);
+    if (ri == item)
+        return; // both null or handled by playListItemClicked
     if (vi->node) {
         QString src = ri->source;
         kdDebug() << "playListItemExecuted " << src << " " << vi->node->nodeName() \
<< endl; @@ -600,7 +622,7 @@
         if (vi->node->isPlayable ()) {
             source->jump (vi->node); //may become !isPlayable by lazy loading
             if (!vi->node->isPlayable ())
-                emit treeChanged (-1, vi->node, 0);
+                emit treeChanged (ri->id, vi->node, 0, false, true);
         } else if (vi->firstChild ())
             vi->listView ()->setOpen (vi, !vi->isOpen ());
     } else if (vi->m_attr) {
@@ -625,7 +647,7 @@
             }
         }
     } else
-        emit treeChanged (ri->id, ri->node, 0L);
+        emit treeChanged (ri->id, ri->node, 0L, false, false);
     if (m_view)
         m_view->viewArea ()->setFocus ();
 }
@@ -635,7 +657,7 @@
         m_in_update_tree = true;
         if (m_update_tree_full) {
             if (m_source)
-                emit treeChanged (0, m_source->root (), m_source->current ());
+                emit treeChanged (0, m_source->root (), m_source->current (), true, \
false);  } else
             emit treeUpdated ();
         m_in_update_tree = false;
--- trunk/extragear/multimedia/kmplayer/src/kmplayerpartbase.h #580559:580560
@@ -192,7 +192,7 @@
     void urlAdded (const QString & url);
     void urlChanged (const QString & url);
     void processChanged (const char *);
-    void treeChanged (int id, NodePtr root, NodePtr);
+    void treeChanged (int id, NodePtr root, NodePtr, bool select, bool open);
     void treeUpdated ();
     void infoUpdated (const QString & msg);
     void statusUpdated (const QString & msg);
@@ -214,6 +214,7 @@
     void sourceHasChangedAspects ();
     void fullScreen ();
     void playListItemSelected (QListViewItem *);
+    void playListItemClicked (QListViewItem *);
     void playListItemExecuted (QListViewItem *);
     virtual void playingStarted ();
     virtual void playingStopped ();
--- trunk/extragear/multimedia/kmplayer/src/kmplayertvsource.cpp #580559:580560
@@ -436,7 +436,7 @@
         return;
     m_cur_tvinput = input;
     m_cur_tvdevice = input->parentNode ();
-    static_cast <KMPlayer::View*>(m_player->view ())->playList ()->updateTree (0, \
m_cur_tvinput, m_current); +    static_cast <KMPlayer::View*>(m_player->view \
())->playList ()->updateTree (0, m_cur_tvinput, m_current, true, false);  if \
(m_cur_tvdevice->id != id_node_tv_device) {  return;
     }
@@ -524,7 +524,7 @@
     kdDebug () << "KMPlayerTVSource::readXML" << endl;
     static_cast <TVDocument *> (m_document.ptr ())->readFromFile
         (locateLocal ("data", "kmplayer/tv.xml"));
-    static_cast <KMPlayer::View*>(m_player->view ())->playList ()->updateTree \
(tree_id, m_document, 0); +    static_cast <KMPlayer::View*>(m_player->view \
())->playList ()->updateTree (tree_id, m_document, 0, false, false);  buildMenu ();
     sync (false);
 }
--- trunk/extragear/multimedia/kmplayer/src/playlistview.cpp #580559:580560
@@ -153,7 +153,7 @@
     ritem->setPixmap (0, !ritem->icon.isEmpty ()
             ? KGlobal::iconLoader ()->loadIcon (ritem->icon, KIcon::Small)
             : url_pix);
-    updateTree (ritem, 0L);
+    updateTree (ritem, 0L, false);
     return last_id;
 }
 
@@ -210,13 +210,13 @@
     return item;
 }
 
-void PlayListView::updateTree (int id, NodePtr root, NodePtr active) {
+void PlayListView::updateTree (int id, NodePtr root, NodePtr active,
+        bool select, bool open) {
     // TODO, if root is same as rootitems->node and treeversion is the same
     // and show all nodes is unchanged then only update the cells
     QWidget * w = focusWidget ();
     if (w && w != this)
         w->clearFocus ();
-    bool set_open = false;
     //setSelected (firstChild (), true);
     RootPlayListItem * ritem = static_cast <RootPlayListItem *> (firstChild ());
     RootPlayListItem * before = 0L;
@@ -231,7 +231,6 @@
                 }
             if (root == ritem->node) {
                 id = ritem->id;
-                set_open = true;
                 break;  // found based on matching (ancestor) node
             }
         }
@@ -249,20 +248,20 @@
         ritem->node = root;
     m_find_next->setEnabled (!!m_current_find_elm);
     bool need_timer = !tree_update;
-    tree_update = new TreeUpdate (ritem, active, set_open, tree_update);
+    tree_update = new TreeUpdate (ritem, active, select, open, tree_update);
     if (need_timer)
         QTimer::singleShot (0, this, SLOT (updateTrees ()));
 }
 
 KDE_NO_EXPORT void PlayListView::updateTrees () {
     for (; tree_update; tree_update = tree_update->next) {
-        updateTree (tree_update->root_item, tree_update->node);
+        updateTree (tree_update->root_item, tree_update->node, tree_update->select);
         if (tree_update->open) // FIXME for non-root nodes lazy loading
             setOpen (tree_update->root_item, true);
     }
 }
 
-KDE_NO_EXPORT void PlayListView::updateTree (RootPlayListItem * ritem, NodePtr \
active) { +KDE_NO_EXPORT void PlayListView::updateTree (RootPlayListItem * ritem, \
NodePtr active, bool select) {  bool set_open = ritem->id == 0 || (ritem ? \
ritem->isOpen () : false);  m_ignore_expanded = true;
     PlayListItem * curitem = 0L;
@@ -271,7 +270,7 @@
     populate (ritem->node, active, ritem, 0L, &curitem);
     if (set_open && ritem->firstChild () && !ritem->isOpen ())
         setOpen (ritem, true);
-    if (curitem) {
+    if (curitem && select) {
         setSelected (curitem, true);
         ensureItemVisible (curitem);
     }
@@ -406,7 +405,7 @@
     if (ri && ri->show_all_nodes != show) {
         PlayListItem * cur_item = currentPlayListItem ();
         ri->show_all_nodes = show;
-        updateTree (ri->id, ri->node, cur_item->node);
+        updateTree (ri->id, ri->node, cur_item->node, true, false);
         if (m_current_find_elm &&
                 ri->node->document() == m_current_find_elm->document() &&
                 !ri->show_all_nodes) {
@@ -460,7 +459,7 @@
             NodePtr cn;
             if (citem)
                 cn = citem->node;
-            updateTree (ritem, cn);
+            updateTree (ritem, cn, true);
         }
     } else
         m_view->dropEvent (de);
@@ -473,7 +472,7 @@
         if (!ri->show_all_nodes && item->node->isEditable ())
             item->node->setNodeName (item->text (0));
         else // restore damage ..
-            updateTree (ri, item->node);
+            updateTree (ri, item->node, true);
     } else if (item->m_attr) {
         QString txt = item->text (0);
         int pos = txt.find (QChar ('='));
--- trunk/extragear/multimedia/kmplayer/src/playlistview.h #580559:580560
@@ -105,7 +105,7 @@
 public slots:
     void editCurrent ();
     void rename (QListViewItem * item, int c);
-    void updateTree (int id, NodePtr root, NodePtr active);
+    void updateTree (int id, NodePtr root, NodePtr active, bool sel, bool open);
 private slots:
     void contextMenuItem (QListViewItem *, const QPoint &, int);
     void itemExpanded (QListViewItem *);
@@ -119,13 +119,14 @@
     void slotFindOk ();
     void slotFindNext ();
 private:
-    void updateTree (RootPlayListItem * ritem, NodePtr active);
+    void updateTree (RootPlayListItem * ritem, NodePtr active, bool select);
     PlayListItem * populate (NodePtr e, NodePtr focus, RootPlayListItem *root, \
PlayListItem * item, PlayListItem ** curitem);  struct KMPLAYER_NO_EXPORT TreeUpdate \
                {
-        KDE_NO_CDTOR_EXPORT TreeUpdate (RootPlayListItem *ri, NodePtr n, bool o, \
SharedPtr <TreeUpdate> &nx) : root_item (ri), node (n), open (o), next (nx) {} +      \
KDE_NO_CDTOR_EXPORT TreeUpdate (RootPlayListItem *ri, NodePtr n, bool s, bool o, \
SharedPtr <TreeUpdate> &nx) : root_item (ri), node (n), select (s), open (o), next \
(nx) {}  KDE_NO_CDTOR_EXPORT ~TreeUpdate () {}
         RootPlayListItem * root_item;
         NodePtrW node;
+        bool select;
         bool open;
         SharedPtr <TreeUpdate> next;
     };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic