Skip to content

Commit

Permalink
make timelapse and bracketing available for non-touchscreen devices
Browse files Browse the repository at this point in the history
  • Loading branch information
obs committed Jul 10, 2016
1 parent b9eaebd commit 7ac92f1
Showing 1 changed file with 78 additions and 14 deletions.
92 changes: 78 additions & 14 deletions app/src/main/java/com/obsidium/bettermanual/ManualActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ else if (m_bracketActive)
private int m_curPreviewMagnificationMaxPos;
private PreviewNavView m_previewNavView;

enum DialMode { shutter, aperture, iso, exposure, mode,
enum DialMode { shutter, aperture, iso, exposure, mode, drive,
timelapse, bracket,
timelapseSetInterval, timelapseSetPicCount,
bracketSetStep, bracketSetPicCount
}
Expand All @@ -148,6 +149,8 @@ public void run()
private boolean m_takingPicture;
private boolean m_shutterKeyDown;

private boolean m_haveTouchscreen;

private static final int VIEW_FLAG_GRID = 0x01;
private static final int VIEW_FLAG_HISTOGRAM = 0x02;
private static final int VIEW_FLAG_EXPOSURE = 0x04;
Expand Down Expand Up @@ -225,12 +228,7 @@ protected void onCreate(Bundle savedInstanceState)

m_prefs = new Preferences(this);

// Hide timelapse and bracketing icons for non-touchscreen devices
if (getDeviceInfo().getModel().compareTo("ILCE-5100") != 0)
{
m_ivBracket.setVisibility(View.GONE);
m_ivTimelapse.setVisibility(View.GONE);
}
m_haveTouchscreen = getDeviceInfo().getModel().compareTo("ILCE-5100") == 0;
}

private class SurfaceSwipeTouchListener extends OnSwipeTouchListener
Expand Down Expand Up @@ -615,12 +613,14 @@ private void toggleSceneMode()
{
case manual:
newMode = CameraEx.ParametersModifier.SCENE_MODE_APERTURE_PRIORITY;
setDialMode(m_haveApertureControl ? DialMode.aperture : DialMode.iso);
if (m_dialMode != DialMode.mode)
setDialMode(m_haveApertureControl ? DialMode.aperture : DialMode.iso);
setMinShutterSpeed(m_prefs.getMinShutterSpeed());
break;
default:
newMode = CameraEx.ParametersModifier.SCENE_MODE_MANUAL_EXPOSURE;
setDialMode(DialMode.shutter);
if (m_dialMode != DialMode.mode)
setDialMode(DialMode.shutter);
setMinShutterSpeed(-1);
break;
}
Expand Down Expand Up @@ -1443,16 +1443,14 @@ public void onShutterStopped(CameraEx cameraEx)
}
});
m_tvHint.setText("\uE04C to abort");
// Stop preview
// Stop preview (doesn't seem to preserve battery life?)
m_camera.getNormalCamera().stopPreview();

// Hide some bottom views
m_prefs.setViewFlags(m_viewFlags);
m_viewFlags = 0;
updateViewVisibility();

// TODO: disable cam auto shutdown

// Start countdown
m_countdown = COUNTDOWN_SECONDS;
m_tvMsg.setText(String.format("Starting in %d...", m_countdown));
Expand Down Expand Up @@ -1569,9 +1567,21 @@ private void setDialMode(DialMode newMode)
m_tvISO.setTextColor(newMode == DialMode.iso ? Color.GREEN : Color.WHITE);
m_tvExposureCompensation.setTextColor(newMode == DialMode.exposure ? Color.GREEN : Color.WHITE);
if (newMode == DialMode.mode)
m_ivMode.setColorFilter(Color.argb(255, 0, 255, 0));
m_ivMode.setColorFilter(Color.GREEN);
else
m_ivMode.setColorFilter(null);
if (newMode == DialMode.drive)
m_ivDriveMode.setColorFilter(Color.GREEN);
else
m_ivDriveMode.setColorFilter(null);
if (newMode == DialMode.timelapse)
m_ivTimelapse.setColorFilter(Color.GREEN);
else
m_ivTimelapse.setColorFilter(null);
if (newMode == DialMode.bracket)
m_ivBracket.setColorFilter(Color.GREEN);
else
m_ivBracket.setColorFilter(null);
}

private void movePreviewVertical(int delta)
Expand All @@ -1596,6 +1606,12 @@ else if (newX < -m_curPreviewMagnificationMaxPos)
m_camera.setPreviewMagnification(m_curPreviewMagnification, m_curPreviewMagnificationPos);
}

@Override
protected boolean onEnterKeyUp()
{
return true;
}

@Override
protected boolean onEnterKeyDown()
{
Expand Down Expand Up @@ -1676,9 +1692,30 @@ else if (m_dialMode == DialMode.mode)
toggleSceneMode();
return true;
}
else if (m_dialMode == DialMode.drive)
{
toggleDriveMode();
return true;
}
else if (m_dialMode == DialMode.timelapse)
{
prepareTimelapse();
return true;
}
else if (m_dialMode == DialMode.bracket)
{
prepareBracketing();
return true;
}
return false;
}

@Override
protected boolean onUpKeyDown()
{
return true;
}

@Override
protected boolean onUpKeyUp()
{
Expand All @@ -1695,6 +1732,12 @@ protected boolean onUpKeyUp()
}
}

@Override
protected boolean onDownKeyDown()
{
return true;
}

@Override
protected boolean onDownKeyUp()
{
Expand All @@ -1720,16 +1763,31 @@ protected boolean onDownKeyUp()
setDialMode(DialMode.exposure);
break;
case exposure:
setDialMode(DialMode.mode);
setDialMode(m_haveTouchscreen ? DialMode.shutter : DialMode.mode);
break;
case mode:
setDialMode(DialMode.drive);
break;
case drive:
setDialMode(DialMode.timelapse);
break;
case timelapse:
setDialMode(DialMode.bracket);
break;
case bracket:
setDialMode(DialMode.shutter);
break;
}
return true;
}
}

@Override
protected boolean onLeftKeyDown()
{
return true;
}

@Override
protected boolean onLeftKeyUp()
{
Expand All @@ -1741,6 +1799,12 @@ protected boolean onLeftKeyUp()
return false;
}

@Override
protected boolean onRightKeyDown()
{
return true;
}

@Override
protected boolean onRightKeyUp()
{
Expand Down

0 comments on commit 7ac92f1

Please sign in to comment.