Versehentliches schließen aufpoppender Erinnerungsfenster

Ideen, wie TV-Browser verbessert werden kann
Antworten
Zipola
Junior Member
Beiträge: 11
Registriert: 04 Aug 2007, 21:19

Versehentliches schließen aufpoppender Erinnerungsfenster

Beitrag von Zipola »

Hallo,

kennt ihr das nicht... ihr arbeitet angestrengt am PC, tackatackatackatackatackatacka klappern die Tasten und plötzlich erscheint irgend ein Fenster und ist auch gleich wieder weg weil ihr keine Zeit zum reagieren hattet und zufällig kurz danach die Enter oder ESC-Taste gedrückt habt?
Mir passierte das täglich. Mehrmals. ;-) Sogar mit der Maus hab ich es schon mal versehentlich weggeklickt.

Deshalb hab ich mir mal ein paar Stunden Zeit genommen (ich hab ja keine Ahnung von Java) und ein paar Zeilen Code zusammen kopiert um das Problem irgendwie zu lösen.
Mit dem folgenden Patch wird in den Einstellungen des Erinnerungs-Plugins ein neuer Wert hinzugefügt (unter "Sonstige Einstellungen" -> "Zehntel-Sekunden..." steht dahinter).
Da muss man noch nachbessern, weil ich mich mit dem Layout nicht auskenne.
Dieser Wert bestimmt die Zeit in der das Erinnerungsfenster nicht auf Tastatur und Maus reagiert.
Ist der Wert 0 (der Standardwert) verhält sich die Erinnerung wie bisher.
Ein Wert > 0 sperrt für die angegebene Zeit das Erinnerungsfenster für alle Tastatur und Mauseingaben.
Nur ALT+F4 schließt noch das Erinnerungsfenster.

Code: Alles auswählen

--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/ReminderFrame.java	Wed Dec 24 11:01:00 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/ReminderFrame.java	Sun Sep 06 18:39:38 2015
@@ -32,6 +32,8 @@
 import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;               // Reminder alarm, Mouse and Keyboard delay
+import java.awt.event.KeyListener;            // Reminder alarm, Mouse and Keyboard delay
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowFocusListener;
@@ -136,6 +138,10 @@
   private Timer mAutoCloseTimer;
   private int mRemainingSecs;
 
+  // Reminder alarm, Mouse and Keyboard delay
+  private Timer mMouseAndKeyboardTimer;
+  private KeyListener mDelayKeyListener;
+  
   /**
    * automatically close when current time is larger than this point in time
    */
@@ -368,6 +374,54 @@
     jcontentPane.add(scrollPane, BorderLayout.CENTER);
     jcontentPane.add(btnPanel,BorderLayout.SOUTH);
 
+
+    
+    
+    // Reminder alarm, Mouse and Keyboard delay START
+    String str = ReminderPlugin.getInstance().getSettings().getProperty("MouseAndKeyboardDelay","0");
+    int intMouseAndKeyboardDelay = Integer.parseInt(str);
+    
+    if (intMouseAndKeyboardDelay > 0) {
+        mCloseBt.setEnabled(false);
+        mReminderCB.setEnabled(false);
+        
+        // Disable ESC Key
+        mDelayKeyListener = new KeyListener() {
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+                    e.consume();
+                }
+            }
+            @Override
+            public void keyTyped(KeyEvent e) {
+                // Auto-generated method stub
+            }
+            @Override
+            public void keyReleased(KeyEvent e) {
+                // Auto-generated method stub
+            }
+        };
+        mDialog.addKeyListener(mDelayKeyListener);
+    }
+    
+    mMouseAndKeyboardTimer = new Timer(intMouseAndKeyboardDelay * 100, new ActionListener() {
+        public void actionPerformed(final ActionEvent evt) {
+            mReminderCB.setEnabled(true);
+            mCloseBt.setEnabled(true);
+            mReminderCB.requestFocus();
+            mDialog.removeKeyListener(mDelayKeyListener);
+        }
+      });
+    mMouseAndKeyboardTimer.start();
+    // Reminder alarm, Mouse and Keyboard delay END
+
+    
+    
+    
+    
     mCloseBt.addActionListener(new ActionListener() {
       public void actionPerformed(final ActionEvent event) {
         close();


--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/ReminderSettingsTab.java	Wed Dec 24 11:01:00 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/ReminderSettingsTab.java	Sun Sep 06 18:44:34 2015
@@ -108,6 +108,10 @@
   private JRadioButton mScrollTimeToNext, mScrollTimeOnDay;
 
   private JComboBox mDefaultReminderEntryList;
+  
+  //Reminder alarm, Mouse and Keyboard delay
+  private JSpinner mMouseAndKeyboardDelayTimeSp;
+  private JLabel mMouseAndKeyboardDelayTimeLabel;
 
   private String mExecFileStr, mExecParamStr;
   private Object mTestSound;
@@ -372,6 +376,39 @@
       }
     });
 
+
+    
+    
+    
+    
+    // Reminder alarm, Mouse and Keyboard delay START
+    int intMouseAndKeyboardDelay = 0;
+    try {
+      String asString = mSettings.getProperty("MouseAndKeyboardDelay", "0");
+      intMouseAndKeyboardDelay = Integer.parseInt(asString);
+
+      if(intMouseAndKeyboardDelay < 0) {
+        intMouseAndKeyboardDelay = 0;
+      }
+      if(intMouseAndKeyboardDelay > 100) {
+          intMouseAndKeyboardDelay = 100;
+        }
+    } catch (Exception exc) {
+      // ignore
+    }
+
+    mMouseAndKeyboardDelayTimeSp = new JSpinner(new SpinnerNumberModel(intMouseAndKeyboardDelay , 0 , 100 , 5));
+    pb.add(mMouseAndKeyboardDelayTimeSp, CC.xyw(2,33,1));
+    mMouseAndKeyboardDelayTimeLabel = new JLabel(mLocalizer.msg("MouseAndKeyboardDelayTimeLabel","Tenth of a second. A value of 20 means 2 seconds delay."));
+    pb.add(mMouseAndKeyboardDelayTimeLabel, CC.xy(4 , 33));
+    // Reminder alarm, Mouse and Keyboard delay END
+    
+   
+    
+    
+    
+    
+    
     pb.addSeparator(DefaultMarkingPrioritySelectionPanel.getTitle(), CC.xyw(1,34,10));
     pb.add(mMarkingsPanel = DefaultMarkingPrioritySelectionPanel.createPanel(ReminderPlugin.getInstance().getMarkPriority(),false,false),CC.xyw(2,36,9));
 
@@ -583,6 +620,9 @@
     mSettings.setProperty("provideTab", String.valueOf(mProvideTab.isSelected()));
     
     mSettings.setProperty(ReminderPropertyDefaults.SCROLL_TIME_TYPE_NEXT, String.valueOf(mScrollTimeToNext.isSelected()));
+    
+    // Reminder alarm, Mouse and Keyboard delay
+    mSettings.setProperty("MouseAndKeyboardDelay", mMouseAndKeyboardDelayTimeSp.getValue().toString());
     
     for(int i = 0; i < mReminderWindowPosition.length; i++) {
       if(mReminderWindowPosition[i].isSelected()) {


--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/reminderplugin.properties	Wed Dec 24 11:00:58 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/reminderplugin.properties	Sun Sep 06 18:32:38 2015
@@ -101,6 +101,7 @@
 ReminderSettingsTab.timeButtonBehaviour           = Time buttons behaviour:
 ReminderSettingsTab.timeButtonScrollDay           = Scroll to occurence of time on shown day in list
 ReminderSettingsTab.timeButtonScrollNext          = Scroll to next occurence of time from shown programs onward
+ReminderSettingsTab.MouseAndKeyboardDelayTimeLabel= Tenth of a second. A value of 20 means 2 seconds delay.
 
 ReminderTableModel.all      = All
 ReminderTableModel.timeMenu = Reminder time


--- tvbrowser-3.4.1.0_ORI/src/tvbrowser/extras/reminderplugin/reminderplugin_de.properties	Wed Dec 24 11:01:00 2014
+++ tvbrowser-3.4.1.0_MOD/src/tvbrowser/extras/reminderplugin/reminderplugin_de.properties	Sun Sep 06 18:33:03 2015
@@ -105,6 +105,7 @@
 ReminderSettingsTab.timeButtonBehaviour           = Verhalten der Zeitkn\u00F6pfe:
 ReminderSettingsTab.timeButtonScrollDay           = Zur Zeit am angezeigten Tag springen
 ReminderSettingsTab.timeButtonScrollNext          = Von aktueller Ansicht vorw\u00E4rts zum n\u00E4chsten Auftreten der Zeit springen
+ReminderSettingsTab.MouseAndKeyboardDelayTimeLabel= Zehntel-Sekunden. Der Wert 20 ergibt 2 Sekunden Wartezeit.
 
 ReminderTableModel.all      = Alle
 ReminderTableModel.timeMenu = Erinnerungszeitpunkt
Zipola
Junior Member
Beiträge: 11
Registriert: 04 Aug 2007, 21:19

Re: Versehentliches schließen aufpoppender Erinnerungsfenste

Beitrag von Zipola »

Kann ich meinen Beitrag nicht mehr nachbearbeiten?

Ein kleiner Bugfix: mMouseAndKeyboardTimer.stop();

Code: Alles auswählen

+    mMouseAndKeyboardTimer = new Timer(intMouseAndKeyboardDelay * 100, new ActionListener() {
+        public void actionPerformed(final ActionEvent evt) {
+            mReminderCB.setEnabled(true);
+            mCloseBt.setEnabled(true);
+            mReminderCB.requestFocus();
+            mDialog.removeKeyListener(mDelayKeyListener);
+            mMouseAndKeyboardTimer.stop();
+        }
+      });
Antworten