[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/amarok-plasmify/src
From: Leo Franchi <angel666 () myrealbox ! com>
Date: 2007-07-21 10:26:59
Message-ID: 1185013619.489547.15614.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 690517 by lfranchi:
working on snazzing up the last.fm events applet. vboxlayout class needs more work so \
it collapses properly, but looks waay better than before :)
M +2 -0 CMakeLists.txt
M +5 -4 context/applets/lastfmevents/CMakeLists.txt
M +160 -19 context/applets/lastfmevents/LastFmEvents.cpp
M +27 -2 context/applets/lastfmevents/LastFmEvents.h
A context/widgets (directory)
A context/widgets/TextWidget.cpp [License: GPL (v2+)]
A context/widgets/TextWidget.h [License: GPL (v2+)]
A context/widgets/VBoxLayout.cpp [License: LGPL (v2)]
A context/widgets/VBoxLayout.h [License: LGPL (v2)]
--- branches/work/amarok-plasmify/src/CMakeLists.txt #690516:690517
@@ -276,6 +276,8 @@
context/ContextScene.cpp
context/ControlBox.cpp
context/DataEngineManager.cpp
+ context/widgets/TextWidget.cpp
+ context/widgets/VBoxLayout.cpp
)
#####################################################################
--- branches/work/amarok-plasmify/src/context/applets/lastfmevents/CMakeLists.txt \
#690516:690517 @@ -10,10 +10,11 @@
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../../../
-${CMAKE_BINARY_DIR}
-${KDE4_INCLUDES}
-${QT_INCLUDES}
-${KDE4_INCLUDE_DIR}/amarok ) # this way we don't need to prefix it with amarok/ (and \
it compiles this way too :) + ${CMAKE_CURRENT_SOURCE_DIR}/../../
+ ${CMAKE_BINARY_DIR}
+ ${KDE4_INCLUDES}
+ ${QT_INCLUDES}
+ ${KDE4_INCLUDE_DIR}/amarok ) # this way we don't need to prefix \
it with amarok/ (and it compiles this way too :)
kde4_add_plugin(amarok_context_applet_lastfmevents ${lastfmevents_SRCS})
target_link_libraries(amarok_context_applet_lastfmevents amaroklib ${KDE4_KIO_LIBS})
--- branches/work/amarok-plasmify/src/context/applets/lastfmevents/LastFmEvents.cpp \
#690516:690517 @@ -15,66 +15,207 @@
#include "debug.h"
+#include <QGraphicsTextItem>
+#include <QTextDocument>
+#include <QVBoxLayout>
+#include <QCheckBox>
+
+#include <KDialog>
+#include <KLocale>
+
LastFmEvents::LastFmEvents( QObject* parent, const QStringList& args )
: Context::Applet( parent, args )
- , m_item( 0 )
- , m_text( 0 )
+ , m_config( 0 )
+ , m_configLayout( 0 )
+ , m_friendItem( 0 )
+ , m_sysItem( 0 )
+ , m_userItem( 0 )
+ , m_userEnabled( false )
+ , m_friendEnabled( false )
+ , m_sysEnabled( false )
+ , m_layout( 0 )
+ , m_friendBox( 0 )
+ , m_userBox( 0 )
+ , m_sysBox( 0 )
{
debug() << "Loading LastFmEvents applet" << endl;
setAcceptDrops( false );
- setHasConfigurationInterface( false );
+ setHasConfigurationInterface( true );
setDrawStandardBackground( true );
+ KConfigGroup conf = config();
+ m_userEnabled = conf.readEntry( "user", false );
+ m_sysEnabled = conf.readEntry( "sys", false );
+ m_friendEnabled = conf.readEntry( "friend", false );
+
+ if( !m_userEnabled && !m_friendEnabled && m_sysEnabled )
+ showConfigurationInterface();
+
if( args.size() > 0 ) // we are being told what position to start at
setPos( (qreal)args[0].toInt(), (qreal)args[1].toInt() );
- dataEngine( "amarok-lastfm" )->connectSource( I18N_NOOP( "sysevents" ), m_text \
);
dataEngine( "amarok-lastfm" )->connectSource( I18N_NOOP( "sysevents" ), this );
+ dataEngine( "amarok-lastfm" )->connectSource( I18N_NOOP( "userevents" ), this );
dataEngine( "amarok-lastfm" )->connectSource( I18N_NOOP( "friendevents" ), this \
);
- m_item = new QGraphicsTextItem( this );
- m_item->setPos( 15.0, 10.0 );
- m_text = m_item->document();
+ hide(); // we have no data to show, so lets not show an empty widget
+ m_layout = new Context::VBoxLayout( 0 );
+ m_layout->setGeometry( QRectF( 0, 0, 300, 300 ) );
+ m_layout->setMargin( 8 );
+ m_layout->setSpacing( 4 );
+
+ m_friendItem = new Context::TextWidget( this );
+
+ m_sysItem = new Context::TextWidget( this );
+ m_layout->addItem( m_sysItem );
+
+ m_userItem = new Context::TextWidget( this );
+ m_layout->addItem( m_userItem );
+
}
LastFmEvents::~LastFmEvents()
{
DEBUG_BLOCK
- if( m_text ) delete m_text;
- if( m_item ) delete m_item;
+ if( m_friendItem ) delete m_friendItem;
+ if( m_sysItem ) delete m_sysItem;
+ if( m_userItem ) delete m_userItem;
}
void LastFmEvents::updated( const QString& name, const Context::DataEngine::Data& \
data ) {
- debug() << "got data from : " << name << endl;
+ DEBUG_BLOCK
+
+ show();
+ // now we want to show the rect
+
Context::DataEngine::DataIterator iter( data );
- QString text;
- while( iter.hasNext() )
+ if( m_sysEnabled && name == QString( "sysevents" ) )
{
- iter.next();
- if( name == QString( "sysevents" ) )
+ QString text = QString( "<b>%1</b><br>" ).arg( i18n( "Recommended Events" ) \
); + int count = 0;
+ while( iter.hasNext() )
{
+ count++;
+ if( count > 5 ) break;
+ iter.next();
const QVariantList event = iter.value().toList();
- if( event.size() == 0 ) continue;
- text.append( QString( "%1 - %2<br>" ).arg( iter.key(), ( event[ 1 ] \
).toString() ) ); + if( event.size() == 0 ) continue; // empty event
+
+ text.append( QString( "%1 - %2<br>" ).arg( iter.key(), ( event[ 1 ] \
).toString() ) ); }
+ debug() << "trying to show text: " << text << endl;
+ m_sysItem->setText( text );
+ if( m_layout->indexOf( m_sysItem ) == -1 )
+ m_layout->addItem( m_sysItem );
+
}
- m_text->setHtml( text );
-
+ if( m_friendEnabled && name == QString( "friendevents" ) )
+ {
+ QString text = QString( "<b>%1</b><br>" ).arg( i18n( "Friend Events" ) );
+ int count = 0;
+ while( iter.hasNext() )
+ {
+ count++;
+ if( count > 5 ) break;
+ iter.next();
+ const QVariantList event = iter.value().toList();
+ if( event.size() == 0 ) continue; // empty event
+
+ text.append( QString( "%1 - %2<br>" ).arg( iter.key(), ( event[ 1 ] \
).toString() ) ); + }
+ debug() << "trying to show text: " << text << endl;
+ m_friendItem->setText( text );
+ if( m_layout->indexOf( m_friendItem ) == -1 )
+ m_layout->addItem( m_friendItem );
+
+ }
+ if( m_userEnabled && name == QString( "sysevents" ) )
+ {
+ QString text = QString( "<b>%1</b><br>" ).arg( i18n( "Your Events" ) );
+ int count = 0;
+ while( iter.hasNext() )
+ {
+ count++;
+ if( count > 5 ) return;
+ iter.next();
+ const QVariantList event = iter.value().toList();
+ if( event.size() == 0 ) continue; // empty event
+
+ text.append( QString( "%1 - %2<br>" ).arg( iter.key(), ( event[ 1 ] \
).toString() ) ); + }
+ debug() << "trying to show text: " << text << endl;
+ m_userItem->setText( text );
+ if( m_layout->indexOf( m_userItem ) == -1 )
+ m_layout->addItem( m_userItem );
+
+ }
+ m_layout->setGeometry( m_layout->geometry() ); // recalculate item sizes
+ // since we added text to them
}
QRectF LastFmEvents::boundingRect() const
{
// kDebug() << "boundingRect is " << m_icon->boundingRect() << endl;
// return m_icon->boundingRect();
- return m_item->boundingRect();
+ return m_layout->geometry();
}
void LastFmEvents::constraintsUpdated()
{
+ prepareGeometryChange();
}
+
+void LastFmEvents::showConfigurationInterface()
+{
+ if (m_config == 0)
+ {
+ m_config = new KDialog;
+ m_config->setCaption( i18n( "Configure Last.Fm Events" ) );
+
+ QWidget* widget = new QWidget( m_config );
+ m_config->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply );
+ connect( m_config, SIGNAL(applyClicked()), this, SLOT(configAccepted()) );
+ connect( m_config, SIGNAL(okClicked()), this, SLOT(configAccepted()) );
+
+ m_configLayout = new QVBoxLayout( widget );
+ m_friendBox = new QCheckBox();
+ m_friendBox->setText( i18n( "Show Friend Events" ) );
+ m_sysBox = new QCheckBox();
+ m_sysBox->setText( i18n( "Show Recommended Events" ) );
+ m_userBox = new QCheckBox();
+ m_userBox->setText( i18n( "Show Your Future Events" ) );
+
+ m_configLayout->addWidget( m_friendBox );
+ m_configLayout->addWidget( m_sysBox );
+ m_configLayout->addWidget( m_userBox );
+
+ m_config->setMainWidget( widget );
+ }
+
+ m_config->show();
+}
+
+void LastFmEvents::configAccepted() // SLOT
+{
+ debug() << "saving config" << endl;
+ KConfigGroup cg = config();
+
+ m_friendBox->checkState() ? m_friendEnabled = true : m_friendEnabled = false;
+ m_sysBox->checkState() ? m_sysEnabled = true : m_sysEnabled = false;
+ m_userBox->checkState() ? m_userEnabled = true : m_userEnabled = false;
+
+ cg.writeEntry( "friend" , m_friendEnabled );
+ cg.writeEntry( "sys" , m_sysEnabled );
+ cg.writeEntry( "user" , m_userEnabled );
+
+ cg.sync();
+
+ constraintsUpdated();
+}
+
#include "LastFmEvents.moc"
--- branches/work/amarok-plasmify/src/context/applets/lastfmevents/LastFmEvents.h \
#690516:690517 @@ -16,10 +16,17 @@
#include <context/Applet.h>
#include <context/DataEngine.h>
+#include <context/widgets/TextWidget.h>
+#include <widgets/VBoxLayout.h>
+
#include <QGraphicsTextItem>
#include <QTextDocument>
+#include <QVBoxLayout>
+#include <QCheckBox>
+#include <KDialog>
+
class LastFmEvents : public Context::Applet
{
Q_OBJECT
@@ -29,14 +36,32 @@
QRectF boundingRect() const;
void constraintsUpdated();
+ void showConfigurationInterface();
public slots:
void updated( const QString& name, const Plasma::DataEngine::Data& data );
+private slots:
+ void configAccepted();
+
private:
- QGraphicsTextItem* m_item;
- QTextDocument* m_text;
+ KDialog* m_config;
+ QVBoxLayout* m_configLayout;
+ QCheckBox* m_friendBox;
+ QCheckBox* m_sysBox;
+ QCheckBox* m_userBox;
+
+ Context::VBoxLayout* m_layout;
+
+ bool m_friendEnabled;
+ Context::TextWidget* m_friendItem;
+
+ bool m_sysEnabled;
+ Context::TextWidget* m_sysItem;
+
+ bool m_userEnabled;
+ Context::TextWidget* m_userItem;
};
K_EXPORT_AMAROK_APPLET( lastfmevents, LastFmEvents )
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic