put GUI dialog in a separate .ui file and thus fixes the icon not being selected after the user clicks on it.

left Q3IconView (did not port to QListView) so to not introduce other bugs
on the KPushButton, the user icon is displayed, it's tiny in Oxygen style while it's the correct size in other styles: Oxygen bug?
BUG=134225

svn path=/trunk/KDE/kdebase/apps/; revision=737619
This commit is contained in:
Anne-Marie Mahfouf 2007-11-16 19:35:12 +00:00
parent 9baa3514b6
commit 397d78fb81
4 changed files with 96 additions and 38 deletions

View file

@ -7,7 +7,7 @@ add_definitions(-DQT3_SUPPORT)
set(kcm_useraccount_PART_SRCS chfnprocess.cpp main.cpp chfacedlg.cpp )
kde4_add_ui_files(kcm_useraccount_PART_SRCS main_widget.ui )
kde4_add_ui_files(kcm_useraccount_PART_SRCS main_widget.ui faceDlg.ui)
kde4_add_kcfg_files(kcm_useraccount_PART_SRCS settings.kcfgc )

View file

@ -63,42 +63,23 @@ ChFaceDlg::ChFaceDlg(const QString& picsdir, QWidget *parent, const char *name,
setDefaultButton( Ok );
showButtonSeparator( true );
QWidget *page = new QWidget(this);
setMainWidget( page );
QWidget *faceDlg = new QWidget;
ui.setupUi(faceDlg);
QVBoxLayout *top = new QVBoxLayout(page);
top->setMargin(0);
top->setSpacing(spacingHint());
setMainWidget(faceDlg);
QLabel *header = new QLabel( i18n("Select a new face:"), page );
top->addWidget( header );
connect( ui.m_FacesWidget, SIGNAL( selectionChanged( Q3IconViewItem * ) ), SLOT( slotFaceWidgetSelectionChanged( Q3IconViewItem * ) ) );
m_FacesWidget = new K3IconView( page );
m_FacesWidget->setSelectionMode( Q3IconView::Single );
m_FacesWidget->setItemsMovable( false );
m_FacesWidget->setMinimumSize( 400, 200 );
connect( ui.m_FacesWidget, SIGNAL( doubleClicked( Q3IconViewItem *, const QPoint & ) ), SLOT(accept()) );
connect( this, SIGNAL(okClicked()), this, SLOT(accept()));
connect( m_FacesWidget, SIGNAL( selectionChanged( Q3IconViewItem * ) ), SLOT( slotFaceWidgetSelectionChanged( Q3IconViewItem * ) ) );
connect( ui.browseBtn, SIGNAL( clicked() ), SLOT( slotGetCustomImage() ) );
connect( m_FacesWidget, SIGNAL( doubleClicked( Q3IconViewItem *, const QPoint & ) ), SLOT(accept()) );
connect( this, SIGNAL(okClicked()),this,SLOT(accept()));
top->addWidget( m_FacesWidget );
// Buttons to get more pics
QHBoxLayout * morePics = new QHBoxLayout();
morePics->setMargin(0);
morePics->setSpacing(spacingHint());
QPushButton *browseBtn = new QPushButton( i18n("Custom &Image..."), page );
connect( browseBtn, SIGNAL( clicked() ), SLOT( slotGetCustomImage() ) );
morePics->addWidget( browseBtn );
#if 0
QPushButton *acquireBtn = new QPushButton( i18n("&Acquire Image..."), page );
acquireBtn->setEnabled( false );
morePics->addWidget( acquireBtn );
#endif
morePics->addStretch();
top->addLayout( morePics );
// Filling the icon view
QDir facesDir( picsdir );
@ -106,21 +87,18 @@ ChFaceDlg::ChFaceDlg(const QString& picsdir, QWidget *parent, const char *name,
{
QStringList picslist = facesDir.entryList( QDir::Files );
for ( QStringList::Iterator it = picslist.begin(); it != picslist.end(); ++it )
new Q3IconViewItem( m_FacesWidget, (*it).section(".",0,0), QPixmap( picsdir + *it ) );
new Q3IconViewItem( ui.m_FacesWidget, (*it).section(".",0,0), QPixmap( picsdir + *it ) );
}
facesDir.setPath( KCFGUserAccount::userFaceDir() );
if ( facesDir.exists() )
{
QStringList picslist = facesDir.entryList( QDir::Files );
for ( QStringList::Iterator it = picslist.begin(); it != picslist.end(); ++it )
new Q3IconViewItem( m_FacesWidget, '/'+(*it) == KCFGUserAccount::customFaceFile() ?
new Q3IconViewItem( ui.m_FacesWidget, '/'+(*it) == KCFGUserAccount::customFaceFile() ?
i18n("(Custom)") : (*it).section(".",0,0),
QPixmap( KCFGUserAccount::userFaceDir() + *it ) );
}
m_FacesWidget->setResizeMode( Q3IconView::Adjust );
//m_FacesWidget->setGridX( FACE_PIX_SIZE - 10 );
m_FacesWidget->arrangeItemsInGrid();
enableButtonOk( false );
//connect( this, SIGNAL( okClicked() ), SLOT( slotSaveCustomImage() ) );
@ -158,10 +136,10 @@ void ChFaceDlg::addCustomPixmap( const QString &imPath, bool saveCopy )
#endif
}
Q3IconViewItem* newface = new Q3IconViewItem( m_FacesWidget, QFileInfo(imPath).fileName().section(".",0,0), QPixmap::fromImage(pix) );
Q3IconViewItem* newface = new Q3IconViewItem( ui.m_FacesWidget, QFileInfo(imPath).fileName().section(".",0,0), QPixmap::fromImage(pix) );
newface->setKey( KCFGUserAccount::customKey() );// Add custom items to end
m_FacesWidget->ensureItemVisible( newface );
m_FacesWidget->setCurrentItem( newface );
ui.m_FacesWidget->ensureItemVisible( newface );
ui.m_FacesWidget->setCurrentItem( newface );
}
void ChFaceDlg::slotGetCustomImage( )

View file

@ -34,6 +34,8 @@
#include <KDialog>
#include <K3IconView> // declaration below
#include "ui_faceDlg.h"
enum FacePerm { adminOnly = 1, adminFirst = 2, userFirst = 3, userOnly = 4};
class ChFaceDlg : public KDialog
@ -50,8 +52,8 @@ public:
QPixmap getFaceImage() const
{
if(m_FacesWidget->currentItem())
return *(m_FacesWidget->currentItem()->pixmap());
if(ui.m_FacesWidget->currentItem())
return *(ui.m_FacesWidget->currentItem()->pixmap());
else
return QPixmap();
}
@ -66,7 +68,7 @@ private Q_SLOTS:
private:
void addCustomPixmap( const QString &imPath, bool saveCopy );
K3IconView *m_FacesWidget;
Ui::faceDlg ui;
};
#endif // CHFACEDLG_H

78
kdepasswd/kcm/faceDlg.ui Normal file
View file

@ -0,0 +1,78 @@
<ui version="4.0" >
<class>faceDlg</class>
<widget class="QWidget" name="faceDlg" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>306</height>
</rect>
</property>
<property name="minimumSize" >
<size>
<width>400</width>
<height>199</height>
</size>
</property>
<property name="windowTitle" >
<string>Form</string>
</property>
<layout class="QGridLayout" >
<item row="0" column="0" >
<layout class="QVBoxLayout" >
<item>
<widget class="QLabel" name="header" >
<property name="text" >
<string>Select a new face:</string>
</property>
</widget>
</item>
<item>
<widget class="Q3IconView" name="m_FacesWidget" >
<property name="resizeMode" >
<enum>Q3IconView::Adjust</enum>
</property>
<property name="itemsMovable" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" >
<item>
<widget class="QPushButton" name="browseBtn" >
<property name="text" >
<string>Custom Image...</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>Q3IconView</class>
<extends>Q3Frame</extends>
<header>q3iconview.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>