make new folder options work

This commit is contained in:
B. Petersen 2018-12-23 02:38:33 +01:00
parent 87192dca99
commit 66ea30f75e
No known key found for this signature in database
GPG key ID: 3B88E92DEA8E9AFC
6 changed files with 76 additions and 12 deletions

View file

@ -198,8 +198,8 @@ android {
} }
defaultConfig { defaultConfig {
versionCode 404 versionCode 405
versionName "0.92.0" versionName "0.93.0"
applicationId "chat.delta.androidii" applicationId "chat.delta.androidii"
minSdkVersion 14 minSdkVersion 14

View file

@ -899,6 +899,7 @@ messenger-backend/src/dc_dehtml.c \
messenger-backend/src/dc_hash.c \ messenger-backend/src/dc_hash.c \
messenger-backend/src/dc_imap.c \ messenger-backend/src/dc_imap.c \
messenger-backend/src/dc_job.c \ messenger-backend/src/dc_job.c \
messenger-backend/src/dc_jobthread.c \
messenger-backend/src/dc_key.c \ messenger-backend/src/dc_key.c \
messenger-backend/src/dc_keyring.c \ messenger-backend/src/dc_keyring.c \
messenger-backend/src/dc_loginparam.c \ messenger-backend/src/dc_loginparam.c \

View file

@ -262,6 +262,24 @@ JNIEXPORT void Java_com_b44t_messenger_DcContext_interruptImapIdle(JNIEnv *env,
} }
JNIEXPORT void Java_com_b44t_messenger_DcContext_performSentboxFetch(JNIEnv *env, jobject obj)
{
dc_perform_sentbox_fetch(get_dc_context(env, obj));
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_performSentboxIdle(JNIEnv *env, jobject obj)
{
dc_perform_sentbox_idle(get_dc_context(env, obj));
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_interruptSentboxIdle(JNIEnv *env, jobject obj)
{
dc_interrupt_sentbox_idle(get_dc_context(env, obj));
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_performMvboxFetch(JNIEnv *env, jobject obj) JNIEXPORT void Java_com_b44t_messenger_DcContext_performMvboxFetch(JNIEnv *env, jobject obj)
{ {
dc_perform_mvbox_fetch(get_dc_context(env, obj)); dc_perform_mvbox_fetch(get_dc_context(env, obj));

View file

@ -72,6 +72,9 @@ public class DcContext {
public native void performMvboxFetch (); public native void performMvboxFetch ();
public native void performMvboxIdle (); public native void performMvboxIdle ();
public native void interruptMvboxIdle (); public native void interruptMvboxIdle ();
public native void performSentboxFetch ();
public native void performSentboxIdle ();
public native void interruptSentboxIdle ();
public native void performSmtpJobs (); public native void performSmtpJobs ();
public native void performSmtpIdle (); public native void performSmtpIdle ();
public native void maybeNetwork (); public native void maybeNetwork ();

View file

@ -75,6 +75,9 @@ public class ApplicationDcContext extends DcContext {
mvboxWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "mvboxWakeLock"); mvboxWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "mvboxWakeLock");
mvboxWakeLock.setReferenceCounted(false); // if the idle-thread is killed for any reasons, it is better not to rely on reference counting mvboxWakeLock.setReferenceCounted(false); // if the idle-thread is killed for any reasons, it is better not to rely on reference counting
sentboxWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "sentboxWakeLock");
sentboxWakeLock.setReferenceCounted(false); // if the idle-thread is killed for any reasons, it is better not to rely on reference counting
smtpWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "smtpWakeLock"); smtpWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "smtpWakeLock");
smtpWakeLock.setReferenceCounted(false); // if the idle-thread is killed for any reasons, it is better not to rely on reference counting smtpWakeLock.setReferenceCounted(false); // if the idle-thread is killed for any reasons, it is better not to rely on reference counting
@ -269,6 +272,11 @@ public class ApplicationDcContext extends DcContext {
public Thread mvboxThread = null; public Thread mvboxThread = null;
private PowerManager.WakeLock mvboxWakeLock = null; private PowerManager.WakeLock mvboxWakeLock = null;
private boolean sentboxThreadStartedVal;
private final Object sentboxThreadStartedCond = new Object();
public Thread sentboxThread = null;
private PowerManager.WakeLock sentboxWakeLock = null;
private boolean smtpThreadStartedVal; private boolean smtpThreadStartedVal;
private final Object smtpThreadStartedCond = new Object(); private final Object smtpThreadStartedCond = new Object();
public Thread smtpThread = null; public Thread smtpThread = null;
@ -349,6 +357,38 @@ public class ApplicationDcContext extends DcContext {
} }
if (sentboxThread == null || !sentboxThread.isAlive()) {
synchronized (sentboxThreadStartedCond) {
sentboxThreadStartedVal = false;
}
sentboxThread = new Thread(() -> {
sentboxWakeLock.acquire();
synchronized (sentboxThreadStartedCond) {
sentboxThreadStartedVal = true;
sentboxThreadStartedCond.notifyAll();
}
Log.i(TAG, "###################### SENTBOX-Thread started. ######################");
while (true) {
sentboxWakeLock.acquire();
performSentboxFetch();
sentboxWakeLock.release();
performSentboxIdle();
}
}, "sentboxThread");
sentboxThread.setPriority(Thread.NORM_PRIORITY-1);
sentboxThread.start();
} else {
if ((flags & INTERRUPT_IDLE) != 0) {
interruptSentboxIdle();
}
}
if (smtpThread == null || !smtpThread.isAlive()) { if (smtpThread == null || !smtpThread.isAlive()) {
synchronized (smtpThreadStartedCond) { synchronized (smtpThreadStartedCond) {
@ -392,6 +432,12 @@ public class ApplicationDcContext extends DcContext {
} }
} }
synchronized (sentboxThreadStartedCond) {
while (!sentboxThreadStartedVal) {
sentboxThreadStartedCond.wait();
}
}
synchronized (smtpThreadStartedCond) { synchronized (smtpThreadStartedCond) {
while (!smtpThreadStartedVal) { while (!smtpThreadStartedVal) {
smtpThreadStartedCond.wait(); smtpThreadStartedCond.wait();

View file

@ -62,20 +62,16 @@ public class AdvancedPreferenceFragment extends CorrectedPreferenceFragment
inboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_inbox_watch"); inboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_inbox_watch");
inboxWatchCheckbox.setOnPreferenceChangeListener((preference, newValue) -> { inboxWatchCheckbox.setOnPreferenceChangeListener((preference, newValue) -> {
// boolean enabled = (Boolean) newValue; boolean enabled = (Boolean) newValue;
// dcContext.setConfigInt("inbox_watch", enabled? 1 : 0); dcContext.setConfigInt("inbox_watch", enabled? 1 : 0);
// return true; return true;
Toast.makeText(getActivity(), "Not yet implemented.", Toast.LENGTH_LONG).show();
return false;
}); });
sentboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_sentbox_watch"); sentboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_sentbox_watch");
sentboxWatchCheckbox.setOnPreferenceChangeListener((preference, newValue) -> { sentboxWatchCheckbox.setOnPreferenceChangeListener((preference, newValue) -> {
// boolean enabled = (Boolean) newValue; boolean enabled = (Boolean) newValue;
// dcContext.setConfigInt("sentbox_watch", enabled? 1 : 0); dcContext.setConfigInt("sentbox_watch", enabled? 1 : 0);
// return true; return true;
Toast.makeText(getActivity(), "Not yet implemented.", Toast.LENGTH_LONG).show();
return false;
}); });
mvboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_mvbox_watch"); mvboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_mvbox_watch");