summaryrefslogtreecommitdiff
path: root/protocols/CloudFile/src/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/CloudFile/src/options.cpp')
-rw-r--r--protocols/CloudFile/src/options.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/protocols/CloudFile/src/options.cpp b/protocols/CloudFile/src/options.cpp
new file mode 100644
index 0000000000..0ac7c120a0
--- /dev/null
+++ b/protocols/CloudFile/src/options.cpp
@@ -0,0 +1,124 @@
+#include "stdafx.h"
+
+COptionsMainDlg::COptionsMainDlg()
+ : CDlgBase(g_plugin, IDD_OPTIONS_MAIN),
+ m_defaultService(this, IDC_DEFAULTSERVICE),
+ m_doNothingOnConflict(this, IDC_DONOTHINGONCONFLICT),
+ m_renameOnConflict(this, IDC_RENAMEONCONFLICT),
+ m_repalceOnConflict(this, IDC_REPLACEONCONFLICT),
+ m_urlAutoSend(this, IDC_URL_AUTOSEND),
+ m_urlPasteToMessageInputArea(this, IDC_URL_COPYTOMIA),
+ m_urlCopyToClipboard(this, IDC_URL_COPYTOCB)
+{
+ CreateLink(m_defaultService, "DefaultService", L"");
+
+ CreateLink(m_urlAutoSend, "UrlAutoSend", DBVT_BYTE, 1);
+ CreateLink(m_urlPasteToMessageInputArea, "UrlPasteToMessageInputArea", DBVT_BYTE, 0);
+ CreateLink(m_urlCopyToClipboard, "UrlCopyToClipboard", DBVT_BYTE, 0);
+}
+
+bool COptionsMainDlg::OnInitDialog()
+{
+ CDlgBase::OnInitDialog();
+
+ ptrA defaultService(g_plugin.getStringA("DefaultService"));
+ int iItem = m_defaultService.AddString(TranslateT("None"));
+ m_defaultService.SetCurSel(iItem);
+
+ for (auto &service : Services) {
+ iItem = m_defaultService.AddString(mir_wstrdup(service->GetUserName()), (LPARAM)service);
+ if (!mir_strcmpi(service->GetAccountName(), defaultService))
+ m_defaultService.SetCurSel(iItem);
+ }
+
+ BYTE strategy = g_plugin.getByte("ConflictStrategy", OnConflict::REPLACE);
+ switch (strategy)
+ {
+ case OnConflict::RENAME:
+ m_renameOnConflict.SetState(TRUE);
+ m_repalceOnConflict.SetState(FALSE);
+ m_doNothingOnConflict.SetState(FALSE);
+ break;
+ case OnConflict::REPLACE:
+ m_renameOnConflict.SetState(FALSE);
+ m_repalceOnConflict.SetState(TRUE);
+ m_doNothingOnConflict.SetState(FALSE);
+ break;
+ default:
+ m_renameOnConflict.SetState(FALSE);
+ m_repalceOnConflict.SetState(FALSE);
+ m_doNothingOnConflict.SetState(TRUE);
+ break;
+ }
+ return true;
+}
+
+bool COptionsMainDlg::OnApply()
+{
+ int iItem = m_defaultService.GetCurSel();
+ CCloudService *service = (CCloudService*)m_defaultService.GetItemData(iItem);
+ if (service)
+ g_plugin.setString("DefaultService", service->GetAccountName());
+ else
+ g_plugin.delSetting("DefaultService");
+
+ if (m_renameOnConflict.GetState())
+ g_plugin.setByte("ConflictStrategy", OnConflict::RENAME);
+ else if (m_repalceOnConflict.GetState())
+ g_plugin.setByte("ConflictStrategy", OnConflict::REPLACE);
+ else
+ g_plugin.delSetting("ConflictStrategy");
+ return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+
+int OnOptionsInitialized(WPARAM wParam, LPARAM)
+{
+ OPTIONSDIALOGPAGE odp = {};
+ odp.szTitle.w = _A2W(MODULENAME);
+ odp.flags = ODPF_BOLDGROUPS | ODPF_UNICODE | ODPF_DONTTRANSLATE;
+ odp.szGroup.w = LPGENW("Services");
+
+ //odp.szTab.w = LPGENW("General");
+ odp.pDialog = new COptionsMainDlg();
+ g_plugin.addOptions(wParam, &odp);
+
+ return 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+
+CAccountManagerDlg::CAccountManagerDlg(CCloudService *service)
+ : CProtoDlgBase(service, IDD_ACCMGR),
+ m_requestAccess(this, IDC_REQUESTACCESS),
+ m_revokeAccess(this, IDC_REVOKEACCESS)
+{
+ m_requestAccess.OnClick = Callback(this, &CAccountManagerDlg::RequestAccess_OnClick);
+ m_revokeAccess.OnClick = Callback(this, &CAccountManagerDlg::RevokeAccess_OnClick);
+}
+
+bool CAccountManagerDlg::OnInitDialog()
+{
+ ptrA token(m_proto->getStringA("TokenSecret"));
+ m_requestAccess.Enable(!token);
+ m_revokeAccess.Enable(token);
+ return true;
+}
+
+void CAccountManagerDlg::RequestAccess_OnClick(CCtrlButton*)
+{
+ m_proto->Login(m_hwnd);
+ ptrA token(m_proto->getStringA("TokenSecret"));
+ m_requestAccess.Enable(!token);
+ m_revokeAccess.Enable(token);
+}
+
+void CAccountManagerDlg::RevokeAccess_OnClick(CCtrlButton*)
+{
+ m_proto->Logout();
+ m_requestAccess.Enable();
+ m_revokeAccess.Disable();
+}
+
+/////////////////////////////////////////////////////////////////////////////////