Advertisement
nigatigga

countdown when off

Aug 21st, 2014
504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.85 KB | None | 0 0
  1. package com.spicycurryman.getdisciplined10.app;
  2.  
  3. import android.app.ActionBar;
  4. import android.app.AlertDialog;
  5. import android.content.Context;
  6. import android.content.DialogInterface;
  7. import android.content.Intent;
  8. import android.content.SharedPreferences;
  9. import android.content.pm.ActivityInfo;
  10. import android.graphics.Typeface;
  11. import android.os.Bundle;
  12. import android.os.CountDownTimer;
  13. import android.support.v7.app.ActionBarActivity;
  14. import android.text.Spannable;
  15. import android.text.SpannableString;
  16. import android.util.Log;
  17. import android.view.Menu;
  18. import android.view.MenuInflater;
  19. import android.view.View;
  20. import android.view.View.OnClickListener;
  21. import android.widget.Button;
  22. import android.widget.CheckBox;
  23. import android.widget.CompoundButton;
  24. import android.widget.SeekBar;
  25. import android.widget.SeekBar.OnSeekBarChangeListener;
  26. import android.widget.TextView;
  27.  
  28. import com.triggertrap.seekarc.SeekArc;
  29.  
  30. import java.util.Date;
  31.  
  32. public class MainActivity extends ActionBarActivity {
  33. private SeekArc mSeekArc;
  34. private SeekBar mRotation;
  35. private SeekBar mStartAngle;
  36. private SeekBar mSweepAngle;
  37. private SeekBar mArcWidth;
  38. private SeekBar mProgressWidth;
  39. private CheckBox mRoundedEdges;
  40. private CheckBox mTouchInside;
  41. private CheckBox mClockwise;
  42. private TextView mSeekArcProgress;
  43. private TextView mSeekArcMinuteProgress;
  44. private TextView mSeekArcSecondProgress;
  45.  
  46. private Button block_button_text;
  47. private Button start_timer_text;
  48.  
  49. //will show the time
  50. private TextView number_text;
  51.  
  52. private TextView minute_text;
  53. private TextView second_text;
  54.  
  55.  
  56. private TextView little_hour_text;
  57. private TextView little_minute_text;
  58. private TextView little_second_text;
  59.  
  60. private TextView little_hour_text2;
  61. private TextView little_minute_text2;
  62. private TextView little_second_text2;
  63.  
  64.  
  65.  
  66.  
  67. long millicurrentime; //current date in milliseconds when timer started
  68. long milliendtime; // date when it will end
  69. long newmillis; // new it is reopened
  70. long currentretrieve;
  71. long endretrieve;
  72.  
  73. CountDownTimer countDownTimer; // built in android class CountDownTimer
  74. long totalTimeCountInMilliseconds;
  75. long timeBlinkInMilliseconds; // start time of start blinking
  76. boolean blink;
  77.  
  78. // Consider showing drawable scrubber after pressing H M or S
  79.  
  80. SharedPreferences timerPreferences;
  81. SharedPreferences endtimer;
  82. Button block_button1;
  83. Button start_timer;
  84.  
  85. int hourint, minuteint,secondint;
  86.  
  87. public boolean onCreateOptionsMenu(Menu menu){
  88. MenuInflater inflater = getMenuInflater();
  89. inflater.inflate(R.menu.main, menu);
  90. return true;
  91. }
  92.  
  93. View previousView;
  94.  
  95.  
  96. @Override
  97. protected void onCreate(Bundle savedInstanceState) {
  98. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  99. super.onCreate(savedInstanceState);
  100. setContentView(R.layout.merge);
  101.  
  102.  
  103. //set views
  104.  
  105. start_timer = (Button) findViewById(R.id.start_button);
  106. number_text = (TextView) findViewById(R.id.hour_progress_number);
  107. minute_text = (TextView) findViewById(R.id.minute_progress_number);
  108. second_text = (TextView) findViewById(R.id.second_progress_number);
  109.  
  110.  
  111. //getReferenceOfViews (); // get all views
  112. setActionListeners ();
  113.  
  114. // This determine what the actual "countdown" time will be.
  115. //totalTimeCountInMilliseconds = 60 * 1000; // time count for 3 minutes = 180 seconds
  116. //timeBlinkInMilliseconds = 30 * 1000;
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. //Make sure you find out why it appears after a whole 1 second after the app appears
  124. SpannableString s = new SpannableString("GetDisciplined");
  125. s.setSpan(new TypefaceSpan(this, "roboto-lightitalic.ttf"), 0, s.length(),
  126. Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  127.  
  128. // Update the action bar title with the TypefaceSpan instance
  129. ActionBar actionBar = getActionBar();
  130. actionBar.setTitle(s);
  131. // set the action bar in this activity as the home
  132. actionBar.setHomeButtonEnabled(true);
  133.  
  134.  
  135.  
  136.  
  137. //Listeners for the buttons
  138. addListenerOnButton();
  139.  
  140.  
  141.  
  142. //Editing Button Text
  143.  
  144. block_button_text = (Button)findViewById(R.id.block_button);
  145. block_button_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/robotocondensed-bold.ttf"));
  146.  
  147. start_timer_text = (Button)findViewById(R.id.start_button);
  148. start_timer_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/robotocondensed-bold.ttf"));
  149.  
  150. number_text = (TextView)findViewById(R.id.hour_progress_number);
  151. number_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  152.  
  153. minute_text = (TextView)findViewById(R.id.minute_progress_number);
  154. minute_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  155.  
  156. second_text = (TextView)findViewById(R.id.second_progress_number);
  157. second_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  158.  
  159. little_hour_text = (TextView)findViewById(R.id.hourtext);
  160. little_hour_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  161.  
  162. little_minute_text = (TextView)findViewById(R.id.minutetext);
  163. little_minute_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  164.  
  165. little_second_text = (TextView)findViewById(R.id.secondtext);
  166. little_second_text.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  167.  
  168. little_hour_text2 = (TextView)findViewById(R.id.little_hour_text2);
  169. little_hour_text2.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  170.  
  171. little_minute_text2 = (TextView)findViewById(R.id.little_minute_text2);
  172. little_minute_text2.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  173.  
  174. little_second_text2 = (TextView)findViewById(R.id.little_second_text2);
  175. little_second_text2.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/roboto-light.ttf"));
  176.  
  177.  
  178.  
  179.  
  180. mSeekArc = (SeekArc) findViewById(R.id.seekArc);
  181.  
  182.  
  183. //Here is the actual "hour progress number" aka the TextView that changes as the scrubber is dragged around
  184. mSeekArcProgress = (TextView) findViewById(R.id.hour_progress_number);
  185.  
  186. mSeekArcMinuteProgress = (TextView) findViewById(R.id.minute_progress_number);
  187.  
  188. mSeekArcSecondProgress = (TextView) findViewById(R.id.second_progress_number);
  189.  
  190. timerPreferences = getPreferences(MODE_APPEND);
  191. endtimer= getPreferences(MODE_APPEND);
  192.  
  193.  
  194.  
  195. //This is retrieving the value from SharedPreferences.
  196. Date newDate = new Date(timerPreferences.getLong("time", 0));
  197. currentretrieve = newDate.getTime();
  198.  
  199. Log.e("This is the new:", currentretrieve+"");
  200.  
  201. Date endDate = new Date(endtimer.getLong("time", 0));
  202. endretrieve = endDate.getTime();
  203.  
  204.  
  205. //This is getting the date currently WHEN REOPENED.
  206. Date openagain = new Date(System.currentTimeMillis());
  207. newmillis = openagain.getTime();
  208.  
  209.  
  210.  
  211. if(newmillis> currentretrieve){
  212. start_timer.performClick();
  213. //builder.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
  214. }
  215.  
  216.  
  217.  
  218.  
  219.  
  220. //make textview selectable
  221.  
  222. View.OnClickListener clickListener = new View.OnClickListener() {
  223. @Override
  224. public void onClick(View v) {
  225. TextView previousText = (TextView) previousView;
  226. TextView curText = (TextView) v;
  227. // If the clicked view is selected, do nothing
  228. if (curText.isSelected()) {
  229. //curText.setSelected(false);
  230. //curText.setTextColor(getResources().getColor(R.color.red_highlight));
  231. } else { // If this isn't selected, deselect the previous one (if any)
  232. if (previousText != null && previousText.isSelected()) {
  233. previousText.setSelected(false);
  234. previousText.setTextColor(getResources().getColor(R.color.red_highlight));
  235. }
  236. curText.setSelected(true);
  237. curText.setTextColor(getResources().getColor(R.color.black));
  238. previousView = v;
  239. }
  240.  
  241. if(v.getId() == R.id.hourtext){
  242. //corresponding button logic should below here
  243. mSeekArc.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
  244.  
  245. @Override
  246. public void onStopTrackingTouch(SeekArc seekArc) {
  247. }
  248. @Override
  249. public void onStartTrackingTouch(SeekArc seekArc) {
  250. }
  251.  
  252.  
  253. //This sets the actual string for the hours
  254. @Override
  255. public void onProgressChanged(SeekArc seekArc, int progress,
  256. boolean fromUser) {
  257.  
  258. int progress_count = 0;
  259.  
  260. for (int i=0;i<24;i=i+1)
  261. {
  262.  
  263. if (progress ==120) {
  264. mSeekArcProgress.setText("24");
  265.  
  266. }
  267. else if (progress == progress_count)
  268. {
  269. mSeekArcProgress.setText(String.valueOf(String.format("%02d",i)));
  270. }
  271.  
  272. progress_count = progress_count + 5;
  273.  
  274. }
  275. }
  276. });
  277. } else if (v.getId() == R.id.minutetext) {
  278. //corresponding button logic should below here
  279.  
  280. mSeekArc.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
  281.  
  282.  
  283. @Override
  284. public void onStopTrackingTouch(SeekArc seekArc) {
  285. }
  286. @Override
  287. public void onStartTrackingTouch(SeekArc seekArc) {
  288. }
  289.  
  290.  
  291. //This sets the actual string for the minutes
  292. @Override
  293. public void onProgressChanged(SeekArc seekArc, int progress,
  294. boolean fromUser) {
  295. int progress_count = 0;
  296.  
  297. for (int i=0;i<120;i++)
  298. {
  299.  
  300. if (progress ==120) {
  301. mSeekArcMinuteProgress.setText("00");
  302.  
  303. }
  304. else if (progress == progress_count)
  305. {
  306. mSeekArcMinuteProgress.setText(String.valueOf(String.format("%02d",i)));
  307. }
  308.  
  309. progress_count = progress_count + 2;
  310.  
  311.  
  312. }
  313.  
  314. }
  315. });
  316. } else if (v.getId() == R.id.secondtext) {
  317. //corresponding button logic should below here
  318. mSeekArc.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() {
  319.  
  320. @Override
  321. public void onStopTrackingTouch(SeekArc seekArc) {
  322. }
  323. @Override
  324. public void onStartTrackingTouch(SeekArc seekArc) {
  325. }
  326.  
  327.  
  328. //This sets the actual string for the seconds
  329. @Override
  330. public void onProgressChanged(SeekArc seekArc, int progress,
  331. boolean fromUser) {
  332.  
  333.  
  334.  
  335. // so ur setting it to HALF of what "progress" is = to
  336.  
  337. int progress_count = 0;
  338.  
  339. for (int i=0;i<60;i++)
  340. {
  341.  
  342.  
  343. if (progress ==120) {
  344. mSeekArcSecondProgress.setText("00");
  345.  
  346. }
  347. else if (progress == progress_count)
  348. {
  349. mSeekArcSecondProgress.setText(String.valueOf(String.format("%02d",i)));
  350. }
  351.  
  352. progress_count = progress_count + 2;
  353.  
  354.  
  355. }
  356.  
  357. }
  358. });
  359. }
  360.  
  361. }
  362. };
  363. findViewById(R.id.hourtext).setOnClickListener(clickListener);
  364. findViewById(R.id.minutetext).setOnClickListener(clickListener);
  365. findViewById(R.id.secondtext).setOnClickListener(clickListener);
  366.  
  367.  
  368. mRotation = (SeekBar) findViewById(R.id.rotation);
  369. mStartAngle = (SeekBar) findViewById(R.id.startAngle);
  370. mSweepAngle = (SeekBar) findViewById(R.id.sweepAngle);
  371. mArcWidth = (SeekBar) findViewById(R.id.arcWidth);
  372. mProgressWidth = (SeekBar) findViewById(R.id.progressWidth);
  373. mRoundedEdges = (CheckBox) findViewById(R.id.roundedEdges);
  374. mTouchInside = (CheckBox) findViewById(R.id.touchInside);
  375. mClockwise = (CheckBox) findViewById(R.id.clockwise);
  376.  
  377. mRotation.setProgress(mSeekArc.getArcRotation());
  378. mStartAngle.setProgress(mSeekArc.getStartAngle());
  379. mSweepAngle.setProgress(mSeekArc.getSweepAngle());
  380. mArcWidth.setProgress(mSeekArc.getArcWidth());
  381. mProgressWidth.setProgress(mSeekArc.getProgressWidth());
  382.  
  383.  
  384. mRotation.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  385. @Override
  386. public void onStopTrackingTouch(SeekBar arg0) {
  387.  
  388. }
  389. @Override
  390. public void onStartTrackingTouch(SeekBar arg0) {
  391. }
  392.  
  393. @Override
  394. public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
  395. mSeekArc.setArcRotation(progress);
  396. mSeekArc.invalidate();
  397. }
  398. });
  399.  
  400. mStartAngle.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  401. @Override
  402. public void onStopTrackingTouch(SeekBar arg0) {
  403.  
  404. }
  405. @Override
  406. public void onStartTrackingTouch(SeekBar arg0) {
  407. }
  408.  
  409. @Override
  410. public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
  411. mSeekArc.setStartAngle(progress);
  412. mSeekArc.invalidate();
  413. }
  414. });
  415.  
  416. mSweepAngle.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  417. @Override
  418. public void onStopTrackingTouch(SeekBar arg0) {
  419.  
  420. }
  421. @Override
  422. public void onStartTrackingTouch(SeekBar arg0) {
  423. }
  424.  
  425. @Override
  426. public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
  427. mSeekArc.setSweepAngle(progress);
  428. mSeekArc.invalidate();
  429. }
  430. });
  431.  
  432. mArcWidth.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  433. @Override
  434. public void onStopTrackingTouch(SeekBar arg0) {
  435.  
  436. }
  437. @Override
  438. public void onStartTrackingTouch(SeekBar arg0) {
  439. }
  440.  
  441. @Override
  442. public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
  443. mSeekArc.setArcWidth(progress);
  444. mSeekArc.invalidate();
  445. }
  446. });
  447.  
  448. mProgressWidth.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  449. @Override
  450. public void onStopTrackingTouch(SeekBar arg0) {
  451.  
  452. }
  453. @Override
  454. public void onStartTrackingTouch(SeekBar arg0) {
  455. }
  456.  
  457. @Override
  458. public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
  459. mSeekArc.setProgressWidth(progress);
  460. mSeekArc.invalidate();
  461. }
  462. });
  463.  
  464. mRoundedEdges.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  465. @Override
  466. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  467. mSeekArc.setRoundedEdges(isChecked);
  468. mSeekArc.invalidate();
  469. }
  470. });
  471.  
  472. mTouchInside.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  473. @Override
  474. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  475. mSeekArc.setTouchInSide(false);
  476. }
  477. });
  478.  
  479. mClockwise.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  480. @Override
  481. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  482. mSeekArc.setClockwise(isChecked);
  483. mSeekArc.invalidate();
  484. }
  485. });
  486.  
  487. }
  488.  
  489. // for the on click activity responses for each of the 3 buttons on the menu
  490. public void addListenerOnButton() {
  491.  
  492. final Context context = this;
  493.  
  494. block_button1 = (Button) findViewById(R.id.block_button);
  495.  
  496. block_button1.setOnClickListener(new OnClickListener() {
  497.  
  498. @Override
  499. public void onClick(View arg0) {
  500.  
  501. Intent intent = new Intent(context, BlockActivity.class);
  502. startActivity(intent);
  503.  
  504. }
  505.  
  506. });
  507.  
  508. }
  509.  
  510.  
  511. private void setActionListeners() {
  512.  
  513. number_text = (TextView) findViewById(R.id.hour_progress_number);
  514. minute_text = (TextView) findViewById(R.id.minute_progress_number);
  515. second_text = (TextView) findViewById(R.id.second_progress_number);
  516.  
  517.  
  518.  
  519.  
  520. start_timer.setOnClickListener(new View.OnClickListener() {
  521.  
  522.  
  523. @Override
  524. public void onClick(View view) {
  525.  
  526. new AlertDialog.Builder( MainActivity.this )
  527. .setMessage( "Are you sure you want to block the selected apps for the set amount of time?" )
  528. .setPositiveButton("Yeah man!", new DialogInterface.OnClickListener() {
  529.  
  530. public void onClick(DialogInterface dialog, int which) {
  531. Log.d("AlertDialog", "Positive");
  532.  
  533.  
  534. Date currenttime = new Date(System.currentTimeMillis());
  535.  
  536. millicurrentime = currenttime.getTime();
  537. Log.e("This is the current time: ", millicurrentime + "");
  538. timerPreferences = getPreferences(MODE_APPEND);
  539. SharedPreferences.Editor editor = timerPreferences.edit();
  540. editor.putLong("time", millicurrentime);
  541. editor.commit();
  542.  
  543.  
  544. hourint = Integer.valueOf(number_text.getText().toString());
  545.  
  546. minuteint = Integer.valueOf(minute_text.getText().toString());
  547.  
  548. secondint = Integer.valueOf(second_text.getText().toString());
  549.  
  550. Log.i("YourActivity", "Hours: " + hourint);
  551.  
  552. Log.i("YourActivity", "Minutes: " + minuteint);
  553.  
  554. Log.i("YourActivity", "Seconds: " + secondint);
  555.  
  556. totalTimeCountInMilliseconds = ((hourint * 60 * 60) + (minuteint * 60) + (secondint)) * 1000;
  557.  
  558. if ((endretrieve - newmillis) >0) {
  559.  
  560. totalTimeCountInMilliseconds = endretrieve-newmillis;
  561.  
  562. }
  563.  
  564. // time count
  565. timeBlinkInMilliseconds = 30 * 1000;
  566.  
  567.  
  568. milliendtime = millicurrentime + totalTimeCountInMilliseconds;
  569.  
  570. endtimer= getPreferences(MODE_APPEND);
  571. SharedPreferences.Editor endeditor = endtimer.edit();
  572. endeditor.putLong("time", milliendtime);
  573. endeditor.commit();
  574.  
  575.  
  576. countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
  577. // 500 means, onTick function will be called at every 500 milliseconds
  578.  
  579. @Override
  580. public void onTick(long leftTimeInMilliseconds) {
  581.  
  582. long seconds = leftTimeInMilliseconds / 1000;
  583. mSeekArc.setVisibility(View.INVISIBLE);
  584. start_timer.setVisibility(View.INVISIBLE);
  585. block_button1.setVisibility(View.INVISIBLE);
  586.  
  587.  
  588. if (leftTimeInMilliseconds < timeBlinkInMilliseconds) {
  589. // textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText);
  590. // change the style of the textview .. giving a red alert style
  591.  
  592. if (blink) {
  593. number_text.setVisibility(View.VISIBLE);
  594. minute_text.setVisibility(View.VISIBLE);
  595. second_text.setVisibility(View.VISIBLE);
  596.  
  597.  
  598. // if blink is true, textview will be visible
  599. } else {
  600. number_text.setVisibility(View.INVISIBLE);
  601. minute_text.setVisibility(View.INVISIBLE);
  602. second_text.setVisibility(View.INVISIBLE);
  603.  
  604.  
  605. }
  606.  
  607. blink = !blink; // toggle the value of blink
  608. }
  609.  
  610. second_text.setText(String.format("%02d", seconds % 60));
  611. minute_text.setText(String.format("%02d", (seconds / 60) % 60));
  612. number_text.setText(String.format("%02d", seconds / 3600)); // format the textview to show the easily readable format
  613. }
  614.  
  615.  
  616. @Override
  617. public void onFinish() {
  618. // this function will be called when the timecount is finished
  619. //textViewShowTime.setText("Time up!");
  620. number_text.setVisibility(View.VISIBLE);
  621. minute_text.setVisibility(View.VISIBLE);
  622. second_text.setVisibility(View.VISIBLE);
  623. mSeekArc.setVisibility(View.VISIBLE);
  624. start_timer.setVisibility(View.VISIBLE);
  625. block_button1.setVisibility(View.VISIBLE);
  626.  
  627.  
  628. }
  629.  
  630. }.start();
  631. }
  632. })
  633. .setNegativeButton("Nope!", new DialogInterface.OnClickListener() {
  634. public void onClick(DialogInterface dialog, int which) {
  635. Log.d("AlertDialog", "Negative");
  636. dialog.cancel();
  637. }
  638. });
  639.  
  640.  
  641.  
  642. // textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalText);
  643.  
  644.  
  645. }
  646. });
  647. }
  648. private void getReferenceOfViews() {
  649.  
  650. start_timer = (Button) findViewById(R.id.start_button);
  651. number_text = (TextView) findViewById(R.id.hour_progress_number);
  652. minute_text = (TextView) findViewById(R.id.minute_progress_number);
  653. second_text = (TextView) findViewById(R.id.second_progress_number);
  654.  
  655.  
  656. }
  657.  
  658. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement