Simple email application for Android. Original source code: https://framagit.org/dystopia-project/simple-email

542 lines
23 KiB

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".ActivityView">
  9. <androidx.constraintlayout.widget.ConstraintLayout
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent"
  12. android:padding="12dp">
  13. <!-- provider -->
  14. <TextView
  15. android:id="@+id/tvProvider"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:text="@string/title_provider"
  19. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  20. app:layout_constraintStart_toStartOf="parent"
  21. app:layout_constraintTop_toTopOf="parent" />
  22. <Spinner
  23. android:id="@+id/spProvider"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. app:layout_constraintStart_toStartOf="parent"
  27. app:layout_constraintTop_toBottomOf="@id/tvProvider" />
  28. <!-- auto config -->
  29. <TextView
  30. android:id="@+id/tvDomain"
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:layout_marginTop="12dp"
  34. android:text="@string/title_domain"
  35. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  36. app:layout_constraintStart_toStartOf="parent"
  37. app:layout_constraintTop_toBottomOf="@id/spProvider" />
  38. <EditText
  39. android:id="@+id/etDomain"
  40. android:layout_width="match_parent"
  41. android:layout_height="wrap_content"
  42. android:hint="domain.tld"
  43. android:inputType="textUri"
  44. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  45. app:layout_constraintStart_toStartOf="parent"
  46. app:layout_constraintTop_toBottomOf="@id/tvDomain" />
  47. <Button
  48. android:id="@+id/btnAutoConfig"
  49. style="@style/buttonStyleSmall"
  50. android:layout_width="wrap_content"
  51. android:layout_height="wrap_content"
  52. android:layout_marginTop="12dp"
  53. android:minHeight="0dp"
  54. android:minWidth="0dp"
  55. android:text="@string/title_autoconfig"
  56. app:layout_constraintStart_toStartOf="parent"
  57. app:layout_constraintTop_toBottomOf="@id/etDomain" />
  58. <!-- IMAP -->
  59. <TextView
  60. android:id="@+id/tvImap"
  61. android:layout_width="wrap_content"
  62. android:layout_height="wrap_content"
  63. android:layout_marginTop="12dp"
  64. android:text="@string/title_imap"
  65. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  66. app:layout_constraintStart_toStartOf="parent"
  67. app:layout_constraintTop_toBottomOf="@id/btnAutoConfig" />
  68. <TextView
  69. android:id="@+id/tvPop"
  70. android:layout_width="wrap_content"
  71. android:layout_height="wrap_content"
  72. android:text="@string/title_pop"
  73. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  74. android:textStyle="italic"
  75. app:layout_constraintStart_toStartOf="parent"
  76. app:layout_constraintTop_toBottomOf="@id/tvImap" />
  77. <TextView
  78. android:id="@+id/tvInsecure"
  79. android:layout_width="wrap_content"
  80. android:layout_height="wrap_content"
  81. android:text="@string/title_insecure"
  82. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  83. android:textStyle="italic"
  84. app:layout_constraintStart_toStartOf="parent"
  85. app:layout_constraintTop_toBottomOf="@id/tvPop" />
  86. <!-- host -->
  87. <TextView
  88. android:id="@+id/tvHost"
  89. android:layout_width="wrap_content"
  90. android:layout_height="wrap_content"
  91. android:layout_marginTop="12dp"
  92. android:text="@string/title_host"
  93. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  94. app:layout_constraintStart_toStartOf="parent"
  95. app:layout_constraintTop_toBottomOf="@id/tvInsecure" />
  96. <EditText
  97. android:id="@+id/etHost"
  98. android:layout_width="match_parent"
  99. android:layout_height="wrap_content"
  100. android:hint="imap.domain.tld"
  101. android:inputType="textUri"
  102. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  103. app:layout_constraintStart_toStartOf="parent"
  104. app:layout_constraintTop_toBottomOf="@id/tvHost" />
  105. <!-- port -->
  106. <TextView
  107. android:id="@+id/tvPort"
  108. android:layout_width="wrap_content"
  109. android:layout_height="wrap_content"
  110. android:layout_marginTop="12dp"
  111. android:text="@string/title_port"
  112. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  113. app:layout_constraintStart_toStartOf="parent"
  114. app:layout_constraintTop_toBottomOf="@id/etHost" />
  115. <EditText
  116. android:id="@+id/etPort"
  117. android:layout_width="match_parent"
  118. android:layout_height="wrap_content"
  119. android:hint="993"
  120. android:inputType="number"
  121. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  122. app:layout_constraintStart_toStartOf="parent"
  123. app:layout_constraintTop_toBottomOf="@id/tvPort" />
  124. <Button
  125. android:id="@+id/btnAuthorize"
  126. style="@style/buttonStyleSmall"
  127. android:layout_width="wrap_content"
  128. android:layout_height="wrap_content"
  129. android:layout_marginTop="12dp"
  130. android:minHeight="0dp"
  131. android:minWidth="0dp"
  132. android:text="@string/title_authorize"
  133. app:layout_constraintStart_toStartOf="parent"
  134. app:layout_constraintTop_toBottomOf="@id/etPort" />
  135. <!-- user -->
  136. <TextView
  137. android:id="@+id/tvUser"
  138. android:layout_width="wrap_content"
  139. android:layout_height="wrap_content"
  140. android:layout_marginTop="12dp"
  141. android:text="@string/title_user"
  142. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  143. app:layout_constraintStart_toStartOf="parent"
  144. app:layout_constraintTop_toBottomOf="@id/btnAuthorize" />
  145. <EditText
  146. android:id="@+id/etUser"
  147. android:layout_width="match_parent"
  148. android:layout_height="wrap_content"
  149. android:inputType="text"
  150. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  151. app:layout_constraintStart_toStartOf="parent"
  152. app:layout_constraintTop_toBottomOf="@id/tvUser" />
  153. <!-- password -->
  154. <TextView
  155. android:id="@+id/tvPassword"
  156. android:layout_width="wrap_content"
  157. android:layout_height="wrap_content"
  158. android:layout_marginTop="12dp"
  159. android:text="@string/title_password"
  160. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  161. app:layout_constraintStart_toStartOf="parent"
  162. app:layout_constraintTop_toBottomOf="@id/etUser" />
  163. <com.google.android.material.textfield.TextInputLayout
  164. android:id="@+id/tilPassword"
  165. android:layout_width="match_parent"
  166. android:layout_height="wrap_content"
  167. android:inputType="textPassword"
  168. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  169. app:layout_constraintStart_toStartOf="parent"
  170. app:layout_constraintTop_toBottomOf="@id/tvPassword"
  171. app:passwordToggleEnabled="true">
  172. <com.google.android.material.textfield.TextInputEditText
  173. android:layout_width="match_parent"
  174. android:layout_height="wrap_content"
  175. android:inputType="textPassword" />
  176. </com.google.android.material.textfield.TextInputLayout>
  177. <Button
  178. android:id="@+id/btnAdvanced"
  179. style="@style/buttonStyleSmall"
  180. android:layout_width="wrap_content"
  181. android:layout_height="wrap_content"
  182. android:layout_marginTop="12dp"
  183. android:minHeight="0dp"
  184. android:minWidth="0dp"
  185. android:text="@string/title_setup_advanced"
  186. app:layout_constraintStart_toStartOf="parent"
  187. app:layout_constraintTop_toBottomOf="@id/tilPassword" />
  188. <!-- name -->
  189. <TextView
  190. android:id="@+id/tvName"
  191. android:layout_width="wrap_content"
  192. android:layout_height="wrap_content"
  193. android:layout_marginTop="12dp"
  194. android:text="@string/title_account_name"
  195. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  196. app:layout_constraintStart_toStartOf="parent"
  197. app:layout_constraintTop_toBottomOf="@id/btnAdvanced" />
  198. <EditText
  199. android:id="@+id/etName"
  200. android:layout_width="match_parent"
  201. android:layout_height="wrap_content"
  202. android:hint="@string/title_account_name_hint"
  203. android:inputType="text"
  204. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  205. app:layout_constraintStart_toStartOf="parent"
  206. app:layout_constraintTop_toBottomOf="@id/tvName" />
  207. <Button
  208. android:id="@+id/btnColor"
  209. style="@style/buttonStyleSmall"
  210. android:layout_width="wrap_content"
  211. android:layout_height="wrap_content"
  212. android:layout_marginTop="12dp"
  213. android:minHeight="0dp"
  214. android:minWidth="0dp"
  215. android:text="@string/title_account_color"
  216. app:layout_constraintStart_toStartOf="parent"
  217. app:layout_constraintTop_toBottomOf="@id/etName" />
  218. <View
  219. android:id="@+id/vwColor"
  220. android:layout_width="24dp"
  221. android:layout_height="24dp"
  222. android:layout_marginStart="12dp"
  223. android:background="@color/colorAccent"
  224. app:layout_constraintBottom_toBottomOf="@id/btnColor"
  225. app:layout_constraintStart_toEndOf="@id/btnColor"
  226. app:layout_constraintTop_toTopOf="@id/btnColor" />
  227. <ImageView
  228. android:id="@+id/ibColorDefault"
  229. android:layout_width="wrap_content"
  230. android:layout_height="wrap_content"
  231. android:layout_marginStart="12dp"
  232. android:layout_marginTop="12dp"
  233. android:src="@drawable/baseline_delete_24"
  234. app:layout_constraintBottom_toBottomOf="@id/btnColor"
  235. app:layout_constraintStart_toEndOf="@id/vwColor"
  236. app:layout_constraintTop_toBottomOf="@id/etName" />
  237. <TextView
  238. android:id="@+id/tvSignature"
  239. android:layout_width="wrap_content"
  240. android:layout_height="wrap_content"
  241. android:layout_marginTop="12dp"
  242. android:text="@string/title_account_signature"
  243. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  244. app:layout_constraintStart_toStartOf="parent"
  245. app:layout_constraintTop_toBottomOf="@id/btnColor" />
  246. <EditText
  247. android:id="@+id/etSignature"
  248. android:layout_width="0dp"
  249. android:layout_height="wrap_content"
  250. android:fontFamily="monospace"
  251. android:hint="@string/title_optional"
  252. android:inputType="textCapSentences|textMultiLine"
  253. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  254. app:layout_constraintEnd_toStartOf="@+id/ibPro"
  255. app:layout_constraintStart_toStartOf="parent"
  256. app:layout_constraintTop_toBottomOf="@id/tvSignature" />
  257. <ImageButton
  258. android:id="@+id/ibPro"
  259. android:layout_width="wrap_content"
  260. android:layout_height="wrap_content"
  261. android:layout_marginStart="6dp"
  262. android:src="@drawable/baseline_info_24"
  263. app:layout_constraintBottom_toBottomOf="@id/etSignature"
  264. app:layout_constraintEnd_toEndOf="parent"
  265. app:layout_constraintTop_toTopOf="@id/etSignature" />
  266. <CheckBox
  267. android:id="@+id/cbSynchronize"
  268. android:layout_width="wrap_content"
  269. android:layout_height="wrap_content"
  270. android:layout_marginTop="12dp"
  271. android:text="@string/title_synchronize_account"
  272. app:layout_constraintStart_toStartOf="parent"
  273. app:layout_constraintTop_toBottomOf="@id/etSignature" />
  274. <CheckBox
  275. android:id="@+id/cbPrimary"
  276. android:layout_width="wrap_content"
  277. android:layout_height="wrap_content"
  278. android:layout_marginTop="12dp"
  279. android:text="@string/title_primary_account"
  280. app:layout_constraintStart_toStartOf="parent"
  281. app:layout_constraintTop_toBottomOf="@id/cbSynchronize" />
  282. <!-- keep alive -->
  283. <TextView
  284. android:id="@+id/tvInterval"
  285. android:layout_width="wrap_content"
  286. android:layout_height="wrap_content"
  287. android:layout_marginTop="12dp"
  288. android:text="@string/title_keep_alive_interval"
  289. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  290. app:layout_constraintStart_toStartOf="parent"
  291. app:layout_constraintTop_toBottomOf="@id/cbPrimary" />
  292. <EditText
  293. android:id="@+id/etInterval"
  294. android:layout_width="match_parent"
  295. android:layout_height="wrap_content"
  296. android:hint="19"
  297. android:inputType="number"
  298. android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  299. app:layout_constraintStart_toStartOf="parent"
  300. app:layout_constraintTop_toBottomOf="@id/tvInterval" />
  301. <!-- check -->
  302. <Button
  303. android:id="@+id/btnCheck"
  304. android:layout_width="wrap_content"
  305. android:layout_height="wrap_content"
  306. android:layout_marginTop="12dp"
  307. android:text="@string/title_check"
  308. app:layout_constraintStart_toStartOf="parent"
  309. app:layout_constraintTop_toBottomOf="@id/etInterval" />
  310. <ProgressBar
  311. android:id="@+id/pbCheck"
  312. style="@style/Base.Widget.AppCompat.ProgressBar"
  313. android:layout_width="24dp"
  314. android:layout_height="24dp"
  315. android:layout_marginStart="12dp"
  316. android:indeterminate="true"
  317. app:layout_constraintBottom_toBottomOf="@id/btnCheck"
  318. app:layout_constraintStart_toEndOf="@id/btnCheck"
  319. app:layout_constraintTop_toTopOf="@id/btnCheck" />
  320. <ImageButton
  321. android:id="@+id/ibDelete"
  322. android:layout_width="wrap_content"
  323. android:layout_height="wrap_content"
  324. android:layout_marginTop="12dp"
  325. android:src="@drawable/baseline_delete_24"
  326. app:layout_constraintEnd_toEndOf="parent"
  327. app:layout_constraintTop_toBottomOf="@id/etInterval" />
  328. <TextView
  329. android:id="@+id/tvIdle"
  330. android:layout_width="wrap_content"
  331. android:layout_height="wrap_content"
  332. android:layout_marginTop="12dp"
  333. android:minWidth="100dp"
  334. android:text="@string/title_no_idle"
  335. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  336. android:textStyle="bold"
  337. app:layout_constraintStart_toStartOf="parent"
  338. app:layout_constraintTop_toBottomOf="@+id/btnCheck" />
  339. <TextView
  340. android:id="@+id/tvDrafts"
  341. android:layout_width="wrap_content"
  342. android:layout_height="wrap_content"
  343. android:minWidth="100dp"
  344. android:text="@string/title_folder_drafts"
  345. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  346. app:layout_constraintBottom_toBottomOf="@+id/spDrafts"
  347. app:layout_constraintStart_toStartOf="parent"
  348. app:layout_constraintTop_toTopOf="@+id/spDrafts" />
  349. <Spinner
  350. android:id="@+id/spDrafts"
  351. android:layout_width="0dp"
  352. android:layout_height="wrap_content"
  353. android:layout_marginTop="12dp"
  354. app:layout_constraintEnd_toEndOf="parent"
  355. app:layout_constraintStart_toEndOf="@id/tvDrafts"
  356. app:layout_constraintTop_toBottomOf="@id/tvIdle" />
  357. <TextView
  358. android:id="@+id/tvSent"
  359. android:layout_width="wrap_content"
  360. android:layout_height="wrap_content"
  361. android:minWidth="100dp"
  362. android:text="@string/title_folder_sent"
  363. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  364. app:layout_constraintBottom_toBottomOf="@+id/spSent"
  365. app:layout_constraintStart_toStartOf="parent"
  366. app:layout_constraintTop_toTopOf="@+id/spSent" />
  367. <Spinner
  368. android:id="@+id/spSent"
  369. android:layout_width="0dp"
  370. android:layout_height="wrap_content"
  371. android:layout_marginTop="12dp"
  372. app:layout_constraintEnd_toEndOf="parent"
  373. app:layout_constraintStart_toEndOf="@id/tvSent"
  374. app:layout_constraintTop_toBottomOf="@id/spDrafts" />
  375. <TextView
  376. android:id="@+id/tvAll"
  377. android:layout_width="wrap_content"
  378. android:layout_height="wrap_content"
  379. android:minWidth="100dp"
  380. android:text="@string/title_folder_all"
  381. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  382. app:layout_constraintBottom_toBottomOf="@+id/spAll"
  383. app:layout_constraintStart_toStartOf="parent"
  384. app:layout_constraintTop_toTopOf="@+id/spAll" />
  385. <Spinner
  386. android:id="@+id/spAll"
  387. android:layout_width="0dp"
  388. android:layout_height="wrap_content"
  389. android:layout_marginTop="12dp"
  390. app:layout_constraintEnd_toEndOf="parent"
  391. app:layout_constraintStart_toEndOf="@id/tvAll"
  392. app:layout_constraintTop_toBottomOf="@id/spSent" />
  393. <TextView
  394. android:id="@+id/tvTrash"
  395. android:layout_width="wrap_content"
  396. android:layout_height="wrap_content"
  397. android:minWidth="100dp"
  398. android:text="@string/title_folder_trash"
  399. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  400. app:layout_constraintBottom_toBottomOf="@+id/spTrash"
  401. app:layout_constraintStart_toStartOf="parent"
  402. app:layout_constraintTop_toTopOf="@+id/spTrash" />
  403. <Spinner
  404. android:id="@+id/spTrash"
  405. android:layout_width="0dp"
  406. android:layout_height="wrap_content"
  407. android:layout_marginTop="12dp"
  408. app:layout_constraintEnd_toEndOf="parent"
  409. app:layout_constraintStart_toEndOf="@id/tvTrash"
  410. app:layout_constraintTop_toBottomOf="@id/spAll" />
  411. <TextView
  412. android:id="@+id/tvJunk"
  413. android:layout_width="wrap_content"
  414. android:layout_height="wrap_content"
  415. android:minWidth="100dp"
  416. android:text="@string/title_folder_junk"
  417. android:textAppearance="@style/TextAppearance.AppCompat.Small"
  418. app:layout_constraintBottom_toBottomOf="@+id/spJunk"
  419. app:layout_constraintStart_toStartOf="parent"
  420. app:layout_constraintTop_toTopOf="@+id/spJunk" />
  421. <Spinner
  422. android:id="@+id/spJunk"
  423. android:layout_width="0dp"
  424. android:layout_height="wrap_content"
  425. android:layout_marginTop="12dp"
  426. app:layout_constraintEnd_toEndOf="parent"
  427. app:layout_constraintStart_toEndOf="@id/tvJunk"
  428. app:layout_constraintTop_toBottomOf="@id/spTrash" />
  429. <!-- save -->
  430. <Button
  431. android:id="@+id/btnSave"
  432. android:layout_width="wrap_content"
  433. android:layout_height="wrap_content"
  434. android:layout_marginTop="12dp"
  435. android:text="@string/title_save"
  436. app:layout_constraintStart_toStartOf="parent"
  437. app:layout_constraintTop_toBottomOf="@id/spJunk" />
  438. <ProgressBar
  439. android:id="@+id/pbSave"
  440. style="@style/Base.Widget.AppCompat.ProgressBar"
  441. android:layout_width="24dp"
  442. android:layout_height="24dp"
  443. android:layout_marginStart="12dp"
  444. android:indeterminate="true"
  445. app:layout_constraintBottom_toBottomOf="@id/btnSave"
  446. app:layout_constraintStart_toEndOf="@id/btnSave"
  447. app:layout_constraintTop_toTopOf="@id/btnSave" />
  448. <ProgressBar
  449. android:id="@+id/pbWait"
  450. style="@style/Base.Widget.AppCompat.ProgressBar"
  451. android:layout_width="wrap_content"
  452. android:layout_height="wrap_content"
  453. android:indeterminate="true"
  454. app:layout_constraintBottom_toBottomOf="parent"
  455. app:layout_constraintEnd_toEndOf="parent"
  456. app:layout_constraintStart_toStartOf="parent"
  457. app:layout_constraintTop_toTopOf="parent" />
  458. <androidx.constraintlayout.widget.Group
  459. android:id="@+id/grpServer"
  460. android:layout_width="0dp"
  461. android:layout_height="0dp"
  462. app:constraint_referenced_ids="tvDomain,etDomain,btnAutoConfig,tvImap,tvPop,tvInsecure,tvHost,etHost,tvPort,etPort" />
  463. <androidx.constraintlayout.widget.Group
  464. android:id="@+id/grpAuthorize"
  465. android:layout_width="0dp"
  466. android:layout_height="0dp"
  467. app:constraint_referenced_ids="tvUser,etUser,tvPassword,tilPassword" />
  468. <androidx.constraintlayout.widget.Group
  469. android:id="@+id/grpAdvanced"
  470. android:layout_width="0dp"
  471. android:layout_height="0dp"
  472. app:constraint_referenced_ids="tvName,etName,btnColor,vwColor,ibColorDefault,tvSignature,etSignature,ibPro,cbSynchronize,cbPrimary,tvInterval,etInterval" />
  473. <androidx.constraintlayout.widget.Group
  474. android:id="@+id/grpFolders"
  475. android:layout_width="0dp"
  476. android:layout_height="0dp"
  477. app:constraint_referenced_ids="tvDrafts,spDrafts,tvSent,spSent,tvAll,spAll,tvTrash,spTrash,tvJunk,spJunk" />
  478. </androidx.constraintlayout.widget.ConstraintLayout>
  479. </ScrollView>