TimeSelector::TimeSelector(const QString& selectText, const QString& postfix, const QString& selectWhatsThis, const QString& valueWhatsThis, bool allowHourMinute, QWidget* parent) : QFrame(parent), mLabel(0), mReadOnly(false) { QHBoxLayout* layout = new QHBoxLayout(this); layout->setMargin(0); layout->setSpacing(KDialog::spacingHint()); mSelect = new CheckBox(selectText, this); mSelect->setFixedSize(mSelect->sizeHint()); connect(mSelect, SIGNAL(toggled(bool)), SLOT(selectToggled(bool))); mSelect->setWhatsThis(selectWhatsThis); layout->addWidget(mSelect); KHBox* box = new KHBox(this); // to group widgets for QWhatsThis text box->setSpacing(KDialog::spacingHint()); layout->addWidget(box); mPeriod = new TimePeriod(allowHourMinute, box); mPeriod->setFixedSize(mPeriod->sizeHint()); mPeriod->setSelectOnStep(false); connect(mPeriod, SIGNAL(valueChanged(const KCal::Duration&)), SLOT(periodChanged(const KCal::Duration&))); mSelect->setFocusWidget(mPeriod); mPeriod->setEnabled(false); if (!postfix.isEmpty()) { mLabel = new QLabel(postfix, box); mLabel->setEnabled(false); } box->setWhatsThis(valueWhatsThis); layout->addStretch(); }
PreProcessingPage::PreProcessingPage(Manager* const mngr, KAssistantDialog* const dlg) : KPWizardPage(dlg, i18n("<b>Pre-Processing Images</b>")), d(new PreProcessingPagePriv) { d->mngr = mngr; d->progressTimer = new QTimer(this); KVBox* vbox = new KVBox(this); d->title = new QLabel(vbox); d->title->setWordWrap(true); d->title->setOpenExternalLinks(true); KConfig config("kipirc"); KConfigGroup group = config.group(QString("Panorama Settings")); d->celesteCheckBox = new QCheckBox(i18n("Detect moving skies"), vbox); d->celesteCheckBox->setChecked(group.readEntry("Celeste", false)); d->celesteCheckBox->setToolTip(i18n("Automatic detection of clouds to prevent wrong keypoints matching " "between images due to moving clouds.")); d->celesteCheckBox->setWhatsThis(i18n("<b>Detect moving skies</b>: During the control points selection and matching, " "this option discards any points that are associated to a possible cloud. This " "is useful to prevent moving clouds from altering the control points matching " "process.")); QLabel* space1 = new QLabel(vbox); KHBox* hbox = new KHBox(vbox); d->detailsBtn = new QPushButton(hbox); d->detailsBtn->setText(i18n("Details...")); d->detailsBtn->hide(); QLabel* space2 = new QLabel(hbox); hbox->setStretchFactor(space2, 10); QLabel* space3 = new QLabel(vbox); d->progressLabel = new QLabel(vbox); d->progressLabel->setAlignment(Qt::AlignCenter); QLabel* space4 = new QLabel(vbox); vbox->setStretchFactor(space1, 2); vbox->setStretchFactor(space3, 2); vbox->setStretchFactor(space4, 10); vbox->setSpacing(KDialog::spacingHint()); vbox->setMargin(KDialog::spacingHint()); setPageWidget(vbox); resetTitle(); QPixmap leftPix = KStandardDirs::locate("data", "kipiplugin_panorama/pics/assistant-preprocessing.png"); setLeftBottomPix(leftPix.scaledToWidth(128, Qt::SmoothTransformation)); // connect(d->mngr->thread(), SIGNAL(starting(KIPIPanoramaPlugin::ActionData)), // this, SLOT(slotAction(KIPIPanoramaPlugin::ActionData))); connect(d->progressTimer, SIGNAL(timeout()), this, SLOT(slotProgressTimerDone())); connect(d->detailsBtn, SIGNAL(clicked()), this, SLOT(slotShowDetails())); }
SQLiteServerPrefs::SQLiteServerPrefs( QWidget *parent ) : QWidget( parent ) { QVBoxLayout * Form1Layout = new QVBoxLayout( this ); KHBox *hbox = new KHBox( this ); ( void ) new QLabel( i18n( "Database file:" ), hbox ); Form1Layout->addWidget( hbox ); QSpacerItem* spacerRow5 = new QSpacerItem( 10, 10, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ); Form1Layout->addItem( spacerRow5 ); QString sqliteBinary = "sqlite3"; // Backup options QGroupBox *backupGBox = new QGroupBox( this ); backupGBox->setTitle( i18nc( "@title:group Backup options", "Backup" ) ); QFormLayout *backupGBoxLayout = new QFormLayout; backupGBox->setLayout( backupGBoxLayout ); dumpPathRequester = new KUrlRequester; dumpPathRequester->fileDialog()->setCaption( i18n( "Select SQLite command" ) ); backupGBoxLayout->addRow( i18n( "Path to '%1':", sqliteBinary ), dumpPathRequester ); Form1Layout->addWidget( backupGBox ); // SQLite converter options QGroupBox *converterGBox = new QGroupBox( this ); converterGBox->setTitle( i18n( "SQLite converter" ) ); QFormLayout *converterGBoxLayout = new QFormLayout; converterGBox->setLayout( converterGBoxLayout ); oldPathRequester = new KUrlRequester; oldPathRequester->fileDialog()->setCaption( i18n( "Select old SQLite version command" ) ); converterGBoxLayout->addRow( i18n( "Path to SQLite old version command:" ), oldPathRequester ); newPathRequester = new KUrlRequester; newPathRequester->fileDialog()->setCaption( i18n( "Select new SQLite version command" ) ); converterGBoxLayout->addRow( i18n( "Path to SQLite new version command:" ), newPathRequester ); Form1Layout->addWidget( converterGBox ); // Load Current Settings KConfigGroup config = KGlobal::config()->group( "Server" ); fileRequester = new KUrlRequester( config.readEntry( "DBFile", KStandardDirs::locateLocal( "appdata", "krecipes.krecdb" ) ), hbox ); fileRequester->fileDialog()->setCaption( i18n( "Select SQLite database file" ) ); hbox->setStretchFactor( fileRequester, 2 ); dumpPathRequester->setUrl( config.readEntry( "SQLitePath", sqliteBinary ) ); dumpPathRequester->setFilter( sqliteBinary + "\n*|" + i18n( "All files" ) ); oldPathRequester->setUrl( config.readEntry( "SQLiteOldVersionPath", "sqlite" ) ); oldPathRequester->setFilter( "sqlite\n*|" + i18n( "All files" ) ); newPathRequester->setUrl( config.readEntry( "SQLiteNewVersionPath", "sqlite3" ) ); newPathRequester->setFilter( "sqlite3\n*|" + i18n( "All files" ) ); }
VolumePopupButton::VolumePopupButton( QWidget * parent, PlayerManager *mgr ) : QToolButton( parent ), m_prevVolume(0.0), m_curVolume(0.0), player(mgr) { //create the volume popup m_volumeMenu = new QMenu( this ); KVBox *mainBox = new KVBox( this ); m_volumeLabel= new QLabel( mainBox ); m_volumeLabel->setAlignment( Qt::AlignHCenter ); KHBox *sliderBox = new KHBox( mainBox ); m_volumeSlider = new VolumeSlider( 100, sliderBox, false ); m_volumeSlider->setFixedHeight( 170 ); mainBox->setMargin( 0 ); mainBox->setSpacing( 0 ); sliderBox->setSpacing( 0 ); sliderBox->setMargin( 0 ); mainBox->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ); sliderBox->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ); QWidgetAction *sliderActionWidget = new QWidgetAction( this ); sliderActionWidget->setDefaultWidget( mainBox ); // volumeChanged is a customSignal, is not emited by setValue() connect( m_volumeSlider, SIGNAL(volumeChanged(float)), player, SLOT(setVolume(float)) ); QToolBar *muteBar = new QToolBar( QString(), mainBox ); muteBar->setContentsMargins( 0, 0, 0, 0 ); muteBar->setIconSize( QSize( 16, 16 ) ); // our popup's mute-toggle button m_muteAction = new QAction( KIcon( "audio-volume-muted" ), QString(), muteBar ); m_muteAction->setToolTip( i18n( "Mute/Unmute" ) ); connect( m_muteAction, SIGNAL(triggered(bool)), this, SLOT(slotToggleMute(bool)) ); connect( player, SIGNAL(mutedChanged(bool)), this, SLOT(slotMuteStateChanged(bool)) ); m_volumeMenu->addAction( sliderActionWidget ); muteBar->addAction( m_muteAction ); /* set icon and label to match create state of AudioOutput, as the * desired volume value is not available yet (because the player * object is not set up yet.) Someone must call PlayerManager::setVolume() * later. */ slotVolumeChanged( 1.0 ); // let player notify us when volume changes connect( player, SIGNAL(volumeChanged(float)), this, SLOT(slotVolumeChanged(float)) ); }
LongMessageWidget::LongMessageWidget( QWidget *anchor, const QString &message, Amarok::Logger::MessageType type ) : PopupWidget( anchor ) , m_counter( 0 ) , m_timeout( 6000 ) { DEBUG_BLOCK Q_UNUSED( type ) setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); setContentsMargins( 4, 4, 4, 4 ); setMinimumWidth( 26 ); setMinimumHeight( 26 ); setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ); QPalette p = QToolTip::palette(); setPalette( p ); KHBox *hbox = new KHBox( this ); layout()->addWidget( hbox ); hbox->setSpacing( 12 ); m_countdownFrame = new CountdownFrame( hbox ); m_countdownFrame->setObjectName( "counterVisual" ); m_countdownFrame->setFixedWidth( fontMetrics().width( "X" ) ); m_countdownFrame->setFrameStyle( QFrame::Plain | QFrame::Box ); QPalette pal; pal.setColor( m_countdownFrame->foregroundRole(), p.dark().color() ); m_countdownFrame->setPalette( pal ); QLabel *alabel = new QLabel( message, hbox ); alabel->setWordWrap( true ); alabel->setOpenExternalLinks( true ); alabel->setObjectName( "label" ); alabel->setTextFormat( Qt::RichText ); alabel->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Preferred ); alabel->setPalette( p ); hbox = new KHBox( this ); layout()->addWidget( hbox ); KPushButton *button = new KPushButton( KStandardGuiItem::close(), hbox ); button->setObjectName( "closeButton" ); connect( button, SIGNAL( clicked() ), SLOT( close() ) ); reposition(); show(); m_timerId = startTimer( m_timeout / m_countdownFrame->height() ); }
PreProcessingPage::PreProcessingPage(Manager* const mngr, KAssistantDialog* const dlg) : KPWizardPage(dlg, i18n("<b>Pre-Processing Bracketed Images</b>")), d(new PreProcessingPagePriv) { d->mngr = mngr; d->progressTimer = new QTimer(this); KVBox *vbox = new KVBox(this); d->title = new QLabel(vbox); d->title->setWordWrap(true); d->title->setOpenExternalLinks(true); d->alignCheckBox = new QCheckBox(i18n("Align bracketed images"), vbox); KConfig config("kipirc"); KConfigGroup group = config.group(QString("ExpoBlending Settings")); d->alignCheckBox->setChecked(group.readEntry("Auto Alignment", true)); QLabel* space1 = new QLabel(vbox); KHBox* hbox = new KHBox(vbox); d->detailsBtn = new QPushButton(hbox); d->detailsBtn->setText(i18n("Details...")); d->detailsBtn->hide(); QLabel* space2 = new QLabel(hbox); hbox->setStretchFactor(space2, 10); QLabel* space3 = new QLabel(vbox); d->progressLabel = new QLabel(vbox); d->progressLabel->setAlignment(Qt::AlignCenter); QLabel* space4 = new QLabel(vbox); vbox->setStretchFactor(space1, 2); vbox->setStretchFactor(space3, 2); vbox->setStretchFactor(space4, 10); vbox->setSpacing(KDialog::spacingHint()); vbox->setMargin(KDialog::spacingHint()); setPageWidget(vbox); resetTitle(); QPixmap leftPix = KStandardDirs::locate("data", "kipiplugin_expoblending/pics/assistant-preprocessing.png"); setLeftBottomPix(leftPix.scaledToWidth(128, Qt::SmoothTransformation)); connect(d->mngr->thread(), SIGNAL(starting(KIPIExpoBlendingPlugin::ActionData)), this, SLOT(slotAction(KIPIExpoBlendingPlugin::ActionData))); connect(d->progressTimer, SIGNAL(timeout()), this, SLOT(slotProgressTimerDone())); connect(d->detailsBtn, SIGNAL(clicked()), this, SLOT(slotShowDetails())); }
void KasPrefsDialog::addThumbsPage() { KVBox *thumbsPage = new KVBox( this ); KPageWidgetItem *item = addPage( thumbsPage, i18n("Thumbnails") ); item->setIcon( Icon( "icons" ) ); thumbsCheck = new QCheckBox( i18n("Enable thu&mbnails"), thumbsPage ); thumbsCheck->setWhatsThis( i18n( "Enables the display of a thumbnailed image of the window when " "you move your mouse pointer over an item. The thumbnails are " "approximate, and may not reflect the current window contents.\n\n" "Using this option on a slow machine may cause performance problems." ) ); thumbsCheck->setChecked( kasbar->thumbnailsEnabled() ); connect( thumbsCheck, SIGNAL( toggled(bool) ), kasbar, SLOT( setThumbnailsEnabled(bool) ) ); embedThumbsCheck = new QCheckBox( i18n("&Embed thumbnails"), thumbsPage ); embedThumbsCheck->setChecked( kasbar->embedThumbnails() ); connect( embedThumbsCheck, SIGNAL( toggled(bool) ), kasbar, SLOT( setEmbedThumbnails(bool) ) ); KHBox *thumbSizeBox = new KHBox( thumbsPage ); thumbSizeBox->setWhatsThis( i18n( "Controls the size of the window thumbnails. Using large sizes may " "cause performance problems." ) ); QLabel *thumbSizeLabel = new QLabel( i18n("Thumbnail &size: "), thumbSizeBox ); int percent = (int) (kasbar->thumbnailSize() * 100.0); thumbSizeSlider = new QSlider( 0, 100, 1, percent, Qt::Horizontal, thumbSizeBox ); connect( thumbSizeSlider, SIGNAL( valueChanged( int ) ), kasbar, SLOT( setThumbnailSize( int ) ) ); thumbSizeLabel->setBuddy( thumbSizeSlider ); KHBox *thumbUpdateBox = new KHBox( thumbsPage ); thumbUpdateBox->setSpacing( spacingHint() ); thumbUpdateBox->setWhatsThis( i18n( "Controls the frequency with which the thumbnail of the active window " "is updated. If the value is 0 then no updates will be performed.\n\n" "Using small values may cause performance problems on slow machines." ) ); QLabel *thumbUpdateLabel = new QLabel( i18n("&Update thumbnail every: "), thumbUpdateBox ); thumbUpdateSpin = new QSpinBox( 0, 1000, 1, thumbUpdateBox ); thumbUpdateSpin->setValue( kasbar->thumbnailUpdateDelay() ); connect( thumbUpdateSpin, SIGNAL( valueChanged( int ) ), kasbar, SLOT( setThumbnailUpdateDelay( int ) ) ); (void) new QLabel( i18n("seconds"), thumbUpdateBox ); thumbUpdateLabel->setBuddy( thumbUpdateSpin ); (void) new QWidget( thumbsPage, "spacer" ); (void) new QWidget( thumbsPage, "spacer" ); (void) new QWidget( thumbsPage, "spacer" ); }
void KasPrefsDialog::addBackgroundPage() { KVBox *bgPage = new KVBox( this ); KPageWidgetItem *item = addPage( bgPage, i18n("Background") ); item->setItem( Icon( "background" ) ); transCheck = new QCheckBox( i18n("Trans&parent"), bgPage ); transCheck->setWhatsThis( i18n( "Enables pseudo-transparent mode." ) ); transCheck->setChecked( kasbar->isTransparent() ); connect( transCheck, SIGNAL( toggled(bool) ), kasbar, SLOT( setTransparent(bool) ) ); tintCheck = new QCheckBox( i18n("Enable t&int"), bgPage ); tintCheck->setWhatsThis( i18n( "Enables tinting the background that shows through in transparent mode." ) ); tintCheck->setChecked( kasbar->hasTint() ); connect( tintCheck, SIGNAL( toggled(bool) ), kasbar, SLOT( setTint(bool) ) ); KHBox *tintColBox = new KHBox( bgPage ); tintColBox->setWhatsThis( i18n( "Specifies the color used for the background tint." ) ); connect( tintCheck, SIGNAL( toggled(bool) ), tintColBox, SLOT( setEnabled(bool) ) ); tintColBox->setEnabled( kasbar->hasTint() ); QLabel *tintLabel = new QLabel( i18n("Tint &color:"), tintColBox ); tintButton = new KColorButton( kasbar->tintColor(), tintColBox ); connect( tintButton, SIGNAL( changed( const QColor & ) ), kasbar, SLOT( setTintColor( const QColor & ) ) ); tintLabel->setBuddy( tintButton ); KHBox *tintAmtBox = new KHBox( bgPage ); tintAmtBox->setWhatsThis( i18n( "Specifies the strength of the background tint." ) ); connect( tintCheck, SIGNAL( toggled(bool) ), tintAmtBox, SLOT( setEnabled(bool) ) ); tintAmtBox->setEnabled( kasbar->hasTint() ); QLabel *tintStrengthLabel = new QLabel( i18n("Tint &strength: "), tintAmtBox ); int percent = (int) (kasbar->tintAmount() * 100.0); tintAmount = new QSlider( 0, 100, 1, percent, Qt::Horizontal, tintAmtBox ); tintAmount->setTracking( true ); connect( tintAmount, SIGNAL( valueChanged( int ) ), kasbar, SLOT( setTintAmount( int ) ) ); tintStrengthLabel->setBuddy( tintAmount ); (void) new QWidget( bgPage, "spacer" ); (void) new QWidget( bgPage, "spacer" ); (void) new QWidget( bgPage, "spacer" ); }
Playlist::Widget::Widget( QWidget* parent ) : KVBox( parent ) { setContentsMargins( 1, 1, 1, 1 ); m_searchWidget = new ProgressiveSearchWidget( this ); //this is really only useful for debugging at the moment, so dont show it to users and testers /*m_sortBox = new QComboBox( this ); m_sortBox->insertItem( 0, "Album", Album); m_sortBox->insertItem( 1, "AlbumArtist", Album); m_sortBox->insertItem( 2, "Artist", Artist ); m_sortBox->insertItem( 3, "Bitrate", Bitrate ); m_sortBox->insertItem( 4, "Bpm", Bpm ); m_sortBox->insertItem( 5, "Comment", Comment ); m_sortBox->insertItem( 6, "Composer", Composer ); m_sortBox->insertItem( 7, "Directory", Directory ); m_sortBox->insertItem( 8, "DiscNumber", DiscNumber ); m_sortBox->insertItem( 9, "Filename", Filename ); m_sortBox->insertItem( 10, "Filesize", Filesize ); m_sortBox->insertItem( 11, "Genre", Genre ); m_sortBox->insertItem( 12, "LastPlayed", LastPlayed ); m_sortBox->insertItem( 13, "Length", Length ); m_sortBox->insertItem( 14, "Mood", Mood ); m_sortBox->insertItem( 15, "PlayCount", PlayCount ); m_sortBox->insertItem( 16, "Rating", Rating ); m_sortBox->insertItem( 17, "SampleRate", SampleRate ); m_sortBox->insertItem( 18, "Score", Score ); m_sortBox->insertItem( 29, "Source", Source ); m_sortBox->insertItem( 30, "Title", Title ); m_sortBox->insertItem( 31, "TrackNumber", TrackNumber ); m_sortBox->insertItem( 32, "Type", Type ); m_sortBox->insertItem( 33, "Year", Year ); connect( m_sortBox, SIGNAL( activated( int ) ), this, SLOT( sort( int ) ) );*/ QWidget * layoutHolder = new QWidget( this ); QVBoxLayout* mainPlaylistlayout = new QVBoxLayout( layoutHolder ); mainPlaylistlayout->setContentsMargins( 0, 0, 0, 0 ); m_playlistView = new PrettyListView( this ); m_playlistView->show(); connect( m_searchWidget, SIGNAL( filterChanged( const QString &, int, bool ) ), m_playlistView, SLOT( find( const QString &, int, bool ) ) ); connect( m_searchWidget, SIGNAL( next( const QString &, int ) ), m_playlistView, SLOT( findNext( const QString &, int ) ) ); connect( m_searchWidget, SIGNAL( previous( const QString &, int ) ), m_playlistView, SLOT( findPrevious( const QString &, int ) ) ); connect( m_searchWidget, SIGNAL( filterCleared() ), m_playlistView, SLOT( clearSearchTerm() ) ); connect( m_searchWidget, SIGNAL( showOnlyMatches( bool ) ), m_playlistView, SLOT( showOnlyMatches( bool ) ) ); connect( m_searchWidget, SIGNAL( activateFilterResult() ), m_playlistView, SLOT( playFirstSelected() ) ); connect( m_searchWidget, SIGNAL( downPressed() ), m_playlistView, SLOT( setFocus() ) ); connect( m_playlistView, SIGNAL( found() ), m_searchWidget, SLOT( match() ) ); connect( m_playlistView, SIGNAL( notFound() ), m_searchWidget, SLOT( noMatch() ) ); connect( LayoutManager::instance(), SIGNAL( activeLayoutChanged() ), m_playlistView, SLOT( reset() ) ); mainPlaylistlayout->setSpacing( 0 ); mainPlaylistlayout->addWidget( m_playlistView ); KHBox *barBox = new KHBox( this ); barBox->setMargin( 0 ); KToolBar *plBar = new Amarok::ToolBar( barBox ); plBar->setObjectName( "PlaylistToolBar" ); Model::instance(); // the Controller ctor creates the undo/redo actions that we use below, so we want // to make sure that it's been constructed and the the actions registered Controller::instance(); { //START Playlist toolbar plBar->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Preferred ); plBar->setIconDimensions( 22 ); plBar->setMovable( false ); plBar->addAction( new KToolBarSpacerAction( this ) ); plBar->addAction( Amarok::actionCollection()->action( "playlist_clear" ) ); //FIXME this action should go in ActionController, but we don't have any visibility to the view KAction *action = new KAction( KIcon( "music-amarok" ), i18n("Show active track"), this ); connect( action, SIGNAL( triggered( bool ) ), m_playlistView, SLOT( scrollToActiveTrack() ) ); plBar->addAction( action ); plBar->addSeparator(); plBar->addAction( Amarok::actionCollection()->action( "playlist_undo" ) ); plBar->addAction( Amarok::actionCollection()->action( "playlist_redo" ) ); plBar->addSeparator(); plBar->addAction( Amarok::actionCollection()->action( "playlist_save" ) ); plBar->addAction( Amarok::actionCollection()->action( "playlist_export" ) ); plBar->addSeparator(); Playlist::LayoutConfigAction *layoutConfigAction = new Playlist::LayoutConfigAction( this ); plBar->addAction( layoutConfigAction ); QToolButton *tbutton = qobject_cast<QToolButton*>(plBar->widgetForAction( layoutConfigAction ) ); if( tbutton ) tbutton->setPopupMode( QToolButton::InstantPopup ); plBar->addAction( new KToolBarSpacerAction( this ) ); } //END Playlist Toolbar setFrameShape( QFrame::StyledPanel ); setFrameShadow( QFrame::Sunken ); }
AdvancedSearchDialog::AdvancedSearchDialog(const QString &defaultName, const PlaylistSearch &defaultSearch, QWidget *parent, const char *name) : KDialog(parent) { setCaption( i18n("Create Search Playlist") ); setButtons( Ok|Cancel ); setDefaultButton( Ok ); setObjectName( QLatin1String( name ) ); setModal(true); KVBox *mw = new KVBox(this); setMainWidget(mw); KHBox *box = new KHBox(mw); box->setSpacing(5); new QLabel(i18n("Playlist name:"), box); m_playlistNameLineEdit = new KLineEdit(defaultName, box); QGroupBox *criteriaGroupBox = new QGroupBox(i18n("Search Criteria"), mw); mw->setStretchFactor(criteriaGroupBox, 1); m_criteriaLayout = new QVBoxLayout; QGroupBox *group = new QGroupBox(); m_matchAnyButton = new QRadioButton(i18n("Match any of the following")); m_matchAllButton = new QRadioButton(i18n("Match all of the following")); QHBoxLayout *hgroupbox = new QHBoxLayout; hgroupbox->addWidget(m_matchAnyButton); hgroupbox->addWidget(m_matchAllButton); group->setLayout(hgroupbox); m_criteriaLayout->addWidget(group); if(defaultSearch.isNull()) { SearchLine *newSearchLine = new SearchLine(this); m_searchLines.append(newSearchLine); m_criteriaLayout->addWidget(newSearchLine); newSearchLine = new SearchLine(this); m_searchLines.append(newSearchLine); m_criteriaLayout->addWidget(newSearchLine); m_matchAnyButton->setChecked(true); } else { PlaylistSearch::ComponentList components = defaultSearch.components(); for(PlaylistSearch::ComponentList::ConstIterator it = components.constBegin(); it != components.constEnd(); ++it) { SearchLine *s = new SearchLine(this); s->setSearchComponent(*it); m_searchLines.append(s); m_criteriaLayout->addWidget(s); } if(defaultSearch.searchMode() == PlaylistSearch::MatchAny) m_matchAnyButton->setChecked(true); else m_matchAllButton->setChecked(true); } QWidget *buttons = new QWidget(mw); QHBoxLayout *l = new QHBoxLayout(buttons); l->setSpacing(5); l->setMargin(0); KPushButton *clearButton = new KPushButton(KStandardGuiItem::clear(), buttons); connect(clearButton, SIGNAL(clicked()), SLOT(clear())); l->addWidget(clearButton); l->addStretch(1); m_moreButton = new KPushButton(i18nc("additional search options", "More"), buttons); connect(m_moreButton, SIGNAL(clicked()), SLOT(more())); l->addWidget(m_moreButton); m_fewerButton = new KPushButton(i18n("Fewer"), buttons); connect(m_fewerButton, SIGNAL(clicked()), SLOT(fewer())); l->addWidget(m_fewerButton); m_criteriaLayout->addStretch(1); criteriaGroupBox->setLayout(m_criteriaLayout); m_playlistNameLineEdit->setFocus(); }
KComboBoxTest::KComboBoxTest(QWidget* widget) :QWidget(widget) { QVBoxLayout *vbox = new QVBoxLayout (this); // Qt combobox KHBox* hbox = new KHBox(this); hbox->setSpacing (-1); QLabel* lbl = new QLabel("&QCombobox:", hbox); lbl->setSizePolicy (QSizePolicy::Maximum, QSizePolicy::Preferred); m_qc = new QComboBox(hbox); m_qc->setObjectName( QLatin1String( "QtReadOnlyCombo" ) ); lbl->setBuddy (m_qc); connectComboSignals(m_qc); vbox->addWidget (hbox); // Read-only combobox hbox = new KHBox(this); hbox->setSpacing (-1); lbl = new QLabel("&Read-Only Combo:", hbox); lbl->setSizePolicy (QSizePolicy::Maximum, QSizePolicy::Preferred); m_ro = new KComboBox(hbox ); m_ro->setObjectName( "ReadOnlyCombo" ); lbl->setBuddy (m_ro); m_ro->setCompletionMode( KGlobalSettings::CompletionAuto ); connectComboSignals(m_ro); vbox->addWidget (hbox); // Read-write combobox hbox = new KHBox(this); hbox->setSpacing (-1); lbl = new QLabel("&Editable Combo:", hbox); lbl->setSizePolicy (QSizePolicy::Maximum, QSizePolicy::Preferred); m_rw = new KComboBox( true, hbox ); m_rw->setObjectName( "ReadWriteCombo" ); lbl->setBuddy (m_rw); m_rw->setDuplicatesEnabled( true ); m_rw->setInsertPolicy( QComboBox::NoInsert ); m_rw->setTrapReturnKey( true ); connectComboSignals(m_rw); vbox->addWidget (hbox); // History combobox... hbox = new KHBox(this); hbox->setSpacing (-1); lbl = new QLabel("&History Combo:", hbox); lbl->setSizePolicy (QSizePolicy::Maximum, QSizePolicy::Preferred); m_hc = new KHistoryComboBox( hbox ); m_hc->setObjectName( "HistoryCombo" ); lbl->setBuddy (m_hc); m_hc->setDuplicatesEnabled( true ); m_hc->setInsertPolicy( QComboBox::NoInsert ); connectComboSignals(m_hc); vbox->addWidget (hbox); m_hc->setTrapReturnKey(true); // Read-write combobox that is a replica of code in konqueror... hbox = new KHBox(this); hbox->setSpacing (-1); lbl = new QLabel( "&Konq's Combo:", hbox); lbl->setSizePolicy (QSizePolicy::Maximum, QSizePolicy::Preferred); m_konqc = new KComboBox( true, hbox ); m_konqc->setObjectName( "KonqyCombo" ); lbl->setBuddy (m_konqc); m_konqc->setMaxCount( 10 ); connectComboSignals(m_konqc); vbox->addWidget (hbox); // Create an exit button hbox = new KHBox (this); m_btnExit = new QPushButton( "E&xit", hbox ); QObject::connect( m_btnExit, SIGNAL(clicked()), SLOT(quitApp()) ); // Create a disable button... m_btnEnable = new QPushButton( "Disa&ble", hbox ); QObject::connect (m_btnEnable, SIGNAL(clicked()), SLOT(slotDisable())); vbox->addWidget (hbox); // Popuplate the select-only list box QStringList list; list << "Stone" << "Tree" << "Peables" << "Ocean" << "Sand" << "Chips" << "Computer" << "Mankind"; list.sort(); // Setup the qcombobox m_qc->addItems(list ); // Setup read-only combo m_ro->addItems( list ); m_ro->completionObject()->setItems( list ); // Setup read-write combo m_rw->addItems( list ); m_rw->completionObject()->setItems( list ); // Setup history combo m_hc->addItems( list ); m_hc->completionObject()->setItems( list + QStringList() << "One" << "Two" << "Three" ); // Setup konq's combobox KConfig historyConfig( "konq_history", KConfig::SimpleConfig ); KConfigGroup cg(&historyConfig, "Location Bar" ); KCompletion * s_pCompletion = new KCompletion; s_pCompletion->setOrder( KCompletion::Weighted ); s_pCompletion->setItems( cg.readEntry( "ComboContents", QStringList() ) ); s_pCompletion->setCompletionMode( KGlobalSettings::completionMode() ); m_konqc->setCompletionObject( s_pCompletion ); QPixmap pix = SmallIcon("www"); m_konqc->addItem( pix, "http://www.kde.org" ); m_konqc->setCurrentIndex( m_konqc->count()-1 ); m_timer = new QTimer (this); connect (m_timer, SIGNAL (timeout()), SLOT (slotTimeout())); }
SelectAuthorsDialog::SelectAuthorsDialog( QWidget *parent, const ElementList ¤tAuthors, RecipeDB *db ) : KDialog(parent ), database(db) { setCaption(i18nc("@title:window", "Authors" )); setButtons(KDialog::Ok | KDialog::Cancel); setDefaultButton(KDialog::Ok); setModal( true ); KVBox *page = new KVBox( this ); setMainWidget( page ); //Design UI // Combo to Pick authors KHBox *topBox = new KHBox(page); topBox->setSpacing(6); authorsCombo = new KComboBox( true, topBox ); authorsCombo->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); authorsCombo->completionObject() ->setCompletionMode( KGlobalSettings::CompletionPopupAuto ); authorsCombo->lineEdit() ->disconnect( authorsCombo ); //so hitting enter doesn't enter the item into the box connect( authorsCombo->lineEdit(), SIGNAL( returnPressed() ), this, SLOT( addAuthor() ) ); // Add/Remove buttons addAuthorButton = new KPushButton( topBox ); addAuthorButton->setIcon( KIcon( "list-add" ) ); removeAuthorButton = new KPushButton( topBox ); removeAuthorButton->setIcon( KIcon( "list-remove" ) ); // Author List authorListModel = new QStandardItemModel( 0, 2, this ); authorListView = new QTreeView( page ); authorListView->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); authorListView->setAllColumnsShowFocus( true ); authorListView->setRootIsDecorated( false ); QStringList horizontalLabels; horizontalLabels << i18nc( "@title:column", "Id" ) << i18nc( "@title:column", "Author" ); authorListModel->setHorizontalHeaderLabels( horizontalLabels ); authorListProxyModel = new QSortFilterProxyModel(this); authorListProxyModel->setSourceModel(authorListModel); authorListProxyModel->setDynamicSortFilter( true ); authorListView->setModel( authorListProxyModel ); KConfigGroup config( KGlobal::config(), "Advanced" ); if ( !config.readEntry( "ShowID", false ) ) { authorListView->hideColumn( 0 ); authorListView->header()->hide(); } // Load the list loadAuthors( currentAuthors ); adjustSize(); resize(450, height()); // Connect signals & Slots connect ( addAuthorButton, SIGNAL( clicked() ), this, SLOT( addAuthor() ) ); connect ( removeAuthorButton, SIGNAL( clicked() ), this, SLOT( removeAuthor() ) ); authorsCombo->setEditText(QString()); authorsCombo->lineEdit()->setFocus(); }
AddressEditDialog::AddressEditDialog( QWidget *parent ) : KDialog(parent) { setCaption( i18nc( "street/postal", "Edit Address" ) ); setButtons( Ok | Cancel ); setDefaultButton( Ok ); showButtonSeparator( true ); QWidget *page = new QWidget( this ); setMainWidget( page ); QGridLayout *topLayout = new QGridLayout( page ); topLayout->setSpacing( spacingHint() ); topLayout->setMargin( 0 ); mTypeCombo = new AddressTypeCombo( page ); topLayout->addWidget( mTypeCombo, 0, 0, 1, 2 ); QLabel *label = new QLabel( i18nc( "<streetLabel>:", "%1:", KABC::Address::streetLabel() ), page ); label->setAlignment( Qt::AlignTop | Qt::AlignLeft ); topLayout->addWidget( label, 1, 0 ); mStreetTextEdit = new KTextEdit( page ); mStreetTextEdit->setAcceptRichText( false ); label->setBuddy( mStreetTextEdit ); topLayout->addWidget( mStreetTextEdit, 1, 1 ); TabPressEater *eater = new TabPressEater( this ); mStreetTextEdit->installEventFilter( eater ); label = new QLabel( i18nc( "<postOfficeBoxLabel>:", "%1:", KABC::Address::postOfficeBoxLabel() ), page ); topLayout->addWidget( label, 2 , 0 ); mPOBoxEdit = new KLineEdit( page ); label->setBuddy( mPOBoxEdit ); topLayout->addWidget( mPOBoxEdit, 2, 1 ); label = new QLabel( i18nc( "<localityLabel>:", "%1:", KABC::Address::localityLabel() ), page ); topLayout->addWidget( label, 3, 0 ); mLocalityEdit = new KLineEdit( page ); label->setBuddy( mLocalityEdit ); topLayout->addWidget( mLocalityEdit, 3, 1 ); label = new QLabel( i18nc( "<regionLabel>:", "%1:", KABC::Address::regionLabel() ), page ); topLayout->addWidget( label, 4, 0 ); mRegionEdit = new KLineEdit( page ); label->setBuddy( mRegionEdit ); topLayout->addWidget( mRegionEdit, 4, 1 ); label = new QLabel( i18nc( "<postalCodeLabel>:", "%1:", KABC::Address::postalCodeLabel() ), page ); topLayout->addWidget( label, 5, 0 ); mPostalCodeEdit = new KLineEdit( page ); label->setBuddy( mPostalCodeEdit ); topLayout->addWidget( mPostalCodeEdit, 5, 1 ); label = new QLabel( i18nc( "<countryLabel>:", "%1:", KABC::Address::countryLabel() ), page ); topLayout->addWidget( label, 6, 0 ); mCountryCombo = new KComboBox( page ); mCountryCombo->setEditable( true ); mCountryCombo->setDuplicatesEnabled( false ); QPushButton *labelButton = new QPushButton( i18n( "Edit Label..." ), page ); topLayout->addWidget( labelButton, 7, 0, 1, 2 ); connect( labelButton, SIGNAL(clicked()), SLOT(editLabel()) ); fillCountryCombo(); label->setBuddy( mCountryCombo ); topLayout->addWidget( mCountryCombo, 6, 1 ); mPreferredCheckBox = new QCheckBox( i18nc( "street/postal", "This is the preferred address" ), page ); topLayout->addWidget( mPreferredCheckBox, 8, 0, 1, 2 ); KSeparator *sep = new KSeparator( Qt::Horizontal, page ); topLayout->addWidget( sep, 9, 0, 1, 2 ); KHBox *buttonBox = new KHBox( page ); buttonBox->setSpacing( spacingHint() ); topLayout->addWidget( buttonBox, 10, 0, 1, 2 ); KAcceleratorManager::manage( this ); }
FontColourChooser::FontColourChooser(QWidget *parent, const QStringList &fontList, const QString& frameLabel, bool fg, bool defaultFont, int visibleListSize) : QWidget(parent), mFgColourButton(0), mReadOnly(false) { QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); topLayout->setSpacing(KDialog::spacingHint()); QWidget* page = this; if (!frameLabel.isNull()) { page = new QGroupBox(frameLabel, this); topLayout->addWidget(page); topLayout = new QVBoxLayout(page); topLayout->setMargin(KDialog::marginHint()); topLayout->setSpacing(KDialog::spacingHint()); } QHBoxLayout* hlayout = new QHBoxLayout(); hlayout->setMargin(0); topLayout->addLayout(hlayout); QVBoxLayout* colourLayout = new QVBoxLayout(); colourLayout->setMargin(0); hlayout->addLayout(colourLayout); if (fg) { KHBox* box = new KHBox(page); // to group widgets for QWhatsThis text box->setMargin(0); box->setSpacing(KDialog::spacingHint()/2); colourLayout->addWidget(box); QLabel* label = new QLabel(i18nc("@label:listbox", "Foreground color:"), box); box->setStretchFactor(new QWidget(box), 0); mFgColourButton = new ColourButton(box); connect(mFgColourButton, SIGNAL(changed(const QColor&)), SLOT(setSampleColour())); label->setBuddy(mFgColourButton); box->setWhatsThis(i18nc("@info:whatsthis", "Select the alarm message foreground color")); } KHBox* box = new KHBox(page); // to group widgets for QWhatsThis text box->setMargin(0); box->setSpacing(KDialog::spacingHint()/2); colourLayout->addWidget(box); QLabel* label = new QLabel(i18nc("@label:listbox", "Background color:"), box); box->setStretchFactor(new QWidget(box), 0); mBgColourButton = new ColourButton(box); connect(mBgColourButton, SIGNAL(changed(const QColor&)), SLOT(setSampleColour())); label->setBuddy(mBgColourButton); box->setWhatsThis(i18nc("@info:whatsthis", "Select the alarm message background color")); hlayout->addStretch(); if (defaultFont) { QHBoxLayout* layout = new QHBoxLayout(); layout->setMargin(0); topLayout->addLayout(layout); mDefaultFont = new CheckBox(i18nc("@option:check", "Use default font"), page); mDefaultFont->setMinimumSize(mDefaultFont->sizeHint()); connect(mDefaultFont, SIGNAL(toggled(bool)), SLOT(slotDefaultFontToggled(bool))); mDefaultFont->setWhatsThis(i18nc("@info:whatsthis", "Check to use the default font current at the time the alarm is displayed.")); layout->addWidget(mDefaultFont); layout->addWidget(new QWidget(page)); // left adjust the widget } else mDefaultFont = 0; mFontChooser = new KFontChooser(page, KFontChooser::DisplayFrame, fontList, visibleListSize); mFontChooser->installEventFilter(this); // for read-only mode QList<QWidget*> kids = mFontChooser->findChildren<QWidget*>(); for (int i = 0, end = kids.count(); i < end; ++i) kids[i]->installEventFilter(this); topLayout->addWidget(mFontChooser); slotDefaultFontToggled(false); }
ActionWidget::ActionWidget( const ActionList *list, ConfigDialog* configWidget, QWidget *parent, const char *name ) : KVBox( parent ), advancedWidget( 0L ) { setObjectName(name); Q_ASSERT( list != 0L ); QLabel *lblAction = new QLabel( i18n("Action &list (right click to add/remove commands):"), this ); listView = new ListView( configWidget, this ); lblAction->setBuddy( listView ); listView->addColumn( i18n("Regular Expression (see http://doc.trolltech.com/qregexp.html#details)") ); listView->addColumn( i18n("Description") ); listView->setRenameable(0); listView->setRenameable(1); listView->setItemsRenameable( true ); listView->setItemsMovable( false ); // listView->setAcceptDrops( true ); // listView->setDropVisualizer( true ); // listView->setDragEnabled( true ); listView->setRootIsDecorated( true ); listView->setMultiSelection( false ); listView->setAllColumnsShowFocus( true ); listView->setSelectionMode( Q3ListView::Single ); connect( listView, SIGNAL(executed( Q3ListViewItem*, const QPoint&, int )), SLOT( slotItemChanged( Q3ListViewItem*, const QPoint& , int ) )); connect( listView, SIGNAL( selectionChanged ( Q3ListViewItem * )), SLOT(selectionChanged ( Q3ListViewItem * ))); connect(listView, SIGNAL(contextMenu(K3ListView *, Q3ListViewItem *, const QPoint&)), SLOT( slotContextMenu(K3ListView*, Q3ListViewItem*, const QPoint&))); ClipAction *action = 0L; ClipCommand *command = 0L; Q3ListViewItem *item = 0L; Q3ListViewItem *child = 0L; Q3ListViewItem *after = 0L; // QListView's default inserting really sucks ActionListIterator it( *list ); const QPixmap& doc = SmallIcon( "misc" ); const QPixmap& exec = SmallIcon( "exec" ); for ( action = it.current(); action; action = ++it ) { item = new Q3ListViewItem( listView, after, action->regExp(), action->description() ); item->setPixmap( 0, doc ); Q3PtrListIterator<ClipCommand> it2( action->commands() ); for ( command = it2.current(); command; command = ++it2 ) { child = new Q3ListViewItem( item, after, command->command, command->description); if ( command->pixmap.isEmpty() ) child->setPixmap( 0, exec ); else child->setPixmap( 0, SmallIcon( command->pixmap ) ); after = child; } after = item; } listView->setSorting( -1 ); // newly inserted items just append unsorted cbUseGUIRegExpEditor = new QCheckBox( i18n("&Use graphical editor for editing regular expressions" ), this ); if ( KServiceTypeTrader::self()->query("KRegExpEditor/KRegExpEditor").isEmpty() ) { cbUseGUIRegExpEditor->hide(); cbUseGUIRegExpEditor->setChecked( false ); } KHBox *box = new KHBox( this ); box->setSpacing( KDialog::spacingHint() ); QPushButton *button = new QPushButton( i18n("&Add Action"), box ); connect( button, SIGNAL( clicked() ), SLOT( slotAddAction() )); delActionButton = new QPushButton( i18n("&Delete Action"), box ); connect( delActionButton, SIGNAL( clicked() ), SLOT( slotDeleteAction() )); QLabel *label = new QLabel(i18n("Click on a highlighted item's column to change it. \"%s\" in a command will be replaced with the clipboard contents."), box); label->setAlignment( Qt::AlignLeft | Qt::AlignVCenter ); label->setWordWrap( true ); box->setStretchFactor( label, 5 ); box = new KHBox( this ); QPushButton *advanced = new QPushButton( i18n("Advanced..."), box ); advanced->setFixedSize( advanced->sizeHint() ); connect( advanced, SIGNAL( clicked() ), SLOT( slotAdvanced() )); (void) new QWidget( box ); // spacer delActionButton->setEnabled(listView->currentItem () !=0); }
DynamicCategory::DynamicCategory( QWidget* parent ) : QWidget( parent ) , m_biasListView( 0 ) , m_biasModel( 0 ) , m_biasDelegate( 0 ) { bool enabled = AmarokConfig::dynamicMode(); setContentsMargins(0,0,0,0); m_vLayout = new QVBoxLayout( this ); m_onOffCheckbox = new QCheckBox( this ); m_onOffCheckbox->setIcon( KIcon( "dynamic-amarok" ) ); m_onOffCheckbox->setText( i18n( "On" ) ); m_onOffCheckbox->setToolTip( i18n( "Turn dynamic mode on." ) ); m_onOffCheckbox->setCheckable( true ); m_onOffCheckbox->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed ); QObject::connect( m_onOffCheckbox, SIGNAL( toggled( bool ) ), this, SLOT( OnOff ( bool ) ) ); QObject::connect( (const QObject*)Amarok::actionCollection()->action( "playlist_clear" ), SIGNAL( triggered( bool ) ), this, SLOT( playlistCleared() ) ); m_repopulateButton = new QPushButton( this ); m_repopulateButton->setText( i18n("Repopulate") ); m_repopulateButton->setToolTip( i18n("Replace the upcoming tracks with fresh ones.") ); m_repopulateButton->setIcon( KIcon( "view-refresh-amarok" ) ); m_repopulateButton->setEnabled( enabled ); m_repopulateButton->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ) ); QObject::connect( m_repopulateButton, SIGNAL( clicked(bool) ), The::playlistActions(), SLOT( repopulateDynamicPlaylist() ) ); KHBox* presetLayout = new KHBox( this ); QLabel* presetLabel = new QLabel( i18n( "Playlist:" ), presetLayout ); m_presetComboBox = new KComboBox( presetLayout ); m_presetComboBox->setPalette( QApplication::palette() ); DynamicModel::instance()->loadPlaylists(); m_presetComboBox->setModel( DynamicModel::instance() ); connect( DynamicModel::instance(), SIGNAL( changeActive( int ) ), m_presetComboBox, SLOT(setCurrentIndex(int)) ); connect( DynamicModel::instance(), SIGNAL( enableDynamicMode( bool ) ), SLOT(enableDynamicMode(bool)) ); connect( m_presetComboBox, SIGNAL(currentIndexChanged( int ) ), this, SLOT(playlistSelectionChanged( int ) ) ); presetLabel->setBuddy( m_presetComboBox ); presetLayout->setStretchFactor( m_presetComboBox, 1 ); KToolBar* presetToolbar = new KToolBar( presetLayout ); presetToolbar->setToolButtonStyle( Qt::ToolButtonIconOnly ); presetToolbar->setMovable( false ); presetToolbar->setFloatable( false ); presetToolbar->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Preferred ); m_saveButton = new QToolButton( presetToolbar ); //m_saveButton->setText( i18n("Save") ); m_saveButton->setIcon( KIcon( "document-save-amarok" ) ); m_saveButton->setToolTip( i18n( "Save the preset." ) ); presetToolbar->addWidget( m_saveButton ); connect( m_saveButton, SIGNAL( clicked( bool ) ), SLOT( save() ) ); m_deleteButton = new QToolButton( presetToolbar ); //m_deleteButton->setText( i18n("Delete") ); m_deleteButton->setEnabled( false ); m_deleteButton->setIcon( KIcon( "edit-delete-amarok" ) ); m_deleteButton->setToolTip( i18n( "Delete the preset.") ); presetToolbar->addWidget( m_deleteButton ); connect( m_deleteButton, SIGNAL(clicked(bool)), DynamicModel::instance(), SLOT(removeActive()) ); m_biasListView = new QListView( this ); m_biasListView->setFrameShape( QFrame::NoFrame ); m_biasListView->setAlternatingRowColors( true ); The::paletteHandler()->updateItemView( m_biasListView ); connect( The::paletteHandler(), SIGNAL( newPalette( const QPalette & ) ), SLOT( newPalette( const QPalette & ) ) ); m_biasModel = new DynamicBiasModel( m_biasListView ); m_biasListView->setModel( m_biasModel ); connect( m_biasModel, SIGNAL(playlistModified(Dynamic::BiasedPlaylistPtr)), DynamicModel::instance(), SLOT(playlistModified(Dynamic::BiasedPlaylistPtr)) ); m_biasDelegate = new DynamicBiasDelegate( m_biasListView ); m_biasListView->setItemDelegate( m_biasDelegate ); m_vLayout->addWidget( m_onOffCheckbox ); m_vLayout->addWidget( m_repopulateButton ); m_vLayout->addWidget( presetLayout ); m_vLayout->addWidget( m_biasListView ); this->setLayout( m_vLayout ); int index = DynamicModel::instance()->playlistIndex( AmarokConfig::lastDynamicMode() ); debug() << "Setting index: " << index; if( index >= 0 ) { m_presetComboBox->setCurrentIndex( index ); playlistSelectionChanged( index ); } else { m_presetComboBox->setCurrentIndex( 0 ); playlistSelectionChanged( 0 ); } m_onOffCheckbox->setChecked( AmarokConfig::dynamicMode() ); }
OcrEngine::EngineError KadmosDialog::setupGui() { OcrEngine::EngineError err = OcrBaseDialog::setupGui(); // setupPreprocessing( addVBoxPage( i18n("Preprocessing"))); // setupSegmentation( addVBoxPage( i18n("Segmentation"))); // setupClassification( addVBoxPage( i18n("Classification"))); /* continue page setup on the first page */ KVBox *page = new KVBox(this); // FIXME: dynamic classifier reading. new QLabel(i18n("Please classify the font type and language of the text on the image:"), page); KHBox *locBox = new KHBox( page ); m_bbFont = new Q3ButtonGroup(1, Qt::Horizontal, i18n("Font Type Selection"), locBox); m_rbMachine = new QRadioButton( i18n("Machine print"), m_bbFont ); m_rbHand = new QRadioButton( i18n("Hand writing"), m_bbFont ); m_rbNorm = new QRadioButton( i18n("Norm font"), m_bbFont ); m_gbLang = new Q3GroupBox(1, Qt::Horizontal, i18n("Country"), locBox); m_cbLang = new QComboBox( m_gbLang ); m_cbLang->setItemText(m_cbLang->currentIndex(), KLocale::defaultCountry()); connect( m_bbFont, SIGNAL(clicked(int)), this, SLOT(slFontChanged(int) )); m_rbMachine->setChecked(true); /* --- */ KHBox *innerBox = new KHBox( page ); innerBox->setSpacing( KDialog::spacingHint()); Q3ButtonGroup *cbGroup = new Q3ButtonGroup( 1, Qt::Horizontal, i18n("OCR Modifier"), innerBox ); Q_CHECK_PTR(cbGroup); m_cbNoise = new QCheckBox( i18n( "Enable automatic noise reduction" ), cbGroup ); m_cbAutoscale = new QCheckBox( i18n( "Enable automatic scaling"), cbGroup ); addExtraSetupWidget(page); if( err != OcrEngine::ENG_OK ) { enableFields(false); enableButton(User1, false ); } if( m_ttfClassifier.count() == 0 ) { m_rbMachine->setEnabled(false); } if( m_handClassifier.count() == 0 ) { m_rbHand->setEnabled(false); } if( !m_haveNorm ) m_rbNorm->setEnabled(false); if( (m_ttfClassifier.count() + m_handClassifier.count()) == 0 && ! m_haveNorm ) { KMessageBox::error(0, i18n("The classifier files for KADMOS could not be found.\n" "OCR with KADMOS will not be possible.\n\n" "Change the OCR engine in the preferences dialog."), i18n("Installation Error") ); err = OcrEngine::ENG_BAD_SETUP; } else slotFontChanged( 0 ); // Load machine print font language list ocrShowInfo(QString::null); return err; }
void TokenWithLayout::fillMenu( QMenu * menu ) { DEBUG_BLOCK KAction *boldAction = new KAction( KIcon( "format-text-bold"), i18n( "Bold" ), menu ); boldAction->setObjectName( ActionBoldName ); boldAction->setCheckable( true ); boldAction->setChecked( m_bold ); KAction *italicAction = new KAction( KIcon( "format-text-italic"), i18n( "Italic" ), menu ); italicAction->setObjectName( ActionItalicName ); italicAction->setCheckable( true ); italicAction->setChecked( m_italic ); KAction *alignLeftAction = new KAction( KIcon( "format-justify-left"), i18n( "Left" ), menu ); KAction *alignCenterAction = new KAction( KIcon( "format-justify-center"), i18n( "Center" ), menu ); KAction *alignRightAction = new KAction( KIcon( "format-justify-right"), i18n( "Right" ), menu ); alignLeftAction->setObjectName( ActionAlignLeftName ); alignLeftAction->setCheckable( true ); alignCenterAction->setObjectName( ActionAlignCenterName ); alignCenterAction->setCheckable( true ); alignRightAction->setObjectName( ActionAlignRightName ); alignRightAction->setCheckable( true ); if ( m_alignment & Qt::AlignLeft ) alignLeftAction->setChecked( true ); else if ( m_alignment & Qt::AlignHCenter ) alignCenterAction->setChecked( true ); else if ( m_alignment & Qt::AlignRight ) alignRightAction->setChecked( true ); QActionGroup *alignmentGroup = new QActionGroup( menu ); alignmentGroup->addAction( alignLeftAction ); alignmentGroup->addAction( alignCenterAction ); alignmentGroup->addAction( alignRightAction ); menu->addAction( boldAction ); menu->addAction( italicAction ); menu->addSeparator()->setText( i18n( "Alignment" ) ); menu->addAction( alignLeftAction ); menu->addAction( alignCenterAction ); menu->addAction( alignRightAction ); menu->addSeparator()->setText( i18n( "Width" ) ); menu->adjustSize(); int orgHeight = menu->height(); KHBox * sliderBox = new KHBox( menu ); sliderBox->setFixedWidth( menu->width() - 4 ); sliderBox->move( sliderBox->pos().x() + 2, orgHeight ); QSlider * slider = new QSlider( Qt::Horizontal, sliderBox ); slider->setMaximum( 100 ); slider->setMinimum( 0 ); // this should really not be done here as it makes upward assumptions // it was however done in setWidth with similar upward assumptions as well // solution: the popup stuff -iff- should be done in the dialog or the editWidget if ( parentWidget() ) { if ( TokenDropTarget *editWidget = qobject_cast<TokenDropTarget*>( parentWidget() ) ) { qreal spareWidth = 100.0; int row = editWidget->row( this ); if ( row > -1 ) { QList<Token*> tokens = editWidget->drags( row ); foreach (Token *t, tokens) { if (t == this) continue; if ( TokenWithLayout *twl = qobject_cast<TokenWithLayout*>( t ) ) spareWidth -= twl->width() * 100.0; } } int max = qMax( spareWidth, 0.0 ); debug() << "slider max value: " << max; if ( max >= m_width * 100.0 ) slider->setMaximum( qMax( spareWidth, 0.0 ) ); else slider->setMaximum( m_width * 100.0 ); }
void KasPrefsDialog::addLookPage() { KVBox *lookPage = new KVBox( this ); KPageWidgetItem *item = addPage( lookPage, i18n("Appearance") ); item->setIcon( Icon( "appearance" ) ); // // Item size // Q3Grid *itemSizeBox = new Q3Grid( 2, lookPage ); itemSizeBox->setSpacing( spacingHint() ); itemSizeBox->setWhatsThis( i18n( "Specifies the size of the task items." ) ); QLabel *itemSizeLabel = new QLabel( i18n("Si&ze:"), itemSizeBox ); itemSizeCombo = new QComboBox( itemSizeBox ); itemSizeCombo->insertItem( i18n( "Enormous" ) ); itemSizeCombo->insertItem( i18n( "Huge" ) ); itemSizeCombo->insertItem( i18n( "Large" ) ); itemSizeCombo->insertItem( i18n( "Medium" ) ); itemSizeCombo->insertItem( i18n( "Small" ) ); itemSizeCombo->insertItem( i18n( "Custom" ) ); itemSizeLabel->setBuddy( itemSizeCombo ); connect( itemSizeCombo, SIGNAL( activated( int ) ), kasbar, SLOT( setItemSize( int ) ) ); connect( itemSizeCombo, SIGNAL( activated( int ) ), SLOT( itemSizeChanged( int ) ) ); new QWidget( itemSizeBox ); customSize = new QSpinBox( 5, 1000, 1, itemSizeBox ); customSize->setValue( kasbar->itemExtent() ); connect( customSize, SIGNAL( valueChanged( int ) ), kasbar, SLOT( setItemExtent( int ) ) ); connect( customSize, SIGNAL( valueChanged( int ) ), kasbar, SLOT( customSizeChanged( int ) ) ); int sz = kasbar->itemSize(); itemSizeCombo->setCurrentItem( sz ); customSize->setEnabled( sz == KasBar::Custom ); // // Boxes per line // KHBox *maxBoxesBox = new KHBox( lookPage ); maxBoxesBox->setWhatsThis( i18n( "Specifies the maximum number of items that should be placed in a line " "before starting a new row or column. If the value is 0 then all the " "available space will be used." ) ); QLabel *maxBoxesLabel = new QLabel( i18n("Bo&xes per line: "), maxBoxesBox ); KConfig *conf = kasbar->config(); if ( conf ) conf->setGroup( "Layout" ); maxBoxesSpin = new KIntSpinBox( 0, 50, 1, conf ? conf->readEntry( "MaxBoxes", 0 ) : 11, maxBoxesBox ); connect( maxBoxesSpin, SIGNAL( valueChanged( int ) ), kasbar, SLOT( setMaxBoxes( int ) ) ); maxBoxesLabel->setBuddy( maxBoxesSpin ); // // Mode // detachedCheck = new QCheckBox( i18n("&Detach from screen edge"), lookPage ); detachedCheck->setWhatsThis( i18n( "Detaches the bar from the screen edge and makes it draggable." ) ); detachedCheck->setEnabled( !kasbar->isStandAlone() ); detachedCheck->setChecked( kasbar->isDetached() ); connect( detachedCheck, SIGNAL( toggled(bool) ), kasbar, SLOT( setDetached(bool) ) ); (void) new QWidget( lookPage, "spacer" ); (void) new QWidget( lookPage, "spacer" ); (void) new QWidget( lookPage, "spacer" ); }
AlarmDialog::AlarmDialog( CalendarSupport::Calendar *calendar, QWidget *parent ) : KDialog( parent, Qt::WindowStaysOnTopHint ), mCalendar( calendar ), mSuspendTimer( this ) { // User1 => Edit... // User2 => Dismiss All // User3 => Dismiss Selected // Ok => Suspend connect( calendar, SIGNAL(calendarChanged()), SLOT(slotCalendarChanged()) ); KIconLoader::global()->addAppDir( "korgac" ); KSharedConfig::Ptr config = KGlobal::config(); KConfigGroup generalConfig( config, "General" ); QPoint pos = generalConfig.readEntry( "Position", QPoint( 0, 0 ) ); QWidget *topBox = new QWidget( this ); if ( !pos.isNull() ) { mPos = pos; topBox->move( mPos ); } setMainWidget( topBox ); setCaption( i18nc( "@title:window", "Reminders" ) ); setWindowIcon( KIcon( "korgac" ) ); setButtons( Ok | User1 | User2 | User3 ); setDefaultButton( NoDefault ); setButtonText( User3, i18nc( "@action:button", "Dismiss Reminder" ) ); setButtonToolTip( User3, i18nc( "@info:tooltip", "Dismiss the reminders for the selected incidences" ) ); setButtonText( User2, i18nc( "@action:button", "Dismiss All" ) ); setButtonToolTip( User2, i18nc( "@info:tooltip", "Dismiss the reminders for all listed incidences" ) ); setButtonText( User1, i18nc( "@action:button", "Edit..." ) ); setButtonToolTip( User1, i18nc( "@info:tooltip", "Edit the selected incidence" ) ); setButtonText( Ok, i18nc( "@action:button", "Suspend" ) ); setButtonToolTip( Ok, i18nc( "@info:tooltip", "Suspend the reminders for the selected incidences " "by the specified interval" ) ); // Try to keep the dialog small and non-obtrusive. setMinimumWidth( 575 ); setMinimumHeight( 300 ); QVBoxLayout *mTopLayout = new QVBoxLayout( topBox ); QLabel *label = new QLabel( i18nc( "@label", "Reminders: " "Click on a title to toggle the details viewer for that item" ), topBox ); mTopLayout->addWidget( label ); mIncidenceTree = new QTreeWidget( topBox ); mIncidenceTree->setColumnCount( 3 ); mIncidenceTree->setSortingEnabled( true ); const QStringList headerLabels = ( QStringList( i18nc( "@title:column reminder title", "Title" ) ) << i18nc( "@title:column happens at date/time", "Date Time" ) << i18nc( "@title:column trigger date/time", "Trigger Time" ) ); mIncidenceTree->setHeaderLabels( headerLabels ); mIncidenceTree->headerItem()->setToolTip( 0, i18nc( "@info:tooltip", "The event or to-do title" ) ); mIncidenceTree->headerItem()->setToolTip( 1, i18nc( "@info:tooltip", "The reminder is set for this date/time" ) ); mIncidenceTree->headerItem()->setToolTip( 2, i18nc( "@info:tooltip", "The date/time the reminder was triggered" ) ); mIncidenceTree->setWordWrap( true ); mIncidenceTree->setAllColumnsShowFocus( true ); mIncidenceTree->setSelectionMode( QAbstractItemView::ExtendedSelection ); mIncidenceTree->setRootIsDecorated( false ); mTopLayout->addWidget( mIncidenceTree ); connect( mIncidenceTree, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), SLOT(update()) ); connect( mIncidenceTree, SIGNAL(itemActivated(QTreeWidgetItem*,int)), SLOT(update()) ); connect( mIncidenceTree, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(toggleDetails(QTreeWidgetItem*,int)) ); connect( mIncidenceTree, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(update()) ); connect( mIncidenceTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), SLOT(edit()) ); connect( mIncidenceTree, SIGNAL(itemSelectionChanged()), SLOT(update()) ); mDetailView = new CalendarSupport::IncidenceViewer( mCalendar, topBox ); QString s; s = i18nc( "@info default incidence details string", "<emphasis>Select an event or to-do from the list above " "to view its details here.</emphasis>" ); mDetailView->setDefaultMessage( s ); mTopLayout->addWidget( mDetailView ); mDetailView->hide(); mLastItem = 0; KHBox *suspendBox = new KHBox( topBox ); suspendBox->setSpacing( spacingHint() ); mTopLayout->addWidget( suspendBox ); QLabel *l = new QLabel( i18nc( "@label:spinbox", "Suspend &duration:" ), suspendBox ); mSuspendSpin = new QSpinBox( suspendBox ); mSuspendSpin->setRange( 1, 9999 ); mSuspendSpin->setValue( defSuspendVal ); // default suspend duration mSuspendSpin->setToolTip( i18nc( "@info:tooltip", "Suspend the reminders by this amount of time" ) ); mSuspendSpin->setWhatsThis( i18nc( "@info:whatsthis", "Each reminder for the selected incidences will be suspended " "by this number of time units. You can choose the time units " "(typically minutes) in the adjacent selector." ) ); l->setBuddy( mSuspendSpin ); mSuspendUnit = new KComboBox( suspendBox ); mSuspendUnit->addItem( i18nc( "@item:inlistbox suspend in terms of minutes", "minute(s)" ) ); mSuspendUnit->addItem( i18nc( "@item:inlistbox suspend in terms of hours", "hour(s)" ) ); mSuspendUnit->addItem( i18nc( "@item:inlistbox suspend in terms of days", "day(s)" ) ); mSuspendUnit->addItem( i18nc( "@item:inlistbox suspend in terms of weeks", "week(s)" ) ); mSuspendUnit->setToolTip( i18nc( "@info:tooltip", "Suspend the reminders using this time unit" ) ); mSuspendUnit->setWhatsThis( i18nc( "@info:whatsthis", "Each reminder for the selected incidences will be suspended " "using this time unit. You can set the number of time units " "in the adjacent number entry input." ) ); mSuspendUnit->setCurrentIndex( defSuspendUnit ); connect( &mSuspendTimer, SIGNAL(timeout()), SLOT(wakeUp()) ); connect( this, SIGNAL(okClicked()), this, SLOT(slotOk()) ); connect( this, SIGNAL(user1Clicked()), this, SLOT(slotUser1()) ); connect( this, SIGNAL(user2Clicked()), this, SLOT(slotUser2()) ); connect( this, SIGNAL(user3Clicked()), this, SLOT(slotUser3()) ); }
StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) : SettingsPageBase(parent), m_url(url), m_homeUrl(0), m_splitView(0), m_editableUrl(0), m_showFullPath(0), m_filterBar(0) { const int spacing = KDialog::spacingHint(); QVBoxLayout* topLayout = new QVBoxLayout(this); KVBox* vBox = new KVBox(this); vBox->setSpacing(spacing); // create 'Home URL' editor QGroupBox* homeBox = new QGroupBox(i18nc("@title:group", "Home Folder"), vBox); KHBox* homeUrlBox = new KHBox(homeBox); homeUrlBox->setSpacing(spacing); new QLabel(i18nc("@label:textbox", "Location:"), homeUrlBox); m_homeUrl = new KLineEdit(homeUrlBox); m_homeUrl->setClearButtonShown(true); QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox); #ifndef QT_NO_ACCESSIBILITY selectHomeUrlButton->setAccessibleName(i18nc("@action:button", "Select Home Location")); #endif connect(selectHomeUrlButton, SIGNAL(clicked()), this, SLOT(selectHomeUrl())); KHBox* buttonBox = new KHBox(homeBox); buttonBox->setSpacing(spacing); QPushButton* useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"), buttonBox); connect(useCurrentButton, SIGNAL(clicked()), this, SLOT(useCurrentLocation())); QPushButton* useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location"), buttonBox); connect(useDefaultButton, SIGNAL(clicked()), this, SLOT(useDefaultLocation())); QVBoxLayout* homeBoxLayout = new QVBoxLayout(homeBox); homeBoxLayout->addWidget(homeUrlBox); homeBoxLayout->addWidget(buttonBox); // create 'Split view', 'Show full path', 'Editable location' and 'Filter bar' checkboxes m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode"), vBox); m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), vBox); m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"), vBox); m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"), vBox); // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(vBox); topLayout->addWidget(vBox); loadSettings(); connect(m_homeUrl, SIGNAL(textChanged(QString)), this, SLOT(slotSettingsChanged())); connect(m_splitView, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); connect(m_editableUrl, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); connect(m_showFullPath, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); connect(m_filterBar, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); }
OptimizePage::OptimizePage(Manager* const mngr, KAssistantDialog* const dlg) : KPWizardPage(dlg, i18n("<b>Optimization</b>")), d(new OptimizePagePriv) { d->mngr = mngr; KVBox* vbox = new KVBox(this); d->progressTimer = new QTimer(this); d->title = new QLabel(vbox); d->title->setOpenExternalLinks(true); d->title->setWordWrap(true); KConfig config("kipirc"); KConfigGroup group = config.group(QString("Panorama Settings")); d->horizonCheckbox = new QCheckBox(i18n("Level horizon"), vbox); d->horizonCheckbox->setChecked(group.readEntry("Horizon", true)); d->horizonCheckbox->setToolTip(i18n("Detect the horizon and adapt the project to make it horizontal.")); d->horizonCheckbox->setWhatsThis(i18n("<b>Level horizon</b>: Detect the horizon and adapt the projection so that " "the detected horizon is an horizontal line in the final panorama")); d->projectionAndSizeCheckbox = new QCheckBox(i18n("Automatic projection and crop"), vbox); d->projectionAndSizeCheckbox->setChecked(group.readEntry("Output Projection And Size", true)); d->projectionAndSizeCheckbox->setToolTip(i18n("Adapt the projection of the panorama and the cropping on the resulting " "projection so that every photo fits in the resulting panorama.")); d->projectionAndSizeCheckbox->setWhatsThis(i18n("<b>Automatic projection and crop</b>: Automatically adapt the projection " "and the crop of the panorama to get every photos into the panorama.")); d->preprocessResults = new QLabel(vbox); QLabel* space1 = new QLabel(vbox); vbox->setStretchFactor(space1, 2); KHBox* hbox = new KHBox(vbox); d->detailsBtn = new QPushButton(hbox); d->detailsBtn->setText(i18n("Details...")); d->detailsBtn->hide(); QLabel* space2 = new QLabel(hbox); hbox->setStretchFactor(space2, 10); QLabel* space3 = new QLabel(vbox); vbox->setStretchFactor(space3, 2); d->progressLabel = new QLabel(vbox); d->progressLabel->setAlignment(Qt::AlignCenter); QLabel* space4 = new QLabel(vbox); vbox->setStretchFactor(space4, 10); vbox->setSpacing(KDialog::spacingHint()); vbox->setMargin(KDialog::spacingHint()); setPageWidget(vbox); resetTitle(); QPixmap leftPix = KStandardDirs::locate("data", "kipiplugin_panorama/pics/assistant-hugin.png"); setLeftBottomPix(leftPix.scaledToWidth(128, Qt::SmoothTransformation)); // connect(d->mngr->thread(), SIGNAL(starting(KIPIPanoramaPlugin::ActionData)), // this, SLOT(slotAction(KIPIPanoramaPlugin::ActionData))); connect(d->progressTimer, SIGNAL(timeout()), this, SLOT(slotProgressTimerDone())); connect(d->detailsBtn, SIGNAL(clicked()), this, SLOT(slotShowDetails())); }
K3b::AudioBurnDialog::AudioBurnDialog(K3b::AudioDoc* _doc, QWidget *parent ) : K3b::ProjectBurnDialog( _doc, parent ), m_doc(_doc) { prepareGui(); setTitle( i18n("Audio Project"), i18np("1 track (%2 minutes)", "%1 tracks (%2 minutes)", m_doc->numOfTracks(),m_doc->length().toString()) ); QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); m_optionGroupLayout->addItem( spacer ); // create cd-text page m_cdtextWidget = new K3b::AudioCdTextWidget( this ); addPage( m_cdtextWidget, i18n("CD-Text") ); // create advanced tab // ---------------------------------------------------------- QWidget* advancedTab = new QWidget( this ); QGridLayout* advancedTabGrid = new QGridLayout( advancedTab ); QGroupBox* advancedSettingsGroup = new QGroupBox( i18n("Settings"), advancedTab ); m_checkNormalize = K3b::StdGuiItems::normalizeCheckBox( advancedSettingsGroup ); QVBoxLayout* advancedSettingsGroupLayout = new QVBoxLayout( advancedSettingsGroup ); advancedSettingsGroupLayout->addWidget( m_checkNormalize ); QGroupBox* advancedGimmickGroup = new QGroupBox( i18n("Gimmicks"), advancedTab ); m_checkHideFirstTrack = new QCheckBox( i18n( "Hide first track" ), advancedGimmickGroup ); QVBoxLayout* advancedGimmickGroupLayout = new QVBoxLayout( advancedGimmickGroup ); advancedGimmickGroupLayout->addWidget( m_checkHideFirstTrack ); m_audioRippingGroup = new QGroupBox( i18n("Audio Ripping"), advancedTab ); KHBox* box = new KHBox( m_audioRippingGroup ); box->setStretchFactor(new QLabel( i18n("Paranoia mode:"), box ), 1 ); m_comboParanoiaMode = K3b::StdGuiItems::paranoiaModeComboBox( box ); box = new KHBox( m_audioRippingGroup ); box->setStretchFactor( new QLabel( i18n("Read retries:"), box ), 1 ); m_spinAudioRippingReadRetries = new QSpinBox( box ); m_spinAudioRippingReadRetries->setRange( 1, 128 ); m_checkAudioRippingIgnoreReadErrors = new QCheckBox( i18n("Ignore read errors"), m_audioRippingGroup ); QVBoxLayout* audioRippingGroupLayout = new QVBoxLayout( m_audioRippingGroup ); audioRippingGroupLayout->addWidget( box ); audioRippingGroupLayout->addWidget( m_checkAudioRippingIgnoreReadErrors ); advancedTabGrid->addWidget( advancedSettingsGroup, 0, 0 ); advancedTabGrid->addWidget( advancedGimmickGroup, 1, 0 ); advancedTabGrid->addWidget( m_audioRippingGroup, 2, 0 ); advancedTabGrid->setRowStretch( 3, 1 ); addPage( advancedTab, i18n("Advanced") ); connect( m_checkNormalize, SIGNAL(toggled(bool)), this, SLOT(slotNormalizeToggled(bool)) ); connect( m_checkCacheImage, SIGNAL(toggled(bool)), this, SLOT(slotCacheImageToggled(bool)) ); // ToolTips // ------------------------------------------------------------------------- m_checkHideFirstTrack->setToolTip( i18n("Hide the first track in the first pregap") ); // What's This info // ------------------------------------------------------------------------- m_checkHideFirstTrack->setWhatsThis( i18n("<p>If this option is checked K3b will <em>hide</em> the first track." "<p>The audio CD standard uses pregaps before every track on the CD. " "By default these last for 2 seconds and are silent. In DAO mode it " "is possible to have longer pregaps that contain some audio. In this case " "the first pregap will contain the complete first track." "<p>You will need to seek back from the beginning of the CD to listen to " "the first track. Try it, it is quite amusing." "<p><b>This feature is only available in DAO mode when writing with cdrdao.") ); }
void AlarmTimeWidget::init(Mode mode, const QString& title) { static const QString recurText = i18nc("@info/plain", "If a recurrence is configured, the start date/time will be adjusted " "to the first recurrence on or after the entered date/time."); static const QString tzText = i18nc("@info/plain", "This uses KAlarm's default time zone, set in the Configuration dialog."); QWidget* topWidget; if (title.isEmpty()) topWidget = this; else { QBoxLayout* layout = new QVBoxLayout(this); layout->setMargin(0); layout->setSpacing(0); topWidget = new QGroupBox(title, this); layout->addWidget(topWidget); } mDeferring = mode & DEFER_TIME; mButtonGroup = new ButtonGroup(this); connect(mButtonGroup, SIGNAL(buttonSet(QAbstractButton*)), SLOT(slotButtonSet(QAbstractButton*))); QVBoxLayout* topLayout = new QVBoxLayout(topWidget); topLayout->setSpacing(KDialog::spacingHint()); topLayout->setMargin(title.isEmpty() ? 0 : KDialog::marginHint()); // At time radio button/label mAtTimeRadio = new RadioButton((mDeferring ? i18nc("@option:radio", "Defer to date/time:") : i18nc("@option:radio", "At date/time:")), topWidget); mAtTimeRadio->setFixedSize(mAtTimeRadio->sizeHint()); mAtTimeRadio->setWhatsThis(mDeferring ? i18nc("@info:whatsthis", "Reschedule the alarm to the specified date and time.") : i18nc("@info:whatsthis", "Specify the date, or date and time, to schedule the alarm.")); mButtonGroup->addButton(mAtTimeRadio); // Date edit box mDateEdit = new DateEdit(topWidget); connect(mDateEdit, SIGNAL(dateEntered(const QDate&)), SLOT(dateTimeChanged())); mDateEdit->setWhatsThis(i18nc("@info:whatsthis", "<para>Enter the date to schedule the alarm.</para>" "<para>%1</para>", (mDeferring ? tzText : recurText))); mAtTimeRadio->setFocusWidget(mDateEdit); // Time edit box and Any time checkbox KHBox* timeBox = new KHBox(topWidget); timeBox->setSpacing(2*KDialog::spacingHint()); mTimeEdit = new TimeEdit(timeBox); mTimeEdit->setFixedSize(mTimeEdit->sizeHint()); connect(mTimeEdit, SIGNAL(valueChanged(int)), SLOT(dateTimeChanged())); mTimeEdit->setWhatsThis(i18nc("@info:whatsthis", "<para>Enter the time to schedule the alarm.</para>" "<para>%1</para>" "<para>%2</para>", (mDeferring ? tzText : recurText), TimeSpinBox::shiftWhatsThis())); mAnyTime = -1; // current status is uninitialised if (mode == DEFER_TIME) { mAnyTimeAllowed = false; mAnyTimeCheckBox = 0; } else { mAnyTimeAllowed = true; mAnyTimeCheckBox = new CheckBox(i18nc("@option:check", "Any time"), timeBox); mAnyTimeCheckBox->setFixedSize(mAnyTimeCheckBox->sizeHint()); connect(mAnyTimeCheckBox, SIGNAL(toggled(bool)), SLOT(slotAnyTimeToggled(bool))); mAnyTimeCheckBox->setWhatsThis(i18nc("@info:whatsthis", "Check to specify only a date (without a time) for the alarm. The alarm will trigger at the first opportunity on the selected date.")); } // 'Time from now' radio button/label mAfterTimeRadio = new RadioButton((mDeferring ? i18nc("@option:radio", "Defer for time interval:") : i18nc("@option:radio", "Time from now:")), topWidget); mAfterTimeRadio->setFixedSize(mAfterTimeRadio->sizeHint()); mAfterTimeRadio->setWhatsThis(mDeferring ? i18nc("@info:whatsthis", "Reschedule the alarm for the specified time interval after now.") : i18nc("@info:whatsthis", "Schedule the alarm after the specified time interval from now.")); mButtonGroup->addButton(mAfterTimeRadio); // Delay time spin box mDelayTimeEdit = new TimeSpinBox(1, maxDelayTime, topWidget); mDelayTimeEdit->setValue(1439); mDelayTimeEdit->setFixedSize(mDelayTimeEdit->sizeHint()); connect(mDelayTimeEdit, SIGNAL(valueChanged(int)), SLOT(delayTimeChanged(int))); mDelayTimeEdit->setWhatsThis(mDeferring ? i18nc("@info:whatsthis", "<para>%1</para><para>%2</para>", i18n_TimeAfterPeriod(), TimeSpinBox::shiftWhatsThis()) : i18nc("@info:whatsthis", "<para>%1</para><para>%2</para><para>%3</para>", i18n_TimeAfterPeriod(), recurText, TimeSpinBox::shiftWhatsThis())); mAfterTimeRadio->setFocusWidget(mDelayTimeEdit); // Set up the layout, either narrow or wide QGridLayout* grid = new QGridLayout(); grid->setMargin(0); topLayout->addLayout(grid); if (mDeferring) { grid->addWidget(mAtTimeRadio, 0, 0); grid->addWidget(mDateEdit, 0, 1, Qt::AlignLeft); grid->addWidget(timeBox, 1, 1, Qt::AlignLeft); grid->setColumnStretch(2, 1); topLayout->addStretch(); QHBoxLayout* layout = new QHBoxLayout(); topLayout->addLayout(layout); layout->addWidget(mAfterTimeRadio); layout->addWidget(mDelayTimeEdit); layout->addStretch(); } else { grid->addWidget(mAtTimeRadio, 0, 0, Qt::AlignLeft); grid->addWidget(mDateEdit, 0, 1, Qt::AlignLeft); grid->addWidget(timeBox, 0, 2, Qt::AlignLeft); grid->setRowStretch(1, 1); grid->addWidget(mAfterTimeRadio, 2, 0, Qt::AlignLeft); grid->addWidget(mDelayTimeEdit, 2, 1, Qt::AlignLeft); // Time zone selection push button mTimeZoneButton = new PushButton(i18nc("@action:button", "Time Zone..."), topWidget); connect(mTimeZoneButton, SIGNAL(clicked()), SLOT(showTimeZoneSelector())); mTimeZoneButton->setWhatsThis(i18nc("@info:whatsthis", "Choose a time zone for this alarm which is different from the default time zone set in KAlarm's configuration dialog.")); grid->addWidget(mTimeZoneButton, 2, 2, 1, 2, Qt::AlignRight); grid->setColumnStretch(2, 1); topLayout->addStretch(); QHBoxLayout* layout = new QHBoxLayout(); topLayout->addLayout(layout); layout->setSpacing(2*KDialog::spacingHint()); // Time zone selector mTimeZoneBox = new KHBox(topWidget); // this is to control the QWhatsThis text display area mTimeZoneBox->setMargin(0); mTimeZoneBox->setSpacing(KDialog::spacingHint()); QLabel* label = new QLabel(i18nc("@label:listbox", "Time zone:"), mTimeZoneBox); mTimeZone = new TimeZoneCombo(mTimeZoneBox); mTimeZone->setMaxVisibleItems(15); connect(mTimeZone, SIGNAL(activated(int)), SLOT(slotTimeZoneChanged())); mTimeZoneBox->setWhatsThis(i18nc("@info:whatsthis", "Select the time zone to use for this alarm.")); label->setBuddy(mTimeZone); layout->addWidget(mTimeZoneBox); // Time zone checkbox mNoTimeZone = new CheckBox(i18nc("@option:check", "Ignore time zone"), topWidget); connect(mNoTimeZone, SIGNAL(toggled(bool)), SLOT(slotTimeZoneToggled(bool))); mNoTimeZone->setWhatsThis(i18nc("@info:whatsthis", "<para>Check to use the local computer time, ignoring time zones.</para>" "<para>You are recommended not to use this option if the alarm has a " "recurrence specified in hours/minutes. If you do, the alarm may " "occur at unexpected times after daylight saving time shifts.</para>")); layout->addWidget(mNoTimeZone); layout->addStretch(); // Initially show only the time zone button, not time zone selector mTimeZoneBox->hide(); mNoTimeZone->hide(); } // Initialise the radio button statuses mAtTimeRadio->setChecked(true); slotButtonSet(mAtTimeRadio); // Timeout every minute to update alarm time fields. MinuteTimer::connect(this, SLOT(updateTimes())); }