summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-06-14 09:10:19 (UTC)
committer zautrix <zautrix>2005-06-14 09:10:19 (UTC)
commitbd2fd522c0ba5c5a7897df0941032a9af9842dfc (patch) (side-by-side diff)
treed76d64810cbcde88f0b56d5924ac4dd52e9abe13
parent1dccb9dd9ea32989ecec33c72a3ebd873dce048e (diff)
downloadkdepimpi-bd2fd522c0ba5c5a7897df0941032a9af9842dfc.zip
kdepimpi-bd2fd522c0ba5c5a7897df0941032a9af9842dfc.tar.gz
kdepimpi-bd2fd522c0ba5c5a7897df0941032a9af9842dfc.tar.bz2
fixxeess
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt12
-rw-r--r--korganizer/kofilterview.cpp14
-rw-r--r--korganizer/kofilterview.h2
3 files changed, 23 insertions, 5 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index a11fab3..9b7f6ea 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,102 +1,114 @@
Info about the changes in new versions of KDE-Pim/Pi
********** VERSION 2.1.6 ************
+This release is for testing only.
+
KO/Pi:
Added to the list view (the list view is used in search dialog as well) the possibility to print it.
Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view.
Added to the list view the possibility to add all subtodos of selected todos to an export/beam.
Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout.
Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus.
Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly.
+Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars.
+In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later.
+Now on every sync the set of calendars is synced which are enabled in the resource view.
+
+A calendar is enabled in the resource view if the "eye" column is checked.
+You can set a calendar to be the default for new items( "+" column ).
+You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly.
+To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ...
+
+
********** VERSION 2.1.5 ************
This is the new stable version.
Bugfix:
Fixed a problem with agenda popup on the desktop in KO/Pi.
Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization.
Added config option to not display completed todos in agenda view.
Addressee view is now using the formatted name, if defined.
That makes it possible to display "lastname, firstname" in that view now.
To set the formatted name for all contacts, please use menu:
Edit->Change->Set formatted name.
Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows.
********** VERSION 2.1.4 ************
Fixed two more bugs in the KA/Pi CSV import dialog:
Made it possible to read multi-line fields and import it to the "Note" field.
Fixed a problem in mapping custom fields, whatever a custem field is...
********** VERSION 2.1.3 ************
Changed the menu structure of the alarm applet:
Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List".
Fixed several problems in the KA/Pi CSV import dialog:
Added "Category", made codec configureable and made it possible to map many fields to the "Note" field.
********** VERSION 2.1.2 ************
Fixed a problem closing the alarm dialog on Zaurus with "OK" button.
Fixed a problem when importing data from Outlook with mutiple categories set.
Changed display of days in datenavigator:
Birthdays are now blue, not dark green.
When todo view is shown, no birtdays are shown and days with due todos are shown blue.
When journal view is shown, only holidays are shown and days with journals are blue.
Added Backup options to global config:
You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ).
It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again.
The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups.
********** VERSION 2.1.1 ************
Stable release 2.1.1!
KO/Pi:
Fixed one problem in the layout of the edit dialogs on the Zaurus with 640x480 display.
********** VERSION 2.1.0 ************
Stable release 2.1.0!
Summary of changes/fixes compared to version 2.0.6:
Many bugs of version 2.0.6 fixed.
Most of them were small bugs, but some of them were important.
It is recommended to use version 2.1.0 and not version 2.0.6.
Important changes:
Added recurring todos to KO/Pi.
Added global application font settings (for all KDE-Pim/Pi apps) to the general settings.
Made Passwordmanager PwM/Pi more userfriendly: Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
Datenavigator can now display many months. Very useful on the desktop.
KO/Pi alarm applet changed: Made buttons in alarm dialog much bigger and other usebility enhancements.
Made alarm sound working on Linux desktop.
Made KO/Pi and KA/Pi running from a memory stick. Please read storage HowTo for details.
Added timetracking feature in KO/Pi todo view. Please read timetraker HowTo for details.
Many other usebility enhancements.
Special thanks to Ben for his suggestions!
You can find the complete changelog
from version 1.7.7 to 2.1.0
in the source package or on
http://www.pi-sync.net/html/changelog.html
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 9633b2c..3333ac2 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -17,390 +17,396 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qlabel.h>
#include <qdialog.h>
#include <libkcal/calfilter.h>
#include "kofilterview.h"
#include "koprefs.h"
#include <kiconloader.h>
#include <kglobal.h>
#include <kcolorbutton.h>
#include <kmessagebox.h>
#include <kurlrequester.h>
#include <klineedit.h>
class KONewCalPrefs : public QDialog
{
public:
KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
QDialog( parent, name, true )
{
setCaption( i18n("Add new Calendar") );
QVBoxLayout* lay = new QVBoxLayout( this );
lay->setSpacing( 3 );
lay->setMargin( 3 );
QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
lay->addWidget( lab );
nameE = new KLineEdit( this );
lay->addWidget( nameE );
lab = new QLabel( i18n("Local ical (*.ics) file:"), this );
lay->addWidget( lab );
url = new KURLRequester ( this );
lay->addWidget( url );
QPushButton * ok = new QPushButton( i18n("OK"), this );
lay->addWidget( ok );
QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
lay->addWidget( cancel );
connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
//resize( 200, 200 );
}
QString calName() { return nameE->text(); }
QString calFileName() { return url->url(); }
private:
KLineEdit* nameE;
KURLRequester *url;
};
KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
const char* name,WFlags fl )
: KOFilterView_base(parent,name,fl)
{
mFilters = filterList;
connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
}
KOFilterView::~KOFilterView()
{
// no need to delete child widgets, Qt does it all for us
}
bool KOFilterView::filtersEnabled()
{
return mEnabledCheck->isChecked();
}
void KOFilterView::setFiltersEnabled(bool set)
{
mEnabledCheck->setChecked(set);
emit filterChanged();
}
void KOFilterView::updateFilters()
{
mSelectionCombo->clear();
CalFilter *filter = mFilters->first();
while(filter) {
mSelectionCombo->insertItem(filter->name());
filter = mFilters->next();
}
}
CalFilter *KOFilterView::selectedFilter()
{
CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
return f;
}
void KOFilterView::setSelectedFilter(QString filterName)
{
int filter_num = mSelectionCombo->count();
int i;
for (i=0;i<filter_num;i++) {
if (mSelectionCombo->text(i)==filterName)
mSelectionCombo->setCurrentItem(i);
}
emit filterChanged();
}
void KOFilterView::setSelectedFilter( int fil )
{
if ( fil >= mSelectionCombo->count() )
return;
mSelectionCombo->setCurrentItem( fil );
emit filterChanged();
}
KOCalEditView::KOCalEditView(QWidget* parent,
const char* name )
: QWidget(parent,name)
{
mw = 0;
ml = new QVBoxLayout ( this );
}
KOCalEditView::~KOCalEditView()
{
// no need to delete child widgets, Qt does it all for us
}
void KOCalEditView::selectCal(int id ,bool b)
{
KOPrefs::instance()->getCalendar( id )->isEnabled = b;
emit calendarEnabled ( id, b );
emit needsUpdate();
}
void KOCalEditView::selectStdCal( int id, bool b )
{
if ( !b ) {
KOCalCheckButton* it = (KOCalCheckButton*) sender();
if ( it ) {
it->blockSignals( true );
it->setChecked( true );
it->blockSignals( false );
return;
}
return;
}
KOCalCheckButton* sen = (KOCalCheckButton*) sender();
KOCalCheckButton* it = mStdandardB.first();
while ( it ) {
if ( it->isChecked() ) {
if ( it != sen ) {
it->blockSignals( true );
it->setChecked( false );
it->blockSignals( false );
break;
}
}
it = mStdandardB.next();
}
KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
while ( kkf ) {
kkf->isStandard = false;
kkf = KOPrefs::instance()->mCalendars.next();
}
KOPrefs::instance()->getCalendar( id )->isStandard = true;
emit setCalendarDefault ( id );
}
void KOCalEditView::selectCalAlarm(int id ,bool b )
{
KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b;
emit alarmEnabled ( id , b );
emit needsUpdate();
}
void KOCalEditView::selectReadOnly(int id ,bool b )
{
KOPrefs::instance()->getCalendar( id )->isReadOnly = b;
emit calendarReadonly ( id , b );
+ if ( KOPrefs::instance()->getCalendar( id )->isStandard && b && id > 1 ) {
+ KOPrefs::instance()->getCalendar( id )->isStandard = false;
+ KOPrefs::instance()->getCalendar( 1 )->isStandard = true;
+ emit setCalendarDefault ( 1 );
+ }
emit needsUpdate();
+ QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
}
void KOCalEditView::setColor( const QColor& c, int id )
{
KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
emit needsUpdate();
}
void KOCalEditView::deleteCal( int id )
{
KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
QString name = kkf->mName;
QString file = kkf->mFileName;
if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b><tr> Do you want to remove this calendar from KO/Pi? (The file is not removed, of course!)").arg(name).arg(file) ) != KMessageBox::Continue ) return;
if ( kkf->isStandard )
selectStdCal( 1, true );
emit removeCalendar ( id );
KOPrefs::instance()->mCalendars.remove ( kkf );
emit needsUpdate();
- readConfig();
+ QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
}
void KOCalEditView::infoCal( int id )
{
QString name = KOPrefs::instance()->getCalendar( id )->mName;
QString file = KOPrefs::instance()->getCalendar( id )->mFileName;
if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) {
if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) {
emit calendarAdded( id );
- readConfig();
emit needsUpdate();
+ QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
}
}
else
KMessageBox::information( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file) );
}
void KOCalEditView::readConfig()
{
mStdandardB.clear();
mEnabledB.clear();
mAlarmB.clear();
mROB.clear();
if ( mw ) delete mw;
mw = new QWidget ( this );
ml->addWidget ( mw );
mainLayout = new QGridLayout ( mw , 2, 8 );
//mainLayout->setSpacing( 3 );
QPushButton * addBut = new QPushButton ( mw );
mainLayout->addWidget( addBut,0,0 );
addBut->setPixmap ( SmallIcon("plus"));
connect(addBut,SIGNAL(clicked()),SLOT(addCal()));
addBut->setMaximumWidth( addBut->sizeHint().height() );
addBut = new QPushButton ( mw );
mainLayout->addWidget( addBut,0,1 );
addBut->setPixmap ( SmallIcon("eye"));
connect(addBut,SIGNAL(clicked()),SLOT(enableAll()));
addBut->setMaximumWidth( addBut->sizeHint().height() );
QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", mw );
mainLayout->addWidget( lab,0,2 );
addBut = new QPushButton ( mw );
mainLayout->addWidget( addBut,0,3 );
addBut->setPixmap ( SmallIcon("bell"));
connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm()));
addBut->setMaximumWidth( addBut->sizeHint().height() );
addBut = new QPushButton ( mw );
mainLayout->addWidget( addBut,0,4 );
addBut->setPixmap ( SmallIcon("pencil"));
connect(addBut,SIGNAL(clicked()),SLOT(disableRO()));
addBut->setMaximumWidth( addBut->sizeHint().height() );
lab = new QLabel ( i18n(" Color "), mw );
mainLayout->addWidget( lab,0,5 );
#if 0
addBut = new QPushButton ( mw );
mainLayout->addWidget( addBut,0,6 );
addBut->setPixmap ( SmallIcon("minus"));
connect(addBut,SIGNAL(clicked()),SLOT(deleteAll()));
addBut->setMaximumWidth( addBut->sizeHint().height() );
#endif
KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
int row = 1;
while ( kkf ) {
KOCalCheckButton* cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,0 );mStdandardB.append( cb );
cb->setChecked( kkf->isStandard );
cb->setNum( kkf->mCalNumber );
connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectStdCal(int,bool) ) );
- if ( kkf->mErrorOnLoad )
+ if ( kkf->mErrorOnLoad || kkf->isReadOnly )
cb->setEnabled( false );
cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,1 );mEnabledB.append( cb );
cb->setChecked( kkf->isEnabled );
cb->setNum( kkf->mCalNumber );
if ( kkf->mErrorOnLoad )
cb->setEnabled( false );
connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) );
KOCalButton* name = new KOCalButton( mw );
name->setNum( kkf->mCalNumber );
name->setText( kkf->mName );
mainLayout->addWidget( name,row,2 );
connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) );
cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,3 );mAlarmB.append( cb );
cb->setChecked( kkf->isAlarmEnabled );
cb->setNum( kkf->mCalNumber );
connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) );
if ( kkf->mErrorOnLoad )
cb->setEnabled( false );
cb = new KOCalCheckButton( mw );
mainLayout->addWidget( cb,row,4 );mROB.append( cb );
cb->setChecked( kkf->isReadOnly );
cb->setNum( kkf->mCalNumber );
connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) );
if ( kkf->mErrorOnLoad )
cb->setEnabled( false );
KColorButton *colb = new KColorButton( mw );
mainLayout->addWidget( colb,row,5 );
colb->setID( kkf->mCalNumber );
colb->setColor( kkf->mDefaultColor );
connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) );
if ( row > 1) {
KOCalButton* calb = new KOCalButton( mw );
mainLayout->addWidget( calb,row,6 );
calb->setNum( kkf->mCalNumber );
calb->setPixmap ( SmallIcon("minus"));
connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) );
int hei = calb->sizeHint().height();
//calb->setMaximumSize( hei*9/10, hei*9/10 );
}
++row;
kkf = KOPrefs::instance()->mCalendars.next();
}
lab = new QLabel ( "", mw );
mainLayout->addWidget( lab,row,0 );
mw->show();
}
void KOCalEditView::addCal()
{
KONewCalPrefs prefs ( this );
if ( ! prefs.exec() )
return;
QString name = prefs.calName();
QString file = prefs.calFileName();
QFileInfo fi ( file );
if (!fi.exists() ) {
KMessageBox::information( this, i18n("File does not exist!\nNo calendar added!"));
return;
}
KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar();
kkf->mName = name;
kkf->mFileName = file;
emit calendarAdded( kkf->mCalNumber );
- readConfig();
emit needsUpdate();
+ QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
}
void KOCalEditView::enableAll()
{
toggleList( mEnabledB );
}
void KOCalEditView::enableAlarm()
{
toggleList( mAlarmB );
}
void KOCalEditView::disableRO()
{
toggleList( mROB );
}
void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list )
{
bool dis = false;
KOCalCheckButton* it = list.first();
while ( it ) {
if ( !it->isChecked() ) {
dis = true;
break;
}
it = list.next();
}
it = list.first();
while ( it ) {
it->setChecked(dis);
it = list.next();
}
}
void KOCalEditView::deleteAll()
{
qDebug("delteAll");
}
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index 4a0cd8a..1849e36 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -1,156 +1,156 @@
/*
This file is part of KOrganizer.
Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#ifndef KOFILTERVIEW_H
#define KOFILTERVIEW_H
#include <qstring.h>
#include <qcheckbox.h>
#include <qpushbutton.h>
#include <kconfig.h>
#include "kofilterview_base.h"
#include <libkcal/calfilter.h>
class QGridLayout;
using namespace KCal;
class KOCalButton : public QPushButton
{
Q_OBJECT
public:
KOCalButton( QWidget *parent=0, const char *name=0 ) :
QPushButton( parent, name)
{
connect( this, SIGNAL( clicked() ),
SLOT( bottonClicked() ));
mNumber = -1;
}
void setNum ( int num ) {mNumber = num; }
signals:
void selectNum ( int );
private:
int mNumber;
void keyPressEvent ( QKeyEvent * e )
{
e->ignore();
}
private slots :
void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }
};
class KOCalCheckButton : public QCheckBox
{
Q_OBJECT
public:
KOCalCheckButton( QWidget *parent=0, const char *name=0 ) :
QCheckBox( parent, name)
{
connect( this, SIGNAL( toggled ( bool ) ),
SLOT( bottonClicked( bool ) ));
mNumber = -1;
//setMaximumWidth( 10 );
}
void setNum ( int num ) {mNumber = num; }
signals:
void selectNum ( int, bool );
private:
int mNumber;
void keyPressEvent ( QKeyEvent * e )
{
e->ignore();
}
private slots :
void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
};
class KOFilterView : public KOFilterView_base
{
Q_OBJECT
public:
KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0);
~KOFilterView();
void updateFilters();
bool filtersEnabled();
void setFiltersEnabled(bool);
CalFilter *selectedFilter();
void setSelectedFilter(QString);
void setSelectedFilter( int );
signals:
void filterChanged();
void editFilters();
private:
QPtrList<CalFilter> *mFilters;
};
class KOCalEditView : public QWidget
{
Q_OBJECT
public:
KOCalEditView( QWidget* parent=0,const char* name=0);
~KOCalEditView();
- void readConfig();
public slots:
void addCal();
void enableAll();
void enableAlarm();
void disableRO();
void deleteAll();
void selectStdCal(int,bool );
void selectCal(int,bool );
void selectCalAlarm(int,bool );
void selectReadOnly(int,bool );
void setColor(const QColor &,int) ;
void deleteCal(int) ;
void infoCal(int) ;
+ void readConfig();
signals:
void alarmEnabled ( int cal, bool enable );
void calendarEnabled ( int cal, bool enable );
void calendarReadonly ( int cal, bool readonly );
void setCalendarDefault ( int cal );
void removeCalendar ( int cal );
void calendarAdded( int );
void needsUpdate();
private:
QVBoxLayout* ml;
QWidget *mw;
void toggleList ( QPtrList<KOCalCheckButton> );
QPtrList<KOCalCheckButton> mStdandardB;
QPtrList<KOCalCheckButton> mEnabledB;
QPtrList<KOCalCheckButton> mAlarmB;
QPtrList<KOCalCheckButton> mROB;
QGridLayout* mainLayout;
};
#endif // KOFILTERVIEW_H