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

List:       kde-commits
Subject:    KDE/kdegames/kpat
From:       Parker Coates <parker.coates () kdemail ! net>
Date:       2012-02-15 4:44:47
Message-ID: 20120215044447.53EB1AC896 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1280160 by coates:

Partially simplify the mess that is DealerScene::patPiles().

The existing solution worked, but the implementation was ugly and it
required KCardScene::addPile() and removePile() to be virtual, which
really doesn't make much sense. KPat's quirks shouldn't be pushed into
LibKCardGame. KPat's quirks should stay in KPat or be done away with.

 M  +5 -18     dealer.cpp  
 M  +2 -2      dealer.h  
 M  +2 -2      klondike.cpp  
 M  +1 -1      klondike.h  
 M  +2 -2      libkcardgame/kcardscene.h  
 M  +13 -2     patpile.cpp  
 M  +4 -1      patpile.h  
 M  +2 -2      spider.cpp  


--- trunk/KDE/kdegames/kpat/dealer.cpp #1280159:1280160
@@ -395,34 +395,21 @@
 }
 
 
-void DealerScene::addPile( KCardPile * pile )
+void DealerScene::addPatPile( PatPile * pile )
 {
-    d->patPiles.clear();
-
-    KCardScene::addPile( pile );
+    if ( !d->patPiles.contains( pile ) )
+        d->patPiles.append( pile );
 }
 
 
-void DealerScene::removePile( KCardPile * pile )
+void DealerScene::removePatPile( PatPile * pile )
 {
-    d->patPiles.clear();
-
-    KCardScene::removePile( pile );
+    d->patPiles.removeAll( pile );
 }
 
 
 QList<PatPile*> DealerScene::patPiles() const
 {
-    if ( d->patPiles.isEmpty() )
-    {
-        foreach( KCardPile * p, piles() )
-        {
-            PatPile * pp = dynamic_cast<PatPile*>( p );
-            if ( pp )
-                d->patPiles << pp;
-        }
-    }
-
     return d->patPiles;
 }
 
--- trunk/KDE/kdegames/kpat/dealer.h #1280159:1280160
@@ -69,8 +69,8 @@
     virtual void relayoutScene();
     void updateWonItem();
 
-    virtual void addPile( KCardPile * pile );
-    virtual void removePile( KCardPile * pile );
+    void addPatPile( PatPile * pile );
+    void removePatPile( PatPile * pile );
     QList<PatPile*> patPiles() const;
 
     void setAutoDropEnabled( bool enabled );
--- trunk/KDE/kdegames/kpat/klondike.cpp #1280159:1280160
@@ -47,8 +47,8 @@
 #include <KSelectAction>
 
 
-KlondikePile::KlondikePile( KCardScene * cardScene, int index, const QString & objectName )
-  : PatPile( cardScene, index, objectName ),
+KlondikePile::KlondikePile( DealerScene * scene, int index, const QString & objectName )
+  : PatPile( scene, index, objectName ),
     m_cardsToShow( 1 )
 {
 }
--- trunk/KDE/kdegames/kpat/klondike.h #1280159:1280160
@@ -90,7 +90,7 @@
 class KlondikePile : public PatPile
 {
 public:
-    KlondikePile( KCardScene * cardScene, int index, const QString & objectName = QString() );
+    KlondikePile( DealerScene * scene, int index, const QString & objectName = QString() );
     void setCardsToShow( int numCards );
     int cardsToShow() const;
     virtual QList<QPointF> cardPositions() const;
--- trunk/KDE/kdegames/kpat/libkcardgame/kcardscene.h #1280159:1280160
@@ -86,8 +86,8 @@
     virtual void relayoutScene();
     virtual void recalculatePileLayouts();
 
-    virtual void addPile( KCardPile * pile );
-    virtual void removePile( KCardPile * pile );
+    void addPile( KCardPile * pile );
+    void removePile( KCardPile * pile );
     QList<KCardPile*> piles() const;
 
     void setHighlightedItems( QList<QGraphicsItem*> items );
--- trunk/KDE/kdegames/kpat/patpile.cpp #1280159:1280160
@@ -22,8 +22,8 @@
 #include "renderer.h"
 
 
-PatPile::PatPile( KCardScene * cardScene, int index, const QString & objectName )
-  : KCardPile( cardScene ),
+PatPile::PatPile( DealerScene * scene, int index, const QString & objectName )
+  : KCardPile( scene ),
     m_index( index ),
     m_role( NoRole )
 {
@@ -34,9 +34,20 @@
 
     // Set the default spread for all piles in KPat.
     setSpread( 0, 0.33 );
+
+    if ( scene )
+        scene->addPatPile( this );
 }
 
 
+PatPile::~PatPile()
+{
+    DealerScene * dealerScene = dynamic_cast<DealerScene*>( scene() );
+    if ( dealerScene )
+        dealerScene->removePatPile( this );
+}
+
+
 int PatPile::index() const
 {
     return m_index;
--- trunk/KDE/kdegames/kpat/patpile.h #1280159:1280160
@@ -19,6 +19,8 @@
 #ifndef PATPILE_H
 #define PATPILE_H
 
+class DealerScene;
+
 #include "KCardPile"
 
 
@@ -43,7 +45,8 @@
         Cell
     };
 
-    PatPile( KCardScene * cardScene, int index, const QString & objectName = QString() );
+    PatPile( DealerScene * scene, int index, const QString & objectName = QString() );
+    virtual ~PatPile();
 
     int index() const;
 
--- trunk/KDE/kdegames/kpat/spider.cpp #1280159:1280160
@@ -51,8 +51,8 @@
 class InvisiblePile : public PatPile
 {
 public:
-    InvisiblePile( KCardScene * cardScene, int index, const QString & objectName = QString() )
-      : PatPile( cardScene, index, objectName )
+    InvisiblePile( DealerScene * scene, int index, const QString & objectName = QString() )
+      : PatPile( scene, index, objectName )
     {
     };
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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