summaryrefslogtreecommitdiffstats
path: root/kaddressbook/xxport/csvimportdialog.h
blob: a34f681e6b38a876d949b25b8c6735dcc24ecf48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
   This file is part of KAddressBook.
   Copyright (C) 2003 Tobias Koenig <[email protected]>
                 based on the code of KSpread's CSV Import Dialog

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.LIB.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
*/

#ifndef CSV_IMPORT_DLG_H
#define CSV_IMPORT_DLG_H

#include <kabc/addressbook.h>
#include <kabc/addresseelist.h>
#include <kdialogbase.h>

#include <tqvaluelist.h>

class KURLRequester;

class QButtonGroup;
class QComboBox;
class QCheckBox;
class QLineEdit;
class QPushButton;
class QRadioButton;
class QTable;

class CSVImportDialog : public KDialogBase
{
  Q_OBJECT

  public:
    CSVImportDialog( KABC::AddressBook *ab, TQWidget *parent,
                     const char *name = 0 );
    ~CSVImportDialog();

    KABC::AddresseeList contacts() const;

  protected slots:
    virtual void slotOk();

  private slots:
    void returnPressed();
    void delimiterClicked( int id );
    void lineSelected( const TQString& line );
    void textquoteSelected( const TQString& mark );
    void textChanged ( const TQString & );
    void ignoreDuplicatesChanged( int );
    void setFile( const TQString& );
    void urlChanged( const TQString& );
    void codecChanged();

    void applyTemplate();
    void saveTemplate();

  private:
    enum { Undefined, FormattedName, FamilyName, GivenName, AdditionalName,
           Prefix, Suffix, NickName, Birthday,
           HomeAddressStreet, HomeAddressLocality, HomeAddressRegion,
           HomeAddressPostalCode, HomeAddressCountry, HomeAddressLabel,
           BusinessAddressStreet, BusinessAddressLocality, BusinessAddressRegion,
           BusinessAddressPostalCode, BusinessAddressCountry,
           BusinessAddressLabel,
           HomePhone, BusinessPhone, MobilePhone, HomeFax, BusinessFax, CarPhone,
           Isdn, Pager, Email, Mailer, Title, Role, Organization, Note, URL
         };

    TQTable* mTable;
    TQButtonGroup* mDelimiterBox;
    TQRadioButton* mRadioComma;
    TQRadioButton* mRadioSemicolon;
    TQRadioButton* mRadioTab;
    TQRadioButton* mRadioSpace;
    TQRadioButton* mRadioOther;
    TQLineEdit* mDelimiterEdit;
    TQLineEdit* mDatePatternEdit;
    TQComboBox* mComboLine;
    TQComboBox* mComboQuote;
    TQCheckBox* mIgnoreDuplicates;
    TQComboBox* mCodecCombo;
    TQWidget* mPage;
    KURLRequester* mUrlRequester;

    void initGUI();
    void fillTable();
    void clearTable();
    void fillComboBox();
    void setText( int row, int col, const TQString& text );
    void adjustRows( int rows );
    void resizeColumns();
    TQString getText( int row, int col );
    uint posToType( int pos ) const;
    int typeToPos( uint type ) const;

    void reloadCodecs();
    TQTextCodec *currentCodec();
    TQPtrList<TQTextCodec> mCodecs;

    bool mAdjustRows;
    int mStartLine;
    TQChar mTextQuote;
    TQString mDelimiter;
    TQByteArray mFileArray;
    TQMap<TQString, uint> mTypeMap;
    KABC::AddressBook *mAddressBook;
    int mCustomCounter;
    bool mClearTypeStore;
    TQValueList<int> mTypeStore;
};

#endif