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

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

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

@ -32,12 +32,15 @@
#include <KIconDialog> #include <KIconDialog>
#include <KLocalizedString> #include <KLocalizedString>
#include <KCheckableProxyModel> #include <KCheckableProxyModel>
#include <KConfigGroup>
#include <MailCommon/FolderTreeView> #include <MailCommon/FolderTreeView>
#include <MailCommon/FolderTreeWidget> #include <MailCommon/FolderTreeWidget>
namespace { namespace {
static constexpr const char *EditorGroup = "__Editor";
class SelfFilterProxyModel : public QSortFilterProxyModel class SelfFilterProxyModel : public QSortFilterProxyModel
{ {
Q_OBJECT Q_OBJECT
@ -81,17 +84,16 @@ public:
} }
UnifiedMailboxEditor::UnifiedMailboxEditor(QWidget* parent) UnifiedMailboxEditor::UnifiedMailboxEditor(KSharedConfigPtr config, QWidget* parent)
: UnifiedMailboxEditor({}, parent) : UnifiedMailboxEditor({}, config, parent)
{ {
} }
UnifiedMailboxEditor::UnifiedMailboxEditor(UnifiedMailbox *mailbox, QWidget *parent) UnifiedMailboxEditor::UnifiedMailboxEditor(UnifiedMailbox *mailbox, KSharedConfigPtr config, QWidget *parent)
: QDialog(parent) : QDialog(parent)
, mMailbox(mailbox) , mMailbox(mailbox)
, mConfig(config)
{ {
resize(500, 900);
auto l = new QVBoxLayout; auto l = new QVBoxLayout;
setLayout(l); setLayout(l);
@ -163,6 +165,19 @@ UnifiedMailboxEditor::UnifiedMailboxEditor(UnifiedMailbox *mailbox, QWidget *par
}); });
box->button(QDialogButtonBox::Ok)->setEnabled(!nameEdit->text().isEmpty()); box->button(QDialogButtonBox::Ok)->setEnabled(!nameEdit->text().isEmpty());
l->addWidget(box); 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 Q_OBJECT
public: public:
explicit UnifiedMailboxEditor(QWidget *parent = nullptr); explicit UnifiedMailboxEditor(KSharedConfigPtr config, QWidget *parent = nullptr);
explicit UnifiedMailboxEditor(UnifiedMailbox *mailbox, QWidget *parent = nullptr); explicit UnifiedMailboxEditor(UnifiedMailbox *mailbox, KSharedConfigPtr config, QWidget *parent = nullptr);
~UnifiedMailboxEditor() override;
private: private:
UnifiedMailbox *mMailbox = nullptr; UnifiedMailbox *mMailbox = nullptr;
KSharedConfigPtr mConfig;
}; };

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

Loading…
Cancel
Save