From 8f46db649f2ca76cbdc93a59c76f43028f5e9d8d Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Fri, 25 Mar 2011 15:31:46 -0400 Subject: [PATCH 1/3] add some eliding so playlists with long name don't increase the window size minor cleanup in ElidedLabel --- .../dynamic/widgets/CollapsibleControls.cpp | 3 +- .../dynamic/widgets/CollapsibleControls.h | 4 +- src/libtomahawk/playlist/infobar/infobar.cpp | 4 +- src/libtomahawk/playlist/infobar/infobar.ui | 11 ++++- src/libtomahawk/utils/elidedlabel.cpp | 42 +++++++++++++------ src/libtomahawk/utils/elidedlabel.h | 10 +++-- 6 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp index 36c04a2dd..65ac1564b 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp @@ -23,6 +23,7 @@ #include "dynamic/GeneratorInterface.h" #include "dynamic/DynamicControl.h" #include "utils/tomahawkutils.h" +#include "utils/elidedlabel.h" #include #include @@ -85,7 +86,7 @@ CollapsibleControls::init() m_summaryLayout->setMargin( 0 ); m_summaryWidget->setContentsMargins( 3, 0, 0, 0 ); - m_summary = new QLabel( m_summaryWidget ); + m_summary = new ElidedLabel( m_summaryWidget ); QFont f = m_summary->font(); f.setPointSize( f.pointSize() + 1 ); f.setBold( true ); diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h index 36818b2dc..a242769d0 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h @@ -27,7 +27,7 @@ class QPaintEvent; class QHBoxLayout; class QTimeLine; class QToolButton; -class QLabel; +class ElidedLabel; class QStackedLayout; namespace Tomahawk { @@ -67,7 +67,7 @@ private: QWidget* m_summaryWidget; QHBoxLayout* m_summaryLayout; - QLabel* m_summary; + ElidedLabel* m_summary; QStackedLayout* m_expandL; QToolButton* m_summaryExpand; diff --git a/src/libtomahawk/playlist/infobar/infobar.cpp b/src/libtomahawk/playlist/infobar/infobar.cpp index c1c3a6e12..569c8a247 100644 --- a/src/libtomahawk/playlist/infobar/infobar.cpp +++ b/src/libtomahawk/playlist/infobar/infobar.cpp @@ -43,7 +43,7 @@ InfoBar::InfoBar( QWidget* parent ) boldFont.setPixelSize( 12 ); ui->descriptionLabel->setFont( boldFont ); - ui->descriptionLabel->setMargin( 2 ); + ui->descriptionLabel->setMargin( 10 ); QPalette whitePal = ui->captionLabel->palette(); whitePal.setColor( QPalette::Foreground, Qt::white ); @@ -52,6 +52,8 @@ InfoBar::InfoBar( QWidget* parent ) ui->descriptionLabel->setPalette( whitePal ); ui->captionLabel->setText( QString() ); + ui->captionLabel->setMargin( 6 ); + ui->descriptionLabel->setText( QString() ); ui->imageLabel->setText( QString() ); diff --git a/src/libtomahawk/playlist/infobar/infobar.ui b/src/libtomahawk/playlist/infobar/infobar.ui index 043b8f5d7..764fd040a 100644 --- a/src/libtomahawk/playlist/infobar/infobar.ui +++ b/src/libtomahawk/playlist/infobar/infobar.ui @@ -74,7 +74,7 @@ - + 0 @@ -87,7 +87,7 @@ - + 0 @@ -119,6 +119,13 @@ + + + ElidedLabel + QLabel +
utils/elidedlabel.h
+
+
diff --git a/src/libtomahawk/utils/elidedlabel.cpp b/src/libtomahawk/utils/elidedlabel.cpp index c490c7c85..9b4343383 100644 --- a/src/libtomahawk/utils/elidedlabel.cpp +++ b/src/libtomahawk/utils/elidedlabel.cpp @@ -22,6 +22,7 @@ #include #include #include +#include ElidedLabel::ElidedLabel( QWidget* parent, Qt::WindowFlags flags ) @@ -65,16 +66,16 @@ ElidedLabel::setText( const QString& text ) Qt::Alignment ElidedLabel::alignment() const { - return align; + return m_align; } void ElidedLabel::setAlignment( Qt::Alignment alignment ) { - if ( this->align != alignment ) + if ( m_align != alignment ) { - this->align = alignment; + m_align = alignment; update(); // no geometry change, repaint is sufficient } } @@ -83,27 +84,40 @@ ElidedLabel::setAlignment( Qt::Alignment alignment ) Qt::TextElideMode ElidedLabel::elideMode() const { - return mode; + return m_mode; } void ElidedLabel::setElideMode( Qt::TextElideMode mode ) { - if ( this->mode != mode ) + if ( m_mode != mode ) { - this->mode = mode; + m_mode = mode; updateLabel(); } } +void +ElidedLabel::setMargin( int margin ) +{ + m_margin = margin; +} + +int +ElidedLabel::margin() const +{ + return m_margin; +} + void ElidedLabel::init( const QString& txt ) { m_text = txt; - align = Qt::AlignLeft; - mode = Qt::ElideMiddle; + m_align = Qt::AlignLeft; + m_mode = Qt::ElideMiddle; + m_margin = 0; setContentsMargins( 0, 0, 0, 0 ); } @@ -128,7 +142,7 @@ ElidedLabel::sizeHint() const QSize ElidedLabel::minimumSizeHint() const { - switch ( mode ) + switch ( m_mode ) { case Qt::ElideNone: return sizeHint(); @@ -149,8 +163,10 @@ ElidedLabel::paintEvent( QPaintEvent* event ) QFrame::paintEvent( event ); QPainter p( this ); QRect r = contentsRect(); - const QString elidedText = fontMetrics().elidedText( m_text, mode, r.width() ); - p.drawText( r, align, elidedText ); + r.adjust( m_margin, m_margin, -m_margin, -m_margin ); + + const QString elidedText = fontMetrics().elidedText( m_text, m_mode, r.width() ); + p.drawText( r, m_align, elidedText ); } @@ -176,7 +192,7 @@ void ElidedLabel::mousePressEvent( QMouseEvent* event ) { QFrame::mousePressEvent( event ); - time.start(); + m_time.start(); } @@ -184,6 +200,6 @@ void ElidedLabel::mouseReleaseEvent( QMouseEvent* event ) { QFrame::mouseReleaseEvent( event ); - if ( time.elapsed() < qApp->doubleClickInterval() ) + if ( m_time.elapsed() < qApp->doubleClickInterval() ) emit clicked(); } diff --git a/src/libtomahawk/utils/elidedlabel.h b/src/libtomahawk/utils/elidedlabel.h index e78355ec0..2f45e1c97 100644 --- a/src/libtomahawk/utils/elidedlabel.h +++ b/src/libtomahawk/utils/elidedlabel.h @@ -44,6 +44,9 @@ public: Qt::TextElideMode elideMode() const; void setElideMode( Qt::TextElideMode mode ); + void setMargin( int margin ); + int margin() const; + virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; @@ -64,10 +67,11 @@ protected: virtual void paintEvent( QPaintEvent* event ); private: - QTime time; + QTime m_time; QString m_text; - Qt::Alignment align; - Qt::TextElideMode mode; + Qt::Alignment m_align; + Qt::TextElideMode m_mode; + int m_margin; }; #endif // ELIDEDLABEL_H From 631c39163d5c0e2862c78de883614ecdc2c64617 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Fri, 25 Mar 2011 17:45:32 -0400 Subject: [PATCH 2/3] don't install a static lib --- thirdparty/qxt/qxtweb-standalone/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt index b1f51d1ba..ec81d04cb 100644 --- a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt +++ b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt @@ -102,5 +102,3 @@ target_link_libraries( qxtweb-standalone # ${QT_LIBRARIES} # "${CMAKE_CURRENT_SOURCE_DIR}/libqxtweb-standalone.a" # ) - -INSTALL( TARGETS qxtweb-standalone DESTINATION lib${LIB_SUFFIX} ) From 422f9a9022d7500e29a0fd55ba7a8c8c5985e98f Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Fri, 25 Mar 2011 18:22:51 -0400 Subject: [PATCH 3/3] Possibly fix crash related to twitter authentication --- src/sip/twitter/twitter.cpp | 69 ++++++++++++++++++++++++++++++++----- src/sip/twitter/twitter.h | 2 ++ 2 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index 334a6c0f0..c4e3e9bb5 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -130,16 +130,30 @@ TwitterPlugin::connectPlugin( bool /*startup*/ ) return m_cachedPeers.isEmpty(); } - delete m_twitterAuth.data(); + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + + return true; +} + +bool +TwitterPlugin::refreshTwitterAuth() +{ m_twitterAuth = QWeakPointer( new TomahawkOAuthTwitter( this ) ); + + TomahawkSettings *settings = TomahawkSettings::instance(); + + if ( m_twitterAuth.isNull() ) + return false; + m_twitterAuth.data()->setNetworkAccessManager( TomahawkUtils::nam() ); m_twitterAuth.data()->setOAuthToken( settings->twitterOAuthToken().toLatin1() ); m_twitterAuth.data()->setOAuthTokenSecret( settings->twitterOAuthTokenSecret().toLatin1() ); - - QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); - connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); - credVerifier->verify(); - + return true; } @@ -189,8 +203,17 @@ TwitterPlugin::connectAuthVerifyReply( const QTweetUser &user ) } else { - qDebug() << "TwitterPlugin auth pointer was null!"; - m_isAuthed = false; + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + else + { + qDebug() << "TwitterPlugin auth pointer was null!"; + m_isAuthed = false; + } } } } @@ -201,6 +224,21 @@ TwitterPlugin::checkTimerFired() if ( !isValid() ) return; + if ( m_twitterAuth.isNull() ) + { + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + else + { + qDebug() << "TwitterPlugin auth went null somehow and could not refresh"; + return; + } + } + if ( m_cachedFriendsSinceId == 0 ) m_cachedFriendsSinceId = TomahawkSettings::instance()->twitterCachedFriendsSinceId(); @@ -224,6 +262,21 @@ TwitterPlugin::connectTimerFired() { if ( !isValid() || m_cachedPeers.isEmpty() ) return; + + if ( m_twitterAuth.isNull() ) + { + if ( refreshTwitterAuth() ) + { + QTweetAccountVerifyCredentials *credVerifier = new QTweetAccountVerifyCredentials( m_twitterAuth.data(), this ); + connect( credVerifier, SIGNAL( parsedUser(const QTweetUser &) ), SLOT( connectAuthVerifyReply(const QTweetUser &) ) ); + credVerifier->verify(); + } + else + { + qDebug() << "TwitterPlugin auth went null somehow and could not refresh"; + return; + } + } QString myScreenName = TomahawkSettings::instance()->twitterScreenName(); QList peerlist = m_cachedPeers.keys(); diff --git a/src/sip/twitter/twitter.h b/src/sip/twitter/twitter.h index 3b03440af..e0c38b479 100644 --- a/src/sip/twitter/twitter.h +++ b/src/sip/twitter/twitter.h @@ -91,6 +91,8 @@ private slots: void makeConnection( const QString &screenName, const QHash< QString, QVariant > &peerdata ); private: + bool refreshTwitterAuth(); + QWeakPointer< TomahawkOAuthTwitter > m_twitterAuth; QWeakPointer< QTweetFriendsTimeline > m_friendsTimeline; QWeakPointer< QTweetMentions > m_mentions;