[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-pim
Subject: Re: [Kde-pim] Re: KOrganizer What's This [2]
From: Antonio Salazar <savedfastcool () gmail ! com>
Date: 2004-10-23 21:00:57
Message-ID: 669a181d0410231400111a106a () mail ! gmail ! com
[Download RAW message or body]
To make a long story short, I fixed/changed most everything Reinhold
mentioned, and the new diff is attached. I originally sent this only
to Reinhold, sorry.
Antonio
["korganizerWhatsThis.diff" (text/x-patch)]
? Doxyfile
? korganizerWhatsThis.diff
Index: korganizer/koeditorattachments.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditorattachments.cpp,v
retrieving revision 1.16
diff -u -3 -p -r1.16 koeditorattachments.cpp
--- korganizer/koeditorattachments.cpp 25 Aug 2004 10:33:54 -0000 1.16
+++ korganizer/koeditorattachments.cpp 21 Oct 2004 03:20:08 -0000
@@ -35,6 +35,7 @@
#include <qlayout.h>
#include <qlistview.h>
#include <qpushbutton.h>
+#include <qwhatsthis.h>
KOEditorAttachments::KOEditorAttachments( int spacing, QWidget *parent,
const char *name )
@@ -44,6 +45,10 @@ KOEditorAttachments::KOEditorAttachments
topLayout->setSpacing( spacing );
mAttachments = new QListView( this );
+ QWhatsThis::add( mAttachments,
+ i18n("Displays a list of current items (files, mail, etc) "
+ "that have been associated with this event or to-do. "
+ "The URI column displays the location of the file.") );
mAttachments->addColumn( i18n("URI") );
mAttachments->addColumn( i18n("MIME Type") );
topLayout->addWidget( mAttachments );
@@ -53,18 +58,31 @@ KOEditorAttachments::KOEditorAttachments
QBoxLayout *buttonLayout = new QHBoxLayout( topLayout );
QPushButton *button = new QPushButton( i18n("&Add..."), this );
+ QWhatsThis::add( button,
+ i18n("Shows a dialog used to select an attachment "
+ "to add to this event or to-do.") );
buttonLayout->addWidget( button );
connect( button, SIGNAL( clicked() ), SLOT( slotAdd() ) );
button = new QPushButton( i18n("&Edit..."), this );
+ QWhatsThis::add( button,
+ i18n("Shows a dialog used to edit the attachment "
+ "currently selected in the list above.") );
buttonLayout->addWidget( button );
connect( button, SIGNAL( clicked() ), SLOT( slotEdit() ) );
button = new QPushButton( i18n("&Remove"), this );
+ QWhatsThis::add( button,
+ i18n("Removes the attachment selected in the list above "
+ "from this event or to-do.") );
buttonLayout->addWidget( button );
connect( button, SIGNAL( clicked() ), SLOT( slotRemove() ) );
button = new QPushButton( i18n("&Show"), this );
+ QWhatsThis::add( button,
+ i18n("Opens the attachment selected in the list above "
+ "in the viewer that is associated with it in your "
+ "KDE preferences.") );
buttonLayout->addWidget( button );
connect( button, SIGNAL( clicked() ), SLOT( slotShow() ) );
}
Index: korganizer/koeditordetails.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditordetails.cpp,v
retrieving revision 1.79
diff -u -3 -p -r1.79 koeditordetails.cpp
--- korganizer/koeditordetails.cpp 13 Oct 2004 12:35:47 -0000 1.79
+++ korganizer/koeditordetails.cpp 21 Oct 2004 03:20:08 -0000
@@ -40,6 +40,7 @@
#include <qpushbutton.h>
#include <qgroupbox.h>
#include <qradiobutton.h>
+#include <qwhatsthis.h>
#include <kdebug.h>
#include <klocale.h>
@@ -186,13 +187,35 @@ KOEditorDetails::KOEditorDetails( int sp
// readEvent will delete it and set another label text instead, if the user
// isn't the organizer.
// Note that the i18n text below is duplicated in readEvent
+ QString whatsThis = i18n("Sets the identity corresponding to "
+ "the organizer of this to-do or event. "
+ "Identities can be set in the 'Personal' "
+ "section of the KOrganizer configuration, or in the "
+ "'Security & Privacy'->'Password & User Account' "
+ "section of the KDE Control Center. In addition, "
+ "identities are gathered from your KMail settings "
+ "and from your address book. If you choose "
+ "to set it globally for KDE in the Control Center, "
+ "be sure to check 'Use email settings from "
+ "Control Center' in the 'Personal' section of the "
+ "KOrganizer configuration.");
mOrganizerLabel = new QLabel( i18n( "Identity as organizer:" ),
mOrganizerHBox );
mOrganizerCombo = new QComboBox( mOrganizerHBox );
+ QWhatsThis::add( mOrganizerLabel, whatsThis );
+ QWhatsThis::add( mOrganizerCombo, whatsThis );
fillOrganizerCombo();
mOrganizerHBox->setStretchFactor( mOrganizerCombo, 100 );
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"), 60 );
@@ -210,10 +233,15 @@ KOEditorDetails::KOEditorDetails( int sp
SLOT( insertAttendee( Attendee * ) ) );
#endif
+ whatsThis = i18n("Edits the name of the attendee selected in the list "
+ "above, or adds a new attendee if there are no attendees"
+ "in the list.");
QLabel *attendeeLabel = new QLabel( this );
+ QWhatsThis::add( attendeeLabel, whatsThis );
attendeeLabel->setText( i18n("Na&me:") );
mNameEdit = new KPIM::AddresseeLineEdit( this );
+ QWhatsThis::add( mNameEdit, whatsThis );
mNameEdit->setClickMessage( i18n("Click to add a new attendee") );
attendeeLabel->setBuddy( mNameEdit );
mNameEdit->installEventFilter( this );
@@ -223,25 +251,37 @@ KOEditorDetails::KOEditorDetails( int sp
mUidEdit = new QLineEdit( 0 );
mUidEdit->setText( "" );
+ whatsThis = i18n("Edits the role of the attendee selected "
+ "in the list above.");
QLabel *attendeeRoleLabel = new QLabel( this );
+ QWhatsThis::add( attendeeRoleLabel, whatsThis );
attendeeRoleLabel->setText( i18n("Ro&le:") );
mRoleCombo = new QComboBox( false, this );
+ QWhatsThis::add( mRoleCombo, whatsThis );
mRoleCombo->insertStringList( Attendee::roleList() );
attendeeRoleLabel->setBuddy( mRoleCombo );
connect( mRoleCombo, SIGNAL( activated( int ) ),
SLOT( updateAttendeeItem() ) );
+ whatsThis = i18n("Edits the current attendance status of the attendee "
+ "selected in the list above.");
QLabel *statusLabel = new QLabel( this );
+ QWhatsThis::add( statusLabel, whatsThis );
statusLabel->setText( i18n("Stat&us:") );
mStatusCombo = new QComboBox( false, this );
+ QWhatsThis::add( mStatusCombo, whatsThis );
mStatusCombo->insertStringList( Attendee::statusList() );
statusLabel->setBuddy( mStatusCombo );
connect( mStatusCombo, SIGNAL( activated( int ) ),
SLOT( updateAttendeeItem() ) );
mRsvpButton = new QCheckBox( this );
+ QWhatsThis::add( mRsvpButton,
+ i18n("Edits whether to send an email to the attendee "
+ "selected in the list above to request "
+ "a response concerning attendance.") );
mRsvpButton->setText( i18n("Re&quest response") );
connect( mRsvpButton, SIGNAL( clicked() ), SLOT( updateAttendeeItem() ) );
@@ -249,15 +289,29 @@ KOEditorDetails::KOEditorDetails( int sp
QVBoxLayout *buttonLayout = new QVBoxLayout( buttonBox );
QPushButton *newButton = new QPushButton( i18n("&New"), buttonBox );
+ QWhatsThis::add( newButton,
+ i18n("Adds a new attendee to the list. Once the "
+ "attendee is added, you will be able to "
+ "edit the attendee's name, role, attendance "
+ "status, and whether or not the attendee is required "
+ "to respond to the invitation. To select an attendee "
+ "from your addressbook, click the 'Select Addressee'"
+ "button instead.") );
buttonLayout->addWidget( newButton );
connect( newButton, SIGNAL( clicked() ), SLOT( addNewAttendee() ) );
mRemoveButton = new QPushButton( i18n("&Remove"), buttonBox );
+ QWhatsThis::add( mRemoveButton,
+ i18n("Removes the attendee selected in "
+ "the list above.") );
buttonLayout->addWidget( mRemoveButton );
connect( mRemoveButton, SIGNAL( clicked() ), SLOT( removeAttendee() ) );
mAddressBookButton = new QPushButton( i18n("Select Addressee..."),
buttonBox );
+ QWhatsThis::add( mAddressBookButton,
+ i18n("Opens your address book, allowing you to select "
+ "new attendees from it.") );
buttonLayout->addWidget( mAddressBookButton );
connect( mAddressBookButton, SIGNAL( clicked() ), SLOT( openAddressBook() ) );
Index: korganizer/koeditorfreebusy.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditorfreebusy.cpp,v
retrieving revision 1.18
diff -u -3 -p -r1.18 koeditorfreebusy.cpp
--- korganizer/koeditorfreebusy.cpp 13 Oct 2004 12:35:47 -0000 1.18
+++ korganizer/koeditorfreebusy.cpp 21 Oct 2004 03:20:08 -0000
@@ -27,6 +27,7 @@
#include <qlabel.h>
#include <qcombobox.h>
#include <qpushbutton.h>
+#include <qwhatsthis.h>
#include <kdebug.h>
#include <klocale.h>
@@ -187,10 +188,19 @@ KOEditorFreeBusy::KOEditorFreeBusy( int
// 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 );
+ scaleCombo = new QComboBox( this );
+ QWhatsThis::add( scaleCombo, whatsThis );
scaleCombo->insertItem( i18n( "Hour" ) );
scaleCombo->insertItem( i18n( "Day" ) );
scaleCombo->insertItem( i18n( "Week" ) );
@@ -202,26 +212,43 @@ KOEditorFreeBusy::KOEditorFreeBusy( 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( reload() ) );
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 );
@@ -439,7 +466,7 @@ void KOEditorFreeBusy::slotPickDate()
if( success ) {
if ( start == mDtStart && end == mDtEnd ) {
KMessageBox::information( this,
- i18n( "The meeting has already suitable start/end times." ),
+ i18n( "The meeting already has suitable start/end times." ),
"MeetinTimeOKFreeBusy" );
} else {
emit dateTimesChanged( start, end );
Index: korganizer/koeditorgeneral.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditorgeneral.cpp,v
retrieving revision 1.48
diff -u -3 -p -r1.48 koeditorgeneral.cpp
--- korganizer/koeditorgeneral.cpp 18 Sep 2004 16:36:56 -0000 1.48
+++ korganizer/koeditorgeneral.cpp 21 Oct 2004 03:20:08 -0000
@@ -35,6 +35,7 @@
#include <qcheckbox.h>
#include <qpushbutton.h>
#include <qcombobox.h>
+#include <qwhatsthis.h>
#include <kglobal.h>
#include <kdebug.h>
@@ -93,22 +94,28 @@ void KOEditorGeneral::initHeader(QWidget
headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1);
#endif
+ QString whatsThis = i18n("Sets the Title of this event or to-do.");
QLabel *summaryLabel = new QLabel(i18n("T&itle:"),parent);
+ QWhatsThis::add( summaryLabel, whatsThis );
QFont f = summaryLabel->font();
f.setBold( true );
summaryLabel->setFont(f);
headerLayout->addWidget(summaryLabel,1,0);
mSummaryEdit = new FocusLineEdit(parent);
+ QWhatsThis::add( mSummaryEdit, whatsThis );
connect( mSummaryEdit, SIGNAL( focusReceivedSignal() ),
SIGNAL( focusReceivedSignal() ) );
headerLayout->addWidget(mSummaryEdit,1,1);
summaryLabel->setBuddy( mSummaryEdit );
+ whatsThis = i18n("Sets where the event or to-do will take place.");
QLabel *locationLabel = new QLabel(i18n("&Location:"),parent);
+ QWhatsThis::add( locationLabel, whatsThis );
headerLayout->addWidget(locationLabel,2,0);
mLocationEdit = new QLineEdit(parent);
+ QWhatsThis::add( mLocationEdit, whatsThis );
headerLayout->addWidget(mLocationEdit,2,1);
locationLabel->setBuddy( mLocationEdit );
}
@@ -117,12 +124,17 @@ void KOEditorGeneral::initCategories(QWi
{
QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout );
+ QString whatsThis = i18n("Allows you to select the categories that this "
+ "event or to-do belongs to.");
+
mCategoriesButton = new QPushButton(parent);
mCategoriesButton->setText(i18n("Select Cate&gories..."));
+ QWhatsThis::add( mCategoriesButton, whatsThis );
connect(mCategoriesButton,SIGNAL(clicked()),SIGNAL(openCategoryDialog()));
categoriesLayout->addWidget(mCategoriesButton);
mCategoriesLabel = new KSqueezedTextLabel(parent);
+ QWhatsThis::add( mCategoriesLabel, whatsThis );
mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
categoriesLayout->addWidget(mCategoriesLabel,1);
}
@@ -132,9 +144,18 @@ void KOEditorGeneral::initSecrecy(QWidge
QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout );
QLabel *secrecyLabel = new QLabel(i18n("Acc&ess:"),parent);
+ QString whatsThis = i18n("Sets whether the access to this event or to-do "
+ "is restricted. Please note that KOrganizer "
+ "currently does not use this setting, so the "
+ "implementation of the restrictions will depend "
+ "on the groupware server. This means that events "
+ "or to-dos marked as private or confidential may "
+ "be visible to others.");
+ QWhatsThis::add( secrecyLabel, whatsThis );
secrecyLayout->addWidget(secrecyLabel);
mSecrecyCombo = new QComboBox(parent);
+ QWhatsThis::add( mSecrecyCombo, whatsThis );
mSecrecyCombo->insertStringList(Incidence::secrecyList());
secrecyLayout->addWidget(mSecrecyCombo);
secrecyLabel->setBuddy( mSecrecyCombo );
@@ -143,6 +164,11 @@ void KOEditorGeneral::initSecrecy(QWidge
void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout)
{
mDescriptionEdit = new KTextEdit(parent);
+ QWhatsThis::add( mDescriptionEdit,
+ i18n("Sets the description for this event or to-do. This "
+ "will be displayed in a reminder if one is set, "
+ "as well as in a tooltip when you hover over the "
+ "event.") );
mDescriptionEdit->append("");
mDescriptionEdit->setReadOnly(false);
mDescriptionEdit->setOverwriteMode(false);
@@ -160,15 +186,21 @@ void KOEditorGeneral::initAlarm(QWidget
alarmLayout->addWidget(mAlarmBell);
mAlarmButton = new QCheckBox(i18n("&Reminder:"),parent);
+ QWhatsThis::add( mAlarmButton,
+ i18n("Activates a reminder for this event or to-do.") );
connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool)));
alarmLayout->addWidget(mAlarmButton);
+ QString whatsThis = i18n("Sets how long before the event occurs "
+ "the reminder will be triggered.");
mAlarmTimeEdit = new KRestrictedLine(parent, "alarmTimeEdit",
"1234567890");
mAlarmTimeEdit->setText("");
+ QWhatsThis::add( mAlarmTimeEdit, whatsThis );
alarmLayout->addWidget(mAlarmTimeEdit);
mAlarmIncrCombo = new QComboBox(false, parent);
+ QWhatsThis::add( mAlarmIncrCombo, whatsThis );
mAlarmIncrCombo->insertItem(i18n("minute(s)"));
mAlarmIncrCombo->insertItem(i18n("hour(s)"));
mAlarmIncrCombo->insertItem(i18n("day(s)"));
@@ -176,6 +208,9 @@ void KOEditorGeneral::initAlarm(QWidget
alarmLayout->addWidget(mAlarmIncrCombo);
mAlarmSoundButton = new QPushButton(parent);
+ QWhatsThis::add( mAlarmSoundButton,
+ i18n("Sets a sound to play in conjunction with the popup "
+ "dialog as a reminder.") );
mAlarmSoundButton->setPixmap(KOGlobals::self()->smallIcon("playsound"));
mAlarmSoundButton->setToggleButton(true);
QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
@@ -183,6 +218,9 @@ void KOEditorGeneral::initAlarm(QWidget
alarmLayout->addWidget(mAlarmSoundButton);
mAlarmProgramButton = new QPushButton(parent);
+ QWhatsThis::add( mAlarmProgramButton,
+ i18n("Sets a program to execute in conjunction with the "
+ "popup dialog.") );
mAlarmProgramButton->setPixmap(KOGlobals::self()->smallIcon("runprog"));
mAlarmProgramButton->setToggleButton(true);
QToolTip::add(mAlarmProgramButton, i18n("No program set"));
Index: korganizer/koeditorgeneralevent.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditorgeneralevent.cpp,v
retrieving revision 1.67
diff -u -3 -p -r1.67 koeditorgeneralevent.cpp
--- korganizer/koeditorgeneralevent.cpp 8 Oct 2004 05:01:38 -0000 1.67
+++ korganizer/koeditorgeneralevent.cpp 21 Oct 2004 03:20:08 -0000
@@ -32,6 +32,7 @@
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qpushbutton.h>
+#include <qwhatsthis.h>
#include <kdebug.h>
#include <kglobal.h>
@@ -95,6 +96,9 @@ void KOEditorGeneralEvent::initTime(QWid
QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal,
i18n("Date && Time"),parent);
+ QWhatsThis::add( timeGroupBox,
+ i18n("Sets options related to the date and time of the "
+ "event or to-do.") );
timeLayout->addWidget(timeGroupBox);
QFrame *timeBoxFrame = new QFrame(timeGroupBox);
@@ -157,9 +161,13 @@ void KOEditorGeneralEvent::initClass(QWi
QBoxLayout *classLayout = new QHBoxLayout(topLayout);
QLabel *freeTimeLabel = new QLabel(i18n("S&how time as:"),parent);
+ QString whatsThis = i18n("Sets how this time will appear on your Free/Busy "
+ "information.");
+ QWhatsThis::add( freeTimeLabel, whatsThis );
classLayout->addWidget(freeTimeLabel);
mFreeTimeCombo = new QComboBox(false, parent);
+ QWhatsThis::add( mFreeTimeCombo, whatsThis );
mFreeTimeCombo->insertItem(i18n("Busy"));
mFreeTimeCombo->insertItem(i18n("Free"));
classLayout->addWidget(mFreeTimeCombo);
@@ -381,6 +389,9 @@ void KOEditorGeneralEvent::setDuration()
}
}
mDurationLabel->setText(tmpStr);
+ QWhatsThis::add( mDurationLabel,
+ i18n("Shows the duration of the event or to-do with the "
+ "current start and end dates and times.") );
}
void KOEditorGeneralEvent::emitDateTimeStr()
Index: korganizer/koeditorgeneraltodo.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditorgeneraltodo.cpp,v
retrieving revision 1.53
diff -u -3 -p -r1.53 koeditorgeneraltodo.cpp
--- korganizer/koeditorgeneraltodo.cpp 8 Oct 2004 00:05:54 -0000 1.53
+++ korganizer/koeditorgeneraltodo.cpp 21 Oct 2004 03:20:08 -0000
@@ -32,6 +32,7 @@
#include <qcheckbox.h>
#include <qpushbutton.h>
#include <qlabel.h>
+#include <qwhatsthis.h>
#include <kglobal.h>
#include <klocale.h>
@@ -98,12 +99,17 @@ void KOEditorGeneralTodo::initTime(QWidg
timeLayout->addWidget(timeGroupBox);
QFrame *timeBoxFrame = new QFrame(timeGroupBox);
+ QWhatsThis::add( timeBoxFrame,
+ i18n("Sets options for due and start dates and times "
+ "for this to-do.") );
QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,1,1);
layoutTimeBox->setSpacing(topLayout->spacing());
+ QString whatsThis = i18n("Sets the due date for this to-do.");
mDueCheck = new QCheckBox(i18n("&Due:"),timeBoxFrame);
+ QWhatsThis::add( mDueCheck, whatsThis );
layoutTimeBox->addWidget(mDueCheck,0,0);
connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(enableDueEdit(bool)));
connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(showAlarm()));
@@ -111,27 +117,38 @@ void KOEditorGeneralTodo::initTime(QWidg
connect(mDueCheck,SIGNAL(toggled(bool)),SLOT(dateChanged()));
mDueDateEdit = new KDateEdit(timeBoxFrame);
+ QWhatsThis::add( mDueDateEdit, whatsThis );
layoutTimeBox->addWidget(mDueDateEdit,0,1);
connect(mDueDateEdit,SIGNAL(dateChanged(QDate)),SLOT(dateChanged()));
mDueTimeEdit = new KTimeEdit(timeBoxFrame);
+ QWhatsThis::add( mDueTimeEdit,
+ i18n("Sets the due time for this to-do.") );
layoutTimeBox->addWidget(mDueTimeEdit,0,2);
connect(mDueTimeEdit,SIGNAL(timeChanged( QTime )),SLOT(dateChanged()));
+ whatsThis = i18n("Sets the start date for this to-do");
mStartCheck = new QCheckBox(i18n("Sta&rt:"),timeBoxFrame);
+ QWhatsThis::add( mStartCheck, whatsThis );
layoutTimeBox->addWidget(mStartCheck,1,0);
connect(mStartCheck,SIGNAL(toggled(bool)),SLOT(enableStartEdit(bool)));
connect(mStartCheck,SIGNAL(toggled(bool)),SLOT(startDateModified()));
mStartDateEdit = new KDateEdit(timeBoxFrame);
+ QWhatsThis::add( mStartDateEdit, whatsThis );
layoutTimeBox->addWidget(mStartDateEdit,1,1);
connect(mStartDateEdit,SIGNAL(dateChanged(QDate)),SLOT(startDateModified()));
mStartTimeEdit = new KTimeEdit(timeBoxFrame);
+ QWhatsThis::add( mStartTimeEdit,
+ i18n("Sets the start time for this to-do.") );
layoutTimeBox->addWidget(mStartTimeEdit,1,2);
connect(mStartTimeEdit,SIGNAL(timeChanged(QTime)),SLOT(startDateModified()));
mTimeButton = new QCheckBox(i18n("Ti&me associated"),timeBoxFrame);
+ QWhatsThis::add( mTimeButton,
+ i18n("Sets whether or not this to-do'd start and due dates "
+ "have times associated with them.") );
layoutTimeBox->addMultiCellWidget(mTimeButton,2,2,0,2);
connect(mTimeButton,SIGNAL(toggled(bool)),SLOT(enableTimeEdits(bool)));
@@ -144,7 +161,10 @@ void KOEditorGeneralTodo::initTime(QWidg
void KOEditorGeneralTodo::initCompletion(QWidget *parent, QBoxLayout *topLayout)
{
+ QString whatsThis = i18n("Sets the current completion status of this to-do "
+ "as a percentage.");
mCompletedCombo = new QComboBox(parent);
+ QWhatsThis::add( mCompletedCombo, whatsThis );
for (int i = 0; i <= 100; i+=10) {
// xgettext:no-c-format
QString label = i18n("Percent complete", "%1 %").arg (i);
@@ -160,6 +180,12 @@ void KOEditorGeneralTodo::initCompletion
void KOEditorGeneralTodo::initPriority(QWidget *parent, QBoxLayout *topLayout)
{
+ QString whatsThis = i18n("Sets the priority of this to-do on a scale "
+ "from one to nine, with one being the higest "
+ "priority, five being the medium priority, and "
+ "nine being the lowest. In programs that have a "
+ "different scale, the numbers will be adjusted "
+ "to match the appropriate scale.");
QLabel *priorityLabel = new QLabel(i18n("&Priority:"),parent);
topLayout->addWidget(priorityLabel);
Index: korganizer/koeditorrecurrence.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeditorrecurrence.cpp,v
retrieving revision 1.72
diff -u -3 -p -r1.72 koeditorrecurrence.cpp
--- korganizer/koeditorrecurrence.cpp 24 Sep 2004 22:43:03 -0000 1.72
+++ korganizer/koeditorrecurrence.cpp 21 Oct 2004 03:20:09 -0000
@@ -37,6 +37,7 @@
#include <qradiobutton.h>
#include <qlabel.h>
#include <qpushbutton.h>
+#include <qwhatsthis.h>
#include <kdialog.h>
#include <kglobal.h>
@@ -85,6 +86,10 @@ int RecurBase::frequency()
QComboBox *RecurBase::createWeekCountCombo( QWidget *parent, const char *name )
{
QComboBox *combo = new QComboBox( parent, name );
+ QWhatsThis::add( combo,
+ i18n("The number of the week from the beginning "
+ "of the month on which this event or to-do "
+ "should recur.") );
if ( !combo ) return 0;
combo->insertItem( i18n("1st") );
combo->insertItem( i18n("2nd") );
@@ -102,6 +107,9 @@ QComboBox *RecurBase::createWeekCountCom
QComboBox *RecurBase::createWeekdayCombo( QWidget *parent, const char *name )
{
QComboBox *combo = new QComboBox( parent, name );
+ QWhatsThis::add( combo,
+ i18n("The weekday on which this event or to-do "
+ "should recur.") );
if ( !combo ) return 0;
const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
for( int i = 1; i <= 7; ++i ) {
@@ -113,6 +121,9 @@ QComboBox *RecurBase::createWeekdayCombo
QComboBox *RecurBase::createMonthNameCombo( QWidget *parent, const char *name )
{
QComboBox *combo = new QComboBox( parent, name );
+ QWhatsThis::add( combo,
+ i18n("The month during which this event or to-do "
+ "should recur.") );
if ( !combo ) return 0;
const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
for( int i = 1; i <= 12; ++i ) {
@@ -128,13 +139,17 @@ QBoxLayout *RecurBase::createFrequencySp
{
QBoxLayout *freqLayout = new QHBoxLayout( layout );
+ QString whatsThis = i18n("Sets how often this event or to-do should recur.");
QLabel *preLabel = new QLabel( everyText, parent );
+ QWhatsThis::add( preLabel, whatsThis );
freqLayout->addWidget( preLabel );
freqLayout->addWidget( frequencyEdit() );
preLabel->setBuddy( frequencyEdit() );
+ QWhatsThis::add( preLabel->buddy(), whatsThis );
QLabel *postLabel = new QLabel( unitText, parent );
+ QWhatsThis::add( postLabel, whatsThis );
freqLayout->addWidget( postLabel );
freqLayout->addStretch();
return freqLayout;
@@ -179,6 +194,9 @@ RecurWeekly::RecurWeekly( QWidget *paren
weekDayName = weekDayName.left( 1 );
}
mDayBoxes[ (i + weekStart + 6)%7 ] = new QCheckBox( weekDayName, dayBox );
+ QWhatsThis::add( mDayBoxes[ (i + weekStart + 6)%7 ],
+ i18n("Day of the week on which this event or to-do "
+ "should recur.") );
}
topLayout->addStretch( 1 );
@@ -226,9 +244,16 @@ RecurMonthly::RecurMonthly( QWidget *par
}
mByDayRadio = new QRadioButton( recurOnText, buttonGroup );
+ QWhatsThis::add( mByDayRadio,
+ i18n("Sets a specific day of the month on which "
+ "this event or to-do should recur.") );
+
buttonLayout->addWidget( mByDayRadio, 0, 0 );
+ QString whatsThis = i18n("The day of the month that this event or to-do "
+ "should recur on.");
mByDayCombo = new QComboBox( buttonGroup );
+ QWhatsThis::add( mByDayCombo, whatsThis );
mByDayCombo->setSizeLimit( 7 );
mByDayCombo->insertItem( i18n("1st") );
mByDayCombo->insertItem( i18n("2nd") );
@@ -264,10 +289,14 @@ RecurMonthly::RecurMonthly( QWidget *par
buttonLayout->addWidget( mByDayCombo, 0, 1 );
QLabel *byDayLabel = new QLabel( i18n("day"), buttonGroup );
+ QWhatsThis::add( byDayLabel, whatsThis );
buttonLayout->addWidget( byDayLabel, 0, 2 );
mByPosRadio = new QRadioButton( recurOnText, buttonGroup);
+ QWhatsThis::add( mByPosRadio,
+ i18n("Sets a weekday and specific week in the month "
+ "on which this event or to-do should recur") );
buttonLayout->addWidget( mByPosRadio, 1, 0 );
mByPosCountCombo = createWeekCountCombo( buttonGroup );
@@ -350,12 +379,19 @@ RecurYearly::RecurYearly( QWidget *paren
recurInMonthText = i18n("&Day ");
}
mByMonthRadio = new QRadioButton( recurInMonthText, buttonGroup );
+ QWhatsThis::add( mByMonthRadio,
+ i18n("Sets a specific day in a specific month for "
+ "this event or to-do to recur.") );
monthLayout->addWidget( mByMonthRadio );
mByMonthSpin = new QSpinBox( 1, 31, 1, buttonGroup );
+ QWhatsThis::add( mByMonthSpin,
+ i18n("The day of the month on which this event or to-do "
+ "should recur.") );
monthLayout->addWidget( mByMonthSpin );
QLabel *ofLabel = new QLabel(
i18n("part between XXX and YYY of 'Recur on day XXX of month YYY'", " &of "),
buttonGroup );
+ //What do I do here? I'm not sure if this label should have What's This in it... - Antonio
monthLayout->addWidget( ofLabel );
mByMonthCombo = createMonthNameCombo( buttonGroup );
@@ -372,6 +408,9 @@ RecurYearly::RecurYearly( QWidget *paren
recurOnPosText = i18n("Part before XXX in 'Recur on NNN. WEEKDAY of MONTH'", "&On the" );
}
mByPosRadio = new QRadioButton( recurOnPosText, buttonGroup );
+ QWhatsThis::add( mByPosRadio,
+ i18n("Sets a specific day in a specific week of a specific "
+ "month for this event or to-do to recur.") );
posLayout->addWidget( mByPosRadio );
mByPosDayCombo = createWeekCountCombo( buttonGroup );
@@ -400,10 +439,15 @@ RecurYearly::RecurYearly( QWidget *paren
} else {
recurOnDayText = i18n("Recur on &day #");
}
+ QString whatsThis = i18n("Sets a specific day within the year for this "
+ "event or to-do to recur.");
mByDayRadio = new QRadioButton( recurOnDayText, buttonGroup );
+ QWhatsThis::add( mByDayRadio, whatsThis );
dayLayout->addWidget( mByDayRadio );
mByDaySpin = new QSpinBox( 1, 366, 1, buttonGroup );
+ QWhatsThis::add( mByDaySpin, whatsThis );
+
dayLayout->addWidget( mByDaySpin );
QString ofTheYear( i18n("part after NNN of 'Recur on day #NNN of the year'", " of the &year"));
@@ -412,6 +456,7 @@ RecurYearly::RecurYearly( QWidget *paren
" of the year");
}
ofLabel = new QLabel( ofTheYear, buttonGroup );
+ QWhatsThis::add( ofLabel, whatsThis );
dayLayout->addWidget( ofLabel );
ofLabel->setBuddy( mByDaySpin );
@@ -500,17 +545,33 @@ ExceptionsWidget::ExceptionsWidget( QWid
QGridLayout *boxLayout = new QGridLayout( box );
mExceptionDateEdit = new KDateEdit( box );
+ QWhatsThis::add( mExceptionDateEdit,
+ i18n("A date that should be considered an exception "
+ "to the recurrence rules for this event or to-do.") );
mExceptionDateEdit->setDate( QDate::currentDate() );
boxLayout->addWidget( mExceptionDateEdit, 0, 0 );
QPushButton *addExceptionButton = new QPushButton( i18n("&Add"), box );
+ QWhatsThis::add( addExceptionButton,
+ i18n("Add this date as an exception "
+ "to the recurrence rules for this event or to-do.") );
boxLayout->addWidget( addExceptionButton, 1, 0 );
QPushButton *changeExceptionButton = new QPushButton( i18n("&Change"), box );
+ QWhatsThis::add( changeExceptionButton,
+ i18n("Replace the currently selected date with this date.") );
boxLayout->addWidget( changeExceptionButton, 2, 0 );
QPushButton *deleteExceptionButton = new QPushButton( i18n("&Delete"), box );
+ QWhatsThis::add( deleteExceptionButton,
+ i18n("Delete the currently selected date from the list of dates "
+ "that should be considered exceptions to the recurrence rules "
+ "for this event or to-do.") );
boxLayout->addWidget( deleteExceptionButton, 3, 0 );
mExceptionList = new QListBox( box );
+ QWhatsThis::add( mExceptionList,
+ i18n("Displays current dates that are being considered "
+ "exceptions to the recurrence rules for this event "
+ "or to-do.") );
boxLayout->addMultiCellWidget( mExceptionList, 0, 3, 1, 1 );
boxLayout->setRowStretch( 4, 1 );
@@ -598,6 +659,9 @@ RecurrenceRangeWidget::RecurrenceRangeWi
mRangeGroupBox = new QGroupBox( 1, Horizontal, i18n("Recurrence Range"),
this );
+ QWhatsThis::add( mRangeGroupBox,
+ i18n("Sets a range for which these recurrence rules will "
+ "apply to this event or to-do.") );
topLayout->addWidget( mRangeGroupBox );
QWidget *rangeBox = new QWidget( mRangeGroupBox );
@@ -605,11 +669,16 @@ RecurrenceRangeWidget::RecurrenceRangeWi
rangeLayout->setSpacing( KDialog::spacingHint() );
mStartDateLabel = new QLabel( i18n("Begin on:"), rangeBox );
+ QWhatsThis::add( mStartDateLabel,
+ i18n("The date the recurrences for this event or to-do "
+ "begin on.") );
rangeLayout->addWidget( mStartDateLabel );
QButtonGroup *rangeButtonGroup = new QButtonGroup;
mNoEndDateButton = new QRadioButton( i18n("&No ending date"), rangeBox );
+ QWhatsThis::add( mNoEndDateButton,
+ i18n("Sets the event or to-do to recur forever.") );
rangeButtonGroup->insert( mNoEndDateButton );
rangeLayout->addWidget( mNoEndDateButton );
@@ -617,13 +686,20 @@ RecurrenceRangeWidget::RecurrenceRangeWi
durationLayout->setSpacing( KDialog::spacingHint() );
mEndDurationButton = new QRadioButton( i18n("End &after"), rangeBox );
+ QWhatsThis::add( mEndDurationButton,
+ i18n("Sets the event or to-do to stop recurring after a "
+ "certain amount of occurrences.") );
rangeButtonGroup->insert( mEndDurationButton );
durationLayout->addWidget( mEndDurationButton );
+ QString whatsThis = i18n("Number of times the event or to-do should recur "
+ "before stopping.");
mEndDurationEdit = new QSpinBox( 1, 9999, 1, rangeBox );
+ QWhatsThis::add( mEndDurationEdit, whatsThis );
durationLayout->addWidget( mEndDurationEdit );
QLabel *endDurationLabel = new QLabel( i18n("&occurrence(s)"), rangeBox );
+ QWhatsThis::add( endDurationLabel, whatsThis );
durationLayout ->addWidget( endDurationLabel );
endDurationLabel->setBuddy( mEndDurationEdit );
@@ -631,10 +707,16 @@ RecurrenceRangeWidget::RecurrenceRangeWi
endDateLayout->setSpacing( KDialog::spacingHint() );
mEndDateButton = new QRadioButton( i18n("End &on:"), rangeBox );
+ QWhatsThis::add( mEndDateButton,
+ i18n("Sets the event or to-do to stop recurring on "
+ "a certain date.") );
rangeButtonGroup->insert( mEndDateButton );
endDateLayout->addWidget( mEndDateButton );
mEndDateEdit = new KDateEdit( rangeBox );
+ QWhatsThis::add( mEndDateEdit,
+ i18n("Date after which the event or to-do should stop "
+ "recurring") );
endDateLayout->addWidget( mEndDateEdit );
endDateLayout->addStretch( 1 );
@@ -751,6 +833,9 @@ RecurrenceChooser::RecurrenceChooser( QW
if ( KOPrefs::instance()->mCompactDialogs ) {
mTypeCombo = new QComboBox( this );
+ QWhatsThis::add( mTypeCombo,
+ i18n("Sets the type of recurrence this event or to-do "
+ "should have.") );
mTypeCombo->insertItem( i18n("Daily") );
mTypeCombo->insertItem( i18n("Weekly") );
mTypeCombo->insertItem( i18n("Monthly") );
@@ -767,9 +852,21 @@ RecurrenceChooser::RecurrenceChooser( QW
topLayout->addWidget( ruleButtonGroup );
mDailyButton = new QRadioButton( i18n("&Daily"), ruleButtonGroup );
+ QWhatsThis::add( mDailyButton,
+ i18n("Sets the event or to-do to recur daily according "
+ "to the specified rules.") );
mWeeklyButton = new QRadioButton( i18n("&Weekly"), ruleButtonGroup );
+ QWhatsThis::add( mWeeklyButton,
+ i18n("Sets the event or to-do to recur weekly according "
+ "to the specified rules.") );
mMonthlyButton = new QRadioButton( i18n("&Monthly"), ruleButtonGroup );
+ QWhatsThis::add( mMonthlyButton,
+ i18n("Sets the event or to-do to recur monthly according "
+ "to the specified rules.") );
mYearlyButton = new QRadioButton( i18n("&Yearly"), ruleButtonGroup );
+ QWhatsThis::add( mYearlyButton,
+ i18n("Sets the event or to-do to recur yearly according "
+ "to the specified rules.") );
connect( mDailyButton, SIGNAL( toggled( bool ) ),
SLOT( emitChoice() ) );
@@ -831,6 +928,9 @@ KOEditorRecurrence::KOEditorRecurrence(
topLayout->setSpacing( KDialog::spacingHint() );
mEnabledCheck = new QCheckBox( i18n("&Enable recurrence"), this );
+ QWhatsThis::add( mEnabledCheck,
+ i18n("Enables recurrence for this event or to-do according "
+ "to the specified rules.") );
connect( mEnabledCheck, SIGNAL( toggled( bool ) ),
SLOT( setRecurrenceEnabled( bool ) ) );
topLayout->addMultiCellWidget( mEnabledCheck, 0, 0, 0, 1 );
@@ -838,6 +938,8 @@ KOEditorRecurrence::KOEditorRecurrence(
mTimeGroupBox = new QGroupBox( 1, Horizontal, i18n("Appointment Time "),
this );
+ QWhatsThis::add( mTimeGroupBox,
+ i18n("Displays appointment time information.") );
topLayout->addMultiCellWidget( mTimeGroupBox, 1, 1 , 0 , 1 );
if ( KOPrefs::instance()->mCompactDialogs ) {
@@ -857,6 +959,9 @@ KOEditorRecurrence::KOEditorRecurrence(
else orientation = Vertical;
mRuleBox = new QGroupBox( 1, orientation, i18n("Recurrence Rule"), this );
+ QWhatsThis::add( mRuleBox,
+ i18n("Options concerning the type of recurrence this event "
+ "or to-do should have.") );
if ( KOPrefs::instance()->mCompactDialogs ) {
topLayout->addWidget( mRuleBox, 2, 0 );
} else {
@@ -894,6 +999,9 @@ KOEditorRecurrence::KOEditorRecurrence(
mRecurrenceRange = mRecurrenceRangeDialog;
mRecurrenceRangeButton = new QPushButton( i18n("Recurrence Range..."),
this );
+ QWhatsThis::add( mRecurrenceRangeButton,
+ i18n("Options concerning the time range during which "
+ "this event or to-do should recur.") );
topLayout->addWidget( mRecurrenceRangeButton, 3, 0 );
connect( mRecurrenceRangeButton, SIGNAL( clicked() ),
SLOT( showRecurrenceRangeDialog() ) );
@@ -908,6 +1016,9 @@ KOEditorRecurrence::KOEditorRecurrence(
} else {
mRecurrenceRangeWidget = new RecurrenceRangeWidget( this );
+ QWhatsThis::add( mRecurrenceRangeWidget,
+ i18n("Options concerning the time range during which "
+ "this event or to-do should recur.") );
mRecurrenceRangeDialog = 0;
mRecurrenceRange = mRecurrenceRangeWidget;
mRecurrenceRangeButton = 0;
Index: korganizer/koeventeditor.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koeventeditor.cpp,v
retrieving revision 1.87
diff -u -3 -p -r1.87 koeventeditor.cpp
--- korganizer/koeventeditor.cpp 14 Oct 2004 21:25:39 -0000 1.87
+++ korganizer/koeventeditor.cpp 21 Oct 2004 03:20:09 -0000
@@ -27,6 +27,7 @@
#include <qpixmap.h>
#include <qlayout.h>
#include <qwidgetstack.h>
+#include <qwhatsthis.h>
#include <kabc/addressee.h>
#include <kiconloader.h>
@@ -112,6 +113,9 @@ void KOEventEditor::setupGeneral()
if( KOPrefs::instance()->mCompactDialogs ) {
QFrame *topFrame = addPage(i18n("General"));
+ QWhatsThis::add( topFrame,
+ i18n("The General tab allows you to set the most common "
+ "options for the event.") );
QBoxLayout *topLayout = new QVBoxLayout(topFrame);
topLayout->setSpacing(spacingHint());
@@ -135,6 +139,9 @@ void KOEventEditor::setupGeneral()
mGeneral->initDescription(topFrame2,topLayout2);
} else {
QFrame *topFrame = addPage(i18n("&General"));
+ QWhatsThis::add( topFrame,
+ i18n("The General tab allows you to set the most common "
+ "options for the event.") );
QBoxLayout *topLayout = new QVBoxLayout(topFrame);
topLayout->setSpacing(spacingHint());
@@ -163,6 +170,10 @@ void KOEventEditor::modified (int /*modi
void KOEventEditor::setupRecurrence()
{
QFrame *topFrame = addPage( i18n("Rec&urrence") );
+
+ QWhatsThis::add( topFrame,
+ i18n("The Recurrence tab allows you to set options on "
+ "how often this event recurs.") );
QBoxLayout *topLayout = new QVBoxLayout( topFrame );
@@ -173,6 +184,9 @@ void KOEventEditor::setupRecurrence()
void KOEventEditor::setupFreeBusy()
{
QFrame *freeBusyPage = addPage( i18n("&Free/Busy") );
+ QWhatsThis::add( freeBusyPage,
+ i18n("The Free/Busy tab allows you to see whether "
+ "other attendees are free or busy during your event.") );
QBoxLayout *topLayout = new QVBoxLayout( freeBusyPage );
Index: korganizer/koincidenceeditor.cpp
===================================================================
RCS file: /home/kde/kdepim/korganizer/koincidenceeditor.cpp,v
retrieving revision 1.48
diff -u -3 -p -r1.48 koincidenceeditor.cpp
--- korganizer/koincidenceeditor.cpp 15 Oct 2004 18:40:31 -0000 1.48
+++ korganizer/koincidenceeditor.cpp 21 Oct 2004 03:20:09 -0000
@@ -28,6 +28,7 @@
#include <qlayout.h>
#include <qwidgetstack.h>
#include <qdatetime.h>
+#include <qwhatsthis.h>
#include <kdebug.h>
#include <klocale.h>
@@ -59,7 +60,12 @@ KOIncidenceEditor::KOIncidenceEditor( co
mCalendar = calendar;
setButtonText( Default, i18n("Load &Template...") );
-
+ setButtonWhatsThis( Default,
+ i18n("Allows you to load a pre-saved "
+ "template for the event. You "
+ "can save this event or to-do as a "
+ "template by clicking 'Save as Template...'.") );
+
QString saveTemplateText;
if ( KOPrefs::instance()->mCompactDialogs ) {
showButton( User1, false );
@@ -68,6 +74,9 @@ KOIncidenceEditor::KOIncidenceEditor( co
saveTemplateText = i18n("&Save as Template...");
}
setButtonText( User1, saveTemplateText );
+ setButtonWhatsThis( User1,
+ i18n("Allows you to save the current settings as a template "
+ "which can later be loaded for other events.") );
mCategoryDialog = new KPIM::CategorySelectDialog( KOPrefs::instance(), this );
KOGlobals::fitDialogToScreen( mCategoryDialog );
@@ -88,6 +97,9 @@ KOIncidenceEditor::~KOIncidenceEditor()
void KOIncidenceEditor::setupAttendeesTab()
{
QFrame *topFrame = addPage( i18n("Atte&ndees") );
+ QWhatsThis::add( topFrame,
+ i18n("The Attendees tab allows you to Add or Remove "
+ "Attendees to/from this event or to-do.") );
QBoxLayout *topLayout = new QVBoxLayout( topFrame );
@@ -98,6 +110,10 @@ void KOIncidenceEditor::setupAttendeesTa
void KOIncidenceEditor::setupAttachmentsTab()
{
QFrame *topFrame = addPage( i18n("Attach&ments") );
+ QWhatsThis::add( topFrame,
+ i18n("The Attachments tab allows you to add or remove "
+ "files, emails, contacts, and other items "
+ "associated with this event or to-do.") );
QBoxLayout *topLayout = new QVBoxLayout( topFrame );
_______________________________________________
kde-pim mailing list
kde-pim@kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
kde-pim home page at http://pim.kde.org/
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic