summaryrefslogtreecommitdiffstats
path: root/kaddressbook/xxport/csvimportdialog.h
blob: 8e9dd0710045260428f6548fbd7387c61568333d (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 <tokoe@kde.org>
                 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 <qvaluelist.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, QWidget *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 QString& line );
    void textquoteSelected( const QString& mark );
    void textChanged ( const QString & );
    void ignoreDuplicatesChanged( int );
    void setFile( const QString& );
    void urlChanged( const QString& );
    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
         };

    QTable* mTable;
    QButtonGroup* mDelimiterBox;
    QRadioButton* mRadioComma;
    QRadioButton* mRadioSemicolon;
    QRadioButton* mRadioTab;
    QRadioButton* mRadioSpace;
    QRadioButton* mRadioOther;
    QLineEdit* mDelimiterEdit;
    QLineEdit* mDatePatternEdit;
    QComboBox* mComboLine;
    QComboBox* mComboQuote;
    QCheckBox* mIgnoreDuplicates;
    QComboBox* mCodecCombo;
    QWidget* mPage;
    KURLRequester* mUrlRequester;

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

    void reloadCodecs();
    QTextCodec *currentCodec();
    QPtrList<QTextCodec> mCodecs;

    bool mAdjustRows;
    int mStartLine;
    QChar mTextQuote;
    QString mDelimiter;
    QByteArray mFileArray;
    QMap<QString, uint> mTypeMap;
    KABC::AddressBook *mAddressBook;
    int mCustomCounter;
    bool mClearTypeStore;
    QValueList<int> mTypeStore;
};

#endif