author | mickeyl <mickeyl> | 2004-04-05 13:49:07 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-04-05 13:49:07 (UTC) |
commit | f44b1d4abe82cfb74db68bffcaf240f6f6134708 (patch) (unidiff) | |
tree | c150abb3cbc842fd930d3ab7543a0b34ec3145ad | |
parent | 997a521a3ee84f614e2781a663911096ffb4a91a (diff) | |
download | opie-f44b1d4abe82cfb74db68bffcaf240f6f6134708.zip opie-f44b1d4abe82cfb74db68bffcaf240f6f6134708.tar.gz opie-f44b1d4abe82cfb74db68bffcaf240f6f6134708.tar.bz2 |
use opie debugging
-rw-r--r-- | examples/networksettings/config.in | 2 | ||||
-rw-r--r-- | examples/networksettings/example.pro | 19 | ||||
-rw-r--r-- | examples/networksettings/exampleiface.cpp | 5 | ||||
-rw-r--r-- | examples/networksettings/examplemodule.cpp | 10 | ||||
-rw-r--r-- | examples/simple-pim/config.in | 2 | ||||
-rw-r--r-- | examples/simple-pim/example.pro | 2 | ||||
-rw-r--r-- | examples/simple-pim/simple.cpp | 38 | ||||
-rw-r--r-- | rsync/qrsync.cpp | 13 |
8 files changed, 55 insertions, 36 deletions
diff --git a/examples/networksettings/config.in b/examples/networksettings/config.in index 4bbbb4e..e1a68cc 100644 --- a/examples/networksettings/config.in +++ b/examples/networksettings/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config EXAMPLE_VPN | 1 | config EXAMPLE_VPN |
2 | boolean "opie-networksettingsplugin-example (VPN module)" | 2 | boolean "opie-networksettingsplugin-example (VPN module)" |
3 | default "n" if NETWORKSETUP | 3 | default "n" if NETWORKSETUP |
4 | depends ( LIBQPE || LIBQPE-X11 ) && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES && EXAMPLES | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES && EXAMPLES |
diff --git a/examples/networksettings/example.pro b/examples/networksettings/example.pro index 835dbd0..7bfa1ed 100644 --- a/examples/networksettings/example.pro +++ b/examples/networksettings/example.pro | |||
@@ -1,17 +1,14 @@ | |||
1 | #TEMPLATE = app | ||
2 | # | ||
3 | TEMPLATE = lib | 1 | TEMPLATE = lib |
4 | #CONFIG += qt plugin warn_on | 2 | CONFIG += qt plugin warn_on |
5 | CONFIG += qt plugin warn_on | ||
6 | DESTDIR = $(OPIEDIR)/plugins/networksettings | 3 | DESTDIR = $(OPIEDIR)/plugins/networksettings |
7 | HEADERS = exampleiface.h examplemodule.h | 4 | HEADERS = exampleiface.h examplemodule.h |
8 | SOURCES = exampleiface.cpp examplemodule.cpp | 5 | SOURCES = exampleiface.cpp examplemodule.cpp |
9 | INCLUDEPATH+= $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces | 6 | INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces |
10 | DEPENDPATH+= $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces | 7 | DEPENDPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces |
11 | LIBS += -lqpe -linterfaces | 8 | LIBS += -lqpe -linterfaces -lopiecore2 |
12 | TARGET = example_vpn | 9 | TARGET = example_vpn |
13 | VERSION = 1.0.0 | 10 | VERSION = 1.0.0 |
14 | 11 | ||
15 | 12 | ||
16 | 13 | ||
17 | include ( $(OPIEDIR)/include.pro ) | 14 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/examples/networksettings/exampleiface.cpp b/examples/networksettings/exampleiface.cpp index 5267a9c..8012bb2 100644 --- a/examples/networksettings/exampleiface.cpp +++ b/examples/networksettings/exampleiface.cpp | |||
@@ -1,43 +1,46 @@ | |||
1 | #include "exampleiface.h" | 1 | #include "exampleiface.h" |
2 | 2 | ||
3 | #include <opie2/odebug.h> | ||
4 | using namespace Opie::Core; | ||
5 | |||
3 | VirtualInterface::VirtualInterface( QObject* parent, | 6 | VirtualInterface::VirtualInterface( QObject* parent, |
4 | const char* name, | 7 | const char* name, |
5 | bool status ) | 8 | bool status ) |
6 | : Interface(parent, name, status ) | 9 | : Interface(parent, name, status ) |
7 | { | 10 | { |
8 | } | 11 | } |
9 | 12 | ||
10 | VirtualInterface::~VirtualInterface() { | 13 | VirtualInterface::~VirtualInterface() { |
11 | } | 14 | } |
12 | 15 | ||
13 | bool VirtualInterface::refresh() { | 16 | bool VirtualInterface::refresh() { |
14 | /* we do VPN over ppp | 17 | /* we do VPN over ppp |
15 | * so replace the interfaceName with | 18 | * so replace the interfaceName with |
16 | * something actual existing | 19 | * something actual existing |
17 | * I take wlan0 in my case | 20 | * I take wlan0 in my case |
18 | */ | 21 | */ |
19 | QString old = getInterfaceName(); | 22 | QString old = getInterfaceName(); |
20 | qWarning("Interface name was " + old ); | 23 | odebug << "Interface name was " << old << oendl; |
21 | setInterfaceName( "wlan0" ); | 24 | setInterfaceName( "wlan0" ); |
22 | 25 | ||
23 | bool b =Interface::refresh(); | 26 | bool b =Interface::refresh(); |
24 | setInterfaceName( old ); | 27 | setInterfaceName( old ); |
25 | 28 | ||
26 | /* new and old interface name */ | 29 | /* new and old interface name */ |
27 | emit updateInterface(this); | 30 | emit updateInterface(this); |
28 | return b; | 31 | return b; |
29 | } | 32 | } |
30 | 33 | ||
31 | 34 | ||
32 | void VirtualInterface::start() { | 35 | void VirtualInterface::start() { |
33 | // call pptp | 36 | // call pptp |
34 | setStatus(true); | 37 | setStatus(true); |
35 | refresh(); | 38 | refresh(); |
36 | emit updateMessage("VPN started"); | 39 | emit updateMessage("VPN started"); |
37 | } | 40 | } |
38 | 41 | ||
39 | void VirtualInterface::stop() { | 42 | void VirtualInterface::stop() { |
40 | setStatus(false ); | 43 | setStatus(false ); |
41 | refresh(); | 44 | refresh(); |
42 | emit updateMessage("VPN halted"); | 45 | emit updateMessage("VPN halted"); |
43 | } | 46 | } |
diff --git a/examples/networksettings/examplemodule.cpp b/examples/networksettings/examplemodule.cpp index d7fd718..703e6bd 100644 --- a/examples/networksettings/examplemodule.cpp +++ b/examples/networksettings/examplemodule.cpp | |||
@@ -1,71 +1,75 @@ | |||
1 | #include <qwidget.h> | 1 | #include "exampleiface.h" |
2 | #include "examplemodule.h" | ||
3 | |||
4 | /* OPIE */ | ||
5 | #include <opie2/odebug.h> | ||
6 | using namespace Opie::Core; | ||
2 | 7 | ||
3 | #include <interfaces/interfaceinformationimp.h> | 8 | #include <interfaces/interfaceinformationimp.h> |
4 | 9 | ||
5 | #include "exampleiface.h" | 10 | #include <qwidget.h> |
6 | #include "examplemodule.h" | ||
7 | 11 | ||
8 | VirtualModule::VirtualModule() { | 12 | VirtualModule::VirtualModule() { |
9 | Interface* iface = new VirtualInterface( 0 ); | 13 | Interface* iface = new VirtualInterface( 0 ); |
10 | iface->setHardwareName( "vpn" ); | 14 | iface->setHardwareName( "vpn" ); |
11 | iface->setInterfaceName( "Test VPN" ); | 15 | iface->setInterfaceName( "Test VPN" ); |
12 | m_interfaces.append( iface ); | 16 | m_interfaces.append( iface ); |
13 | 17 | ||
14 | // If we set up VPN via pptp | 18 | // If we set up VPN via pptp |
15 | // and networksettins was closed and now opened | 19 | // and networksettins was closed and now opened |
16 | // we need to hide the ppp device behind us | 20 | // we need to hide the ppp device behind us |
17 | // One can do this by calling setHandledInterfaceNames | 21 | // One can do this by calling setHandledInterfaceNames |
18 | // setHandledInterfaceNames(); | 22 | // setHandledInterfaceNames(); |
19 | } | 23 | } |
20 | 24 | ||
21 | VirtualModule::~VirtualModule() { | 25 | VirtualModule::~VirtualModule() { |
22 | m_interfaces.setAutoDelete( true ); | 26 | m_interfaces.setAutoDelete( true ); |
23 | m_interfaces.clear(); | 27 | m_interfaces.clear(); |
24 | } | 28 | } |
25 | 29 | ||
26 | 30 | ||
27 | /* | 31 | /* |
28 | * We're a VPN module | 32 | * We're a VPN module |
29 | */ | 33 | */ |
30 | bool VirtualModule::isOwner( Interface* iface ) { | 34 | bool VirtualModule::isOwner( Interface* iface ) { |
31 | /* check if it is our device */ | 35 | /* check if it is our device */ |
32 | return m_interfaces.find( iface ) != -1; | 36 | return m_interfaces.find( iface ) != -1; |
33 | } | 37 | } |
34 | 38 | ||
35 | QWidget* VirtualModule::configure( Interface* ) { | 39 | QWidget* VirtualModule::configure( Interface* ) { |
36 | /* We don't have any Config for now */ | 40 | /* We don't have any Config for now */ |
37 | return 0l; | 41 | return 0l; |
38 | } | 42 | } |
39 | 43 | ||
40 | QWidget* VirtualModule::information( Interface* iface ) { | 44 | QWidget* VirtualModule::information( Interface* iface ) { |
41 | return new InterfaceInformationImp(0, "Interface info", iface ); | 45 | return new InterfaceInformationImp(0, "Interface info", iface ); |
42 | } | 46 | } |
43 | 47 | ||
44 | QList<Interface> VirtualModule::getInterfaces() { | 48 | QList<Interface> VirtualModule::getInterfaces() { |
45 | return m_interfaces; | 49 | return m_interfaces; |
46 | } | 50 | } |
47 | 51 | ||
48 | void VirtualModule::possibleNewInterfaces( QMap<QString, QString>& map) { | 52 | void VirtualModule::possibleNewInterfaces( QMap<QString, QString>& map) { |
49 | map.insert( QObject::tr("VPN PPTP"), | 53 | map.insert( QObject::tr("VPN PPTP"), |
50 | QObject::tr("Add new Point to Point Tunnel Protocol connection" ) ); | 54 | QObject::tr("Add new Point to Point Tunnel Protocol connection" ) ); |
51 | } | 55 | } |
52 | 56 | ||
53 | 57 | ||
54 | Interface* VirtualModule::addNewInterface( const QString& ) { | 58 | Interface* VirtualModule::addNewInterface( const QString& ) { |
55 | /* check the str if we support more interfaces */ | 59 | /* check the str if we support more interfaces */ |
56 | /* | 60 | /* |
57 | Interface* iface = new VirtualInterface( 0 ); | 61 | Interface* iface = new VirtualInterface( 0 ); |
58 | iface->setModuleOwner( this ); | 62 | iface->setModuleOwner( this ); |
59 | return iface;*/ | 63 | return iface;*/ |
60 | 64 | ||
61 | // if we would support saving interfaces we could add | 65 | // if we would support saving interfaces we could add |
62 | // them here | 66 | // them here |
63 | 67 | ||
64 | return 0; | 68 | return 0; |
65 | } | 69 | } |
66 | 70 | ||
67 | 71 | ||
68 | bool VirtualModule::remove( Interface* ) { | 72 | bool VirtualModule::remove( Interface* ) { |
69 | /* we do not support removing our interface */ | 73 | /* we do not support removing our interface */ |
70 | return false; | 74 | return false; |
71 | } | 75 | } |
diff --git a/examples/simple-pim/config.in b/examples/simple-pim/config.in index aa1a426..9e6adc9 100644 --- a/examples/simple-pim/config.in +++ b/examples/simple-pim/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config SIMPLE_PIM_EXAMPLE | 1 | config SIMPLE_PIM_EXAMPLE |
2 | boolean "Mainwindow with PIM and QCOP usage" | 2 | boolean "Mainwindow with PIM and QCOP usage" |
3 | default "y" | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && EXAMPLES && LIBOPIEPIM2 | 4 | depends ( LIBQPE || LIBQPE-X11 ) && EXAMPLES && LIBOPIE2CORE && LIBOPIE2PIM |
diff --git a/examples/simple-pim/example.pro b/examples/simple-pim/example.pro index ebcdb2b..b8b2c69 100644 --- a/examples/simple-pim/example.pro +++ b/examples/simple-pim/example.pro | |||
@@ -1,17 +1,17 @@ | |||
1 | CONFIG += qt warn_on quick-app | 1 | CONFIG += qt warn_on quick-app |
2 | 2 | ||
3 | 3 | ||
4 | TARGET = simple-pim | 4 | TARGET = simple-pim |
5 | 5 | ||
6 | HEADERS = simple.h | 6 | HEADERS = simple.h |
7 | SOURCES = simple.cpp | 7 | SOURCES = simple.cpp |
8 | 8 | ||
9 | 9 | ||
10 | INCLUDEPATH += $(OPIEDIR)/include | 10 | INCLUDEPATH += $(OPIEDIR)/include |
11 | DEPENDPATH += $(OPIEDIR)/include | 11 | DEPENDPATH += $(OPIEDIR)/include |
12 | 12 | ||
13 | 13 | ||
14 | # we now also include opie | 14 | # we now also include opie |
15 | LIBS += -lqpe -lopiepim2 -lopieui2 | 15 | LIBS += -lqpe -lopiecore2 -lopiepim2 -lopieui2 |
16 | 16 | ||
17 | include ( $(OPIEDIR)/include.pro ) | 17 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/examples/simple-pim/simple.cpp b/examples/simple-pim/simple.cpp index 50905bf..efd5070 100644 --- a/examples/simple-pim/simple.cpp +++ b/examples/simple-pim/simple.cpp | |||
@@ -1,446 +1,456 @@ | |||
1 | /* We use a sane order of include files, from the most special to the least special | ||
2 | That helps to reduce the number of implicit includes hence increases the reuse */ | ||
3 | |||
4 | /* First the local include files */ | ||
5 | #include "simple.h" | ||
6 | |||
7 | /* Then the Ope include files. | ||
8 | This includes qpe stuff which will eventually be merged with libopie2 */ | ||
9 | #include <opie2/odebug.h> // for odebug streams | ||
10 | #include <opie2/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching | ||
11 | #include <opie2/otabwidget.h> | ||
12 | #include <opie2/owait.h> | ||
13 | #include <qpe/qpeapplication.h> // the QPEApplication | ||
14 | #include <qpe/resource.h> | ||
15 | #include <qpe/sound.h> | ||
16 | #include <qpe/qcopenvelope_qws.h> | ||
17 | #include <qpe/datebookmonth.h> | ||
18 | #include <qpe/timestring.h> | ||
19 | using namespace Opie::Core; | ||
20 | |||
21 | /* Now the Qt includes */ | ||
1 | #include <qaction.h> // action | 22 | #include <qaction.h> // action |
2 | #include <qmenubar.h> // menubar | 23 | #include <qmenubar.h> // menubar |
3 | #include <qtoolbar.h> // toolbar | 24 | #include <qtoolbar.h> // toolbar |
4 | #include <qlabel.h> // a label | 25 | #include <qlabel.h> // a label |
5 | #include <qpushbutton.h> // the header file for the QPushButton | 26 | #include <qpushbutton.h> // the header file for the QPushButton |
6 | #include <qlayout.h> | 27 | #include <qlayout.h> |
7 | #include <qtimer.h> // we use it for the singleShot | 28 | #include <qtimer.h> // we use it for the singleShot |
8 | #include <qdatetime.h> // for QDate | 29 | #include <qdatetime.h> // for QDate |
9 | #include <qtextview.h> // a rich text widget | 30 | #include <qtextview.h> // a rich text widget |
10 | #include <qdialog.h> | 31 | #include <qdialog.h> |
11 | #include <qwhatsthis.h> // for whats this | 32 | #include <qwhatsthis.h> // for whats this |
12 | 33 | ||
13 | #include <qpe/qpeapplication.h> // the QPEApplication | 34 | /* Add standard includes here if you need some |
14 | #include <qpe/resource.h> | 35 | Examples are: stdlib.h, socket.h, etc. */ |
15 | #include <qpe/sound.h> | ||
16 | #include <qpe/qcopenvelope_qws.h> | ||
17 | #include <qpe/datebookmonth.h> | ||
18 | #include <qpe/timestring.h> | ||
19 | |||
20 | #include <opie2/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching | ||
21 | #include <opie2/otabwidget.h> | ||
22 | #include <opie2/owait.h> | ||
23 | |||
24 | #include "simple.h" | ||
25 | 36 | ||
26 | /* | 37 | /* |
27 | * implementation of simple | 38 | * implementation of simple |
28 | */ | 39 | */ |
29 | 40 | ||
30 | /* | 41 | /* |
31 | * The factory is used for quicklaunching | 42 | * The factory is used for quicklaunching |
32 | * It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro | 43 | * It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro |
33 | * | 44 | * |
34 | * Depending on the global quick launch setting this will create | 45 | * Depending on the global quick launch setting this will create |
35 | * either a main method or one for our component plugin system | 46 | * either a main method or one for our component plugin system |
36 | */ | 47 | */ |
37 | 48 | ||
38 | using namespace Opie::Core; | ||
39 | OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) | 49 | OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) |
40 | 50 | ||
41 | MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) | 51 | MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) |
42 | : QMainWindow( parent, name, fl ) { | 52 | : QMainWindow( parent, name, fl ) { |
43 | setCaption(tr("My MainWindow") ); | 53 | setCaption(tr("My MainWindow") ); |
44 | 54 | ||
45 | m_desktopChannel = 0; | 55 | m_desktopChannel = 0; |
46 | m_loading = 0; | 56 | m_loading = 0; |
47 | 57 | ||
48 | initUI(); | 58 | initUI(); |
49 | 59 | ||
50 | 60 | ||
51 | /* | 61 | /* |
52 | * Tab widget as central | 62 | * Tab widget as central |
53 | */ | 63 | */ |
54 | m_tab = new Opie::Ui::OTabWidget(this); | 64 | m_tab = new Opie::Ui::OTabWidget(this); |
55 | 65 | ||
56 | setCentralWidget( m_tab ); | 66 | setCentralWidget( m_tab ); |
57 | 67 | ||
58 | m_todoView = new PIMListView(m_tab, "Todo view" ); | 68 | m_todoView = new PIMListView(m_tab, "Todo view" ); |
59 | m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") ); | 69 | m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") ); |
60 | 70 | ||
61 | m_dateView = new PIMListView(m_tab, "Datebook view" ); | 71 | m_dateView = new PIMListView(m_tab, "Datebook view" ); |
62 | m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") ); | 72 | m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") ); |
63 | 73 | ||
64 | /* now connect the actions */ | 74 | /* now connect the actions */ |
65 | /* | 75 | /* |
66 | * we connect the activated to our show | 76 | * we connect the activated to our show |
67 | * and on activation we will show a detailed | 77 | * and on activation we will show a detailed |
68 | * summary of the record | 78 | * summary of the record |
69 | */ | 79 | */ |
70 | connect(m_fire, SIGNAL(activated() ), | 80 | connect(m_fire, SIGNAL(activated() ), |
71 | this, SLOT(slotShow() ) ); | 81 | this, SLOT(slotShow() ) ); |
72 | 82 | ||
73 | /* | 83 | /* |
74 | * We will change the date | 84 | * We will change the date |
75 | */ | 85 | */ |
76 | connect(m_dateAction, SIGNAL(activated() ), | 86 | connect(m_dateAction, SIGNAL(activated() ), |
77 | this, SLOT(slotDate() ) ); | 87 | this, SLOT(slotDate() ) ); |
78 | 88 | ||
79 | /* | 89 | /* |
80 | * connect the show signal of the PIMListView | 90 | * connect the show signal of the PIMListView |
81 | * to a slot to show a dialog | 91 | * to a slot to show a dialog |
82 | */ | 92 | */ |
83 | connect(m_todoView, SIGNAL(showRecord(const OPimRecord&) ), | 93 | connect(m_todoView, SIGNAL(showRecord(const OPimRecord&) ), |
84 | this, SLOT(slotShowRecord(const OPimRecord&) ) ); | 94 | this, SLOT(slotShowRecord(const OPimRecord&) ) ); |
85 | connect(m_dateView, SIGNAL(showRecord(const OPimRecord&) ), | 95 | connect(m_dateView, SIGNAL(showRecord(const OPimRecord&) ), |
86 | this, SLOT(slotShowRecord(const OPimRecord&) ) ); | 96 | this, SLOT(slotShowRecord(const OPimRecord&) ) ); |
87 | 97 | ||
88 | /* | 98 | /* |
89 | * Now comes the important lines of code for this example | 99 | * Now comes the important lines of code for this example |
90 | * We do not directly call load but delay loading until | 100 | * We do not directly call load but delay loading until |
91 | * all Events are dispatches and handled. | 101 | * all Events are dispatches and handled. |
92 | * SO we will load once our window is mapped to screen | 102 | * SO we will load once our window is mapped to screen |
93 | * to achieve that we use a QTimer::singleShot | 103 | * to achieve that we use a QTimer::singleShot |
94 | * After 10 milli seconds the timer fires and on TimerEvent | 104 | * After 10 milli seconds the timer fires and on TimerEvent |
95 | * out slot slotLoad will be called | 105 | * out slot slotLoad will be called |
96 | * Remember this a Constructor to construct your object and not | 106 | * Remember this a Constructor to construct your object and not |
97 | * to load | 107 | * to load |
98 | */ | 108 | */ |
99 | QTimer::singleShot( 10, this, SLOT(slotLoad() ) ); | 109 | QTimer::singleShot( 10, this, SLOT(slotLoad() ) ); |
100 | } | 110 | } |
101 | 111 | ||
102 | MainWindow::~MainWindow() { | 112 | MainWindow::~MainWindow() { |
103 | // again nothing to delete because Qt takes care | 113 | // again nothing to delete because Qt takes care |
104 | } | 114 | } |
105 | 115 | ||
106 | 116 | ||
107 | void MainWindow::setDocument( const QString& /*str*/ ) { | 117 | void MainWindow::setDocument( const QString& /*str*/ ) { |
108 | } | 118 | } |
109 | 119 | ||
110 | 120 | ||
111 | void MainWindow::initUI() { | 121 | void MainWindow::initUI() { |
112 | 122 | ||
113 | setToolBarsMovable( false ); | 123 | setToolBarsMovable( false ); |
114 | 124 | ||
115 | QToolBar *menuBarHolder = new QToolBar( this ); | 125 | QToolBar *menuBarHolder = new QToolBar( this ); |
116 | 126 | ||
117 | menuBarHolder->setHorizontalStretchable( true ); | 127 | menuBarHolder->setHorizontalStretchable( true ); |
118 | QMenuBar *mb = new QMenuBar( menuBarHolder ); | 128 | QMenuBar *mb = new QMenuBar( menuBarHolder ); |
119 | QToolBar *tb = new QToolBar( this ); | 129 | QToolBar *tb = new QToolBar( this ); |
120 | 130 | ||
121 | QPopupMenu *fileMenu = new QPopupMenu( this ); | 131 | QPopupMenu *fileMenu = new QPopupMenu( this ); |
122 | 132 | ||
123 | 133 | ||
124 | QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"), | 134 | QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"), |
125 | QString::null, 0, this, "quit_action" ); | 135 | QString::null, 0, this, "quit_action" ); |
126 | /* | 136 | /* |
127 | * Connect quit to the QApplication quit slot | 137 | * Connect quit to the QApplication quit slot |
128 | */ | 138 | */ |
129 | connect(a, SIGNAL(activated() ), | 139 | connect(a, SIGNAL(activated() ), |
130 | qApp, SLOT(quit() ) ); | 140 | qApp, SLOT(quit() ) ); |
131 | a->addTo( fileMenu ); | 141 | a->addTo( fileMenu ); |
132 | 142 | ||
133 | a = new QAction(tr("View Current"), | 143 | a = new QAction(tr("View Current"), |
134 | Resource::loadIconSet("zoom"), | 144 | Resource::loadIconSet("zoom"), |
135 | QString::null, 0, this, "view current"); | 145 | QString::null, 0, this, "view current"); |
136 | /* a simple whats this online explanation of out button */ | 146 | /* a simple whats this online explanation of out button */ |
137 | a->setWhatsThis(tr("Views the current record") ); | 147 | a->setWhatsThis(tr("Views the current record") ); |
138 | /* or QWhatsThis::add(widget, "description" ); */ | 148 | /* or QWhatsThis::add(widget, "description" ); */ |
139 | 149 | ||
140 | /* see the power? */ | 150 | /* see the power? */ |
141 | a->addTo( fileMenu ); | 151 | a->addTo( fileMenu ); |
142 | a->addTo( tb ); | 152 | a->addTo( tb ); |
143 | m_fire = a; | 153 | m_fire = a; |
144 | 154 | ||
145 | a = new QAction(tr("Choose Date"), | 155 | a = new QAction(tr("Choose Date"), |
146 | Resource::loadIconSet("day"), | 156 | Resource::loadIconSet("day"), |
147 | QString::null, 0, this, "choose date" ); | 157 | QString::null, 0, this, "choose date" ); |
148 | a->addTo( fileMenu ); | 158 | a->addTo( fileMenu ); |
149 | a->addTo( tb ); | 159 | a->addTo( tb ); |
150 | m_dateAction = a; | 160 | m_dateAction = a; |
151 | 161 | ||
152 | mb->insertItem(tr("File"), fileMenu ); | 162 | mb->insertItem(tr("File"), fileMenu ); |
153 | 163 | ||
154 | } | 164 | } |
155 | 165 | ||
156 | void MainWindow::slotLoad() { | 166 | void MainWindow::slotLoad() { |
157 | /* | 167 | /* |
158 | * There is no real shared access in the PIM API | 168 | * There is no real shared access in the PIM API |
159 | * It wasn't finish cause of health problems of one | 169 | * It wasn't finish cause of health problems of one |
160 | * of the authors so we do something fancy and use QCOP | 170 | * of the authors so we do something fancy and use QCOP |
161 | * the IPC system to get a current copy | 171 | * the IPC system to get a current copy |
162 | */ | 172 | */ |
163 | /* NOTES to QCOP: QCOP operates over channels and use QDataStream | 173 | /* NOTES to QCOP: QCOP operates over channels and use QDataStream |
164 | * to send data. You can check if a channel isRegistered or hook | 174 | * to send data. You can check if a channel isRegistered or hook |
165 | * yourself to that channel. A Channel is QCString and normally | 175 | * yourself to that channel. A Channel is QCString and normally |
166 | * prefix with QPE/ and then the system in example QPE/System, | 176 | * prefix with QPE/ and then the system in example QPE/System, |
167 | * QPE/Desktop a special channel is the application channel | 177 | * QPE/Desktop a special channel is the application channel |
168 | * it QPE/Application/appname this channel gets created on app | 178 | * it QPE/Application/appname this channel gets created on app |
169 | * startup by QPEApplication. QCOP is asynchronous | 179 | * startup by QPEApplication. QCOP is asynchronous |
170 | * | 180 | * |
171 | * To send you'll use QCopEnevelope | 181 | * To send you'll use QCopEnevelope |
172 | * | 182 | * |
173 | */ | 183 | */ |
174 | /* | 184 | /* |
175 | * What we will do is first is get to know if either | 185 | * What we will do is first is get to know if either |
176 | * datebook or todolist are running if so we will kindly | 186 | * datebook or todolist are running if so we will kindly |
177 | * asked to save the data for us. | 187 | * asked to save the data for us. |
178 | * If neither are running we can load directly | 188 | * If neither are running we can load directly |
179 | */ | 189 | */ |
180 | if (!QCopChannel::isRegistered("QPE/Application/todolist") && | 190 | if (!QCopChannel::isRegistered("QPE/Application/todolist") && |
181 | !QCopChannel::isRegistered("QPE/Application/datebook") ) { | 191 | !QCopChannel::isRegistered("QPE/Application/datebook") ) { |
182 | m_db.load(); | 192 | m_db.load(); |
183 | m_tb.load(); | 193 | m_tb.load(); |
184 | return slotLoadForDay( QDate::currentDate() ); | 194 | return slotLoadForDay( QDate::currentDate() ); |
185 | } | 195 | } |
186 | 196 | ||
187 | /* | 197 | /* |
188 | * prepare our answer machine the QCopChannel | 198 | * prepare our answer machine the QCopChannel |
189 | * QPE/Desktop will send "flushDone(QString)" when | 199 | * QPE/Desktop will send "flushDone(QString)" when |
190 | * the flush is done it emits a signal on receive | 200 | * the flush is done it emits a signal on receive |
191 | */ | 201 | */ |
192 | m_desktopChannel = new QCopChannel("QPE/Desktop"); | 202 | m_desktopChannel = new QCopChannel("QPE/Desktop"); |
193 | connect(m_desktopChannel, SIGNAL(received(const QCString&,const QByteArray&) ), | 203 | connect(m_desktopChannel, SIGNAL(received(const QCString&,const QByteArray&) ), |
194 | this, SLOT(slotDesktopReceive(const QCString&,const QByteArray&) ) ); | 204 | this, SLOT(slotDesktopReceive(const QCString&,const QByteArray&) ) ); |
195 | /* the numberof synced channels will be set to zero */ | 205 | /* the numberof synced channels will be set to zero */ |
196 | m_synced = 0; | 206 | m_synced = 0; |
197 | 207 | ||
198 | /* | 208 | /* |
199 | * We use {} around the QCopEnvelope because it sends its | 209 | * We use {} around the QCopEnvelope because it sends its |
200 | * data on destruction of QCopEnvelope with | 210 | * data on destruction of QCopEnvelope with |
201 | */ | 211 | */ |
202 | /* check again if not present increment synced*/ | 212 | /* check again if not present increment synced*/ |
203 | if ( QCopChannel::isRegistered("QPE/Application/todolist") ) { | 213 | if ( QCopChannel::isRegistered("QPE/Application/todolist") ) { |
204 | QCopEnvelope env("QPE/Application/todolist", "flush()" ); | 214 | QCopEnvelope env("QPE/Application/todolist", "flush()" ); |
205 | // env << data; but we do not have any parameters here | 215 | // env << data; but we do not have any parameters here |
206 | }else | 216 | }else |
207 | m_synced++; | 217 | m_synced++; |
208 | 218 | ||
209 | if ( QCopChannel::isRegistered("QPE/Application/datebook") ) { | 219 | if ( QCopChannel::isRegistered("QPE/Application/datebook") ) { |
210 | QCopEnvelope env("QPE/Application/datebook", "flush()" ); | 220 | QCopEnvelope env("QPE/Application/datebook", "flush()" ); |
211 | }else | 221 | }else |
212 | m_synced++; | 222 | m_synced++; |
213 | 223 | ||
214 | /* we will provide a wait scrren */ | 224 | /* we will provide a wait scrren */ |
215 | m_loading = new Opie::Ui::OWait(this, "wait screen" ); | 225 | m_loading = new Opie::Ui::OWait(this, "wait screen" ); |
216 | } | 226 | } |
217 | 227 | ||
218 | void MainWindow::slotDesktopReceive(const QCString& cmd, const QByteArray& data ) { | 228 | void MainWindow::slotDesktopReceive(const QCString& cmd, const QByteArray& data ) { |
219 | /* the bytearray was filled with the QDataStream now | 229 | /* the bytearray was filled with the QDataStream now |
220 | * we open it read only to get the value(s) | 230 | * we open it read only to get the value(s) |
221 | */ | 231 | */ |
222 | QDataStream stream(data, IO_ReadOnly ); | 232 | QDataStream stream(data, IO_ReadOnly ); |
223 | /* | 233 | /* |
224 | * we're only interested in the flushDone | 234 | * we're only interested in the flushDone |
225 | */ | 235 | */ |
226 | if ( cmd == "flushDone(QString)" ) { | 236 | if ( cmd == "flushDone(QString)" ) { |
227 | QString appname; | 237 | QString appname; |
228 | stream >> appname; // get the first argument out of stream | 238 | stream >> appname; // get the first argument out of stream |
229 | if (appname == QString::fromLatin1("datebook") || | 239 | if (appname == QString::fromLatin1("datebook") || |
230 | appname == QString::fromLatin1("todolist") ) | 240 | appname == QString::fromLatin1("todolist") ) |
231 | m_synced++; | 241 | m_synced++; |
232 | } | 242 | } |
233 | 243 | ||
234 | /* | 244 | /* |
235 | * If we synced both we can go ahead | 245 | * If we synced both we can go ahead |
236 | * In future this is not needed anymore when we finally | 246 | * In future this is not needed anymore when we finally |
237 | * implemented X-Ref and other PIM features | 247 | * implemented X-Ref and other PIM features |
238 | */ | 248 | */ |
239 | if (m_synced >= 2 ) { | 249 | if (m_synced >= 2 ) { |
240 | delete m_loading; | 250 | delete m_loading; |
241 | delete m_desktopChannel; | 251 | delete m_desktopChannel; |
242 | /* now we finally can start doing the actual loading */ | 252 | /* now we finally can start doing the actual loading */ |
243 | m_tb.load(); | 253 | m_tb.load(); |
244 | m_db.load(); | 254 | m_db.load(); |
245 | { | 255 | { |
246 | /* tell the applications to reload */ | 256 | /* tell the applications to reload */ |
247 | QCopEnvelope("QPE/Application/todolist", "reload()"); | 257 | QCopEnvelope("QPE/Application/todolist", "reload()"); |
248 | QCopEnvelope("QPE/Application/datebook", "reload()"); | 258 | QCopEnvelope("QPE/Application/datebook", "reload()"); |
249 | } | 259 | } |
250 | slotLoadForDay( QDate::currentDate() ); | 260 | slotLoadForDay( QDate::currentDate() ); |
251 | } | 261 | } |
252 | 262 | ||
253 | } | 263 | } |
254 | 264 | ||
255 | /* overloaded member for shortcoming of libqpe */ | 265 | /* overloaded member for shortcoming of libqpe */ |
256 | void MainWindow::slotLoadForDay(int y, int m, int d) { | 266 | void MainWindow::slotLoadForDay(int y, int m, int d) { |
257 | /* year,month, day */ | 267 | /* year,month, day */ |
258 | slotLoadForDay( QDate(y, m, d ) ); | 268 | slotLoadForDay( QDate(y, m, d ) ); |
259 | } | 269 | } |
260 | 270 | ||
261 | void MainWindow::slotLoadForDay(const QDate& date) { | 271 | void MainWindow::slotLoadForDay(const QDate& date) { |
262 | 272 | ||
263 | 273 | ||
264 | /* all todos for today including the ones without dueDate */ | 274 | /* all todos for today including the ones without dueDate */ |
265 | m_todoView->set( m_tb.effectiveToDos(date, date ) ); | 275 | m_todoView->set( m_tb.effectiveToDos(date, date ) ); |
266 | m_dateView->set( m_db.effectiveEvents( date, date ) ); | 276 | m_dateView->set( m_db.effectiveEvents( date, date ) ); |
267 | } | 277 | } |
268 | 278 | ||
269 | /* we want to show the current record */ | 279 | /* we want to show the current record */ |
270 | void MainWindow::slotShow() { | 280 | void MainWindow::slotShow() { |
271 | /* we only added PIMListViews so we can safely cast */ | 281 | /* we only added PIMListViews so we can safely cast */ |
272 | PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() ); | 282 | PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() ); |
273 | 283 | ||
274 | /* ask the view to send a signal */ | 284 | /* ask the view to send a signal */ |
275 | view->showCurrentRecord(); | 285 | view->showCurrentRecord(); |
276 | 286 | ||
277 | } | 287 | } |
278 | 288 | ||
279 | /* as answer this slot will be called */ | 289 | /* as answer this slot will be called */ |
280 | void MainWindow::slotShowRecord( const Opie::OPimRecord& rec) { | 290 | void MainWindow::slotShowRecord( const Opie::OPimRecord& rec) { |
281 | /* got a parent but still is a toplevel MODAL dialog */ | 291 | /* got a parent but still is a toplevel MODAL dialog */ |
282 | QDialog* dia = new QDialog(this,"dialog",TRUE ); | 292 | QDialog* dia = new QDialog(this,"dialog",TRUE ); |
283 | QVBoxLayout *box = new QVBoxLayout( dia ); | 293 | QVBoxLayout *box = new QVBoxLayout( dia ); |
284 | dia->setCaption( tr("View Record") ); | 294 | dia->setCaption( tr("View Record") ); |
285 | 295 | ||
286 | 296 | ||
287 | QTextView *view = new QTextView(dia ); | 297 | QTextView *view = new QTextView(dia ); |
288 | view->setText( rec.toRichText() ); | 298 | view->setText( rec.toRichText() ); |
289 | box->addWidget( view ); | 299 | box->addWidget( view ); |
290 | /* | 300 | /* |
291 | * execute via QPEApplication | 301 | * execute via QPEApplication |
292 | * this allows QPEApplication to make a sane decision | 302 | * this allows QPEApplication to make a sane decision |
293 | * on the size | 303 | * on the size |
294 | */ | 304 | */ |
295 | dia->showMaximized(); | 305 | dia->showMaximized(); |
296 | QPEApplication::execDialog( dia ); | 306 | QPEApplication::execDialog( dia ); |
297 | delete dia; | 307 | delete dia; |
298 | } | 308 | } |
299 | 309 | ||
300 | 310 | ||
301 | void MainWindow::slotDate() { | 311 | void MainWindow::slotDate() { |
302 | /* | 312 | /* |
303 | * called by the action we will show a Popup | 313 | * called by the action we will show a Popup |
304 | * at the current mouse position with a DateChooser | 314 | * at the current mouse position with a DateChooser |
305 | * to select the day | 315 | * to select the day |
306 | */ | 316 | */ |
307 | qWarning("slot Date"); | 317 | odebug << "slot Date" << oendl; |
308 | QPopupMenu *menu = new QPopupMenu(); | 318 | QPopupMenu *menu = new QPopupMenu(); |
309 | /* A Month to select a date from TRUE for auto close */ | 319 | /* A Month to select a date from TRUE for auto close */ |
310 | DateBookMonth *month = new DateBookMonth(menu, 0, true ); | 320 | DateBookMonth *month = new DateBookMonth(menu, 0, true ); |
311 | connect(month, SIGNAL(dateClicked(int,int,int) ), | 321 | connect(month, SIGNAL(dateClicked(int,int,int) ), |
312 | this, SLOT(slotLoadForDay(int,int,int) ) ); | 322 | this, SLOT(slotLoadForDay(int,int,int) ) ); |
313 | 323 | ||
314 | menu->insertItem( month ); | 324 | menu->insertItem( month ); |
315 | 325 | ||
316 | menu->exec( QCursor::pos() ); | 326 | menu->exec( QCursor::pos() ); |
317 | 327 | ||
318 | /* | 328 | /* |
319 | * we do not need to delete month because | 329 | * we do not need to delete month because |
320 | * we delete its parent menu | 330 | * we delete its parent menu |
321 | */ | 331 | */ |
322 | 332 | ||
323 | delete menu; | 333 | delete menu; |
324 | } | 334 | } |
325 | 335 | ||
326 | /* | 336 | /* |
327 | * An anonymous namespace this symbol is only available here | 337 | * An anonymous namespace this symbol is only available here |
328 | * so truely private | 338 | * so truely private |
329 | */ | 339 | */ |
330 | namespace { | 340 | namespace { |
331 | /* not static cause namespace does that what static would do */ | 341 | /* not static cause namespace does that what static would do */ |
332 | const int RTTI = 5050; | 342 | const int RTTI = 5050; |
333 | /* | 343 | /* |
334 | * every ListView got Items. we've special pim items | 344 | * every ListView got Items. we've special pim items |
335 | * holding ownership and the pointer to a pim record | 345 | * holding ownership and the pointer to a pim record |
336 | * it can't hold a pimrecord directly because this | 346 | * it can't hold a pimrecord directly because this |
337 | * would introduce slicing... any break | 347 | * would introduce slicing... any break |
338 | */ | 348 | */ |
339 | /* | 349 | /* |
340 | * A struct is a special class. Everything is public by | 350 | * A struct is a special class. Everything is public by |
341 | * default. | 351 | * default. |
342 | */ | 352 | */ |
343 | struct PIMListViewItem : public QListViewItem { | 353 | struct PIMListViewItem : public QListViewItem { |
344 | /* | 354 | /* |
345 | *currently no hierachies are planed for the example | 355 | *currently no hierachies are planed for the example |
346 | * so only one constructor with a QListView as parent | 356 | * so only one constructor with a QListView as parent |
347 | */ | 357 | */ |
348 | PIMListViewItem( QListView*, Opie::OPimRecord* record ); | 358 | PIMListViewItem( QListView*, Opie::OPimRecord* record ); |
349 | ~PIMListViewItem(); | 359 | ~PIMListViewItem(); |
350 | 360 | ||
351 | /* used by the QListViewItem to easily allow identifiying of different | 361 | /* used by the QListViewItem to easily allow identifiying of different |
352 | * items. Values greater than 1000 should be used */ | 362 | * items. Values greater than 1000 should be used */ |
353 | int rtti()const; | 363 | int rtti()const; |
354 | Opie::OPimRecord* record()const; | 364 | Opie::OPimRecord* record()const; |
355 | 365 | ||
356 | private: | 366 | private: |
357 | Opie::OPimRecord* m_record; | 367 | Opie::OPimRecord* m_record; |
358 | }; | 368 | }; |
359 | 369 | ||
360 | PIMListViewItem::PIMListViewItem( QListView *p, Opie::OPimRecord* rec ) | 370 | PIMListViewItem::PIMListViewItem( QListView *p, Opie::OPimRecord* rec ) |
361 | : QListViewItem(p), m_record( rec ) { | 371 | : QListViewItem(p), m_record( rec ) { |
362 | } | 372 | } |
363 | 373 | ||
364 | PIMListViewItem::~PIMListViewItem() { | 374 | PIMListViewItem::~PIMListViewItem() { |
365 | /* we've the onwership so we need to delete it */ | 375 | /* we've the onwership so we need to delete it */ |
366 | delete m_record; | 376 | delete m_record; |
367 | } | 377 | } |
368 | 378 | ||
369 | Opie::OPimRecord* PIMListViewItem::record()const { | 379 | Opie::OPimRecord* PIMListViewItem::record()const { |
370 | return m_record; | 380 | return m_record; |
371 | } | 381 | } |
372 | 382 | ||
373 | } | 383 | } |
374 | 384 | ||
375 | 385 | ||
376 | PIMListView::PIMListView( QWidget* widget, const char* name, WFlags fl ) | 386 | PIMListView::PIMListView( QWidget* widget, const char* name, WFlags fl ) |
377 | : QListView(widget, name, fl ) | 387 | : QListView(widget, name, fl ) |
378 | { | 388 | { |
379 | addColumn("Summary"); | 389 | addColumn("Summary"); |
380 | } | 390 | } |
381 | 391 | ||
382 | PIMListView::~PIMListView() { | 392 | PIMListView::~PIMListView() { |
383 | 393 | ||
384 | } | 394 | } |
385 | 395 | ||
386 | void PIMListView::set( Opie::OPimTodoAccess::List list ) { | 396 | void PIMListView::set( Opie::OPimTodoAccess::List list ) { |
387 | /* clear first and then add new items */ | 397 | /* clear first and then add new items */ |
388 | clear(); | 398 | clear(); |
389 | 399 | ||
390 | Opie::OPimTodoAccess::List::Iterator it; | 400 | Opie::OPimTodoAccess::List::Iterator it; |
391 | for (it = list.begin(); it != list.end(); ++it ) { | 401 | for (it = list.begin(); it != list.end(); ++it ) { |
392 | /* | 402 | /* |
393 | * make a new item which automatically gets added to the listview | 403 | * make a new item which automatically gets added to the listview |
394 | * and call the copy c'tor to create a new OPimTodo | 404 | * and call the copy c'tor to create a new OPimTodo |
395 | */ | 405 | */ |
396 | PIMListViewItem *i = new PIMListViewItem(this, new Opie::OPimTodo( *it ) ); | 406 | PIMListViewItem *i = new PIMListViewItem(this, new Opie::OPimTodo( *it ) ); |
397 | i->setText(0, (*it).summary() ); | 407 | i->setText(0, (*it).summary() ); |
398 | } | 408 | } |
399 | } | 409 | } |
400 | 410 | ||
401 | void PIMListView::set( const Opie::OEffectiveEvent::ValueList& lst ) { | 411 | void PIMListView::set( const Opie::OEffectiveEvent::ValueList& lst ) { |
402 | /* clear first and then add items */ | 412 | /* clear first and then add items */ |
403 | clear(); | 413 | clear(); |
404 | 414 | ||
405 | Opie::OEffectiveEvent::ValueList::ConstIterator it; | 415 | Opie::OEffectiveEvent::ValueList::ConstIterator it; |
406 | for ( it = lst.begin(); it != lst.end(); ++it ) { | 416 | for ( it = lst.begin(); it != lst.end(); ++it ) { |
407 | PIMListViewItem *i = new PIMListViewItem(this, new Opie::OPimEvent( (*it).event() ) ); | 417 | PIMListViewItem *i = new PIMListViewItem(this, new Opie::OPimEvent( (*it).event() ) ); |
408 | i->setText( 0, PIMListView::makeString( (*it) ) ); | 418 | i->setText( 0, PIMListView::makeString( (*it) ) ); |
409 | } | 419 | } |
410 | 420 | ||
411 | } | 421 | } |
412 | 422 | ||
413 | void PIMListView::showCurrentRecord() { | 423 | void PIMListView::showCurrentRecord() { |
414 | /* it could be possible that their is no currentItem */ | 424 | /* it could be possible that their is no currentItem */ |
415 | if (!currentItem() ) | 425 | if (!currentItem() ) |
416 | return; | 426 | return; |
417 | 427 | ||
418 | /* | 428 | /* |
419 | * we only add PIMListViewItems so it is save | 429 | * we only add PIMListViewItems so it is save |
420 | * to do this case. If this would not be the case | 430 | * to do this case. If this would not be the case |
421 | * use rtti() to check in a switch() case | 431 | * use rtti() to check in a switch() case |
422 | */ | 432 | */ |
423 | PIMListViewItem *item = static_cast<PIMListViewItem*>( currentItem() ); | 433 | PIMListViewItem *item = static_cast<PIMListViewItem*>( currentItem() ); |
424 | 434 | ||
425 | /* finally you see how to emit a signal */ | 435 | /* finally you see how to emit a signal */ |
426 | emit showRecord( (*item->record() ) ); | 436 | emit showRecord( (*item->record() ) ); |
427 | } | 437 | } |
428 | 438 | ||
429 | QString PIMListView::makeString( const Opie::OEffectiveEvent& ev ) { | 439 | QString PIMListView::makeString( const Opie::OEffectiveEvent& ev ) { |
430 | QString str; | 440 | QString str; |
431 | str += ev.description(); | 441 | str += ev.description(); |
432 | if ( !ev.event().isAllDay() ) { | 442 | if ( !ev.event().isAllDay() ) { |
433 | if ( ev.startDate() != ev.endDate() ) { | 443 | if ( ev.startDate() != ev.endDate() ) { |
434 | str += tr("Start ") + TimeString::timeString( ev.event().startDateTime().time() ); | 444 | str += tr("Start ") + TimeString::timeString( ev.event().startDateTime().time() ); |
435 | str += " - " + TimeString::longDateString( ev.startDate() ); | 445 | str += " - " + TimeString::longDateString( ev.startDate() ); |
436 | str += tr("End ") + TimeString::timeString( ev.event().endDateTime().time() ); | 446 | str += tr("End ") + TimeString::timeString( ev.event().endDateTime().time() ); |
437 | str += " - " + TimeString::longDateString( ev.endDate() ); | 447 | str += " - " + TimeString::longDateString( ev.endDate() ); |
438 | }else{ | 448 | }else{ |
439 | str += tr("Time ") + TimeString::timeString( ev.startTime() ); | 449 | str += tr("Time ") + TimeString::timeString( ev.startTime() ); |
440 | str += " - " + TimeString::timeString( ev.endTime() ); | 450 | str += " - " + TimeString::timeString( ev.endTime() ); |
441 | } | 451 | } |
442 | }else | 452 | }else |
443 | str += tr(" This is an All-Day Event"); | 453 | str += tr(" This is an All-Day Event"); |
444 | 454 | ||
445 | return str; | 455 | return str; |
446 | } | 456 | } |
diff --git a/rsync/qrsync.cpp b/rsync/qrsync.cpp index fe5f1bc..a2dbafc 100644 --- a/rsync/qrsync.cpp +++ b/rsync/qrsync.cpp | |||
@@ -1,110 +1,115 @@ | |||
1 | #include "qrsync.h" | 1 | #include "qrsync.h" |
2 | #include <stdio.h> | 2 | #include <stdio.h> |
3 | extern "C" { | 3 | extern "C" { |
4 | #include "rsync.h" | 4 | #include "rsync.h" |
5 | } | 5 | } |
6 | #include <stdlib.h> | 6 | #include <stdlib.h> |
7 | 7 | ||
8 | /* OPIE */ | ||
9 | #include <opie2/odebug.h> | ||
10 | using namespace Opie::Core; | ||
11 | |||
12 | /* QT */ | ||
8 | #include <qfile.h> | 13 | #include <qfile.h> |
9 | 14 | ||
10 | static const char *rdiffNewFile = "/tmp/rdiff/result"; | 15 | static const char *rdiffNewFile = "/tmp/rdiff/result"; |
11 | static size_t block_len = RS_DEFAULT_BLOCK_LEN; | 16 | static size_t block_len = RS_DEFAULT_BLOCK_LEN; |
12 | static size_t strong_len = RS_DEFAULT_STRONG_LEN; | 17 | static size_t strong_len = RS_DEFAULT_STRONG_LEN; |
13 | 18 | ||
14 | 19 | ||
15 | void QRsync::generateSignature( QString baseFile, QString sigFile ) | 20 | void QRsync::generateSignature( QString baseFile, QString sigFile ) |
16 | { | 21 | { |
17 | 22 | ||
18 | if ( QFile::exists( baseFile ) ) { | 23 | if ( QFile::exists( baseFile ) ) { |
19 | FILE *basis_file, *sig_file; | 24 | FILE *basis_file, *sig_file; |
20 | rs_result result; | 25 | rs_result result; |
21 | 26 | ||
22 | basis_file = fopen( baseFile.latin1(), "rb" ); | 27 | basis_file = fopen( baseFile.latin1(), "rb" ); |
23 | sig_file = fopen( sigFile.latin1(), "wb" ); | 28 | sig_file = fopen( sigFile.latin1(), "wb" ); |
24 | 29 | ||
25 | result = rs_sig_file(basis_file, sig_file, block_len, strong_len, 0); | 30 | result = rs_sig_file(basis_file, sig_file, block_len, strong_len, 0); |
26 | 31 | ||
27 | fclose( basis_file ); | 32 | fclose( basis_file ); |
28 | fclose( sig_file ); | 33 | fclose( sig_file ); |
29 | if (result != RS_DONE) | 34 | if (result != RS_DONE) |
30 | printf("error in rdiffGenSig: %d", result ); | 35 | printf("error in rdiffGenSig: %d", result ); |
31 | } | 36 | } |
32 | } | 37 | } |
33 | 38 | ||
34 | 39 | ||
35 | void QRsync::generateDiff( QString baseFile, QString sigFile, QString deltaFile ) | 40 | void QRsync::generateDiff( QString baseFile, QString sigFile, QString deltaFile ) |
36 | { | 41 | { |
37 | if ( QFile::exists( baseFile ) && QFile::exists( sigFile ) ) { | 42 | if ( QFile::exists( baseFile ) && QFile::exists( sigFile ) ) { |
38 | FILE *sig_file, *new_file, *delta_file; | 43 | FILE *sig_file, *new_file, *delta_file; |
39 | rs_result result; | 44 | rs_result result; |
40 | rs_signature_t *sumset; | 45 | rs_signature_t *sumset; |
41 | 46 | ||
42 | sig_file = fopen(sigFile.latin1(), "rb"); | 47 | sig_file = fopen(sigFile.latin1(), "rb"); |
43 | new_file = fopen(baseFile.latin1(), "rb"); | 48 | new_file = fopen(baseFile.latin1(), "rb"); |
44 | delta_file = fopen(deltaFile.latin1(), "wb"); | 49 | delta_file = fopen(deltaFile.latin1(), "wb"); |
45 | 50 | ||
46 | result = rs_loadsig_file(sig_file, &sumset, 0); | 51 | result = rs_loadsig_file(sig_file, &sumset, 0); |
47 | if (result != RS_DONE) { | 52 | if (result != RS_DONE) { |
48 | qDebug( "rdiffGenDiff: loading of sig file failed, error=%d", result ); | 53 | odebug << "rdiffGenDiff: loading of sig file failed, error=" << result << "" << oendl; |
49 | } else { | 54 | } else { |
50 | result = rs_build_hash_table(sumset); | 55 | result = rs_build_hash_table(sumset); |
51 | if ( result != RS_DONE) { | 56 | if ( result != RS_DONE) { |
52 | qDebug( "rdiffGenDiff: building of hash table failed, error=%d", result ); | 57 | odebug << "rdiffGenDiff: building of hash table failed, error=" << result << "" << oendl; |
53 | } else { | 58 | } else { |
54 | result = rs_delta_file(sumset, new_file, delta_file, 0); | 59 | result = rs_delta_file(sumset, new_file, delta_file, 0); |
55 | if ( result != RS_DONE) { | 60 | if ( result != RS_DONE) { |
56 | qDebug( "rdiffGenDiff: writing of diff file failed, error=%d", result ); | 61 | odebug << "rdiffGenDiff: writing of diff file failed, error=" << result << "" << oendl; |
57 | } | 62 | } |
58 | } | 63 | } |
59 | } | 64 | } |
60 | 65 | ||
61 | if ( sumset ) | 66 | if ( sumset ) |
62 | rs_free_sumset( sumset ); | 67 | rs_free_sumset( sumset ); |
63 | fclose( new_file ); | 68 | fclose( new_file ); |
64 | fclose( delta_file ); | 69 | fclose( delta_file ); |
65 | fclose( sig_file ); | 70 | fclose( sig_file ); |
66 | 71 | ||
67 | } | 72 | } |
68 | } | 73 | } |
69 | 74 | ||
70 | void QRsync::applyDiff( QString baseFile, QString deltaFile ) | 75 | void QRsync::applyDiff( QString baseFile, QString deltaFile ) |
71 | { | 76 | { |
72 | if ( QFile::exists( baseFile ) && QFile::exists( deltaFile ) ) { | 77 | if ( QFile::exists( baseFile ) && QFile::exists( deltaFile ) ) { |
73 | FILE *basis_file, *delta_file, *new_file; | 78 | FILE *basis_file, *delta_file, *new_file; |
74 | rs_result result; | 79 | rs_result result; |
75 | 80 | ||
76 | basis_file = fopen(baseFile.latin1(), "rb"); | 81 | basis_file = fopen(baseFile.latin1(), "rb"); |
77 | delta_file = fopen(deltaFile.latin1(), "rb"); | 82 | delta_file = fopen(deltaFile.latin1(), "rb"); |
78 | #ifdef Q_WS_WIN | 83 | #ifdef Q_WS_WIN |
79 | new_file = fopen( (baseFile + ".new").latin1(), "wb" ); | 84 | new_file = fopen( (baseFile + ".new").latin1(), "wb" ); |
80 | #else | 85 | #else |
81 | new_file = fopen(rdiffNewFile, "wb"); | 86 | new_file = fopen(rdiffNewFile, "wb"); |
82 | #endif | 87 | #endif |
83 | 88 | ||
84 | result = rs_patch_file(basis_file, delta_file, new_file, 0); | 89 | result = rs_patch_file(basis_file, delta_file, new_file, 0); |
85 | 90 | ||
86 | fclose( basis_file ); | 91 | fclose( basis_file ); |
87 | fclose( delta_file ); | 92 | fclose( delta_file ); |
88 | fclose( new_file ); | 93 | fclose( new_file ); |
89 | 94 | ||
90 | if (result != RS_DONE) { | 95 | if (result != RS_DONE) { |
91 | qDebug( "rdiffApplyDiff failed with result %d", result ); | 96 | odebug << "rdiffApplyDiff failed with result " << result << "" << oendl; |
92 | return; | 97 | return; |
93 | } | 98 | } |
94 | 99 | ||
95 | 100 | ||
96 | #ifdef Q_WS_WIN | 101 | #ifdef Q_WS_WIN |
97 | QDir dir; | 102 | QDir dir; |
98 | QFile backup = baseFile + "~"; | 103 | QFile backup = baseFile + "~"; |
99 | dir.rename( baseFile, backup ); | 104 | dir.rename( baseFile, backup ); |
100 | dir.rename( (baseFile + ".new"), baseFile ); | 105 | dir.rename( (baseFile + ".new"), baseFile ); |
101 | dir.remove( backup ); | 106 | dir.remove( backup ); |
102 | #else | 107 | #else |
103 | QString cmd = "mv "; | 108 | QString cmd = "mv "; |
104 | cmd += rdiffNewFile; | 109 | cmd += rdiffNewFile; |
105 | cmd += " " + baseFile; | 110 | cmd += " " + baseFile; |
106 | system( cmd.latin1() ); | 111 | system( cmd.latin1() ); |
107 | #endif | 112 | #endif |
108 | } | 113 | } |
109 | 114 | ||
110 | } | 115 | } |