summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-23 18:47:45 (UTC)
committer zautrix <zautrix>2005-02-23 18:47:45 (UTC)
commit31f24d21cd23bb7e4033e7ffa000e6c979133ce7 (patch) (side-by-side diff)
tree2fa81f67efc6544a3664e6039a9602ef6f3466b9
parentfaedffc5ce8391204e0340a21eaaf582319ac824 (diff)
downloadkdepimpi-31f24d21cd23bb7e4033e7ffa000e6c979133ce7.zip
kdepimpi-31f24d21cd23bb7e4033e7ffa000e6c979133ce7.tar.gz
kdepimpi-31f24d21cd23bb7e4033e7ffa000e6c979133ce7.tar.bz2
many focus fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp54
-rw-r--r--korganizer/calendarview.h3
-rw-r--r--korganizer/koeventviewer.h2
-rw-r--r--korganizer/koeventviewerdialog.cpp21
-rw-r--r--korganizer/koeventviewerdialog.h10
-rw-r--r--korganizer/kolistview.cpp8
-rw-r--r--korganizer/kolistview.h1
-rw-r--r--korganizer/kotodoview.cpp22
-rw-r--r--korganizer/mainwindow.cpp1
9 files changed, 111 insertions, 11 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 3dac20b..1009956 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -228,12 +228,16 @@ CalendarView::CalendarView( Calendar *calendar,
{
mEventEditor = 0;
mTodoEditor = 0;
- init();}
+ init();
+}
void CalendarView::init()
{
+
+ setFocusPolicy ( WheelFocus );
+ mViewerCallerIsSearchDialog = false;
mBlockShowDates = false;
beamDialog = new KOBeamPrefs();
mDatePickerMode = 0;
mCurrentSyncDevice = "";
@@ -2619,8 +2623,9 @@ void CalendarView::cloneIncidence(Incidence * orgInc )
} else {
delete e;
}
}
+ setActiveWindow();
}
void CalendarView::newEvent()
{
@@ -2676,8 +2681,10 @@ void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
}
if ( filter )
mEventEditor->setSecrecy( filter->getSecrecy() );
}
+ mEventEditor->exec();
+ setActiveWindow();
}
void CalendarView::todoAdded(Todo * t)
{
@@ -2712,8 +2719,10 @@ void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
}
if ( filter )
mTodoEditor->setSecrecy( filter->getSecrecy() );
}
+ mTodoEditor->exec();
+ setActiveWindow();
}
void CalendarView::newTodo()
{
@@ -2729,9 +2738,11 @@ void CalendarView::newSubTodo()
void CalendarView::newSubTodo(Todo *parentEvent)
{
showTodoEditor();
- mTodoEditor->newTodo(QDateTime(),parentEvent,true);
+ mTodoEditor->newTodo(QDateTime(),parentEvent,true);
+ mTodoEditor->exec();
+ setActiveWindow();
}
void CalendarView::newFloatingEvent()
{
@@ -2752,8 +2763,11 @@ void CalendarView::editEvent( Event *event )
return;
}
showEventEditor();
mEventEditor->editEvent( event , mFlagEditDescription);
+ mEventEditor->exec();
+ setActiveWindow();
+
}
void CalendarView::editJournal( Journal *jour )
{
if ( !jour ) return;
@@ -2770,8 +2784,10 @@ void CalendarView::editTodo( Todo *todo )
return;
}
showTodoEditor();
mTodoEditor->editTodo( todo ,mFlagEditDescription);
+ mTodoEditor->exec();
+ setActiveWindow();
}
KOEventViewerDialog* CalendarView::getEventViewerDialog()
@@ -2783,8 +2799,10 @@ KOEventViewerDialog* CalendarView::getEventViewerDialog()
connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
viewManager(), SLOT( showAgendaView( bool ) ) );
+ connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
+ this, SLOT( slotViewerClosed() ) );
connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
this, SLOT( todoChanged(Todo *) ) );
mEventViewerDialog->resize( 640, 480 );
@@ -3737,8 +3755,9 @@ void CalendarView::dialogClosing(Incidence *in)
}
void CalendarView::showIncidence()
{
+ mViewerCallerIsSearchDialog = false;
Incidence *incidence = currentSelection();
if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
if ( incidence ) {
ShowIncidenceVisitor v;
@@ -3772,8 +3791,15 @@ void CalendarView::deleteIncidence()
}
void CalendarView::showIncidence(Incidence *incidence)
{
+ mViewerCallerIsSearchDialog = false;
+ //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
+ if ( sender() && mDialogManager->getSearchDialog() ) {
+ if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
+ mViewerCallerIsSearchDialog = true;
+ }
+ }
if ( incidence ) {
ShowIncidenceVisitor v;
v.act( incidence, this );
}
@@ -3921,4 +3947,28 @@ void CalendarView::undo_delete()
mCalendar->undoDeleteIncidence();
updateView();
}
}
+
+void CalendarView::slotViewerClosed()
+{
+ QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
+}
+
+void CalendarView::resetFocus()
+{
+ if ( mViewerCallerIsSearchDialog ) {
+ if ( mDialogManager->getSearchDialog()->isVisible() ){
+ mDialogManager->getSearchDialog()->raise();
+ mDialogManager->getSearchDialog()->setActiveWindow();
+ mDialogManager->getSearchDialog()->listview()->resetFocus();
+ } else
+ mViewerCallerIsSearchDialog = false;
+ }
+ if ( !mViewerCallerIsSearchDialog ) {
+ //mViewManager->currentView()->setFocus();
+ //qDebug("sssssssssssssssset focus ");
+ setActiveWindow();
+ //setFocus();
+ }
+ mViewerCallerIsSearchDialog = false;
+}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index e626ea3..664d700 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -455,8 +455,10 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
void setSyncName( QString );
void showDay( QDate );
void undo_delete();
protected slots:
+ void resetFocus();
+ void slotViewerClosed();
void timerAlarm();
void suspendAlarm();
void beamDone( Ir *ir );
/** Select a view or adapt the current view to display the specified dates. */
@@ -494,8 +496,9 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
void writeLocale();
Todo *selectedTodo();
private:
+ bool mViewerCallerIsSearchDialog;
bool mBlockShowDates;
KSyncManager* mSyncManager;
AlarmDialog * mAlarmDialog;
QString mAlarmNotification;
diff --git a/korganizer/koeventviewer.h b/korganizer/koeventviewer.h
index d8142ca..2d4a08e 100644
--- a/korganizer/koeventviewer.h
+++ b/korganizer/koeventviewer.h
@@ -69,8 +69,8 @@ class KOEventViewer : public QTextBrowser {
QString mText;
QString mMailSubject;
Incidence* mCurrentIncidence;
signals:
- void launchaddressbook(QString uid);
+ void launchaddressbook(QString uid);
};
#endif
diff --git a/korganizer/koeventviewerdialog.cpp b/korganizer/koeventviewerdialog.cpp
index 23e62d3..8bada3b 100644
--- a/korganizer/koeventviewerdialog.cpp
+++ b/korganizer/koeventviewerdialog.cpp
@@ -19,8 +19,9 @@
#include <klocale.h>
#include <libkcal/event.h>
+#include <qtimer.h>
#include <qpushbutton.h>
#include "koeventviewer.h"
#include "koprefs.h"
@@ -38,9 +39,9 @@ KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name)
false,
#endif
i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda"))
{
-
+ sendSignalViewerClosed = true;
mEventViewer = new KOEventViewer(this);
mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
setMainWidget(mEventViewer);
setButtonText(Ok, i18n("Edit") );
@@ -188,8 +189,9 @@ void KOEventViewerDialog::addText(QString text)
//findButton( Close )->setFocus();
}
void KOEventViewerDialog::editIncidence()
{
+ sendSignalViewerClosed = false;
if ( mSyncMode ) {
mSyncResult = 2;
accept();
return;
@@ -202,9 +204,9 @@ void KOEventViewerDialog::editIncidence()
}
}
void KOEventViewerDialog::showIncidence()
{
-
+ sendSignalViewerClosed = false;
if ( mSyncMode ) {
mSyncResult = 1;
accept();
return;
@@ -263,4 +265,19 @@ void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e )
break;
}
}
+void KOEventViewerDialog::hideEvent ( QHideEvent * e )
+{
+ KDialogBase::hideEvent ( e );
+ QTimer::singleShot( 1, this, SLOT (slotViewerClosed() ) );
+}
+
+void KOEventViewerDialog::slotViewerClosed()
+{
+ if ( sendSignalViewerClosed ) {
+ //qDebug("KOEventViewerDialog::hideEvent ");
+ emit signalViewerClosed();
+ }
+ sendSignalViewerClosed = true;
+}
+
diff --git a/korganizer/koeventviewerdialog.h b/korganizer/koeventviewerdialog.h
index b6b4103..36431ad 100644
--- a/korganizer/koeventviewerdialog.h
+++ b/korganizer/koeventviewerdialog.h
@@ -54,14 +54,18 @@ class KOEventViewerDialog : public KDialogBase {
signals:
void editIncidence( Incidence* );
void jumpToTime( const QDate &);
void showAgendaView( bool );
- void todoCompleted(Todo*);
+ void todoCompleted(Todo*);
+ void signalViewerClosed();
private slots:
+ void slotViewerClosed();
void editIncidence();
- void showIncidence();
-
+ void showIncidence();
+ protected:
+ void hideEvent ( QHideEvent * e );
private:
+ bool sendSignalViewerClosed;
bool mSyncMode;
int mSyncResult;
KOEventViewer *mEventViewer;
Incidence* mIncidence;
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 4a6e17d..6acee75 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -783,9 +783,12 @@ void KOListView::showDates()
void KOListView::hideDates()
{
showDates(false);
}
-
+void KOListView::resetFocus()
+{
+ mListView->setFocus();
+}
void KOListView::updateView()
{
mListView->setFocus();
if ( mListView->firstChild () )
@@ -1074,13 +1077,14 @@ void KOListViewListView::keyPressEvent ( QKeyEvent *e)
cn = currentItem();
if ( cn ) {
KOListViewItem* ci = (KOListViewItem*)( cn );
if ( ci ){
- emit showIncidence( ci->data());
+ //emit showIncidence( ci->data());
cn = cn->nextSibling();
if ( cn ) {
setCurrentItem ( cn );
ensureItemVisible ( cn );
+ emit showIncidence( ci->data());
}
}
}
e->accept();
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index bd5bd12..c86449d 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -253,8 +253,9 @@ class KOListView : public KOEventView
void updateList();
void setStartDate(const QDate &start);
int count();
QString getWhatsThisText(QPoint p);
+ void resetFocus();
signals:
void signalNewEvent();
void beamIncidenceList(QPtrList<Incidence>);
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 3483e95..5e8ea27 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -604,8 +604,13 @@ void KOTodoView::updateView()
}
//qDebug("update ");
// kdDebug() << "KOTodoView::updateView()" << endl;
QFont fo = KOPrefs::instance()->mTodoViewFont;
+ Incidence* oldInc = 0;
+ mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
+ if (mActiveItem)
+ oldInc = mActiveItem->todo();
+
mTodoListView->clear();
if ( mName == "todolistsmall" ) {
if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
int ps = fo.pointSize() -2;
@@ -685,8 +690,25 @@ void KOTodoView::updateView()
mTodoListView->blockSignals( true );
if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
mTodoListView->blockSignals( false );
mTodoListView->setFocus();
+ if ( mTodoListView->firstChild () ) {
+ if ( oldInc ) {
+ KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild ();
+ while ( item ) {
+ if ( item->todo() == oldInc ) {
+ mTodoListView->setCurrentItem( item );
+ mTodoListView->ensureItemVisible( item );
+ break;
+ }
+ item = (KOTodoViewItem*)item->itemBelow();
+ }
+ if ( ! item )
+ mTodoListView->setCurrentItem( mTodoListView->firstChild () );
+ } else {
+ mTodoListView->setCurrentItem( mTodoListView->firstChild () );
+ }
+ }
processSelectionChange();
}
bool KOTodoView::checkTodo( Todo * todo )
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 4f2cccf..2de7f28 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -286,9 +286,8 @@ MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
SLOT( updateWeekNum( const KCal::DateList & ) ) );
mBRdisabled = false;
//toggleBeamReceive();
- setFocusPolicy ( WheelFocus );
}
MainWindow::~MainWindow()
{
//qDebug("MainWindow::~MainWindow() ");