SearchPane::SearchPane( FileBrowser *parent ) : QVBox( parent ) , m_lineEdit( 0 ) , m_listView( 0 ) , m_lister( 0 ) { QFrame *container = new QVBox( this, "container" ); container->hide(); { QFrame *box = new QHBox( container ); box->setMargin( 5 ); box->setBackgroundMode( Qt::PaletteBase ); m_lineEdit = new ClickLineEdit( i18n("Search here..."), box ); connect( m_lineEdit, SIGNAL(textChanged( const QString& )), SLOT(searchTextChanged( const QString& )) ); m_listView = new KURLView( container ); container->setFrameStyle( m_listView->frameStyle() ); container->setMargin( 5 ); container->setBackgroundMode( Qt::PaletteBase ); m_listView->setFrameStyle( QFrame::NoFrame ); connect( m_listView, SIGNAL(executed( QListViewItem* )), SLOT(activate( QListViewItem* )) ); } KPushButton *button = new KPushButton( KGuiItem( i18n("&Show Search Panel"), "find" ), this ); button->setToggleButton( true ); connect( button, SIGNAL(toggled( bool )), SLOT(toggle( bool )) ); m_lister = new MyDirLister( true /*delay mimetypes*/ ); insertChild( m_lister ); connect( m_lister, SIGNAL(newItems( const KFileItemList& )), SLOT(searchMatches( const KFileItemList& )) ); connect( m_lister, SIGNAL(completed()), SLOT(searchComplete()) ); }
void ApplicationWindow::finishGrid(QWidget *vbox, QGrid *grid, unsigned ctrl_class, bool odd) { if (odd) { new QWidget(grid); new QWidget(grid); } QWidget *stretch = new QWidget(grid); stretch->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Ignored); QFrame *frame = new QFrame(vbox); frame->setFrameShape(QFrame::HLine); frame->setFrameShadow(QFrame::Sunken); frame->setMargin(3); QHBox *hbox = new QHBox(vbox); hbox->setSpacing(3); QCheckBox *cbox = new QCheckBox("Update on change", hbox); widgetMap[ctrl_class | CTRL_UPDATE_ON_CHANGE] = cbox; connect(cbox, SIGNAL(clicked()), sigMapper, SLOT(map())); sigMapper->setMapping(cbox, ctrl_class | CTRL_UPDATE_ON_CHANGE); stretch = new QWidget(hbox); stretch->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed); QPushButton *defBut = new QPushButton("Set Defaults", hbox); widgetMap[ctrl_class | CTRL_DEFAULTS] = defBut; connect(defBut, SIGNAL(clicked()), sigMapper, SLOT(map())); sigMapper->setMapping(defBut, ctrl_class | CTRL_DEFAULTS); QPushButton *refreshBut = new QPushButton("Refresh", hbox); widgetMap[ctrl_class | CTRL_REFRESH] = refreshBut; connect(refreshBut, SIGNAL(clicked()), sigMapper, SLOT(map())); sigMapper->setMapping(refreshBut, ctrl_class | CTRL_REFRESH); QPushButton *button = new QPushButton("Update", hbox); widgetMap[ctrl_class | CTRL_UPDATE] = button; connect(button, SIGNAL(clicked()), sigMapper, SLOT(map())); sigMapper->setMapping(button, ctrl_class | CTRL_UPDATE); connect(cbox, SIGNAL(toggled(bool)), button, SLOT(setDisabled(bool))); cbox->setChecked(ctrl_class == V4L2_CTRL_CLASS_USER); refresh(ctrl_class); }
/** * This function will intialize the playlist window. */ void PlaylistWindow::init() { DEBUG_BLOCK //this function is necessary because amaroK::actionCollection() returns our actionCollection //via the App::m_pPlaylistWindow pointer since App::m_pPlaylistWindow is not defined until //the above ctor returns it causes a crash unless we do the initialisation in 2 stages. m_browsers = new BrowserBar( this ); //<Dynamic Mode Status Bar /> DynamicBar *dynamicBar = new DynamicBar( m_browsers->container()); { //<Search LineEdit> KToolBar *bar = new KToolBar( m_browsers->container(), "NotMainToolBar" ); bar->setIconSize( 22, false ); //looks more sensible bar->setFlat( true ); //removes the ugly frame bar->setMovingEnabled( false ); //removes the ugly frame QWidget *button = new KToolBarButton( "locationbar_erase", 1, bar ); QLabel *filter_label = new QLabel( i18n("S&earch:") + " ", bar ); m_lineEdit = new ClickLineEdit( i18n( "Enter search terms here" ), bar ); filter_label->setBuddy( m_lineEdit ); bar->setStretchableWidget( m_lineEdit ); m_lineEdit->setFrame( QFrame::Sunken ); m_lineEdit->installEventFilter( this ); //we intercept keyEvents connect( button, SIGNAL(clicked()), m_lineEdit, SLOT(clear()) ); QToolTip::add( button, i18n( "Clear filter" ) ); QString filtertip = i18n( "Enter space-separated terms to filter the playlist.\n\n" "Advanced, Google-esque syntax is also available;\n" "see the handbook (The Playlist section of chapter 4) for details." ); QToolTip::add( filter_label, filtertip ); QToolTip::add( m_lineEdit, filtertip ); } //</Search LineEdit> QFrame *playlist = new Playlist( m_browsers->container() ); dynamicBar->init(); m_toolbar = new amaroK::ToolBar( m_browsers->container(), "mainToolBar" ); m_toolbar->setShown( AmarokConfig::showToolbar() ); QWidget *statusbar = new amaroK::StatusBar( this ); KAction* repeatAction = amaroK::actionCollection()->action( "repeat" ); connect( repeatAction, SIGNAL( activated( int ) ), playlist, SLOT( slotRepeatTrackToggled( int ) ) ); connect( m_lineEdit, SIGNAL(textChanged( const QString& )), playlist, SLOT(setFilterSlot( const QString& )) ); m_menubar = new KMenuBar( this ); m_menubar->setShown( AmarokConfig::showMenuBar() ); //BEGIN Actions menu KPopupMenu *actionsMenu = new KPopupMenu( m_menubar ); actionCollection()->action("playlist_playmedia")->plug( actionsMenu ); actionCollection()->action("play_audiocd")->plug( actionsMenu ); actionsMenu->insertSeparator(); actionCollection()->action("prev")->plug( actionsMenu ); actionCollection()->action("play_pause")->plug( actionsMenu ); actionCollection()->action("stop")->plug( actionsMenu ); actionCollection()->action("next")->plug( actionsMenu ); actionsMenu->insertSeparator(); actionCollection()->action(KStdAction::name(KStdAction::Quit))->plug( actionsMenu ); connect( actionsMenu, SIGNAL( aboutToShow() ), SLOT( actionsMenuAboutToShow() ) ); //END Actions menu //BEGIN Playlist menu KPopupMenu *playlistMenu = new KPopupMenu( m_menubar ); actionCollection()->action("playlist_add")->plug( playlistMenu ); actionCollection()->action("playlist_save")->plug( playlistMenu ); playlistMenu->insertSeparator(); actionCollection()->action("playlist_undo")->plug( playlistMenu ); actionCollection()->action("playlist_redo")->plug( playlistMenu ); playlistMenu->insertSeparator(); actionCollection()->action("playlist_clear")->plug( playlistMenu ); actionCollection()->action("playlist_shuffle")->plug( playlistMenu ); actionCollection()->action("playlist_show")->plug( playlistMenu ); //this one has no real context with regard to the menu //actionCollection()->action("playlist_copy")->plug( playlistMenu ); playlistMenu->insertSeparator(); actionCollection()->action("queue_selected")->plug( playlistMenu ); actionCollection()->action("playlist_remove_duplicates")->plug( playlistMenu ); actionCollection()->action("playlist_select_all")->plug( playlistMenu ); //END Playlist menu //BEGIN Mode menu KPopupMenu *modeMenu = new KPopupMenu( m_menubar ); actionCollection()->action("repeat")->plug( modeMenu ); KSelectAction *random = static_cast<KSelectAction*>( actionCollection()->action("random_mode") ); random->plug( modeMenu ); random->popupMenu()->insertSeparator(); actionCollection()->action("favor_tracks")->plug( random->popupMenu() ); //END Mode menu //BEGIN Tools menu m_toolsMenu = new KPopupMenu( m_menubar ); m_toolsMenu->insertItem( SmallIconSet( "covermanager" ), i18n("&Cover Manager"), amaroK::Menu::ID_SHOW_COVER_MANAGER ); actionCollection()->action("queue_manager")->plug( m_toolsMenu ); m_toolsMenu->insertItem( SmallIconSet( "visualizations"), i18n("&Visualizations"), amaroK::Menu::ID_SHOW_VIS_SELECTOR ); m_toolsMenu->insertItem( SmallIconSet( "equalizer"), i18n("&Equalizer"), kapp, SLOT( slotConfigEqualizer() ), 0, amaroK::Menu::ID_CONFIGURE_EQUALIZER ); actionCollection()->action("script_manager")->plug( m_toolsMenu ); actionCollection()->action("statistics")->plug( m_toolsMenu ); m_toolsMenu->insertSeparator(); m_toolsMenu->insertItem( SmallIconSet( "wizard"), i18n("&First-Run Wizard"), amaroK::Menu::ID_SHOW_WIZARD ); m_toolsMenu->insertItem( SmallIconSet( amaroK::icon( "rescan" ) ), i18n("&Rescan Collection"), amaroK::Menu::ID_RESCAN_COLLECTION ); #if defined HAVE_XMMS || defined HAVE_LIBVISUAL m_toolsMenu->setItemEnabled( amaroK::Menu::ID_SHOW_VIS_SELECTOR, true ); #else m_toolsMenu->setItemEnabled( amaroK::Menu::ID_SHOW_VIS_SELECTOR, false ); #endif connect( m_toolsMenu, SIGNAL( aboutToShow() ), SLOT( toolsMenuAboutToShow() ) ); connect( m_toolsMenu, SIGNAL( activated(int) ), SLOT( slotMenuActivated(int) ) ); //END Tools menu //BEGIN Settings menu m_settingsMenu = new KPopupMenu( m_menubar ); //TODO use KStdAction or KMainWindow static_cast<KToggleAction *>(actionCollection()->action(KStdAction::name(KStdAction::ShowMenubar)))->setChecked( AmarokConfig::showMenuBar() ); actionCollection()->action(KStdAction::name(KStdAction::ShowMenubar))->plug( m_settingsMenu ); m_settingsMenu->insertItem( AmarokConfig::showToolbar() ? i18n( "Hide Toolbar" ) : i18n("Show Toolbar"), ID_SHOW_TOOLBAR ); m_settingsMenu->insertItem( AmarokConfig::showPlayerWindow() ? i18n("Hide Player &Window") : i18n("Show Player &Window"), ID_SHOW_PLAYERWINDOW ); m_settingsMenu->insertSeparator(); actionCollection()->action("options_configure_globals")->plug( m_settingsMenu ); actionCollection()->action(KStdAction::name(KStdAction::KeyBindings))->plug( m_settingsMenu ); actionCollection()->action(KStdAction::name(KStdAction::ConfigureToolbars))->plug( m_settingsMenu ); actionCollection()->action(KStdAction::name(KStdAction::Preferences))->plug( m_settingsMenu ); connect( m_settingsMenu, SIGNAL( activated(int) ), SLOT( slotMenuActivated(int) ) ); //END Settings menu m_menubar->insertItem( i18n( "&Actions" ), actionsMenu ); m_menubar->insertItem( i18n( "&Playlist" ), playlistMenu ); m_menubar->insertItem( i18n( "&Mode" ), modeMenu ); m_menubar->insertItem( i18n( "&Tools" ), m_toolsMenu ); m_menubar->insertItem( i18n( "&Settings" ), m_settingsMenu ); m_menubar->insertItem( i18n( "&Help" ), amaroK::Menu::helpMenu() ); QBoxLayout *layV = new QVBoxLayout( this ); layV->addWidget( m_menubar ); layV->addWidget( m_browsers, 1 ); layV->addWidget( m_toolbar ); layV->addSpacing( 2 ); layV->addWidget( statusbar ); //The volume slider later becomes our FocusProxy, so all wheelEvents get redirected to it m_toolbar->setFocusPolicy( QWidget::WheelFocus ); m_toolbar->setFlat( true ); m_toolbar->setMovingEnabled( false ); playlist->setMargin( 2 ); playlist->installEventFilter( this ); //we intercept keyEvents //<XMLGUI> { QString xmlFile = amaroK::config()->readEntry( "XMLFile", "amarokui.rc" ); if ( xmlFile == "amarokui_first.rc" ) // this bug can bite you if you are a pre 1.2 user, we // deleted amarokui_first.rc, but we must still support it xmlFile = "amarokui.rc"; setXMLFile( xmlFile ); createGUI(); //NOTE we implement this } //</XMLGUI> //<Browsers> { Debug::Block block( "Creating browsers. Please report long start times!" ); #define addBrowserMacro( Type, name, text, icon ) { \ Debug::Block block( name ); \ m_browsers->addBrowser( new Type( name ), text, icon ); } #define addInstBrowserMacro( Type, name, text, icon ) { \ Debug::Block block( name ); \ m_browsers->addBrowser( Type::instance(), text, icon ); } addBrowserMacro( ContextBrowser, "ContextBrowser", i18n( "Context" ), amaroK::icon( "info" ) ) addBrowserMacro( CollectionBrowser, "CollectionBrowser", i18n( "Collection" ), amaroK::icon( "collection" ) ) addInstBrowserMacro( PlaylistBrowser, "PlaylistBrowser", i18n( "Playlists" ), amaroK::icon( "playlist" ) ) //DEBUG: Comment out the addBrowserMacro line and uncomment the m_browsers line (passing in a vfat device name) to see the "virtual root" functionality addBrowserMacro( FileBrowser, "FileBrowser", i18n( "Files" ), "folder" ) //m_browsers->addBrowser( new FileBrowser( "FileBrowser", DeviceManager::instance()->getDevice( "hda5" ) ), i18n( "Files" ), "folder" ); new MediaBrowser( "MediaBrowser" ); if( MediaBrowser::isAvailable() ) addInstBrowserMacro( MediaBrowser, "MediaBrowser", i18n( "Media Device" ), amaroK::icon( "device" ) ) #undef addBrowserMacro #undef addInstBrowserMacro } //</Browsers> connect( Playlist::instance()->qscrollview(), SIGNAL( dynamicModeChanged( const DynamicMode* ) ), PlaylistBrowser::instance(), SLOT( loadDynamicItems() ) ); qApp->installEventFilter( this ); // keyboards shortcuts for the browsers connect( playlist, SIGNAL( itemCountChanged( int, int, int, int, int, int ) ), statusbar, SLOT( slotItemCountChanged( int, int, int, int, int, int ) ) ); connect( playlist, SIGNAL( queueChanged( const PLItemList &, const PLItemList & ) ), statusbar, SLOT( updateQueueLabel() ) ); connect( playlist, SIGNAL( aboutToClear() ), m_lineEdit, SLOT( clear() ) ); amaroK::MessageQueue::instance()->sendMessages(); }
EditMessageDialog::EditMessageDialog(AlcatelContactList *cont, QWidget *parent, const char *name ) : KDialog(parent,name, true) { contacts = cont; QLabel *label; QFrame *line; reread = false; resize(450, 280 ); setCaption( i18n( "New message" ) ); QGridLayout *mainLayout = new QGridLayout( this ); mainLayout->setSpacing( 6 ); mainLayout->setMargin( 8 ); label = new QLabel( i18n("<b>New message</b>"), this ); mainLayout->addMultiCellWidget(label,0,0,0,4); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,1,1,0,4); mainLayout->setRowStretch(0, -1); mainLayout->setRowStretch(1, -1); sendCheck = new QCheckBox(i18n("Send message"), this); sendCheck->setChecked(true); mainLayout->addMultiCellWidget(sendCheck,2,2,0,1); QWhatsThis::add(sendCheck ,i18n("<b>Send message</b><br>When checked message will be sent as you press OK button.")); writeCheck = new QCheckBox(i18n("Store to mobile as"), this); writeCheck->setChecked(true); mainLayout->addMultiCellWidget(writeCheck,2,2,2,3); QWhatsThis::add(writeCheck ,i18n("<b>Store to mobile</b><br>When checked, message will be written to mobile (SIM) as sent or unsent just as you press OK button.")); typeCombo = new QComboBox(this); typeCombo->insertItem(i18n("Sent")); typeCombo->insertItem(i18n("Unsent")); mainLayout->addWidget(typeCombo, 2,4); QWhatsThis::add( typeCombo,i18n("<b>Type of message</b><br>Which will be type of message stored in mobile?")); connect( sendCheck, SIGNAL( toggled(bool) ), this, SLOT( slotSendChanged(bool) ) ); connect( writeCheck, SIGNAL( toggled(bool) ), this, SLOT( slotWriteChanged(bool) ) ); label = new QLabel( i18n("Send to:"), this ); mainLayout->addWidget(label, 3,0); sendToCombo = new KComboBox(true, this); sendToCombo->setValidator(new PhoneNumberValidator(false, true, sendToCombo)); mainLayout->addMultiCellWidget(sendToCombo,3,3,1,3); QWhatsThis::add(sendToCombo ,i18n("<b>Send to number(s)</b><br>Enter here number(s) of receivers of this message, more numbers should be separated with space, comma or semicolon.")); QPushButton *buttonContacts = new QPushButton(i18n("Contacts..."), this); connect ( buttonContacts, SIGNAL( clicked() ), this, SLOT(selectContacts())); mainLayout->addWidget(buttonContacts,3,4); QWhatsThis::add(buttonContacts ,i18n("<b>Contacts</b><br>Use this button to add number from your contacts.")); messageEdit = new QTextEdit(this); messageEdit->setTextFormat(Qt::PlainText); messageEdit->setWordWrap(QTextEdit::WidgetWidth); mainLayout->addMultiCellWidget(messageEdit,4,4,0,4); connect( messageEdit, SIGNAL( textChanged() ), this, SLOT( slotTextChanged() ) ); connect( messageEdit, SIGNAL( returnPressed() ), this, SLOT( slotOK() ) ); QWhatsThis::add( messageEdit,i18n("<b>Message text</b><br>Write here message text, note that characters with accents will be very probably interpreted another way that you wanted, just few pass correctly.")); msgInfoLabel = new QLabel( i18n("Used %1 of %2 characters").arg(0).arg(160), this ); mainLayout->addMultiCellWidget(msgInfoLabel,5,5,0,2); mainLayout->addWidget(new QLabel( i18n("Class of message"),this),5,3); classCombo = new QComboBox(this); classCombo->insertItem(i18n("0 - flash")); classCombo->insertItem(i18n("1 - mobile")); classCombo->insertItem(i18n("2 - sim")); classCombo->insertItem(i18n("3 - terminal")); classCombo->setCurrentItem(1); mainLayout->addWidget(classCombo, 5,4); QWhatsThis::add( classCombo,i18n("<b>Class of message</b><br>Class 0 message just shows on display imediately after receiving. Class 1 and 2 message are normal messages, 1 should be preferably stored into mobile while 2 on SIM card. Class 3 should go to terminal equipment which most mobiles doesn't support.")); QHBoxLayout *layout = new QHBoxLayout; layout->setSpacing( 6 ); layout->setMargin( 0 ); QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); layout->addItem( spacer ); QPushButton *buttonOK = new QPushButton(i18n("&OK"), this); buttonOK->setDefault(true); layout->addWidget(buttonOK); QPushButton *buttonCancel = new QPushButton(i18n("&Cancel"), this); layout->addWidget(buttonCancel); mainLayout->addMultiCellLayout( layout, 7,7, 0,4 ); line = new QFrame( this); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); mainLayout->addMultiCellWidget( line, 6,6, 0,4 ); connect( buttonOK, SIGNAL( clicked() ), this, SLOT( slotOK() ) ); connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( slotCancel() ) ); }
EditContactDialog::EditContactDialog(AlcatelCategoryList *cat, AlcatelContactList *lst, const AlcatelContact *cont, QWidget *parent, const char *name ) : KDialog(parent,name,true) { contact = cont; list= lst; categories = cat; QLabel *label; QFrame *line; resize(500, 580 ); if (cont == NULL) setCaption( i18n( "New contact" ) ); else setCaption( i18n( "Edit contact" ) ); QGridLayout *mainLayout = new QGridLayout( this ); mainLayout->setSpacing( 6 ); mainLayout->setMargin( 8 ); if (cont == NULL) label = new QLabel( i18n("<b>New contact</b>"), this ); else label = new QLabel( i18n("<b>Edit contact</b>"), this ); mainLayout->addMultiCellWidget(label,0,0,0,3); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,1,1,0,3); mainLayout->setRowStretch(0, -1); mainLayout->setRowStretch(1, -1); mainLayout->addWidget(new QLabel(i18n("First name"), this), 2, 0); mainLayout->addWidget(editFirstName = new QLineEdit(this), 2, 1); mainLayout->addWidget(new QLabel(i18n("Last name"), this), 2, 2); mainLayout->addWidget(editLastName = new QLineEdit(this), 2, 3); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,3,3,0,3); mainLayout->addWidget(new QLabel(i18n("Company"), this), 4, 0); mainLayout->addWidget(editCompany = new QLineEdit(this), 4, 1); mainLayout->addWidget(new QLabel(i18n("Job title"), this), 4, 2); mainLayout->addWidget(editJobTitle = new QLineEdit(this), 4, 3); mainLayout->addWidget(new QLabel(i18n("Category"), this), 5, 0); mainLayout->addWidget(editCategory = new KComboBox(this), 5, 1); editCategory->insertItem(i18n("Not set")); /* -1 */ editCategory->insertItem(i18n("none_category", "None")); /* 255 */ for( AlcatelCategoryList::Iterator c_it = categories->begin(); c_it != categories->end(); ++c_it ) { editCategory->insertItem((*c_it).Name); } // , (*c_it).Id mainLayout->addWidget(new QLabel(i18n("Private"), this), 5, 2); mainLayout->addWidget(editPrivate = new QCheckBox(this), 5, 3); mainLayout->addWidget(new QLabel(i18n("Note"), this), 6, 0); /* this will be longer */ mainLayout->addMultiCellWidget(editNote = new QLineEdit(this), 6, 6, 1, 3); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,7,7,0,3); mainLayout->addWidget(new QLabel(i18n("Work number"), this),8 , 0); mainLayout->addWidget(editWorkNumber = new QLineEdit(this),8 , 1); editWorkNumber->setValidator(new PhoneNumberValidator(true, true, false, editWorkNumber)); mainLayout->addWidget(new QLabel(i18n("Main number"), this),8 , 2); mainLayout->addWidget(editMainNumber = new QLineEdit(this),8 , 3); editMainNumber->setValidator(new PhoneNumberValidator(true, true, false, editMainNumber)); mainLayout->addWidget(new QLabel(i18n("Fax number"), this),9 , 0); mainLayout->addWidget(editFaxNumber = new QLineEdit(this),9 , 1); editFaxNumber->setValidator(new PhoneNumberValidator(true, true, false, editFaxNumber)); mainLayout->addWidget(new QLabel(i18n("Other number"), this),9 , 2); mainLayout->addWidget(editOtherNumber = new QLineEdit(this),9 , 3); editOtherNumber->setValidator(new PhoneNumberValidator(true, true, false, editOtherNumber)); mainLayout->addWidget(new QLabel(i18n("Pager number"), this),10 , 0); mainLayout->addWidget(editPagerNumber = new QLineEdit(this),10 , 1); editPagerNumber->setValidator(new PhoneNumberValidator(true, true, false, editPagerNumber)); mainLayout->addWidget(new QLabel(i18n("Mobile number"), this),10 , 2); mainLayout->addWidget(editMobileNumber = new QLineEdit(this),10 , 3); editMobileNumber->setValidator(new PhoneNumberValidator(true, true, false, editMobileNumber)); mainLayout->addWidget(new QLabel(i18n("Home number"), this),11 , 0); mainLayout->addWidget(editHomeNumber = new QLineEdit(this),11 , 1); editHomeNumber->setValidator(new PhoneNumberValidator(true, true, false, editHomeNumber)); /* what should be here? mainLayout->addWidget(new QLabel(i18n(""), this), , 2);*/ line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,12,12,0,3); mainLayout->addWidget(new QLabel(i18n("Email 1"), this), 13, 0); mainLayout->addWidget(editEmail1 = new QLineEdit(this), 13, 1); mainLayout->addWidget(new QLabel(i18n("Email 2"), this), 13, 2); mainLayout->addWidget(editEmail2 = new QLineEdit(this), 13, 3); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,14,14,0,3); mainLayout->addWidget(new QLabel(i18n("Address"), this), 15, 0); /* this will be longer */ mainLayout->addMultiCellWidget(editAddress = new QLineEdit(this), 15, 15, 1, 3); mainLayout->addWidget(new QLabel(i18n("City"), this), 16, 0); mainLayout->addWidget(editCity = new QLineEdit(this), 16, 1); mainLayout->addWidget(new QLabel(i18n("Zip"), this), 16, 2); mainLayout->addWidget(editZip = new QLineEdit(this), 16, 3); mainLayout->addWidget(new QLabel(i18n("State"), this), 17, 0); mainLayout->addWidget(editState = new QLineEdit(this), 17, 1); mainLayout->addWidget(new QLabel(i18n("Country"), this), 17, 2); mainLayout->addWidget(editCountry = new QLineEdit(this), 17, 3); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,18,18,0,3); mainLayout->addWidget(new QLabel(i18n("Custom 1"), this), 19, 0); mainLayout->addWidget(editCustom1 = new QLineEdit(this), 19, 1); mainLayout->addWidget(new QLabel(i18n("Custom 2"), this), 19, 2); mainLayout->addWidget(editCustom2 = new QLineEdit(this), 19, 3); mainLayout->addWidget(new QLabel(i18n("Custom 3"), this), 20, 0); mainLayout->addWidget(editCustom3 = new QLineEdit(this), 20, 1); mainLayout->addWidget(new QLabel(i18n("Custom 4"), this), 20, 2); mainLayout->addWidget(editCustom4 = new QLineEdit(this), 20, 3); line = new QFrame( this ); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); line->setMargin(3); mainLayout->addMultiCellWidget(line,21,21,0,3); mainLayout->addWidget(new QLabel(i18n("Storage"), this), 22, 0); editStorage = new KComboBox(this); editStorage->insertItem(i18n("none_storage", "None")); editStorage->insertItem(i18n("PC")); editStorage->insertItem(i18n("SIM")); editStorage->insertItem(i18n("Mobile")); connect( editStorage, SIGNAL( activated(int)), this, SLOT( slotStorage(int))); editStorage->setCurrentItem(1); mainLayout->addWidget(editStorage, 22, 1); mainLayout->addWidget(new QLabel(i18n("Position"), this), 22, 2); editPosition = new KIntNumInput(this); editPosition->setRange(-1, 9999,1,false); editPosition->setSpecialValueText(i18n("Auto")); mainLayout->addWidget(editPosition, 22, 3); QHBoxLayout *layout = new QHBoxLayout; layout->setSpacing( 6 ); layout->setMargin( 0 ); QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); layout->addItem( spacer ); QPushButton *buttonOK = new QPushButton(i18n("&OK"), this); buttonOK->setDefault(true); layout->addWidget(buttonOK); QPushButton *buttonCancel = new QPushButton(i18n("&Cancel"), this); layout->addWidget(buttonCancel); mainLayout->addMultiCellLayout( layout, 24,24, 0,3 ); line = new QFrame( this); line->setFrameStyle( QFrame::HLine | QFrame::Sunken ); mainLayout->addMultiCellWidget( line, 23,23, 0,3 ); connect( buttonOK, SIGNAL( clicked() ), this, SLOT( slotOK() ) ); connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( slotCancel() ) ); editPosition->setEnabled(false); loadContact(); if (contact == NULL) editPosition->setValue(-1); editStorage->setEnabled(contact == NULL); }