summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/storagehowto.txt80
-rw-r--r--desktop/rpm/kdepim_rpm2
-rw-r--r--kaddressbook/kabcore.cpp13
-rw-r--r--kaddressbook/kabcore.h2
-rw-r--r--korganizer/mainwindow.cpp10
-rw-r--r--korganizer/mainwindow.h1
-rw-r--r--version2
7 files changed, 106 insertions, 4 deletions
diff --git a/bin/kdepim/storagehowto.txt b/bin/kdepim/storagehowto.txt
new file mode 100644
index 0000000..4bb036b
--- a/dev/null
+++ b/bin/kdepim/storagehowto.txt
@@ -0,0 +1,80 @@
1
2KDE-Pim/Pi Storage HowTo
3
4As a default KDE-Pim/Pi is storing it's configuration and application (contacts and calendar) data in the directory <yourHome>/kdepim/.
5This Howto is about to change these settings.
6
7CONTENT:
8
90) General problems
101) Zaurus and desktop settings
112) Additional settings for the desktop
123) Technical background information
13
14********************************************
150) General problems
16********************************************
17
18There is no problem if you start KDE-Pim/Pi, set the storage dir and restart KDE-Pim/Pi and import all your data.
19In general you can copy your data to another directory and set this a the new storage dir. The only problem are the absolute paths in the KA/Pi resource configuration.
20KA/Pi stores it's resource information in the file <storageDir>/config/kabcrc.
21Change the absolute paths there if you changed your storageDir or (that is recommended) change the path of the resources in the KA/Pi resource configuration directly.
22
23********************************************
241) Zaurus and desktop settings
25********************************************
26
27You can access the global settings from KA/Pi and from KO/Pi.
28To change the storage dir go to configure dialog. Choose there the "Global" TAB and there the "Data storage path" TAB.
29Change the value of the current storage path to a new (absolute) path and press the button "Save settings".
30Restart the application.
31Import your data to the application or copy the old storage dir to the new dir. Solve the KA/Pi resource path problem as in 0).
32
33********************************************
342) Additional settings for the desktop
35********************************************
36
37The LOCAL option:
38In the desktop versions (NOT on the Zaurus) you have the possibility to set the storage dir relative to the executable binary.
39That does mean: You can copy all the data (binaries, config data, application data) of the directory where the binaries are to another directory and it will find all files without needing to change anything. NO resource path change is needed.
40In this LOCAL mode only resource files are supported (no resource directories) and only in the <storageDir>/apps/kabc/ directory (the default directory).
41
42To set the LOCAL mode go to configure dialog. Choose there the "Global" TAB and there the "Data storage path" TAB.
43Press there the button "Save using LOCAL storage".
44Restart the application.
45
46This LOCAL mode makes it possible to run KO/Pi and KA/Pi from a USB stick:
47All data is read from and written to the stick.
48Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well.
49
50********************************************
513) Technical background information
52********************************************
53
54Directly after the start KDE-Pim/Pi looks for the evironment variable MICROKDEHOME.
55If the variable is set, the path in the MICROKDEHOME is used as the storage dir. End.
56
57If MICROKDEHOME is not set ( what is usually the case ), then
58
59###DESKTOP_VERSION ONLY###
60It looks for the file .microkdehome in the directory of the binary.
61(That file is written by pressing the "Save using LOCAL storage" button in the "Data storage path" TAB ).
62If this file is found, it sets the path in the this file as the storage dir.End.
63If the path starts with a LOCAL:
64it sets the environment variable LOCALMICROKDEHOME to the path of the binary
65and takes that path as storage dir.End.
66
67If the file .microkdehome in the directory of the binary is not found:
68###DESKTOP_VERSION ONLY END###
69
70It looks for the file .microkdehome in the home directory of the user.
71(That file is written by pressing the "Save settings" button in the "Data storage path" TAB ).
72If this file is found, it sets the path in this file as the storage dir.End.
73
74If the file .microkdehome in the home directory of the user is not found, it sets the
75<yourHome>/kdepim/ directory as the storage dir.
76End of setting the storage dir.
77
78If KA/Pi opens a resource it looks for the environment variable LOCALMICROKDEHOME.
79If the variable is set, the file resource takes the path in LOCALMICROKDEHOME to find it's file.
80
diff --git a/desktop/rpm/kdepim_rpm b/desktop/rpm/kdepim_rpm
index 088d3fe..5e7783b 100644
--- a/desktop/rpm/kdepim_rpm
+++ b/desktop/rpm/kdepim_rpm
@@ -1,35 +1,35 @@
1Summary: A collection of PIM programs 1Summary: A collection of PIM programs
2Name: KDE-Pim-Pi 2Name: KDE-Pim-Pi
3Version: 2.0.23 3Version: 2.0.24
4Release: SuSE_9.2 4Release: SuSE_9.2
5Copyright:GPL 5Copyright:GPL
6Group: Productivity/Pim 6Group: Productivity/Pim
7Source:http://sourceforge.net/projects/kdepimpi/ 7Source:http://sourceforge.net/projects/kdepimpi/
8URL:http://sourceforge.net/projects/kdepimpi/ 8URL:http://sourceforge.net/projects/kdepimpi/
9Packager: zautrix 9Packager: zautrix
10 10
11%description 11%description
12This package contains the platform-independent PIM programs from 12This package contains the platform-independent PIM programs from
13www.pi-sync.info, compiled for SuSE 9.2: 13www.pi-sync.info, compiled for SuSE 9.2:
14KTimeTacker/Pi 14KTimeTacker/Pi
15KPhone/Pi 15KPhone/Pi
16KAddressbook/Pi 16KAddressbook/Pi
17KOrganizer/Pi 17KOrganizer/Pi
18PasswordManager/Pi 18PasswordManager/Pi
19KOPieMail/Pi 19KOPieMail/Pi
20 20
21These applications do not need anything from the KDE-desktop 21These applications do not need anything from the KDE-desktop
22at all to run on Linux. However, there is a dependency from 22at all to run on Linux. However, there is a dependency from
23two KDE libs, because a small command line program is included 23two KDE libs, because a small command line program is included
24to make it possible to sync with the KDE-desktop applications. 24to make it possible to sync with the KDE-desktop applications.
25 25
26These applications are independent from the KDE-desktop 26These applications are independent from the KDE-desktop
27environment. That means, nothing of your existing 27environment. That means, nothing of your existing
28KDE-desktop setup will be changed, or any data 28KDE-desktop setup will be changed, or any data
29(calendar-addressbook) used by the KDE-desktop 29(calendar-addressbook) used by the KDE-desktop
30applications will be changed or accessed. 30applications will be changed or accessed.
31These applications stores their data and config in 31These applications stores their data and config in
32$HOME/kdepim/ 32$HOME/kdepim/
33However, because the same file format is used, 33However, because the same file format is used,
34an easy exchange of data with the KDE-desktop 34an easy exchange of data with the KDE-desktop
35is possible. 35is possible.
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index ce5c755..eba74a6 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2069,64 +2069,71 @@ void KABCore::initActions()
2069 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this, 2069 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this,
2070 SLOT( setCategories() ), actionCollection(), 2070 SLOT( setCategories() ), actionCollection(),
2071 "edit_set_categories" ); 2071 "edit_set_categories" );
2072 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this, 2072 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this,
2073 SLOT( editCategories() ), actionCollection(), 2073 SLOT( editCategories() ), actionCollection(),
2074 "edit__categories" ); 2074 "edit__categories" );
2075 2075
2076 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2076 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2077 SLOT( removeVoice() ), actionCollection(), 2077 SLOT( removeVoice() ), actionCollection(),
2078 "remove_voice" ); 2078 "remove_voice" );
2079 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2079 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2080 SLOT( setFormattedName() ), actionCollection(), 2080 SLOT( setFormattedName() ), actionCollection(),
2081 "set_formatted" ); 2081 "set_formatted" );
2082 2082
2083 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2083 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2084 SLOT( manageCategories() ), actionCollection(), 2084 SLOT( manageCategories() ), actionCollection(),
2085 "remove_voice" ); 2085 "remove_voice" );
2086 2086
2087 2087
2088 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2088 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2089 SLOT( importFromOL() ), actionCollection(), 2089 SLOT( importFromOL() ), actionCollection(),
2090 "import_OL" ); 2090 "import_OL" );
2091#ifdef KAB_EMBEDDED 2091#ifdef KAB_EMBEDDED
2092 mActionLicence = new KAction( i18n( "Licence" ), 0, 2092 mActionLicence = new KAction( i18n( "Licence" ), 0,
2093 this, SLOT( showLicence() ), actionCollection(), 2093 this, SLOT( showLicence() ), actionCollection(),
2094 "licence_about_data" ); 2094 "licence_about_data" );
2095 mActionFaq = new KAction( i18n( "Faq" ), 0, 2095 mActionFaq = new KAction( i18n( "Faq" ), 0,
2096 this, SLOT( faq() ), actionCollection(), 2096 this, SLOT( faq() ), actionCollection(),
2097 "faq_about_data" ); 2097 "faq_about_data" );
2098 mActionWN = new KAction( i18n( "What's New?" ), 0, 2098 mActionWN = new KAction( i18n( "What's New?" ), 0,
2099 this, SLOT( whatsnew() ), actionCollection(), 2099 this, SLOT( whatsnew() ), actionCollection(),
2100 "wn" ); 2100 "wn" );
2101
2102
2103
2104 mActionStorageHowto = new KAction( i18n( "Storage HowTo" ), 0,
2105 this, SLOT( storagehowto() ), actionCollection(),
2106 "storage" );
2107
2101 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2108 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2102 this, SLOT( synchowto() ), actionCollection(), 2109 this, SLOT( synchowto() ), actionCollection(),
2103 "sync" ); 2110 "sync" );
2104 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2111 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2105 this, SLOT( kdesynchowto() ), actionCollection(), 2112 this, SLOT( kdesynchowto() ), actionCollection(),
2106 "kdesync" ); 2113 "kdesync" );
2107 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2114 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2108 this, SLOT( multisynchowto() ), actionCollection(), 2115 this, SLOT( multisynchowto() ), actionCollection(),
2109 "multisync" ); 2116 "multisync" );
2110 2117
2111 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2118 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2112 this, SLOT( createAboutData() ), actionCollection(), 2119 this, SLOT( createAboutData() ), actionCollection(),
2113 "kaddressbook_about_data" ); 2120 "kaddressbook_about_data" );
2114#endif //KAB_EMBEDDED 2121#endif //KAB_EMBEDDED
2115 2122
2116 clipboardDataChanged(); 2123 clipboardDataChanged();
2117 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2124 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2118 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2125 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2119} 2126}
2120 2127
2121//US we need this function, to plug all actions into the correct menues. 2128//US we need this function, to plug all actions into the correct menues.
2122// KDE uses a XML format to plug the actions, but we work her without this overhead. 2129// KDE uses a XML format to plug the actions, but we work her without this overhead.
2123void KABCore::addActionsManually() 2130void KABCore::addActionsManually()
2124{ 2131{
2125//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 2132//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
2126 2133
2127#ifdef KAB_EMBEDDED 2134#ifdef KAB_EMBEDDED
2128 QPopupMenu *fileMenu = new QPopupMenu( this ); 2135 QPopupMenu *fileMenu = new QPopupMenu( this );
2129 QPopupMenu *editMenu = new QPopupMenu( this ); 2136 QPopupMenu *editMenu = new QPopupMenu( this );
2130 QPopupMenu *helpMenu = new QPopupMenu( this ); 2137 QPopupMenu *helpMenu = new QPopupMenu( this );
2131 2138
2132 KToolBar* tb = mMainWindow->toolBar(); 2139 KToolBar* tb = mMainWindow->toolBar();
@@ -2244,64 +2251,65 @@ void KABCore::addActionsManually()
2244 2251
2245 if ( mIsPart ) { 2252 if ( mIsPart ) {
2246 //US not implemented yet 2253 //US not implemented yet
2247 //mActionConfigShortcuts->plug( settingsMenu ); 2254 //mActionConfigShortcuts->plug( settingsMenu );
2248 //mActionConfigureToolbars->plug( settingsMenu ); 2255 //mActionConfigureToolbars->plug( settingsMenu );
2249 2256
2250 } else { 2257 } else {
2251 //US not implemented yet 2258 //US not implemented yet
2252 //mActionKeyBindings->plug( settingsMenu ); 2259 //mActionKeyBindings->plug( settingsMenu );
2253 } 2260 }
2254 2261
2255 mActionEditCategories->plug( settingsMenu ); 2262 mActionEditCategories->plug( settingsMenu );
2256 mActionManageCategories->plug( settingsMenu ); 2263 mActionManageCategories->plug( settingsMenu );
2257 mActionJumpBar->plug( viewMenu,0 ); 2264 mActionJumpBar->plug( viewMenu,0 );
2258 mActionDetails->plug( viewMenu,0 ); 2265 mActionDetails->plug( viewMenu,0 );
2259 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2266 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2260 mActionDetails->plug( tb ); 2267 mActionDetails->plug( tb );
2261 settingsMenu->insertSeparator(); 2268 settingsMenu->insertSeparator();
2262#ifndef DESKTOP_VERSION 2269#ifndef DESKTOP_VERSION
2263 if ( Ir::supported() ) mActionBR->plug(settingsMenu ); 2270 if ( Ir::supported() ) mActionBR->plug(settingsMenu );
2264 settingsMenu->insertSeparator(); 2271 settingsMenu->insertSeparator();
2265#endif 2272#endif
2266 2273
2267 mActionWhoAmI->plug( settingsMenu ); 2274 mActionWhoAmI->plug( settingsMenu );
2268 //mActionEditCategories->plug( changeMenu ); 2275 //mActionEditCategories->plug( changeMenu );
2269 mActionCategories->plug( changeMenu ); 2276 mActionCategories->plug( changeMenu );
2270 //mActionManageCategories->plug( changeMenu ); 2277 //mActionManageCategories->plug( changeMenu );
2271 2278
2272 //mActionCategories->plug( settingsMenu ); 2279 //mActionCategories->plug( settingsMenu );
2273 2280
2274 2281
2275 mActionWN->plug( helpMenu ); 2282 mActionWN->plug( helpMenu );
2283 mActionStorageHowto->plug( helpMenu );
2276 mActionSyncHowto->plug( helpMenu ); 2284 mActionSyncHowto->plug( helpMenu );
2277 mActionKdeSyncHowto->plug( helpMenu ); 2285 mActionKdeSyncHowto->plug( helpMenu );
2278 mActionMultiSyncHowto->plug( helpMenu ); 2286 mActionMultiSyncHowto->plug( helpMenu );
2279 mActionFaq->plug( helpMenu ); 2287 mActionFaq->plug( helpMenu );
2280 mActionLicence->plug( helpMenu ); 2288 mActionLicence->plug( helpMenu );
2281 mActionAboutKAddressbook->plug( helpMenu ); 2289 mActionAboutKAddressbook->plug( helpMenu );
2282 2290
2283 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2291 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2284 2292
2285 mActionSave->plug( tb ); 2293 mActionSave->plug( tb );
2286 mViewManager->getFilterAction()->plug ( tb); 2294 mViewManager->getFilterAction()->plug ( tb);
2287 //LR hide filteraction on started in 480x640 2295 //LR hide filteraction on started in 480x640
2288 if (QApplication::desktop()->width() == 480 ) { 2296 if (QApplication::desktop()->width() == 480 ) {
2289 mViewManager->getFilterAction()->setComboWidth( 0 ); 2297 mViewManager->getFilterAction()->setComboWidth( 0 );
2290 } 2298 }
2291 mActionUndo->plug( tb ); 2299 mActionUndo->plug( tb );
2292 mActionDelete->plug( tb ); 2300 mActionDelete->plug( tb );
2293 mActionRedo->plug( tb ); 2301 mActionRedo->plug( tb );
2294 } else { 2302 } else {
2295 mActionSave->plug( tb ); 2303 mActionSave->plug( tb );
2296 tb->enableMoving(false); 2304 tb->enableMoving(false);
2297 } 2305 }
2298 //mActionQuit->plug ( tb ); 2306 //mActionQuit->plug ( tb );
2299 //tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2307 //tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2300 2308
2301 //US link the searchwidget first to this. 2309 //US link the searchwidget first to this.
2302 // The real linkage to the toolbar happens later. 2310 // The real linkage to the toolbar happens later.
2303//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2311//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2304//US tb->insertItem( mIncSearchWidget ); 2312//US tb->insertItem( mIncSearchWidget );
2305/*US 2313/*US
2306 mIncSearchWidget = new IncSearchWidget( tb ); 2314 mIncSearchWidget = new IncSearchWidget( tb );
2307 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2315 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
@@ -2697,65 +2705,68 @@ void KABCore::requestForDetails(const QString& sourceChannel, const QString& ses
2697 } 2705 }
2698 } 2706 }
2699 else 2707 else
2700 { 2708 {
2701 foundUid = uid; 2709 foundUid = uid;
2702 } 2710 }
2703 2711
2704 if (!foundUid.isEmpty()) 2712 if (!foundUid.isEmpty())
2705 { 2713 {
2706 2714
2707 // raise Ka/Pi if it is in the background 2715 // raise Ka/Pi if it is in the background
2708#ifndef DESKTOP_VERSION 2716#ifndef DESKTOP_VERSION
2709#ifndef KORG_NODCOP 2717#ifndef KORG_NODCOP
2710 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2718 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2711#endif 2719#endif
2712#endif 2720#endif
2713 2721
2714 mMainWindow->showMaximized(); 2722 mMainWindow->showMaximized();
2715 mMainWindow-> raise(); 2723 mMainWindow-> raise();
2716 2724
2717 mViewManager->setSelected( "", false); 2725 mViewManager->setSelected( "", false);
2718 mViewManager->refreshView( "" ); 2726 mViewManager->refreshView( "" );
2719 mViewManager->setSelected( foundUid, true ); 2727 mViewManager->setSelected( foundUid, true );
2720 mViewManager->refreshView( foundUid ); 2728 mViewManager->refreshView( foundUid );
2721 2729
2722 if ( !mMultipleViewsAtOnce ) 2730 if ( !mMultipleViewsAtOnce )
2723 { 2731 {
2724 setDetailsVisible( true ); 2732 setDetailsVisible( true );
2725 mActionDetails->setChecked(true); 2733 mActionDetails->setChecked(true);
2726 } 2734 }
2727 } 2735 }
2728} 2736}
2729 2737void KABCore::storagehowto()
2738{
2739 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" );
2740}
2730void KABCore::whatsnew() 2741void KABCore::whatsnew()
2731{ 2742{
2732 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 2743 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
2733} 2744}
2734void KABCore::synchowto() 2745void KABCore::synchowto()
2735{ 2746{
2736 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 2747 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
2737} 2748}
2738void KABCore::kdesynchowto() 2749void KABCore::kdesynchowto()
2739{ 2750{
2740 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 2751 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
2741} 2752}
2742void KABCore::multisynchowto() 2753void KABCore::multisynchowto()
2743{ 2754{
2744 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 2755 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
2745} 2756}
2746void KABCore::faq() 2757void KABCore::faq()
2747{ 2758{
2748 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2759 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2749} 2760}
2750 2761
2751#include <libkcal/syncdefines.h> 2762#include <libkcal/syncdefines.h>
2752 2763
2753KABC::Addressee KABCore::getLastSyncAddressee() 2764KABC::Addressee KABCore::getLastSyncAddressee()
2754{ 2765{
2755 Addressee lse; 2766 Addressee lse;
2756 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2767 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2757 2768
2758 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2769 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2759 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2770 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2760 if (lse.isEmpty()) { 2771 if (lse.isEmpty()) {
2761 qDebug("KA: Creating new last-syncAddressee "); 2772 qDebug("KA: Creating new last-syncAddressee ");
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 4cef73a..80dbf08 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -120,64 +120,65 @@ class KABCore : public QWidget, public KSyncInterface
120 120
121 /** 121 /**
122 Returns the uid list of the currently selected contacts. 122 Returns the uid list of the currently selected contacts.
123 */ 123 */
124 QStringList selectedUIDs() const; 124 QStringList selectedUIDs() const;
125 125
126 /** 126 /**
127 Displays the ResourceSelectDialog and returns the selected 127 Displays the ResourceSelectDialog and returns the selected
128 resource or a null pointer if no resource was selected by 128 resource or a null pointer if no resource was selected by
129 the user. 129 the user.
130 */ 130 */
131 KABC::Resource *requestResource( QWidget *parent ); 131 KABC::Resource *requestResource( QWidget *parent );
132 132
133#ifndef KAB_EMBEDDED 133#ifndef KAB_EMBEDDED
134 static KAboutData *createAboutData(); 134 static KAboutData *createAboutData();
135#endif //KAB_EMBEDDED 135#endif //KAB_EMBEDDED
136 136
137#ifdef KAB_EMBEDDED 137#ifdef KAB_EMBEDDED
138 inline QPopupMenu* getImportMenu() { return ImportMenu;} 138 inline QPopupMenu* getImportMenu() { return ImportMenu;}
139 inline QPopupMenu* getExportMenu() { return ExportMenu;} 139 inline QPopupMenu* getExportMenu() { return ExportMenu;}
140#endif //KAB_EMBEDDED 140#endif //KAB_EMBEDDED
141 141
142 public slots: 142 public slots:
143#ifdef KAB_EMBEDDED 143#ifdef KAB_EMBEDDED
144 void createAboutData(); 144 void createAboutData();
145#endif //KAB_EMBEDDED 145#endif //KAB_EMBEDDED
146 void setDetailsToggle(); 146 void setDetailsToggle();
147 147
148 void showLicence(); 148 void showLicence();
149 void faq(); 149 void faq();
150 void whatsnew() ; 150 void whatsnew() ;
151 void synchowto() ; 151 void synchowto() ;
152 void storagehowto() ;
152 void multisynchowto() ; 153 void multisynchowto() ;
153 void kdesynchowto() ; 154 void kdesynchowto() ;
154 void writeToPhone(); 155 void writeToPhone();
155 156
156 /** 157 /**
157 Is called whenever a contact is selected in the view. 158 Is called whenever a contact is selected in the view.
158 */ 159 */
159 void setContactSelected( const QString &uid ); 160 void setContactSelected( const QString &uid );
160 161
161 /** 162 /**
162 Opens the preferred mail composer with all selected contacts as 163 Opens the preferred mail composer with all selected contacts as
163 arguments. 164 arguments.
164 */ 165 */
165 void sendMail(); 166 void sendMail();
166 167
167 /** 168 /**
168 Opens the preferred mail composer with the given contacts as 169 Opens the preferred mail composer with the given contacts as
169 arguments. 170 arguments.
170 */ 171 */
171 void sendMail( const QString& email ); 172 void sendMail( const QString& email );
172 173
173 174
174 void mailVCard(); 175 void mailVCard();
175 void mailVCard(const QStringList& uids); 176 void mailVCard(const QStringList& uids);
176 177
177 /** 178 /**
178 Beams the "WhoAmI contact. 179 Beams the "WhoAmI contact.
179 */ 180 */
180 void beamMySelf(); 181 void beamMySelf();
181 182
182 void beamVCard(); 183 void beamVCard();
183 void export2phone(); 184 void export2phone();
@@ -443,64 +444,65 @@ class KABCore : public QWidget, public KSyncInterface
443 KAction *mActionEditAddressee; 444 KAction *mActionEditAddressee;
444 KAction *mActionMailVCard; 445 KAction *mActionMailVCard;
445 KAction *mActionBeamVCard; 446 KAction *mActionBeamVCard;
446 447
447 KAction *mActionQuit; 448 KAction *mActionQuit;
448 449
449 //US edit menu 450 //US edit menu
450 KAction *mActionCopy; 451 KAction *mActionCopy;
451 KAction *mActionCut; 452 KAction *mActionCut;
452 KAction *mActionPaste; 453 KAction *mActionPaste;
453 KAction *mActionSelectAll; 454 KAction *mActionSelectAll;
454 KAction *mActionUndo; 455 KAction *mActionUndo;
455 KAction *mActionRedo; 456 KAction *mActionRedo;
456 KAction *mActionDelete; 457 KAction *mActionDelete;
457 458
458 //US settings menu 459 //US settings menu
459 KAction *mActionConfigResources; 460 KAction *mActionConfigResources;
460 KAction *mActionConfigKAddressbook; 461 KAction *mActionConfigKAddressbook;
461 KAction *mActionConfigShortcuts; 462 KAction *mActionConfigShortcuts;
462 KAction *mActionConfigureToolbars; 463 KAction *mActionConfigureToolbars;
463 KAction *mActionKeyBindings; 464 KAction *mActionKeyBindings;
464 KToggleAction *mActionJumpBar; 465 KToggleAction *mActionJumpBar;
465 KToggleAction *mActionDetails; 466 KToggleAction *mActionDetails;
466 KAction *mActionWhoAmI; 467 KAction *mActionWhoAmI;
467 KAction *mActionCategories; 468 KAction *mActionCategories;
468 KAction *mActionEditCategories; 469 KAction *mActionEditCategories;
469 KAction *mActionManageCategories; 470 KAction *mActionManageCategories;
470 KAction *mActionAboutKAddressbook; 471 KAction *mActionAboutKAddressbook;
471 KAction *mActionLicence; 472 KAction *mActionLicence;
472 KAction *mActionFaq; 473 KAction *mActionFaq;
473 KAction *mActionWN; 474 KAction *mActionWN;
474 KAction *mActionSyncHowto; 475 KAction *mActionSyncHowto;
476 KAction *mActionStorageHowto;
475 KAction *mActionKdeSyncHowto; 477 KAction *mActionKdeSyncHowto;
476 KAction *mActionMultiSyncHowto; 478 KAction *mActionMultiSyncHowto;
477 479
478 KAction *mActionDeleteView; 480 KAction *mActionDeleteView;
479 481
480 QPopupMenu *viewMenu; 482 QPopupMenu *viewMenu;
481 QPopupMenu *filterMenu; 483 QPopupMenu *filterMenu;
482 QPopupMenu *settingsMenu; 484 QPopupMenu *settingsMenu;
483 QPopupMenu *changeMenu; 485 QPopupMenu *changeMenu;
484 QPopupMenu *beamMenu; 486 QPopupMenu *beamMenu;
485//US QAction *mActionSave; 487//US QAction *mActionSave;
486 QPopupMenu *ImportMenu; 488 QPopupMenu *ImportMenu;
487 QPopupMenu *ExportMenu; 489 QPopupMenu *ExportMenu;
488 //LR additional methods 490 //LR additional methods
489 KAction *mActionRemoveVoice; 491 KAction *mActionRemoveVoice;
490 KAction *mActionSetFormattedName; 492 KAction *mActionSetFormattedName;
491 KAction * mActionImportOL; 493 KAction * mActionImportOL;
492 494
493#ifndef KAB_EMBEDDED 495#ifndef KAB_EMBEDDED
494 KAddressBookService *mAddressBookService; 496 KAddressBookService *mAddressBookService;
495#endif //KAB_EMBEDDED 497#endif //KAB_EMBEDDED
496 498
497 class KABCorePrivate; 499 class KABCorePrivate;
498 KABCorePrivate *d; 500 KABCorePrivate *d;
499 //US bool mBlockSaveFlag; 501 //US bool mBlockSaveFlag;
500 502
501#ifdef KAB_EMBEDDED 503#ifdef KAB_EMBEDDED
502 KAddressBookMain *mMainWindow; // should be the same like mGUIClient 504 KAddressBookMain *mMainWindow; // should be the same like mGUIClient
503#endif //KAB_EMBEDDED 505#endif //KAB_EMBEDDED
504 506
505 //this are the overwritten callbackmethods from the syncinterface 507 //this are the overwritten callbackmethods from the syncinterface
506 virtual bool sync(KSyncManager* manager, QString filename, int mode); 508 virtual bool sync(KSyncManager* manager, QString filename, int mode);
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 357154e..7aa3b60 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1053,65 +1053,69 @@ void MainWindow::initActions()
1053 importMenu->insertItem( i18n("Print"), beamMenu_X ); 1053 importMenu->insertItem( i18n("Print"), beamMenu_X );
1054#endif 1054#endif
1055 importMenu->insertSeparator(); 1055 importMenu->insertSeparator();
1056 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1056 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1057 this ); 1057 this );
1058 action->addTo( importMenu ); 1058 action->addTo( importMenu );
1059 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1059 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1060 importMenu->insertSeparator(); 1060 importMenu->insertSeparator();
1061 action = new QAction( "beam all", i18n("Save"), 0, 1061 action = new QAction( "beam all", i18n("Save"), 0,
1062 this ); 1062 this );
1063 action->addTo( importMenu ); 1063 action->addTo( importMenu );
1064 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 1064 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
1065 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 1065 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
1066 this ); 1066 this );
1067 action->addTo( importMenu ); 1067 action->addTo( importMenu );
1068 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 1068 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
1069 1069
1070 //menuBar->insertItem( "Configure",configureMenu ); 1070 //menuBar->insertItem( "Configure",configureMenu );
1071 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 1071 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
1072 icon = loadPixmap( "korganizer/korganizer" ); 1072 icon = loadPixmap( "korganizer/korganizer" );
1073 1073
1074 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 1074 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
1075 action->addTo( helpMenu ); 1075 action->addTo( helpMenu );
1076 connect( action, SIGNAL( activated() ), 1076 connect( action, SIGNAL( activated() ),
1077 SLOT( whatsNew() ) ); 1077 SLOT( whatsNew() ) );
1078 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 1078 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
1079 action->addTo( helpMenu ); 1079 action->addTo( helpMenu );
1080 connect( action, SIGNAL( activated() ), 1080 connect( action, SIGNAL( activated() ),
1081 SLOT( features() ) ); 1081 SLOT( features() ) );
1082 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 1082 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
1083 action->addTo( helpMenu ); 1083 action->addTo( helpMenu );
1084 connect( action, SIGNAL( activated() ), 1084 connect( action, SIGNAL( activated() ),
1085 SLOT( keyBindings() ) ); 1085 SLOT( keyBindings() ) );
1086 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this );
1087 action->addTo( helpMenu );
1088 connect( action, SIGNAL( activated() ),
1089 SLOT( storagehowto() ) );
1086 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 1090 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
1087 action->addTo( helpMenu ); 1091 action->addTo( helpMenu );
1088 connect( action, SIGNAL( activated() ), 1092 connect( action, SIGNAL( activated() ),
1089 SLOT( synchowto() ) ); 1093 SLOT( synchowto() ) );
1090 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 1094 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
1091 action->addTo( helpMenu ); 1095 action->addTo( helpMenu );
1092 connect( action, SIGNAL( activated() ), 1096 connect( action, SIGNAL( activated() ),
1093 SLOT( kdesynchowto() ) ); 1097 SLOT( kdesynchowto() ) );
1094 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); 1098 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this );
1095 action->addTo( helpMenu ); 1099 action->addTo( helpMenu );
1096 connect( action, SIGNAL( activated() ), 1100 connect( action, SIGNAL( activated() ),
1097 SLOT( multisynchowto() ) ); 1101 SLOT( multisynchowto() ) );
1098 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 1102 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
1099 action->addTo( helpMenu ); 1103 action->addTo( helpMenu );
1100 connect( action, SIGNAL( activated() ), 1104 connect( action, SIGNAL( activated() ),
1101 SLOT( aboutAutoSaving() ) ); 1105 SLOT( aboutAutoSaving() ) );
1102 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 1106 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
1103 action->addTo( helpMenu ); 1107 action->addTo( helpMenu );
1104 connect( action, SIGNAL( activated() ), 1108 connect( action, SIGNAL( activated() ),
1105 SLOT( aboutKnownBugs() ) ); 1109 SLOT( aboutKnownBugs() ) );
1106 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 1110 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
1107 action->addTo( helpMenu ); 1111 action->addTo( helpMenu );
1108 connect( action, SIGNAL( activated() ), 1112 connect( action, SIGNAL( activated() ),
1109 SLOT( usertrans() ) ); 1113 SLOT( usertrans() ) );
1110 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 1114 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
1111 action->addTo( helpMenu ); 1115 action->addTo( helpMenu );
1112 connect( action, SIGNAL( activated() ), 1116 connect( action, SIGNAL( activated() ),
1113 SLOT( faq() ) ); 1117 SLOT( faq() ) );
1114 action = new QAction( "licence", i18n("Licence..."), 0, this ); 1118 action = new QAction( "licence", i18n("Licence..."), 0, this );
1115 action->addTo( helpMenu ); 1119 action->addTo( helpMenu );
1116 connect( action, SIGNAL( activated() ), 1120 connect( action, SIGNAL( activated() ),
1117 SLOT( licence() ) ); 1121 SLOT( licence() ) );
@@ -1364,64 +1368,68 @@ QString MainWindow::resourcePath()
1364} 1368}
1365 1369
1366void MainWindow::displayText( QString text ,QString cap ) 1370void MainWindow::displayText( QString text ,QString cap )
1367{ 1371{
1368 QDialog dia( this, "name", true ); ; 1372 QDialog dia( this, "name", true ); ;
1369 dia.setCaption( cap ); 1373 dia.setCaption( cap );
1370 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1374 QVBoxLayout* lay = new QVBoxLayout( &dia );
1371 lay->setSpacing( 3 ); 1375 lay->setSpacing( 3 );
1372 lay->setMargin( 3 ); 1376 lay->setMargin( 3 );
1373 QTextBrowser tb ( &dia ); 1377 QTextBrowser tb ( &dia );
1374 lay->addWidget( &tb ); 1378 lay->addWidget( &tb );
1375 tb.setText( text ); 1379 tb.setText( text );
1376#ifdef DESKTOP_VERSION 1380#ifdef DESKTOP_VERSION
1377 dia.resize( 640, 480); 1381 dia.resize( 640, 480);
1378#else 1382#else
1379 dia.showMaximized(); 1383 dia.showMaximized();
1380#endif 1384#endif
1381 dia.exec(); 1385 dia.exec();
1382} 1386}
1383 1387
1384void MainWindow::features() 1388void MainWindow::features()
1385{ 1389{
1386 1390
1387 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1391 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1388} 1392}
1389 1393
1390void MainWindow::usertrans() 1394void MainWindow::usertrans()
1391{ 1395{
1392 1396
1393 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1397 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1394} 1398}
1395 1399
1400void MainWindow::storagehowto()
1401{
1402 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" );
1403}
1396void MainWindow::kdesynchowto() 1404void MainWindow::kdesynchowto()
1397{ 1405{
1398 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1406 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1399} 1407}
1400void MainWindow::multisynchowto() 1408void MainWindow::multisynchowto()
1401{ 1409{
1402 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1410 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1403} 1411}
1404void MainWindow::synchowto() 1412void MainWindow::synchowto()
1405{ 1413{
1406 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1414 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1407} 1415}
1408void MainWindow::faq() 1416void MainWindow::faq()
1409{ 1417{
1410 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1418 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1411 1419
1412} 1420}
1413void MainWindow::whatsNew() 1421void MainWindow::whatsNew()
1414{ 1422{
1415 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1423 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1416 1424
1417} 1425}
1418void MainWindow::licence() 1426void MainWindow::licence()
1419{ 1427{
1420 KApplication::showLicence(); 1428 KApplication::showLicence();
1421 1429
1422} 1430}
1423void MainWindow::about() 1431void MainWindow::about()
1424{ 1432{
1425 QString version; 1433 QString version;
1426#include <../version> 1434#include <../version>
1427 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1435 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 4d1753f..3151f50 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -38,64 +38,65 @@ class KOMenuBar : public QMenuBar
38 QSize sizeHint () const{ qDebug("sizejint ");return QSize ( 40,25 );} 38 QSize sizeHint () const{ qDebug("sizejint ");return QSize ( 40,25 );}
39}; 39};
40 40
41using namespace KCal; 41using namespace KCal;
42 42
43class MainWindow : public QMainWindow 43class MainWindow : public QMainWindow
44{ 44{
45 Q_OBJECT 45 Q_OBJECT
46 public: 46 public:
47 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); 47 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = "");
48 ~MainWindow(); 48 ~MainWindow();
49 bool beamReceiveEnabled(); 49 bool beamReceiveEnabled();
50 static QString defaultFileName(); 50 static QString defaultFileName();
51 static QString syncFileName(); 51 static QString syncFileName();
52 static QString resourcePath(); 52 static QString resourcePath();
53 public slots: 53 public slots:
54 void setCaption ( const QString & ); 54 void setCaption ( const QString & );
55 void updateWeekNum(const KCal::DateList &); 55 void updateWeekNum(const KCal::DateList &);
56 void updateWeek(QDate); 56 void updateWeek(QDate);
57 void updateFilterToolbar(); 57 void updateFilterToolbar();
58 virtual void showMaximized (); 58 virtual void showMaximized ();
59 void configureAgenda( int ); 59 void configureAgenda( int );
60 void recieve( const QCString& msg, const QByteArray& data ); 60 void recieve( const QCString& msg, const QByteArray& data );
61 protected slots: 61 protected slots:
62 void setCaptionToDates(); 62 void setCaptionToDates();
63 void weekAction(); 63 void weekAction();
64 void about(); 64 void about();
65 void licence(); 65 void licence();
66 void faq(); 66 void faq();
67 void usertrans(); 67 void usertrans();
68 void features(); 68 void features();
69 void synchowto(); 69 void synchowto();
70 void storagehowto();
70 void kdesynchowto(); 71 void kdesynchowto();
71 void multisynchowto(); 72 void multisynchowto();
72 void whatsNew(); 73 void whatsNew();
73 void keyBindings(); 74 void keyBindings();
74 void aboutAutoSaving();; 75 void aboutAutoSaving();;
75 void aboutKnownBugs(); 76 void aboutKnownBugs();
76 77
77 void processIncidenceSelection( Incidence * ); 78 void processIncidenceSelection( Incidence * );
78 79
79 void importQtopia(); 80 void importQtopia();
80 void importBday(); 81 void importBday();
81 void importOL(); 82 void importOL();
82 void importIcal(); 83 void importIcal();
83 void importFile( QString, bool ); 84 void importFile( QString, bool );
84 void quickImportIcal(); 85 void quickImportIcal();
85 86
86 void slotModifiedChanged( bool ); 87 void slotModifiedChanged( bool );
87 88
88 void save(); 89 void save();
89 void saveStopTimer(); 90 void saveStopTimer();
90 void configureToolBar( int ); 91 void configureToolBar( int );
91 void printSel(); 92 void printSel();
92 void printCal(); 93 void printCal();
93 void saveCalendar(); 94 void saveCalendar();
94 void loadCalendar(); 95 void loadCalendar();
95 void exportVCalendar(); 96 void exportVCalendar();
96 void fillFilterMenu(); 97 void fillFilterMenu();
97 void fillFilterMenuTB(); 98 void fillFilterMenuTB();
98 void selectFilter( int ); 99 void selectFilter( int );
99 void fillFilterMenuPopup(); 100 void fillFilterMenuPopup();
100 void selectFilterPopup( int ); 101 void selectFilterPopup( int );
101 void exportToPhone( int ); 102 void exportToPhone( int );
diff --git a/version b/version
index 662668e..f601af0 100644
--- a/version
+++ b/version
@@ -1 +1 @@
version = "2.0.23"; version = "2.0.24";