@ -0,0 +1,891 @@ | |||
{ | |||
"formatVersion": 1, | |||
"database": { | |||
"version": 7, | |||
"identityHash": "78658430615109b7c163e62ed1ad0a48", | |||
"entities": [ | |||
{ | |||
"tableName": "identity", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `email` TEXT NOT NULL, `replyto` TEXT, `account` INTEGER NOT NULL, `host` TEXT NOT NULL, `port` INTEGER NOT NULL, `starttls` INTEGER NOT NULL, `user` TEXT NOT NULL, `password` TEXT NOT NULL, `auth_type` INTEGER NOT NULL, `primary` INTEGER NOT NULL, `synchronize` INTEGER NOT NULL, `store_sent` INTEGER NOT NULL, `state` TEXT, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "name", | |||
"columnName": "name", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "email", | |||
"columnName": "email", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "replyto", | |||
"columnName": "replyto", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "account", | |||
"columnName": "account", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "host", | |||
"columnName": "host", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "port", | |||
"columnName": "port", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "starttls", | |||
"columnName": "starttls", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "user", | |||
"columnName": "user", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "password", | |||
"columnName": "password", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "auth_type", | |||
"columnName": "auth_type", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "primary", | |||
"columnName": "primary", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "synchronize", | |||
"columnName": "synchronize", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "store_sent", | |||
"columnName": "store_sent", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "state", | |||
"columnName": "state", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "error", | |||
"columnName": "error", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [ | |||
{ | |||
"name": "index_identity_account", | |||
"unique": false, | |||
"columnNames": [ | |||
"account" | |||
], | |||
"createSql": "CREATE INDEX `index_identity_account` ON `${TABLE_NAME}` (`account`)" | |||
} | |||
], | |||
"foreignKeys": [ | |||
{ | |||
"table": "account", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"account" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
} | |||
] | |||
}, | |||
{ | |||
"tableName": "account", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT, `host` TEXT NOT NULL, `port` INTEGER NOT NULL, `user` TEXT NOT NULL, `password` TEXT NOT NULL, `auth_type` INTEGER NOT NULL, `primary` INTEGER NOT NULL, `synchronize` INTEGER NOT NULL, `store_sent` INTEGER NOT NULL, `poll_interval` INTEGER NOT NULL, `seen_until` INTEGER, `state` TEXT, `error` TEXT)", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "name", | |||
"columnName": "name", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "host", | |||
"columnName": "host", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "port", | |||
"columnName": "port", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "user", | |||
"columnName": "user", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "password", | |||
"columnName": "password", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "auth_type", | |||
"columnName": "auth_type", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "primary", | |||
"columnName": "primary", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "synchronize", | |||
"columnName": "synchronize", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "store_sent", | |||
"columnName": "store_sent", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "poll_interval", | |||
"columnName": "poll_interval", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "seen_until", | |||
"columnName": "seen_until", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "state", | |||
"columnName": "state", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "error", | |||
"columnName": "error", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [], | |||
"foreignKeys": [] | |||
}, | |||
{ | |||
"tableName": "folder", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `account` INTEGER, `name` TEXT NOT NULL, `type` TEXT NOT NULL, `synchronize` INTEGER NOT NULL, `after` INTEGER NOT NULL, `state` TEXT, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "account", | |||
"columnName": "account", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "name", | |||
"columnName": "name", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "type", | |||
"columnName": "type", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "synchronize", | |||
"columnName": "synchronize", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "after", | |||
"columnName": "after", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "state", | |||
"columnName": "state", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "error", | |||
"columnName": "error", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [ | |||
{ | |||
"name": "index_folder_account_name", | |||
"unique": true, | |||
"columnNames": [ | |||
"account", | |||
"name" | |||
], | |||
"createSql": "CREATE UNIQUE INDEX `index_folder_account_name` ON `${TABLE_NAME}` (`account`, `name`)" | |||
}, | |||
{ | |||
"name": "index_folder_account", | |||
"unique": false, | |||
"columnNames": [ | |||
"account" | |||
], | |||
"createSql": "CREATE INDEX `index_folder_account` ON `${TABLE_NAME}` (`account`)" | |||
}, | |||
{ | |||
"name": "index_folder_name", | |||
"unique": false, | |||
"columnNames": [ | |||
"name" | |||
], | |||
"createSql": "CREATE INDEX `index_folder_name` ON `${TABLE_NAME}` (`name`)" | |||
}, | |||
{ | |||
"name": "index_folder_type", | |||
"unique": false, | |||
"columnNames": [ | |||
"type" | |||
], | |||
"createSql": "CREATE INDEX `index_folder_type` ON `${TABLE_NAME}` (`type`)" | |||
} | |||
], | |||
"foreignKeys": [ | |||
{ | |||
"table": "account", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"account" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
} | |||
] | |||
}, | |||
{ | |||
"tableName": "message", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `account` INTEGER, `folder` INTEGER NOT NULL, `identity` INTEGER, `replying` INTEGER, `uid` INTEGER, `msgid` TEXT, `references` TEXT, `inreplyto` TEXT, `thread` TEXT, `from` TEXT, `to` TEXT, `cc` TEXT, `bcc` TEXT, `reply` TEXT, `subject` TEXT, `sent` INTEGER, `received` INTEGER NOT NULL, `stored` INTEGER NOT NULL, `seen` INTEGER NOT NULL, `ui_seen` INTEGER NOT NULL, `ui_hide` INTEGER NOT NULL, `ui_found` INTEGER NOT NULL, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`folder`) REFERENCES `folder`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`identity`) REFERENCES `identity`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`replying`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "account", | |||
"columnName": "account", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "folder", | |||
"columnName": "folder", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "identity", | |||
"columnName": "identity", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "replying", | |||
"columnName": "replying", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "uid", | |||
"columnName": "uid", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "msgid", | |||
"columnName": "msgid", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "references", | |||
"columnName": "references", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "inreplyto", | |||
"columnName": "inreplyto", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "thread", | |||
"columnName": "thread", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "from", | |||
"columnName": "from", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "to", | |||
"columnName": "to", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "cc", | |||
"columnName": "cc", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "bcc", | |||
"columnName": "bcc", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "reply", | |||
"columnName": "reply", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "subject", | |||
"columnName": "subject", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "sent", | |||
"columnName": "sent", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "received", | |||
"columnName": "received", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "stored", | |||
"columnName": "stored", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "seen", | |||
"columnName": "seen", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "ui_seen", | |||
"columnName": "ui_seen", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "ui_hide", | |||
"columnName": "ui_hide", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "ui_found", | |||
"columnName": "ui_found", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "error", | |||
"columnName": "error", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [ | |||
{ | |||
"name": "index_message_account", | |||
"unique": false, | |||
"columnNames": [ | |||
"account" | |||
], | |||
"createSql": "CREATE INDEX `index_message_account` ON `${TABLE_NAME}` (`account`)" | |||
}, | |||
{ | |||
"name": "index_message_folder", | |||
"unique": false, | |||
"columnNames": [ | |||
"folder" | |||
], | |||
"createSql": "CREATE INDEX `index_message_folder` ON `${TABLE_NAME}` (`folder`)" | |||
}, | |||
{ | |||
"name": "index_message_identity", | |||
"unique": false, | |||
"columnNames": [ | |||
"identity" | |||
], | |||
"createSql": "CREATE INDEX `index_message_identity` ON `${TABLE_NAME}` (`identity`)" | |||
}, | |||
{ | |||
"name": "index_message_replying", | |||
"unique": false, | |||
"columnNames": [ | |||
"replying" | |||
], | |||
"createSql": "CREATE INDEX `index_message_replying` ON `${TABLE_NAME}` (`replying`)" | |||
}, | |||
{ | |||
"name": "index_message_folder_uid", | |||
"unique": true, | |||
"columnNames": [ | |||
"folder", | |||
"uid" | |||
], | |||
"createSql": "CREATE UNIQUE INDEX `index_message_folder_uid` ON `${TABLE_NAME}` (`folder`, `uid`)" | |||
}, | |||
{ | |||
"name": "index_message_msgid_folder", | |||
"unique": true, | |||
"columnNames": [ | |||
"msgid", | |||
"folder" | |||
], | |||
"createSql": "CREATE UNIQUE INDEX `index_message_msgid_folder` ON `${TABLE_NAME}` (`msgid`, `folder`)" | |||
}, | |||
{ | |||
"name": "index_message_thread", | |||
"unique": false, | |||
"columnNames": [ | |||
"thread" | |||
], | |||
"createSql": "CREATE INDEX `index_message_thread` ON `${TABLE_NAME}` (`thread`)" | |||
}, | |||
{ | |||
"name": "index_message_received", | |||
"unique": false, | |||
"columnNames": [ | |||
"received" | |||
], | |||
"createSql": "CREATE INDEX `index_message_received` ON `${TABLE_NAME}` (`received`)" | |||
}, | |||
{ | |||
"name": "index_message_ui_seen", | |||
"unique": false, | |||
"columnNames": [ | |||
"ui_seen" | |||
], | |||
"createSql": "CREATE INDEX `index_message_ui_seen` ON `${TABLE_NAME}` (`ui_seen`)" | |||
}, | |||
{ | |||
"name": "index_message_ui_hide", | |||
"unique": false, | |||
"columnNames": [ | |||
"ui_hide" | |||
], | |||
"createSql": "CREATE INDEX `index_message_ui_hide` ON `${TABLE_NAME}` (`ui_hide`)" | |||
} | |||
], | |||
"foreignKeys": [ | |||
{ | |||
"table": "account", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"account" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
}, | |||
{ | |||
"table": "folder", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"folder" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
}, | |||
{ | |||
"table": "identity", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"identity" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
}, | |||
{ | |||
"table": "message", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"replying" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
} | |||
] | |||
}, | |||
{ | |||
"tableName": "attachment", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message` INTEGER NOT NULL, `sequence` INTEGER NOT NULL, `name` TEXT, `type` TEXT NOT NULL, `size` INTEGER, `progress` INTEGER, `available` INTEGER NOT NULL, FOREIGN KEY(`message`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "message", | |||
"columnName": "message", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "sequence", | |||
"columnName": "sequence", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "name", | |||
"columnName": "name", | |||
"affinity": "TEXT", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "type", | |||
"columnName": "type", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "size", | |||
"columnName": "size", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "progress", | |||
"columnName": "progress", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "available", | |||
"columnName": "available", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [ | |||
{ | |||
"name": "index_attachment_message", | |||
"unique": false, | |||
"columnNames": [ | |||
"message" | |||
], | |||
"createSql": "CREATE INDEX `index_attachment_message` ON `${TABLE_NAME}` (`message`)" | |||
}, | |||
{ | |||
"name": "index_attachment_message_sequence", | |||
"unique": true, | |||
"columnNames": [ | |||
"message", | |||
"sequence" | |||
], | |||
"createSql": "CREATE UNIQUE INDEX `index_attachment_message_sequence` ON `${TABLE_NAME}` (`message`, `sequence`)" | |||
} | |||
], | |||
"foreignKeys": [ | |||
{ | |||
"table": "message", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"message" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
} | |||
] | |||
}, | |||
{ | |||
"tableName": "operation", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `folder` INTEGER NOT NULL, `message` INTEGER NOT NULL, `name` TEXT NOT NULL, `args` TEXT NOT NULL, `created` INTEGER NOT NULL, FOREIGN KEY(`folder`) REFERENCES `folder`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`message`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "folder", | |||
"columnName": "folder", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "message", | |||
"columnName": "message", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "name", | |||
"columnName": "name", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "args", | |||
"columnName": "args", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "created", | |||
"columnName": "created", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [ | |||
{ | |||
"name": "index_operation_folder", | |||
"unique": false, | |||
"columnNames": [ | |||
"folder" | |||
], | |||
"createSql": "CREATE INDEX `index_operation_folder` ON `${TABLE_NAME}` (`folder`)" | |||
}, | |||
{ | |||
"name": "index_operation_message", | |||
"unique": false, | |||
"columnNames": [ | |||
"message" | |||
], | |||
"createSql": "CREATE INDEX `index_operation_message` ON `${TABLE_NAME}` (`message`)" | |||
} | |||
], | |||
"foreignKeys": [ | |||
{ | |||
"table": "folder", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"folder" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
}, | |||
{ | |||
"table": "message", | |||
"onDelete": "CASCADE", | |||
"onUpdate": "NO ACTION", | |||
"columns": [ | |||
"message" | |||
], | |||
"referencedColumns": [ | |||
"id" | |||
] | |||
} | |||
] | |||
}, | |||
{ | |||
"tableName": "answer", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `text` TEXT NOT NULL)", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "name", | |||
"columnName": "name", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "text", | |||
"columnName": "text", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [], | |||
"foreignKeys": [] | |||
}, | |||
{ | |||
"tableName": "log", | |||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `time` INTEGER NOT NULL, `data` TEXT NOT NULL)", | |||
"fields": [ | |||
{ | |||
"fieldPath": "id", | |||
"columnName": "id", | |||
"affinity": "INTEGER", | |||
"notNull": false | |||
}, | |||
{ | |||
"fieldPath": "time", | |||
"columnName": "time", | |||
"affinity": "INTEGER", | |||
"notNull": true | |||
}, | |||
{ | |||
"fieldPath": "data", | |||
"columnName": "data", | |||
"affinity": "TEXT", | |||
"notNull": true | |||
} | |||
], | |||
"primaryKey": { | |||
"columnNames": [ | |||
"id" | |||
], | |||
"autoGenerate": true | |||
}, | |||
"indices": [ | |||
{ | |||
"name": "index_log_time", | |||
"unique": false, | |||
"columnNames": [ | |||
"time" | |||
], | |||
"createSql": "CREATE INDEX `index_log_time` ON `${TABLE_NAME}` (`time`)" | |||
} | |||
], | |||
"foreignKeys": [] | |||
} | |||
], | |||
"setupQueries": [ | |||
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", | |||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"78658430615109b7c163e62ed1ad0a48\")" | |||
] | |||
} | |||
} |
@ -0,0 +1,162 @@ | |||
package eu.faircode.email; | |||
/* | |||
This file is part of FairEmail. | |||
FairEmail is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 3 of the License, or | |||
(at your option) any later version. | |||
NetGuard is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with NetGuard. If not, see <http://www.gnu.org/licenses/>. | |||
Copyright 2018 by Marcel Bokhorst (M66B) | |||
*/ | |||
import android.content.Context; | |||
import android.util.Log; | |||
import android.view.LayoutInflater; | |||
import android.view.View; | |||
import android.view.ViewGroup; | |||
import android.widget.TextView; | |||
import java.text.DateFormat; | |||
import java.text.SimpleDateFormat; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import androidx.annotation.NonNull; | |||
import androidx.recyclerview.widget.DiffUtil; | |||
import androidx.recyclerview.widget.ListUpdateCallback; | |||
import androidx.recyclerview.widget.RecyclerView; | |||
public class AdapterLog extends RecyclerView.Adapter<AdapterLog.ViewHolder> { | |||
private Context context; | |||
private List<EntityLog> all = new ArrayList<>(); | |||
private List<EntityLog> filtered = new ArrayList<>(); | |||
private static final DateFormat DF = SimpleDateFormat.getTimeInstance(); | |||
public class ViewHolder extends RecyclerView.ViewHolder { | |||
View itemView; | |||
TextView tvTime; | |||
TextView tvData; | |||
ViewHolder(View itemView) { | |||
super(itemView); | |||
this.itemView = itemView; | |||
tvTime = itemView.findViewById(R.id.tvTime); | |||
tvData = itemView.findViewById(R.id.tvData); | |||
} | |||
private void bindTo(EntityLog log) { | |||
tvTime.setText(DF.format(log.time)); | |||
tvData.setText(log.data); | |||
} | |||
} | |||
AdapterLog(Context context) { | |||
this.context = context; | |||
setHasStableIds(true); | |||
} | |||
public void set(@NonNull List<EntityLog> logs) { | |||
Log.i(Helper.TAG, "Set logs=" + logs.size()); | |||
all.clear(); | |||
all.addAll(logs); | |||
DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new MessageDiffCallback(filtered, all)); | |||
filtered.clear(); | |||
filtered.addAll(all); | |||
diff.dispatchUpdatesTo(new ListUpdateCallback() { | |||
@Override | |||
public void onInserted(int position, int count) { | |||
Log.i(Helper.TAG, "Inserted @" + position + " #" + count); | |||
} | |||
@Override | |||
public void onRemoved(int position, int count) { | |||
Log.i(Helper.TAG, "Removed @" + position + " #" + count); | |||
} | |||
@Override | |||
public void onMoved(int fromPosition, int toPosition) { | |||
Log.i(Helper.TAG, "Moved " + fromPosition + ">" + toPosition); | |||
} | |||
@Override | |||
public void onChanged(int position, int count, Object payload) { | |||
Log.i(Helper.TAG, "Changed @" + position + " #" + count); | |||
} | |||
}); | |||
diff.dispatchUpdatesTo(this); | |||
} | |||
private class MessageDiffCallback extends DiffUtil.Callback { | |||
private List<EntityLog> prev; | |||
private List<EntityLog> next; | |||
MessageDiffCallback(List<EntityLog> prev, List<EntityLog> next) { | |||
this.prev = prev; | |||
this.next = next; | |||
} | |||
@Override | |||
public int getOldListSize() { | |||
return prev.size(); | |||
} | |||
@Override | |||
public int getNewListSize() { | |||
return next.size(); | |||
} | |||
@Override | |||
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { | |||
EntityLog l1 = prev.get(oldItemPosition); | |||
EntityLog l2 = next.get(newItemPosition); | |||
return l1.id.equals(l2.id); | |||
} | |||
@Override | |||
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { | |||
EntityLog l1 = prev.get(oldItemPosition); | |||
EntityLog l2 = next.get(newItemPosition); | |||
return l1.equals(l2); | |||
} | |||
} | |||
@Override | |||
public long getItemId(int position) { | |||
return filtered.get(position).id; | |||
} | |||
@Override | |||
public int getItemCount() { | |||
return filtered.size(); | |||
} | |||
@Override | |||
@NonNull | |||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | |||
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_log, parent, false)); | |||
} | |||
@Override | |||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { | |||
EntityLog log = filtered.get(position); | |||
holder.bindTo(log); | |||
} | |||
} |
@ -0,0 +1,36 @@ | |||
package eu.faircode.email; | |||
/* | |||
This file is part of FairEmail. | |||
FairEmail is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 3 of the License, or | |||
(at your option) any later version. | |||
NetGuard is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with NetGuard. If not, see <http://www.gnu.org/licenses/>. | |||
Copyright 2018 by Marcel Bokhorst (M66B) | |||
*/ | |||
import java.util.List; | |||
import androidx.lifecycle.LiveData; | |||
import androidx.room.Dao; | |||
import androidx.room.Insert; | |||
import androidx.room.Query; | |||
@Dao | |||
public interface DaoLog { | |||
@Query("SELECT * FROM log ORDER BY time DESC LIMIT 500") | |||
LiveData<List<EntityLog>> liveLogs(); | |||
@Insert | |||
long insertLog(EntityLog log); | |||
} |
@ -0,0 +1,64 @@ | |||
package eu.faircode.email; | |||
/* | |||
This file is part of FairEmail. | |||
FairEmail is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 3 of the License, or | |||
(at your option) any later version. | |||
NetGuard is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with NetGuard. If not, see <http://www.gnu.org/licenses/>. | |||
Copyright 2018 by Marcel Bokhorst (M66B) | |||
*/ | |||
import android.content.Context; | |||
import java.util.Date; | |||
import androidx.annotation.NonNull; | |||
import androidx.room.Entity; | |||
import androidx.room.Index; | |||
import androidx.room.PrimaryKey; | |||
@Entity( | |||
tableName = EntityLog.TABLE_NAME, | |||
foreignKeys = { | |||
}, | |||
indices = { | |||
@Index(value = {"time"}) | |||
} | |||
) | |||
public class EntityLog { | |||
static final String TABLE_NAME = "log"; | |||
@PrimaryKey(autoGenerate = true) | |||
public Long id; | |||
@NonNull | |||
public Long time; | |||
@NonNull | |||
public String data; | |||
static void log(Context context, String data) { | |||
EntityLog entry = new EntityLog(); | |||
entry.time = new Date().getTime(); | |||
entry.data = data; | |||
DB.getInstance(context).log().insertLog(entry); | |||
} | |||
@Override | |||
public boolean equals(Object obj) { | |||
if (obj instanceof EntityLog) { | |||
EntityLog other = (EntityLog) obj; | |||
return (this.time.equals(other.time) && this.data.equals(other.data)); | |||
} else | |||
return false; | |||
} | |||
} |
@ -0,0 +1,91 @@ | |||
package eu.faircode.email; | |||
/* | |||
This file is part of FairEmail. | |||
FairEmail is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 3 of the License, or | |||
(at your option) any later version. | |||
NetGuard is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with NetGuard. If not, see <http://www.gnu.org/licenses/>. | |||
Copyright 2018 by Marcel Bokhorst (M66B) | |||
*/ | |||
import android.os.Bundle; | |||
import android.view.LayoutInflater; | |||
import android.view.View; | |||
import android.view.ViewGroup; | |||
import android.widget.ProgressBar; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import androidx.annotation.NonNull; | |||
import androidx.annotation.Nullable; | |||
import androidx.constraintlayout.widget.Group; | |||
import androidx.lifecycle.Observer; | |||
import androidx.recyclerview.widget.LinearLayoutManager; | |||
import androidx.recyclerview.widget.RecyclerView; | |||
public class FragmentLogs extends FragmentEx { | |||
private RecyclerView rvLog; | |||
private ProgressBar pbWait; | |||
private Group grpReady; | |||
private AdapterLog adapter; | |||
@Override | |||
@Nullable | |||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | |||
setSubtitle(R.string.title_log); | |||
View view = inflater.inflate(R.layout.fragment_logs, container, false); | |||
// Get controls | |||
rvLog = view.findViewById(R.id.rvLog); | |||
pbWait = view.findViewById(R.id.pbWait); | |||
grpReady = view.findViewById(R.id.grpReady); | |||
// Wire controls | |||
rvLog.setHasFixedSize(false); | |||
LinearLayoutManager llm = new LinearLayoutManager(getContext()); | |||
rvLog.setLayoutManager(llm); | |||
adapter = new AdapterLog(getContext()); | |||
rvLog.setAdapter(adapter); | |||
// Initialize | |||
grpReady.setVisibility(View.GONE); | |||
pbWait.setVisibility(View.VISIBLE); | |||
return view; | |||
} | |||
@Override | |||
public void onActivityCreated(@Nullable Bundle savedInstanceState) { | |||
super.onActivityCreated(savedInstanceState); | |||
DB db = DB.getInstance(getContext()); | |||
db.log().liveLogs().observe(getViewLifecycleOwner(), new Observer<List<EntityLog>>() { | |||
@Override | |||
public void onChanged(List<EntityLog> logs) { | |||
if (logs == null) | |||
logs = new ArrayList<>(); | |||
adapter.set(logs); | |||
pbWait.setVisibility(View.GONE); | |||
grpReady.setVisibility(View.VISIBLE); | |||
} | |||
}); | |||
} | |||
} |
@ -0,0 +1,36 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||
xmlns:tools="http://schemas.android.com/tools" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
tools:context=".ActivityView"> | |||
<androidx.recyclerview.widget.RecyclerView | |||
android:id="@+id/rvLog" | |||
android:layout_width="0dp" | |||
android:layout_height="0dp" | |||
android:scrollbarStyle="outsideOverlay" | |||
android:scrollbars="vertical" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
<ProgressBar | |||
android:id="@+id/pbWait" | |||
style="@style/Base.Widget.AppCompat.ProgressBar" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:indeterminate="true" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
<androidx.constraintlayout.widget.Group | |||
android:id="@+id/grpReady" | |||
android:layout_width="0dp" | |||
android:layout_height="0dp" | |||
app:constraint_referenced_ids="rvLog" /> | |||
</androidx.constraintlayout.widget.ConstraintLayout> |
@ -0,0 +1,28 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<TextView | |||
android:id="@+id/tvTime" | |||
android:layout_width="0dp" | |||
android:layout_height="wrap_content" | |||
android:ellipsize="start" | |||
android:singleLine="true" | |||
android:text="12:34:56" | |||
android:textAppearance="@style/TextAppearance.AppCompat.Small" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="@+id/ivEdit" /> | |||
<TextView | |||
android:id="@+id/tvData" | |||
android:layout_width="0dp" | |||
android:layout_height="wrap_content" | |||
android:layout_marginStart="6dp" | |||
android:text="log" | |||
android:textAppearance="@android:style/TextAppearance.Small" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toEndOf="@id/tvTime" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
</androidx.constraintlayout.widget.ConstraintLayout> |
@ -1,179 +1,180 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<!--Generated by crowdin.com--> | |||
<resources> | |||
<string name="app_copyright">Copyright Ⓒ 2018 by M. Bokhorst</string> | |||
<string name="channel_service">Service</string> | |||
<string name="channel_notification">Notifications</string> | |||
<string name="channel_error">Errors</string> | |||
<string name="app_copyright">Telif hakkı Ⓒ 2018 M. Bokhorst \'a aittir</string> | |||
<string name="channel_service">Hizmet</string> | |||
<string name="channel_notification">Bildirimler</string> | |||
<string name="channel_error">Hatalar</string> | |||
<plurals name="title_notification_synchronizing"> | |||
<item quantity="one">Synchronizing %1$d account</item> | |||
<item quantity="other">Synchronizing %1$d accounts</item> | |||
<item quantity="one">%1$d Hesap senkronize ediliyor</item> | |||
<item quantity="other">%1$d Hesap senkronize ediliyor</item> | |||
</plurals> | |||
<plurals name="title_notification_operations"> | |||
<item quantity="one">%1$d operation pending</item> | |||
<item quantity="other">%1$d operations pending</item> | |||
<item quantity="one">%1$d işlem beklemede</item> | |||
<item quantity="other">%1$d işlem beklemede</item> | |||
</plurals> | |||
<plurals name="title_notification_unseen"> | |||
<item quantity="one">%1$d new message</item> | |||
<item quantity="other">%1$d new messages</item> | |||
<item quantity="one">%1$d yeni ileti</item> | |||
<item quantity="other">%1$d yeni ileti</item> | |||
</plurals> | |||
<plurals name="title_notification_unsent"> | |||
<item quantity="one">%1$d unsent message</item> | |||
<item quantity="other">%1$d unsent messages</item> | |||
<item quantity="one">%1$d gönderilmemiş ileti</item> | |||
<item quantity="other">%1$d gönderilmemiş ileti</item> | |||
</plurals> | |||
<string name="title_notification_failed">\'%1$s\' failed</string> | |||
<string name="menu_setup">Setup</string> | |||
<string name="menu_answers">Standard replies</string> | |||
<string name="menu_operations">Operations</string> | |||
<string name="menu_legend">Legend</string> | |||
<string name="menu_faq">FAQ</string> | |||
<string name="menu_pro">Pro features</string> | |||
<string name="menu_privacy">Privacy</string> | |||
<string name="menu_about">About</string> | |||
<string name="menu_other">Other apps</string> | |||
<string name="title_eula">End-user license agreement</string> | |||
<string name="title_agree">I agree</string> | |||
<string name="title_disagree">I disagree</string> | |||
<string name="title_version">Version %1$s</string> | |||
<string name="title_list_accounts">Accounts</string> | |||
<string name="title_list_identities">Identities</string> | |||
<string name="title_edit_account">Edit account</string> | |||
<string name="title_edit_identity">Edit identity</string> | |||
<string name="title_edit_folder">Edit folder</string> | |||
<string name="title_setup">Setup</string> | |||
<string name="title_setup_account">Manage accounts</string> | |||
<string name="title_setup_account_remark">To receive email</string> | |||
<string name="title_setup_identity">Manage identities</string> | |||
<string name="title_setup_identity_remark">To send email</string> | |||
<string name="title_setup_permissions">Grant permissions</string> | |||
<string name="title_setup_permissions_remark">To autocomplete addresses (optional)</string> | |||
<string name="title_setup_to_do">To do</string> | |||
<string name="title_setup_done">Done</string> | |||
<string name="title_setup_dark_theme">Dark theme</string> | |||
<string name="title_advanced">Advanced options</string> | |||
<string name="title_advanced_webview">Use WebView to show external links</string> | |||
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string> | |||
<string name="title_advanced_sanitize">Remove HTML formatting from messages</string> | |||
<string name="title_advanced_compress_imap">Compress IMAP data</string> | |||
<string name="title_advanced_debug">Debug</string> | |||
<string name="title_select">Select …</string> | |||
<string name="title_identity_name">Your name</string> | |||
<string name="title_identity_email">Your email address</string> | |||
<string name="title_identity_reply_to">Reply to address</string> | |||
<string name="title_optional">Optional</string> | |||
<string name="title_account_linked">Linked account</string> | |||
<string name="title_account_name">Account name</string> | |||
<string name="title_account_name_hint">Used to differentiate folders</string> | |||
<string name="title_notification_failed">\'%1$s\' başarısız oldu</string> | |||
<string name="menu_setup">Kurulum</string> | |||
<string name="menu_answers">Standart cevaplar</string> | |||
<string name="menu_operations">İşlemler</string> | |||
<string name="menu_legend">Açıklamalar</string> | |||
<string name="menu_faq">SSS</string> | |||
<string name="menu_pro">Pro özellikleri</string> | |||
<string name="menu_privacy">Gizlilik</string> | |||
<string name="menu_about">Hakkında</string> | |||
<string name="menu_other">Diğer uygulamalar</string> | |||
<string name="title_eula">Son Kullanıcı Lisans Sözleşmesi</string> | |||
<string name="title_agree">Kabul ediyorum</string> | |||
<string name="title_disagree">Kabul etmiyorum</string> | |||
<string name="title_version">Sürüm %1$s</string> | |||
<string name="title_list_accounts">Hesaplar</string> | |||
<string name="title_list_identities">Kimlikler</string> | |||
<string name="title_edit_account">Hesabı Düzenle</string> | |||
<string name="title_edit_identity">Kimliği düzenle</string> | |||
<string name="title_edit_folder">Klasörü düzenle</string> | |||
<string name="title_setup">Kurulum</string> | |||
<string name="title_setup_account">Hesapları Yönet</string> | |||
<string name="title_setup_account_remark">E-posta almak için</string> | |||
<string name="title_setup_identity">Kimlikleri Yönet</string> | |||
<string name="title_setup_identity_remark">E-posta göndermek için</string> | |||
<string name="title_setup_permissions">İzin Ver</string> | |||
<string name="title_setup_permissions_remark">Adresleri otomatik tamamlamak için (isteğe bağlı)</string> | |||
<string name="title_setup_to_do">Yapılacak</string> | |||
<string name="title_setup_done">Bitti</string> | |||
<string name="title_setup_dark_theme">Koyu Tema</string> | |||
<string name="title_advanced">Gelişmiş ayarlar</string> | |||
<string name="title_advanced_webview">Dış bağlantıları göstermek için WebView kullanın</string> | |||
<string name="title_advanced_customtabs"><a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Özel Sekmeler</a> yerine</string> | |||
<string name="title_advanced_sanitize">HTML biçimlendirmesini iletilerden kaldır</string> | |||
<string name="title_advanced_compress_imap">IMAP verilerini sıkıştır</string> | |||
<string name="title_advanced_debug">Hata ayıklama</string> | |||
<string name="title_select">Seçin …</string> | |||
<string name="title_identity_name">Adınız</string> | |||
<string name="title_identity_email">E-posta adresiniz</string> | |||
<string name="title_identity_reply_to">Yanıtlama adresi</string> | |||
<string name="title_optional">İsteğe bağlı</string> | |||
<string name="title_account_linked">Bağlı hesap</string> | |||
<string name="title_account_name">Hesap adı</string> | |||
<string name="title_account_name_hint">Klasörleri ayırt etmek için kullanılır</string> | |||
<string name="title_imap">IMAP</string> | |||
<string name="title_smtp">SMTP</string> | |||
<string name="title_provider">Provider</string> | |||
<string name="title_custom">Custom</string> | |||
<string name="title_host">Host name</string> | |||
<string name="title_provider">Sağlayıcı</string> | |||
<string name="title_custom">Özel</string> | |||
<string name="title_host">Sunucu adı</string> | |||
<string name="title_starttls">STARTTLS</string> | |||
<string name="title_port">Port number</string> | |||
<string name="title_user">User name</string> | |||
<string name="title_password">Password</string> | |||
<string name="title_authorize">Select account</string> | |||
<string name="title_instructions">Instructions</string> | |||
<string name="title_store_sent">Store sent messages (enable if needed only)</string> | |||
<string name="title_interval">Keep-alive interval (minutes)</string> | |||
<string name="title_synchronize_account">Synchronize (receive messages)</string> | |||
<string name="title_synchronize_identity">Synchronize (send messages)</string> | |||
<string name="title_primary_account">Primary (default account)</string> | |||
<string name="title_primary_identity">Primary (default identity)</string> | |||
<string name="title_check">Check</string> | |||
<string name="title_no_name">Name missing</string> | |||
<string name="title_no_email">Email address missing</string> | |||
<string name="title_no_account">Account missing</string> | |||
<string name="title_no_host">Host name missing</string> | |||
<string name="title_no_port">Port number missing</string> | |||
<string name="title_no_user">User name missing</string> | |||
<string name="title_no_password">Password missing</string> | |||
<string name="title_no_drafts">Drafts folder missing</string> | |||
<string name="title_no_idle">IDLE not supported</string> | |||
<string name="title_no_uidplus">UIDPLUS not supported</string> | |||
<string name="title_account_delete">Delete this account permanently?</string> | |||
<string name="title_identity_delete">Delete this identity permanently?</string> | |||
<string name="title_synchronize_folder">Synchronize (receive messages)</string> | |||
<string name="title_after">Synchronize (days)</string> | |||
<string name="title_folder_unified">Unified inbox</string> | |||
<string name="title_folder_inbox">Inbox</string> | |||
<string name="title_folder_outbox">Outbox</string> | |||
<string name="title_folder_all">Archive</string> | |||
<string name="title_folder_drafts">Drafts</string> | |||
<string name="title_folder_trash">Trash</string> | |||
<string name="title_port">Port numarası</string> | |||
<string name="title_user">Kullanıcı adı</string> | |||
<string name="title_password">Şifre</string> | |||
<string name="title_authorize">Hesap seç</string> | |||
<string name="title_instructions">Talimatlar</string> | |||
<string name="title_store_sent">Gönderilen iletileri kaydet (yalnızca gerekliyse etkinleştir)</string> | |||
<string name="title_interval">Canlı tutma aralığı (dakika)</string> | |||
<string name="title_synchronize_account">Senkronize et (iletileri al)</string> | |||
<string name="title_synchronize_identity">Senkronize et (iletileri gönder)</string> | |||
<string name="title_primary_account">Birincil (varsayılan hesap)</string> | |||
<string name="title_primary_identity">Birincil (varsayılan kimlik)</string> | |||
<string name="title_check">Kontrol et</string> | |||
<string name="title_no_name">İsim eksik</string> | |||
<string name="title_no_email">E-posta adresi eksik</string> | |||
<string name="title_no_account">Hesap bilgisi eksik</string> | |||
<string name="title_no_host">Sunucu adı eksik</string> | |||
<string name="title_no_port">Port numarası eksik</string> | |||
<string name="title_no_user">Kullanıcı adı eksik</string> | |||
<string name="title_no_password">Parola Eksik</string> | |||
<string name="title_no_drafts">Taslaklar klasörü eksik</string> | |||
<string name="title_no_idle">IDLE desteklenmiyor</string> | |||
<string name="title_no_uidplus">UIDPLUS desteklenmiyor</string> | |||
<string name="title_account_delete">Bu hesabı kalıcı olarak sil?</string> | |||
<string name="title_identity_delete">Bu kimliği kalıcı olarak sil?</string> | |||
<string name="title_synchronize_folder">Senkronize et (iletileri al)</string> | |||
<string name="title_after">Senkronize (günler)</string> | |||
<string name="title_folder_unified">Birleştirilmiş gelen kutusu</string> | |||
<string name="title_folder_inbox">Gelen kutusu</string> | |||
<string name="title_folder_outbox">Giden Kutusu</string> | |||
<string name="title_folder_all">Arşiv</string> | |||
<string name="title_folder_drafts">Taslaklar</string> | |||
<string name="title_folder_trash">Çöp Kutusu</string> | |||
<string name="title_folder_junk">Spam</string> | |||
<string name="title_folder_sent">Sent</string> | |||
<string name="title_folder_user">User</string> | |||
<string name="title_folder_primary">Folders primary account</string> | |||
<string name="title_folder_thread">Message thread</string> | |||
<string name="title_no_messages">No messages</string> | |||
<string name="title_link">link</string> | |||
<string name="title_image">image</string> | |||
<string name="title_show_images">Show images</string> | |||
<string name="title_subject_reply">Re: %1$s</string> | |||
<string name="title_subject_forward">Fwd: %1$s</string> | |||
<string name="title_thread">Show thread</string> | |||
<string name="title_seen">Mark read</string> | |||
<string name="title_unseen">Mark unread</string> | |||
<string name="title_forward">Forward</string> | |||
<string name="title_reply_all">Reply to all</string> | |||
<string name="title_trash">Trash</string> | |||
<string name="title_folder_sent">Gönderilen</string> | |||
<string name="title_folder_user">Kullanıcı</string> | |||
<string name="title_folder_primary">Klasörler birincil hesap</string> | |||
<string name="title_folder_thread">İleti dizisi</string> | |||
<string name="title_no_messages">İleti yok</string> | |||
<string name="title_link">bağlantı</string> | |||
<string name="title_image">resim</string> | |||
<string name="title_show_images">Resimleri göster</string> | |||
<string name="title_subject_reply">Ynt: %1$s</string> | |||
<string name="title_subject_forward">İlet: %1$s</string> | |||
<string name="title_thread">Konuyu göster</string> | |||
<string name="title_seen">Okundu olarak işaretle</string> | |||
<string name="title_unseen">Okunmadı olarak işaretle</string> | |||
<string name="title_forward">İlet</string> | |||
<string name="title_reply_all">Tümünü yanıtla</string> | |||
<string name="title_trash">Çöp Kutusu</string> | |||
<string name="title_spam">Spam</string> | |||
<string name="title_move">Move</string> | |||
<string name="title_archive">Archive</string> | |||
<string name="title_reply">Reply</string> | |||
<string name="title_moving">Moving message to %1$s</string> | |||
<string name="title_no_viewer">No viewer app available for %1$s</string> | |||
<string name="title_attachment_saved">Attachment saved</string> | |||
<string name="title_ask_delete">Delete message permanently?</string> | |||
<string name="title_ask_spam">Report message as spam?</string> | |||
<string name="title_compose">Compose</string> | |||
<string name="title_from">From:</string> | |||
<string name="title_to">To:</string> | |||
<string name="title_reply_to">Reply to:</string> | |||
<string name="title_move">Taşı</string> | |||
<string name="title_archive">Arşivle</string> | |||
<string name="title_reply">Yanıtla</string> | |||
<string name="title_moving">İleti şuraya taşınıyor %1$s</string> | |||
<string name="title_no_viewer">%1$s için kullanılabilir hiçbir görüntüleme uygulaması yok</string> | |||
<string name="title_attachment_saved">Ek kaydedildi</string> | |||
<string name="title_ask_delete">İletiyi kalıcı olarak sil?</string> | |||
<string name="title_ask_spam">İletiyi spam olarak raporla?</string> | |||
<string name="title_compose">Oluştur</string> | |||
<string name="title_from">Gönderen:</string> | |||
<string name="title_to">Alıcı:</string> | |||
<string name="title_reply_to">Yanıt adresi:</string> | |||
<string name="title_cc">CC:</string> | |||
<string name="title_bcc">BCC:</string> | |||
<string name="title_subject">Subject:</string> | |||
<string name="title_body_hint">Your message</string> | |||
<string name="title_save">Save</string> | |||
<string name="title_send">Send</string> | |||
<string name="title_show_addresses">Show CC/BCC</string> | |||
<string name="title_add_attachment">Add attachment</string> | |||
<string name="title_no_openpgp">OpenPGP not available</string> | |||
<string name="title_not_encrypted">Encrypted message not found</string> | |||
<string name="title_encrypt">Encrypt</string> | |||
<string name="title_decrypt">Decrypt</string> | |||
<string name="title_from_missing">Sender missing</string> | |||
<string name="title_to_missing">Recipient missing</string> | |||
<string name="title_attachments_missing">Attachments still loading</string> | |||
<string name="title_draft_trashed">Draft trashed</string> | |||
<string name="title_draft_saved">Draft saved</string> | |||
<string name="title_queued">Sending message</string> | |||
<string name="title_search">Search</string> | |||
<string name="title_search_hint">Search sender/subject/text</string> | |||
<string name="title_searching">Searching \'%1$s\'</string> | |||
<string name="title_answer_reply">Standard reply</string> | |||
<string name="title_answer_name">Answer name</string> | |||
<string name="title_answer_text">Answer text</string> | |||
<string name="title_subject">Konu:</string> | |||
<string name="title_body_hint">Mesajınız</string> | |||
<string name="title_save">Kaydet</string> | |||
<string name="title_send">Gönder</string> | |||
<string name="title_show_addresses">CC/BCC göster</string> | |||
<string name="title_add_attachment">Ek ekle</string> | |||
<string name="title_no_openpgp">OpenPGP mevcut değil</string> | |||
<string name="title_not_encrypted">Şifreli ileti bulunamadı</string> | |||
<string name="title_encrypt">Şifrele</string> | |||
<string name="title_decrypt">Şifre çöz</string> | |||
<string name="title_from_missing">Gönderici Eksik</string> | |||
<string name="title_to_missing">Alıcı eksik</string> | |||
<string name="title_attachments_missing">Ekler hala yükleniyor</string> | |||
<string name="title_draft_trashed">Taslak çöp kutusuna atıldı</string> | |||
<string name="title_draft_saved">Taslak kaydedildi</string> | |||
<string name="title_queued">İleti gönderiliyor</string> | |||
<string name="title_search">Ara</string> | |||
<string name="title_search_hint">Gönderen/konu/metin ara</string> | |||
<string name="title_searching">\'%1$s\' aranıyor</string> | |||
<string name="title_answer_reply">Standart yanıt</string> | |||
<string name="title_answer_name">Yanıt adı</string> | |||
<string name="title_answer_text">Yanıt metni</string> | |||
<string name="title_legend_cc">CC/BCC</string> | |||
<string name="title_legend_attachment">Attachment</string> | |||
<string name="title_legend_synchronize">Synchronize</string> | |||
<string name="title_legend_primary">Primary</string> | |||
<string name="title_legend_disconnected">Disconnected</string> | |||
<string name="title_legend_connecting">Connecting</string> | |||
<string name="title_legend_connected">Connected</string> | |||
<string name="title_legend_synchronizing">Synchronizing</string> | |||
<string name="title_legend_closing">Closing</string> | |||
<string name="title_hint_actions">Swipe left to trash; swipe right to archive (if available); long press to mark read/unread</string> | |||
<string name="title_understood">Understood</string> | |||
<string name="title_pro_feature">This is a pro feature</string> | |||
<string name="title_pro_list">List of pro features</string> | |||
<string name="title_pro_purchase">Buy</string> | |||
<string name="title_pro_hint">Buying pro features will allow you to use all current and future pro features and will keep this app maintained and supported</string> | |||
<string name="title_pro_activated">All pro features are activated</string> | |||
<string name="title_pro_valid">All pro features activated</string> | |||
<string name="title_pro_invalid">Invalid response</string> | |||
<string name="title_debug_info">Debug info</string> | |||
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string> | |||
<string name="title_legend_attachment">Ek</string> | |||
<string name="title_legend_synchronize">Senkronize et</string> | |||
<string name="title_legend_primary">Birincil</string> | |||
<string name="title_legend_disconnected">Bağlantı kesildi</string> | |||
<string name="title_legend_connecting">Bağlanıyor</string> | |||
<string name="title_legend_connected">Bağlandı</string> | |||
<string name="title_legend_synchronizing">Senkronize ediliyor</string> | |||
<string name="title_legend_closing">Kapatılıyor</string> | |||
<string name="title_hint_actions">Silmek için sola kaydırın; arşivlemek (mümkün ise) için sağa kaydırın; okundu/okunmadı işaretlemek için uzun basın</string> | |||
<string name="title_understood">Anlaşıldı</string> | |||
<string name="title_pro_feature">Bu Pro özelliğidir</string> | |||
<string name="title_pro_list">Pro özelliklerin listesi</string> | |||
<string name="title_pro_purchase">Satın al</string> | |||
<string name="title_pro_hint">Pro özelliklerin satın alınması, mevcut ve gelecekteki tüm pro özelliklerin kullanılmasına izin verecek ve bu uygulamayı ayakta tutup destekleyecek</string> | |||
<string name="title_pro_activated">Tüm pro özellikleri etkinleştirildi</string> | |||
<string name="title_pro_valid">Tüm pro özellikleri etkinleştirildi</string> | |||
<string name="title_pro_invalid">Geçersiz yanıt</string> | |||
<string name="title_log">Log</string> | |||
<string name="title_debug_info">Hata ayıklama bilgisi</string> | |||
<string name="title_debug_info_remark">Lütfen sorunu açıklayın ve sorunun zamanını belirtin:</string> | |||
</resources> |