#include #include #include #include #include // defined kdDebug() #include // defines i18n (microkde) #include "kabprefs.h" #ifndef DESKTOP_VERSION #include #include #include #else #include #include #include #endif /* #include #include #include #include #include #include #include #include #include #include #ifndef DESKTOP_VERSION #include #include #include #include #include #include #include #else #include #include #include //#include #endif #include #include //#include "calendarview.h" //#include "koviewmanager.h" //#include "koagendaview.h" //#include "kodialogmanager.h" //#include "kdialogbase.h" //#include "koprefs.h" //#include "kfiledialog.h" //#include "koglobals.h" //#include "kconfig.h" //#include "simplealarmclient.h" */ //US using namespace KACore; #include "mainwindow.h" MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : QMainWindow( parent, name ) { #ifdef DESKTOP_VERSION setFont( QFont("Arial"), 14 ); #endif // mBlockAtStartup = true; kdDebug() << "MainWindow()::MainWindow()" << endl; // mFlagKeyPressed = false; setCaption("KAddressbook/Pi"); KABPrefs *p = KABPrefs::instance(); if ( QApplication::desktop()->height() > 480 ) { //US if ( p->mHourSize == 4 ) //US p->mHourSize = 6; } QMainWindow::ToolBarDock tbd; if ( p->mToolBarHor ) { if ( p->mToolBarUp ) tbd = Bottom; else tbd = Top; } else { if ( p->mToolBarUp ) tbd = Right; else tbd = Left; } iconToolBar = new QPEToolBar( this ); addToolBar (iconToolBar , tbd ); /*US mBlockSaveFlag = false; mCalendarModifiedFlag = false; */ QLabel* splash = new QLabel(i18n("KA/Pi is starting ... "), this ); splash->setAlignment ( AlignCenter ); setCentralWidget( splash ); #ifndef DESKTOP_VERSION showMaximized(); #endif qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); // setDefaultPreferences(); /* mCalendar = new CalendarLocal(); mView = new CalendarView( mCalendar, this,"mCalendar " ); mView->hide(); //mView->resize(splash->size() ); */ initActions(); #ifndef DESKTOP_VERSION //US iconToolBar->show(); qApp->processEvents(); #endif qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); int vh = height() ; int vw = width(); qDebug("Toolbar hei %d ",iconToolBar->height() ); /*US if ( iconToolBar->orientation () == Qt:: Horizontal ) { vh -= iconToolBar->height(); } else { vw -= iconToolBar->height(); } */ //mView->setMaximumSize( splash->size() ); //mView->resize( splash->size() ); //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); /* mView->readSettings(); if( !QFile::exists( defaultFileName() ) ) { mView->saveCalendar( defaultFileName() ); } mView->openCalendar( defaultFileName() ); processIncidenceSelection( 0 ); connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), SLOT( processIncidenceSelection( Incidence * ) ) ); connect( mView, SIGNAL( modifiedChanged( bool ) ), SLOT( slotModifiedChanged( bool ) ) ); connect( mView, SIGNAL( signalmodified() ), SLOT( checkAlarms( ) ) ); connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); connect( &alarmTimer, SIGNAL( timeout() ), SLOT( writeAlarm() ) ); mView->setModified( false ); mBlockAtStartup = false; mView->setModified( false ); setCentralWidget( mView ); mView->show(); */ delete splash; qApp->processEvents(); //US qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); } MainWindow::~MainWindow() { qDebug("MainWindow::~MainWindow() "); kdDebug() << "MainWindow()::~MainWindow()" << endl; //save toolbar location /* KOPrefs *p = KOPrefs::instance(); p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); p->mToolBarUp = iconToolBar->x() > width()/2 || iconToolBar->y() > height()/2; alarmTimer.stop(); mView->writeSettings(); writeAlarm(); if ( mCalendarModifiedFlag ) save(); delete mCalendar; */ } void MainWindow::closeEvent( QCloseEvent* ce ) { if ( ! KABPrefs::instance()->mAskForQuit ) { ce->accept(); return; } switch( QMessageBox::information( this, "KA/Pi", i18n("Do you really want\nto close KA/Pi?"), i18n("Close!"), i18n("No"), 0, 0 ) ) { case 0: ce->accept(); break; case 1: ce->ignore(); break; case 2: default: break; } } void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) { /* QDataStream stream( data, IO_ReadOnly ); // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); if ( cmsg == "-writeFile" ) { mView->viewManager()->showWhatsNextView(); save(); setCaption( i18n("File written on AD request")); showMaximized(); raise(); #ifndef DESKTOP_VERSION QCopEnvelope e3("kosaved", "blabla"); #endif return; } if ( cmsg == "-newCountdown" ) { qDebug("newCountdown "); } QString msg ;; QString allmsg = cmsg; while ( allmsg.length() > 0 ) { int nextC = allmsg.find( "-", 1 ); if ( nextC == -1 ) { msg = allmsg; allmsg = ""; } else{ msg = allmsg.left( nextC ); allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); } //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); if ( msg == "-newEvent" ) { mView->newEvent(); } if ( msg == "-newTodo" ) { mView->newTodo(); } if ( msg == "-showWN" ) { mView->viewManager()->showWhatsNextView(); } if ( msg == "-showTodo" ) { mView->viewManager()->showTodoView(); } if ( msg == "-showList" ) { mView->viewManager()->showListView(); } else if ( msg == "-showDay" ) { mView->viewManager()->showDayView(); } else if ( msg == "-showWWeek" ) { mView->viewManager()->showWorkWeekView(); } else if ( msg == "-showWeek" ) { mView->viewManager()->showWeekView(); } else if ( msg == "-showTodo" ) { mView->viewManager()->showTodoView(); } else if ( msg == "-showJournal" ) { mView->viewManager()->showJournalView(); } else if ( msg == "-showKO" ) { mView->viewManager()->showNextXView(); } else if ( msg == "-showWNext" ) { mView->viewManager()->showWhatsNextView(); } } showMaximized(); raise(); */ } QPixmap MainWindow::loadPixmap( QString name ) { return KGlobal::iconLoader().loadPixmap( name ); /*US use the advanced version of the iconloader #ifdef DESKTOP_VERSION QPixmap pixmapLoader; QString file; file = QDir::homeDirPath()+"/kaddressbook/pics/" + name+".png"; //qDebug("pixmap name %s ", file.latin1()); pixmapLoader.load( file ); return pixmapLoader; #else return Resource::loadPixmap( name ); #endif */ } void MainWindow::initActions() { iconToolBar->clear(); KABPrefs *p = KABPrefs::instance(); QPEMenuBar *menuBar1 = new QPEMenuBar( iconToolBar ); QPopupMenu *menuBar = new QPopupMenu( this ); menuBar1->insertItem( "ME", menuBar); QPopupMenu *fileMenu = new QPopupMenu( this ); QPopupMenu *editMenu = new QPopupMenu( this ); QPopupMenu *viewMenu = new QPopupMenu( this ); QPopupMenu *settingsMenu = new QPopupMenu( this ); QPopupMenu *importMenu = new QPopupMenu( this ); menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); QIconSet icon; icon = loadPixmap( pathString + "newtodo" ); configureToolBarMenu->insertItem(icon, "New todo", 20 ); QAction* nt_action = new QAction( "New Todo", icon, "New Todo...", 0, this ); nt_action->addTo( actionMenu ); connect( nt_action, SIGNAL( activated() ), mView, SLOT( newTodo() ) ); /* QAction *action; QIconSet icon; // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); configureToolBarMenu = new QPopupMenu( this ); configureToolBarMenu->setCheckable( true ); #ifdef DESKTOP_VERSION QString pathString = ""; #else QString pathString = "kaddressbook/"; #endif if ( QApplication::desktop()->width() < 480 ) pathString += "icons16/"; configureAgendaMenu = new QPopupMenu( menuBar ); configureAgendaMenu->setCheckable( true ); configureAgendaMenu->insertItem("Toggle Allday", 1 ); configureAgendaMenu->insertSeparator(); configureAgendaMenu->insertItem("Tiny", 4 ); configureAgendaMenu->insertItem("Small", 6 ); configureAgendaMenu->insertItem("Medium", 8 ); configureAgendaMenu->insertItem("Normal", 10 ); configureAgendaMenu->insertItem("Large", 12 ); configureAgendaMenu->insertItem("Big", 14 ); configureAgendaMenu->insertItem("Bigger", 16 ); configureAgendaMenu->insertItem("Biggest", 18 ); //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); icon = loadPixmap( pathString + "newevent" ); icon = loadPixmap( pathString + "newevent" ); configureToolBarMenu->insertItem("Stretched TB", 5 ); configureToolBarMenu->insertSeparator(); configureToolBarMenu->insertItem(icon, "New event", 10 ); QAction* ne_action = new QAction( "New Event", icon, "New Event...", 0, this ); ne_action->addTo( actionMenu ); */ /* connect( ne_action, SIGNAL( activated() ), mView, SLOT( newEvent() ) ); icon = loadPixmap( pathString + "newtodo" ); configureToolBarMenu->insertItem(icon, "New todo", 20 ); QAction* nt_action = new QAction( "New Todo", icon, "New Todo...", 0, this ); nt_action->addTo( actionMenu ); connect( nt_action, SIGNAL( activated() ), mView, SLOT( newTodo() ) ); action = new QAction( "Toggle FilterView", QPixmap(), "Toggle FilterView", 0, this ); action->addTo( viewMenu ); connect( action, SIGNAL( activated() ), mView, SLOT( toggleFilter() ) ); viewMenu->insertSeparator(); icon = loadPixmap( pathString + "picker" ); action = new QAction( "Date Picker", icon, "Date Picker", 0, this ); action->addTo( viewMenu ); connect( action, SIGNAL( activated() ), mView, SLOT( showDatePicker() ) ); action->addTo( iconToolBar ); viewMenu->insertSeparator(); icon = loadPixmap( pathString + "list" ); configureToolBarMenu->insertItem(icon, "Event list", 30 ); QAction* showlist_action = new QAction( "List", icon, "List", 0, this ); showlist_action->addTo( viewMenu ); connect( showlist_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showListView() ) ); icon = loadPixmap( pathString + "day" ); configureToolBarMenu->insertItem(icon, "One day", 40 ); QAction* day1_action = new QAction( "Day", icon, "Day", 0, this ); day1_action->addTo( viewMenu ); // action->addTo( toolBar ); connect( day1_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showDayView() ) ); icon = loadPixmap( pathString + "workweek" ); configureToolBarMenu->insertItem(icon, "Work week", 50 ); QAction* day5_action = new QAction( "Work Week", icon, "Work Week", 0, this ); day5_action->addTo( viewMenu ); connect( day5_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showWorkWeekView() ) ); icon = loadPixmap( pathString + "week" ); configureToolBarMenu->insertItem(icon, "Week", 60 ); QAction* day7_action = new QAction( "Week", icon, "Week", 0, this ); day7_action->addTo( viewMenu ); connect( day7_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showWeekView() ) ); icon = loadPixmap( pathString + "month" ); configureToolBarMenu->insertItem(icon, "Month", 70 ); QAction* month_action = new QAction( "Month", icon, "Month", 0, this ); month_action->addTo( viewMenu ); connect( month_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showMonthView() ) ); icon = loadPixmap( pathString + "todo" ); configureToolBarMenu->insertItem(icon, "Todo list", 80 ); QAction* todoview_action = new QAction( "Todo", icon, "Todo", 0, this ); todoview_action->addTo( viewMenu ); connect( todoview_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showTodoView() ) ); icon = loadPixmap( pathString + "journal" ); configureToolBarMenu->insertItem(icon, "Journal", 90 ); QAction* viewjournal_action = new QAction( "Journal", icon, "Journal", 0, this ); viewjournal_action->addTo( viewMenu ); connect( viewjournal_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showJournalView() ) ); icon = loadPixmap( pathString + "xdays" ); configureToolBarMenu->insertItem(icon, "Next days", 100,4 ); QAction* xdays_action = new QAction( "Next days", icon, "Next Days", 0, this ); xdays_action->addTo( viewMenu ); connect( xdays_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showNextXView() ) ); icon = loadPixmap( pathString + "whatsnext" ); configureToolBarMenu->insertItem(icon, "Whats next", 110, 4 ); QAction* whatsnext_action = new QAction( "What's Next", icon, "What's Next", 0, this ); whatsnext_action->addTo( viewMenu ); connect( whatsnext_action, SIGNAL( activated() ), mView->viewManager(), SLOT( showWhatsNextView() ) ); #if 0 action = new QAction( "view_timespan", "Time Span", 0, this ); action->addTo( viewMenu ); connect( action, SIGNAL( activated() ), mView->viewManager(), SLOT( showTimeSpanView() ) ); #endif menuBar->insertItem( "View", viewMenu ); #if 0 QPopupMenu *navigationMenu = new QPopupMenu( menuBar ); action = new QAction( "Go backward", "Go Backward", 0, navigationMenu ); action->addTo( navigationMenu ); connect( action, SIGNAL( activated() ), mView, SLOT( goPrevious() ) ); action = new QAction( "Go forward", "Go Forward", 0, navigationMenu ); action->addTo( navigationMenu ); connect( action, SIGNAL( activated() ), mView, SLOT( goNext() ) ); menuBar->insertItem( "Go", navigationMenu ); #endif mNewSubTodoAction = new QAction( "new_subtodo", "New Sub-Todo...", 0, this ); mNewSubTodoAction->addTo( actionMenu ); connect( mNewSubTodoAction, SIGNAL( activated() ), mView, SLOT( newSubTodo() ) ); actionMenu->insertSeparator(); mShowAction = new QAction( "show_incidence", "Show...", 0, this ); mShowAction->addTo( actionMenu ); connect( mShowAction, SIGNAL( activated() ), mView, SLOT( showIncidence() ) ); mEditAction = new QAction( "edit_incidence", "Edit...", 0, this ); mEditAction->addTo( actionMenu ); connect( mEditAction, SIGNAL( activated() ), mView, SLOT( editIncidence() ) ); mDeleteAction = new QAction( "delete_incidence", "Delete...", 0, this ); mDeleteAction->addTo( actionMenu ); connect( mDeleteAction, SIGNAL( activated() ), mView, SLOT( deleteIncidence() ) ); actionMenu->insertSeparator(); action = new QAction( "purge_completed", i18n("Purge Completed"), 0, this ); action->addTo( actionMenu ); connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); icon = loadPixmap( pathString + "search" ); QAction* search_action = new QAction( "search", icon, "Search...", 0, this ); configureToolBarMenu->insertItem(icon, "Search", 120 , 4); search_action->addTo( actionMenu ); connect( search_action, SIGNAL( activated() ), mView->dialogManager(), SLOT( showSearchDialog() ) ); icon = loadPixmap( pathString + "today" ); configureToolBarMenu->insertItem(icon, "Today", 130); QAction* today_action = new QAction( "Today", icon, "Go to Today", 0, this ); today_action->addTo( actionMenu ); connect( today_action, SIGNAL( activated() ), mView, SLOT( goToday() ) ); //#if 0 actionMenu->insertSeparator(); action = new QAction( "configure", "Configure...", 0, this ); action->addTo( actionMenu ); connect( action, SIGNAL( activated() ), mView, SLOT( edit_options() ) ); //#endif // actionMenu->insertSeparator(); action = new QAction( "import_qtopia", "Import (*.ics/*.vcs) file", 0, this ); action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); action = new QAction( "import_quick", "Import last file", 0, this ); action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); importMenu->insertSeparator(); action = new QAction( "import_qtopia", "Import Opie/Qtopia Cal.", 0, this ); action->addTo( importMenu ); importMenu->insertSeparator(); connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); action = new QAction( "load_cal", "Load Calendar Backup", 0, this ); action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); action = new QAction( "save_cal", "Save Calendar Backup", 0, this ); action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); importMenu->insertSeparator(); action = new QAction( "import_qtopia", "Export VCalendar", 0, this ); action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); QPopupMenu *syncMenu = new QPopupMenu( this ); action = new QAction( "syncssh", "Remote via ssh/scp(not implemented)", 0, this ); action->addTo( syncMenu ); connect( action, SIGNAL( activated() ), SLOT( syncSSH() ) ); action = new QAction( "synclocal", "With local file(not implemented)", 0, this ); action->addTo( syncMenu ); connect( action, SIGNAL( activated() ), SLOT( syncLocalFile() ) ); action = new QAction( "quicksynclocal", "With last file(not implemented)", 0, this ); action->addTo( syncMenu ); connect( action, SIGNAL( activated() ), SLOT( quickSyncLocalFile() ) ); menuBar->insertItem( "Actions", actionMenu ); menuBar->insertItem( "Load/Save", importMenu ); menuBar->insertItem( "Synchronize", syncMenu ); //menuBar->insertItem( "Configure",configureMenu ); //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); menuBar->insertItem( "AgendaSize",configureAgendaMenu ); menuBar->insertItem( "Toolbar",configureToolBarMenu ); QPopupMenu *helpMenu = new QPopupMenu( menuBar ); icon = loadPixmap( "korganizer/korganizer" ); action = new QAction( "Key bindings", "Key Bindings...", 0, this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( keyBindings() ) ); action = new QAction( "Auto saving", "Auto saving...", 0, this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( aboutAutoSaving() ) ); action = new QAction( "Problemd", "Known Problems...", 0,this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( aboutKnownBugs() ) ); action = new QAction( "about", "About...", 0, this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( about() ) ); menuBar->insertItem( "Help", helpMenu ); */ //menuBar->insertSeparator(); // ****************************************************** // menubar icons iconToolBar->setHorizontalStretchable (true ); //menuBar->insertItem( iconToolBar ); //xdays_action /* if (p-> mShowIconNewEvent) ne_action->addTo( iconToolBar ); if (p->mShowIconNewTodo ) nt_action->addTo( iconToolBar ); if (p-> mShowIconSearch) search_action->addTo( iconToolBar ); if (p-> mShowIconNext) whatsnext_action->addTo( iconToolBar ); if (p-> mShowIconNextDays) xdays_action->addTo( iconToolBar ); if (p-> mShowIconList) showlist_action->addTo( iconToolBar ); if (p-> mShowIconDay1) day1_action->addTo( iconToolBar ); if (p-> mShowIconDay5) day5_action->addTo( iconToolBar ); if (p-> mShowIconDay7) day7_action->addTo( iconToolBar ); if (p-> mShowIconMonth) month_action->addTo( iconToolBar ); if (p-> mShowIconTodoview) todoview_action->addTo( iconToolBar ); if (p-> mShowIconJournal) viewjournal_action->addTo( iconToolBar ); icon = loadPixmap( pathString + "2leftarrowB" ); configureToolBarMenu->insertItem(icon, "Prev. month", 200, 14); if (p-> mShowIconBackFast) { action = new QAction( "Prev month", icon, "Go Backward",0 , this ); connect( action, SIGNAL( activated() ), mView, SLOT( goPreviousMonth() ) ); action->addTo( iconToolBar ); } icon = loadPixmap( pathString + "1leftarrowB" ); configureToolBarMenu->insertItem(icon, "Go previous", 210,15); if (p-> mShowIconBack) { action = new QAction( "Go previous", icon, "Go Backward",0 , this ); connect( action, SIGNAL( activated() ), mView, SLOT( goPrevious() ) ); action->addTo( iconToolBar ); } if (p-> mShowIconToday) today_action->addTo( iconToolBar ); icon = loadPixmap( pathString + "1rightarrowB" ); configureToolBarMenu->insertItem(icon, "Go next", 220); if (p-> mShowIconForward) { action = new QAction( "Go next", icon, "Go Backward",0 , this ); connect( action, SIGNAL( activated() ), mView, SLOT( goNext() ) ); action->addTo( iconToolBar ); } icon = loadPixmap( pathString + "2rightarrowB" ); configureToolBarMenu->insertItem(icon, "Next month", 230); if (p-> mShowIconForwardFast) { action = new QAction( "Next month", icon, "Go Backward",0 , this ); connect( action, SIGNAL( activated() ), mView, SLOT( goNextMonth() ) ); action->addTo( iconToolBar ); } */ configureToolBarMenu->insertItem("WhatsThis", 300); /* if (p-> mShowIconNewEvent) configureToolBarMenu->setItemChecked( 10, true ); if (p->mShowIconNewTodo ) configureToolBarMenu->setItemChecked( 20, true ); if (p-> mShowIconSearch) configureToolBarMenu->setItemChecked( 120, true ); if (p-> mShowIconList) configureToolBarMenu->setItemChecked( 30, true ); if (p-> mShowIconDay1) configureToolBarMenu->setItemChecked( 40, true ); if (p-> mShowIconDay5) configureToolBarMenu->setItemChecked( 50, true ); if (p-> mShowIconDay7) configureToolBarMenu->setItemChecked( 60, true ); if (p-> mShowIconMonth) configureToolBarMenu->setItemChecked( 70, true ); if (p-> mShowIconTodoview) configureToolBarMenu->setItemChecked( 80, true ); if (p-> mShowIconBackFast) configureToolBarMenu->setItemChecked( 200, true ); if (p-> mShowIconBack) configureToolBarMenu->setItemChecked( 210, true ); if (p-> mShowIconToday) configureToolBarMenu->setItemChecked( 130, true ); if (p-> mShowIconForward) configureToolBarMenu->setItemChecked( 220, true ); if (p-> mShowIconForwardFast) configureToolBarMenu->setItemChecked( 230, true ); if (p-> mShowIconNextDays) configureToolBarMenu->setItemChecked( 100, true ); if (p-> mShowIconNext) configureToolBarMenu->setItemChecked( 110, true ); if (p-> mShowIconJournal) configureToolBarMenu->setItemChecked( 90, true ); if (p-> mShowIconWhatsThis) configureToolBarMenu->setItemChecked( 300, true ); QLabel* dummy = new QLabel( iconToolBar ); dummy->setBackgroundColor( iconToolBar->backgroundColor() ); if (!p-> mShowIconStretch) iconToolBar->setStretchableWidget ( dummy ) ; else configureToolBarMenu->setItemChecked( 5, true ); if (p-> mShowIconWhatsThis) QWhatsThis::whatsThisButton ( iconToolBar ); connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); configureAgenda( p->mHourSize ); connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); */ } /* void MainWindow::setDefaultPreferences() { KOPrefs *p = KOPrefs::instance(); p->mCompactDialogs = true; p->mConfirm = true; p->mEnableQuickTodo = false; } */ void MainWindow::about() { QMessageBox::about( this, "About KOrganizer/Pi", "KOrganizer/Platform-independent\n" "(KO/Pi) 1.6.0e - " #ifdef DESKTOP_VERSION "Desktop Edition\n" #else "PDA-Edition\n" "for: Zaurus 5500 / 7x0 / 8x0\n" #endif "(c) 2004 Lutz Rogowski\n" "Email:lutz@pi-sync.net\n" "KO/Pi is based on KOrganizer\n" "(c) 2002,2003 Cornelius Schumacher\n" "Email: schumacher@kde.org\n" "KOrganizer/Pi is licensed\n" "under the GPL.\n" "KO/Pi can be compiled for\n" "Linux, Zaurus-PDA and Windows\n" "www.korganizer.org\n" ); } /* void MainWindow::keyBindings() { QMessageBox* msg; msg = new QMessageBox( "Key bindings KOrganizer/Pi", "Space: Toggle Fullscreen | P: Date Picker\n" "H: This dialog | I: Show info | S: Search\n" "F: Toggle Filterview | 1-4: Select Filter\n" "N: Show next days | W: Whats next\n " "V: Todo view | L: Event list view\n" "T: Goto today | T+: New Todo\n" "E: Edit item | E+: New Event\n" "5: Work week view | 7: Week view\n" "D: One day view | M: Month view\n" "+,- : Zoom in/out Agenda | A: Toggle Allday\n" "+/: Scroll todo view\n" ",C: Next week | +: Next month\n" ",X: Prev. week | +: Prev. month\n" ",: Delete sel. item\n", QMessageBox::NoIcon, QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton ); msg->exec(); delete msg; } void MainWindow::aboutAutoSaving() { QMessageBox* msg; msg = new QMessageBox( "Auto Saving in KOrganizer/Pi", "After changing something, the data is\n" "automatically saved to the file\n" "~/Applications/korganizer/mycalendar.ics\n " "after (configureable) one minute.\n" "For safety reasons there is one autosaving\n" "after 10 minutes (of idle time) again. The \n" "data is saved automatically when closing KO/Pi\n" "You can create a backup file \n" "with: Load/Save - Save Calendar Backup\n", QMessageBox::NoIcon, QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); msg->exec(); delete msg; } void MainWindow::aboutKnownBugs() { QMessageBox* msg; msg = new QMessageBox( "Known Problems in KOrganizer/Pi", "1) The QWhatsThis help is not working.\n" "There is only a black rectangle displayed\n" "when clicking on an event.\n " "2) Audio alarm is available!\n" "as an additional small application\n" "3) Syncing is missing.\n" "Syncing via ssh/scp will be available in\n" "KOrganizer/Pi 2.0\n" "\n" "Please report unexpected behaviour to\n" "lutz@pi-sync.net\n", QMessageBox::NoIcon, QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); msg->exec(); delete msg; } QString MainWindow::defaultFileName() { #ifndef DESKTOP_VERSION return Global::applicationFileName( "korganizer", "mycalendar.ics" ); #else // pending QString file; file = QDir::homeDirPath()+"/korganizer/mycalendar.ics"; return QDir::convertSeparators( file ); #endif } void MainWindow::processIncidenceSelection( Incidence *incidence ) { if ( !incidence ) { enableIncidenceActions( false ); mNewSubTodoAction->setEnabled( false ); setCaptionToDates(); return; } QString startString = ""; if ( incidence->type() != "Todo" ) { if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { startString = ": "+incidence->dtStart().time().toString().left(5); startString += " "+ incidence->dtStart().date().toString(); startString += "-"+incidence->dtEnd().time().toString().left(5); startString += " "+ incidence->dtEnd().date().toString(); } else { if ( incidence->dtStart().time() != incidence->dtEnd().time() ) startString = ": "+incidence->dtStart().time().toString().left(5)+"-"+incidence->dtEnd().time().toString().left(5); startString +=" "+incidence->dtStart().date().toString(); } } else startString = ": (Prio "+QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +"\% completed"; setCaption( incidence->summary()+startString); enableIncidenceActions( true ); if ( incidence->type() == "Event" ) { mShowAction->setText( i18n("Show Event...") ); mEditAction->setText( i18n("Edit Event...") ); mDeleteAction->setText( i18n("Delete Event...") ); mNewSubTodoAction->setEnabled( false ); } else if ( incidence->type() == "Todo" ) { mShowAction->setText( i18n("Show Todo...") ); mEditAction->setText( i18n("Edit Todo...") ); mDeleteAction->setText( i18n("Delete Todo...") ); mNewSubTodoAction->setEnabled( true ); } else { mShowAction->setText( i18n("Show...") ); mShowAction->setText( i18n("Edit...") ); mShowAction->setText( i18n("Delete...") ); mNewSubTodoAction->setEnabled( false ); } } void MainWindow::enableIncidenceActions( bool enabled ) { mShowAction->setEnabled( enabled ); mEditAction->setEnabled( enabled ); mDeleteAction->setEnabled( enabled ); } void MainWindow::importQtopia() { #ifndef DESKTOP_VERSION int result = QMessageBox::warning( this, "KO/Pi: Warning!", "When importing a calendar twice\n" "duplicated events will be ignored!\n" "You can create a backup file with\n" "Load/Save - Save Calendar Backup\n" "to revert importing", "Import!", "Cancel", 0, 0, 1 ); if ( result == 0 ) { QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; mView->importQtopia( categories, datebook, todolist ); } #else int result = QMessageBox::warning( this, "KO/Pi: Warning!", "NOT SUPPORTED \n" "ON DESKTOP!\n", "OK", "Cancel", 0, 0, 1 ); #endif } void MainWindow::checkAlarms() { if ( mBlockAtStartup ) return; alarmTimer.start( 1000 * 3); } void MainWindow::slotModifiedChanged( bool changed ) { if ( mBlockAtStartup ) return; int msec; // we store the changes after 1 minute, // and for safety reasons after 10 minutes again if ( !mBlockSaveFlag ) msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; else msec = 1000 * 600; mSaveTimer.start( msec, true ); // 1 minute qDebug("KO: Saving File in %d secs!", msec/1000); mCalendarModifiedFlag = true; } void MainWindow::writeAlarm() { if ( mBlockAtStartup ) return; //QCopEnvelope e3("koalarm", "-showWN"); QDateTime nextA ; QDateTime reference ( QDate( 2000, 1, 1 ) ); QString summary; alarmTimer.stop(); Calendar* cal = mView->calendar(); if ( ! cal ){ qDebug("KO: Calendar undefined. No alarm notification"); return; } nextA = cal->nextAlarm( 720 ); summary = cal->nextSummary(); qDebug("KO: Next Alarm %s %s", nextA.toString().latin1(), summary.latin1()); if ( nextA < QDateTime::currentDateTime().addDays( 720-1 ) ) { KConfig *config = KOGlobals::config(); config->setGroup("NextSystemAlarm"); QString date, sum; date = config->readEntry("TimeDateinSecs", "xxx"); bool ok = false; int shsecs = date.toInt(&ok ); QDateTime scheduledAlarm; QDateTime eventDateTime = cal->nextAlarmEvent(); sum = config->readEntry("Summary", "sss"); if ( ok ) { scheduledAlarm = reference.addSecs( shsecs ); //qDebug("sheduledAlarm %s ", scheduledAlarm.toString().latin1()); if ( scheduledAlarm == nextA && sum == summary ) { qDebug("KO: Same alarm time+summary - nothing to do! "); return; } } if ( ok ) { // delete alarm from system //qDebug("delete Alarm %s ", scheduledAlarm.toString().latin1()); #ifndef DESKTOP_VERSION AlarmServer::deleteAlarm ( scheduledAlarm,"koalarm" , sum.latin1() ); #endif } // add new alarm to system qDebug("KO: Add Alarm: %s ", nextA.toString().latin1() ); #ifndef DESKTOP_VERSION AlarmServer::addAlarm ( nextA,"koalarm", summary.latin1() ); #endif // write new alarm to config file //qDebug("Entry %s %s ", date.latin1(), sum.latin1()); int secs = reference.secsTo( nextA ); //qDebug(" secs %d ", secs); setCaption( i18n("Next Alarm: ")+ nextA.toString() +"-"+summary ); config->writeEntry("TimeDateinSecs",QString::number ( secs )); config->writeEntry("Summary",summary); config->writeEntry("TimeDate",nextA.toString()); config->writeEntry("WriteDateTime",QDateTime::currentDateTime().toString()); config->writeEntry("EventStartDateTime",eventDateTime.toString()); config->writeEntry("SystemNotifyInSecs",QString::number (QDateTime::currentDateTime().secsTo( nextA ) )); config->sync(); } } void MainWindow::save() { if ( mBlockSaveFlag ) return; mBlockSaveFlag = true; QTime neededSaveTime = QDateTime::currentDateTime().time(); setCaption("KO/Pi:Saving Data to File ..." ); qDebug("KO: Start saving data to file!"); mView->saveCalendar( defaultFileName() ); int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); qDebug("KO: Needed %d ms for saving.",msNeeded ); QString savemes; savemes.sprintf("KO/Pi:File Saved. Needed %d sec, %d ms",(msNeeded/1000)%100,msNeeded%1000 ); setCaption(savemes); mCalendarModifiedFlag = false; mBlockSaveFlag = false; } void MainWindow::keyReleaseEvent ( QKeyEvent * e) { if ( !e->isAutoRepeat() ) { mFlagKeyPressed = false; } } void MainWindow::keyPressEvent ( QKeyEvent * e ) { qApp->processEvents(); if ( e->isAutoRepeat() && !mFlagKeyPressed ) { e->ignore(); // qDebug(" ignore %d",e->isAutoRepeat() ); return; } if (! e->isAutoRepeat() ) mFlagKeyPressed = true; KOPrefs *p = KOPrefs::instance(); bool showSelectedDates = false; int size; //qDebug("MainWindow::keyPressEvent "); switch ( e->key() ) { case Qt::Key_Right: if ( e->state() == Qt::ControlButton ) mView->goNextMonth(); else mView->goNext(); showSelectedDates = true; break; case Qt::Key_Left: if ( e->state() == Qt::ControlButton ) mView->goPreviousMonth(); else mView->goPrevious(); showSelectedDates = true; break; case Qt::Key_Down: mView->viewManager()->agendaView()->scrollOneHourDown(); break; case Qt::Key_Up: mView->viewManager()->agendaView()->scrollOneHourUp(); break; case Qt::Key_I: mView->showIncidence(); break; case Qt::Key_Delete: case Qt::Key_Backspace: mView->deleteIncidence(); break; case Qt::Key_D: mView->viewManager()->showDayView(); showSelectedDates = true; break; case Qt::Key_0: mView->toggleFilerEnabled( ); break; case Qt::Key_1: mView->selectFilter( 0 ); break; case Qt::Key_2: mView->selectFilter( 1 ); break; case Qt::Key_3: mView->selectFilter( 2 ); break; case Qt::Key_4: mView->selectFilter( 3 ); break; case Qt::Key_5: mView->viewManager()->showWorkWeekView(); showSelectedDates = true; break; case Qt::Key_7: mView->viewManager()->showWeekView(); showSelectedDates = true; break; case Qt::Key_M: mView->viewManager()->showMonthView(); showSelectedDates = true; break; case Qt::Key_Insert: mView->newEvent(); break; case Qt::Key_S : mView->dialogManager()->showSearchDialog(); break; case Qt::Key_H : keyBindings(); break; case Qt::Key_W: mView->viewManager()->showWhatsNextView(); break; case Qt::Key_L: mView->viewManager()->showListView(); break; case Qt::Key_N: mView->viewManager()->showNextXView(); showSelectedDates = true; break; case Qt::Key_V: mView->viewManager()->showTodoView(); break; case Qt::Key_C: mView->goNext(); showSelectedDates = true; break; case Qt::Key_P: mView->showDatePicker( ); break; case Qt::Key_F: mView->toggleFilter(); break; case Qt::Key_X: mView->goPrevious(); showSelectedDates = true; break; case Qt::Key_Space: mView->toggleExpand(); break; case Qt::Key_A: mView->toggleAllDaySize(); break; case Qt::Key_T: if ( e->state() == Qt::ControlButton ) mView->newTodo(); else { mView->goToday(); showSelectedDates = true; } break; case Qt::Key_J: mView->viewManager()->showJournalView(); break; case Qt::Key_Return: case Qt::Key_E: if ( e->state() == Qt::ControlButton ) mView->newEvent(); else mView->editIncidence(); break; case Qt::Key_Plus: size = p->mHourSize +2; if ( size <= 18 ) configureAgenda( size ); break; case Qt::Key_Minus: size = p->mHourSize - 2; if ( size >= 4 ) configureAgenda( size ); break; default: e->ignore(); } if ( showSelectedDates ) { ;// setCaptionToDates(); } } void MainWindow::configureToolBar( int item ) { configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); KOPrefs *p = KOPrefs::instance(); p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); initActions(); } void MainWindow::setCaptionToDates() { QString selDates; selDates = mView->startDate().toString(); if (mView->startDate() < mView->endDate() ) selDates += " - " + mView->endDate().toString(); setCaption( "Dates: " + selDates ); } // parameter item == 0: reinit void MainWindow::configureAgenda( int item ) { KOPrefs *p = KOPrefs::instance(); int i; if ( item == 1 ) { mView->toggleAllDaySize(); return; } // do not allow 4 for widgets higher than 480 if ( QApplication::desktop()->height() > 480 ) { if ( item == 4 ) item = 6; } for ( i = 4; i <= 18; i= i+2 ) configureAgendaMenu->setItemChecked( i, false ); configureAgendaMenu->setItemChecked( item, true ); if ( p->mHourSize == item ) return; p->mHourSize=item; mView->viewManager()->agendaView()->updateConfig(); } void MainWindow::saveCalendar() { QString fn = KOPrefs::instance()->mLastSaveFile; fn = KFileDialog::getSaveFileName( fn, "Save backup filename", this ); if ( fn == "" ) return; QFileInfo info; info.setFile( fn ); QString mes; bool createbup = true; if ( info. exists() ) { mes.sprintf( "Backup file\nalready exists!\nOld backup file from:\n%s\nOverwrite?\n",info.lastModified ().toString().latin1() ); int result = QMessageBox::warning( this, "KO/Pi: Warning!",mes, "Overwrite!", "Cancel", 0, 0, 1 ); if ( result != 0 ) { createbup = false; } } if ( createbup ) { mView->saveCalendar( fn ); mes.sprintf("KO/Pi:Saved %s",fn.latin1() ); KOPrefs::instance()->mLastSaveFile = fn; setCaption(mes); } } void MainWindow::loadCalendar() { QString fn = KOPrefs::instance()->mLastLoadFile; fn = KFileDialog::getOpenFileName( fn, "Load backup filename", this ); if ( fn == "" ) return; QFileInfo info; info.setFile( fn ); QString mess; bool loadbup = true; if ( info. exists() ) { mess.sprintf( "Backup file from:\n%s\nLoading backup\nfile will delete\nyour current Data!\n",info.lastModified ().toString().latin1() ); int result = QMessageBox::warning( this, "KO/Pi: Warning!", mess, "Load!", "Cancel", 0, 0, 1 ); if ( result != 0 ) { loadbup = false; } } else { QMessageBox::warning( this, "KO/Pi: Warning!", "Backup file\ndoes not exist!\n" "Nothing loaded!", 0, 0, 0, 1 ); return; } if ( loadbup ) { mView->openCalendar( fn ); KOPrefs::instance()->mLastLoadFile = fn; mess.sprintf("KO/Pi:Loaded %s",fn.latin1() ); setCaption(mess); } } void MainWindow::quickImportIcal() { importFile( KOPrefs::instance()->mLastImportFile, false ); } void MainWindow::importFile( QString fn, bool quick ) { QFileInfo info; info.setFile( fn ); QString mess; bool loadbup = true; if ( !info. exists() ) { mess= "Import file \n..."+fn.right( 30)+ "\ndoes not exist!\nNothing imported!\n"; int result = QMessageBox::warning( this, "KO/Pi: Warning!", mess ); return; } int result = 0; if ( !quick ) { mess.sprintf( "Import file \n..."+fn.right( 25)+"\nfrom:\n%s\nDuplicated entries\nwill not be imported!\n",info.lastModified ().toString().latin1() ); result = QMessageBox::warning( this, "KO/Pi: Warning!", mess, "Import", "Cancel", 0, 0, 1 ); } if ( result == 0 ) { if ( mView->openCalendar( fn, true )) { KOPrefs::instance()->mLastImportFile = fn; setCaption(i18n(" ")); setCaption(i18n("Imported file successfully")); } else { setCaption(i18n("Error importing file")); } } } void MainWindow::importIcal() { QString fn =KOPrefs::instance()->mLastImportFile; fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this ); if ( fn == "" ) return; importFile( fn, true ); } void MainWindow::exportVCalendar() { QString fn = KOPrefs::instance()->mLastVcalFile; fn = KFileDialog::getSaveFileName( fn, "Export vcal filename(*.vcs)", this ); if ( fn == "" ) return; QFileInfo info; info.setFile( fn ); QString mes; bool createbup = true; if ( info. exists() ) { mes.sprintf( i18n("Save file\nalready exists!\nOld save file from:\n%s\nOverwrite?\n"),info.lastModified ().toString().latin1() ); int result = QMessageBox::warning( this, "KO/Pi: Warning!",mes, "Overwrite!", "Cancel", 0, 0, 1 ); if ( result != 0 ) { createbup = false; } } if ( createbup ) { if ( mView->exportVCalendar( fn ) ) { KOPrefs::instance()->mLastVcalFile = fn; if ( fn.length() > 20 ) mes.sprintf(i18n("KO/Pi:Exported to ...%s"),(fn.right(20)).latin1() ); else mes.sprintf(i18n("KO/Pi:Exported to %s"),fn.latin1() ); setCaption(mes); } } } QString MainWindow::getPassword( ) { QString retfile = ""; QDialog dia ( this, "input-dialog", true ); QLineEdit lab ( &dia ); lab.setEchoMode( QLineEdit::Password ); QVBoxLayout lay( &dia ); lay.setMargin(7); lay.setSpacing(7); lay.addWidget( &lab); dia.setFixedSize( 230,50 ); dia.setCaption( i18n("Input password") ); dia.show(); int res = dia.exec(); if ( res ) retfile = lab.text(); return retfile; } #ifndef _WIN32_ #include #endif void MainWindow::syncLocalFile() { QString fn =KOPrefs::instance()->mLastSyncedLocalFile; fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); if ( fn == "" ) return; syncWithFile( fn, false ); } void MainWindow::syncWithFile( QString fn , bool quick ) { QFileInfo info; info.setFile( fn ); QString mess; bool loadbup = true; if ( !info. exists() ) { mess.sprintf( i18n( "Sync file \n...%s\ndoes not exist!\nNothing synced!\n"),fn.right( 30).latin1() ); int result = QMessageBox::warning( this, "KO/Pi: Warning!", mess ); return; } int result = 0; if ( !quick ) { mess.sprintf( "Sync with file \n..."+fn.right( 25)+"\nfrom:\n%s\n",info.lastModified ().toString().latin1() ); result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), mess, i18n("Sync"), i18n("Cancel"), 0, 0, 1 ); } if ( KOPrefs::instance()->mAskForPreferences ) mView->edit_sync_options(); if ( result == 0 ) { qDebug("Now sycing ... "); mView->syncCalendar( fn, true ); if ( ! quick ) KOPrefs::instance()->mLastSyncedLocalFile = fn; } } void MainWindow::quickSyncLocalFile() { qDebug("quickSyncLocalFile() "); syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ); } void MainWindow::syncSSH() { QTime timer; timer.start(); qDebug("MainWindow::syncssh() "); KOPrefs *p = KOPrefs::instance(); QString localFile = p->mLocalTempFile; QString remoteIP = p->mRemoteIP; QString remoteUser = p->mRemoteUser; QString remoteFile = p->mRemoteFile; if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 ) remoteUser += ":" + p->mRemotePassWd; QString question = i18n("Do you really want\nto remote sync?\n \n") + i18n("IP: " ) +remoteIP +"\n" + i18n("User: " ) + remoteUser +"\n" ; int maxlen = 30; if ( QApplication::desktop()->width() > 320 ) maxlen += 25; if ( remoteFile.length() > maxlen ) question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n"; else question += i18n("Remote file:\n " ) + remoteFile +"\n"; if ( localFile.length() > maxlen ) question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n"; else question += i18n("Local temp file:\n " ) + localFile +"\n"; if ( QMessageBox::information( this, "KO/Pi Sync", question, i18n("Yes"), i18n("No"), 0, 0 ) != 0 ) return; if ( !p->mUsePassWd ) { QString pass = getPassword(); if ( pass.length() > 0 ) remoteUser += ":" + pass; } QString command = "scp " + remoteUser + "@" + remoteIP +":" + remoteFile +" " +localFile; setCaption ( i18n( "Copy remote file to local machine..." ) ); int fileSize = 0; int result = system ( command ); // 0 : okay // 256: no such file or dir // qDebug("KO: Remote copy result(0 = okay): %d ",result ); if ( result != 0 ) { int len = maxlen; while ( len < command.length() ) { command.insert( len , "\n" ); len += maxlen +2; } question = i18n("Sorry, the copy command failed!\nCommand was:\n") + command + "\n \nTry command on console to get more\ndetailed info about the reason.\n"; QMessageBox::information( this, "KO/Pi Sync - ERROR", question, i18n("Okay!")) ; return; } setCaption ( i18n( "Copying succeed. Syncing not yet implemented" ) ); syncWithFile(localFile , true ); return; #if 0 system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics"); while ( timer.elapsed() < 5000 ) qApp->processEvents(); qDebug("MainWindow::merging) "); mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 ); while ( mBlockSaveFlag ) qApp->processEvents(); save(); system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics"); #endif } */