Save and restore dialog sizes from a config file

wilder
Daniel Vrátil 8 years ago
parent 3ac383a4e7
commit bb9ddb3dc8
  1. 24
      agents/unifiedmailboxagent/settingsdialog.cpp
  2. 1
      agents/unifiedmailboxagent/settingsdialog.h
  3. 3
      agents/unifiedmailboxagent/unifiedmailbox.h
  4. 25
      agents/unifiedmailboxagent/unifiedmailboxeditor.cpp
  5. 6
      agents/unifiedmailboxagent/unifiedmailboxeditor.h
  6. 2
      agents/unifiedmailboxagent/unifiedmailboxmanager.cpp

@ -33,16 +33,22 @@
#include <KLocalizedString>
#include <KMessageBox>
#include <KConfigGroup>
#include <memory>
namespace {
static constexpr const char *DialogGroup = "__Dialog";
}
SettingsDialog::SettingsDialog(KSharedConfigPtr config, UnifiedMailboxManager &boxManager, WId, QWidget *parent)
: QDialog(parent)
, mBoxManager(boxManager)
, mKernel(new MailKernel(config, this))
, mConfig(config)
{
resize(500, 500);
auto l = new QVBoxLayout;
setLayout(l);
@ -61,7 +67,7 @@ SettingsDialog::SettingsDialog(KSharedConfigPtr config, UnifiedMailboxManager &b
connect(addButton, &QPushButton::clicked,
this, [this]() {
auto mailbox = std::make_unique<UnifiedMailbox>();
auto editor = new UnifiedMailboxEditor(mailbox.get(), this);
auto editor = new UnifiedMailboxEditor(mailbox.get(), mConfig, this);
if (editor->exec()) {
mailbox->setId(mailbox->name()); // assign ID
addBox(mailbox.get());
@ -77,7 +83,7 @@ SettingsDialog::SettingsDialog(KSharedConfigPtr config, UnifiedMailboxManager &b
if (!indexes.isEmpty()) {
auto item = mBoxModel->itemFromIndex(indexes[0]);
auto mailbox = item->data().value<UnifiedMailbox*>();
auto editor = new UnifiedMailboxEditor(mailbox, this);
auto editor = new UnifiedMailboxEditor(mailbox, mConfig, this);
if (editor->exec()) {
item->setText(mailbox->name());
item->setIcon(QIcon::fromTheme(mailbox->icon()));
@ -117,10 +123,20 @@ SettingsDialog::SettingsDialog(KSharedConfigPtr config, UnifiedMailboxManager &b
l->addWidget(box);
loadBoxes();
const auto dlgGroup = config->group(DialogGroup);
if (dlgGroup.hasKey("geometry")) {
restoreGeometry(dlgGroup.readEntry("geometry", QByteArray()));
} else {
resize(500, 500);
}
}
SettingsDialog::~SettingsDialog()
{
auto dlgGroup = mConfig->group(DialogGroup);
dlgGroup.writeEntry("geometry", saveGeometry());
}
void SettingsDialog::accept()

@ -48,6 +48,7 @@ private:
QStandardItemModel *mBoxModel = nullptr;
UnifiedMailboxManager &mBoxManager;
MailKernel *mKernel = nullptr;
KSharedConfigPtr mConfig;
};

@ -29,7 +29,8 @@
class KConfigGroup;
class UnifiedMailboxManager;
class UnifiedMailbox {
class UnifiedMailbox
{
friend class UnifiedMailboxManager;
public:
UnifiedMailbox() = default;

@ -32,12 +32,15 @@
#include <KIconDialog>
#include <KLocalizedString>
#include <KCheckableProxyModel>
#include <KConfigGroup>
#include <MailCommon/FolderTreeView>
#include <MailCommon/FolderTreeWidget>
namespace {
static constexpr const char *EditorGroup = "__Editor";
class SelfFilterProxyModel : public QSortFilterProxyModel
{
Q_OBJECT
@ -81,17 +84,16 @@ public:
}
UnifiedMailboxEditor::UnifiedMailboxEditor(QWidget* parent)
: UnifiedMailboxEditor({}, parent)
UnifiedMailboxEditor::UnifiedMailboxEditor(KSharedConfigPtr config, QWidget* parent)
: UnifiedMailboxEditor({}, config, parent)
{
}
UnifiedMailboxEditor::UnifiedMailboxEditor(UnifiedMailbox *mailbox, QWidget *parent)
UnifiedMailboxEditor::UnifiedMailboxEditor(UnifiedMailbox *mailbox, KSharedConfigPtr config, QWidget *parent)
: QDialog(parent)
, mMailbox(mailbox)
, mConfig(config)
{
resize(500, 900);
auto l = new QVBoxLayout;
setLayout(l);
@ -163,6 +165,19 @@ UnifiedMailboxEditor::UnifiedMailboxEditor(UnifiedMailbox *mailbox, QWidget *par
});
box->button(QDialogButtonBox::Ok)->setEnabled(!nameEdit->text().isEmpty());
l->addWidget(box);
const auto editorGroup = config->group(EditorGroup);
if (editorGroup.hasKey("geometry")) {
restoreGeometry(editorGroup.readEntry("geometry", QByteArray()));
} else {
resize(500, 900);
}
}
UnifiedMailboxEditor::~UnifiedMailboxEditor()
{
auto editorGrp = mConfig->group(EditorGroup);
editorGrp.writeEntry("geometry", saveGeometry());
}

@ -26,9 +26,11 @@ class UnifiedMailboxEditor : public QDialog
{
Q_OBJECT
public:
explicit UnifiedMailboxEditor(QWidget *parent = nullptr);
explicit UnifiedMailboxEditor(UnifiedMailbox *mailbox, QWidget *parent = nullptr);
explicit UnifiedMailboxEditor(KSharedConfigPtr config, QWidget *parent = nullptr);
explicit UnifiedMailboxEditor(UnifiedMailbox *mailbox, KSharedConfigPtr config, QWidget *parent = nullptr);
~UnifiedMailboxEditor() override;
private:
UnifiedMailbox *mMailbox = nullptr;
KSharedConfigPtr mConfig;
};

@ -285,7 +285,7 @@ UnifiedMailbox *UnifiedMailboxManager::unifiedMailboxForSource(qint64 source) co
return box->second;
}
UnifiedMailbox * UnifiedMailboxManager::unifiedMailboxFromCollection(const Akonadi::Collection &col) const
UnifiedMailbox *UnifiedMailboxManager::unifiedMailboxFromCollection(const Akonadi::Collection &col) const
{
if (!isUnifiedMailbox(col)) {
return nullptr;

Loading…
Cancel
Save