Mailing List Archive

[PATCH] Re: Recorded Programs menu
On Mon, Nov 11, 2002 at 11:49:57AM -0600, rob wrote:
> I think it might be nice to consolidate the "Watch A Recording" and
> "Delete Recordings" menus into one "Recorded Programs" menu, where you
> can watch or delete a previously recorded show. I have found myself

I totally agree. This works for me. Right now space plays and
return deletes. This is clearly suboptimal. :-) Someone who knows QT
might want to figure out how to change MyListView::keyPressEvent to
emit dPressed.

-Jim

Index: mythfrontend.pro
===================================================================
RCS file: /var/lib/cvs/MC/programs/mythfrontend/mythfrontend.pro,v
retrieving revision 1.21
diff -u -r1.21 mythfrontend.pro
--- mythfrontend.pro 29 Oct 2002 04:58:52 -0000 1.21
+++ mythfrontend.pro 11 Nov 2002 19:55:50 -0000
@@ -28,8 +28,8 @@
TARGETDEPS += ../../libs/libavcodec/libavcodec.a

# Input
-HEADERS += scheduler.h playbackbox.h deletebox.h programlistitem.h
+HEADERS += scheduler.h playbackbox.h programlistitem.h
HEADERS += viewscheduled.h

-SOURCES += main.cpp scheduler.cpp playbackbox.cpp deletebox.cpp
+SOURCES += main.cpp scheduler.cpp playbackbox.cpp
SOURCES += programlistitem.cpp viewscheduled.cpp
Index: main.cpp
===================================================================
RCS file: /var/lib/cvs/MC/programs/mythfrontend/main.cpp,v
retrieving revision 1.41
diff -u -r1.41 main.cpp
--- main.cpp 30 Oct 2002 18:20:36 -0000 1.41
+++ main.cpp 11 Nov 2002 19:48:15 -0000
@@ -10,7 +10,6 @@
#include "tv.h"
#include "scheduler.h"
#include "playbackbox.h"
-#include "deletebox.h"
#include "viewscheduled.h"

#include "libmyth/themedmenu.h"
@@ -51,18 +50,6 @@
return 0;
}

-int startDelete(MythContext *context)
-{
- QSqlDatabase *db = QSqlDatabase::database();
- DeleteBox delbox(context, tvList.begin().data(), db);
-
- delbox.Show();
-
- delbox.exec();
-
- return 0;
-}
-
void startTV(void)
{
TV *tv = tvList.begin().data();
@@ -95,17 +82,15 @@
Scheduler *sched = new Scheduler(db);

bool asked = false;
- int secsleft;
TV *nexttv = NULL;

ProgramInfo *nextRecording = NULL;
QDateTime nextrectime;
- QDateTime curtime;
QDateTime lastupdate = QDateTime::currentDateTime().addDays(-1);

while (1)
{
- curtime = QDateTime::currentDateTime();
+ QDateTime curtime = QDateTime::currentDateTime();

if (sched->CheckForChanges() ||
(lastupdate.date().day() != curtime.date().day()))
@@ -136,7 +121,7 @@

if (nextRecording)
{
- secsleft = curtime.secsTo(nextrectime);
+ int secsleft = curtime.secsTo(nextrectime);

//cout << secsleft << " seconds until " << nextRecording->title
// << endl;
@@ -184,8 +169,6 @@
startPlayback(context);
else if (sel == "tv_schedule")
startGuide(context);
- else if (sel == "tv_delete")
- startDelete(context);
else if (sel == "tv_fix_conflicts")
startManaged(context);
else if (sel == "tv_setup")
Index: playbackbox.cpp
===================================================================
RCS file: /var/lib/cvs/MC/programs/mythfrontend/playbackbox.cpp,v
retrieving revision 1.30
diff -u -r1.30 playbackbox.cpp
--- playbackbox.cpp 31 Oct 2002 20:23:49 -0000 1.30
+++ playbackbox.cpp 11 Nov 2002 19:48:15 -0000
@@ -6,6 +6,7 @@
#include <qsqldatabase.h>
#include <qlistview.h>
#include <qdatetime.h>
+#include <qprogressbar.h>
#include <qapplication.h>
#include <qtimer.h>
#include <qimage.h>
@@ -18,8 +19,9 @@
#include "NuppelVideoPlayer.h"
#include "yuv2rgb.h"

-#include "libmyth/mythcontext.h"
#include "libmyth/programinfo.h"
+#include "libmyth/dialogbox.h"
+#include "libmyth/mythcontext.h"

PlaybackBox::PlaybackBox(MythContext *context, TV *ltv, QSqlDatabase *ldb,
QWidget *parent, const char *name)
@@ -42,28 +44,30 @@
QFont::Bold));
setCursor(QCursor(Qt::BlankCursor));

- QVBoxLayout *vbox = new QVBoxLayout(this, (int)(20 * wmult));
+ QVBoxLayout *vbox = new QVBoxLayout(this, (int)(15 * wmult));

- QLabel *label = new QLabel("Select a recording to view:", this);
+ QLabel *label = new QLabel("View and Delete:", this);
vbox->addWidget(label);

- QListView *listview = new QListView(this);
-
+ listview = new MyListView(this);
listview->addColumn("Date");
listview->addColumn("Title");
+ listview->addColumn("Size");

- listview->setColumnWidth(0, (int)(220 * wmult));
- listview->setColumnWidth(1, (int)(520 * wmult));
- listview->setColumnWidthMode(0, QListView::Manual);
- listview->setColumnWidthMode(1, QListView::Manual);
+ listview->setColumnWidth(0, (int)(200 * wmult));
+ listview->setColumnWidth(1, (int)(455 * wmult));
+ listview->setColumnWidth(2, (int)(90 * wmult));
+ //listview->setColumnWidthMode(0, QListView::Manual);
+ //listview->setColumnWidthMode(1, QListView::Manual);
+ //listview->setColumnWidthMode(2, QListView::Manual);

listview->setSorting(-1, false);
listview->setAllColumnsShowFocus(TRUE);

connect(listview, SIGNAL(returnPressed(QListViewItem *)), this,
- SLOT(selected(QListViewItem *)));
+ SLOT(remove(QListViewItem *)));
connect(listview, SIGNAL(spacePressed(QListViewItem *)), this,
- SLOT(selected(QListViewItem *)));
+ SLOT(play(QListViewItem *)));
connect(listview, SIGNAL(selectionChanged(QListViewItem *)), this,
SLOT(changed(QListViewItem *)));

@@ -74,8 +78,8 @@
ProgramListItem *item = NULL;

thequery = "SELECT chanid,starttime,endtime,title,subtitle,description "
- "FROM recorded ORDER BY starttime;";
-
+ "FROM recorded ORDER BY starttime DESC;";
+
query = db->exec(thequery);

if (query.isActive() && query.numRowsAffected() > 0)
@@ -119,11 +123,11 @@
else
{
proginfo->chanstr = "#" + proginfo->chanid;
- proginfo->channame = "#" + proginfo->chanid;
- proginfo->chansign = "#" + proginfo->chanid;
+ proginfo->channame = proginfo->chanstr;
+ proginfo->chansign = proginfo->chanstr;
}

- item = new ProgramListItem(context, listview, proginfo, 0, tv,
+ item = new ProgramListItem(context, listview, proginfo, 1, tv,
fileprefix);
}
}
@@ -132,7 +136,7 @@
// TODO: no recordings
}

- listview->setFixedHeight((int)(300 * hmult));
+ listview->setFixedHeight((int)(225 * hmult));

QHBoxLayout *hbox = new QHBoxLayout(vbox, (int)(10 * wmult));

@@ -168,8 +172,8 @@
grid->setColStretch(1, 1);
grid->setRowStretch(4, 1);

- if (m_context->GetNumSetting("GeneratePreviewPixmap") == 1 ||
- m_context->GetNumSetting("PlaybackPreview") == 1)
+ if (context->GetNumSetting("GeneratePreviewPixmap") == 1 ||
+ context->GetNumSetting("PlaybackPreview") == 1)
{
QPixmap temp((int)(160 * wmult), (int)(120 * hmult));

@@ -181,6 +185,13 @@
else
pixlabel = NULL;

+ freespace = new QLabel(" ", this);
+ vbox->addWidget(freespace);
+
+ progressbar = new QProgressBar(this);
+ UpdateProgressBar();
+ vbox->addWidget(progressbar);
+
nvp = NULL;
timer = new QTimer(this);

@@ -264,13 +275,22 @@
{
killPlayer();

+ if (!title)
+ return;
+
ProgramListItem *pgitem = (ProgramListItem *)lvitem;
if (!pgitem)
+ {
+ title->setText("");
+ date->setText("");
+ chan->setText("");
+ subtitle->setText("");
+ description->setText("");
+ if (pixlabel)
+ pixlabel->setPixmap(QPixmap(0, 0));
return;
+ }

- if (!title)
- return;
-
ProgramInfo *rec = pgitem->getProgramInfo();

if (m_context->GetNumSetting("PlaybackPreview") == 1)
@@ -321,7 +341,26 @@
timer->start(1000 / 30);
}

-void PlaybackBox::selected(QListViewItem *lvitem)
+static void *SpawnDelete(void *param)
+{
+ QString *filenameptr = (QString *)param;
+ QString filename = *filenameptr;
+
+ unlink(filename.ascii());
+
+ filename += ".png";
+ unlink(filename.ascii());
+
+ filename = *filenameptr;
+ filename += ".bookmark";
+ unlink(filename.ascii());
+
+ delete filenameptr;
+
+ return NULL;
+}
+
+void PlaybackBox::play(QListViewItem *lvitem)
{
killPlayer();

@@ -336,6 +375,156 @@

startPlayer(rec);
timer->start(1000 / 30);
+}
+
+void PlaybackBox::remove(QListViewItem *lvitem)
+{
+ killPlayer();
+
+ ProgramListItem *pgitem = (ProgramListItem *)lvitem;
+ ProgramInfo *rec = pgitem->getProgramInfo();
+
+ QString message = "Are you sure you want to delete:<br><br>";
+ message += rec->title;
+ message += "<br>";
+
+ QDateTime startts = rec->startts;
+ QDateTime endts = rec->endts;
+
+ QString dateformat = m_context->GetSetting("DateFormat");
+ if (dateformat == "")
+ dateformat = "ddd MMMM d";
+ QString timeformat = m_context->GetSetting("TimeFormat");
+ if (timeformat == "")
+ timeformat = "h:mm AP";
+
+ QString timedate = endts.date().toString(dateformat) + QString(", ") +
+ startts.time().toString(timeformat) + QString(" - ") +
+ endts.time().toString(timeformat);
+
+ message += timedate;
+ message += "<br>";
+ if (rec->subtitle != "(null)")
+ message += rec->subtitle;
+ message += "<br>";
+ if (rec->description != "(null)")
+ message += rec->description;
+
+ message += "<br><br>It will be gone forever.";
+
+ DialogBox diag(m_context, message);
+
+ diag.AddButton("Yes, get rid of it");
+ diag.AddButton("No, keep it, I changed my mind");
+
+ diag.Show();
+
+ int result = diag.exec();
+
+ if (result == 1)
+ {
+ QString filename = rec->GetRecordFilename(fileprefix);
+
+ QSqlQuery query;
+ QString thequery;
+
+ QString startts = rec->startts.toString("yyyyMMddhhmm");
+ startts += "00";
+ QString endts = rec->endts.toString("yyyyMMddhhmm");
+ endts += "00";
+
+ thequery = QString("DELETE FROM recorded WHERE chanid = %1 AND title "
+ "= \"%2\" AND starttime = %3 AND endtime = %4;")
+ .arg(rec->chanid).arg(rec->title).arg(startts)
+ .arg(endts);
+
+ query = db->exec(thequery);
+ if (!query.isActive())
+ {
+ cerr << "DB Error: recorded program deletion failed, SQL query "
+ << "was:" << endl;
+ cerr << thequery << endl;
+ }
+
+ QString *fileptr = new QString(filename);
+
+ pthread_t deletethread;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+ pthread_create(&deletethread, &attr, SpawnDelete, fileptr);
+
+ if (lvitem->itemBelow())
+ {
+ listview->setCurrentItem(lvitem->itemBelow());
+ listview->setSelected(lvitem->itemBelow(), true);
+ }
+ else if (lvitem->itemAbove())
+ {
+ listview->setCurrentItem(lvitem->itemAbove());
+ listview->setSelected(lvitem->itemAbove(), true);
+ }
+ else
+ changed(NULL);
+
+ delete lvitem;
+ UpdateProgressBar();
+ }
+ else if (m_context->GetNumSetting("PlaybackPreview") == 1)
+ startPlayer(rec);
+
+ setActiveWindow();
+ raise();
+
+ timer->start(1000 / 30);
+}
+
+void PlaybackBox::GetFreeSpaceStats(int &totalspace, int &usedspace)
+{
+ QString command;
+ command.sprintf("df -k -P %s", fileprefix.ascii());
+
+ FILE *file = popen(command.ascii(), "r");
+
+ if (!file)
+ {
+ totalspace = -1;
+ usedspace = -1;
+ }
+ else
+ {
+ char buffer[1024];
+ fgets(buffer, 1024, file);
+ fgets(buffer, 1024, file);
+
+ char dummy[1024];
+ int dummyi;
+ sscanf(buffer, "%s %d %d %d %s %s\n", dummy, &totalspace, &usedspace,
+ &dummyi, dummy, dummy);
+
+ totalspace /= 1000;
+ usedspace /= 1000;
+ pclose(file);
+ }
+}
+
+void PlaybackBox::UpdateProgressBar(void)
+{
+ int total, used;
+ GetFreeSpaceStats(total, used);
+
+ QString usestr;
+ char text[128];
+ sprintf(text, "Storage: %d,%03d MB used out of %d,%03d MB total",
+ used / 1000, used % 1000,
+ total / 1000, total % 1000);
+
+ usestr = text;
+
+ freespace->setText(usestr);
+ progressbar->setTotalSteps(total);
+ progressbar->setProgress(used);
}

void PlaybackBox::timeout(void)
Index: playbackbox.h
===================================================================
RCS file: /var/lib/cvs/MC/programs/mythfrontend/playbackbox.h,v
retrieving revision 1.8
diff -u -r1.8 playbackbox.h
--- playbackbox.h 31 Oct 2002 20:23:49 -0000 1.8
+++ playbackbox.h 11 Nov 2002 19:48:15 -0000
@@ -8,7 +8,9 @@

class QSqlDatabase;
class QListViewItem;
+class MyListView;
class QLabel;
+class QProgressBar;
class TV;
class NuppelVideoPlayer;
class RingBuffer;
@@ -27,11 +29,15 @@
void Show();

protected slots:
- void selected(QListViewItem *);
+ void remove(QListViewItem *);
+ void play(QListViewItem *);
void changed(QListViewItem *);
void timeout(void);

private:
+ void GetFreeSpaceStats(int &totalspace, int &usedspace);
+ void UpdateProgressBar(void);
+
QSqlDatabase *db;
TV *tv;

@@ -44,6 +50,11 @@
QLabel *chan;
QLabel *pixlabel;

+ MyListView *listview;
+
+ QLabel *freespace;
+ QProgressBar *progressbar;
+
float wmult, hmult;
int descwidth;
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Monday 11 November 2002 03:03 pm, Jim Radford wrote:
> On Mon, Nov 11, 2002 at 11:49:57AM -0600, rob wrote:
> > I think it might be nice to consolidate the "Watch A Recording" and
> > "Delete Recordings" menus into one "Recorded Programs" menu, where you
> > can watch or delete a previously recorded show. I have found myself
>
> I totally agree. This works for me. Right now space plays and
> return deletes. This is clearly suboptimal. :-) Someone who knows QT
> might want to figure out how to change MyListView::keyPressEvent to
> emit dPressed.

Sorry, but no. The UIs are staying separate. I've already explained why on
the list.

Isaac
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
Isaac Richards wrote:

>On Monday 11 November 2002 03:03 pm, Jim Radford wrote:
>
>
>>On Mon, Nov 11, 2002 at 11:49:57AM -0600, rob wrote:
>>
>>
>>>I think it might be nice to consolidate the "Watch A Recording" and
>>>"Delete Recordings" menus into one "Recorded Programs" menu, where you
>>>can watch or delete a previously recorded show. I have found myself
>>>
>>>
>>I totally agree. This works for me. Right now space plays and
>>return deletes. This is clearly suboptimal. :-) Someone who knows QT
>>might want to figure out how to change MyListView::keyPressEvent to
>>emit dPressed.
>>
>>
>
>Sorry, but no. The UIs are staying separate. I've already explained why on
>the list.
>
>Isaac
>
Is this the message you're referring to?
http://www.snowman.net/pipermail/mythtv-dev/2002-August/000200.html

That's about all I found where sender has "Isaac" and message_body has
"menu". If that's not what you're talking about, could you give me hint
of where to find it? (What month, subject, etc.)

Otherwise, what's the issue with having "Play" available at any of the
menus where it lists the prerecorded shows? Just wondering...
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Monday 11 November 2002 04:10 pm, rob wrote:
> Is this the message you're referring to?
> http://www.snowman.net/pipermail/mythtv-dev/2002-August/000200.html

Pretty much, yup. That's how things will work, eventually.

> Otherwise, what's the issue with having "Play" available at any of the
> menus where it lists the prerecorded shows? Just wondering...

UI clutter.

Also, I'm going to be adding a optional dialog at the end of playback that
asks if you want to go ahead and delete the recording.

Isaac
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
Isaac Richards wrote:

>UI clutter.
>
>Also, I'm going to be adding a optional dialog at the end of playback that
>asks if you want to go ahead and delete the recording.
>
Nah, I don't like it. The "Watch a Recording" and "Delete Recording"
screens are the same (List of recorded shows, show name, airdate,
channel, episode, description, and preview) except the text at the top,
and "Delete Recording" has the storage used/total text and bar graph at
the bottom.

What clutter are you talking about? On-screen clutter or feature
clutter per menu? I wouldn't consider 3 options on a menu (play,
delete, re-encode) for a show to be too many, and the only other things
from those individual menus that you can do now are scroll up or down,
or go back to the main menu. The main menu would have one fewer choice,
so it would be cleaner.

For an optional dialog at the end of playback that asks if you want to
delete the recording, that's an extra keystroke for every program I play
when it's finished. If it's a menu option in the "Manage Recordings"
menu, the highlighted option will be the last one played, so I can just
hit "Delete" when the program is finished playing for the ones I want to
delete, and no extra keystroke for the ones I want to keep.

If you need more space on the "Manage Recordings" screen, change the
storage display to something like "Used: 14.1/25.0GB", and shrink the
bar graph. I would think the "re-encode" option would display some
other menu, like the "schedule once/schedule all" type display from the
"Schedule a Recording" screen.


Hey, I just thought of another potential feature. My digital camera has
a "delete all" function that deletes all of the pictures on the memory
card. It also has a "lock" function that allows you to lock individual
pictures, so they won't be affected by the "delete all". In MythTV,
this could be an additional feature on the "Manage Recordings" menu.
All of the functions would then be: Play, Delete, Re-Encode,
Lock/unlock, or delete All.
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Mon, Nov 11, 2002 at 04:00:38PM -0600, rob wrote:
> Isaac Richards wrote:

> >UI clutter.

> >Also, I'm going to be adding a optional dialog at the end of playback that
> >asks if you want to go ahead and delete the recording.

> Nah, I don't like it. The "Watch a Recording" and "Delete Recording"

I hate to "me too", but I don't like it either. With the combined
dialog, you can hit "d" (or whatever) when you're done and if you
don't want to delete, then there's no extra keystroke. *That* is a
lack if UI clutter. Do you consider the extra key posibility clutter?

Isaac, would you mind reitterating your philosophy on the UI? It
seems to me that you've got some vestigial Macintosh one-button-mouse
tendencies. :-)

> What clutter are you talking about? On-screen clutter or feature
> clutter per menu? I wouldn't consider 3 options on a menu (play,
> delete, re-encode) for a show to be too many, and the only other things
> from those individual menus that you can do now are scroll up or down,
> or go back to the main menu. The main menu would have one fewer choice,
> so it would be cleaner.

Again, I agree here too. I've been thinking of alternatives the
size-bar and the size column (the visual clutter I think you're
refering to). What do you think of replacing them with a "light
colored" progress like bar under each show title that would represent
the size of the program visually? And possibly the percentage of the
disk space taken up as well?

-Jim
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Monday 11 November 2002 06:44 pm, Jim Radford wrote:
> I hate to "me too", but I don't like it either. With the combined
> dialog, you can hit "d" (or whatever) when you're done and if you
> don't want to delete, then there's no extra keystroke. *That* is a
> lack if UI clutter. Do you consider the extra key posibility clutter?
>
> Isaac, would you mind reitterating your philosophy on the UI? It
> seems to me that you've got some vestigial Macintosh one-button-mouse
> tendencies. :-)

All the Qt bits of the UI are useable with 6 buttons -- 4 arrow keys, one for
'select' and one for 'go back a screen' -- ie, something easily mapped to a
remote.

> > What clutter are you talking about? On-screen clutter or feature
> > clutter per menu? I wouldn't consider 3 options on a menu (play,
> > delete, re-encode) for a show to be too many, and the only other things
> > from those individual menus that you can do now are scroll up or down,
> > or go back to the main menu. The main menu would have one fewer choice,
> > so it would be cleaner.
>
> Again, I agree here too. I've been thinking of alternatives the
> size-bar and the size column (the visual clutter I think you're
> refering to). What do you think of replacing them with a "light
> colored" progress like bar under each show title that would represent
> the size of the program visually? And possibly the percentage of the
> disk space taken up as well?

Basically, when I'm selecting a file to be played back, I don't care how much
disk space I've got left, or how big the file is. I just want to play the
thing, so that information just clutters the UI.

Now, when I want to delete something, that stuff matters, so it should be in
there.

Anyway. How 'bout I don't change the UIs at all, and add a keybinding for 'd'
in the playback dialog that'll pop up the delete confirmation message?

Isaac
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
Personally, I find there are too many "hidden", undocumented, or otherwise
"afterthought" buttons.. I don't suppose this would help that.. I really
don't see the trouble with separating the screens..

tarek : )

>Anyway. How 'bout I don't change the UIs at all, and add a keybinding for
>'d'
>in the playback dialog that'll pop up the delete confirmation message?
>
>Isaac
RE: [PATCH] Re: Recorded Programs menu [ In reply to ]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Personally, I find there are too many "hidden", undocumented,
> or otherwise
> "afterthought" buttons.. I don't suppose this would help
> that.. I really
> don't see the trouble with separating the screens..

keys.txt details what the various keypresses do.

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>

iQA/AwUBPdBZiPc1NpCTlP0JEQLH2wCfXLBqSRuNPN3TN6/rn1qxh979v4MAnix8
pxrTU1zvG7AamKP3+9QftyEt
=v6Ef
-----END PGP SIGNATURE-----
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Mon, Nov 11, 2002 at 08:09:50PM -0500, Isaac Richards wrote:
> All the Qt bits of the UI are useable with 6 buttons -- 4 arrow
> keys, one for 'select' and one for 'go back a screen' -- ie,
> something easily mapped to a remote.

Ok. Any specific reason to limit it to 6? Most remotes I've seen,
including tivo's have tons of buttons.

> Basically, when I'm selecting a file to be played back, I don't care
> how much disk space I've got left, or how big the file is. I just
> want to play the thing, so that information just clutters the UI.

> Now, when I want to delete something, that stuff matters, so it
> should be in there.

> Anyway. How 'bout I don't change the UIs at all, and add a
> keybinding for 'd' in the playback dialog that'll pop up the delete
> confirmation message?

Great! I assume you'd do the same for re-encode as well? If so, then
looking at the code and at my changes I think the cleanest thing, in
terms of minimizing code duplication, might be still to unify
PlaybackBox and DeleteBox and to just pass in one parameter that says
what the default action (play, delete, er-encode) is. We can key
showing the size off that as well. I'll work up a patch if this is
ok.

-Jim
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Monday 11 November 2002 08:39 pm, Jim Radford wrote:
> Ok. Any specific reason to limit it to 6? Most remotes I've seen,
> including tivo's have tons of buttons.

Just trying to keep things on the remote as simple as possible, really.

> Great! I assume you'd do the same for re-encode as well? If so, then
> looking at the code and at my changes I think the cleanest thing, in
> terms of minimizing code duplication, might be still to unify
> PlaybackBox and DeleteBox and to just pass in one parameter that says
> what the default action (play, delete, er-encode) is. We can key
> showing the size off that as well. I'll work up a patch if this is
> ok.

Yeah, if you want to do that, it'd be cool. Most of those two files are
already duplicates anyway, so it shouldn't be all that hard.

Isaac
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
Robert Kulagowski wrote:

>keys.txt details what the various keypresses do.
>
>

My girlfriend and my mother would not be able to determine the available
keys on each menu if they had to try to find and read a file on the
computer. That's why I think it would be good, where appropriate, to
have at the bottom of the screen "Enter to Play, D to Delete, R to
Re-encode" or whatever other text is necessary.
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
Isaac Richards wrote:

>All the Qt bits of the UI are useable with 6 buttons -- 4 arrow keys, one for
>'select' and one for 'go back a screen' -- ie, something easily mapped to a
>remote.
>
>
So, I can't use any of the number keys on a remote to change channels
during live TV playback? (I don't have a remote hooked up yet.)

>Basically, when I'm selecting a file to be played back, I don't care how much
>disk space I've got left, or how big the file is. I just want to play the
>thing, so that information just clutters the UI.
>
>Now, when I want to delete something, that stuff matters, so it should be in
>there.
>
>
So, when I sit down to use my MythTV, I will usually play a previously
recorded show. I will go to the "Watch a Recording" screen, watch my
show, then watch another show or exit back to the main menu. You're
saying that I need to remember to check the "Delete Recordings" screen
also, to see if I'm running low on disk space? If the disk space
information is already on screen, that's fewer keypresses and I don't
have to consciously remember to view that screen.

Remember, a user interface's goal is to allow the user to accomplish
their desired tasks in the most efficient and intuitive way. I don't
think combining these screens will cause too much clutter, but will make
it more efficient for the user.

>Anyway. How 'bout I don't change the UIs at all, and add a keybinding for 'd'
>in the playback dialog that'll pop up the delete confirmation message?
>
>Isaac
>
I don't mean to keep bugging you about this, but I don't think the
negatives outweigh the positives. To me, it's straightforward: "anytime
I want to do anything to a pre-recorded show, go to the Manage
Recordings screen" and play or delete.


(Off-topic, related thought: Does the disk space display get updated
while on that screen? If I walked away for a day, and some programs
were recorded, would it be accurate?)

(Another random though.. how about hot keys for menus, in addition to
scroll keys? eg: 1 to record only this showing of the program, 2 to
record this timeslot every day, etc... easier than cursoring to that
item. See UI efficiency above.)
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Mon, Nov 11, 2002 at 11:31:13PM -0600, rob wrote:
> Robert Kulagowski wrote:
>
> >keys.txt details what the various keypresses do.
> >
> >
>
> My girlfriend and my mother would not be able to determine the available
> keys on each menu if they had to try to find and read a file on the
> computer. That's why I think it would be good, where appropriate, to
> have at the bottom of the screen "Enter to Play, D to Delete, R to
> Re-encode" or whatever other text is necessary.

Hmm my copy allready has that..... of course it involves yellow Post-Its:).

--
Ray
Re: [PATCH] Re: Recorded Programs menu [ In reply to ]
On Tuesday 12 November 2002 01:05 am, rob wrote:
> Isaac Richards wrote:
> >All the Qt bits of the UI are useable with 6 buttons -- 4 arrow keys, one
> > for 'select' and one for 'go back a screen' -- ie, something easily
> > mapped to a remote.
>
> So, I can't use any of the number keys on a remote to change channels
> during live TV playback? (I don't have a remote hooked up yet.)

Can you use the number keys on your keyboard to change channels?
I said "Qt bits".

> So, when I sit down to use my MythTV, I will usually play a previously
> recorded show. I will go to the "Watch a Recording" screen, watch my
> show, then watch another show or exit back to the main menu. You're
> saying that I need to remember to check the "Delete Recordings" screen
> also, to see if I'm running low on disk space? If the disk space
> information is already on screen, that's fewer keypresses and I don't
> have to consciously remember to view that screen.
>
> Remember, a user interface's goal is to allow the user to accomplish
> their desired tasks in the most efficient and intuitive way. I don't
> think combining these screens will cause too much clutter, but will make
> it more efficient for the user.
>
> I don't mean to keep bugging you about this, but I don't think the
> negatives outweigh the positives. To me, it's straightforward: "anytime
> I want to do anything to a pre-recorded show, go to the Manage
> Recordings screen" and play or delete.

I disagree. The way things work now makes the most sense to me. (obviously,
else I wouldn't have written them that way. =) I delete recordings in large
chunks, when I need the space, not when I'm done watching one. Once I write
stuff to automatically delete old, watched recordings when space is getting
tight, I'll probably not delete things manually at all.

> (Off-topic, related thought: Does the disk space display get updated
> while on that screen? If I walked away for a day, and some programs
> were recorded, would it be accurate?)

Nope.

> (Another random though.. how about hot keys for menus, in addition to
> scroll keys? eg: 1 to record only this showing of the program, 2 to
> record this timeslot every day, etc... easier than cursoring to that
> item. See UI efficiency above.)

Sure, that would be relatively easy for someone to add. Would just have to
add keybindings to already existing slots, in the case of that particular
dialog.

Isaac