Files
keepassxc/src/gui/csvImport/CsvImportWidget.ui
Jonathan White f947c96462 Improve CSV export and import capability
* Fixes #3541
* CSV export now includes TOTP settings, Entry Icon (database icon number only), Modified Time, and Created Time.
* CSV import properly understands time in ISO 8601 format and Unix Timestamp.
* CSV import will set the TOTP settings and entry icon based on the chosen column.
2020-09-01 07:57:31 -04:00

765 lines
25 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CsvImportWidget</class>
<widget class="QWidget" name="CsvImportWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>788</width>
<height>530</height>
</rect>
</property>
<property name="windowTitle">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="MessageWidget" name="messageWidget" native="true"/>
</item>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>753</width>
<height>615</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="labelHeadline">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Import CSV fields</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labelFilename">
<property name="text">
<string>filename</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="labelSizeRowsCols">
<property name="text">
<string>size, rows, columns</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QGroupBox" name="groupBoxColumnAssociations">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Column Association</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QGridLayout" name="gridLayout_combos">
<item row="3" column="1">
<widget class="QComboBox" name="passwordCombo"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="passwordLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Password</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="usernameLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Username</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="usernameCombo"/>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="titleCombo"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="titleLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Title</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="groupCombo"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="groupLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Group</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="urlLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>URL</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="urlCombo"/>
</item>
<item row="0" column="2">
<widget class="QLabel" name="notesLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Notes</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="notesCombo"/>
</item>
<item row="1" column="2">
<widget class="QLabel" name="totpLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>TOTP</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QComboBox" name="totpCombo"/>
</item>
<item row="4" column="3">
<widget class="QComboBox" name="createdCombo"/>
</item>
<item row="4" column="2">
<widget class="QLabel" name="createdLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Created</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="lastModifiedLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Last Modified</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QComboBox" name="lastModifiedCombo"/>
</item>
<item row="2" column="2">
<widget class="QLabel" name="iconLabel">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Icon</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="indent">
<number>2</number>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QComboBox" name="iconCombo"/>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="Encoding">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Encoding</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="labelCodec">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Codec</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBoxCodec">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="accessibleName">
<string>Codec</string>
</property>
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string notr="true">UTF-8</string>
</property>
<item>
<property name="text">
<string notr="true">UTF-8</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Windows-1252</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">UTF-16</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">UTF-16LE</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelTextQualifier">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Text is qualified by</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBoxTextQualifier">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="accessibleName">
<string>Text qualification</string>
</property>
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string notr="true">&quot;</string>
</property>
<item>
<property name="text">
<string notr="true">&quot;</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">'</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">:</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">.</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">|</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelFieldSeparator">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Fields are separated by</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBoxFieldSeparator">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="accessibleName">
<string>Field separation</string>
</property>
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string notr="true">,</string>
</property>
<item>
<property name="text">
<string notr="true">,</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">;</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">-</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">:</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">.</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">TAB (\t)</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelComments">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Comments start with</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="comboBoxComment">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="accessibleName">
<string>Comments start with</string>
</property>
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string notr="true">#</string>
</property>
<item>
<property name="text">
<string notr="true">#</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">;</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">:</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">@</string>
</property>
</item>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelSkipRows">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Header lines skipped</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSpinBox" name="spinBoxSkip">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="accessibleName">
<string>Number of header lines to discard</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>122</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="checkBoxFieldNames">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>First line has field names</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="checkBoxBackslash">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Consider '\' an escape character</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBoxPreview">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Preview</string>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableView" name="tableViewFields">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>300</height>
</size>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="accessibleName">
<string>CSV import preview</string>
</property>
<property name="cornerButtonEnabled">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderVisible">
<bool>true</bool>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
<property name="centerButtons">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>MessageWidget</class>
<extends>QWidget</extends>
<header>gui/MessageWidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>scrollArea</tabstop>
<tabstop>groupCombo</tabstop>
<tabstop>titleCombo</tabstop>
<tabstop>usernameCombo</tabstop>
<tabstop>passwordCombo</tabstop>
<tabstop>comboBoxCodec</tabstop>
<tabstop>comboBoxTextQualifier</tabstop>
<tabstop>comboBoxFieldSeparator</tabstop>
<tabstop>comboBoxComment</tabstop>
<tabstop>spinBoxSkip</tabstop>
<tabstop>checkBoxFieldNames</tabstop>
<tabstop>checkBoxBackslash</tabstop>
<tabstop>tableViewFields</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>