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

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Teo Mrnjavac <teo.mrnjavac () gmail ! com>
Date:       2008-08-31 23:45:59
Message-ID: 1220226359.068562.17816.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 855518 by mrnjavac:

Trying to add icons to the Tokens and still wrestling with a nasty crash when \
dropping on FilenameLayoutWidget. Layout fixes.


 M  +5 -1      collection/sqlcollection/OrganizeCollectionDialog.cpp  
 M  +1 -1      dialogs/FilenameLayoutDialog.ui  
 M  +15 -6     widgets/FilenameLayoutWidget.cpp  
 M  +27 -9     widgets/Token.cpp  
 M  +7 -5      widgets/Token.h  
 M  +6 -1      widgets/TokenListWidget.cpp  


--- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/OrganizeCollectionDialog.cpp \
#855517:855518 @@ -147,6 +147,9 @@
 QString
 OrganizeCollectionDialog::buildDestination( const QString &format, const \
Meta::TrackPtr &track ) const  {
+    //TODO: handle if track==NULL to avoid bug 169684
+    //This could maybe happen with an empty collection, when the TrackList is empty \
and then m_previewTrack is null. +    //FIXME: 169684
     bool isCompilation = track->album()->isCompilation();
     QMap<QString, QString> args;
     QString artist = track->artist()->name();
@@ -273,7 +276,7 @@
 
 
 void
-OrganizeCollectionDialog::setPreviewTrack( const Meta::TrackPtr track )
+OrganizeCollectionDialog::setPreviewTrack( const Meta::TrackPtr track )     \
//UNUSED!! I don't know what's this thing doing here but it might be the cause of \
BR169684  {
    m_previewTrack = track;
 }
@@ -371,6 +374,7 @@
         ui->formatLabel->hide();
         ui->formatEdit->hide();
         ui->formatHelp->hide();
+        filenameLayoutDialog->hide();
 
         widget->resize( widget->minimumSize() );    //TODO: FIX THE LAYOUT WHEN \
RESIZING  vbox->resize( vbox->minimumSize() );
--- trunk/extragear/multimedia/amarok/src/dialogs/FilenameLayoutDialog.ui \
#855517:855518 @@ -6,7 +6,7 @@
     <x>0</x>
     <y>0</y>
     <width>642</width>
-    <height>641</height>
+    <height>733</height>
    </rect>
   </property>
   <property name="sizePolicy" >
--- trunk/extragear/multimedia/amarok/src/widgets/FilenameLayoutWidget.cpp \
#855517:855518 @@ -75,9 +75,9 @@
     
     token->show();
 
-    if( token->text() == "<space>" )
+    if( token->getString() == "<space>" )
     {
-        token->setText( " " );
+        token->setString( " " );
     }
 
     //testing, remove when done
@@ -87,7 +87,7 @@
     //debug stuff follows
     foreach(Token *temp, *tokenList)
     {
-        debug() << tokenList->indexOf( temp ) << " .......... " << layout->indexOf( \
temp ) << " .......... " << temp->text(); +        debug() << tokenList->indexOf( \
temp ) << " .......... " << layout->indexOf( temp ) << " .......... " << \
temp->getString();  }
     generateParsableScheme();
     emit schemeChanged();
@@ -163,34 +163,43 @@
         debug() << "I am dragging from the layout widget";
         event->setDropAction( Qt::MoveAction );
     }
-
+    debug()<<"everything fine so far, now I'm gonna calculate where to insert the \
                new token";
     Token *childUnder = qobject_cast< Token * >( childAt( event->pos() ) );
     if( childUnder == 0 )   //if I'm not dropping on an existing token
     {
         if( !m_tokenCount )   //if the bar is empty
         {
             addToken( textFromMimeData );
+            debug()<<">>>>>>>>> EMPTY BAR";
         }
         else                //if the bar is not empty and I'm still not dropping on \
an existing token  {
             QPoint fixedPos = QPoint( event->pos().x(), size().height() / 2 );      \
//first I lower the y coordinate of the drop, this should handle the drops higher and \
lower than the tokens +            debug()<<">>>>>>>>> CENTERING VERTICALLY";
             childUnder = qobject_cast< Token * >( childAt( fixedPos ) );            \
                //and I look for a child (token) on these new coordinates
             if( childUnder == 0 )                                                   \
//if there's none, then I'm either at the beginning or at the end of the bar  {
                 if( fixedPos.x() < childrenRect().topLeft().x() )                   \
//if I'm dropping before all the tokens  {
                     fixedPos = QPoint( fixedPos.x() + 10, fixedPos.y() );
+                    debug()<<">>>>>>>>> SIMULATING DROP TO THE RIGHT";
+                    
                 }
                 else                                                                \
//this covers if I'm dropping after all the tokens or in between  {
                     fixedPos = QPoint( fixedPos.x() - 10, fixedPos.y() );
+                    debug()<<">>>>>>>>> SIMULATING DROP TO THE LEFT";
+                    
                 }
                 childUnder = qobject_cast< Token * >( childAt( fixedPos ) );
                 insertOverChild( childUnder, textFromMimeData, event );
+                debug()<<">>>>>>>>> \\called insertOverChild";
+                
             }
             else                                                                    \
//if I find a token, I'm done  {
                 insertOverChild( childUnder, textFromMimeData, event );
+                debug()<<">>>>>>>>> \\called insertOverChild";
             }
         }
     }
@@ -242,7 +251,7 @@
         return;
     QByteArray itemData;
     QDataStream dataStream( &itemData, QIODevice::WriteOnly );
-    dataStream << child->text(); // << QPoint( event->pos() - \
child->rect().topLeft() -child.pos() );       //I may need the QPoint of the start \
sooner or later +    dataStream << child->getString(); // << QPoint( event->pos() - \
child->rect().topLeft() -child.pos() );       //I may need the QPoint of the start \
sooner or later  QMimeData *mimeData = new QMimeData;
     mimeData->setData( "application/x-amarok-tag-token", itemData );
     QDrag *drag = new QDrag( this );
@@ -275,7 +284,7 @@
     m_parsableScheme = "";
     foreach( Token *token, *tokenList)
     {
-        QString current = token->text();
+        QString current = token->getString();
         if( current == i18n( "Track" ) )
         {
             m_parsableScheme += "%track";
--- trunk/extragear/multimedia/amarok/src/widgets/Token.cpp #855517:855518
@@ -17,14 +17,30 @@
 #include "Token.h"
 #include "Debug.h"
 
+// Token::Token( QWidget *parent )
+//     :QFrame( parent )
+// {
+// 
+//     
+// }
+
 Token::Token( const QString &string, QWidget *parent )
-    : QLabel( parent )
+    : QFrame( parent )
 {
     m_myCount = qobject_cast< FilenameLayoutWidget * >( parent )->getTokenCount();
-
-    setText( string );
-    setTokenString( string );
-    setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
+    
+    //m_icon = new QPixmap( "placeholder.png"); //TODO: get icons from oxygen guys \
and handle loading +    m_label = new QLabel( this );
+    QHBoxLayout *hlayout = new QHBoxLayout( this );
+    setLayout( hlayout );
+    QLabel *iconContainer = new QLabel( this );
+    //m_icon->something to get a pixmap here
+    //iconContainer->setPixmap( *m_icon );
+    hlayout->addWidget( iconContainer );
+    hlayout->addWidget( m_label );
+    //Token( parent );
+    setString( string );
+    m_label->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
     setStyleSheet( "Token {\
         color: palette( Base );\
         background-color: qlineargradient( x1: 0,\
@@ -37,20 +53,22 @@
     }" );
 
     QFontMetrics metric( font() );
-    QSize size = metric.size( Qt::TextSingleLine, text() );
-    setMinimumSize( size + QSize( 4, 0 ) );
+    QSize size = metric.size( Qt::TextSingleLine, m_label->text() );
+    m_label->setMinimumSize( size + QSize( 4, 0 ) );
 }
 
 //Access for m_tokenString, private.
 void
-Token::setTokenString( const QString &string )
+Token::setString( const QString &string )
 {
+    m_label->setText( string );
     m_tokenString = string;
+    //TODO: code to set icon maybe
 }
 
 //Access for m_tokenString.
 QString
-Token::getTokenString()
+Token::getString()
 {
     return m_tokenString;
 }
--- trunk/extragear/multimedia/amarok/src/widgets/Token.h #855517:855518
@@ -23,18 +23,20 @@
 
 //Defines a part of a filename, drag&droppable in the FilenameLayoutWidget bar from \
the TokenListWidget list.  class Token
-    : public QLabel
+    : public QFrame
 {
     Q_OBJECT
     public:
+//         explicit Token( QWidget *parent = 0 );
         explicit Token( const QString &string, QWidget *parent = 0 );
-        QString getTokenString();
-
+        QString getString();
+        void setString(const QString &string );
+        
     private:
-        void setTokenString(const QString &string );
-
         unsigned int m_myCount;
         QString m_tokenString;
+        QPixmap *m_icon;
+        QLabel *m_label;
 };
 
 #endif //TOKEN_H
--- trunk/extragear/multimedia/amarok/src/widgets/TokenListWidget.cpp #855517:855518
@@ -43,7 +43,12 @@
 {
     QListWidgetItem *token = itemAt( event->pos() );
     debug()<<"Double-clicked, gonna add token!";
-    emit onDoubleClick( token->text() );
+    if( token == 0 )//is null
+    {
+        debug() << "I have NULL as token!";
+    }
+    else
+        emit onDoubleClick( token->text() );
 }
 
 //Executed on mouse press, handles start of drag.


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

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