KOEditorDetails::KOEditorDetails( int spacing, QWidget *parent, const char *name ) : KOAttendeeEditor( parent, name), mDisableItemUpdate( false ) { QBoxLayout *topLayout = new QVBoxLayout( this ); topLayout->setSpacing( spacing ); initOrganizerWidgets( this, topLayout ); mListView = new KOAttendeeListView( this, "mListView" ); QWhatsThis::add( mListView, i18n("Displays information about current attendees. " "To edit an attendee, select it in this list " "and modify the values in the area below. " "Clicking on a column title will sort the list " "according to that column. The RSVP column " "indicates whether or not a response is requested " "from the attendee.") ); mListView->addColumn( i18n("Name"), 200 ); mListView->addColumn( i18n("Email"), 200 ); mListView->addColumn( i18n("Role"), 80 ); mListView->addColumn( i18n("Status"), 100 ); mListView->addColumn( i18n("RSVP"), 55 ); mListView->addColumn( i18n("Delegated to"), 120 ); mListView->addColumn( i18n("Delegated from" ), 120 ); mListView->setResizeMode( QListView::LastColumn ); if ( KOPrefs::instance()->mCompactDialogs ) { mListView->setFixedHeight( 78 ); } connect( mListView, SIGNAL( selectionChanged( QListViewItem * ) ), SLOT( updateAttendeeInput() ) ); #ifndef KORG_NODND connect( mListView, SIGNAL( dropped( Attendee * ) ), SLOT( slotInsertAttendee( Attendee * ) ) ); #endif topLayout->addWidget( mListView ); initEditWidgets( this, topLayout ); connect( mRemoveButton, SIGNAL(clicked()), SLOT(removeAttendee()) ); updateAttendeeInput(); }
KOEditorFreeBusy::KOEditorFreeBusy( int spacing, QWidget *parent, const char *name ) : KOAttendeeEditor( parent, name ) { QVBoxLayout *topLayout = new QVBoxLayout( this ); topLayout->setSpacing( spacing ); initOrganizerWidgets( this, topLayout ); // Label for status summary information // Uses the tooltip palette to highlight it mIsOrganizer = false; // Will be set later. This is just valgrind silencing mStatusSummaryLabel = new QLabel( this ); mStatusSummaryLabel->setPalette( QToolTip::palette() ); mStatusSummaryLabel->setFrameStyle( QFrame::Plain | QFrame::Box ); mStatusSummaryLabel->setLineWidth( 1 ); mStatusSummaryLabel->hide(); // Will be unhidden later if you are organizer topLayout->addWidget( mStatusSummaryLabel ); // The control panel for the gantt widget QBoxLayout *controlLayout = new QHBoxLayout( topLayout ); QString whatsThis = i18n("Sets the zoom level on the Gantt chart. " "'Hour' shows a range of several hours, " "'Day' shows a range of a few days, " "'Week' shows a range of a few months, " "and 'Month' shows a range of a few years, " "while 'Automatic' selects the range most " "appropriate for the current event or to-do."); QLabel *label = new QLabel( i18n( "Scale: " ), this ); QWhatsThis::add( label, whatsThis ); controlLayout->addWidget( label ); scaleCombo = new QComboBox( this ); QWhatsThis::add( scaleCombo, whatsThis ); scaleCombo->insertItem( i18n( "Hour" ) ); scaleCombo->insertItem( i18n( "Day" ) ); scaleCombo->insertItem( i18n( "Week" ) ); scaleCombo->insertItem( i18n( "Month" ) ); scaleCombo->insertItem( i18n( "Automatic" ) ); scaleCombo->setCurrentItem( 0 ); // start with "hour" connect( scaleCombo, SIGNAL( activated( int ) ), SLOT( slotScaleChanged( int ) ) ); controlLayout->addWidget( scaleCombo ); QPushButton *button = new QPushButton( i18n( "Center on Start" ), this ); QWhatsThis::add( button, i18n("Centers the Gantt chart on the start time " "and day of this event.") ); connect( button, SIGNAL( clicked() ), SLOT( slotCenterOnStart() ) ); controlLayout->addWidget( button ); button = new QPushButton( i18n( "Zoom to Fit" ), this ); QWhatsThis::add( button, i18n("Zooms the Gantt chart so that you can see the " "entire duration of the event on it.") ); connect( button, SIGNAL( clicked() ), SLOT( slotZoomToTime() ) ); controlLayout->addWidget( button ); controlLayout->addStretch( 1 ); button = new QPushButton( i18n( "Pick Date" ), this ); QWhatsThis::add( button, i18n("Moves the event to a date and time when all the " "attendees are free.") ); connect( button, SIGNAL( clicked() ), SLOT( slotPickDate() ) ); controlLayout->addWidget( button ); controlLayout->addStretch( 1 ); button = new QPushButton( i18n("Reload"), this ); QWhatsThis::add( button, i18n("Reloads Free/Busy data for all attendees from " "the corresponding servers.") ); controlLayout->addWidget( button ); connect( button, SIGNAL( clicked() ), SLOT( manualReload() ) ); mGanttView = new KDGanttView( this, "mGanttView" ); QWhatsThis::add( mGanttView, i18n("Shows the free/busy status of all attendees. " "Double-clicking on an attendees entry in the " "list will allow you to enter the location of their " "Free/Busy Information.") ); topLayout->addWidget( mGanttView ); // Remove the predefined "Task Name" column mGanttView->removeColumn( 0 ); mGanttView->addColumn( i18n("Attendee") ); if ( KOPrefs::instance()->mCompactDialogs ) { mGanttView->setFixedHeight( 78 ); } mGanttView->setHeaderVisible( true ); mGanttView->setScale( KDGanttView::Hour ); mGanttView->setShowHeaderPopupMenu( true, true, true, false, false, true ); // Initially, show 15 days back and forth // set start to even hours, i.e. to 12:AM 0 Min 0 Sec QDateTime horizonStart = QDateTime( QDateTime::currentDateTime() .addDays( -15 ).date() ); QDateTime horizonEnd = QDateTime::currentDateTime().addDays( 15 ); mGanttView->setHorizonStart( horizonStart ); mGanttView->setHorizonEnd( horizonEnd ); mGanttView->setCalendarMode( true ); //mGanttView->setDisplaySubitemsAsGroup( true ); mGanttView->setShowLegendButton( false ); // Initially, center to current date mGanttView->centerTimelineAfterShow( QDateTime::currentDateTime() ); if ( KGlobal::locale()->use12Clock() ) mGanttView->setHourFormat( KDGanttView::Hour_12 ); else mGanttView->setHourFormat( KDGanttView::Hour_24_FourDigit ); // mEventRectangle is the colored rectangle representing the event being modified mEventRectangle = new KDIntervalColorRectangle( mGanttView ); mEventRectangle->setColor( Qt::magenta ); mGanttView->addIntervalBackgroundColor( mEventRectangle ); connect( mGanttView, SIGNAL ( timeIntervalSelected( const QDateTime &, const QDateTime & ) ), mGanttView, SLOT( zoomToSelection( const QDateTime &, const QDateTime & ) ) ); connect( mGanttView, SIGNAL( lvItemDoubleClicked( KDGanttViewItem * ) ), SLOT( editFreeBusyUrl( KDGanttViewItem * ) ) ); connect( mGanttView, SIGNAL( intervalColorRectangleMoved( const QDateTime&, const QDateTime& ) ), this, SLOT( slotIntervalColorRectangleMoved( const QDateTime&, const QDateTime& ) ) ); connect( mGanttView, SIGNAL(lvSelectionChanged(KDGanttViewItem*)), this, SLOT(updateAttendeeInput()) ); connect( mGanttView, SIGNAL(lvItemLeftClicked(KDGanttViewItem*)), this, SLOT(showAttendeeStatusMenu()) ); connect( mGanttView, SIGNAL(lvItemRightClicked(KDGanttViewItem*)), this, SLOT(showAttendeeStatusMenu()) ); connect( mGanttView, SIGNAL(lvMouseButtonClicked(int, KDGanttViewItem*, const QPoint&, int)), this, SLOT(listViewClicked(int, KDGanttViewItem*)) ); FreeBusyManager *m = KOGroupware::instance()->freeBusyManager(); connect( m, SIGNAL( freeBusyRetrieved( KCal::FreeBusy *, const QString & ) ), SLOT( slotInsertFreeBusy( KCal::FreeBusy *, const QString & ) ) ); connect( &mReloadTimer, SIGNAL( timeout() ), SLOT( autoReload() ) ); initEditWidgets( this, topLayout ); connect( mRemoveButton, SIGNAL(clicked()), SLOT(removeAttendee()) ); }