Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.2:Test
kdebase4-wallpapers
kdm-make_it_cool.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdm-make_it_cool.diff of Package kdebase4-wallpapers
Index: kdm/kfrontend/kgreeter.cpp =================================================================== --- kdm/kfrontend/kgreeter.cpp.orig +++ kdm/kfrontend/kgreeter.cpp @@ -66,20 +66,20 @@ Foundation, Inc., 51 Franklin Street, Fi class UserListView : public QListWidget { public: - UserListView( QWidget *parent = 0 ) + UserListView( bool _themed, QWidget *parent = 0 ) : QListWidget( parent ) , cachedSizeHint( -1, 0 ) + , themed( _themed ) { setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Ignored ); setUniformItemSizes( true ); setVerticalScrollMode( ScrollPerPixel ); setIconSize( QSize( 48, 48 ) ); - setAlternatingRowColors( true ); + setAlternatingRowColors( !themed ); } mutable QSize cachedSizeHint; - protected: virtual QSize sizeHint() const { if (!cachedSizeHint.isValid()) { @@ -147,6 +147,7 @@ class UserListView : public QListWidget private: bool m_suppressClick; + bool themed; }; class UserListViewItem : public QListWidgetItem { @@ -183,7 +184,7 @@ KGreeter::KGreeter( bool framed ) "PrevUser" ); if (_userList) { - userView = new UserListView( this ); + userView = new UserListView( framed, this ); connect( userView, SIGNAL(itemClicked( QListWidgetItem * )), SLOT(slotUserClicked( QListWidgetItem * )) ); connect( userView, SIGNAL(itemDoubleClicked( QListWidgetItem * )), @@ -191,8 +192,6 @@ KGreeter::KGreeter( bool framed ) } if (_userCompletion) userList = new QStringList; - if (userView || userList) - insertUsers(); sessMenu = new QMenu( this ); connect( sessMenu, SIGNAL(triggered( QAction * )), @@ -361,8 +360,11 @@ UserList::UserList( char **in ) users.insert( *in ); } +#include <utmp.h> +#include <utmpx.h> + void -KGreeter::insertUsers() +KGreeter::insertUsers( int limit_users ) { struct passwd *ps; @@ -387,6 +389,9 @@ KGreeter::insertUsers() if (_showUsers == SHOW_ALL) { UserList noUsers( _noUsers ); QSet<QString> dupes; + QStringList toinsert; + + int count = 0; for (setpwent(); (ps = getpwent()) != 0;) { if (*ps->pw_dir && *ps->pw_shell && (ps->pw_uid >= (unsigned)_lowUserId || @@ -398,10 +403,53 @@ KGreeter::insertUsers() QString username( QFile::decodeName( ps->pw_name ) ); if (!dupes.contains( username )) { dupes.insert( username ); - insertUser( default_pix, username, ps ); + toinsert.append( username ); + + if ( limit_users >= 0 && ++count > limit_users ) + break; } } } + if ( limit_users >= 0 && ++count > limit_users ) { + utmpname( _PATH_WTMP ); + setutxent(); + toinsert = QStringList(); + dupes.clear(); + + for ( count = 0; count < limit_users; ) { + struct utmpx * ent = getutxent(); + if ( !ent ) + break; + struct passwd *ps = getpwnam( ent->ut_user ); + if (ps && *ps->pw_dir && *ps->pw_shell && + (ps->pw_uid >= (unsigned)_lowUserId || + !ps->pw_uid && _showRoot) && + ( ps->pw_uid <= (unsigned)_highUserId ) && + !noUsers.hasUser( ps->pw_name ) && + !noUsers.hasGroup( ps->pw_gid )) + { + QString username( QFile::decodeName( ent->ut_user ) ); + if (!dupes.contains( username )) { + dupes.insert( username ); + toinsert.append( username ); + count++; + } + } + + + } + endutxent(); + } + + for ( QStringList::ConstIterator it = toinsert.begin(); + it != toinsert.end(); ++it ) + { + // pretty stupid to do another lookup round, but the number is limited + // and caching struct passwd is pretty ugly + struct passwd *ps = getpwnam( QFile::encodeName( *it ) ); + if ( ps ) + insertUser( default_pix, *it, ps ); + } } else { UserList users( _users ); if (users.hasGroups()) { @@ -777,6 +825,9 @@ KStdGreeter::KStdGreeter() break; } + if (userView || userList) + insertUsers(); + if (userView) { if (clock) inner_box->addWidget( clock, 0, Qt::AlignCenter ); @@ -890,6 +941,9 @@ KThemedGreeter::KThemedGreeter( KdmTheme adjustGeometry(); + // default + themer->setTypeVisible( "userlist", true ); + themer->setWidget( this ); connect( themer, SIGNAL(activated( const QString & )), @@ -973,6 +1027,13 @@ KThemedGreeter::KThemedGreeter( KdmTheme completeMenu(); #endif + if (userView || userList) + { + insertUsers(7); + themer->setTypeVisible( "userlist", true ); + } else + themer->setTypeVisible( "userlist", false ); + if ((system_button = themer->findNode( "system_button" ))) { if (optMenu) addAction( optMenu->menuAction() ); @@ -1003,7 +1064,10 @@ KThemedGreeter::pluginSetup() { inherited::pluginSetup(); - if (userView && verify->entitiesLocal() && verify->entityPresettable() && userlist_node) { + if (userView && verify->entitiesLocal() && verify->entityPresettable() && userlist_node) { + userView->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); + userView->setMaximumHeight( userView->sizeHint().height() ); + userlist_node->setWidget( userView ); userlist_rect->setVisible( true ); } else { Index: kdm/kfrontend/kgreeter.h =================================================================== --- kdm/kfrontend/kgreeter.h.orig +++ kdm/kfrontend/kgreeter.h @@ -71,7 +71,7 @@ class KGreeter : public KGDialog, public protected: void installUserList(); void insertUser( const QImage &, const QString &, struct passwd * ); - void insertUsers(); + void insertUsers(int limit_users = -1); void putSession( const QString &, const QString &, bool, const char * ); void insertSessions(); virtual void pluginSetup(); Index: kdm/kfrontend/themer/kdmitem.cpp =================================================================== --- kdm/kfrontend/themer/kdmitem.cpp.orig +++ kdm/kfrontend/themer/kdmitem.cpp @@ -65,7 +65,6 @@ KdmItem::KdmItem( QObject *parent, const !modes.split( ",", QString::SkipEmptyParts ).contains( "console" )))) { m_visible = false; - return; } m_showType = sel.attribute( "type" ); @@ -78,7 +77,6 @@ KdmItem::KdmItem( QObject *parent, const themer()->typeVisible( m_showType ) == m_showTypeInvert) { m_visible = false; - return; } } Index: kdm/kfrontend/themer/kdmlist.cpp =================================================================== --- kdm/kfrontend/themer/kdmlist.cpp.orig +++ kdm/kfrontend/themer/kdmlist.cpp @@ -29,8 +29,6 @@ KdmList::KdmList( QObject *parent, const : KdmItem( parent, node ) { itemType = "list"; - if (!isVisible()) - return; // Read RECT TAGS QDomNodeList childList = node.childNodes(); Index: kdm/kfrontend/themer/kdmthemer.cpp =================================================================== --- kdm/kfrontend/themer/kdmthemer.cpp.orig +++ kdm/kfrontend/themer/kdmthemer.cpp @@ -227,11 +227,7 @@ KdmThemer::generateItems( KdmItem *paren else if (type == "svg") newItem = new KdmPixmap( parent, subnode ); else - continue; - if (!newItem->isVisible()) { - delete newItem; - continue; - } + continue; connect( newItem, SIGNAL(needUpdate( int, int, int, int )), SLOT(update( int, int, int, int )) ); connect( newItem, SIGNAL(needPlacement()),
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor