Rework the Entry Preview panel (#3306)

* Add notes to General tab
* Combine Attributes and Attachments tabs into Advanced
* Remove extra viewTotpWidget
* Shrink minimum size of preview panel
This commit is contained in:
Balazs Gyurak 2019-06-23 15:02:02 +01:00 committed by Jonathan White
parent 5492b5c4f6
commit 6dcd00b609
4 changed files with 1158 additions and 959 deletions

View File

@ -2,6 +2,7 @@
========================= =========================
- Group sorting feature [#3282] - Group sorting feature [#3282]
- CLI: Add 'flatten' option to the 'ls' command [#3276] - CLI: Add 'flatten' option to the 'ls' command [#3276]
- Rework the Entry Preview panel [#3306]
2.4.3 (2019-06-12) 2.4.3 (2019-06-12)
========================= =========================

View File

@ -50,15 +50,17 @@ EntryPreviewWidget::EntryPreviewWidget(QWidget* parent)
m_ui->entryTotpButton->setIcon(filePath()->icon("actions", "chronometer")); m_ui->entryTotpButton->setIcon(filePath()->icon("actions", "chronometer"));
m_ui->entryCloseButton->setIcon(filePath()->icon("actions", "dialog-close")); m_ui->entryCloseButton->setIcon(filePath()->icon("actions", "dialog-close"));
m_ui->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show")); m_ui->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show"));
m_ui->toggleNotesButton->setIcon(filePath()->onOffIcon("actions", "password-show"));
m_ui->entryAttachmentsWidget->setReadOnly(true); m_ui->entryAttachmentsWidget->setReadOnly(true);
m_ui->entryAttachmentsWidget->setButtonsVisible(false); m_ui->entryAttachmentsWidget->setButtonsVisible(false);
connect(m_ui->entryUrlLabel, SIGNAL(linkActivated(QString)), SLOT(openEntryUrl())); connect(m_ui->entryUrlLabel, SIGNAL(linkActivated(QString)), SLOT(openEntryUrl()));
connect(m_ui->entryTotpButton, SIGNAL(toggled(bool)), m_ui->entryTotpWidget, SLOT(setVisible(bool))); connect(m_ui->entryTotpButton, SIGNAL(toggled(bool)), m_ui->entryTotpLabel, SLOT(setVisible(bool)));
connect(m_ui->entryCloseButton, SIGNAL(clicked()), SLOT(hide())); connect(m_ui->entryCloseButton, SIGNAL(clicked()), SLOT(hide()));
connect(m_ui->togglePasswordButton, SIGNAL(clicked(bool)), SLOT(setPasswordVisible(bool))); connect(m_ui->togglePasswordButton, SIGNAL(clicked(bool)), SLOT(setPasswordVisible(bool)));
connect(m_ui->toggleNotesButton, SIGNAL(clicked(bool)), SLOT(setNotesVisible(bool)));
connect(m_ui->entryTabWidget, SIGNAL(tabBarClicked(int)), SLOT(updateTabIndexes()), Qt::QueuedConnection); connect(m_ui->entryTabWidget, SIGNAL(tabBarClicked(int)), SLOT(updateTabIndexes()), Qt::QueuedConnection);
connect(&m_totpTimer, SIGNAL(timeout()), SLOT(updateTotpLabel())); connect(&m_totpTimer, SIGNAL(timeout()), SLOT(updateTotpLabel()));
@ -84,9 +86,7 @@ void EntryPreviewWidget::setEntry(Entry* selectedEntry)
updateEntryHeaderLine(); updateEntryHeaderLine();
updateEntryTotp(); updateEntryTotp();
updateEntryGeneralTab(); updateEntryGeneralTab();
updateEntryNotesTab(); updateEntryAdvancedTab();
updateEntryAttributesTab();
updateEntryAttachmentsTab();
updateEntryAutotypeTab(); updateEntryAutotypeTab();
setVisible(!config()->get("GUI/HidePreviewPanel").toBool()); setVisible(!config()->get("GUI/HidePreviewPanel").toBool());
@ -150,7 +150,7 @@ void EntryPreviewWidget::updateEntryTotp()
Q_ASSERT(m_currentEntry); Q_ASSERT(m_currentEntry);
const bool hasTotp = m_currentEntry->hasTotp(); const bool hasTotp = m_currentEntry->hasTotp();
m_ui->entryTotpButton->setVisible(hasTotp); m_ui->entryTotpButton->setVisible(hasTotp);
m_ui->entryTotpWidget->hide(); m_ui->entryTotpLabel->hide();
m_ui->entryTotpButton->setChecked(false); m_ui->entryTotpButton->setChecked(false);
if (hasTotp) { if (hasTotp) {
@ -181,6 +181,26 @@ void EntryPreviewWidget::setPasswordVisible(bool state)
} }
} }
void EntryPreviewWidget::setNotesVisible(bool state)
{
const QString notes = m_currentEntry->notes();
auto flags = m_ui->entryNotesLabel->textInteractionFlags();
if (state) {
m_ui->entryNotesLabel->setText(notes);
m_ui->entryNotesLabel->setToolTip(notes);
m_ui->entryNotesLabel->setTextInteractionFlags(flags | Qt::TextSelectableByMouse);
} else {
if (notes.isEmpty()) {
m_ui->entryNotesLabel->setText("");
} else {
m_ui->entryNotesLabel->setText(QString("\u25cf").repeated(6));
}
m_ui->entryNotesLabel->setToolTip({});
m_ui->entryNotesLabel->setTextInteractionFlags(flags & ~Qt::TextSelectableByMouse);
}
}
void EntryPreviewWidget::updateEntryGeneralTab() void EntryPreviewWidget::updateEntryGeneralTab()
{ {
Q_ASSERT(m_currentEntry); Q_ASSERT(m_currentEntry);
@ -198,6 +218,15 @@ void EntryPreviewWidget::updateEntryGeneralTab()
m_ui->togglePasswordButton->setVisible(false); m_ui->togglePasswordButton->setVisible(false);
} }
if (config()->get("security/hidenotes").toBool()) {
setNotesVisible(false);
m_ui->toggleNotesButton->setVisible(!m_ui->entryNotesLabel->text().isEmpty());
m_ui->toggleNotesButton->setChecked(false);
} else {
setNotesVisible(true);
m_ui->toggleNotesButton->setVisible(false);
}
m_ui->entryUrlLabel->setRawText(m_currentEntry->displayUrl()); m_ui->entryUrlLabel->setRawText(m_currentEntry->displayUrl());
const QString url = m_currentEntry->url(); const QString url = m_currentEntry->url();
if (!url.isEmpty()) { if (!url.isEmpty()) {
@ -216,23 +245,17 @@ void EntryPreviewWidget::updateEntryGeneralTab()
m_ui->entryExpirationLabel->setText(expires); m_ui->entryExpirationLabel->setText(expires);
} }
void EntryPreviewWidget::updateEntryNotesTab() void EntryPreviewWidget::updateEntryAdvancedTab()
{
Q_ASSERT(m_currentEntry);
const QString notes = m_currentEntry->notes();
setTabEnabled(m_ui->entryTabWidget, m_ui->entryNotesTab, !notes.isEmpty());
m_ui->entryNotesEdit->setText(notes);
}
void EntryPreviewWidget::updateEntryAttributesTab()
{ {
Q_ASSERT(m_currentEntry); Q_ASSERT(m_currentEntry);
m_ui->entryAttributesEdit->clear(); m_ui->entryAttributesEdit->clear();
const EntryAttributes* attributes = m_currentEntry->attributes(); const EntryAttributes* attributes = m_currentEntry->attributes();
const QStringList customAttributes = attributes->customKeys(); const QStringList customAttributes = attributes->customKeys();
const bool haveAttributes = !customAttributes.isEmpty(); const bool hasAttributes = !customAttributes.isEmpty();
setTabEnabled(m_ui->entryTabWidget, m_ui->entryAttributesTab, haveAttributes); const bool hasAttachments = !m_currentEntry->attachments()->isEmpty();
if (haveAttributes) {
setTabEnabled(m_ui->entryTabWidget, m_ui->entryAdvancedTab, hasAttributes || hasAttachments);
if (hasAttributes) {
QString attributesText; QString attributesText;
for (const QString& key : customAttributes) { for (const QString& key : customAttributes) {
QString value = m_currentEntry->attributes()->value(key); QString value = m_currentEntry->attributes()->value(key);
@ -243,13 +266,7 @@ void EntryPreviewWidget::updateEntryAttributesTab()
} }
m_ui->entryAttributesEdit->setText(attributesText); m_ui->entryAttributesEdit->setText(attributesText);
} }
}
void EntryPreviewWidget::updateEntryAttachmentsTab()
{
Q_ASSERT(m_currentEntry);
const bool hasAttachments = !m_currentEntry->attachments()->isEmpty();
setTabEnabled(m_ui->entryTabWidget, m_ui->entryAttachmentsTab, hasAttachments);
m_ui->entryAttachmentsWidget->setEntryAttachments(m_currentEntry->attachments()); m_ui->entryAttachmentsWidget->setEntryAttachments(m_currentEntry->attachments());
} }
@ -354,9 +371,9 @@ QPixmap EntryPreviewWidget::preparePixmap(const QPixmap& pixmap, int size)
QString EntryPreviewWidget::hierarchy(const Group* group, const QString& title) QString EntryPreviewWidget::hierarchy(const Group* group, const QString& title)
{ {
const QString separator(" / "); const QString separator("] > [");
QStringList hierarchy = group->hierarchy(); QStringList hierarchy = group->hierarchy();
hierarchy.removeFirst(); QString groupList = QString("[%1]").arg(hierarchy.join(separator));
hierarchy.append(title);
return QString("%1%2").arg(separator, hierarchy.join(separator)); return title.isEmpty() ? groupList : QString("%1 > %2").arg(groupList, title);
} }

View File

@ -49,11 +49,10 @@ private slots:
void updateEntryHeaderLine(); void updateEntryHeaderLine();
void updateEntryTotp(); void updateEntryTotp();
void updateEntryGeneralTab(); void updateEntryGeneralTab();
void updateEntryNotesTab(); void updateEntryAdvancedTab();
void updateEntryAttributesTab();
void updateEntryAttachmentsTab();
void updateEntryAutotypeTab(); void updateEntryAutotypeTab();
void setPasswordVisible(bool state); void setPasswordVisible(bool state);
void setNotesVisible(bool state);
void updateGroupHeaderLine(); void updateGroupHeaderLine();
void updateGroupGeneralTab(); void updateGroupGeneralTab();

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>573</width> <width>566</width>
<height>330</height> <height>169</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_7"> <layout class="QVBoxLayout" name="verticalLayout_7">
@ -46,7 +46,7 @@
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
<layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,0,0,0,0,0"> <layout class="QHBoxLayout" name="entryHorizontalLayout" stretch="0,1,0,0,0">
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum> <enum>QLayout::SetDefaultConstraint</enum>
</property> </property>
@ -61,6 +61,12 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>16</width>
<height>0</height>
</size>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@ -85,31 +91,6 @@
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="entryHorizontalSpacer">
<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="QWidget" name="entryTotpWidget" native="true">
<layout class="QGridLayout" name="gridLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="entryTotpLabel"> <widget class="QLabel" name="entryTotpLabel">
<property name="font"> <property name="font">
<font> <font>
@ -119,20 +100,17 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string/> <string>1234567</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QToolButton" name="entryTotpButton"> <widget class="QToolButton" name="entryTotpButton">
<property name="focusPolicy"> <property name="focusPolicy">
<enum>Qt::ClickFocus</enum> <enum>Qt::TabFocus</enum>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Generate TOTP Token</string> <string>Display current TOTP value</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
@ -145,7 +123,7 @@
<item> <item>
<widget class="QToolButton" name="entryCloseButton"> <widget class="QToolButton" name="entryCloseButton">
<property name="focusPolicy"> <property name="focusPolicy">
<enum>Qt::ClickFocus</enum> <enum>Qt::TabFocus</enum>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Close</string> <string>Close</string>
@ -181,7 +159,7 @@
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
<item> <item>
<widget class="QWidget" name="entryGeneralWidget" native="true"> <widget class="QWidget" name="entryGeneralWidget" native="true">
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0" columnstretch="0,0,0,0,0,0"> <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0" columnstretch="0,0,0,2,0,0,3">
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
@ -235,7 +213,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="4"> <item row="0" column="3">
<widget class="QLabel" name="entryUsernameLabel"> <widget class="QLabel" name="entryUsernameLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@ -257,6 +235,88 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="4">
<spacer name="entryMiddleHorizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="5">
<widget class="QLabel" name="entryUrlTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>URL</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="ElidedLabel" name="entryUrlLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="text">
<string notr="true">https://example.com</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
</property>
</widget>
</item>
<item row="1" column="0">
<spacer name="entryLeftHorizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>30</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLabel" name="entryPasswordTitleLabel"> <widget class="QLabel" name="entryPasswordTitleLabel">
<property name="sizePolicy"> <property name="sizePolicy">
@ -279,102 +339,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="1" column="2" colspan="2">
<widget class="QLabel" name="entryExpirationTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Expiration</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="4">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="4">
<widget class="ElidedLabel" name="entryUrlLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string notr="true">https://example.com</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QLabel" name="entryExpirationLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">expired</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="entryUrlTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>URL</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="3" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,0"> <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,0">
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
@ -413,8 +378,8 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0"> <item row="1" column="4">
<spacer name="entryLeftHorizontalSpacer_2"> <spacer name="entryMiddleHorizontalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
@ -423,14 +388,49 @@
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>10</width>
<height>20</height> <height>20</height>
</size> </size>
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="1" column="5">
<widget class="QLabel" name="entryExpirationTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Expiration</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="6">
<widget class="QLabel" name="entryExpirationLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">expired</string>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<spacer name="entryLeftHorizontalSpacer_3"> <spacer name="entryLeftHorizontalSpacer_5">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
@ -445,33 +445,198 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="3" column="0"> <item row="2" column="1">
<spacer name="entryLeftHorizontalSpacer_4"> <widget class="QLabel" name="entryNotesTitleLabel">
<property name="orientation"> <property name="sizePolicy">
<enum>Qt::Horizontal</enum> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="sizeType"> <property name="font">
<enum>QSizePolicy::Fixed</enum> <font>
<weight>75</weight>
<bold>true</bold>
</font>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="text">
<size> <string>Notes</string>
<width>20</width> </property>
<height>20</height> <property name="alignment">
</size> <set>Qt::AlignRight</set>
</property> </property>
</spacer>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> <item row="2" column="2" colspan="5">
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>4</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QToolButton" name="toggleNotesButton">
<property name="text">
<string/>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget> </widget>
<widget class="QWidget" name="entryAttributesTab"> </item>
<attribute name="title">
<string>Attributes</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QLabel" name="entryNotesLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="text">
<string notr="true">notes</string>
</property>
<property name="alignment">
<set>Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="entryAdvancedTab">
<attribute name="title">
<string>Advanced</string>
</attribute>
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0" columnstretch="0,1,0,2,0">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item row="0" column="0">
<spacer name="entryAdvancedLeftHorizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QLabel" name="attributesTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Attributes</string>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="entryAdvancedMiddleHorizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="3">
<widget class="QLabel" name="attachmentsTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Attachments</string>
</property>
</widget>
</item>
<item row="0" column="4">
<spacer name="entryAdvancedRightHorizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<spacer name="entryAdvancedLeftHorizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QTextEdit" name="entryAttributesEdit"> <widget class="QTextEdit" name="entryAttributesEdit">
<property name="focusPolicy"> <property name="focusPolicy">
<enum>Qt::ClickFocus</enum> <enum>Qt::ClickFocus</enum>
@ -481,33 +646,45 @@
</property> </property>
</widget> </widget>
</item> </item>
</layout> <item row="1" column="2">
</widget> <spacer name="entryAdvancedMiddleHorizontalSpacer_2">
<widget class="QWidget" name="entryAttachmentsTab"> <property name="orientation">
<attribute name="title"> <enum>Qt::Horizontal</enum>
<string>Attachments</string> </property>
</attribute> <property name="sizeType">
<layout class="QVBoxLayout" name="verticalLayout_6"> <enum>QSizePolicy::Fixed</enum>
<item> </property>
<widget class="EntryAttachmentsWidget" name="entryAttachmentsWidget" native="true"/> <property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
</layout> <item row="1" column="3">
</widget> <widget class="EntryAttachmentsWidget" name="entryAttachmentsWidget" native="true">
<widget class="QWidget" name="entryNotesTab">
<attribute name="title">
<string>Notes</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTextEdit" name="entryNotesEdit">
<property name="focusPolicy"> <property name="focusPolicy">
<enum>Qt::ClickFocus</enum> <enum>Qt::ClickFocus</enum>
</property> </property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item row="1" column="4">
<spacer name="entryAdvancedRightHorizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="entryAutotypeTab"> <widget class="QWidget" name="entryAutotypeTab">
@ -517,6 +694,9 @@
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="verticalLayout_4">
<item> <item>
<widget class="QTreeWidget" name="entryAutotypeTree"> <widget class="QTreeWidget" name="entryAutotypeTree">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="frameShadow"> <property name="frameShadow">
<enum>QFrame::Sunken</enum> <enum>QFrame::Sunken</enum>
</property> </property>
@ -535,12 +715,12 @@
<attribute name="headerCascadingSectionResizes"> <attribute name="headerCascadingSectionResizes">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<attribute name="headerDefaultSectionSize">
<number>250</number>
</attribute>
<attribute name="headerMinimumSectionSize"> <attribute name="headerMinimumSectionSize">
<number>50</number> <number>50</number>
</attribute> </attribute>
<attribute name="headerDefaultSectionSize">
<number>250</number>
</attribute>
<attribute name="headerStretchLastSection"> <attribute name="headerStretchLastSection">
<bool>true</bool> <bool>true</bool>
</attribute> </attribute>
@ -923,9 +1103,11 @@
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>entryCloseButton</tabstop>
<tabstop>entryTotpButton</tabstop> <tabstop>entryTotpButton</tabstop>
<tabstop>togglePasswordButton</tabstop>
<tabstop>toggleNotesButton</tabstop>
<tabstop>entryAutotypeTree</tabstop> <tabstop>entryAutotypeTree</tabstop>
<tabstop>entryTabWidget</tabstop>
<tabstop>groupCloseButton</tabstop> <tabstop>groupCloseButton</tabstop>
<tabstop>groupTabWidget</tabstop> <tabstop>groupTabWidget</tabstop>
</tabstops> </tabstops>