-rw-r--r-- | kaddressbook/kabcore.cpp | 2 | ||||
-rw-r--r-- | kaddressbook/views/cardview.cpp | 10 | ||||
-rw-r--r-- | kmicromail/koprefsdialog.cpp | 7 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/generatemail.cpp | 16 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/generatemail.h | 1 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/genericwrapper.cpp | 3 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/imapwrapper.cpp | 4 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/mailwrapper.h | 2 | ||||
-rw-r--r-- | kmicromail/mainwindow.cpp | 3 | ||||
-rw-r--r-- | microkde/kdecore/klocale.cpp | 27 | ||||
-rw-r--r-- | microkde/kidmanager.cpp | 2 | ||||
-rw-r--r-- | microkde/kresources/managerimpl.cpp | 4 |
12 files changed, 46 insertions, 35 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index d651224..c339244 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -2682,129 +2682,129 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo | |||
2682 | Addressee newAdd; | 2682 | Addressee newAdd; |
2683 | addresseeRSync = newAdd; | 2683 | addresseeRSync = newAdd; |
2684 | addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); | 2684 | addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); |
2685 | addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); | 2685 | addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); |
2686 | addresseeRSync.setRevision( mLastAddressbookSync ); | 2686 | addresseeRSync.setRevision( mLastAddressbookSync ); |
2687 | addresseeRSync.setCategories( i18n("SyncAddressee") ); | 2687 | addresseeRSync.setCategories( i18n("SyncAddressee") ); |
2688 | } | 2688 | } |
2689 | } | 2689 | } |
2690 | if ( addresseeLSync.revision() == mLastAddressbookSync ) { | 2690 | if ( addresseeLSync.revision() == mLastAddressbookSync ) { |
2691 | // qDebug("FULLDATE 2"); | 2691 | // qDebug("FULLDATE 2"); |
2692 | fullDateRange = true; | 2692 | fullDateRange = true; |
2693 | } | 2693 | } |
2694 | if ( ! fullDateRange ) { | 2694 | if ( ! fullDateRange ) { |
2695 | if ( addresseeLSync.revision() != addresseeRSync.revision() ) { | 2695 | if ( addresseeLSync.revision() != addresseeRSync.revision() ) { |
2696 | 2696 | ||
2697 | // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); | 2697 | // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); |
2698 | //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); | 2698 | //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); |
2699 | fullDateRange = true; | 2699 | fullDateRange = true; |
2700 | //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); | 2700 | //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); |
2701 | } | 2701 | } |
2702 | } | 2702 | } |
2703 | // fullDateRange = true; // debug only! | 2703 | // fullDateRange = true; // debug only! |
2704 | if ( fullDateRange ) | 2704 | if ( fullDateRange ) |
2705 | mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); | 2705 | mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); |
2706 | else | 2706 | else |
2707 | mLastAddressbookSync = addresseeLSync.revision(); | 2707 | mLastAddressbookSync = addresseeLSync.revision(); |
2708 | // for resyncing if own file has changed | 2708 | // for resyncing if own file has changed |
2709 | // PENDING fixme later when implemented | 2709 | // PENDING fixme later when implemented |
2710 | #if 0 | 2710 | #if 0 |
2711 | if ( mCurrentSyncDevice == "deleteaftersync" ) { | 2711 | if ( mCurrentSyncDevice == "deleteaftersync" ) { |
2712 | mLastAddressbookSync = loadedFileVersion; | 2712 | mLastAddressbookSync = loadedFileVersion; |
2713 | qDebug("setting mLastAddressbookSync "); | 2713 | qDebug("setting mLastAddressbookSync "); |
2714 | } | 2714 | } |
2715 | #endif | 2715 | #endif |
2716 | 2716 | ||
2717 | //qDebug("*************************** "); | 2717 | //qDebug("*************************** "); |
2718 | // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); | 2718 | // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); |
2719 | QStringList er = remote->uidList(); | 2719 | QStringList er = remote->uidList(); |
2720 | Addressee inR ;//= er.first(); | 2720 | Addressee inR ;//= er.first(); |
2721 | Addressee inL; | 2721 | Addressee inL; |
2722 | 2722 | ||
2723 | syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); | 2723 | syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); |
2724 | 2724 | ||
2725 | int modulo = (er.count()/10)+1; | 2725 | int modulo = (er.count()/10)+1; |
2726 | int incCounter = 0; | 2726 | int incCounter = 0; |
2727 | while ( incCounter < er.count()) { | 2727 | while ( incCounter < er.count()) { |
2728 | if (syncManager->isProgressBarCanceled()) | 2728 | if (syncManager->isProgressBarCanceled()) |
2729 | return false; | 2729 | return false; |
2730 | if ( incCounter % modulo == 0 ) | 2730 | if ( incCounter % modulo == 0 ) |
2731 | syncManager->showProgressBar(incCounter); | 2731 | syncManager->showProgressBar(incCounter); |
2732 | 2732 | ||
2733 | uid = er[ incCounter ]; | 2733 | uid = er[ incCounter ]; |
2734 | bool skipIncidence = false; | 2734 | bool skipIncidence = false; |
2735 | if ( uid.left(19) == QString("last-syncAddressee-") ) | 2735 | if ( uid.left(19) == QString("last-syncAddressee-") ) |
2736 | skipIncidence = true; | 2736 | skipIncidence = true; |
2737 | QString idS,OidS; | 2737 | QString idS,OidS; |
2738 | qApp->processEvents(); | 2738 | qApp->processEvents(); |
2739 | if ( !skipIncidence ) { | 2739 | if ( !skipIncidence ) { |
2740 | inL = local->findByUid( uid ); | 2740 | inL = local->findByUid( uid ); |
2741 | inR = remote->findByUid( uid ); | 2741 | inR = remote->findByUid( uid ); |
2742 | //inL.setResource( 0 ); | 2742 | //inL.setResource( 0 ); |
2743 | //inR.setResource( 0 ); | 2743 | //inR.setResource( 0 ); |
2744 | if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars | 2744 | if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars |
2745 | if ( !inL.resource() || inL.resource()->includeInSync() ) { | 2745 | if ( !inL.resource() || inL.resource()->includeInSync() ) { |
2746 | if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) { | 2746 | if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) { |
2747 | //qDebug("take %d %s ", take, inL.summary().latin1()); | 2747 | //qDebug("take %d %s ", take, inL.summary().latin1()); |
2748 | if ( take == 3 ) | 2748 | if ( take == 3 ) |
2749 | return false; | 2749 | return false; |
2750 | if ( take == 1 ) {// take local ********************** | 2750 | if ( take == 1 ) {// take local ********************** |
2751 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 2751 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2752 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); | 2752 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); |
2753 | inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); | 2753 | inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); |
2754 | local->insertAddressee( inL, false ); | 2754 | local->insertAddressee( inL, false ); |
2755 | idS = inR.externalUID(); | 2755 | idS = inR.externalUID(); |
2756 | OidS = inR.originalExternalUID(); | 2756 | OidS = inR.originalExternalUID(); |
2757 | } | 2757 | } |
2758 | else | 2758 | else |
2759 | idS = inR.IDStr(); | 2759 | idS = inR.IDStr(); |
2760 | remote->removeAddressee( inR ); | 2760 | remote->removeAddressee( inR ); |
2761 | inR = inL; | 2761 | inR = inL; |
2762 | inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); | 2762 | inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); |
2763 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 2763 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2764 | inR.setOriginalExternalUID( OidS ); | 2764 | inR.setOriginalExternalUID( OidS ); |
2765 | inR.setExternalUID( idS ); | 2765 | inR.setExternalUID( idS ); |
2766 | if ( syncManager->syncWithDesktop() ) { | 2766 | if ( syncManager->syncWithDesktop() ) { |
2767 | inR.setIDStr("changed" ); | 2767 | inR.setIDStr("changed" ); |
2768 | } | 2768 | } |
2769 | //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" ); | 2769 | //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" ); |
2770 | } else { | 2770 | } else { |
2771 | inR.setIDStr( idS ); | 2771 | inR.setIDStr( idS ); |
2772 | } | 2772 | } |
2773 | inR.setResource( 0 ); | 2773 | inR.setResource( 0 ); |
2774 | remote->insertAddressee( inR , false); | 2774 | remote->insertAddressee( inR , false); |
2775 | ++changedRemote; | 2775 | ++changedRemote; |
2776 | } else { // take == 2 take remote ********************** | 2776 | } else { // take == 2 take remote ********************** |
2777 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 2777 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2778 | if ( inR.revision().date().year() < 2004 ) | 2778 | if ( inR.revision().date().year() < 2004 ) |
2779 | inR.setRevision( modifiedCalendar ); | 2779 | inR.setRevision( modifiedCalendar ); |
2780 | } | 2780 | } |
2781 | idS = inL.IDStr(); | 2781 | idS = inL.IDStr(); |
2782 | local->removeAddressee( inL ); | 2782 | local->removeAddressee( inL ); |
2783 | inL = inR; | 2783 | inL = inR; |
2784 | inL.setIDStr( idS ); | 2784 | inL.setIDStr( idS ); |
2785 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 2785 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2786 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); | 2786 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); |
2787 | inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); | 2787 | inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); |
2788 | } | 2788 | } |
2789 | inL.setResource( 0 ); | 2789 | inL.setResource( 0 ); |
2790 | local->insertAddressee( inL , false ); | 2790 | local->insertAddressee( inL , false ); |
2791 | ++changedLocal; | 2791 | ++changedLocal; |
2792 | } | 2792 | } |
2793 | } | 2793 | } |
2794 | } | 2794 | } |
2795 | } else { // no conflict ********** add or delete remote | 2795 | } else { // no conflict ********** add or delete remote |
2796 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 2796 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
2797 | QString des = addresseeLSync.note(); | 2797 | QString des = addresseeLSync.note(); |
2798 | if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it | 2798 | if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it |
2799 | inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); | 2799 | inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); |
2800 | remote->insertAddressee( inR, false ); | 2800 | remote->insertAddressee( inR, false ); |
2801 | ++deletedAddresseeR; | 2801 | ++deletedAddresseeR; |
2802 | } else { | 2802 | } else { |
2803 | inR.setRevision( modifiedCalendar ); | 2803 | inR.setRevision( modifiedCalendar ); |
2804 | remote->insertAddressee( inR, false ); | 2804 | remote->insertAddressee( inR, false ); |
2805 | inL = inR; | 2805 | inL = inR; |
2806 | inL.setIDStr( ":" ); | 2806 | inL.setIDStr( ":" ); |
2807 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); | 2807 | inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); |
2808 | inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); | 2808 | inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); |
2809 | inL.setResource( 0 ); | 2809 | inL.setResource( 0 ); |
2810 | local->insertAddressee( inL , false); | 2810 | local->insertAddressee( inL , false); |
diff --git a/kaddressbook/views/cardview.cpp b/kaddressbook/views/cardview.cpp index da552c3..03df444 100644 --- a/kaddressbook/views/cardview.cpp +++ b/kaddressbook/views/cardview.cpp | |||
@@ -93,178 +93,178 @@ class CardViewItemList : public QPtrList<CardViewItem> | |||
93 | 93 | ||
94 | return 0; | 94 | return 0; |
95 | } | 95 | } |
96 | 96 | ||
97 | private: | 97 | private: |
98 | /*int find( const CardViewItem * ) | 98 | /*int find( const CardViewItem * ) |
99 | { | 99 | { |
100 | qDebug("DON'T USE CardViewItemList::find( item )! Use findRef( item )!"); | 100 | qDebug("DON'T USE CardViewItemList::find( item )! Use findRef( item )!"); |
101 | }*/ | 101 | }*/ |
102 | }; | 102 | }; |
103 | 103 | ||
104 | ////////////////////////////////////// | 104 | ////////////////////////////////////// |
105 | // CardViewSeparator | 105 | // CardViewSeparator |
106 | class CardViewSeparator | 106 | class CardViewSeparator |
107 | { | 107 | { |
108 | friend class CardView; | 108 | friend class CardView; |
109 | 109 | ||
110 | public: | 110 | public: |
111 | CardViewSeparator(CardView *view) | 111 | CardViewSeparator(CardView *view) |
112 | : mView(view) | 112 | : mView(view) |
113 | { | 113 | { |
114 | mRect = QRect(0, 0, view->separatorWidth(), 0); | 114 | mRect = QRect(0, 0, view->separatorWidth(), 0); |
115 | } | 115 | } |
116 | 116 | ||
117 | ~CardViewSeparator() {} | 117 | ~CardViewSeparator() {} |
118 | 118 | ||
119 | void paintSeparator(QPainter *p, QColorGroup &cg) | 119 | void paintSeparator(QPainter *p, QColorGroup &cg) |
120 | { | 120 | { |
121 | p->fillRect(0, 0, mRect.width(), mRect.height(), | 121 | p->fillRect(0, 0, mRect.width(), mRect.height(), |
122 | cg.brush(QColorGroup::Button)); | 122 | cg.brush(QColorGroup::Button)); |
123 | } | 123 | } |
124 | 124 | ||
125 | void repaintSeparator() | 125 | void repaintSeparator() |
126 | { | 126 | { |
127 | mView->repaintContents(mRect); | 127 | mView->repaintContents(mRect); |
128 | } | 128 | } |
129 | 129 | ||
130 | private: | 130 | private: |
131 | CardView *mView; | 131 | CardView *mView; |
132 | QRect mRect; | 132 | QRect mRect; |
133 | }; | 133 | }; |
134 | 134 | ||
135 | //END Helpers | 135 | //END Helpers |
136 | 136 | ||
137 | //BEGIN Private Data | 137 | //BEGIN Private Data |
138 | 138 | ||
139 | class CardViewPrivate | 139 | class CardViewPrivate |
140 | { | 140 | { |
141 | public: | 141 | public: |
142 | CardViewPrivate() | 142 | CardViewPrivate() |
143 | : mSelectionMode( CardView::Multi ), | 143 | : mSelectionMode( CardView::Multi ), |
144 | mDrawCardBorder( true ), | 144 | mDrawCardBorder( true ), |
145 | mDrawFieldLabels( true ), | 145 | mDrawFieldLabels( true ), |
146 | mDrawSeparators( true), | 146 | mDrawSeparators( true), |
147 | mSepWidth( 2 ), | 147 | mSepWidth( 2 ), |
148 | mShowEmptyFields( false ), | 148 | mShowEmptyFields( false ), |
149 | mLayoutDirty( true ), | 149 | mLayoutDirty( true ), |
150 | mLastClickOnItem( false ), | 150 | mLastClickOnItem( false ), |
151 | mItemMargin( 0 ), | 151 | mItemMargin( 0 ), |
152 | mItemSpacing( 10 ), | 152 | mItemSpacing( 10 ), |
153 | mItemWidth( 200 ), | 153 | mItemWidth( 200 ), |
154 | mMaxFieldLines( INT_MAX ), | 154 | mMaxFieldLines( INT_MAX ), |
155 | mCurrentItem( 0L ), | 155 | mCurrentItem( 0L ), |
156 | mLastClickPos( QPoint(0, 0) ), | 156 | mLastClickPos( QPoint(0, 0) ), |
157 | mResizeAnchor(0), | ||
157 | mRubberBandAnchor( 0 ), | 158 | mRubberBandAnchor( 0 ), |
158 | mCompText( QString::null ), | 159 | mCompText( QString::null ) |
159 | mResizeAnchor(0) | ||
160 | {}; | 160 | {}; |
161 | 161 | ||
162 | CardViewItemList mItemList; | 162 | CardViewItemList mItemList; |
163 | QPtrList<CardViewSeparator> mSeparatorList; | 163 | QPtrList<CardViewSeparator> mSeparatorList; |
164 | QFontMetrics *mFm; | 164 | QFontMetrics *mFm; |
165 | QFontMetrics *mBFm; // bold font | 165 | QFontMetrics *mBFm; // bold font |
166 | QFont mHeaderFont; // custom header font | 166 | QFont mHeaderFont; // custom header font |
167 | CardView::SelectionMode mSelectionMode; | 167 | CardView::SelectionMode mSelectionMode; |
168 | bool mDrawCardBorder; | 168 | bool mDrawCardBorder; |
169 | bool mDrawFieldLabels; | 169 | bool mDrawFieldLabels; |
170 | bool mDrawSeparators; | 170 | bool mDrawSeparators; |
171 | int mSepWidth; | 171 | int mSepWidth; |
172 | bool mShowEmptyFields; | 172 | bool mShowEmptyFields; |
173 | bool mLayoutDirty; | 173 | bool mLayoutDirty; |
174 | bool mLastClickOnItem; | 174 | bool mLastClickOnItem; |
175 | uint mItemMargin; // internal margin in items | 175 | uint mItemMargin; // internal margin in items |
176 | uint mItemSpacing; // spacing between items, column seperators and border | 176 | uint mItemSpacing; // spacing between items, column seperators and border |
177 | int mItemWidth; // width of all items | 177 | int mItemWidth; // width of all items |
178 | uint mMaxFieldLines; // Max lines to dispaly pr field | 178 | uint mMaxFieldLines; // Max lines to dispaly pr field |
179 | CardViewItem *mCurrentItem; | 179 | CardViewItem *mCurrentItem; |
180 | QPoint mLastClickPos; | 180 | QPoint mLastClickPos; |
181 | QTimer *mTimer; // times out if mouse rests for more than 500 msecs | 181 | QTimer *mTimer; // times out if mouse rests for more than 500 msecs |
182 | CardViewTip *mTip; // passed to the item under a resting cursor to display full text | 182 | CardViewTip *mTip; // passed to the item under a resting cursor to display full text |
183 | bool mOnSeparator; // set/reset on mouse movement | 183 | bool mOnSeparator; // set/reset on mouse movement |
184 | // for resizing by dragging the separators | 184 | // for resizing by dragging the separators |
185 | int mResizeAnchor; // uint, ulong? the mouse down separator left | 185 | int mResizeAnchor; // uint, ulong? the mouse down separator left |
186 | int mRubberBandAnchor; // for erasing rubber bands | 186 | int mRubberBandAnchor; // for erasing rubber bands |
187 | // data used for resizing. | 187 | // data used for resizing. |
188 | // as they are beeded by each mouse move while resizing, we store them here, | 188 | // as they are beeded by each mouse move while resizing, we store them here, |
189 | // saving 8 calculations in each mouse move. | 189 | // saving 8 calculations in each mouse move. |
190 | int colspace; // amount of space between items pr column | 190 | int colspace; // amount of space between items pr column |
191 | uint first; // the first col to anchor at for painting rubber bands | 191 | uint first; // the first col to anchor at for painting rubber bands |
192 | int firstX; // X position of first in pixel | 192 | int firstX; // X position of first in pixel |
193 | int pressed; // the colummn that was pressed on at resizing start | 193 | int pressed; // the colummn that was pressed on at resizing start |
194 | int span; // pressed - first | 194 | int span; // pressed - first |
195 | // key completion | 195 | // key completion |
196 | QString mCompText; // current completion string | 196 | QString mCompText; // current completion string |
197 | QDateTime mCompUpdated; // ...was updated at this time | 197 | QDateTime mCompUpdated; // ...was updated at this time |
198 | }; | 198 | }; |
199 | 199 | ||
200 | class CardViewItemPrivate | 200 | class CardViewItemPrivate |
201 | { | 201 | { |
202 | public: | 202 | public: |
203 | CardViewItemPrivate() : | 203 | CardViewItemPrivate() : |
204 | x( 0 ), | 204 | mSelected( false ), |
205 | y( 0 ), | 205 | x( 0 ), |
206 | mSelected( false ){}; | 206 | y( 0 ){}; |
207 | 207 | ||
208 | 208 | ||
209 | QString mCaption; | 209 | QString mCaption; |
210 | QPtrList< CardViewItem::Field > mFieldList; | 210 | QPtrList< CardViewItem::Field > mFieldList; |
211 | bool mSelected; | 211 | bool mSelected; |
212 | int x; // horizontal position, set by the view | 212 | int x; // horizontal position, set by the view |
213 | int y; // vertical position, set by the view | 213 | int y; // vertical position, set by the view |
214 | int maxLabelWidth; // the width of the widest label, according to the view font. | 214 | int maxLabelWidth; // the width of the widest label, according to the view font. |
215 | int hcache; // height cache | 215 | int hcache; // height cache |
216 | }; | 216 | }; |
217 | //END Private Data | 217 | //END Private Data |
218 | 218 | ||
219 | //BEGIN CardViewItem | 219 | //BEGIN CardViewItem |
220 | 220 | ||
221 | CardViewItem::CardViewItem(CardView *parent, QString caption) | 221 | CardViewItem::CardViewItem(CardView *parent, QString caption) |
222 | : d(new CardViewItemPrivate()), mView(parent) | 222 | : d(new CardViewItemPrivate()), mView(parent) |
223 | { | 223 | { |
224 | d->mCaption = caption; | 224 | d->mCaption = caption; |
225 | 225 | ||
226 | initialize(); | 226 | initialize(); |
227 | } | 227 | } |
228 | 228 | ||
229 | CardViewItem::~CardViewItem() | 229 | CardViewItem::~CardViewItem() |
230 | { | 230 | { |
231 | // Remove ourself from the view | 231 | // Remove ourself from the view |
232 | if (mView != 0) | 232 | if (mView != 0) |
233 | mView->takeItem(this); | 233 | mView->takeItem(this); |
234 | 234 | ||
235 | delete d; | 235 | delete d; |
236 | d = 0; | 236 | d = 0; |
237 | } | 237 | } |
238 | 238 | ||
239 | void CardViewItem::initialize() | 239 | void CardViewItem::initialize() |
240 | { | 240 | { |
241 | d->mSelected = false; | 241 | d->mSelected = false; |
242 | d->mFieldList.setAutoDelete(true); | 242 | d->mFieldList.setAutoDelete(true); |
243 | d->maxLabelWidth = 0; | 243 | d->maxLabelWidth = 0; |
244 | d->hcache=0; | 244 | d->hcache=0; |
245 | 245 | ||
246 | //calcRect(); | 246 | //calcRect(); |
247 | 247 | ||
248 | // Add ourself to the view | 248 | // Add ourself to the view |
249 | if (mView != 0) | 249 | if (mView != 0) |
250 | mView->insertItem(this); | 250 | mView->insertItem(this); |
251 | } | 251 | } |
252 | 252 | ||
253 | void CardViewItem::paintCard(QPainter *p, QColorGroup &cg) | 253 | void CardViewItem::paintCard(QPainter *p, QColorGroup &cg) |
254 | { | 254 | { |
255 | 255 | ||
256 | if (!mView) | 256 | if (!mView) |
257 | return; | 257 | return; |
258 | 258 | ||
259 | QPen pen; | 259 | QPen pen; |
260 | QBrush brush; | 260 | QBrush brush; |
261 | QFontMetrics fm = *(mView->d->mFm); | 261 | QFontMetrics fm = *(mView->d->mFm); |
262 | QFontMetrics bFm = *(mView->d->mBFm); | 262 | QFontMetrics bFm = *(mView->d->mBFm); |
263 | bool drawLabels = mView->d->mDrawFieldLabels; | 263 | bool drawLabels = mView->d->mDrawFieldLabels; |
264 | bool drawBorder = mView->d->mDrawCardBorder; | 264 | bool drawBorder = mView->d->mDrawCardBorder; |
265 | int mg = mView->itemMargin(); | 265 | int mg = mView->itemMargin(); |
266 | int w = mView->itemWidth() - (mg*2); | 266 | int w = mView->itemWidth() - (mg*2); |
267 | int h = height() - (mg*2); | 267 | int h = height() - (mg*2); |
268 | const int colonWidth( fm.width(":") ); | 268 | const int colonWidth( fm.width(":") ); |
269 | int labelXPos = 2 + mg; | 269 | int labelXPos = 2 + mg; |
270 | int labelWidth = QMIN( w/2 - 4 - mg, d->maxLabelWidth + colonWidth + 4 ); | 270 | int labelWidth = QMIN( w/2 - 4 - mg, d->maxLabelWidth + colonWidth + 4 ); |
diff --git a/kmicromail/koprefsdialog.cpp b/kmicromail/koprefsdialog.cpp index 4abf859..13d6681 100644 --- a/kmicromail/koprefsdialog.cpp +++ b/kmicromail/koprefsdialog.cpp | |||
@@ -86,187 +86,188 @@ KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) : | |||
86 | setupViewsTab(); | 86 | setupViewsTab(); |
87 | //setupSyncTab(); | 87 | //setupSyncTab(); |
88 | //setupSyncAlgTab(); | 88 | //setupSyncAlgTab(); |
89 | //setupPrinterTab(); | 89 | //setupPrinterTab(); |
90 | //setupGroupSchedulingTab(); | 90 | //setupGroupSchedulingTab(); |
91 | //setupGroupAutomationTab(); | 91 | //setupGroupAutomationTab(); |
92 | #endif | 92 | #endif |
93 | } | 93 | } |
94 | 94 | ||
95 | #include "kpimglobalprefs.h" | 95 | #include "kpimglobalprefs.h" |
96 | 96 | ||
97 | KOPrefsDialog::~KOPrefsDialog() | 97 | KOPrefsDialog::~KOPrefsDialog() |
98 | { | 98 | { |
99 | } | 99 | } |
100 | void KOPrefsDialog::setupGlobalTab() | 100 | void KOPrefsDialog::setupGlobalTab() |
101 | { | 101 | { |
102 | QFrame *topFrame = addPage(i18n("Global"),0,0); | 102 | QFrame *topFrame = addPage(i18n("Global"),0,0); |
103 | kdelibcfg = new KDEPIMConfigWidget( KPimGlobalPrefs::instance(), topFrame, "KCMKdeLibConfig" ); | 103 | kdelibcfg = new KDEPIMConfigWidget( KPimGlobalPrefs::instance(), topFrame, "KCMKdeLibConfig" ); |
104 | QVBoxLayout *topLayout = new QVBoxLayout(topFrame); | 104 | QVBoxLayout *topLayout = new QVBoxLayout(topFrame); |
105 | topLayout->addWidget( kdelibcfg ); | 105 | topLayout->addWidget( kdelibcfg ); |
106 | 106 | ||
107 | 107 | ||
108 | } | 108 | } |
109 | void KOPrefsDialog::setupMainTab() | 109 | void KOPrefsDialog::setupMainTab() |
110 | { | 110 | { |
111 | QFrame *topFrame = addPage(i18n("General"),0,0); | 111 | QFrame *topFrame = addPage(i18n("General"),0,0); |
112 | 112 | ||
113 | QGridLayout *topLayout = new QGridLayout(topFrame,6,2); | 113 | QGridLayout *topLayout = new QGridLayout(topFrame,6,2); |
114 | topLayout->setSpacing(spacingHint()); | 114 | topLayout->setSpacing(spacingHint()); |
115 | topLayout->setMargin(marginHint()); | 115 | topLayout->setMargin(marginHint()); |
116 | 116 | ||
117 | 117 | ||
118 | mNameEdit = new QLineEdit(topFrame); | 118 | mNameEdit = new QLineEdit(topFrame); |
119 | mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); | 119 | mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); |
120 | topLayout->addWidget(mNameLabel,0,0); | 120 | topLayout->addWidget(mNameLabel,0,0); |
121 | topLayout->addWidget(mNameEdit,0,1); | 121 | topLayout->addWidget(mNameEdit,0,1); |
122 | 122 | ||
123 | mEmailEdit = new QLineEdit(topFrame); | 123 | mEmailEdit = new QLineEdit(topFrame); |
124 | mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); | 124 | mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); |
125 | topLayout->addWidget(mEmailLabel,1,0); | 125 | topLayout->addWidget(mEmailLabel,1,0); |
126 | topLayout->addWidget(mEmailEdit,1,1); | 126 | topLayout->addWidget(mEmailEdit,1,1); |
127 | QLabel *lab = new QLabel( i18n("HINT: Separate multiple\neMail addresses by \";\""), topFrame); | 127 | QLabel *lab = new QLabel( i18n("HINT: Separate multiple\neMail addresses by \";\""), topFrame); |
128 | topLayout->addMultiCellWidget(lab,2,2,0,1); | 128 | topLayout->addMultiCellWidget(lab,2,2,0,1); |
129 | KPrefsDialogWidBool* ttt = addWidBool(i18n("Ignore above settings and\nuse KA/Pi \"Who am I\" instead!"), | 129 | KPrefsDialogWidBool* ttt = addWidBool(i18n("Ignore above settings and\nuse KA/Pi \"Who am I\" instead!"), |
130 | &(KOPrefs::instance()->mUseKapi),topFrame); | 130 | &(KOPrefs::instance()->mUseKapi),topFrame); |
131 | topLayout->addMultiCellWidget(ttt->checkBox(),3,3,0,1); | 131 | topLayout->addMultiCellWidget(ttt->checkBox(),3,3,0,1); |
132 | } | 132 | } |
133 | 133 | ||
134 | void KOPrefsDialog::setupMailTab() | 134 | void KOPrefsDialog::setupMailTab() |
135 | { | 135 | { |
136 | QFrame *topFrame = addPage(i18n("Mail"),0,0); | 136 | QFrame *topFrame = addPage(i18n("Mail"),0,0); |
137 | 137 | ||
138 | QGridLayout *topLayout = new QGridLayout(topFrame,4,2); | 138 | QGridLayout *topLayout = new QGridLayout(topFrame,4,2); |
139 | topLayout->setSpacing(spacingHint()); | 139 | topLayout->setSpacing(spacingHint()); |
140 | topLayout->setMargin(marginHint()); | 140 | topLayout->setMargin(marginHint()); |
141 | 141 | ||
142 | KPrefsDialogWidBool* ttt = addWidBool(i18n("View mail as html"), | 142 | KPrefsDialogWidBool* ttt = addWidBool(i18n("View mail as html"), |
143 | &(KOPrefs::instance()->mViewAsHtml),topFrame); | 143 | &(KOPrefs::instance()->mViewAsHtml),topFrame); |
144 | topLayout->addMultiCellWidget(ttt->checkBox(),0,0,0,1); | 144 | topLayout->addMultiCellWidget(ttt->checkBox(),0,0,0,1); |
145 | 145 | ||
146 | 146 | ||
147 | ttt = addWidBool(i18n("Send mails later"), | 147 | ttt = addWidBool(i18n("Send mails later"), |
148 | &(KOPrefs::instance()->mSendLater),topFrame); | 148 | &(KOPrefs::instance()->mSendLater),topFrame); |
149 | topLayout->addMultiCellWidget(ttt->checkBox(),1,1,0,1); | 149 | topLayout->addMultiCellWidget(ttt->checkBox(),1,1,0,1); |
150 | /* | ||
150 | mCodecEdit = new QLineEdit(topFrame); | 151 | mCodecEdit = new QLineEdit(topFrame); |
151 | topLayout->addMultiCellWidget( new QLabel(mCodecEdit, i18n("User defined codec for new mails:"), topFrame),2,2,0,1); | 152 | topLayout->addMultiCellWidget( new QLabel(mCodecEdit, i18n("User defined codec for new mails:"), topFrame),2,2,0,1); |
152 | topLayout->addMultiCellWidget(mCodecEdit,3,3,0,1); | 153 | topLayout->addMultiCellWidget(mCodecEdit,3,3,0,1); |
153 | topLayout->addMultiCellWidget( new QLabel(0, i18n("Example: iso-8859-15"), topFrame),4,4,0,1); | 154 | topLayout->addMultiCellWidget( new QLabel(0, i18n("Example: iso-8859-15"), topFrame),4,4,0,1); |
154 | 155 | */ | |
155 | } | 156 | } |
156 | void KOPrefsDialog::setupFontsTab() | 157 | void KOPrefsDialog::setupFontsTab() |
157 | { | 158 | { |
158 | 159 | ||
159 | QFrame *topFrame = addPage(i18n("Fonts"),0,0); | 160 | QFrame *topFrame = addPage(i18n("Fonts"),0,0); |
160 | // DesktopIcon("fonts",KIcon::SizeMedium)); | 161 | // DesktopIcon("fonts",KIcon::SizeMedium)); |
161 | 162 | ||
162 | QGridLayout *topLayout = new QGridLayout(topFrame,7,3); | 163 | QGridLayout *topLayout = new QGridLayout(topFrame,7,3); |
163 | topLayout->setSpacing(1); | 164 | topLayout->setSpacing(1); |
164 | topLayout->setMargin(3); | 165 | topLayout->setMargin(3); |
165 | KPrefsDialogWidFont * tVFont; | 166 | KPrefsDialogWidFont * tVFont; |
166 | int i = 0; | 167 | int i = 0; |
167 | KPrefsDialogWidFont *timeLabelsFont = | 168 | KPrefsDialogWidFont *timeLabelsFont = |
168 | addWidFont(i18n("OK"),i18n("Application(nr)"), | 169 | addWidFont(i18n("OK"),i18n("Application(nr)"), |
169 | &(KOPrefs::instance()->mAppFont),topFrame); | 170 | &(KOPrefs::instance()->mAppFont),topFrame); |
170 | topLayout->addWidget(timeLabelsFont->label(),i,0); | 171 | topLayout->addWidget(timeLabelsFont->label(),i,0); |
171 | topLayout->addWidget(timeLabelsFont->preview(),i,1); | 172 | topLayout->addWidget(timeLabelsFont->preview(),i,1); |
172 | topLayout->addWidget(timeLabelsFont->button(),i,2); | 173 | topLayout->addWidget(timeLabelsFont->button(),i,2); |
173 | ++i; | 174 | ++i; |
174 | 175 | ||
175 | 176 | ||
176 | timeLabelsFont = | 177 | timeLabelsFont = |
177 | addWidFont(i18n("Dear Mr."),i18n("Compose mail:"), | 178 | addWidFont(i18n("Dear Mr."),i18n("Compose mail:"), |
178 | &(KOPrefs::instance()->mComposeFont),topFrame); | 179 | &(KOPrefs::instance()->mComposeFont),topFrame); |
179 | topLayout->addWidget(timeLabelsFont->label(),i,0); | 180 | topLayout->addWidget(timeLabelsFont->label(),i,0); |
180 | topLayout->addWidget(timeLabelsFont->preview(),i,1); | 181 | topLayout->addWidget(timeLabelsFont->preview(),i,1); |
181 | topLayout->addWidget(timeLabelsFont->button(),i,2); | 182 | topLayout->addWidget(timeLabelsFont->button(),i,2); |
182 | ++i; | 183 | ++i; |
183 | 184 | ||
184 | KPrefsDialogWidFont *timeBarFont = | 185 | KPrefsDialogWidFont *timeBarFont = |
185 | addWidFont(i18n("Hello"),i18n("Read mail:"), | 186 | addWidFont(i18n("Hello"),i18n("Read mail:"), |
186 | &(KOPrefs::instance()->mReadFont),topFrame); | 187 | &(KOPrefs::instance()->mReadFont),topFrame); |
187 | topLayout->addWidget(timeBarFont->label(),i,0); | 188 | topLayout->addWidget(timeBarFont->label(),i,0); |
188 | topLayout->addWidget(timeBarFont->preview(),i,1); | 189 | topLayout->addWidget(timeBarFont->preview(),i,1); |
189 | topLayout->addWidget(timeBarFont->button(),i,2); | 190 | topLayout->addWidget(timeBarFont->button(),i,2); |
190 | ++i; | 191 | ++i; |
191 | 192 | ||
192 | topLayout->setColStretch(1,1); | 193 | topLayout->setColStretch(1,1); |
193 | topLayout->setRowStretch(4,1); | 194 | topLayout->setRowStretch(4,1); |
194 | 195 | ||
195 | } | 196 | } |
196 | void KOPrefsDialog::usrReadConfig() | 197 | void KOPrefsDialog::usrReadConfig() |
197 | { | 198 | { |
198 | 199 | ||
199 | mNameEdit->setText(KOPrefs::instance()->mName); | 200 | mNameEdit->setText(KOPrefs::instance()->mName); |
200 | mEmailEdit->setText(KOPrefs::instance()->mEmail); | 201 | mEmailEdit->setText(KOPrefs::instance()->mEmail); |
201 | mCodecEdit->setText(KOPrefs::instance()->mSendCodec); | 202 | //mCodecEdit->setText(KOPrefs::instance()->mSendCodec); |
202 | kdelibcfg->readConfig(); | 203 | kdelibcfg->readConfig(); |
203 | } | 204 | } |
204 | void KOPrefsDialog::usrWriteConfig() | 205 | void KOPrefsDialog::usrWriteConfig() |
205 | { | 206 | { |
206 | KOPrefs::instance()->mName = mNameEdit->text(); | 207 | KOPrefs::instance()->mName = mNameEdit->text(); |
207 | KOPrefs::instance()->mEmail = mEmailEdit->text(); | 208 | KOPrefs::instance()->mEmail = mEmailEdit->text(); |
208 | KOPrefs::instance()->mSendCodec = mCodecEdit->text(); | 209 | //KOPrefs::instance()->mSendCodec = mCodecEdit->text(); |
209 | kdelibcfg->writeConfig(); | 210 | kdelibcfg->writeConfig(); |
210 | 211 | ||
211 | 212 | ||
212 | } | 213 | } |
213 | 214 | ||
214 | #if 0 | 215 | #if 0 |
215 | void KOPrefsDialog::setupLocaleDateTab() | 216 | void KOPrefsDialog::setupLocaleDateTab() |
216 | { | 217 | { |
217 | QFrame *topFrame = addPage(i18n("Date Format"),0,0); | 218 | QFrame *topFrame = addPage(i18n("Date Format"),0,0); |
218 | QGridLayout *topLayout = new QGridLayout(topFrame,3,2); | 219 | QGridLayout *topLayout = new QGridLayout(topFrame,3,2); |
219 | topLayout->setSpacing(spacingHint()); | 220 | topLayout->setSpacing(spacingHint()); |
220 | topLayout->setMargin(marginHint()); | 221 | topLayout->setMargin(marginHint()); |
221 | int iii = 0; | 222 | int iii = 0; |
222 | 223 | ||
223 | 224 | ||
224 | KPrefsWidRadios *syncPrefsGroup = | 225 | KPrefsWidRadios *syncPrefsGroup = |
225 | addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame); | 226 | addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame); |
226 | QString format; | 227 | QString format; |
227 | if ( QApplication::desktop()->width() < 480 ) | 228 | if ( QApplication::desktop()->width() < 480 ) |
228 | format = "(%d.%m.%Y)"; | 229 | format = "(%d.%m.%Y)"; |
229 | else | 230 | else |
230 | format = "(%d.%m.%Y|%A %d %B %Y)"; | 231 | format = "(%d.%m.%Y|%A %d %B %Y)"; |
231 | syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); | 232 | syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); |
232 | if ( QApplication::desktop()->width() < 480 ) | 233 | if ( QApplication::desktop()->width() < 480 ) |
233 | format = "(%m.%d.%Y)"; | 234 | format = "(%m.%d.%Y)"; |
234 | else | 235 | else |
235 | format = "(%m.%d.%Y|%A %B %d %Y)"; | 236 | format = "(%m.%d.%Y|%A %B %d %Y)"; |
236 | syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); | 237 | syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); |
237 | if ( QApplication::desktop()->width() < 480 ) | 238 | if ( QApplication::desktop()->width() < 480 ) |
238 | format = "(%Y-%m-%d)"; | 239 | format = "(%Y-%m-%d)"; |
239 | else | 240 | else |
240 | format = "(%Y-%m-%d|%A %Y %B %d)"; | 241 | format = "(%Y-%m-%d|%A %Y %B %d)"; |
241 | syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); | 242 | syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); |
242 | syncPrefsGroup->addRadio(i18n("User defined")); | 243 | syncPrefsGroup->addRadio(i18n("User defined")); |
243 | topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); | 244 | topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); |
244 | ++iii; | 245 | ++iii; |
245 | ++iii; | 246 | ++iii; |
246 | QLabel * lab; | 247 | QLabel * lab; |
247 | mUserDateFormatLong = new QLineEdit(topFrame); | 248 | mUserDateFormatLong = new QLineEdit(topFrame); |
248 | lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); | 249 | lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); |
249 | topLayout->addWidget(lab ,iii,0); | 250 | topLayout->addWidget(lab ,iii,0); |
250 | topLayout->addWidget(mUserDateFormatLong,iii,1); | 251 | topLayout->addWidget(mUserDateFormatLong,iii,1); |
251 | ++iii; | 252 | ++iii; |
252 | mUserDateFormatShort = new QLineEdit(topFrame); | 253 | mUserDateFormatShort = new QLineEdit(topFrame); |
253 | lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); | 254 | lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); |
254 | topLayout->addWidget(lab ,iii,0); | 255 | topLayout->addWidget(lab ,iii,0); |
255 | topLayout->addWidget(mUserDateFormatShort,iii,1); | 256 | topLayout->addWidget(mUserDateFormatShort,iii,1); |
256 | ++iii; | 257 | ++iii; |
257 | lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); | 258 | lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); |
258 | topLayout->addMultiCellWidget(lab ,iii,iii,0,1); | 259 | topLayout->addMultiCellWidget(lab ,iii,iii,0,1); |
259 | ++iii; | 260 | ++iii; |
260 | lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); | 261 | lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); |
261 | topLayout->addMultiCellWidget(lab ,iii,iii,0,1); | 262 | topLayout->addMultiCellWidget(lab ,iii,iii,0,1); |
262 | ++iii; | 263 | ++iii; |
263 | lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); | 264 | lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); |
264 | topLayout->addMultiCellWidget(lab ,iii,iii,0,1); | 265 | topLayout->addMultiCellWidget(lab ,iii,iii,0,1); |
265 | ++iii; | 266 | ++iii; |
266 | 267 | ||
267 | } | 268 | } |
268 | 269 | ||
269 | void KOPrefsDialog::setupLocaleTab() | 270 | void KOPrefsDialog::setupLocaleTab() |
270 | { | 271 | { |
271 | QFrame *topFrame = addPage(i18n("Locale"),0,0); | 272 | QFrame *topFrame = addPage(i18n("Locale"),0,0); |
272 | QGridLayout *topLayout = new QGridLayout(topFrame,4,2); | 273 | QGridLayout *topLayout = new QGridLayout(topFrame,4,2); |
diff --git a/kmicromail/libmailwrapper/generatemail.cpp b/kmicromail/libmailwrapper/generatemail.cpp index 32311d7..2d213fe 100644 --- a/kmicromail/libmailwrapper/generatemail.cpp +++ b/kmicromail/libmailwrapper/generatemail.cpp | |||
@@ -1,79 +1,80 @@ | |||
1 | #include "generatemail.h" | 1 | #include "generatemail.h" |
2 | #include "mailwrapper.h" | 2 | #include "mailwrapper.h" |
3 | 3 | ||
4 | #include <libetpan/libetpan.h> | 4 | #include <libetpan/libetpan.h> |
5 | 5 | ||
6 | //#include <qt.h> | 6 | //#include <qt.h> |
7 | 7 | ||
8 | #include <stdlib.h> | 8 | #include <stdlib.h> |
9 | #include <qfileinfo.h> | 9 | #include <qfileinfo.h> |
10 | 10 | ||
11 | using namespace Opie::Core; | 11 | using namespace Opie::Core; |
12 | const char* Generatemail::USER_AGENT="KOpieMail 33 1/3"; | 12 | const char* Generatemail::USER_AGENT="KOpieMail 33 1/3"; |
13 | 13 | ||
14 | Generatemail::Generatemail() | 14 | Generatemail::Generatemail() |
15 | { | 15 | { |
16 | mCharset = "iso-8859-1"; | ||
16 | } | 17 | } |
17 | 18 | ||
18 | Generatemail::~Generatemail() | 19 | Generatemail::~Generatemail() |
19 | { | 20 | { |
20 | } | 21 | } |
21 | 22 | ||
22 | void Generatemail::addRcpts( clist *list, mailimf_address_list *addr_list ) { | 23 | void Generatemail::addRcpts( clist *list, mailimf_address_list *addr_list ) { |
23 | clistiter *it, *it2; | 24 | clistiter *it, *it2; |
24 | 25 | ||
25 | for ( it = clist_begin( addr_list->ad_list ); it; it = it->next ) { | 26 | for ( it = clist_begin( addr_list->ad_list ); it; it = it->next ) { |
26 | mailimf_address *addr; | 27 | mailimf_address *addr; |
27 | addr = (mailimf_address *) it->data; | 28 | addr = (mailimf_address *) it->data; |
28 | 29 | ||
29 | if ( addr->ad_type == MAILIMF_ADDRESS_MAILBOX ) { | 30 | if ( addr->ad_type == MAILIMF_ADDRESS_MAILBOX ) { |
30 | esmtp_address_list_add( list, addr->ad_data.ad_mailbox->mb_addr_spec, 0, NULL ); | 31 | esmtp_address_list_add( list, addr->ad_data.ad_mailbox->mb_addr_spec, 0, NULL ); |
31 | } else if ( addr->ad_type == MAILIMF_ADDRESS_GROUP ) { | 32 | } else if ( addr->ad_type == MAILIMF_ADDRESS_GROUP ) { |
32 | clist *l = addr->ad_data.ad_group->grp_mb_list->mb_list; | 33 | clist *l = addr->ad_data.ad_group->grp_mb_list->mb_list; |
33 | for ( it2 = clist_begin( l ); it2; it2 = it2->next ) { | 34 | for ( it2 = clist_begin( l ); it2; it2 = it2->next ) { |
34 | mailimf_mailbox *mbox; | 35 | mailimf_mailbox *mbox; |
35 | mbox = (mailimf_mailbox *) it2->data; | 36 | mbox = (mailimf_mailbox *) it2->data; |
36 | esmtp_address_list_add( list, mbox->mb_addr_spec, 0, NULL ); | 37 | esmtp_address_list_add( list, mbox->mb_addr_spec, 0, NULL ); |
37 | } | 38 | } |
38 | } | 39 | } |
39 | } | 40 | } |
40 | } | 41 | } |
41 | 42 | ||
42 | char *Generatemail::getFrom( mailimf_field *ffrom) { | 43 | char *Generatemail::getFrom( mailimf_field *ffrom) { |
43 | char *from = NULL; | 44 | char *from = NULL; |
44 | if ( ffrom && (ffrom->fld_type == MAILIMF_FIELD_FROM) | 45 | if ( ffrom && (ffrom->fld_type == MAILIMF_FIELD_FROM) |
45 | && ffrom->fld_data.fld_from->frm_mb_list && ffrom->fld_data.fld_from->frm_mb_list->mb_list ) { | 46 | && ffrom->fld_data.fld_from->frm_mb_list && ffrom->fld_data.fld_from->frm_mb_list->mb_list ) { |
46 | clist *cl = ffrom->fld_data.fld_from->frm_mb_list->mb_list; | 47 | clist *cl = ffrom->fld_data.fld_from->frm_mb_list->mb_list; |
47 | clistiter *it; | 48 | clistiter *it; |
48 | for ( it = clist_begin( cl ); it; it = it->next ) { | 49 | for ( it = clist_begin( cl ); it; it = it->next ) { |
49 | mailimf_mailbox *mb = (mailimf_mailbox *) it->data; | 50 | mailimf_mailbox *mb = (mailimf_mailbox *) it->data; |
50 | from = strdup( mb->mb_addr_spec ); | 51 | from = strdup( mb->mb_addr_spec ); |
51 | } | 52 | } |
52 | } | 53 | } |
53 | 54 | ||
54 | return from; | 55 | return from; |
55 | } | 56 | } |
56 | 57 | ||
57 | char *Generatemail::getFrom( mailmime *mail ) { | 58 | char *Generatemail::getFrom( mailmime *mail ) { |
58 | /* no need to delete - its just a pointer to structure content */ | 59 | /* no need to delete - its just a pointer to structure content */ |
59 | mailimf_field *ffrom = 0; | 60 | mailimf_field *ffrom = 0; |
60 | ffrom = getField( mail->mm_data.mm_message.mm_fields, MAILIMF_FIELD_FROM ); | 61 | ffrom = getField( mail->mm_data.mm_message.mm_fields, MAILIMF_FIELD_FROM ); |
61 | return getFrom(ffrom); | 62 | return getFrom(ffrom); |
62 | } | 63 | } |
63 | 64 | ||
64 | mailimf_field *Generatemail::getField( mailimf_fields *fields, int type ) { | 65 | mailimf_field *Generatemail::getField( mailimf_fields *fields, int type ) { |
65 | mailimf_field *field; | 66 | mailimf_field *field; |
66 | clistiter *it; | 67 | clistiter *it; |
67 | 68 | ||
68 | it = clist_begin( fields->fld_list ); | 69 | it = clist_begin( fields->fld_list ); |
69 | while ( it ) { | 70 | while ( it ) { |
70 | field = (mailimf_field *) it->data; | 71 | field = (mailimf_field *) it->data; |
71 | if ( field->fld_type == type ) { | 72 | if ( field->fld_type == type ) { |
72 | return field; | 73 | return field; |
73 | } | 74 | } |
74 | it = it->next; | 75 | it = it->next; |
75 | } | 76 | } |
76 | 77 | ||
77 | return NULL; | 78 | return NULL; |
78 | } | 79 | } |
79 | 80 | ||
@@ -84,233 +85,236 @@ mailimf_address_list *Generatemail::parseAddresses(const QString&addr ) { | |||
84 | return NULL; | 85 | return NULL; |
85 | 86 | ||
86 | addresses = mailimf_address_list_new_empty(); | 87 | addresses = mailimf_address_list_new_empty(); |
87 | 88 | ||
88 | bool literal_open = false; | 89 | bool literal_open = false; |
89 | unsigned int startpos = 0; | 90 | unsigned int startpos = 0; |
90 | QStringList list; | 91 | QStringList list; |
91 | QString s; | 92 | QString s; |
92 | unsigned int i = 0; | 93 | unsigned int i = 0; |
93 | for (; i < addr.length();++i) { | 94 | for (; i < addr.length();++i) { |
94 | switch (addr[i]) { | 95 | switch (addr[i]) { |
95 | case '\"': | 96 | case '\"': |
96 | literal_open = !literal_open; | 97 | literal_open = !literal_open; |
97 | break; | 98 | break; |
98 | case ',': | 99 | case ',': |
99 | if (!literal_open) { | 100 | if (!literal_open) { |
100 | s = addr.mid(startpos,i-startpos); | 101 | s = addr.mid(startpos,i-startpos); |
101 | if (!s.isEmpty()) { | 102 | if (!s.isEmpty()) { |
102 | list.append(s); | 103 | list.append(s); |
103 | } | 104 | } |
104 | // !!!! this is a MUST BE! | 105 | // !!!! this is a MUST BE! |
105 | startpos = ++i; | 106 | startpos = ++i; |
106 | } | 107 | } |
107 | break; | 108 | break; |
108 | default: | 109 | default: |
109 | break; | 110 | break; |
110 | } | 111 | } |
111 | } | 112 | } |
112 | s = addr.mid(startpos,i-startpos); | 113 | s = addr.mid(startpos,i-startpos); |
113 | if (!s.isEmpty()) { | 114 | if (!s.isEmpty()) { |
114 | list.append(s); | 115 | list.append(s); |
115 | } | 116 | } |
116 | QStringList::Iterator it; | 117 | QStringList::Iterator it; |
117 | for ( it = list.begin(); it != list.end(); it++ ) { | 118 | for ( it = list.begin(); it != list.end(); it++ ) { |
118 | int err = mailimf_address_list_add_parse( addresses, (char*)(*it).latin1() ); | 119 | int err = mailimf_address_list_add_parse( addresses, (char*)(*it).latin1() ); |
119 | if ( err != MAILIMF_NO_ERROR ) { | 120 | if ( err != MAILIMF_NO_ERROR ) { |
120 | qDebug(" Error parsing"); // *it | 121 | qDebug(" Error parsing"); // *it |
121 | } else { | 122 | } else { |
122 | } | 123 | } |
123 | } | 124 | } |
124 | return addresses; | 125 | return addresses; |
125 | } | 126 | } |
126 | 127 | ||
127 | mailmime *Generatemail::buildFilePart(const QString&filename,const QString&mimetype,const QString&TextContent ) { | 128 | mailmime *Generatemail::buildFilePart(const QString&filename,const QString&mimetype,const QString&TextContent ) { |
128 | mailmime * filePart = 0; | 129 | mailmime * filePart = 0; |
129 | mailmime_fields * fields = 0; | 130 | mailmime_fields * fields = 0; |
130 | mailmime_content * content = 0; | 131 | mailmime_content * content = 0; |
131 | mailmime_parameter * param = 0; | 132 | mailmime_parameter * param = 0; |
132 | char*name = 0; | 133 | char*name = 0; |
133 | char*file = 0; | 134 | char*file = 0; |
134 | int err; | 135 | int err; |
135 | int pos = filename.findRev( '/' ); | 136 | int pos = filename.findRev( '/' ); |
136 | 137 | ||
137 | if (filename.length()>0) { | 138 | if (filename.length()>0) { |
138 | QString tmp = filename.right( filename.length() - ( pos + 1 ) ); | 139 | QString tmp = filename.right( filename.length() - ( pos + 1 ) ); |
139 | name = strdup( tmp.latin1() ); // just filename | 140 | name = strdup( tmp.latin1() ); // just filename |
140 | file = strdup( filename.latin1() ); // full name with path | 141 | file = strdup( filename.latin1() ); // full name with path |
141 | } | 142 | } |
142 | 143 | ||
143 | int disptype = MAILMIME_DISPOSITION_TYPE_ATTACHMENT; | 144 | int disptype = MAILMIME_DISPOSITION_TYPE_ATTACHMENT; |
144 | int mechanism = MAILMIME_MECHANISM_BASE64; | 145 | int mechanism = MAILMIME_MECHANISM_BASE64; |
145 | 146 | ||
146 | if ( mimetype.startsWith( "text/" ) ) { | 147 | if ( mimetype.startsWith( "text/" ) ) { |
147 | param = mailmime_parameter_new( strdup( "charset" ), | 148 | param = mailmime_parameter_new( strdup( "charset" ), |
148 | strdup( "iso-8859-1" ) ); | 149 | strdup( mCharset.latin1() ) ); |
149 | mechanism = MAILMIME_MECHANISM_QUOTED_PRINTABLE; | 150 | mechanism = MAILMIME_MECHANISM_QUOTED_PRINTABLE; |
150 | } | 151 | } |
151 | 152 | ||
152 | fields = mailmime_fields_new_filename( | 153 | fields = mailmime_fields_new_filename( |
153 | disptype, name, | 154 | disptype, name, |
154 | mechanism ); | 155 | mechanism ); |
155 | content = mailmime_content_new_with_str( (char*)mimetype.latin1() ); | 156 | content = mailmime_content_new_with_str( (char*)mimetype.latin1() ); |
156 | if (content!=0 && fields != 0) { | 157 | if (content!=0 && fields != 0) { |
157 | if (param) { | 158 | if (param) { |
158 | clist_append(content->ct_parameters,param); | 159 | clist_append(content->ct_parameters,param); |
159 | param = 0; | 160 | param = 0; |
160 | } | 161 | } |
161 | if (filename.length()>0) { | 162 | if (filename.length()>0) { |
162 | QFileInfo f(filename); | 163 | QFileInfo f(filename); |
163 | param = mailmime_parameter_new(strdup("name"),strdup(f.fileName().latin1())); | 164 | param = mailmime_parameter_new(strdup("name"),strdup(f.fileName().latin1())); |
164 | clist_append(content->ct_parameters,param); | 165 | clist_append(content->ct_parameters,param); |
165 | param = 0; | 166 | param = 0; |
166 | } | 167 | } |
167 | filePart = mailmime_new_empty( content, fields ); | 168 | filePart = mailmime_new_empty( content, fields ); |
168 | } | 169 | } |
169 | if (filePart) { | 170 | if (filePart) { |
170 | if (filename.length()>0) { | 171 | if (filename.length()>0) { |
171 | err = mailmime_set_body_file( filePart, file ); | 172 | err = mailmime_set_body_file( filePart, file ); |
172 | } else { | 173 | } else { |
173 | err = mailmime_set_body_text(filePart,strdup( TextContent.utf8()),TextContent.utf8().length()); | 174 | err = mailmime_set_body_text(filePart,strdup( TextContent.utf8().data()),TextContent.utf8().length()); |
175 | //err = mailmime_set_body_text(filePart,strdup( TextContent.latin1()),TextContent.length()); | ||
174 | } | 176 | } |
175 | if (err != MAILIMF_NO_ERROR) { | 177 | if (err != MAILIMF_NO_ERROR) { |
176 | qDebug("Error setting body with file "); | 178 | qDebug("Error setting body with file "); |
177 | mailmime_free( filePart ); | 179 | mailmime_free( filePart ); |
178 | filePart = 0; | 180 | filePart = 0; |
179 | } | 181 | } |
180 | } | 182 | } |
181 | 183 | ||
182 | if (!filePart) { | 184 | if (!filePart) { |
183 | if ( param != NULL ) { | 185 | if ( param != NULL ) { |
184 | mailmime_parameter_free( param ); | 186 | mailmime_parameter_free( param ); |
185 | } | 187 | } |
186 | if (content) { | 188 | if (content) { |
187 | mailmime_content_free( content ); | 189 | mailmime_content_free( content ); |
188 | } | 190 | } |
189 | if (fields) { | 191 | if (fields) { |
190 | mailmime_fields_free( fields ); | 192 | mailmime_fields_free( fields ); |
191 | } else { | 193 | } else { |
192 | if (name) { | 194 | if (name) { |
193 | free( name ); | 195 | free( name ); |
194 | } | 196 | } |
195 | if (file) { | 197 | if (file) { |
196 | free( file ); | 198 | free( file ); |
197 | } | 199 | } |
198 | } | 200 | } |
199 | } | 201 | } |
200 | return filePart; // Success :) | 202 | return filePart; // Success :) |
201 | 203 | ||
202 | } | 204 | } |
203 | 205 | ||
204 | void Generatemail::addFileParts( mailmime *message,const QList<Attachment>&files ) { | 206 | void Generatemail::addFileParts( mailmime *message,const QList<Attachment>&files ) { |
205 | const Attachment *it; | 207 | const Attachment *it; |
206 | unsigned int count = files.count(); | 208 | unsigned int count = files.count(); |
207 | for ( unsigned int i = 0; i < count; ++i ) { | 209 | for ( unsigned int i = 0; i < count; ++i ) { |
208 | mailmime *filePart; | 210 | mailmime *filePart; |
209 | int err; | 211 | int err; |
210 | it = ((QList<Attachment>)files).at(i); | 212 | it = ((QList<Attachment>)files).at(i); |
211 | 213 | ||
212 | filePart = buildFilePart( it->getFileName(), it->getMimeType(),"" ); | 214 | filePart = buildFilePart( it->getFileName(), it->getMimeType(),"" ); |
213 | if ( filePart == NULL ) { | 215 | if ( filePart == NULL ) { |
214 | continue; | 216 | continue; |
215 | } | 217 | } |
216 | err = mailmime_smart_add_part( message, filePart ); | 218 | err = mailmime_smart_add_part( message, filePart ); |
217 | if ( err != MAILIMF_NO_ERROR ) { | 219 | if ( err != MAILIMF_NO_ERROR ) { |
218 | mailmime_free( filePart ); | 220 | mailmime_free( filePart ); |
219 | } | 221 | } |
220 | } | 222 | } |
221 | } | 223 | } |
222 | 224 | ||
223 | mailmime *Generatemail::buildTxtPart(const QString&str ) { | 225 | mailmime *Generatemail::buildTxtPart(const QString&str ) { |
224 | mailmime *txtPart; | 226 | mailmime *txtPart; |
225 | mailmime_fields *fields; | 227 | mailmime_fields *fields; |
226 | mailmime_content *content; | 228 | mailmime_content *content; |
227 | mailmime_parameter *param; | 229 | mailmime_parameter *param; |
228 | int err; | 230 | int err; |
229 | QCString __str; | 231 | QCString __str; |
232 | //qDebug(" Generatemail::buildTxtPart %s", str.latin1()); | ||
230 | param = mailmime_parameter_new( strdup( "charset" ), | 233 | param = mailmime_parameter_new( strdup( "charset" ), |
231 | strdup( "iso-8859-1" ) ); | 234 | strdup( mCharset.latin1() ) ); |
232 | if ( param == NULL ) | 235 | if ( param == NULL ) |
233 | goto err_free; | 236 | goto err_free; |
234 | 237 | ||
235 | content = mailmime_content_new_with_str( "text/plain" ); | 238 | content = mailmime_content_new_with_str( "text/plain" ); |
236 | if ( content == NULL ) | 239 | if ( content == NULL ) |
237 | goto err_free_param; | 240 | goto err_free_param; |
238 | 241 | ||
239 | err = clist_append( content->ct_parameters, param ); | 242 | err = clist_append( content->ct_parameters, param ); |
240 | if ( err != MAILIMF_NO_ERROR ) | 243 | if ( err != MAILIMF_NO_ERROR ) |
241 | goto err_free_content; | 244 | goto err_free_content; |
242 | 245 | ||
243 | fields = mailmime_fields_new_encoding(MAILMIME_MECHANISM_8BIT); | 246 | fields = mailmime_fields_new_encoding(MAILMIME_MECHANISM_8BIT); |
244 | if ( fields == NULL ) | 247 | if ( fields == NULL ) |
245 | goto err_free_content; | 248 | goto err_free_content; |
246 | 249 | ||
247 | txtPart = mailmime_new_empty( content, fields ); | 250 | txtPart = mailmime_new_empty( content, fields ); |
248 | if ( txtPart == NULL ) | 251 | if ( txtPart == NULL ) |
249 | goto err_free_fields; | 252 | goto err_free_fields; |
250 | { | 253 | { |
251 | __str = str.utf8(); | 254 | //__str = str.utf8(); |
252 | err = mailmime_set_body_text( txtPart, __str.data(), __str.length() ); | 255 | __str = QCString (str.latin1()); |
256 | err = mailmime_set_body_text( txtPart, strdup(__str.data()), __str.length() ); | ||
253 | } | 257 | } |
254 | if ( err != MAILIMF_NO_ERROR ) | 258 | if ( err != MAILIMF_NO_ERROR ) |
255 | goto err_free_txtPart; | 259 | goto err_free_txtPart; |
256 | 260 | ||
257 | return txtPart; // Success :) | 261 | return txtPart; // Success :) |
258 | 262 | ||
259 | err_free_txtPart: | 263 | err_free_txtPart: |
260 | mailmime_free( txtPart ); | 264 | mailmime_free( txtPart ); |
261 | err_free_fields: | 265 | err_free_fields: |
262 | mailmime_fields_free( fields ); | 266 | mailmime_fields_free( fields ); |
263 | err_free_content: | 267 | err_free_content: |
264 | mailmime_content_free( content ); | 268 | mailmime_content_free( content ); |
265 | err_free_param: | 269 | err_free_param: |
266 | mailmime_parameter_free( param ); | 270 | mailmime_parameter_free( param ); |
267 | err_free: | 271 | err_free: |
268 | ; | 272 | ; |
269 | 273 | ||
270 | return NULL; // Error :( | 274 | return NULL; // Error :( |
271 | } | 275 | } |
272 | 276 | ||
273 | mailimf_mailbox *Generatemail::newMailbox(const QString&name, const QString&mail ) { | 277 | mailimf_mailbox *Generatemail::newMailbox(const QString&name, const QString&mail ) { |
274 | return mailimf_mailbox_new( strdup( name.latin1() ), | 278 | return mailimf_mailbox_new( strdup( name.latin1() ), |
275 | strdup( mail.latin1() ) ); | 279 | strdup( mail.latin1() ) ); |
276 | } | 280 | } |
277 | 281 | ||
278 | mailimf_fields *Generatemail::createImfFields(const Opie::Core::OSmartPointer<Mail>&mail ) | 282 | mailimf_fields *Generatemail::createImfFields(const Opie::Core::OSmartPointer<Mail>&mail ) |
279 | { | 283 | { |
280 | mailimf_fields *fields = NULL; | 284 | mailimf_fields *fields = NULL; |
281 | mailimf_field *xmailer = NULL; | 285 | mailimf_field *xmailer = NULL; |
282 | mailimf_mailbox *sender=0,*fromBox=0; | 286 | mailimf_mailbox *sender=0,*fromBox=0; |
283 | mailimf_mailbox_list *from=0; | 287 | mailimf_mailbox_list *from=0; |
284 | mailimf_address_list *to=0, *cc=0, *bcc=0, *reply=0; | 288 | mailimf_address_list *to=0, *cc=0, *bcc=0, *reply=0; |
285 | clist*in_reply_to = 0; | 289 | clist*in_reply_to = 0; |
286 | char *subject = strdup( mail->getSubject().latin1() ); | 290 | char *subject = strdup( mail->getSubject().latin1() ); |
287 | int err; | 291 | int err; |
288 | int res = 1; | 292 | int res = 1; |
289 | 293 | ||
290 | sender = newMailbox( mail->getName(), mail->getMail() ); | 294 | sender = newMailbox( mail->getName(), mail->getMail() ); |
291 | if ( sender == NULL ) { | 295 | if ( sender == NULL ) { |
292 | res = 0; | 296 | res = 0; |
293 | } | 297 | } |
294 | 298 | ||
295 | if (res) { | 299 | if (res) { |
296 | fromBox = newMailbox( mail->getName(), mail->getMail() ); | 300 | fromBox = newMailbox( mail->getName(), mail->getMail() ); |
297 | } | 301 | } |
298 | if ( fromBox == NULL ) { | 302 | if ( fromBox == NULL ) { |
299 | res = 0; | 303 | res = 0; |
300 | } | 304 | } |
301 | 305 | ||
302 | if (res) { | 306 | if (res) { |
303 | from = mailimf_mailbox_list_new_empty(); | 307 | from = mailimf_mailbox_list_new_empty(); |
304 | } | 308 | } |
305 | if ( from == NULL ) { | 309 | if ( from == NULL ) { |
306 | res = 0; | 310 | res = 0; |
307 | } | 311 | } |
308 | 312 | ||
309 | if (res && from) { | 313 | if (res && from) { |
310 | err = mailimf_mailbox_list_add( from, fromBox ); | 314 | err = mailimf_mailbox_list_add( from, fromBox ); |
311 | if ( err != MAILIMF_NO_ERROR ) { | 315 | if ( err != MAILIMF_NO_ERROR ) { |
312 | res = 0; | 316 | res = 0; |
313 | } | 317 | } |
314 | } | 318 | } |
315 | 319 | ||
316 | if (res) to = parseAddresses( mail->getTo() ); | 320 | if (res) to = parseAddresses( mail->getTo() ); |
@@ -337,125 +341,127 @@ mailimf_fields *Generatemail::createImfFields(const Opie::Core::OSmartPointer<Ma | |||
337 | nsize = strlen(h.latin1()); | 341 | nsize = strlen(h.latin1()); |
338 | /* yes! must be malloc! */ | 342 | /* yes! must be malloc! */ |
339 | c_reply = (char*)malloc( (nsize+1)*sizeof(char)); | 343 | c_reply = (char*)malloc( (nsize+1)*sizeof(char)); |
340 | memset(c_reply,0,nsize+1); | 344 | memset(c_reply,0,nsize+1); |
341 | memcpy(c_reply,h.latin1(),nsize); | 345 | memcpy(c_reply,h.latin1(),nsize); |
342 | clist_append(in_reply_to,c_reply); | 346 | clist_append(in_reply_to,c_reply); |
343 | } | 347 | } |
344 | } | 348 | } |
345 | 349 | ||
346 | if (res) { | 350 | if (res) { |
347 | fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc, | 351 | fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc, |
348 | in_reply_to, NULL, subject ); | 352 | in_reply_to, NULL, subject ); |
349 | if ( fields == NULL ) { | 353 | if ( fields == NULL ) { |
350 | res = 0; | 354 | res = 0; |
351 | } | 355 | } |
352 | } | 356 | } |
353 | if (res) xmailer = mailimf_field_new_custom( strdup( "User-Agent" ), | 357 | if (res) xmailer = mailimf_field_new_custom( strdup( "User-Agent" ), |
354 | strdup( USER_AGENT ) ); | 358 | strdup( USER_AGENT ) ); |
355 | if ( xmailer == NULL ) { | 359 | if ( xmailer == NULL ) { |
356 | res = 0; | 360 | res = 0; |
357 | } else { | 361 | } else { |
358 | err = mailimf_fields_add( fields, xmailer ); | 362 | err = mailimf_fields_add( fields, xmailer ); |
359 | if ( err != MAILIMF_NO_ERROR ) { | 363 | if ( err != MAILIMF_NO_ERROR ) { |
360 | res = 0; | 364 | res = 0; |
361 | } | 365 | } |
362 | } | 366 | } |
363 | if (!res ) { | 367 | if (!res ) { |
364 | if (xmailer) { | 368 | if (xmailer) { |
365 | mailimf_field_free( xmailer ); | 369 | mailimf_field_free( xmailer ); |
366 | xmailer = NULL; | 370 | xmailer = NULL; |
367 | } | 371 | } |
368 | if (fields) { | 372 | if (fields) { |
369 | mailimf_fields_free( fields ); | 373 | mailimf_fields_free( fields ); |
370 | fields = NULL; | 374 | fields = NULL; |
371 | } else { | 375 | } else { |
372 | if (reply) | 376 | if (reply) |
373 | mailimf_address_list_free( reply ); | 377 | mailimf_address_list_free( reply ); |
374 | if (bcc) | 378 | if (bcc) |
375 | mailimf_address_list_free( bcc ); | 379 | mailimf_address_list_free( bcc ); |
376 | if (cc) | 380 | if (cc) |
377 | mailimf_address_list_free( cc ); | 381 | mailimf_address_list_free( cc ); |
378 | if (to) | 382 | if (to) |
379 | mailimf_address_list_free( to ); | 383 | mailimf_address_list_free( to ); |
380 | if (fromBox) { | 384 | if (fromBox) { |
381 | mailimf_mailbox_free( fromBox ); | 385 | mailimf_mailbox_free( fromBox ); |
382 | } else if (from) { | 386 | } else if (from) { |
383 | mailimf_mailbox_list_free( from ); | 387 | mailimf_mailbox_list_free( from ); |
384 | } | 388 | } |
385 | if (sender) { | 389 | if (sender) { |
386 | mailimf_mailbox_free( sender ); | 390 | mailimf_mailbox_free( sender ); |
387 | } | 391 | } |
388 | if (subject) { | 392 | if (subject) { |
389 | free( subject ); | 393 | free( subject ); |
390 | } | 394 | } |
391 | } | 395 | } |
392 | } | 396 | } |
393 | return fields; | 397 | return fields; |
394 | } | 398 | } |
395 | 399 | ||
396 | mailmime *Generatemail::createMimeMail(const Opie::Core::OSmartPointer<Mail> &mail ) { | 400 | mailmime *Generatemail::createMimeMail(const Opie::Core::OSmartPointer<Mail> &mail ) { |
397 | mailmime *message, *txtPart; | 401 | mailmime *message, *txtPart; |
398 | mailimf_fields *fields; | 402 | mailimf_fields *fields; |
399 | int err; | 403 | int err; |
400 | 404 | ||
405 | //LR disabled for now | ||
406 | //mCharset = mail->getCharset().lower(); | ||
401 | fields = createImfFields( mail ); | 407 | fields = createImfFields( mail ); |
402 | if ( fields == NULL ) | 408 | if ( fields == NULL ) |
403 | goto err_free; | 409 | goto err_free; |
404 | 410 | ||
405 | message = mailmime_new_message_data( NULL ); | 411 | message = mailmime_new_message_data( NULL ); |
406 | if ( message == NULL ) | 412 | if ( message == NULL ) |
407 | goto err_free_fields; | 413 | goto err_free_fields; |
408 | 414 | ||
409 | mailmime_set_imf_fields( message, fields ); | 415 | mailmime_set_imf_fields( message, fields ); |
410 | 416 | ||
411 | txtPart = buildTxtPart( mail->getMessage() ); | 417 | txtPart = buildTxtPart( mail->getMessage() ); |
412 | 418 | ||
413 | if ( txtPart == NULL ) | 419 | if ( txtPart == NULL ) |
414 | goto err_free_message; | 420 | goto err_free_message; |
415 | 421 | ||
416 | err = mailmime_smart_add_part( message, txtPart ); | 422 | err = mailmime_smart_add_part( message, txtPart ); |
417 | if ( err != MAILIMF_NO_ERROR ) | 423 | if ( err != MAILIMF_NO_ERROR ) |
418 | goto err_free_txtPart; | 424 | goto err_free_txtPart; |
419 | 425 | ||
420 | addFileParts( message, mail->getAttachments() ); | 426 | addFileParts( message, mail->getAttachments() ); |
421 | 427 | ||
422 | return message; // Success :) | 428 | return message; // Success :) |
423 | 429 | ||
424 | err_free_txtPart: | 430 | err_free_txtPart: |
425 | mailmime_free( txtPart ); | 431 | mailmime_free( txtPart ); |
426 | err_free_message: | 432 | err_free_message: |
427 | mailmime_free( message ); | 433 | mailmime_free( message ); |
428 | err_free_fields: | 434 | err_free_fields: |
429 | mailimf_fields_free( fields ); | 435 | mailimf_fields_free( fields ); |
430 | err_free: | 436 | err_free: |
431 | ; | 437 | ; |
432 | 438 | ||
433 | return NULL; // Error :( | 439 | return NULL; // Error :( |
434 | } | 440 | } |
435 | 441 | ||
436 | clist *Generatemail::createRcptList( mailimf_fields *fields ) { | 442 | clist *Generatemail::createRcptList( mailimf_fields *fields ) { |
437 | clist *rcptList; | 443 | clist *rcptList; |
438 | mailimf_field *field; | 444 | mailimf_field *field; |
439 | 445 | ||
440 | rcptList = esmtp_address_list_new(); | 446 | rcptList = esmtp_address_list_new(); |
441 | 447 | ||
442 | field = getField( fields, MAILIMF_FIELD_TO ); | 448 | field = getField( fields, MAILIMF_FIELD_TO ); |
443 | if ( field && (field->fld_type == MAILIMF_FIELD_TO) | 449 | if ( field && (field->fld_type == MAILIMF_FIELD_TO) |
444 | && field->fld_data.fld_to->to_addr_list ) { | 450 | && field->fld_data.fld_to->to_addr_list ) { |
445 | addRcpts( rcptList, field->fld_data.fld_to->to_addr_list ); | 451 | addRcpts( rcptList, field->fld_data.fld_to->to_addr_list ); |
446 | } | 452 | } |
447 | 453 | ||
448 | field = getField( fields, MAILIMF_FIELD_CC ); | 454 | field = getField( fields, MAILIMF_FIELD_CC ); |
449 | if ( field && (field->fld_type == MAILIMF_FIELD_CC) | 455 | if ( field && (field->fld_type == MAILIMF_FIELD_CC) |
450 | && field->fld_data.fld_cc->cc_addr_list ) { | 456 | && field->fld_data.fld_cc->cc_addr_list ) { |
451 | addRcpts( rcptList, field->fld_data.fld_cc->cc_addr_list ); | 457 | addRcpts( rcptList, field->fld_data.fld_cc->cc_addr_list ); |
452 | } | 458 | } |
453 | 459 | ||
454 | field = getField( fields, MAILIMF_FIELD_BCC ); | 460 | field = getField( fields, MAILIMF_FIELD_BCC ); |
455 | if ( field && (field->fld_type == MAILIMF_FIELD_BCC) | 461 | if ( field && (field->fld_type == MAILIMF_FIELD_BCC) |
456 | && field->fld_data.fld_bcc->bcc_addr_list ) { | 462 | && field->fld_data.fld_bcc->bcc_addr_list ) { |
457 | addRcpts( rcptList, field->fld_data.fld_bcc->bcc_addr_list ); | 463 | addRcpts( rcptList, field->fld_data.fld_bcc->bcc_addr_list ); |
458 | } | 464 | } |
459 | 465 | ||
460 | return rcptList; | 466 | return rcptList; |
461 | } | 467 | } |
diff --git a/kmicromail/libmailwrapper/generatemail.h b/kmicromail/libmailwrapper/generatemail.h index b9f8285..a9fb648 100644 --- a/kmicromail/libmailwrapper/generatemail.h +++ b/kmicromail/libmailwrapper/generatemail.h | |||
@@ -1,47 +1,48 @@ | |||
1 | #ifndef __GENERATE_MAIL_H | 1 | #ifndef __GENERATE_MAIL_H |
2 | #define __GENERATE_MAIL_H | 2 | #define __GENERATE_MAIL_H |
3 | 3 | ||
4 | //#include <qpe/applnk.h> | 4 | //#include <qpe/applnk.h> |
5 | 5 | ||
6 | #include <qobject.h> | 6 | #include <qobject.h> |
7 | #include <libetpan/clist.h> | 7 | #include <libetpan/clist.h> |
8 | #include "mailwrapper.h" | 8 | #include "mailwrapper.h" |
9 | 9 | ||
10 | #include <opie2/osmartpointer.h> | 10 | #include <opie2/osmartpointer.h> |
11 | 11 | ||
12 | class Mail; | 12 | class Mail; |
13 | class RecMail; | 13 | class RecMail; |
14 | 14 | ||
15 | struct mailimf_fields; | 15 | struct mailimf_fields; |
16 | struct mailimf_field; | 16 | struct mailimf_field; |
17 | struct mailimf_mailbox; | 17 | struct mailimf_mailbox; |
18 | struct mailmime; | 18 | struct mailmime; |
19 | struct mailimf_address_list; | 19 | struct mailimf_address_list; |
20 | class progressMailSend; | 20 | class progressMailSend; |
21 | struct mailsmtp; | 21 | struct mailsmtp; |
22 | 22 | ||
23 | class Generatemail : public QObject | 23 | class Generatemail : public QObject |
24 | { | 24 | { |
25 | Q_OBJECT | 25 | Q_OBJECT |
26 | public: | 26 | public: |
27 | Generatemail(); | 27 | Generatemail(); |
28 | virtual ~Generatemail(); | 28 | virtual ~Generatemail(); |
29 | 29 | ||
30 | protected: | 30 | protected: |
31 | static void addRcpts( clist *list, mailimf_address_list *addr_list ); | 31 | static void addRcpts( clist *list, mailimf_address_list *addr_list ); |
32 | static char *getFrom( mailmime *mail ); | 32 | static char *getFrom( mailmime *mail ); |
33 | static char *getFrom( mailimf_field *ffrom); | 33 | static char *getFrom( mailimf_field *ffrom); |
34 | static mailimf_field *getField( mailimf_fields *fields, int type ); | 34 | static mailimf_field *getField( mailimf_fields *fields, int type ); |
35 | mailimf_address_list *parseAddresses(const QString&addr ); | 35 | mailimf_address_list *parseAddresses(const QString&addr ); |
36 | void addFileParts( mailmime *message,const QList<Attachment>&files ); | 36 | void addFileParts( mailmime *message,const QList<Attachment>&files ); |
37 | mailmime *buildFilePart(const QString&filename,const QString&mimetype,const QString&content); | 37 | mailmime *buildFilePart(const QString&filename,const QString&mimetype,const QString&content); |
38 | mailmime *buildTxtPart(const QString&str ); | 38 | mailmime *buildTxtPart(const QString&str ); |
39 | mailimf_mailbox *newMailbox(const QString&name,const QString&mail ); | 39 | mailimf_mailbox *newMailbox(const QString&name,const QString&mail ); |
40 | mailimf_fields *createImfFields(const Opie::Core::OSmartPointer<Mail> &mail ); | 40 | mailimf_fields *createImfFields(const Opie::Core::OSmartPointer<Mail> &mail ); |
41 | mailmime *createMimeMail(const Opie::Core::OSmartPointer<Mail>&mail ); | 41 | mailmime *createMimeMail(const Opie::Core::OSmartPointer<Mail>&mail ); |
42 | clist *createRcptList( mailimf_fields *fields ); | 42 | clist *createRcptList( mailimf_fields *fields ); |
43 | 43 | ||
44 | static const char* USER_AGENT; | 44 | static const char* USER_AGENT; |
45 | QString mCharset; | ||
45 | }; | 46 | }; |
46 | 47 | ||
47 | #endif | 48 | #endif |
diff --git a/kmicromail/libmailwrapper/genericwrapper.cpp b/kmicromail/libmailwrapper/genericwrapper.cpp index 28d45ce..eac05e5 100644 --- a/kmicromail/libmailwrapper/genericwrapper.cpp +++ b/kmicromail/libmailwrapper/genericwrapper.cpp | |||
@@ -164,129 +164,130 @@ QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) | |||
164 | enc = "8bit"; | 164 | enc = "8bit"; |
165 | break; | 165 | break; |
166 | case MAILMIME_MECHANISM_BINARY: | 166 | case MAILMIME_MECHANISM_BINARY: |
167 | enc = "binary"; | 167 | enc = "binary"; |
168 | break; | 168 | break; |
169 | case MAILMIME_MECHANISM_QUOTED_PRINTABLE: | 169 | case MAILMIME_MECHANISM_QUOTED_PRINTABLE: |
170 | enc = "quoted-printable"; | 170 | enc = "quoted-printable"; |
171 | break; | 171 | break; |
172 | case MAILMIME_MECHANISM_BASE64: | 172 | case MAILMIME_MECHANISM_BASE64: |
173 | enc = "base64"; | 173 | enc = "base64"; |
174 | break; | 174 | break; |
175 | case MAILMIME_MECHANISM_TOKEN: | 175 | case MAILMIME_MECHANISM_TOKEN: |
176 | default: | 176 | default: |
177 | if (aEnc->enc_token) { | 177 | if (aEnc->enc_token) { |
178 | enc = QString(aEnc->enc_token); | 178 | enc = QString(aEnc->enc_token); |
179 | } | 179 | } |
180 | break; | 180 | break; |
181 | } | 181 | } |
182 | return enc; | 182 | return enc; |
183 | } | 183 | } |
184 | 184 | ||
185 | void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count) | 185 | void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count) |
186 | { | 186 | { |
187 | if (current_rec >= 10) { | 187 | if (current_rec >= 10) { |
188 | ; // odebug << "too deep recursion!" << oendl; | 188 | ; // odebug << "too deep recursion!" << oendl; |
189 | } | 189 | } |
190 | if (!message || !mime) { | 190 | if (!message || !mime) { |
191 | return; | 191 | return; |
192 | } | 192 | } |
193 | int r; | 193 | int r; |
194 | char*data = 0; | 194 | char*data = 0; |
195 | size_t len; | 195 | size_t len; |
196 | clistiter * cur = 0; | 196 | clistiter * cur = 0; |
197 | QString b; | 197 | QString b; |
198 | RecPartP part = new RecPart(); | 198 | RecPartP part = new RecPart(); |
199 | 199 | ||
200 | switch (mime->mm_type) { | 200 | switch (mime->mm_type) { |
201 | case MAILMIME_SINGLE: | 201 | case MAILMIME_SINGLE: |
202 | { | 202 | { |
203 | QValueList<int>countlist = recList; | 203 | QValueList<int>countlist = recList; |
204 | countlist.append(current_count); | 204 | countlist.append(current_count); |
205 | r = mailmessage_fetch_section(message,mime,&data,&len); | 205 | r = mailmessage_fetch_section(message,mime,&data,&len); |
206 | part->setSize(len); | 206 | part->setSize(len); |
207 | part->setPositionlist(countlist); | 207 | part->setPositionlist(countlist); |
208 | b = gen_attachment_id(); | 208 | b = gen_attachment_id(); |
209 | part->setIdentifier(b); | 209 | part->setIdentifier(b); |
210 | fillSingleBody(part,message,mime); | 210 | fillSingleBody(part,message,mime); |
211 | if (part->Type()=="text" && target->Bodytext().isNull()) { | 211 | if (part->Type()=="text" && target->Bodytext().isNull()) { |
212 | encodedString*rs = new encodedString(); | 212 | encodedString*rs = new encodedString(); |
213 | rs->setContent(data,len); | 213 | rs->setContent(data,len); |
214 | encodedString*res = decode_String(rs,part->Encoding()); | 214 | encodedString*res = decode_String(rs,part->Encoding()); |
215 | if (countlist.count()>2) { | 215 | if (countlist.count()>2) { |
216 | bodyCache[b]=rs; | 216 | bodyCache[b]=rs; |
217 | target->addPart(part); | 217 | target->addPart(part); |
218 | } else { | 218 | } else { |
219 | delete rs; | 219 | delete rs; |
220 | } | 220 | } |
221 | b = QString(res->Content()); | 221 | b = QString(res->Content()); |
222 | delete res; | 222 | delete res; |
223 | size_t index = 0; | 223 | size_t index = 0; |
224 | char*resu = 0; | 224 | char*resu = 0; |
225 | int err = MAILIMF_NO_ERROR; | 225 | int err = MAILIMF_NO_ERROR; |
226 | QString charset = part->searchParamter( "charset"); | 226 | QString charset = part->searchParamter( "charset"); |
227 | qDebug("CHARSET %s ",charset.latin1() ); | 227 | qDebug("CHARSET %s ",charset.latin1() ); |
228 | if ( !charset.isEmpty() ) { | 228 | if (false ) { |
229 | //if ( !charset.isEmpty() ) { | ||
229 | target->setCharset( charset ); | 230 | target->setCharset( charset ); |
230 | err = mailmime_encoded_phrase_parse(charset.latin1(), | 231 | err = mailmime_encoded_phrase_parse(charset.latin1(), |
231 | b.latin1(), b.length(),&index, "utf-8",&resu); | 232 | b.latin1(), b.length(),&index, "utf-8",&resu); |
232 | if (err == MAILIMF_NO_ERROR && resu && strlen(resu)) { | 233 | if (err == MAILIMF_NO_ERROR && resu && strlen(resu)) { |
233 | //qDebug("res %d %s ", index, resu); | 234 | //qDebug("res %d %s ", index, resu); |
234 | b = QString::fromUtf8(resu); | 235 | b = QString::fromUtf8(resu); |
235 | } | 236 | } |
236 | if (resu) free(resu); | 237 | if (resu) free(resu); |
237 | } | 238 | } |
238 | target->setBodytext(b); | 239 | target->setBodytext(b); |
239 | target->setDescription(part); | 240 | target->setDescription(part); |
240 | } else { | 241 | } else { |
241 | bodyCache[b]=new encodedString(data,len); | 242 | bodyCache[b]=new encodedString(data,len); |
242 | target->addPart(part); | 243 | target->addPart(part); |
243 | } | 244 | } |
244 | } | 245 | } |
245 | break; | 246 | break; |
246 | case MAILMIME_MULTIPLE: | 247 | case MAILMIME_MULTIPLE: |
247 | { | 248 | { |
248 | unsigned int ccount = 1; | 249 | unsigned int ccount = 1; |
249 | mailmime*cbody=0; | 250 | mailmime*cbody=0; |
250 | QValueList<int>countlist = recList; | 251 | QValueList<int>countlist = recList; |
251 | for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { | 252 | for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { |
252 | cbody = (mailmime*)clist_content(cur); | 253 | cbody = (mailmime*)clist_content(cur); |
253 | if (cbody->mm_type==MAILMIME_MULTIPLE) { | 254 | if (cbody->mm_type==MAILMIME_MULTIPLE) { |
254 | RecPartP targetPart = new RecPart(); | 255 | RecPartP targetPart = new RecPart(); |
255 | targetPart->setType("multipart"); | 256 | targetPart->setType("multipart"); |
256 | countlist.append(current_count); | 257 | countlist.append(current_count); |
257 | targetPart->setPositionlist(countlist); | 258 | targetPart->setPositionlist(countlist); |
258 | target->addPart(targetPart); | 259 | target->addPart(targetPart); |
259 | } | 260 | } |
260 | traverseBody(target,message, cbody,countlist,current_rec+1,ccount); | 261 | traverseBody(target,message, cbody,countlist,current_rec+1,ccount); |
261 | if (cbody->mm_type==MAILMIME_MULTIPLE) { | 262 | if (cbody->mm_type==MAILMIME_MULTIPLE) { |
262 | countlist = recList; | 263 | countlist = recList; |
263 | } | 264 | } |
264 | ++ccount; | 265 | ++ccount; |
265 | } | 266 | } |
266 | } | 267 | } |
267 | break; | 268 | break; |
268 | case MAILMIME_MESSAGE: | 269 | case MAILMIME_MESSAGE: |
269 | { | 270 | { |
270 | QValueList<int>countlist = recList; | 271 | QValueList<int>countlist = recList; |
271 | countlist.append(current_count); | 272 | countlist.append(current_count); |
272 | /* the own header is always at recursion 0 - we don't need that */ | 273 | /* the own header is always at recursion 0 - we don't need that */ |
273 | if (current_rec > 0) { | 274 | if (current_rec > 0) { |
274 | part->setPositionlist(countlist); | 275 | part->setPositionlist(countlist); |
275 | r = mailmessage_fetch_section(message,mime,&data,&len); | 276 | r = mailmessage_fetch_section(message,mime,&data,&len); |
276 | part->setSize(len); | 277 | part->setSize(len); |
277 | part->setPositionlist(countlist); | 278 | part->setPositionlist(countlist); |
278 | b = gen_attachment_id(); | 279 | b = gen_attachment_id(); |
279 | part->setIdentifier(b); | 280 | part->setIdentifier(b); |
280 | part->setType("message"); | 281 | part->setType("message"); |
281 | part->setSubtype("rfc822"); | 282 | part->setSubtype("rfc822"); |
282 | bodyCache[b]=new encodedString(data,len); | 283 | bodyCache[b]=new encodedString(data,len); |
283 | target->addPart(part); | 284 | target->addPart(part); |
284 | } | 285 | } |
285 | if (mime->mm_data.mm_message.mm_msg_mime != NULL) { | 286 | if (mime->mm_data.mm_message.mm_msg_mime != NULL) { |
286 | traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); | 287 | traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); |
287 | } | 288 | } |
288 | } | 289 | } |
289 | break; | 290 | break; |
290 | } | 291 | } |
291 | } | 292 | } |
292 | 293 | ||
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp index 2a54381..da7065f 100644 --- a/kmicromail/libmailwrapper/imapwrapper.cpp +++ b/kmicromail/libmailwrapper/imapwrapper.cpp | |||
@@ -698,130 +698,130 @@ encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int | |||
698 | 698 | ||
699 | clist*result = 0; | 699 | clist*result = 0; |
700 | 700 | ||
701 | err = mailimap_fetch( m_imap, set, fetchType, &result ); | 701 | err = mailimap_fetch( m_imap, set, fetchType, &result ); |
702 | mailimap_set_free( set ); | 702 | mailimap_set_free( set ); |
703 | mailimap_fetch_type_free( fetchType ); | 703 | mailimap_fetch_type_free( fetchType ); |
704 | 704 | ||
705 | if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) { | 705 | if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) { |
706 | mailimap_msg_att * msg_att; | 706 | mailimap_msg_att * msg_att; |
707 | msg_att = (mailimap_msg_att*)current->data; | 707 | msg_att = (mailimap_msg_att*)current->data; |
708 | mailimap_msg_att_item*msg_att_item; | 708 | mailimap_msg_att_item*msg_att_item; |
709 | for(cur = clist_begin(msg_att->att_list) ; cur != NULL ; cur = clist_next(cur)) { | 709 | for(cur = clist_begin(msg_att->att_list) ; cur != NULL ; cur = clist_next(cur)) { |
710 | msg_att_item = (mailimap_msg_att_item*)clist_content(cur); | 710 | msg_att_item = (mailimap_msg_att_item*)clist_content(cur); |
711 | if (msg_att_item->att_type == MAILIMAP_MSG_ATT_ITEM_STATIC) { | 711 | if (msg_att_item->att_type == MAILIMAP_MSG_ATT_ITEM_STATIC) { |
712 | if (msg_att_item->att_data.att_static->att_type == MAILIMAP_MSG_ATT_BODY_SECTION) { | 712 | if (msg_att_item->att_data.att_static->att_type == MAILIMAP_MSG_ATT_BODY_SECTION) { |
713 | char*text = msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part; | 713 | char*text = msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part; |
714 | /* detach - we take over the content */ | 714 | /* detach - we take over the content */ |
715 | msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part = 0L; | 715 | msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part = 0L; |
716 | res->setContent(text,msg_att_item->att_data.att_static->att_data.att_body_section->sec_length); | 716 | res->setContent(text,msg_att_item->att_data.att_static->att_data.att_body_section->sec_length); |
717 | } | 717 | } |
718 | } | 718 | } |
719 | } | 719 | } |
720 | } else { | 720 | } else { |
721 | ;//odebug << "error fetching text: " << m_imap->imap_response << "" << oendl; | 721 | ;//odebug << "error fetching text: " << m_imap->imap_response << "" << oendl; |
722 | } | 722 | } |
723 | if (result) mailimap_fetch_list_free(result); | 723 | if (result) mailimap_fetch_list_free(result); |
724 | return res; | 724 | return res; |
725 | } | 725 | } |
726 | 726 | ||
727 | /* current_recursion is for recursive calls. | 727 | /* current_recursion is for recursive calls. |
728 | current_count means the position inside the internal loop! */ | 728 | current_count means the position inside the internal loop! */ |
729 | void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&target_body, | 729 | void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&target_body, |
730 | int current_recursion,QValueList<int>recList,int current_count) | 730 | int current_recursion,QValueList<int>recList,int current_count) |
731 | { | 731 | { |
732 | if (!body || current_recursion>=10) { | 732 | if (!body || current_recursion>=10) { |
733 | return; | 733 | return; |
734 | } | 734 | } |
735 | switch (body->bd_type) { | 735 | switch (body->bd_type) { |
736 | case MAILIMAP_BODY_1PART: | 736 | case MAILIMAP_BODY_1PART: |
737 | { | 737 | { |
738 | QValueList<int>countlist = recList; | 738 | QValueList<int>countlist = recList; |
739 | countlist.append(current_count); | 739 | countlist.append(current_count); |
740 | RecPartP currentPart = new RecPart(); | 740 | RecPartP currentPart = new RecPart(); |
741 | mailimap_body_type_1part*part1 = body->bd_data.bd_body_1part; | 741 | mailimap_body_type_1part*part1 = body->bd_data.bd_body_1part; |
742 | QString id(""); | 742 | QString id(""); |
743 | currentPart->setPositionlist(countlist); | 743 | currentPart->setPositionlist(countlist); |
744 | for (unsigned int j = 0; j < countlist.count();++j) { | 744 | for (unsigned int j = 0; j < countlist.count();++j) { |
745 | id+=(j>0?" ":""); | 745 | id+=(j>0?" ":""); |
746 | id+=QString("%1").arg(countlist[j]); | 746 | id+=QString("%1").arg(countlist[j]); |
747 | } | 747 | } |
748 | //odebug << "ID = " << id.latin1() << "" << oendl; | 748 | //odebug << "ID = " << id.latin1() << "" << oendl; |
749 | currentPart->setIdentifier(id); | 749 | currentPart->setIdentifier(id); |
750 | fillSinglePart(currentPart,part1); | 750 | fillSinglePart(currentPart,part1); |
751 | /* important: Check for is NULL 'cause a body can be empty! | 751 | /* important: Check for is NULL 'cause a body can be empty! |
752 | And we put it only into the mail if it is the FIRST part */ | 752 | And we put it only into the mail if it is the FIRST part */ |
753 | if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_TEXT && target_body->Bodytext().isNull() && countlist[0]==1) { | 753 | if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_TEXT && target_body->Bodytext().isNull() && countlist[0]==1) { |
754 | QString body_text = fetchTextPart(mail,countlist,true,currentPart->Encoding()); | 754 | QString body_text = fetchTextPart(mail,countlist,true,currentPart->Encoding()); |
755 | 755 | ||
756 | size_t index = 0; | 756 | size_t index = 0; |
757 | char*res = 0; | 757 | char*res = 0; |
758 | int err = MAILIMF_NO_ERROR; | 758 | int err = MAILIMF_NO_ERROR; |
759 | 759 | ||
760 | QString charset = currentPart->searchParamter( "charset"); | 760 | QString charset = currentPart->searchParamter( "charset"); |
761 | qDebug("CHARSET %s ",charset.latin1() ); | 761 | qDebug("CHARSET %s ",charset.latin1() ); |
762 | //if ( false ) { | 762 | if ( false ) { |
763 | if ( !charset.isEmpty() ) { | 763 | //if ( !charset.isEmpty() ) { |
764 | target_body->setCharset( charset ); | 764 | target_body->setCharset( charset ); |
765 | //err = mailmime_encoded_phrase_parse("iso-8859-1", | 765 | //err = mailmime_encoded_phrase_parse("iso-8859-1", |
766 | // text, strlen(text),&index, "iso-8859-1",&res); | 766 | // text, strlen(text),&index, "iso-8859-1",&res); |
767 | err = mailmime_encoded_phrase_parse(charset.latin1(), | 767 | err = mailmime_encoded_phrase_parse(charset.latin1(), |
768 | body_text.latin1(), body_text.length(),&index, "utf-8",&res); | 768 | body_text.latin1(), body_text.length(),&index, "utf-8",&res); |
769 | if (err == MAILIMF_NO_ERROR && res && strlen(res)) { | 769 | if (err == MAILIMF_NO_ERROR && res && strlen(res)) { |
770 | //qDebug("res %d %s ", index, res); | 770 | //qDebug("res %d %s ", index, res); |
771 | body_text = QString::fromUtf8(res); | 771 | body_text = QString::fromUtf8(res); |
772 | } | 772 | } |
773 | if (res) free(res); | 773 | if (res) free(res); |
774 | } | 774 | } |
775 | //qDebug("encoding %d text %s ",currentPart->Encoding().latin1(), body_text.latin1() ); | 775 | //qDebug("encoding %d text %s ",currentPart->Encoding().latin1(), body_text.latin1() ); |
776 | target_body->setDescription(currentPart); | 776 | target_body->setDescription(currentPart); |
777 | target_body->setBodytext(body_text); | 777 | target_body->setBodytext(body_text); |
778 | if (countlist.count()>1) { | 778 | if (countlist.count()>1) { |
779 | target_body->addPart(currentPart); | 779 | target_body->addPart(currentPart); |
780 | } | 780 | } |
781 | } else { | 781 | } else { |
782 | target_body->addPart(currentPart); | 782 | target_body->addPart(currentPart); |
783 | } | 783 | } |
784 | if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_MSG) { | 784 | if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_MSG) { |
785 | traverseBody(mail,part1->bd_data.bd_type_msg->bd_body,target_body,current_recursion+1,countlist); | 785 | traverseBody(mail,part1->bd_data.bd_type_msg->bd_body,target_body,current_recursion+1,countlist); |
786 | } | 786 | } |
787 | } | 787 | } |
788 | break; | 788 | break; |
789 | case MAILIMAP_BODY_MPART: | 789 | case MAILIMAP_BODY_MPART: |
790 | { | 790 | { |
791 | QValueList<int>countlist = recList; | 791 | QValueList<int>countlist = recList; |
792 | clistcell*current=0; | 792 | clistcell*current=0; |
793 | mailimap_body*current_body=0; | 793 | mailimap_body*current_body=0; |
794 | unsigned int ccount = 1; | 794 | unsigned int ccount = 1; |
795 | mailimap_body_type_mpart*mailDescription = body->bd_data.bd_body_mpart; | 795 | mailimap_body_type_mpart*mailDescription = body->bd_data.bd_body_mpart; |
796 | for (current=clist_begin(mailDescription->bd_list);current!=0;current=clist_next(current)) { | 796 | for (current=clist_begin(mailDescription->bd_list);current!=0;current=clist_next(current)) { |
797 | current_body = (mailimap_body*)current->data; | 797 | current_body = (mailimap_body*)current->data; |
798 | if (current_body->bd_type==MAILIMAP_BODY_MPART) { | 798 | if (current_body->bd_type==MAILIMAP_BODY_MPART) { |
799 | RecPartP targetPart = new RecPart(); | 799 | RecPartP targetPart = new RecPart(); |
800 | targetPart->setType("multipart"); | 800 | targetPart->setType("multipart"); |
801 | fillMultiPart(targetPart,mailDescription); | 801 | fillMultiPart(targetPart,mailDescription); |
802 | countlist.append(current_count); | 802 | countlist.append(current_count); |
803 | targetPart->setPositionlist(countlist); | 803 | targetPart->setPositionlist(countlist); |
804 | target_body->addPart(targetPart); | 804 | target_body->addPart(targetPart); |
805 | QString id(""); | 805 | QString id(""); |
806 | for (unsigned int j = 0; j < countlist.count();++j) { | 806 | for (unsigned int j = 0; j < countlist.count();++j) { |
807 | id+=(j>0?" ":""); | 807 | id+=(j>0?" ":""); |
808 | id+=QString("%1").arg(countlist[j]); | 808 | id+=QString("%1").arg(countlist[j]); |
809 | } | 809 | } |
810 | // odebug << "ID(mpart) = " << id.latin1() << "" << oendl; | 810 | // odebug << "ID(mpart) = " << id.latin1() << "" << oendl; |
811 | } | 811 | } |
812 | traverseBody(mail,current_body,target_body,current_recursion+1,countlist,ccount); | 812 | traverseBody(mail,current_body,target_body,current_recursion+1,countlist,ccount); |
813 | if (current_body->bd_type==MAILIMAP_BODY_MPART) { | 813 | if (current_body->bd_type==MAILIMAP_BODY_MPART) { |
814 | countlist = recList; | 814 | countlist = recList; |
815 | } | 815 | } |
816 | ++ccount; | 816 | ++ccount; |
817 | } | 817 | } |
818 | } | 818 | } |
819 | break; | 819 | break; |
820 | default: | 820 | default: |
821 | break; | 821 | break; |
822 | } | 822 | } |
823 | } | 823 | } |
824 | 824 | ||
825 | void IMAPwrapper::fillSinglePart(RecPartP&target_part,mailimap_body_type_1part*Description) | 825 | void IMAPwrapper::fillSinglePart(RecPartP&target_part,mailimap_body_type_1part*Description) |
826 | { | 826 | { |
827 | if (!Description) { | 827 | if (!Description) { |
diff --git a/kmicromail/libmailwrapper/mailwrapper.h b/kmicromail/libmailwrapper/mailwrapper.h index ea6bf36..3e8b51f 100644 --- a/kmicromail/libmailwrapper/mailwrapper.h +++ b/kmicromail/libmailwrapper/mailwrapper.h | |||
@@ -22,110 +22,110 @@ public: | |||
22 | const QString getMimeType()const{ return doc.type(); } | 22 | const QString getMimeType()const{ return doc.type(); } |
23 | const QPixmap getPixmap()const{ return doc.pixmap(); } | 23 | const QPixmap getPixmap()const{ return doc.pixmap(); } |
24 | const int getSize()const { return size; } | 24 | const int getSize()const { return size; } |
25 | DocLnk getDocLnk() { return doc; } | 25 | DocLnk getDocLnk() { return doc; } |
26 | 26 | ||
27 | protected: | 27 | protected: |
28 | DocLnk doc; | 28 | DocLnk doc; |
29 | int size; | 29 | int size; |
30 | 30 | ||
31 | }; | 31 | }; |
32 | */ | 32 | */ |
33 | 33 | ||
34 | class Attachment | 34 | class Attachment |
35 | { | 35 | { |
36 | public: | 36 | public: |
37 | Attachment( QString lnk ); | 37 | Attachment( QString lnk ); |
38 | virtual ~Attachment(){} | 38 | virtual ~Attachment(){} |
39 | const QString getFileName()const{ return doc; } | 39 | const QString getFileName()const{ return doc; } |
40 | const QString getName()const{ return QFileInfo( doc ).baseName (); } | 40 | const QString getName()const{ return QFileInfo( doc ).baseName (); } |
41 | const QString getMimeType()const{ return QFileInfo( doc ).extension(false); } | 41 | const QString getMimeType()const{ return QFileInfo( doc ).extension(false); } |
42 | const QPixmap getPixmap()const{ return mPix; } | 42 | const QPixmap getPixmap()const{ return mPix; } |
43 | const int getSize()const { return size; } | 43 | const int getSize()const { return size; } |
44 | QString getDocLnk() { return doc; } | 44 | QString getDocLnk() { return doc; } |
45 | 45 | ||
46 | protected: | 46 | protected: |
47 | QPixmap mPix; | 47 | QPixmap mPix; |
48 | QString doc; | 48 | QString doc; |
49 | int size; | 49 | int size; |
50 | 50 | ||
51 | }; | 51 | }; |
52 | 52 | ||
53 | class Mail:public Opie::Core::ORefCount | 53 | class Mail:public Opie::Core::ORefCount |
54 | { | 54 | { |
55 | public: | 55 | public: |
56 | Mail(); | 56 | Mail(); |
57 | /* Possible that this destructor must not be declared virtual | 57 | /* Possible that this destructor must not be declared virtual |
58 | * 'cause it seems that it will never have some child classes. | 58 | * 'cause it seems that it will never have some child classes. |
59 | * in this case this object will not get a virtual table -> memory and | 59 | * in this case this object will not get a virtual table -> memory and |
60 | * speed will be a little bit better? | 60 | * speed will be a little bit better? |
61 | */ | 61 | */ |
62 | virtual ~Mail(){} | 62 | virtual ~Mail(){} |
63 | void addAttachment( Attachment *att ) { attList.append( att ); } | 63 | void addAttachment( Attachment *att ) { attList.append( att ); } |
64 | const QList<Attachment>& getAttachments()const { return attList; } | 64 | const QList<Attachment>& getAttachments()const { return attList; } |
65 | void removeAttachment( Attachment *att ) { attList.remove( att ); } | 65 | void removeAttachment( Attachment *att ) { attList.remove( att ); } |
66 | const QString&getName()const { return name; } | 66 | const QString&getName()const { return name; } |
67 | void setName( QString s ) { name = s; } | 67 | void setName( QString s ) { name = s; } |
68 | const QString&getMail()const{ return mail; } | 68 | const QString&getMail()const{ return mail; } |
69 | void setMail( const QString&s ) { mail = s; } | 69 | void setMail( const QString&s ) { mail = s; } |
70 | const QString&getTo()const{ return to; } | 70 | const QString&getTo()const{ return to; } |
71 | void setTo( const QString&s ) { to = s; } | 71 | void setTo( const QString&s ) { to = s; } |
72 | const QString&getCC()const{ return cc; } | 72 | const QString&getCC()const{ return cc; } |
73 | void setCC( const QString&s ) { cc = s; } | 73 | void setCC( const QString&s ) { cc = s; } |
74 | const QString&getBCC()const { return bcc; } | 74 | const QString&getBCC()const { return bcc; } |
75 | void setBCC( const QString&s ) { bcc = s; } | 75 | void setBCC( const QString&s ) { bcc = s; } |
76 | const QString&getMessage()const { return message; } | 76 | const QString&getMessage()const { return message; } |
77 | void setMessage( const QString&s ) { message = s; } | 77 | void setMessage( const QString&s ) { message = s; } |
78 | const QString&getSubject()const { return subject; } | 78 | const QString&getSubject()const { return subject; } |
79 | void setSubject( const QString&s ) { subject = s; } | 79 | void setSubject( const QString&s ) { subject = s; } |
80 | const QString&getReply()const{ return reply; } | 80 | const QString&getReply()const{ return reply; } |
81 | void setReply( const QString&a ) { reply = a; } | 81 | void setReply( const QString&a ) { reply = a; } |
82 | void setInreply(const QStringList&list){m_in_reply_to = list;} | 82 | void setInreply(const QStringList&list){m_in_reply_to = list;} |
83 | const QStringList&Inreply()const{return m_in_reply_to;} | 83 | const QStringList&Inreply()const{return m_in_reply_to;} |
84 | 84 | ||
85 | void setCharset( const QString&a ) { charset= a; } | 85 | void setCharset( const QString&a ) { charset= a; } |
86 | const QString& getCharset() { return charset; } | 86 | const QString& getCharset() const { return charset; } |
87 | 87 | ||
88 | private: | 88 | private: |
89 | QList<Attachment> attList; | 89 | QList<Attachment> attList; |
90 | QString name, mail, to, cc, bcc, reply, subject, message, charset; | 90 | QString name, mail, to, cc, bcc, reply, subject, message, charset; |
91 | QStringList m_in_reply_to; | 91 | QStringList m_in_reply_to; |
92 | }; | 92 | }; |
93 | 93 | ||
94 | class Folder:public Opie::Core::ORefCount | 94 | class Folder:public Opie::Core::ORefCount |
95 | { | 95 | { |
96 | public: | 96 | public: |
97 | Folder( const QString&init_name,const QString&sep ); | 97 | Folder( const QString&init_name,const QString&sep ); |
98 | virtual ~Folder(); | 98 | virtual ~Folder(); |
99 | const QString&getDisplayName()const { return nameDisplay; } | 99 | const QString&getDisplayName()const { return nameDisplay; } |
100 | const QString&getName()const { return name; } | 100 | const QString&getName()const { return name; } |
101 | const QString&getPrefix()const{return prefix; } | 101 | const QString&getPrefix()const{return prefix; } |
102 | virtual bool may_select()const{return true;} | 102 | virtual bool may_select()const{return true;} |
103 | virtual bool no_inferior()const{return true;} | 103 | virtual bool no_inferior()const{return true;} |
104 | const QString&Separator()const; | 104 | const QString&Separator()const; |
105 | 105 | ||
106 | protected: | 106 | protected: |
107 | QString nameDisplay, name, separator,prefix; | 107 | QString nameDisplay, name, separator,prefix; |
108 | }; | 108 | }; |
109 | 109 | ||
110 | typedef Opie::Core::OSmartPointer<Folder> FolderP; | 110 | typedef Opie::Core::OSmartPointer<Folder> FolderP; |
111 | 111 | ||
112 | class MHFolder : public Folder | 112 | class MHFolder : public Folder |
113 | { | 113 | { |
114 | public: | 114 | public: |
115 | MHFolder(const QString&disp_name,const QString&mbox); | 115 | MHFolder(const QString&disp_name,const QString&mbox); |
116 | virtual ~MHFolder(); | 116 | virtual ~MHFolder(); |
117 | }; | 117 | }; |
118 | 118 | ||
119 | class IMAPFolder : public Folder | 119 | class IMAPFolder : public Folder |
120 | { | 120 | { |
121 | public: | 121 | public: |
122 | IMAPFolder(const QString&name, const QString&sep, bool select=true,bool noinf=false,const QString&prefix="" ); | 122 | IMAPFolder(const QString&name, const QString&sep, bool select=true,bool noinf=false,const QString&prefix="" ); |
123 | virtual ~IMAPFolder(); | 123 | virtual ~IMAPFolder(); |
124 | virtual bool may_select()const{return m_MaySelect;} | 124 | virtual bool may_select()const{return m_MaySelect;} |
125 | virtual bool no_inferior()const{return m_NoInferior;} | 125 | virtual bool no_inferior()const{return m_NoInferior;} |
126 | static QString decodeFolderName( const QString &name ); | 126 | static QString decodeFolderName( const QString &name ); |
127 | private: | 127 | private: |
128 | bool m_MaySelect,m_NoInferior; | 128 | bool m_MaySelect,m_NoInferior; |
129 | }; | 129 | }; |
130 | 130 | ||
131 | #endif | 131 | #endif |
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp index 3013931..8c0a4cb 100644 --- a/kmicromail/mainwindow.cpp +++ b/kmicromail/mainwindow.cpp | |||
@@ -46,129 +46,130 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) | |||
46 | connect(getMail, SIGNAL( activated() ), | 46 | connect(getMail, SIGNAL( activated() ), |
47 | SLOT( slotGetAllMail() ) ); | 47 | SLOT( slotGetAllMail() ) ); |
48 | getMail->addTo( mailMenu ); | 48 | getMail->addTo( mailMenu ); |
49 | 49 | ||
50 | getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"), | 50 | getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"), |
51 | 0, 0, this ); | 51 | 0, 0, this ); |
52 | getMail->addTo( toolBar ); | 52 | getMail->addTo( toolBar ); |
53 | getMail->addTo( mailMenu ); | 53 | getMail->addTo( mailMenu ); |
54 | connect(getMail, SIGNAL( activated() ), | 54 | connect(getMail, SIGNAL( activated() ), |
55 | SLOT( slotGetMail() ) ); | 55 | SLOT( slotGetMail() ) ); |
56 | 56 | ||
57 | composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"), | 57 | composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"), |
58 | 0, 0, this ); | 58 | 0, 0, this ); |
59 | composeMail->addTo( toolBar ); | 59 | composeMail->addTo( toolBar ); |
60 | composeMail->addTo( mailMenu ); | 60 | composeMail->addTo( mailMenu ); |
61 | 61 | ||
62 | sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") , | 62 | sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") , |
63 | 0, 0, this ); | 63 | 0, 0, this ); |
64 | sendQueued->addTo( toolBar ); | 64 | sendQueued->addTo( toolBar ); |
65 | sendQueued->addTo( mailMenu ); | 65 | sendQueued->addTo( mailMenu ); |
66 | 66 | ||
67 | /* | 67 | /* |
68 | syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC, | 68 | syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC, |
69 | 0, 0, this ); | 69 | 0, 0, this ); |
70 | syncFolders->addTo( toolBar ); | 70 | syncFolders->addTo( toolBar ); |
71 | syncFolders->addTo( mailMenu ); | 71 | syncFolders->addTo( mailMenu ); |
72 | */ | 72 | */ |
73 | 73 | ||
74 | showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") , | 74 | showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") , |
75 | 0, 0, this, 0, true ); | 75 | 0, 0, this, 0, true ); |
76 | showFolders->addTo( toolBar ); | 76 | showFolders->addTo( toolBar ); |
77 | showFolders->addTo( mailMenu ); | 77 | showFolders->addTo( mailMenu ); |
78 | showFolders->setOn( true ); | 78 | showFolders->setOn( true ); |
79 | connect(showFolders, SIGNAL( toggled(bool) ), | 79 | connect(showFolders, SIGNAL( toggled(bool) ), |
80 | SLOT( slotShowFolders(bool) ) ); | 80 | SLOT( slotShowFolders(bool) ) ); |
81 | 81 | ||
82 | /* | 82 | /* |
83 | searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ), | 83 | searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ), |
84 | 0, 0, this ); | 84 | 0, 0, this ); |
85 | searchMails->addTo( toolBar ); | 85 | searchMails->addTo( toolBar ); |
86 | searchMails->addTo( mailMenu ); | 86 | searchMails->addTo( mailMenu ); |
87 | */ | 87 | */ |
88 | 88 | ||
89 | deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this); | 89 | deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this); |
90 | deleteMails->addTo( toolBar ); | 90 | deleteMails->addTo( toolBar ); |
91 | deleteMails->addTo( mailMenu ); | 91 | deleteMails->addTo( mailMenu ); |
92 | connect( deleteMails, SIGNAL( activated() ), | 92 | connect( deleteMails, SIGNAL( activated() ), |
93 | SLOT( slotDeleteMail() ) ); | 93 | SLOT( slotDeleteMail() ) ); |
94 | 94 | ||
95 | editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") , | 95 | editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") , |
96 | 0, 0, this ); | 96 | 0, 0, this ); |
97 | editSettings->addTo( settingsMenu ); | 97 | editSettings->addTo( settingsMenu ); |
98 | connect( editSettings, SIGNAL( activated() ), | 98 | connect( editSettings, SIGNAL( activated() ), |
99 | SLOT( slotEditSettings() ) ); | 99 | SLOT( slotEditSettings() ) ); |
100 | editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") , | 100 | editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") , |
101 | 0, 0, this ); | 101 | 0, 0, this ); |
102 | editAccounts->addTo( settingsMenu ); | 102 | editAccounts->addTo( settingsMenu ); |
103 | codecMenu = new QPopupMenu( menuBar ); | 103 | codecMenu = new QPopupMenu( menuBar ); |
104 | codecMenu->insertItem( "Western (iso-8859-1)",0,0); | 104 | codecMenu->insertItem( "Western (iso-8859-1)",0,0); |
105 | codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1); | 105 | codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1); |
106 | codecMenu->insertItem( "Western (iso-8859-15)",2,2); | 106 | codecMenu->insertItem( "Western (iso-8859-15)",2,2); |
107 | codecMenu->insertItem( "Chinese (big-5)",3,3); | 107 | codecMenu->insertItem( "Chinese (big-5)",3,3); |
108 | codecMenu->insertItem( "Unicode (utf-8)",4,4); | 108 | codecMenu->insertItem( "Unicode (utf-8)",4,4); |
109 | codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5); | 109 | codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5); |
110 | settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu); | 110 | //disabled |
111 | //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu); | ||
111 | //setCentralWidget( view ); | 112 | //setCentralWidget( view ); |
112 | 113 | ||
113 | QVBox* wrapperBox = new QVBox( this ); | 114 | QVBox* wrapperBox = new QVBox( this ); |
114 | setCentralWidget( wrapperBox ); | 115 | setCentralWidget( wrapperBox ); |
115 | 116 | ||
116 | // QWidget *view = new QWidget( wrapperBox ); | 117 | // QWidget *view = new QWidget( wrapperBox ); |
117 | KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); | 118 | KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); |
118 | split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); | 119 | split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); |
119 | //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); | 120 | //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); |
120 | 121 | ||
121 | folderView = new AccountView( split ); | 122 | folderView = new AccountView( split ); |
122 | folderView->header()->hide(); | 123 | folderView->header()->hide(); |
123 | folderView->setRootIsDecorated( false ); | 124 | folderView->setRootIsDecorated( false ); |
124 | folderView->addColumn( i18n( "Mailbox" ) ); | 125 | folderView->addColumn( i18n( "Mailbox" ) ); |
125 | 126 | ||
126 | //layout->addWidget( folderView ); | 127 | //layout->addWidget( folderView ); |
127 | 128 | ||
128 | mailView = new QListView( split ); | 129 | mailView = new QListView( split ); |
129 | mailView->addColumn( i18n( " " ) ); | 130 | mailView->addColumn( i18n( " " ) ); |
130 | mailView->addColumn( i18n( "Subject" ),QListView::Manual ); | 131 | mailView->addColumn( i18n( "Subject" ),QListView::Manual ); |
131 | mailView->addColumn( i18n( "Sender" ),QListView::Manual ); | 132 | mailView->addColumn( i18n( "Sender" ),QListView::Manual ); |
132 | mailView->addColumn( i18n( "Size" ),QListView::Manual); | 133 | mailView->addColumn( i18n( "Size" ),QListView::Manual); |
133 | mailView->addColumn( i18n( "Date" ),QListView::Manual); | 134 | mailView->addColumn( i18n( "Date" ),QListView::Manual); |
134 | mailView->setAllColumnsShowFocus(true); | 135 | mailView->setAllColumnsShowFocus(true); |
135 | //mailView->setSorting(-1); | 136 | //mailView->setSorting(-1); |
136 | mailView->setRootIsDecorated( false ); | 137 | mailView->setRootIsDecorated( false ); |
137 | statusWidget = new StatusWidget( wrapperBox ); | 138 | statusWidget = new StatusWidget( wrapperBox ); |
138 | statusWidget->hide(); | 139 | statusWidget->hide(); |
139 | 140 | ||
140 | //layout->addWidget( mailView ); | 141 | //layout->addWidget( mailView ); |
141 | //layout->setStretchFactor( folderView, 1 ); | 142 | //layout->setStretchFactor( folderView, 1 ); |
142 | //layout->setStretchFactor( mailView, 2 ); | 143 | //layout->setStretchFactor( mailView, 2 ); |
143 | 144 | ||
144 | slotAdjustLayout(); | 145 | slotAdjustLayout(); |
145 | #ifndef DESKTOP_VERSION | 146 | #ifndef DESKTOP_VERSION |
146 | QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); | 147 | QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); |
147 | QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); | 148 | QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); |
148 | #endif | 149 | #endif |
149 | connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, | 150 | connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, |
150 | SLOT( mailLeftClicked(QListViewItem*) ) ); | 151 | SLOT( mailLeftClicked(QListViewItem*) ) ); |
151 | connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, | 152 | connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, |
152 | SLOT( mailLeftClicked(QListViewItem*) ) ); | 153 | SLOT( mailLeftClicked(QListViewItem*) ) ); |
153 | connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, | 154 | connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, |
154 | SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); | 155 | SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); |
155 | connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), | 156 | connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), |
156 | this,SLOT(refreshMailView(const QValueList<RecMailP>&))); | 157 | this,SLOT(refreshMailView(const QValueList<RecMailP>&))); |
157 | connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); | 158 | connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); |
158 | connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); | 159 | connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); |
159 | // connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); | 160 | // connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); |
160 | connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); | 161 | connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); |
161 | //mailView->setMultiSelection ( true ); | 162 | //mailView->setMultiSelection ( true ); |
162 | mailView->setSelectionMode( QListView::Extended ); | 163 | mailView->setSelectionMode( QListView::Extended ); |
163 | QValueList<int> list; | 164 | QValueList<int> list; |
164 | int fw = 100; | 165 | int fw = 100; |
165 | if ( QApplication::desktop()->width() > 320 ) | 166 | if ( QApplication::desktop()->width() > 320 ) |
166 | fw = 50; | 167 | fw = 50; |
167 | list.append( fw ); | 168 | list.append( fw ); |
168 | list.append( 100 ); | 169 | list.append( 100 ); |
169 | split->setSizes( list ); | 170 | split->setSizes( list ); |
170 | QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); | 171 | QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); |
171 | mailView->setShowSortIndicator ( true ); | 172 | mailView->setShowSortIndicator ( true ); |
172 | QLabel *spacer = new QLabel( toolBar ); | 173 | QLabel *spacer = new QLabel( toolBar ); |
173 | spacer->setBackgroundMode( QWidget::PaletteButton ); | 174 | spacer->setBackgroundMode( QWidget::PaletteButton ); |
174 | toolBar->setStretchableWidget( spacer ); | 175 | toolBar->setStretchableWidget( spacer ); |
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp index 1da1e99..d7e384c 100644 --- a/microkde/kdecore/klocale.cpp +++ b/microkde/kdecore/klocale.cpp | |||
@@ -807,145 +807,146 @@ QString KLocale::monthName(int i,bool shortName) const | |||
807 | case 1: return i18n("January"); | 807 | case 1: return i18n("January"); |
808 | case 2: return i18n("February"); | 808 | case 2: return i18n("February"); |
809 | case 3: return i18n("March"); | 809 | case 3: return i18n("March"); |
810 | case 4: return i18n("April"); | 810 | case 4: return i18n("April"); |
811 | case 5: return i18n("May long", "May"); | 811 | case 5: return i18n("May long", "May"); |
812 | case 6: return i18n("June"); | 812 | case 6: return i18n("June"); |
813 | case 7: return i18n("July"); | 813 | case 7: return i18n("July"); |
814 | case 8: return i18n("August"); | 814 | case 8: return i18n("August"); |
815 | case 9: return i18n("September"); | 815 | case 9: return i18n("September"); |
816 | case 10: return i18n("October"); | 816 | case 10: return i18n("October"); |
817 | case 11: return i18n("November"); | 817 | case 11: return i18n("November"); |
818 | case 12: return i18n("December"); | 818 | case 12: return i18n("December"); |
819 | } | 819 | } |
820 | 820 | ||
821 | return QString::null; | 821 | return QString::null; |
822 | } | 822 | } |
823 | 823 | ||
824 | QString KLocale::country() const | 824 | QString KLocale::country() const |
825 | { | 825 | { |
826 | return QString::null; | 826 | return QString::null; |
827 | } | 827 | } |
828 | 828 | ||
829 | QString KLocale::dateFormat(IntDateFormat intIntDateFormat) const | 829 | QString KLocale::dateFormat(IntDateFormat intIntDateFormat) const |
830 | { | 830 | { |
831 | const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat; | 831 | const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat; |
832 | 832 | ||
833 | if ( dformat == ISODate ) | 833 | if ( dformat == ISODate ) |
834 | return "%Y-%m-%d"; | 834 | return "%Y-%m-%d"; |
835 | 835 | ||
836 | if ( QApplication::desktop()->width() < 480 ) { | 836 | if ( QApplication::desktop()->width() < 480 ) { |
837 | if ( dformat == Default ) | 837 | if ( dformat == Default ) |
838 | return "%a %d %b %Y"; | 838 | return "%a %d %b %Y"; |
839 | else if ( dformat == Format1 ) | 839 | else if ( dformat == Format1 ) |
840 | return "%a %b %d %Y"; | 840 | return "%a %b %d %Y"; |
841 | } else { | 841 | } else { |
842 | if ( dformat == Default ) | 842 | if ( dformat == Default ) |
843 | return "%A %d %B %Y"; | 843 | return "%A %d %B %Y"; |
844 | else if ( dformat == Format1 ) | 844 | else if ( dformat == Format1 ) |
845 | return "%A %B %d %Y"; | 845 | return "%A %B %d %Y"; |
846 | 846 | ||
847 | } | 847 | } |
848 | return mDateFormat ; | 848 | return mDateFormat ; |
849 | } | 849 | } |
850 | 850 | ||
851 | QString KLocale::dateFormatShort(IntDateFormat intIntDateFormat) const | 851 | QString KLocale::dateFormatShort(IntDateFormat intIntDateFormat) const |
852 | { | 852 | { |
853 | const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat; | 853 | const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat; |
854 | 854 | ||
855 | if ( dformat == Default ) | 855 | if ( dformat == Default ) |
856 | return "%d.%m.%Y"; | 856 | return "%d.%m.%Y"; |
857 | else if ( dformat == Format1 ) | 857 | else if ( dformat == Format1 ) |
858 | return "%m.%d.%Y"; | 858 | return "%m.%d.%Y"; |
859 | else if ( dformat == ISODate ) // = Qt::ISODate | 859 | else if ( dformat == ISODate ) // = Qt::ISODate |
860 | return "%Y-%m-%d"; | 860 | return "%Y-%m-%d"; |
861 | return mDateFormatShort ; | 861 | return mDateFormatShort ; |
862 | 862 | ||
863 | } | 863 | } |
864 | 864 | ||
865 | 865 | ||
866 | QString KLocale::timeFormat(IntDateFormat intIntTimeFormat) const | 866 | QString KLocale::timeFormat(IntDateFormat intIntTimeFormat) const |
867 | { | 867 | { |
868 | const IntDateFormat tformat = (intIntTimeFormat == Undefined)?mIntTimeFormat:intIntTimeFormat; | 868 | const IntDateFormat tformat = (intIntTimeFormat == Undefined)?mIntTimeFormat:intIntTimeFormat; |
869 | 869 | ||
870 | if ( tformat == Default ) | 870 | if ( tformat == Default ) |
871 | if ( mHourF24Format) | 871 | if ( mHourF24Format) |
872 | return "%H:%M:%S"; | 872 | return "%H:%M:%S"; |
873 | else | 873 | else |
874 | return "%I:%M:%S%p"; | 874 | return "%I:%M:%S%p"; |
875 | 875 | ||
876 | else if ( tformat == Format1 ) | 876 | else if ( tformat == Format1 ) |
877 | if ( mHourF24Format) | 877 | if ( mHourF24Format) |
878 | return "%H:%M:%S"; | 878 | return "%H:%M:%S"; |
879 | else | 879 | else |
880 | return "%I:%M:%S%p"; | 880 | return "%I:%M:%S%p"; |
881 | 881 | ||
882 | else if ( tformat == ISODate ) // = Qt::ISODate | 882 | else if ( tformat == ISODate ) // = Qt::ISODate |
883 | if ( mHourF24Format) | 883 | if ( mHourF24Format) |
884 | return "%H:%M:%S"; | 884 | return "%H:%M:%S"; |
885 | else | 885 | else |
886 | return "%I:%M:%S%p"; | 886 | return "%I:%M:%S%p"; |
887 | 887 | // to satisfy the compiler | |
888 | return "%H:%M:%S"; | ||
888 | } | 889 | } |
889 | 890 | ||
890 | void KLocale::insertCatalogue ( const QString & ) | 891 | void KLocale::insertCatalogue ( const QString & ) |
891 | { | 892 | { |
892 | } | 893 | } |
893 | 894 | ||
894 | KCalendarSystem *KLocale::calendar() | 895 | KCalendarSystem *KLocale::calendar() |
895 | { | 896 | { |
896 | if ( !mCalendarSystem ) { | 897 | if ( !mCalendarSystem ) { |
897 | mCalendarSystem = new KCalendarSystemGregorian; | 898 | mCalendarSystem = new KCalendarSystemGregorian; |
898 | } | 899 | } |
899 | 900 | ||
900 | return mCalendarSystem; | 901 | return mCalendarSystem; |
901 | } | 902 | } |
902 | 903 | ||
903 | int KLocale::timezoneOffset( QString timeZone ) | 904 | int KLocale::timezoneOffset( QString timeZone ) |
904 | { | 905 | { |
905 | int ret = 1001; | 906 | int ret = 1001; |
906 | int index = mTimeZoneList.findIndex( timeZone ); | 907 | int index = mTimeZoneList.findIndex( timeZone ); |
907 | if ( index < 24 ) | 908 | if ( index < 24 ) |
908 | ret = ( index-11 ) * 60 ; | 909 | ret = ( index-11 ) * 60 ; |
909 | return ret; | 910 | return ret; |
910 | } | 911 | } |
911 | 912 | ||
912 | QStringList KLocale::timeZoneList() const | 913 | QStringList KLocale::timeZoneList() const |
913 | { | 914 | { |
914 | return mTimeZoneList; | 915 | return mTimeZoneList; |
915 | } | 916 | } |
916 | void KLocale::setTimezone( const QString &timeZone, bool oddTZ ) | 917 | void KLocale::setTimezone( const QString &timeZone, bool oddTZ ) |
917 | { | 918 | { |
918 | mTimeZoneOffset = timezoneOffset( timeZone ); | 919 | mTimeZoneOffset = timezoneOffset( timeZone ); |
919 | if ( oddTZ ) | 920 | if ( oddTZ ) |
920 | mTimeZoneOffset += 30; | 921 | mTimeZoneOffset += 30; |
921 | } | 922 | } |
922 | 923 | ||
923 | void KLocale::setDaylightSaving( bool b, int start , int end ) | 924 | void KLocale::setDaylightSaving( bool b, int start , int end ) |
924 | { | 925 | { |
925 | daylightEnabled = b; | 926 | daylightEnabled = b; |
926 | daylightStart = start; | 927 | daylightStart = start; |
927 | daylightEnd = end; | 928 | daylightEnd = end; |
928 | mSouthDaylight = (end < start); | 929 | mSouthDaylight = (end < start); |
929 | // qDebug("klocale daylight %d %d %d ", b, start , end ); | 930 | // qDebug("klocale daylight %d %d %d ", b, start , end ); |
930 | } | 931 | } |
931 | 932 | ||
932 | int KLocale::localTimeOffset( const QDateTime &dt ) | 933 | int KLocale::localTimeOffset( const QDateTime &dt ) |
933 | { | 934 | { |
934 | bool addDaylight = false; | 935 | bool addDaylight = false; |
935 | if ( daylightEnabled ) { | 936 | if ( daylightEnabled ) { |
936 | int d_end, d_start; | 937 | int d_end, d_start; |
937 | int dayofyear = dt.date().dayOfYear(); | 938 | int dayofyear = dt.date().dayOfYear(); |
938 | int year = dt.date().year(); | 939 | int year = dt.date().year(); |
939 | int add = 0; | 940 | int add = 0; |
940 | if ( QDate::leapYear(year) ) | 941 | if ( QDate::leapYear(year) ) |
941 | add = 1; | 942 | add = 1; |
942 | QDate date ( year,1,1 ); | 943 | QDate date ( year,1,1 ); |
943 | if ( daylightEnd > 59 ) | 944 | if ( daylightEnd > 59 ) |
944 | d_end = daylightEnd +add; | 945 | d_end = daylightEnd +add; |
945 | else | 946 | else |
946 | d_end = daylightEnd; | 947 | d_end = daylightEnd; |
947 | if ( daylightStart > 59 ) | 948 | if ( daylightStart > 59 ) |
948 | d_start = daylightStart +add; | 949 | d_start = daylightStart +add; |
949 | else | 950 | else |
950 | d_start = daylightStart; | 951 | d_start = daylightStart; |
951 | QDate s_date = date.addDays( d_start -1 ); | 952 | QDate s_date = date.addDays( d_start -1 ); |
diff --git a/microkde/kidmanager.cpp b/microkde/kidmanager.cpp index 8cf486a..e687e5d 100644 --- a/microkde/kidmanager.cpp +++ b/microkde/kidmanager.cpp | |||
@@ -60,77 +60,77 @@ QString KIdManager::removeId (const QString& idString,const QString& prof ) | |||
60 | } else { | 60 | } else { |
61 | newIDString = idString; | 61 | newIDString = idString; |
62 | } | 62 | } |
63 | //qDebug("removeID:profile:%s*retval:%s*oldidstring:%s* ", prof.latin1(), newIDString.latin1() ,idString.latin1() ); | 63 | //qDebug("removeID:profile:%s*retval:%s*oldidstring:%s* ", prof.latin1(), newIDString.latin1() ,idString.latin1() ); |
64 | return newIDString; | 64 | return newIDString; |
65 | } | 65 | } |
66 | 66 | ||
67 | QString KIdManager::setCsum (const QString& idString,const QString& prof,const QString& idCsum ) | 67 | QString KIdManager::setCsum (const QString& idString,const QString& prof,const QString& idCsum ) |
68 | { | 68 | { |
69 | int startProf; | 69 | int startProf; |
70 | int startIDnum; | 70 | int startIDnum; |
71 | int startIDnumlen; | 71 | int startIDnumlen; |
72 | int startID; | 72 | int startID; |
73 | int lenID; | 73 | int lenID; |
74 | int startCsum; | 74 | int startCsum; |
75 | int lenCsum; | 75 | int lenCsum; |
76 | int endall; | 76 | int endall; |
77 | QString newIDString; | 77 | QString newIDString; |
78 | if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) { | 78 | if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) { |
79 | newIDString = idString.left(startCsum) + idCsum+ idString.mid( endall +1); | 79 | newIDString = idString.left(startCsum) + idCsum+ idString.mid( endall +1); |
80 | } else { | 80 | } else { |
81 | newIDString = idString + prof + ";3;_u_;"+ idCsum + ":"; | 81 | newIDString = idString + prof + ";3;_u_;"+ idCsum + ":"; |
82 | } | 82 | } |
83 | //qDebug("setCsum:profile:%s*retval:%s*idCsum:%s* ", prof.latin1(), newIDString.latin1() ,idCsum.latin1() ); | 83 | //qDebug("setCsum:profile:%s*retval:%s*idCsum:%s* ", prof.latin1(), newIDString.latin1() ,idCsum.latin1() ); |
84 | return newIDString; | 84 | return newIDString; |
85 | } | 85 | } |
86 | QString KIdManager::getCsum (const QString& idString,const QString& prof ) | 86 | QString KIdManager::getCsum (const QString& idString,const QString& prof ) |
87 | { | 87 | { |
88 | int startProf; | 88 | int startProf; |
89 | int startIDnum; | 89 | int startIDnum; |
90 | int startIDnumlen; | 90 | int startIDnumlen; |
91 | int startID; | 91 | int startID; |
92 | int lenID; | 92 | int lenID; |
93 | int startCsum; | 93 | int startCsum; |
94 | int lenCsum; | 94 | int lenCsum; |
95 | int endall; | 95 | int endall; |
96 | QString idval = ""; | 96 | QString idval = ""; |
97 | if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) | 97 | if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) |
98 | idval = idString.mid( startCsum, lenCsum ); | 98 | idval = idString.mid( startCsum, lenCsum ); |
99 | 99 | ||
100 | //qDebug("getCsum:profile:%s*retval:%s*idstring:%s* ", prof.latin1(), idval.latin1() ,idString.latin1() ); | 100 | //qDebug("getCsum:profile:%s*retval:%s*idstring:%s* ", prof.latin1(), idval.latin1() ,idString.latin1() ); |
101 | return idval; | 101 | return idval; |
102 | } | 102 | } |
103 | // :profilename;12;id_withLen12;123456: | 103 | // :profilename;12;id_withLen12;123456: |
104 | bool KIdManager::getNumbers (const QString& idString,const QString& prof, int &startProf, int &startIDnum, int &startIDnumlen,int &startID, int& lenID, int &startCsum, int &lenCsum, int & endall) | 104 | bool KIdManager::getNumbers (const QString& idString,const QString& prof, int &startProf, int &startIDnum, int &startIDnumlen,int &startID, int& lenID, int &startCsum, int &lenCsum, int & endall) |
105 | { | 105 | { |
106 | startProf = idString.find( ":"+prof+";" ); | 106 | startProf = idString.find( ":"+prof+";" ); |
107 | if ( startProf >= 0 ) { | 107 | if ( startProf >= 0 ) { |
108 | startIDnum = prof.length()+2+startProf; | 108 | startIDnum = prof.length()+2+startProf; |
109 | startID = idString.find( ";", startIDnum ) +1; | 109 | startID = idString.find( ";", startIDnum ) +1; |
110 | startIDnumlen = startID - startIDnum - 1; | 110 | startIDnumlen = startID - startIDnum - 1; |
111 | if ( startIDnum > 0 ) { | 111 | if ( startIDnum > 0 ) { |
112 | bool ok; | 112 | bool ok; |
113 | lenID = idString.mid ( startIDnum,startIDnumlen).toInt( &ok ); | 113 | lenID = idString.mid ( startIDnum,startIDnumlen).toInt( &ok ); |
114 | if (ok) { | 114 | if (ok) { |
115 | startCsum = startID+lenID+1; | 115 | startCsum = startID+lenID+1; |
116 | endall = idString.find( ":", startCsum )-1; | 116 | endall = idString.find( ":", startCsum )-1; |
117 | if ( endall < 0 ) { | 117 | if ( endall < 0 ) { |
118 | qDebug("Error getNumbers: andall not found "); | 118 | qDebug("Error getNumbers: andall not found "); |
119 | return false; | 119 | return false; |
120 | } | 120 | } |
121 | lenCsum = endall-startCsum+1; | 121 | lenCsum = endall-startCsum+1; |
122 | } | 122 | } |
123 | else { | 123 | else { |
124 | qDebug("Error getNumbers:length is no number:*%s* ", idString.mid ( startIDnum,startIDnumlen).toInt( &ok )); | 124 | qDebug("Error getNumbers:length is no number:*%s* ", idString.mid ( startIDnum,startIDnumlen).latin1()); |
125 | return false; | 125 | return false; |
126 | } | 126 | } |
127 | } else { | 127 | } else { |
128 | qDebug("Error in KIdManager::getNumbers.startIDnum <= 0"); | 128 | qDebug("Error in KIdManager::getNumbers.startIDnum <= 0"); |
129 | return false; | 129 | return false; |
130 | } | 130 | } |
131 | } else { | 131 | } else { |
132 | //qDebug("getnumbers: profile not found *%s* ",prof.latin1() ); | 132 | //qDebug("getnumbers: profile not found *%s* ",prof.latin1() ); |
133 | return false; | 133 | return false; |
134 | } | 134 | } |
135 | return true; | 135 | return true; |
136 | } | 136 | } |
diff --git a/microkde/kresources/managerimpl.cpp b/microkde/kresources/managerimpl.cpp index 5bd9eb7..566b8f4 100644 --- a/microkde/kresources/managerimpl.cpp +++ b/microkde/kresources/managerimpl.cpp | |||
@@ -96,141 +96,141 @@ void ManagerImpl::readConfig( KConfig *cfg ) | |||
96 | 96 | ||
97 | mStandard = 0; | 97 | mStandard = 0; |
98 | 98 | ||
99 | mConfig->setGroup( "General" ); | 99 | mConfig->setGroup( "General" ); |
100 | 100 | ||
101 | QStringList keys = mConfig->readListEntry( "ResourceKeys" ); | 101 | QStringList keys = mConfig->readListEntry( "ResourceKeys" ); |
102 | keys += mConfig->readListEntry( "PassiveResourceKeys" ); | 102 | keys += mConfig->readListEntry( "PassiveResourceKeys" ); |
103 | 103 | ||
104 | QString standardKey = mConfig->readEntry( "Standard" ); | 104 | QString standardKey = mConfig->readEntry( "Standard" ); |
105 | 105 | ||
106 | for ( QStringList::Iterator it = keys.begin(); it != keys.end(); ++it ) { | 106 | for ( QStringList::Iterator it = keys.begin(); it != keys.end(); ++it ) { |
107 | readResourceConfig( *it, false ); | 107 | readResourceConfig( *it, false ); |
108 | } | 108 | } |
109 | 109 | ||
110 | } | 110 | } |
111 | 111 | ||
112 | void ManagerImpl::writeConfig( KConfig *cfg ) | 112 | void ManagerImpl::writeConfig( KConfig *cfg ) |
113 | { | 113 | { |
114 | //USqDebug("ManagerImpl::writeConfig begin this= %ul cfg=%ul", this, cfg); | 114 | //USqDebug("ManagerImpl::writeConfig begin this= %ul cfg=%ul", this, cfg); |
115 | 115 | ||
116 | 116 | ||
117 | kdDebug(5650) << "ManagerImpl::writeConfig()" << endl; | 117 | kdDebug(5650) << "ManagerImpl::writeConfig()" << endl; |
118 | 118 | ||
119 | if ( !cfg ) { | 119 | if ( !cfg ) { |
120 | createStandardConfig(); | 120 | createStandardConfig(); |
121 | } else { | 121 | } else { |
122 | mConfig = cfg; | 122 | mConfig = cfg; |
123 | } | 123 | } |
124 | 124 | ||
125 | QStringList activeKeys; | 125 | QStringList activeKeys; |
126 | QStringList passiveKeys; | 126 | QStringList passiveKeys; |
127 | 127 | ||
128 | // First write all keys, collect active and passive keys on the way | 128 | // First write all keys, collect active and passive keys on the way |
129 | Resource::List::Iterator it; | 129 | Resource::List::Iterator it; |
130 | for ( it = mResources.begin(); it != mResources.end(); ++it ) { | 130 | for ( it = mResources.begin(); it != mResources.end(); ++it ) { |
131 | writeResourceConfig( *it, false ); | 131 | writeResourceConfig( *it, false ); |
132 | 132 | ||
133 | QString key = (*it)->identifier(); | 133 | QString key = (*it)->identifier(); |
134 | if( (*it)->isActive() ) | 134 | if( (*it)->isActive() ) |
135 | activeKeys.append( key ); | 135 | activeKeys.append( key ); |
136 | else | 136 | else |
137 | passiveKeys.append( key ); | 137 | passiveKeys.append( key ); |
138 | } | 138 | } |
139 | 139 | ||
140 | // And then the general group | 140 | // And then the general group |
141 | 141 | ||
142 | kdDebug(5650) << "Saving general info" << endl; | 142 | kdDebug(5650) << "Saving general info" << endl; |
143 | mConfig->setGroup( "General" ); | 143 | mConfig->setGroup( "General" ); |
144 | mConfig->writeEntry( "ResourceKeys", activeKeys ); | 144 | mConfig->writeEntry( "ResourceKeys", activeKeys ); |
145 | mConfig->writeEntry( "PassiveResourceKeys", passiveKeys ); | 145 | mConfig->writeEntry( "PassiveResourceKeys", passiveKeys ); |
146 | if ( mStandard ) | 146 | if ( mStandard ) |
147 | mConfig->writeEntry( "Standard", mStandard->identifier() ); | 147 | mConfig->writeEntry( "Standard", mStandard->identifier() ); |
148 | else | 148 | else |
149 | mConfig->writeEntry( "Standard", "" ); | 149 | mConfig->writeEntry( "Standard", "" ); |
150 | 150 | ||
151 | mConfig->sync(); | 151 | mConfig->sync(); |
152 | kdDebug(5650) << "ManagerImpl::save() finished" << endl; | 152 | kdDebug(5650) << "ManagerImpl::save() finished" << endl; |
153 | 153 | ||
154 | //US qDebug("ManagerImpl::writeConfig end this= %ul cfg=%ul", this, cfg); | 154 | //US qDebug("ManagerImpl::writeConfig end this= %ul cfg=%ul", this, cfg); |
155 | 155 | ||
156 | } | 156 | } |
157 | 157 | ||
158 | void ManagerImpl::add( Resource *resource, bool useDCOP ) | 158 | void ManagerImpl::add( Resource *resource, bool useDCOP ) |
159 | { | 159 | { |
160 | qDebug("ManagerImpl::add begin this= %ul resource=%ul", this, resource); | 160 | //qDebug("ManagerImpl::add begin this= %ul resource=%ul", this, resource); |
161 | 161 | ||
162 | resource->setActive( true ); | 162 | resource->setActive( true ); |
163 | 163 | ||
164 | if ( mResources.isEmpty() ) { | 164 | if ( mResources.isEmpty() ) { |
165 | mStandard = resource; | 165 | mStandard = resource; |
166 | } | 166 | } |
167 | 167 | ||
168 | mResources.append( resource ); | 168 | mResources.append( resource ); |
169 | 169 | ||
170 | writeResourceConfig( resource, true ); | 170 | writeResourceConfig( resource, true ); |
171 | 171 | ||
172 | qDebug("ManagerImpl::add end this= %ul resource=%ul", this, resource); | 172 | //qDebug("ManagerImpl::add end this= %ul resource=%ul", this, resource); |
173 | 173 | ||
174 | } | 174 | } |
175 | 175 | ||
176 | void ManagerImpl::remove( Resource *resource, bool useDCOP ) | 176 | void ManagerImpl::remove( Resource *resource, bool useDCOP ) |
177 | { | 177 | { |
178 | if ( mStandard == resource ) mStandard = 0; | 178 | if ( mStandard == resource ) mStandard = 0; |
179 | removeResource( resource ); | 179 | removeResource( resource ); |
180 | 180 | ||
181 | mResources.remove( resource ); | 181 | mResources.remove( resource ); |
182 | 182 | ||
183 | delete resource; | 183 | delete resource; |
184 | 184 | ||
185 | kdDebug(5650) << "Finished ManagerImpl::remove()" << endl; | 185 | kdDebug(5650) << "Finished ManagerImpl::remove()" << endl; |
186 | } | 186 | } |
187 | 187 | ||
188 | void ManagerImpl::setActive( Resource *resource, bool active ) | 188 | void ManagerImpl::setActive( Resource *resource, bool active ) |
189 | { | 189 | { |
190 | if ( resource && resource->isActive() != active ) { | 190 | if ( resource && resource->isActive() != active ) { |
191 | resource->setActive( active ); | 191 | resource->setActive( active ); |
192 | } | 192 | } |
193 | } | 193 | } |
194 | 194 | ||
195 | Resource *ManagerImpl::standardResource() | 195 | Resource *ManagerImpl::standardResource() |
196 | { | 196 | { |
197 | return mStandard; | 197 | return mStandard; |
198 | } | 198 | } |
199 | 199 | ||
200 | void ManagerImpl::setStandardResource( Resource *resource ) | 200 | void ManagerImpl::setStandardResource( Resource *resource ) |
201 | { | 201 | { |
202 | mStandard = resource; | 202 | mStandard = resource; |
203 | } | 203 | } |
204 | 204 | ||
205 | void ManagerImpl::resourceChanged( Resource *resource ) | 205 | void ManagerImpl::resourceChanged( Resource *resource ) |
206 | { | 206 | { |
207 | writeResourceConfig( resource, true ); | 207 | writeResourceConfig( resource, true ); |
208 | 208 | ||
209 | 209 | ||
210 | // ManagerIface_stub allManagers( "*", "ManagerIface_" + mFamily.utf8() ); | 210 | // ManagerIface_stub allManagers( "*", "ManagerIface_" + mFamily.utf8() ); |
211 | // allManagers.dcopResourceModified( resource->identifier() ); | 211 | // allManagers.dcopResourceModified( resource->identifier() ); |
212 | } | 212 | } |
213 | 213 | ||
214 | // DCOP asynchronous functions | 214 | // DCOP asynchronous functions |
215 | //US since we work from inside the application, we call the methods directly. | 215 | //US since we work from inside the application, we call the methods directly. |
216 | 216 | ||
217 | QStringList ManagerImpl::resourceNames() | 217 | QStringList ManagerImpl::resourceNames() |
218 | { | 218 | { |
219 | QStringList result; | 219 | QStringList result; |
220 | 220 | ||
221 | Resource::List::ConstIterator it; | 221 | Resource::List::ConstIterator it; |
222 | for ( it = mResources.begin(); it != mResources.end(); ++it ) { | 222 | for ( it = mResources.begin(); it != mResources.end(); ++it ) { |
223 | result.append( (*it)->resourceName() ); | 223 | result.append( (*it)->resourceName() ); |
224 | } | 224 | } |
225 | return result; | 225 | return result; |
226 | } | 226 | } |
227 | 227 | ||
228 | Resource::List *ManagerImpl::resourceList() | 228 | Resource::List *ManagerImpl::resourceList() |
229 | { | 229 | { |
230 | return &mResources; | 230 | return &mResources; |
231 | } | 231 | } |
232 | 232 | ||
233 | QPtrList<Resource> ManagerImpl::resources() | 233 | QPtrList<Resource> ManagerImpl::resources() |
234 | { | 234 | { |
235 | QPtrList<Resource> result; | 235 | QPtrList<Resource> result; |
236 | 236 | ||