Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
kdebase4-wallpapers
kdm-make_it_cool.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdm-make_it_cool.diff of Package kdebase4-wallpapers
--- kdm/kfrontend/kgreeter.cpp +++ kdm/kfrontend/kgreeter.cpp @@ -64,20 +64,20 @@ 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()) { @@ -145,6 +145,7 @@ private: bool m_suppressClick; + bool themed; }; class UserListViewItem : public QListWidgetItem { @@ -181,7 +182,7 @@ "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 * )), @@ -189,8 +190,6 @@ } if (_userCompletion) userList = new QStringList; - if (userView || userList) - insertUsers(); sessMenu = new QMenu( this ); connect( sessMenu, SIGNAL(triggered( QAction * )), @@ -331,8 +330,11 @@ users.insert( *in ); } +#include <utmp.h> +#include <utmpx.h> + void -KGreeter::insertUsers() +KGreeter::insertUsers( int limit_users ) { struct passwd *ps; @@ -358,6 +360,9 @@ 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 || @@ -369,10 +374,53 @@ 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()) { @@ -747,6 +795,9 @@ break; } + if (userView || userList) + insertUsers(); + if (userView) { if (clock) inner_box->addWidget( clock, 0, Qt::AlignCenter ); @@ -860,6 +911,9 @@ adjustGeometry(); + // default + themer->setTypeVisible( "userlist", true ); + themer->setWidget( this ); connect( themer, SIGNAL(activated( const QString & )), @@ -943,6 +997,13 @@ 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() ); @@ -973,7 +1034,10 @@ { 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 { --- kdm/kfrontend/kgreeter.h +++ kdm/kfrontend/kgreeter.h @@ -71,7 +71,7 @@ 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(); --- kdm/kfrontend/themer/kdmitem.cpp +++ kdm/kfrontend/themer/kdmitem.cpp @@ -65,7 +65,6 @@ !modes.split( ",", QString::SkipEmptyParts ).contains( "console" )))) { m_visible = false; - return; } m_showType = sel.attribute( "type" ); @@ -78,7 +77,6 @@ themer()->typeVisible( m_showType ) == m_showTypeInvert) { m_visible = false; - return; } } --- kdm/kfrontend/themer/kdmlist.cpp +++ kdm/kfrontend/themer/kdmlist.cpp @@ -29,8 +29,6 @@ : KdmItem( parent, node ) { itemType = "list"; - if (!isVisible()) - return; // Read RECT TAGS QDomNodeList childList = node.childNodes(); --- kdm/kfrontend/themer/kdmthemer.cpp +++ kdm/kfrontend/themer/kdmthemer.cpp @@ -228,11 +228,7 @@ 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